{"version":3,"sources":["webpack://QuickQuote/webpack/bootstrap","webpack://QuickQuote/./src/misc/helpers.js","webpack://QuickQuote/./src/actions/actionFunctions.js","webpack://QuickQuote/./src/config.js","webpack://QuickQuote/./src/analytics.js","webpack://QuickQuote/./src/store.js","webpack://QuickQuote/./src/bvcomponents/appLayout.js","webpack://QuickQuote/./src/bvcomponents/look/core/constants.js","webpack://QuickQuote/./src/bvcomponents/sqft/constants.js","webpack://QuickQuote/./src/actions/lookFunctions.js","webpack://QuickQuote/./src/bvcomponents/visComponents/constants.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/sqftConfig.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace.js","webpack://QuickQuote/./src/bvcomponents/visComponents/designNavigationItem.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookFunctions2.js","webpack://QuickQuote/./src/routes.js","webpack://QuickQuote/./src/actions/sqftMenuFunctions.js","webpack://QuickQuote/./src/interfaces/featureInterface.js","webpack://QuickQuote/./src/actions/actionTypes.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/sqftHelper.js","webpack://QuickQuote/./src/misc/utils.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardFunctions.js","webpack://QuickQuote/./src/bvcomponents/look/core/intermediatePart.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookFunctions.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/sqftEventManager.js","webpack://QuickQuote/./src/actions/sqftFunctions.js","webpack://QuickQuote/./src/bvcomponents/ui/loaderView.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/constants.js","webpack://QuickQuote/./src/bvcomponents/common/icons.js","webpack://QuickQuote/./src/colorThemes.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/parts/intermediatePart.js","webpack://QuickQuote/./src/api/server-api.js","webpack://QuickQuote/./src/actions/wizardFunctions.js","webpack://QuickQuote/./src/misc/helperHooks.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/intermediatePart.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/constants.js","webpack://QuickQuote/./src/bvcomponents/visComponents/featureName.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/intermediatePart.js","webpack://QuickQuote/./src/bvcomponents/ui/materialSpinner.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/intermediatePart.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/assets.js","webpack://QuickQuote/./src/interfaces/wizardItemInterface.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookNavigationFunctions.js","webpack://QuickQuote/./src/actions/groheFunctions.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/cartItemInterface.js","webpack://QuickQuote/./src/misc/actionTypes.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/shapeHelper.js","webpack://QuickQuote/./src/api/look-api.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/constants.js","webpack://QuickQuote/./src/bvcomponents/ui/loadingSpinner.js","webpack://QuickQuote/./src/actions/selectionFunctions.js","webpack://QuickQuote/./src/misc/fabricatorHardcode.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/sqftShapeManager.js","webpack://QuickQuote/./src/actions/navigationFunctions.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/workspaceControllers.js","webpack://QuickQuote/./src/bvcomponents/look/lookCanvasContext.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/parts/showerTubCombo.js","webpack://QuickQuote/./src/actions/shoppingCartFunctions.js","webpack://QuickQuote/./src/misc/misc.js","webpack://QuickQuote/./src/api/api-popups.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/sqftStore.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/intermediatePart.js","webpack://QuickQuote/./src/bvcomponents/look/core/parts/vanity.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/parts/shower.js","webpack://QuickQuote/./src/actions/tutorialFunctions.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/sqftHelperUi.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/constants.js","webpack://QuickQuote/./src/bvcomponents/popups/withOverlayHoc.js","webpack://QuickQuote/./src/bvcomponents/priceWorksheet/discounstInterface.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/colorThemes.js","webpack://QuickQuote/./src/actions/roomsFunctions.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/sqftQuotesHelper.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/parts/vanity.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withUpdateLookCartItem.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/parts/shower.js","webpack://QuickQuote/./src/bvcomponents/assets.js","webpack://QuickQuote/./src/misc/priceFunctions.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardFunctions2.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/sqftShape.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFunctions.js","webpack://QuickQuote/./src/misc/categorySwitchingFunctions.js","webpack://QuickQuote/./src/misc/quotesFunctions.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/helpers/renderFigures.js","webpack://QuickQuote/./src/bvcomponents/visComponents/featureThumbnail.js","webpack://QuickQuote/./src/bvcomponents/look/core/parts/shower.js","webpack://QuickQuote/./src/misc/filtersFunctions.js","webpack://QuickQuote/./src/actions/serverFunctions.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/slab/slabWorkspace.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/featureHelper.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/sqftNavigationHelper.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withZoomToFeature.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/useChangeWizardStepRoute.js","webpack://QuickQuote/./src/bvcomponents/sqft/assetsSQFT.js","webpack://QuickQuote/./src/actions/sqftSlabFunctions.js","webpack://QuickQuote/./src/bvcomponents/priceWorksheet/discountFunctions.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/parts/cabinet.js","webpack://QuickQuote/./src/api/jsonApi.js","webpack://QuickQuote/./src/actions/userFunctions.js","webpack://QuickQuote/./src/bvcomponents/look/core/part.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/assets.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace/workspaceEvents.js","webpack://QuickQuote/./src/bvcomponents/common/lockedView.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/mobile/mobileMenuSelect.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/parts/showerTubCombo.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/line.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/point.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/resourseCanas.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/navUtils.js","webpack://QuickQuote/./src/analyticsEcommerceParams.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/parts/part.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withClickCount.js","webpack://QuickQuote/./src/actions/assignPopupFunctions.js","webpack://QuickQuote/./src/bvcomponents/common/goToMaterialPage.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/parts/vanity.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartHeaderCommon.js","webpack://QuickQuote/./src/actions/contractsActions.js","webpack://QuickQuote/./src/misc/storageFunctions.js","webpack://QuickQuote/./src/actions/priceWorksheetActions.js","webpack://QuickQuote/./src/bvcomponents/ui/successNotification.js","webpack://QuickQuote/./src/misc/visualizerSwitchingFunctions.js","webpack://QuickQuote/./src/bvcomponents/sqft/lib/pnpoly.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerNew/showerCommon.js","webpack://QuickQuote/./src/bvcomponents/ui/userLoginButton.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/part.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/intermediatePart.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartStickyFooter.js","webpack://QuickQuote/./src/bvcomponents/popups/contractSign/contractsFunctions.js","webpack://QuickQuote/./src/actions/paymentFunctions.js","webpack://QuickQuote/./src/misc/getCanvasImageFromLayout.js","webpack://QuickQuote/./src/actions/sqftResourceFunctions.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/sqftSlabManager.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/sqft3dArHelper.js","webpack://QuickQuote/./src/loadingLogic.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/parts/appliance.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerAccessories/accessoryCommon.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureImage.js","webpack://QuickQuote/./src/misc/displayLogic.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/controllers/SQFTResourceController.js","webpack://QuickQuote/./src/misc/misc2.js","webpack://QuickQuote/./src/bvcomponents/look/core/parts/showerTubCombo.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/navigation/countertopSwitchers.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/navigationRequests.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/part.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/newFilters/filters.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/newFilters/filterSwitchers.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/newFilters/filterSelection.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookListFeature/lookFeaturePrice.js","webpack://QuickQuote/./src/bvcomponents/visComponents/featureDescription.js","webpack://QuickQuote/./src/actions/initialFlowFunctions.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/coordinatesHelper.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/helpers/lineHelper.js","webpack://QuickQuote/./src/actions/sqftManualCalculationFunctions.js","webpack://QuickQuote/./src/bvcomponents/visComponents/layer.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/walls/wallCommon.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/accessoryCommon.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/desktop/bodyPanelRadio.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookAllWallsRadioButton.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/part.js","webpack://QuickQuote/./src/misc/changeRoutePath.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/constants.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopCategory/shopNavItemsContext.js","webpack://QuickQuote/./src/actions/printFunctions.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/sqftCalculations.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/sqftShapeIntersectionsManager.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/navigation/cabinetSwitchers.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/featureWizard/featureWizardSteps.js","webpack://QuickQuote/./src/bvcomponents/popups/messageBox.js","webpack://QuickQuote/./src/bvcomponents/look/iframeIntegration.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/navItemPositionModal.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/part.js","webpack://QuickQuote/./src/bvcomponents/visComponents/allFeaturesChecker.js","webpack://QuickQuote/./src/bvcomponents/priceWorksheet/discountCommon.js","webpack://QuickQuote/./src/lib/react-redux-loading-bar/index.js","webpack://QuickQuote/./src/api/user-api.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace/text/numberText.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/pointV2.js","webpack://QuickQuote/./src/misc/loadScript.js","webpack://QuickQuote/./src/reducers/sqftMenuReducer.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/cabinet/cabinetWorkspace.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/canvasHelper.js","webpack://QuickQuote/./src/bvcomponents/visComponents/partCommon.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/desktopNavigationCommon.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/newFilters/navigationFiltersSteps.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/mobileNavigationCommon.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/mobile/mobileNavigationButtons.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/mobile/mobileNavigationAllWallsCheckbox.js","webpack://QuickQuote/./src/bvcomponents/common/mainButtons.js","webpack://QuickQuote/./src/bvcomponents/visComponents/visualizer.js","webpack://QuickQuote/./src/bvcomponents/tutorials/visualizerTutorial.js","webpack://QuickQuote/./src/bvcomponents/ui/copyright.js","webpack://QuickQuote/./src/bvcomponents/visComponents/imageCanvasCommonNew.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/part.js","webpack://QuickQuote/./src/reducers/initialFlowReducer.js","webpack://QuickQuote/./src/bvcomponents/look/user/lookUserPhoneInput.js","webpack://QuickQuote/./src/actions/unlockCalculationsFunctions.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookIntro/lookIntroPopper.js","webpack://QuickQuote/./src/bvcomponents/popups/contractSign/contractsContext.js","webpack://QuickQuote/./src/bvcomponents/ui/icons/uiIcon.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/movableImage.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/helpers/renderParts.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace/workspaceDataMapper.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/mitered.js","webpack://QuickQuote/./src/actions/sqftMiteredFunctions.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/cabinet/cabinetShapes.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/sqftImageManager.js","webpack://QuickQuote/./src/reducers/sqftSlabReducer.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerTubCombo/tubCommon.js","webpack://QuickQuote/./src/misc/userFunctions.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/zIndex.js","webpack://QuickQuote/./src/bvcomponents/common/demoPoints/demoPoints.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/parts/centerIsland.js","webpack://QuickQuote/./src/bvcomponents/look/user/lookUserInput.js","webpack://QuickQuote/./src/bvcomponents/sqft/interfaces/sqftInterfaces.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withSavePostMessage.js","webpack://QuickQuote/./src/bvcomponents/look/lookMessaging.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withInputValidations.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureOptions.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureOptions.js","webpack://QuickQuote/./src/misc/backendFunctions.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/freeDrawHelper.js","webpack://QuickQuote/./src/bvcomponents/sqft/api/sqftJsonApi.js","webpack://QuickQuote/./src/bvcomponents/sqft/constantsFeature.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/helpers/freeDrawHelper.js","webpack://QuickQuote/./src/bvcomponents/look/core/parts/walls.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/navigation.js","webpack://QuickQuote/./src/api/search-api.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookSideBar/lookSidebarModals/lookSideBarShareButtons.js","webpack://QuickQuote/./src/bvcomponents/visComponents/imageCanvasCommon.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/parts/zIndex.js","webpack://QuickQuote/./src/bvcomponents/common/OnScreenKeyboard/keyboard.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeatureRemoveButton.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/parts/countertopGroup.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/zIndex.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/parts/showerAccessories.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/constants.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartDelivery/deliveryFunctions.js","webpack://QuickQuote/./src/bvcomponents/ui/quantity.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/sqftMobileHelper.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/NavigationHelper.js","webpack://QuickQuote/./src/bvcomponents/ui/textInput.js","webpack://QuickQuote/./src/bvcomponents/look/ui/lookDropdown.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureSku.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withAddToCartPostMessage.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookListFeature/lookListFeature.js","webpack://QuickQuote/./src/bvcomponents/desktopHeader.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCart.js","webpack://QuickQuote/./src/bvcomponents/popups/contractSign/contractsFieldsFunctions.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookCategory/lookVirtualizedList.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureQuantity.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureMoreInfoButton.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartBackButton.js","webpack://QuickQuote/./src/lib/react-redux-loading-bar/loading_bar_ducks.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/similarProducts/similarProductsFunctions.js","webpack://QuickQuote/./src/translatesProvider.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/layouts/polygon.js","webpack://QuickQuote/./src/reducers/sqftManualCalculationReducer.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/layouts/rectangle.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/parseSqftData.js","webpack://QuickQuote/./src/bvcomponents/visComponents/qtCategoryName.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/labels/labelsHelper.js","webpack://QuickQuote/./src/bvcomponents/visComponents/layoutCommonNew.js","webpack://QuickQuote/./src/bvcomponents/visComponents/layoutCommon.js","webpack://QuickQuote/./src/misc/constants.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/freeDraw.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/assets.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/cabinet/getHoodConditions.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/parts/countertopGroup.js","webpack://QuickQuote/./src/visit/api/api.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/showerTubCombo/tubCommon.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/wall/externallWall.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/backsplashSelect.js","webpack://QuickQuote/./src/bvcomponents/visComponents/commonFeatureItemsMethods.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/desktop/bodySwipable.js","webpack://QuickQuote/./src/bvcomponents/common/shareButton.js","webpack://QuickQuote/./src/bvcomponents/visComponents/pingPilotButton.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withPingPilotCheck.js","webpack://QuickQuote/./src/actions/shopFunctions.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/zIndex.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerTubCombo/tubCommon.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/zIndex.js","webpack://QuickQuote/./src/reducers/fabricatorReducer.js","webpack://QuickQuote/./src/bvcomponents/popups/assignQuotePopup/assignQuoteConstants.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/withAddToQuote.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/superAdmin/adminActions.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/ar/ARButtonGoogleWebXR.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/cabinet/toolMenu/commonParts/SQFTFeaturesHeader.js","webpack://QuickQuote/./src/actions/iframeIntegrationFunctions.js","webpack://QuickQuote/./src/bvcomponents/look/list/lookListMainFeature.js","webpack://QuickQuote/./src/bvcomponents/ui/homeButton.js","webpack://QuickQuote/./src/bvcomponents/ui/mobileMenu.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFeatureInfo/featureInfoPrice.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsCommon/materialsCommonFunctions.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionGridList/selectionGridItem.js","webpack://QuickQuote/./src/interfaces/shiftFilterTitleInterface.js","webpack://QuickQuote/./src/bvcomponents/visComponents/hardcodedCanvasImage.js","webpack://QuickQuote/./src/bvcomponents/ui/noInternetOverlay.js","webpack://QuickQuote/./src/bvcomponents/common/svgIcons/bathroomFeatureGroupIcons.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookListFeature/lookFeaturePairPrice.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureSQFTButton.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureSoldOut.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureLockedBadge.js","webpack://QuickQuote/./src/actions/groheQuotingToolFunctions.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookCategory/lookMainCategory.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureRevertButton.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardContentButtons.js","webpack://QuickQuote/./src/reducers/instReducer.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentInfo.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentFunctions.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheConfig.js","webpack://QuickQuote/./src/interfaces/filterInterface.js","webpack://QuickQuote/./src/api/api.js","webpack://QuickQuote/./src/bvcomponents/visComponents/canvasEnhancements/index.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/uiHelper.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace/textBox/draw/drawImage.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/slabParts/seamToolHelper.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/helpers/renderCabinets.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/overlays/mitered.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/slab/sqftSlabDraw.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/slab/slabAdditionalShape.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspaceHistory.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/radius.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/sqftCabinetsDataMapper.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/sqftResoursesManager.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/shapeAbsolute.js","webpack://QuickQuote/./src/bvcomponents/sqft/lib/moveDiagonalLine.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/overlays/resizeLine.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/helpers/renderFreeDraw.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/lineHooks/lineCorner.js","webpack://QuickQuote/./src/bvcomponents/ui/select.js","webpack://QuickQuote/./src/actions/filtersFunctions.js","webpack://QuickQuote/./src/bvcomponents/look/core/layout.js","webpack://QuickQuote/./src/bvcomponents/look/core/parts/showerAccessories.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/bathTub/enclosureCommon.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/vanityCommon.js","webpack://QuickQuote/./src/bvcomponents/look/bathroomFunctions.js","webpack://QuickQuote/./src/misc/loadVisualizer.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/parts/cabinet.js","webpack://QuickQuote/./src/visit/appointmentLogic/appointmentActions.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/layout.js","webpack://QuickQuote/./src/bvcomponents/common/checkBox.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/mobile/selectionMobileViewSwitchers.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/navigationItemsList.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/cabinet/cabinetModuleSystem.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/parts/appliance.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/parts/centerIsland.js","webpack://QuickQuote/./src/bvcomponents/visComponents/layoutNavigationItem.js","webpack://QuickQuote/./src/bvcomponents/common/scheduleButton.js","webpack://QuickQuote/./src/bvcomponents/tutorials/tutorial.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/layout.js","webpack://QuickQuote/./src/reducers/cartReducer.js","webpack://QuickQuote/./src/bvcomponents/popups/userPopup/userFieldsErrors.js","webpack://QuickQuote/./src/bvcomponents/popups/userPopup/privacyPolicyTerms.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/useCloseSQFTCalc.js","webpack://QuickQuote/./src/bvcomponents/popups/assignQuotePopup/assignQuoteInterfaces.js","webpack://QuickQuote/./src/bvcomponents/popups/assignQuotePopup/assignPopupContext.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/subPartDoneCheckMark.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/sqftFeaturesPopup3dButtons.js","webpack://QuickQuote/./src/bvcomponents/look/ui/lookInput.js","webpack://QuickQuote/./src/bvcomponents/look/ui/inputFunctions.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/superAdmin/adminFunctions.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/SqftNavLayouts.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/sqft3dArSceneHelper.js","webpack://QuickQuote/./src/bvcomponents/ui/multiLoader.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/useFetchFeatures.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookViewTypeSwitcher.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/cabinet/toolMenu/commonParts/SqftOptionsRelatedItemList.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookCategory/lookVirtualizedListLoadingItem.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookListFeature/lookFeaturePriceLocked.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookFilters/lookFilters.js","webpack://QuickQuote/./src/bvcomponents/look/lookPolicyLinks.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withLoginPostMessage.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookSideBar/lookSideBar.js","webpack://QuickQuote/./src/bvcomponents/look/ui/twoFaCodeInput.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardSectionListFeature.js","webpack://QuickQuote/./src/bvcomponents/ui/shoppingCartButton.js","webpack://QuickQuote/./src/bvcomponents/common/languageSwitcher.js","webpack://QuickQuote/./src/actions/advancedQuotingFunctions.js","webpack://QuickQuote/./src/bvcomponents/installation/instView.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFeatureInfo/featureInfoPriceLocked.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFeatureInfo/featureInfoDescription.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionGridList/selectionGridWizardGroupItem.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/notInVisualizerView.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/advancedQuoting/advancedQuotingFunctions.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureNotInVisualizer.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheMobile/groheMobileFeature/groheMobileFeatureTop.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureNotInStock.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheCategories/groheCategoriesMenu.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeatures/groheVirtualizedList.js","webpack://QuickQuote/./src/bvcomponents/look/ui/navigationLoader.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureInfo.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardContentFinalPrice.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartColumns.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizard.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardContentTitle.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardContentDescription.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookMainWizardSections.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookCompatability/lookCompatabilitySection.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookMainHeaderCloseButton.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/bathroomVisualizer.js","webpack://QuickQuote/./src/lib/react-redux-loading-bar/loading_bar.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentStyles.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentBodyCartItem.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/wizardFunctionsCommon.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/materialsWizardDoneCheckMark.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace/mixin/movable.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/cursor.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/sqftDataMapper.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/sqftConfigHelper.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/dataHelper.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspaceZoom.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/shapeAutoShuffle.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/popup/models/ChangeValuePopup.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/overlays/label.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/wall.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/helpers/wallHelper.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/shapeCabinet.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/canvasPopup/resetSeam.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/helpers/commonParts/blink.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/underlayment.js","webpack://QuickQuote/./src/bvcomponents/look/filtersHardcode.js","webpack://QuickQuote/./src/bvcomponents/visComponents/featuresFunctions.js","webpack://QuickQuote/./src/misc/metaDataFunctions.js","webpack://QuickQuote/./src/bvcomponents/look/core/zIndex.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/nonVisualizerSubPart.js","webpack://QuickQuote/./src/bvcomponents/look/core/parts/toilet.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace/textBox.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/keyboardHelper.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/toolsControllers.js","webpack://QuickQuote/./src/reducers/wizardReducer.js","webpack://QuickQuote/./src/misc/presetsFunctions.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/countertop/countertop.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/countertopCommon.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/edgeCommon.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentDisclaimer.js","webpack://QuickQuote/./src/visit/wizardLogic/wizardLogic.js","webpack://QuickQuote/./src/visit/wizardLogic/wizardLogicOld.js","webpack://QuickQuote/./src/visit/lixilLogic/lixilActions.js","webpack://QuickQuote/./src/visit/api/lixil-api.js","webpack://QuickQuote/./src/visit/userLogic/userActions.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/shadow.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/parts/wall.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/nonVisualizerSubPart.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/parts/showerAccessories.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/newFilters/filtersBody.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/desktop/bodyPanel.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/parts/walls.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/countertopCommon.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/edgeCommon.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/newFilters/navigationFilters.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/featureWizard/featureWizard.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/navigation/contextMenu.js","webpack://QuickQuote/./src/bvcomponents/common/homeMenu.js","webpack://QuickQuote/./src/bvcomponents/common/saveButton.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/kitchenVisualizer.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/layout.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/nonVisualizerSubPart.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/navigation/contextMenuSimple.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/navigation/cabinetContextMenu.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/kvSceneVisualizer.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/layout.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/nonVisualizerSubPart.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/navigation/contextMenuSimple.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/bvSceneVisualizer.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/nonVisualizerSubPart.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/parts/walls.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/navigation/contextMenu.js","webpack://QuickQuote/./src/bvcomponents/look/lookVisualizer.js","webpack://QuickQuote/./src/bvcomponents/look/navigation/contextMenuQKB.js","webpack://QuickQuote/./src/bvcomponents/fireplace/fireplaceVisualizer.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/layout.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/subparts/nonVisualizerSubPart.js","webpack://QuickQuote/./src/bvcomponents/fireplace/navigation/contextMenuSimple.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/laundryRoomLayout.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/nonVisualizerSubPart.js","webpack://QuickQuote/./src/misc/browsers.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/navigation/contextMenuQKB.js","webpack://QuickQuote/./src/bvcomponents/common/dashboardButtons/backToDashboard.js","webpack://QuickQuote/./src/bvcomponents/popups/userPopup/constants.js","webpack://QuickQuote/./src/bvcomponents/common/twoFactorAuthView.js","webpack://QuickQuote/./src/bvcomponents/popups/confirmPopup.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/withCloseSQFtCalc.js","webpack://QuickQuote/./src/bvcomponents/ui/mobileRotateButtonHorizontalNew.js","webpack://QuickQuote/./src/bvcomponents/popups/assignQuotePopup/assignQuotePopupSearch.js","webpack://QuickQuote/./src/bvcomponents/popups/assignQuotePopup/assignQuoteVirtualizedList.js","webpack://QuickQuote/./src/bvcomponents/projectScope/projectScopeFunctions.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/sqftFeaturesPopupWrapper.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/materialsWizardFooterStepThumbnail.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/getCreditCardType.js","webpack://QuickQuote/./src/api/admin-api.js","webpack://QuickQuote/./src/bvcomponents/sqft/squareFootageToolView.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/SqftFooterAddToQuoteButton.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/SqftFooterCancelButton.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/withSqftFooterCancel.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/popup/SqftPopupWindow.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/layouts/square.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/layouts/wideAngle.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/layouts/horseshoe.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menuSwitchers/ManualCalculateSwitcher.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/workspaceComponents/ExportButton.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/ThreeDWorkspace.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/glbViewer/SeparateModelGLBViewer.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/ar/ARButton.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/popup/ValidationPopupWindow.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/overlays/sqftContextMenu.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menuSwitchers/SlabToolSwitcher.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/backsplashCanvas.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/cabinet/toolMenu/commonParts/SqftOptionsLoading.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFeatureInfo/featurePriceInput.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/commonTools/featuresGrid/gridDimensions.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/toolMitered/navMiteredSection.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFilters/groheFiltersSearchInputAsync.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookFilters/lookFiltersList.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFilters/groheFiltersValues.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookFilters/lookFiltersReset.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/useWindowDimensions.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/ar/ARViewUSDZButton.js","webpack://QuickQuote/./src/bvcomponents/look/list/lookListContent.js","webpack://QuickQuote/./src/bvcomponents/look/list/lookListContentHeaderRightSide.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withCartAnimationsChecker.js","webpack://QuickQuote/./src/bvcomponents/look/list/lookListFooter.js","webpack://QuickQuote/./src/actions/asyncActionFunctions.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookListFeature/lookListFeatureCheckmark.js","webpack://QuickQuote/./src/bvcomponents/look/popups/leadCapturePopup/unlockCalculations/unlockCalculationSteps.js","webpack://QuickQuote/./src/bvcomponents/ui/loadingDots.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookListFeature/lookListActiveFeatureMobileButton.js","webpack://QuickQuote/./src/bvcomponents/ui/installButton.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartListSwitcher.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/advancedQuoting/advancedQuotingSwitcher.js","webpack://QuickQuote/./src/bvcomponents/popups/orderCompletePopup/cloneQuoteButton.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFeatureInfo/featureInfo.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFeatureInfo/featureInfoBrand.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionMainList.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionRowList/rowItem.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/featureCartItemsCount.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/superAdmin/SuperAdminFeatureToolSettingsButton.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/wizardList/wizardFilterItem.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionGridList/selectionGridFiltersTitle.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionGridList/gridFunctions.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/gallery.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionDescriptionCover.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/notCompatibleView.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionMainHeader.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFooterSubParts.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsCommon/materialsFooterBackButton.js","webpack://QuickQuote/./src/bvcomponents/tutorials/materialsAgentTutorial.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/materialsWizardFooterSteps.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/withMaterialsWizardFooterCommon.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartView.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartItemsList.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartItemsListItem.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/noteEditor.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartItemsBundledProducts.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/advancedQuoting/advancedQuotingListItem.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/advancedQuoting/advancedQuotingListItemRemoveButton.js","webpack://QuickQuote/./src/bvcomponents/priceWorksheet/discountSubTotal.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/advancedQuoting/advancedQuotingSubpartItems.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/similarProducts/similarProducts.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/recentlyViewedItems.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/depositDisclaimer.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartFooter.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartTotalColumns.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartCanvas.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartInstallationQuestion.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/quotes.js","webpack://QuickQuote/./src/bvcomponents/priceWorksheet/priceWorksheetView.js","webpack://QuickQuote/./src/bvcomponents/ui/dropdowns/discountDropdown.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/unlockCalculationsTutorialFunctions.js","webpack://QuickQuote/./src/bvcomponents/look/hooks/useUpdateSureTax.js","webpack://QuickQuote/./src/bvcomponents/look/lookCanvas.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureButtons.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureContentInCart.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withUpdateCartItems.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureTopButtons.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookLockedButton.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureWizardButton.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/analyticsEventHooks.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheMobile/groheMobileFeature/groheMobile3dButton.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookMainWizardList.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookMainFeatureGroupsExpandIcon.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withChangeFeature.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookCategory/lookMainCategoryLoading.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeatures/groheFeaturesHeader.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFilters/groheFiltersIcon.js","webpack://QuickQuote/./src/bvcomponents/visComponents/featureSubDescription.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheMobile/groheMobileFooterFiltersButton.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheMobile/groheMobileFooterViewButton.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureColorMatchCheckbox.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withFeatureColorMatch.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartRoutes.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartLogin/groheCartLoginRegister.js","webpack://QuickQuote/./src/bvcomponents/look/ui/lookAddressInput.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartContent.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withCartCheckoutClick.js","webpack://QuickQuote/./src/api/cart-api.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartPayment/groheBillingAndShippingInputs.js","webpack://QuickQuote/./src/bvcomponents/look/lookRouting.js","webpack://QuickQuote/./src/bvcomponents/look/lookLixilCategories.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardContentCanvas.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheWizard/groheWizardSelectedSteps.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookMainWizardSelectedStep.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopPage.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopPagesFunctions.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopFeaturePage.js/withShopFeatureVisualizeClick.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopFeatureOptionsCommon.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookCartButton.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookNotInVisualizerPopper.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookIntro/lookIntroFooterAnchor.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeature.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookCategory/lookCategoryHeader.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardHeader.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookMainWizardSelectedSteps.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardLmContent.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardCompletedAlertModal.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookRoomIdeasButton.js","webpack://QuickQuote/./src/main.js","webpack://QuickQuote/./src/polyfills.js","webpack://QuickQuote/./src/lib/babel-core/5.6.15-browser-polyfill.min.js","webpack://QuickQuote/./src/reducers/index.js","webpack://QuickQuote/./src/reducers/stepsReducer.js","webpack://QuickQuote/./src/reducers/selectionReducer.js","webpack://QuickQuote/./src/reducers/serverReducer.js","webpack://QuickQuote/./src/misc/imagePolygon.js","webpack://QuickQuote/./src/lib/react-redux-loading-bar/loading_bar_middleware.js","webpack://QuickQuote/./src/lib/react-redux-loading-bar/immutable.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocument.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/styles/printDocumentStylesHelpers.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/styles/printDocumentStylesDiscounts.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentHeader.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentInfoFabricator.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/constants.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentBody.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentBodyBundledCartItems.js","webpack://QuickQuote/./src/misc/graniteTransformationUkSubDomains.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/similarProducts/printSimilarProducts.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/similarProducts/printSimilarProductsListItem.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionDescriptionCoverTranslates.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/sqftCursorManager.js","webpack://QuickQuote/./src/api/axiosInstance.js","webpack://QuickQuote/./src/bvcomponents/visComponents/canvasEnhancements/vertex.glsl","webpack://QuickQuote/./src/bvcomponents/visComponents/canvasEnhancements/fragment.glsl","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/overlays/pointRadius.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/controllers/SpacersController.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/spacer.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace/textBox/model/modelCorePoint.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/imageParts/renderMovableImage.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/imageParts/renderMeasurementsInsideShape.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/imageParts/renderSVG.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/mitered/miteredSegment.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/slab/slabAdditionalShapes.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/slab/slabHelper.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/endCapCanvas.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/cabinet/toolMenu/toolHandles/SqftOptionsHandlesContent.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/sqftMeasureUnitsHelper.js","webpack://QuickQuote/./src/bvcomponents/sqft/api/sqftApi.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace/image/StaticImage.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/sqftShapeOffset.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/subscriptionEventManager.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/cabinet/cabinetShapesSpecialLayouts.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/helpers/movableImageHelper.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/imageParts/lineImage.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/simpleLine.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/shapeRotatable.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/models/HingesModel.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/cabinet/cabinetShapesLayout.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/controllers/HandlesController.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/models/LineHandlesModel.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/controllers/WallsController.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/controllers/ShapeColorsController.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/models/ShapeColor.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/controllers/line/WaterfallController.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/overlays/waterfallOverlay.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/models/waterfallSegment.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/controllers/line/WaterfallSegmentController.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/controllers/RemovedFeaturesController.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/controllers/SnappedShapeGroupsController.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/controllers/SelectedShapesController.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/controllers/line/CrownMoldingController.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/controllers/Images3dController.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/controllers/HingesController.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/sqftFitSize.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/overlays/lineLength.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/overlays/bumpout.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace/textBox/draw/color.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/lineHooks/lineAttachmentsComposite.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/rotation.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/shapeSlab.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/slabParts/seamTool.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/slabParts/seamToolRender.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/shapeMeasurementArrows.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/shapeEditable.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/shapeSpacer.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/shapeIntersections.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/shapeMemory.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeParts/shapeRender.js","webpack://QuickQuote/./src/bvcomponents/common/exception.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/vanityHandle.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/vanityCabinet.js","webpack://QuickQuote/./src/bvcomponents/look/core/parts/other.js","webpack://QuickQuote/./src/bvcomponents/look/core/parts/background.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/backgrounds/BackgroundBG.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerTubCombo/bathtubLiner.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerTubCombo/replacementTub.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerTubCombo/walkInTub.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerTubCombo/jettedTub.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerTubCombo/wallConfiguration.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerTubCombo/walkInTubFixture.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerTubCombo/replacementTubFixture.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/showerFixture.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/showerScreen.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/walls/leftWall.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/walls/rightWall.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/walls/centerWall.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/walls/backWall.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/walls/ceiling.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/walls/frontWall.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/walls/splitWall.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/walls/leftWallSplitter.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/walls/ceilingPanels.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/showerGlass.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/showerBody.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/showerWall.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/showerWallAccent.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/showerDoor.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/largeCornerSeat.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/soapDish.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/cornerCaddie.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/largeCornerCaddie.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/grabBar.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/cornerShelf.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/showerPod.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/seats.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/showerRod.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/toiletBrush.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/paperHolder.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/robeHook.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/towelBar.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/towelRing.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/glassHolder.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/towelRack.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/wainscoting.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/towel.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/towelTowelRing.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/towelTowelBar.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerAccessories/towelTowelHook.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/showerPanCombo.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/showerDoorHandle.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/ponyWallCap.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/ponyWallGlass.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/showerFloor.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/threshold.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/showerDrain.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/showerHead.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/showerArm.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/showerHeadBundle.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/tubSpout.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/handShowerKit.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/shower/showerCurb.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerNew/bodySpray.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerNew/diverterTrim.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerNew/handShowerHolder.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerNew/handShowerOnly.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerNew/showerHose.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerNew/showerSystem.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerNew/showerTrimKit.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerNew/valveTrim.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerNew/wallUnion.js","webpack://QuickQuote/./src/bvcomponents/look/core/parts/windowParent.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/window/windowKits.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/window/windowBody.js","webpack://QuickQuote/./src/bvcomponents/look/core/parts/floor.js","webpack://QuickQuote/./src/bvcomponents/look/core/parts/globals.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/globals/attachment.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/globals/decor.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/globals/showerWallMirror.js","webpack://QuickQuote/./src/bvcomponents/look/core/parts/bathtub.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/bathTub/bathTubBody.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/bathTub/bathTubFixture.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/bathTub/enclosureTop.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/bathTub/enclosureBottom.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/bathTub/skirtingBoard.js","webpack://QuickQuote/./src/bvcomponents/look/core/parts/accessories.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/accessories/table.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/accessories/chair.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/accessories/carpet.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/accessories/lamp.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/accessories/basket.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/accessories/frame.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/accessories/plant.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/vanityCountertop.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/vanityBacksplash.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/mirror.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/sink.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/faucet.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/pTrap.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/vanityWashstand.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/vanityMiddle.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/drawerPull.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/wsTowelBar.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/vanityLegs.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/vanityConsole.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/doorHandle.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/vanity/drawerHandle.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace/textBox/box.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace/textBox/iText.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace/textBox/model/modelText.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/duplicate.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/tools/freeeDraw/ShapeFreeForm.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/tools/freeeDraw/BaseDraw.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/helpers/renderFreeForm.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace/ruler.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace/resultImages.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/shapeFunctions.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/workspace/textBoxManager.js","webpack://QuickQuote/./src/bvcomponents/sqft/dto/FeatureObjectDTO.js","webpack://QuickQuote/./src/api/features-api.js","webpack://QuickQuote/./src/misc/markUpFunctions.js","webpack://QuickQuote/./src/misc/excelFunctions.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/cabinet/handle.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/appliances/dishwasher.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/appliances/fridge.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/appliances/hood.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/appliances/microwave.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/appliances/range.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/appliances/oven.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/appliances/stove.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/appliances/fridgeEnclosure.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/appliances/fridgeEnclosureHandle.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/appliances/stovetop.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/cabinet/topCabinet.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/cabinet/tallCabinet.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/cabinet/crownMolding.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/cabinet/bottomCabinet.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/countertop/sink.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/countertop/faucet.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/countertop/edgeProfile.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/countertop/cutouts.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/countertop/radius.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/cabinet/bottomHandle.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/cabinet/topHandle.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/cabinet/doorHandle.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/cabinet/drawerHandle.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentBodyWizardItem.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentTotal.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentSignature.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentDiscountsList.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentDiscount.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentDiscountFinance.js","webpack://QuickQuote/./src/bvcomponents/popups/printPopup/printDocumentAsCentralText.js","webpack://QuickQuote/./src/visit/wizardLogic/wizardActions.js","webpack://QuickQuote/./src/visit/api/wizard-api.js","webpack://QuickQuote/./src/visit/globalLogic/globalActions.js","webpack://QuickQuote/./src/visit/globalLogic/saveJobData.js","webpack://QuickQuote/./src/visit/constants.js","webpack://QuickQuote/./src/visit/appointmentLogic/appointmentReducer.js","webpack://QuickQuote/./src/visit/api/job-api.js","webpack://QuickQuote/./src/visit/globalLogic/saveAppointmentData.js","webpack://QuickQuote/./src/visit/api/user.js","webpack://QuickQuote/./src/visit/helperFunctions.js","webpack://QuickQuote/./src/visit/components/helpers/popupFunctions.js","webpack://QuickQuote/./src/misc/imageHovering.js","webpack://QuickQuote/./src/lib/pinch-zoom.js","webpack://QuickQuote/./src/lib/pinchScroll.js","webpack://QuickQuote/./src/bvcomponents/visComponents/canvasCheckForLayerParts.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/parts/bathtub.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/bathTub/bathTubBody.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/showerTubCombo/bathtubLiner.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/showerTubCombo/replacementTub.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/showerTubCombo/walkInTub.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/showerTubCombo/jettedTub.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/showerTubCombo/wallConfiguration.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/bathTub/bathTubBase.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/bathTub/bathTubFixture.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/bathTub/bathTubRim.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/bathTub/bathTubSpa.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/bathTub/bathTubTowelRack.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/parts/floorNew.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/vanity/completeVanity.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/vanity/vanityHandle.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/vanity/vanityPedestal.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/vanity/vanityCountertop.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/vanity/lightingFixture.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/vanity/vanityBacksplash.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/vanity/mirror.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/vanity/sink.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/vanity/faucet.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/parts/window.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/parts/ceiling.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/parts/toilet.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/shower/showerFixture.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/shower/showerGlass.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/shower/showerBody.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/shower/showerInteriorWall.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/shower/showerInteriorWallAccent.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/shower/showerDoor.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/shower/showerPanCombo.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/shower/showerDoorHandle.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/shower/ponyWallCap.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/shower/ponyWallGlass.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/shower/showerFloor.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/shower/threshold.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/shower/showerDrain.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/shower/showerHead.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/parts/globalShadow.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/wall/ponyWall.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/wall/wallA.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/wall/wallB.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/wall/wallC.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/wall/wallExR.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/wall/wallExL.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/wall/vanityAccent.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/parts/other.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/showerAccessories/largeCornerSeat.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/showerAccessories/soapDish.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/showerAccessories/smallCornerShelf.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/showerAccessories/cornerCaddie.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/showerAccessories/largeCornerCaddie.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/core/subparts/showerAccessories/grabBar.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/navigation/desktopNavigation.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/desktop/sidebar.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/newFilters/filtersSearch.js","webpack://QuickQuote/./src/bvcomponents/common/OnScreenKeyboard/keyboardKey.js","webpack://QuickQuote/./src/bvcomponents/common/OnScreenKeyboard/keyboardKeyType.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/desktop/body.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/desktop/bodyPanelCheckbox.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/desktop/bodyPanelWizardSteps.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/desktop/bodyPanelNavigationFiltersSteps.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookAllWallsRadioButtonSmall.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/desktop/bodyItems.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/navigationItem.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/walls/ceiling.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/walls/leftWall.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/walls/rightWall.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/walls/popoutWall.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/walls/backsplash.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/cabinet/bottomCabinet.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/cabinet/topCabinet.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/cabinet/crownMolding.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/appliances/fridge.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/appliances/fridgeShadow.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/appliances/hood.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/appliances/dishwasher.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/appliances/microwave.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/appliances/range.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/cabinet/topHandle.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/cabinet/bottomHandle.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/cabinet/topCabinetShadow.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/cabinet/bottomCabinetShadow.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/countertop/countertop.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/countertop/faucet.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/countertop/sink.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/countertop/stovetop.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/countertop/cutouts.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/countertop/edgeProfile.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/countertop/radius.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/centerIsland/cabinet.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/centerIsland/countertop.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/centerIsland/chairs.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/centerIsland/faucet.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/centerIsland/sink.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/centerIsland/handle.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/centerIsland/centerIslandshadow.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/centerIsland/stovetop.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/centerIsland/range.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/centerIsland/edge.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/centerIsland/chairsShadow.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/featureWizard/featureWizardBody.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/featureWizard/featureWizardBodyItem.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/featureWizard/featureWizardSelection.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/featureWizard/featureWizardSelectionItem.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/roomSceneNavigation.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/roomSceneNavigationItem.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/desktopNavigationLayoutsContent.js","webpack://QuickQuote/./src/bvcomponents/bvComponent/navigation/mobileNavigation.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/mobile/mobileNavigationBodyNew.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/mobileParentNavigationItems.js","webpack://QuickQuote/./src/bvcomponents/common/quoteButton.js","webpack://QuickQuote/./src/bvcomponents/common/designButton.js","webpack://QuickQuote/./src/bvcomponents/common/minimizeButton.js","webpack://QuickQuote/./src/misc/downloadCSV.js","webpack://QuickQuote/./src/bvcomponents/common/demoPoints/demoPoint.js","webpack://QuickQuote/./src/bvcomponents/ui/icons/exclamationMarkIcon.js","webpack://QuickQuote/./src/api/parseResponse.js","webpack://QuickQuote/./src/bvcomponents/visComponents/dashboardMessaging.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/parts/floorNew.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/parts/globals.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/globals/baseboard.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/globals/ceilingLights.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/globals/globalShadow.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/globals/decor1.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/globals/decor2.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/subparts/globals/decor3.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/core/parts/other.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/navigation/desktopNavigation.js","webpack://QuickQuote/./src/bvcomponents/kvComponent/navigation/mobileNavigation.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/parts/globals.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/globals/attachment.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/globals/decor.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/centerIsland/cabinet.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/centerIsland/faucet.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/centerIsland/sink.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/centerIsland/edge.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/centerIsland/countertop.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/centerIsland/islandHood.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/centerIsland/stovetop.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/centerIsland/pendants.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/centerIsland/rightIsland.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/parts/other.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/parts/background.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/backgrounds/BackgroundBG.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/parts/floor.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/parts/walls.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/walls/backsplash.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/walls/leftWall.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/walls/rightWall.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/walls/centerWall.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/walls/frontWall.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/walls/ponyWall.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/core/subparts/walls/splitWall.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/navigation/desktopNavigation.js","webpack://QuickQuote/./src/bvcomponents/kvSceneComponent/navigation/mobileNavigation.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/parts/other.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/parts/background.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/backgrounds/BackgroundBG.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerAccessories/largeCornerSeat.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerTubCombo/bathtubLiner.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerTubCombo/replacementTub.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerTubCombo/walkInTub.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerTubCombo/jettedTub.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerTubCombo/wallConfiguration.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/shower/showerFixture.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/shower/showerGlass.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/shower/showerBody.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/vanity/completeVanity.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/vanity/vanityHandle.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/vanity/vanityCabinet.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/vanity/vanityCountertop.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/vanity/vanityBacksplash.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/vanity/mirror.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/vanity/sink.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/vanity/faucet.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/shower/showerWall.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/shower/showerWallAccent.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/shower/showerDoor.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/shower/showerPanCombo.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/shower/showerDoorHandle.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/shower/ponyWallCap.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/shower/ponyWallGlass.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/shower/showerFloor.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/shower/threshold.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/shower/showerDrain.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/shower/showerHead.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerAccessories/soapDish.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerAccessories/cornerCaddie.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerAccessories/largeCornerCaddie.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerAccessories/grabBar.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerAccessories/cornerShelf.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerAccessories/showerPod.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerAccessories/seats.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerAccessories/showerRod.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerAccessories/windowBody.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerAccessories/windowKits.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerAccessories/largeShelf.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerAccessories/towelBar.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/showerAccessories/shampooShelf.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/parts/toilet.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/parts/floor.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/walls/leftWall.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/walls/rightWall.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/walls/centerWall.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/walls/ceilingPanels.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/parts/globals.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/globals/lightFixture.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/globals/decorWindow.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/globals/decorSeat.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/globals/lampFixture.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/globals/attachment.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/parts/bathtub.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/bathTub/bathTubBody.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/core/subparts/bathTub/bathTubFixture.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/navigation/desktopNavigation.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/navItemPositionModalButton.js","webpack://QuickQuote/./src/bvcomponents/visComponents/navigation/navItemPositionModalSlatWall.js","webpack://QuickQuote/./src/bvcomponents/bvSceneComponent/navigation/mobileNavigation.js","webpack://QuickQuote/./src/bvcomponents/look/navigation/mobileNavigation.js","webpack://QuickQuote/./src/bvcomponents/look/navigation/contextMenuQKBButtons.js","webpack://QuickQuote/./src/bvcomponents/look/navigation/desktopNavigation.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/parts/other.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/parts/background.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/subparts/backgrounds/BackgroundBG.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/parts/floor.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/parts/walls.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/subparts/walls/leftWall.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/subparts/walls/rightWall.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/subparts/walls/centerWall.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/subparts/walls/frontWall.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/subparts/walls/ceiling.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/parts/fireplaceParent.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/subparts/fireplace/fireplace.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/subparts/globals/furniture.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/parts/globals.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/subparts/globals/attachment.js","webpack://QuickQuote/./src/bvcomponents/fireplace/core/subparts/globals/decor.js","webpack://QuickQuote/./src/bvcomponents/fireplace/navigation/desktopNavigation.js","webpack://QuickQuote/./src/bvcomponents/fireplace/navigation/mobileNavigation.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/zIndex.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/parts/other.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/parts/background.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/backgrounds/BackgroundBG.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/parts/floor.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/parts/walls.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/walls/leftWall.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/walls/rightWall.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/walls/centerWall.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/walls/frontWall.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/parts/globals.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/globals/decor.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/globals/basket.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/parts/cabinet.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/cabinet/cabinetLeg.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/cabinet/countertop.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/cabinet/hook.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/cabinet/cabinetGroup.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/cabinet/slatwall.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/cabinet/overheadRack.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/cabinet/bottomCabinet.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/cabinet/topCabinet.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/cabinet/tallCabinet.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/cabinet/tallHandle.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/cabinet/tallCabinetLeg.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/cabinet/topHandle.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/cabinet/bottomHandle.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/cabinet/bottomCabinetLeg.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/parts/accessories.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/core/subparts/globals/attachment.js","webpack://QuickQuote/./src/reducers/bathroomVisualizerReducer.js","webpack://QuickQuote/./src/reducers/loaderReducer.js","webpack://QuickQuote/./src/reducers/userReducer.js","webpack://QuickQuote/./src/reducers/messageBoxReducer.js","webpack://QuickQuote/./src/reducers/filterReducer.js","webpack://QuickQuote/./src/reducers/navigationReducer.js","webpack://QuickQuote/./src/reducers/sqftReducer.js","webpack://QuickQuote/./src/reducers/docuSignReducer.js","webpack://QuickQuote/./src/reducers/qtReducer.js","webpack://QuickQuote/./src/reducers/tutorialReducer.js","webpack://QuickQuote/./src/reducers/contractSigningReducer.js","webpack://QuickQuote/./src/reducers/priceWorksheetReducer.js","webpack://QuickQuote/./src/reducers/unlockCalculationsReducer.js","webpack://QuickQuote/./src/reducers/quotesReducer.js","webpack://QuickQuote/./src/reducers/advancedQuotingReducer.js","webpack://QuickQuote/./src/reducers/assignQuoteReducer.js","webpack://QuickQuote/./src/reducers/printReducer.js","webpack://QuickQuote/./src/reducers/sqftResourcesReducer.js","webpack://QuickQuote/./src/reducers/sqftMiteredReducer.js","webpack://QuickQuote/./src/reducers/lookReducer.js","webpack://QuickQuote/./src/reducers/groheReducer.js","webpack://QuickQuote/./src/reducers/iframeIntegrationReducer.js","webpack://QuickQuote/./src/reducers/groheQuotingToolReducer.js","webpack://QuickQuote/./src/reducers/paymentReducer.js","webpack://QuickQuote/./src/reducers/historyReducer.js","webpack://QuickQuote/./src/reducers/shopReducer.js","webpack://QuickQuote/./src/reducers/sqftTutorialReducer.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/superAdmin/adminReducer.js","webpack://QuickQuote/./src/app.js","webpack://QuickQuote/./src/bvcomponents/index.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/commonVisualizer.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/navigation/desktopNavigation.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/navigation/contextMenuQKBButtons.js","webpack://QuickQuote/./src/bvcomponents/commonVisualizer/navigation/mobileNavigation.js","webpack://QuickQuote/./src/bvcomponents/common/dashboardButtons/backToDashboardButton.js","webpack://QuickQuote/./src/bvcomponents/popups.js","webpack://QuickQuote/./src/bvcomponents/popups/applyPopup.js","webpack://QuickQuote/./src/bvcomponents/popups/userPopup/userPopup.js","webpack://QuickQuote/./src/bvcomponents/popups/userPopup/userFields.js","webpack://QuickQuote/./src/bvcomponents/common/calendar/confirmationScheduleView.js","webpack://QuickQuote/./src/bvcomponents/common/calendar/monthView.js","webpack://QuickQuote/./src/bvcomponents/common/calendar/monthHeaderView.js","webpack://QuickQuote/./src/bvcomponents/common/calendar/dayView.js","webpack://QuickQuote/./src/bvcomponents/common/calendar/timeTableView.js","webpack://QuickQuote/./src/bvcomponents/ui/mobileRotateButtonIcon.js","webpack://QuickQuote/./src/bvcomponents/visComponents/docuSignLayer.js","webpack://QuickQuote/./src/bvcomponents/popups/depositPopup.js","webpack://QuickQuote/./src/bvcomponents/popups/assignQuotePopup/assignQuotePopup.js","webpack://QuickQuote/./src/bvcomponents/popups/assignQuotePopup/assignQuotePopupContent.js","webpack://QuickQuote/./src/bvcomponents/popups/assignQuotePopup/assignQuoteCustomersList.js","webpack://QuickQuote/./src/bvcomponents/popups/assignQuotePopup/assignQuoteEmployeesList.js","webpack://QuickQuote/./src/bvcomponents/popups/assignQuotePopup/assignQuotePopupContentHoc.js","webpack://QuickQuote/./src/bvcomponents/popups/assignQuotePopup/assignQuotePopupNewCustomer.js","webpack://QuickQuote/./src/bvcomponents/popups/assignQuotePopup/assignQuotePopupNewCustomerInput.js","webpack://QuickQuote/./src/bvcomponents/popups/assignQuotePopup/assignQuotePopupNewCustomerSelect.js","webpack://QuickQuote/./src/bvcomponents/popups/assignQuotePopup/assignQuotePopupSaveButtons.js","webpack://QuickQuote/./src/bvcomponents/common/agreeEmailCheckbox.js","webpack://QuickQuote/./src/bvcomponents/popups/assignQuotePopup/assignQuoteContractSelection.js","webpack://QuickQuote/./src/bvcomponents/popups/orderCompletePopup/orderCompletePopup.js","webpack://QuickQuote/./src/bvcomponents/common/cookieMessage.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/sqftFeaturesPopup.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/sqftFeaturesPopupApplyButton.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/sqftFeaturesPopupBody.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/sqftFeaturesPopupParentList.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/sqftFeaturesPopupFeature.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/sqftFeaturesPopupFeatureDropdown.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/sqftFeaturesPopupFeaturePrice.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/sqftFeaturesPopupFeatureDeleteButton.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/sqftFeaturesPopupFeatureEyeball.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/sqftFeaturesPopupParentListTitle.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/sqftFeaturesPopupTitleFeatureDropdown.js","webpack://QuickQuote/./src/bvcomponents/popups/wizardConflictPopup/wizardConflictPopup.js","webpack://QuickQuote/./src/bvcomponents/popups/wizardConflictPopup/wizardConflictPopupCartItem.js","webpack://QuickQuote/./src/bvcomponents/popups/wizardConflictPopup/wizardConflictPopupButtons.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/superAdmin/SuperAdminLoginPopup.js","webpack://QuickQuote/./src/bvcomponents/common/creditCardIcons.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/superAdmin/SuperAdminToolSettingsPopup.js","webpack://QuickQuote/./src/bvcomponents/priceWorksheet/discountAllFinanceOptionsPopup.js","webpack://QuickQuote/./src/bvcomponents/popups/checkoutPopup.js","webpack://QuickQuote/./src/bvcomponents/sqft/fakeOfflineSqft.js","webpack://QuickQuote/./src/bvcomponents/sqft/polyfills/object.dataset.js","webpack://QuickQuote/./src/bvcomponents/sqft/polyfills/string.includes.js","webpack://QuickQuote/./src/bvcomponents/sqft/polyfills/string.startsWith.js","webpack://QuickQuote/./src/bvcomponents/sqft/polyfills/jquery.preBind.js","webpack://QuickQuote/./src/bvcomponents/sqft/polyfills/arrayMethods.js","webpack://QuickQuote/./src/bvcomponents/sqft/polyfills/objectMethods.js","webpack://QuickQuote/./src/bvcomponents/sqft/polyfills/numberMethods.js","webpack://QuickQuote/./src/bvcomponents/sqft/lib/wrapText.js","webpack://QuickQuote/./src/bvcomponents/sqft/lib/fraction.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/sqftFooter.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/sqftFooterActiveShapeColorset.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/sqftFooterSlabInfo.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/SqftIcons.js","webpack://QuickQuote/./src/bvcomponents/popups/changeLayoutPopup.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/layouts/rectangleIsland.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/layouts/wideAngleReverted.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/manualCalculate/SqftManualCalculateWindow.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/manualCalculate/SqftCountertopRow.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/manualCalculate/SqftEdgeRow.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/manualCalculate/SqftEdgeRowDropdown.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/manualCalculate/SqftBacksplashRow.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/popup/SqftNavSettingsWindow.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/popup/SqftTutorial.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/popup/SqftSystemMessage.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/popup/AR3DPopup.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/popup/ar3d/ThreeDContent.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/sqftFeaturesPopupChangeColorButton.js","webpack://QuickQuote/./src/bvcomponents/popups/sqftFeaturesPopup/sqftFeaturesPopupSaveImageButton.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/ShapesGoogleModelViewer.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/ShapesThreeJsViewer.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/workspaceComponents/LightIntensitySlider.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/workspaceComponents/LightingSwitch.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/glbViewer/scene/HDRMapLoader.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/glbViewer/scene/SceneModelsLoader.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/glbViewer/scene/CabinetLoader.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/glbViewer/scene/cabinetLoader/HandlesLoader.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/glbViewer/scene/cabinetLoader/CrownMoldingLoader.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/cabinetsData/CrownMoldingPositions.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/glbViewer/SingleModelGLBViewer.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/workspaceComponents/ScreenshotButton.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/useDebugOverlay.js","webpack://QuickQuote/./src/bvcomponents/ui/multiLoaderSteps.js","webpack://QuickQuote/./src/bvcomponents/common/svgIcons/multiLoaderIcons.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/popup/ar3d/ArContent.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/ar/ARWorkspace.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/ar/arButton/GLBLoader.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/ar/arButtonGoogleWebXR/WebXRGoogleModelViewer.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/popup/SqftSystemDeleteMessage.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/slab/SqftLoadSlabWindow.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/slab/SqftStepSelectSlab.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/slab/SqftStepCropSlab.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/slab/SqftStepSelectImageType.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/slab/SqftLoadSlabHeader.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/slab/SqftLoadSlabPricingCheckbox.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/slab/SqftLoadSlabFooter.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/slab/SqftLoadSlabFooterSelectImageTypeButtons.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/labels/sqftLabelsContextMenuCategorySwitching.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/overlays/contextmenu/contextmenuList.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/overlays/contextmenu/contextmenuButtons.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/labels/sqftLabelsContextMenu.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/popup/SqftContextMenuV2.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/popup/ChangeValuePopupWindow.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/useLongPress.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/NavigationSidebar.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/SqftNavAside.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/SqftNavAside2.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/SqftNavAsideCabinet.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/cabinet/SqftToolMenuCabinet.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/SqftToolMenuCountertop.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/WaterfallController.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/SqftNavShapes.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/layouts/dot.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/SqftNavSummary.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/summary/SqftSummaryRadii.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/summary/SqftSummaryAngles.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/summary/SqftSummaryBumpouts.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/summary/SqftSummaryFeatureColors.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/summary/SqftSummaryEdges.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/summary/SqftSummaryBacksplashes.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/summary/SqftSummaryWall.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/SqftNavEdges.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/SqftNavEdgesFeature.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/edgesCanvas.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/SqftNavEdgesMiteredButton.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/commonTools/SqftNavAppliances.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/commonTools/SqftNavAppliancesItem.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/SqftNavBumpouts.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/bumpout.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/SqftNavBacksplashes.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/SqftNavBacksplashesFeature.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/toolBacksplash/SqftNavBacksplashesCustomButton.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/SqftNavCorners.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/toolRadius/SqftNavRadius.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/toolCorner/SqftNav45Corner.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/cabinet/toolMenu/SqftNavigationUpper.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/cabinet/toolMenu/commonParts/SqftFeaturesChecker.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/cabinet/toolMenu/commonParts/SqftOptionsRelatedItemRow.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/cabinet/toolMenu/SqftNavigationBottom.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/cabinet/toolMenu/SqftNavigationCrownMolding.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/cabinet/toolMenu/toolCrown/SqftOptionsCrown.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/crownmoldingCanvas.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/commonTools/SqftNavFeatures.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/commonTools/SqftNavFeaturesRow.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/SqftNavAsideSlabMode.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/slab/SqftSlabWindow.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/slab/toolMenu/SqftNavSeam.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/SqftNavMitered.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/toolMitered/navMiteredSegment.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/SqftNavUnderlayment.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/SqftNavWaterfall.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/toolWaterfall/NavWaterfallSection.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/toolWaterfall/NavWaterfallSegment.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/toolWaterfall/NavWaterfallSegmentSwitcher.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/cabinet/toolMenu/SqftNavigationTall.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/cabinet/filterMenu/SqftNavFiltersMenu.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/commonTools/featuresGrid/SqftNavFeaturesGrid.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/commonTools/featuresGrid/FeaturesGrid.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/commonTools/featuresGrid/FeaturesRow.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/toolBacksplash/SqftNavCustomBacksplashes.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/toolBacksplash/SqftNavCustomBacksplashSection.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menu/countertop/toolMenu/toolBacksplash/SqftNavCustomBacksplashSegment.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/NavigationSidebarSecondRow.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menuSecondRowButtons/WallsUpModeButton.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menuSecondRowButtons/WallsLockModeButton.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/navigation/menuSecondRowButtons/ShowMeasurementsInTheSlabModeButton.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/onLoad/useUpdateSqftConfig.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/onLoad/useAddDeviceClass.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/onLoad/useToggleRoomsSwitcher.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/onLoad/useOpenSQFTMenu.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/onLoad/useCheckWizardActiveItem.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/onLoad/useResetState.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/header/SqftHeader.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/header/quotesSwitcher/quotesSwitcher.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/header/quotesSwitcher/quotesSwitcherLists.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/header/quotesSwitcher/quotesSwitcherListQuotes.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/header/quotesSwitcher/quotesSwitcherListCategories.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/header/quotesSwitcher/quotesSwitcherListRoomGroups.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/header/ModeDropdown.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ui/Dropdown.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/useChangeCabinetsColor.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/onLoad/useUpdateCabinetFeatures.js","webpack://QuickQuote/./src/bvcomponents/sqft/squareFootageToolViewWorkspace.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/SqftCanvasContainer.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/SqftCanvas.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/SqftUseCanvas.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/controls/scale.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/tutorial.js","webpack://QuickQuote/./src/bvcomponents/sqft/translatesProvider.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/onLoad/useImportSQFTData.js","webpack://QuickQuote/./src/bvcomponents/sqft/hocs/onLoad/useUpdateSlabFeatures.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/ar/ARWorkspaceSeparateModels.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/ar3d/threeD/glbViewer/scene/SceneExporter.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lookWhitePage.js","webpack://QuickQuote/./src/bvcomponents/look/list/lookList.js","webpack://QuickQuote/./src/bvcomponents/look/list/lookListLeft.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withCanvasImage.js","webpack://QuickQuote/./src/bvcomponents/look/list/lookListContentHeader.js","webpack://QuickQuote/./src/bvcomponents/look/list/lookListMain.js","webpack://QuickQuote/./src/bvcomponents/look/list/listFeatureActions/lookListMainFeatureActions.js","webpack://QuickQuote/./src/bvcomponents/look/list/listFeatureActions/lookListMainFeatureActionsMoreButton.js","webpack://QuickQuote/./src/bvcomponents/look/list/listFeatureActions/lookListMainFeatureActionsPopper.js","webpack://QuickQuote/./src/bvcomponents/look/list/listFeatureActions/lookListMainFeatureActionsPopperButtons.js","webpack://QuickQuote/./src/bvcomponents/look/list/lookFeatureQuantity.js","webpack://QuickQuote/./src/bvcomponents/look/list/lookFeatureQuantityText.js","webpack://QuickQuote/./src/bvcomponents/look/list/lookListBundleFeatures.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartItemActions.js","webpack://QuickQuote/./src/bvcomponents/look/list/lookListMainFeatureCheckbox.js","webpack://QuickQuote/./src/bvcomponents/look/list/lookListMainFeatureShipping.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withOpenMiniCartPostMessage.js","webpack://QuickQuote/./src/bvcomponents/look/layouts/lookLayout.js","webpack://QuickQuote/./src/bvcomponents/look/layouts/lookLayoutHeader.js","webpack://QuickQuote/./src/bvcomponents/look/layouts/lookLayoutMain.js","webpack://QuickQuote/./src/bvcomponents/look/layouts/lookLayoutItem.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookSideBar/lookSideBarLayoutButton.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookSideBar/lookSideBarSaveButton.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookSideBar/lookSideBarEditButton.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookSideBar/lookSideBarEditButtonPopper.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withDemoShow.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookSideBar/lookSideBarMoreButton.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookSideBar/lookSidebarModals/lookSideBarModal.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookSideBar/lookSidebarModals/lookSideBarShareModal.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookSideBar/lookSideBarFiltersButton.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookSideBar/lookSideBarPingPilotButton.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookSideBar/lookSideBarRevertButton.js","webpack://QuickQuote/./src/bvcomponents/look/rooms/lookRooms.js","webpack://QuickQuote/./src/bvcomponents/look/rooms/lookRoomsMain.js","webpack://QuickQuote/./src/bvcomponents/look/rooms/lookRoomPreset.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lookPopups.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lookMessageBoxPopup.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lookQuestionPopup.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lookStylePopup.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lookStylePopupFeature.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lookStylePopupButtons.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lookOverlayQuestions.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lookOverlayQuestionsButtons.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withExitPostMessage.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lookLoadingPopup.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lookLoadingBar.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lookNotCompatiblePopup.js","webpack://QuickQuote/./src/bvcomponents/look/popups/leadCapturePopup/leadCapturePopup.js","webpack://QuickQuote/./src/bvcomponents/look/popups/leadCapturePopup/leadCapturePopupContent.js","webpack://QuickQuote/./src/bvcomponents/look/popups/leadCapturePopup/leadCapturePopupContentInputs.js","webpack://QuickQuote/./src/bvcomponents/look/popups/leadCapturePopup/leadCapturePopupFooter.js","webpack://QuickQuote/./src/bvcomponents/look/popups/leadCapturePopup/leadCapturePopupFooterSubmit.js","webpack://QuickQuote/./src/bvcomponents/look/popups/leadCapturePopup/leadCapturePopupTwoFa.js","webpack://QuickQuote/./src/bvcomponents/look/popups/leadCapturePopup/leadCapturePopupTwoFaVerify.js","webpack://QuickQuote/./src/bvcomponents/look/popups/leadCapturePopup/leadCapturePopupOptInCheckbox.js","webpack://QuickQuote/./src/bvcomponents/look/popups/leadCapturePopup/leadCapturePopupBox.js","webpack://QuickQuote/./src/bvcomponents/look/popups/leadCapturePopup/leadCapturePopupBoxImage.js","webpack://QuickQuote/./src/bvcomponents/look/popups/leadCapturePopup/unlockCalculations/unlockCalculationStep.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lockedOverlay/lookAllWallsTutorial.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lockedOverlay/lookAllWallsTutorialHighlightFeature.js","webpack://QuickQuote/./src/bvcomponents/look/animations/lookMobileInfoButtonAnimatedIcon.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookListFeature/lookFeatureItemLocked.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookListFeature/lookListFeatureName.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardSectionListFeatureQuantity.js","webpack://QuickQuote/./src/qkbRoutes.js","webpack://QuickQuote/./src/bvcomponents/quoteDesign/quoteDesignPage.js","webpack://QuickQuote/./src/bvcomponents/ui/websiteButton.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/hideItemsSwitcher.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/fabricatorCostSwitcher.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/superAdmin/SuperAdminLoginButton.js","webpack://QuickQuote/./src/bvcomponents/initialFlow/initialFlow.js","webpack://QuickQuote/./src/bvcomponents/initialFlow/initialFlowFooterQuestion.js","webpack://QuickQuote/./src/bvcomponents/projectScope/projectScopeMobileHeader.js","webpack://QuickQuote/./src/bvcomponents/initialFlow/initialFlowType.js","webpack://QuickQuote/./src/bvcomponents/initialFlow/initialFlowRoom.js","webpack://QuickQuote/./src/bvcomponents/initialFlow/initialFlowLayout.js","webpack://QuickQuote/./src/bvcomponents/introVideo.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionWindowPage.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionWindow.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionWindowBvRequests.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionMain.js","webpack://QuickQuote/./src/bvcomponents/installation/instList.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFeatureInfo/featureInfoAssociated.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFeatureInfo/featureInfoAssociatedProducts.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFeatureInfo/featureInfoAssociatedProduct.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFeatureInfo/featureInfoDesc.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFeatureInfo/featureInfoMaterial.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFeatureInfo/featureInfoImage.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFeatureInfo/featureInfoImagesMobile.js","webpack://QuickQuote/./src/bvcomponents/ui/addProductNoteButton.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFeatureInfo/addProductNoteEditor.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionRowList/selectionMainVirtualizedList.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionRowList/rowItemButtons.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionRowList/rowItemQuantity.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionRowList/rowItemPrice.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionRowList/rowItemRelatedProductsButton.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionRowList/rowItemRelatedProducts.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/materialsWizardSqftButton.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/wizardList/wizardList.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/wizardList/wizardDesktopGrid.js","webpack://QuickQuote/./src/interfaces/wizardObjectInterface.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/wizardList/wizardMobileGrid.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionGridList/selectionMainVirtualizedGrid.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionGridList/selectionMainVirtualizedFiltersGrid.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionGridList/selectionGridFiltersTitleDropdown.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionGridList/selectionMainVirtualizedGridMobile.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionGridList/selectionMainVirtualizedFiltersGridMobile.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/expandVisualizerMethods.js","webpack://QuickQuote/./src/actions/visualizerFunctions.js","webpack://QuickQuote/./src/bvcomponents/ui/icons/noInternetIcon.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionViewSwitchers.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/filtersButton.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFooter.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionMainSelect.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionMainSelectCategory.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFooterSubPart.js","webpack://QuickQuote/./src/bvcomponents/selectionWindow/selectionFooterSubSteps.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/materialsWizard.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/materialsWizardBody.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/materialsWizardMain.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsCommon/materialsMainCanvas.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsCommon/materialsMainCanvasLayoutButton.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/materialsWizardMainList.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/materialsWizardHistoryListener.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/materialsWizardFooterStep.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsCommon/useExpandCollapseLogic.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/materialsWizardFooterButtons.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/materialsWizardFooterDropDown.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/materialsWizardFooterSelectButton.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartMobile.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartMobileHeader.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/changeRoomButton.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/priceInput.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/advancedQuoting/cartItemQuantity.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/advancedQuoting/cartItemCalcButton.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/advancedQuoting/cartItemTotal.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/advancedQuoting/cartItemSearch.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/advancedQuoting/cartItemSearchButton.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartDiscountsList.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartDiscountsListItem.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartItemsListInstallationItem.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/advancedQuoting/advancedQuotingList.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/similarProducts/similarProductsList.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/similarProducts/similarProductsListItem.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/advancedQuoting/advancedQuotingWizard/advancedQuotingWizard.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/advancedQuoting/advancedQuotingWizard/advancedQuotingWizardGroups.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/advancedQuoting/advancedQuotingWizard/advancedQuotingWizardGroupsSearch.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartItemsListWizardCustomItem.js","webpack://QuickQuote/./src/bvcomponents/ui/priceWorksheetButton.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartTaxInput.js","webpack://QuickQuote/./src/bvcomponents/ui/visualizerButton.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartFooterSubParts.js","webpack://QuickQuote/./src/bvcomponents/ui/buttonGroup.js","webpack://QuickQuote/./src/bvcomponents/qkbPages/materialsWizard/shoppingCartWizardFooterSteps.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/quote.js","webpack://QuickQuote/./src/bvcomponents/priceWorksheet/priceWorksheetList.js","webpack://QuickQuote/./src/bvcomponents/priceWorksheet/discount.js","webpack://QuickQuote/./src/bvcomponents/priceWorksheet/discountAdd.js","webpack://QuickQuote/./src/bvcomponents/priceWorksheet/discountDeposit.js","webpack://QuickQuote/./src/bvcomponents/priceWorksheet/discountFinance.js","webpack://QuickQuote/./src/bvcomponents/priceWorksheet/discountNestedParent.js","webpack://QuickQuote/./src/bvcomponents/priceWorksheet/discountNestedChild.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartDesktop.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/unlockCalculations.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/unlockCalculationsSteps.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/unlockCalculationsTutorial.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/unlockCalculationsTutorialLowes.js","webpack://QuickQuote/./src/bvcomponents/shoppingCart/shoppingCartSureTaxUpdater.js","webpack://QuickQuote/./src/misc/updateSureTax.js","webpack://QuickQuote/./src/bvcomponents/popups/contractSign/contractsPopup.js","webpack://QuickQuote/./src/bvcomponents/popups/contractSign/contractsPopupSuccess.js","webpack://QuickQuote/./src/bvcomponents/popups/contractSign/contractsPopupDocument.js","webpack://QuickQuote/./src/bvcomponents/popups/contractSign/contractsPopupFooter.js","webpack://QuickQuote/./src/bvcomponents/common/pager.js","webpack://QuickQuote/./src/api/contract-api.js","webpack://QuickQuote/./src/bvcomponents/popups/contractSign/contractInterface.js","webpack://QuickQuote/./src/bvcomponents/popups/contractSign/contractsPopupFields.js","webpack://QuickQuote/./src/bvcomponents/popups/contractSign/contractsPopupSignatureField.js","webpack://QuickQuote/./src/bvcomponents/popups/contractSign/contractsPopupCheckboxField.js","webpack://QuickQuote/./src/bvcomponents/popups/contractSign/contractsPopupNextIndicator.js","webpack://QuickQuote/./src/bvcomponents/popups/contractSign/contractsPopupFieldValue.js","webpack://QuickQuote/./src/bvcomponents/popups/contractSign/signaturePadPopup.js","webpack://QuickQuote/./src/bvcomponents/popups/contractSign/receiptSign.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lockedOverlay/lookLockTutorial.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lockedOverlay/lookLockTutorialModal.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheComponents.js","webpack://QuickQuote/./src/bvcomponents/look/lookZoomer.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookContextMenu.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookContextMenuContent.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookContextMenuVanityContent.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheSidebar.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeature.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureContent.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureOptionsType.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureOptionsShelfSide.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureOptionsSide.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureOptionsShowerPan.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureOptionsCabinetSide.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureOptionsBodySpray.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureOptionsSlatWall.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheRequiredFeatures.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeaturesTotalPrice.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheRequiredFeaturesSlider.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheMobile/groheMobileFeature/groheMobileFeature.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheMobile/groheMobileFeature/groheMobileFeatureAddedToTheCart.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheCategories/groheCategories.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheCategories/groheCategory.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFilters/groheFilters.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheSimilarProducts.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeature/groheFeatureShort.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeatures/groheFeatures.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheQuotingTool/groheQuotingTool.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheQuotingTool/groheQuotingToolIntro.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheQuotingTool/groheQuotingToolContent.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheQuotingTool/groheQuotingToolSteps.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheQuotingTool/groheQuotingToolResult.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheFeatureInfo.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureInfoContent.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureInfo3d.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureInfo3dViewer.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureInfoButtons.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureInfoAug.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheMobile/groheMobileFooter.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheMobile/groheMobileFooterButtons.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheWizard/groheWizardCompletedButtons.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheRoomLayouts/groheRoomLayouts.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheRoomLayouts/groheRoomLayoutsContent.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheRoomLayouts/groheLayoutItem.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheRoomIdeas/groheRoomIdeasContent.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheRoomIdeas/groheRoomPreset.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheCategories/groheSubCategories.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheTopButtons/groheTopButtons.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheTopButtons/groheExitButton.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheTopButtons/groheMenuButton.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheTopButtons/groheShareParentButton.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheTopButtons/groheShareButton.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheTopButtons/groheSaveButton.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheTopButtons/grohePingPilotButton.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheTopButtons/groheShopButton.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheSameColorFeatures/groheSameColorFeatures.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheSameColorFeatures/groheSameColorFeaturesContent.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheSidebarHeader.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartLogin/groheCartLogin.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartLogin/groheCartLoginHeader.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartStepper.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartLogin/groheCartLoginRegisterInputs.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartLogin/groheCartLoginRegisterCheckbox.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartPages/groheCartSuccess.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartDesignRecommended/groheCartDesignRecommended.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartDesignRecommended/groheCartDesignRecommendedList.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartDesignRecommended/groheCartDesignRecommendedFeature.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartPages/groheCartTerms.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartConfirm/groheCartConfirm.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartConfirm/groheCartConfirmHeader.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartDeliveryColumn.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartCardColumns.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartDisclaimer.js","webpack://QuickQuote/./src/bvcomponents/look/hocs/withPaymentSubmit.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartTwoFA/groheCartTwoFA.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartTwoFA/groheCartTwoFAVerify.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCart.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartHeader.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartFooter.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartPayment/groheCartBilling.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartPayment/groheCartShippingDropdown.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartPayment/groheCartPaymentDropdown.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartPayment/groheCartBillingDropdown.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartPayment/groheCartShipping.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartPayment/groheCartPayment.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartPayment/groheCartPaymentInputs.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartPayment/groheCartBillingInfo.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartDelivery/groheCartDelivery.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartDelivery/groheCartDeliveryContent.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartDelivery/groheCartDeliverySection.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartDelivery/shippingTimes.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheCart/groheCartDelivery/groheCartDeliveryInterface.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheWizard/groheWizard.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheWizard/groheWizardContent.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheWizard/groheWizardContentFeature.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheWizard/groheWizardContentSingleFeature.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardSection.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardSectionGroup.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardSectionList.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lockedOverlay/lookLockTutorialCaller.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardSectionFilters.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardSectionFilterItem.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopFeaturePage.js/shopFeaturePage.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopFeaturePage.js/shopFeature.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopFeaturePage.js/shopFeatureImage.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopFeaturePage.js/shopFeatureImageGalleryItem.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopFeaturePage.js/shopFeatureVisualizeButton.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopFeaturePage.js/shopFeaturePrice.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopFeaturePage.js/shopFeatureShipping.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopFeaturePage.js/shopFeatureOptions.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopFeaturePage.js/shopFeatureAddToCartComponents.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopFeaturePage.js/shopFeatureSuccessMessage.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopFeaturePage.js/shopFeatureDownloads.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopFeaturePage.js/shopFeatureBackNextButtons.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopFeaturePage.js/shopFeatureWizardButton.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopCategory/shopCategoryPage.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopCategory/shopCategoryList.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopCategory/shopCategoryVirtualizedGrid.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopCategory/shopCategoryListFeature.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopCategory/shopCategoryListFeatureOptions.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopCategory/shopCategoryAside.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopCategory/shopCategoryBackNextButtons.js","webpack://QuickQuote/./src/bvcomponents/look/shop/shopPingPilotButton.js","webpack://QuickQuote/./src/bvcomponents/look/grohe/groheNavigation/groheCompatabilitySection.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookCompatability/lookCompatabilitySectionButtons.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookCompatability/lookCompatabilitySectionContent.js","webpack://QuickQuote/./src/bvcomponents/look/lookComponents.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookMain.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFooter.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFooterCounts.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookMainSections.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureMatchingStyleAlert.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureMatchingStyleAlertModal.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureColorMatch.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureUnlockButton.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookMainFeatureGroups.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookMainHeader.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookMainDeleteNotification.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardContent.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookMainSectionsMobile.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookFeature/lookFeatureMobileHeader.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookMainSectionsMobileWizard.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookMobile.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookMain/lookMobileFooterButton.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookIntro/lookIntro.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookIntro/lookIntroBox.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookIntro/lookIntroBoxSteps.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookIntro/lookIntroBoxIcon.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookIntro/lookIntroCanvasHighlighting.js","webpack://QuickQuote/./src/bvcomponents/look/popups/lockedOverlay/lookLockedOverlay.js","webpack://QuickQuote/./src/bvcomponents/look/animations/lookLockedOverlayAnimatedIcon.js","webpack://QuickQuote/./src/bvcomponents/look/lookFixedButtons.js","webpack://QuickQuote/./src/bvcomponents/look/lookNavigation/lookExitButton.js","webpack://QuickQuote/./src/bvcomponents/sqft/squareFootageToolPage.js","webpack://QuickQuote/./src/bvcomponents/sqft/squareFootageToolCabinetsIntro.js","webpack://QuickQuote/./src/bvcomponents/sqft/SQFTPageAR.js","webpack://QuickQuote/./src/bvcomponents/sqft/SQFTPageARforTheSeparateModels.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","1","exports","module","l","e","Promise","resolve","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","oe","err","console","error","jsonpArray","window","oldJsonpFunction","slice","getQuotePriceWithDiscounts","getQuotePriceWithTaxes","totalPriceObject","taxes","priceTaxes","reduce","acc","tax","materialTax","materialTaxes","totalPrice","totalDeliveryCost","materialPrice","installationPrice","installationTaxes","toFixedPrice","getDeliveryCost","deliveryList","getState","cartState","deliveryCostArray","forEach","delivery","cartItems","price","total","cost","calculateStoneCost","parseQuery","queryString","location","search","query","pairs","substr","split","pair","decodeURIComponent","toLowerCase","metaDataToCamelCase","featureThumbnailUrl","feature","size","menuType","PartMenuType","Complex","partThumbnail","dbFeature","customThumbnail","thumbnailUrl","s3FeatureImagePath","getPartThemeThumbnail","activeTheme","includes","splitted","TAX_DISCOUNT_PCT","browserIsSafari","navigator","vendor","indexOf","userAgent","isIOSDevice","platform","test","isChrome","match","isIphoneX","iPhone","MSStream","aspect","screen","width","height","toFixed","isAndroid","isIframe","self","top","__pricingProfiles","isIE","MSInputMethodContext","document","documentMode","isFirefox","__pricingProfilesHit","pricingProfiles","QuotePricing","fabricatorState","pricingPreset","log","FEATURE_INSTALLATION","FEATURE_REGULAR","FEATURE_STONE","getFeatureType","isInstallation","stonePricingId","detectComplexLaborCartItem","cartItem","cartFeature","partId","autoAddToCart","complexLogic","hardcodedFloformV5Features","getTotalPrice","forQuote","calculateDiscount","cartItemsToCount","withNotInStock","state","IS_LIXIL_UI","filter","IS_PRODUCT_JOURNEY","addedBy","CART_ITEM_ADDED_BY","user","isRemoved","isInStock","getBundledFeatures","instList","instState","fabricatorTaxes","settings","sureTax","Array","isArray","map","fabTax","laborTax","getInstallationsTotalCost","Number","isInteger","currentQuote","multipliedCostUsed","sort","a","b","getDifferentCurrencyCartItems","some","sharedFeatureName","featurePrice","parseFloat","displayFakePrice","calculateFeatureCost","quantity","fromQtCategory","stonePricing","serverState","stoneSupplier","stoneCost","SQFT_FEATURES","slabs","sqftSlabState","isSlabPricingEnabled","multipliedCost","multiplySlabCostForFeature","productPriceAfterDiscount","notTaxable","materialRate","useShipping","getCartItemShippingCost","getCafeCountertopsDeliveryCost","Math","round","isEnabled","laborRate","ignoreDiscounts","splitStaticPrice","priceWorksheetEnabled","discountSections","getFilteredSections","priceWorksheetState","discountSection","sortByOrder","getDiscountsForSection","customAddedDiscounts","discount","shouldCalculateDiscount","every","ignoreDiscount","id","type","DISCOUNT_TYPES","amount","cartItemToSkip","allCartItems","allSameFeaturesQuantity","checkCartItems","cItem","allStoneCost","laborExist","find","getFeatureCost","withTotalSlabCost","useSlabSqftPricing","forQuoteIndex","withCommas","ex","numberWithCommas","getSingleSlabArea","toFixedFeatureCost","storeState","slabArea","slabImageHeight","slabImageWidth","measureUnit","ceil10","sqInchesToSqFoot","mm2ToM2","quoteIndex","activeQuoteIndex","quotesState","featureCost","checkIfInCatProperty","getFeaturePriceProperty","featureTotalPrice","material","backsplashMaterial","quoteMaterial","quoteBacksplashMaterial","materials","index","isStoneFeature","fromVisualizerType","kvConfig","visualizerType","sqftState","ret","comparisonType","baseQuantity","maxQuantity","validateFeaturePrice","comparisonFor","fQuantity","plus","getHardCodedFloFormShopCartCost","$m","$b","getSqft","stoneSupplierStone","pricingProfileId","pricingPreset_id","profile","__quotePricing","pp","Id","ppdList","useFabricatorCostPrices","pricingProfileCostData","showSalePrices","pricingProfileDiscountData","pricingProfileData","ppd","slabSqftValue","end","materialSqft","msqft","$mc","$f","$c","$fa","ci","customDisplayName","displayName","groupName","wizardGroupId","fromWizardGroupId","wizardState","wizardActiveItem","keys","wizardSelectedValues","stepIndex","selectedValue","selectedFeature","$room","$i","$other","$useCostPrices","$useDiscountPrices","$sharedFeatureName","Function","logic","isNaN","markUpLogic","updatePriceWithMarkUp","__stoneSupplierStones","fabricatorSettings","minPrice","quotePricing","stoneSupplierStones","_","hasPricingProfileAssigned","fabPrice","calculatePrice","pricePlus","perQuantity","ceil","parseInt","perUnit","margin","calcPriceWithMargin","stoneSupplierStoneInner","bFoundOther","validStoneSupplierStonePrice","trunc","metaData","toUpperCase","camelCased","charAt","capitalizeFirstLetters","str","word","join","getCurrencySign","currencyName","useDifferentCurrencies","getCurrencyPosition","getPriceWithCurrency","withSpace","alwaysRound","currencyPosition","currencySign","getFeatureCurrency","separateCurrency","replace","isExact","formatter","Intl","NumberFormat","style","currency","minimumFractionDigits","maximumFractionDigits","format","getFeatureIsLocked","ignoreLocked","leadCaptureProperty","isVisualizerRoute","userState","filterState","isBackend","jobId","canSaveQuote","visualizerManagement","isPhoneNumberValidated","leadCaptureShoppingCart","hash","ROUTES","cart","list","featureIsLocked","unlocked","filterValues","filterValueIDs","filterKey","filterGroup","filterGroups","group","filterValue","values","lockedInWizard","array","order","getDefaultRoomName","objectWithoutProperties","obj","target","getArrayOfIdsFromBvState","bvState","checkDifferentVisualizers","arrayOfIds","bvStateValue","bvStateValueArrayItem","dbFeatureId","fabFeatId","getShareUrl","url","URL","href","searchParams","URLSearchParams","param","delete","set","baseHref","origin","pathname","toString","messages","quoteRoomType","getStringFeatureName","locale","fabricatorData","useCollectionName","isLowes","isCaesarStone","fromFeatureName","getFeatureName","isEncore","getCollectionName","_customDisplayName","upperCaseAlp","getSlabUnit","getRoomName","quotes","getCurentQuoteRoomItem","quoteIndexToFind","quoteRoomNameToCompare","currentQuoteIndex","roomCartItem","getLowerCasedCustomDisplayName","room","currentRoomName","roomItem","baseRoomName","quote","letterIndex","getBaseRoomName","getEventPosition","eventX","clientX","touches","changedTouches","eventY","clientY","x","y","getUrlParam","queryParam","getFeatureUnit","intl","displayFakeFeatureGroupName","displayFakeQuantity","formatMessage","unit","lowercasedUnit","totalCount","getSlabsFeatureGroup","layout","getCurrentLayout","countertopFeatureGroup","getCountertopFeatureGroup","slabsFeatureGroup","addNonVisualizerSubPart","part","featuresList","translateId","wasCreatedFromGroupName","dbName","partName","getFeatureGroupName","getQtCategoriesWithSlabFeatureGroup","qtCategories","showSlabMode","selectedQuoteRoomCartItem","getCurrentQuoteRoomCartItem","selectedQuoteRoomFeature","activeCategory","qtCategory","featureIsMatchingQtCatName","categoryToSearch","subParts","subPart","findIndex","featureGroup","lowerCasedName","isDeStefano","customGroupDisplayName","canShowSqftButtonForFeature","fixDbFeatureProperties","fabFilterValueIDs","trim","forFeature","checkArray","canShowForCommonIds","getCommonVisualizerType","enableSqFt","canShowSqftCabinetButtonForFeature","isCabinetsFabricator","canShowSqftButton","userId","useCategorySwitching","getCartItemObject","fromFeature","newQuantity","qtActiveCategory","getParent","cartItemObject","selectionGroup","getRelatedFeaturesFromLayout","relatedFeatures","currentFeature","searchInputValue","selectedFilters","parentParts","parts","relatedFeaturesFound","noFeaturesFound","relatedFeature","featureIsFound","splitFeatureName","parentPart","relatedItems","relItem","edgeCondition","layoutType","description","filterFeaturesByValues","getFilteredRelatedFeatures","relatedFeaturesToCheck","relFeature","featureAlreadyExistIndex","getSplittedFeatureName","navigationSubItems","navItem","createRelatedGroups","relatedGroups","addedCartItem","cartQuantity","relatedFeatureGroupName","getAllFilterGroupValuesFromGroup","fValues","fValue","items","childValue","goToFabricatorUrl","websiteUrl","parent","types","uuid","setWindowWidth","windowWidth","SET_WINDOW_WIDTH","payload","setJavascriptErrors","javascriptError","SET_JAVASCRIPT_ERRORS","setWindowHeight","windowHeight","SET_WINDOW_HEIGHT","setStonePricing","SET_STONE_PRICING","setCookieAccepted","cookieAccepted","SET_COOKIE_ACCEPTED","addVisualizersLoaded","newLoadedVisualizer","ADD_VISUALIZERS_LOADED","showSuccessNotification","successNotification","SHOW_SUCCESS_NOTIFICATION","addProjectDocument","file","sqftDiagram","documents","newDocument","uid","v4","text","created","Date","uploaded","existingCalcDiagramIndex","doc","ADD_PROJECT_DOCUMENT","setProjectDocumentsIds","oldDocuments","oldDoc","responseDoc","documentId","SET_PROJECT_DOCUMENTS_IDS","setJobId","SET_JOB_ID","setStep","activeStep","SET_STEP","setLayoutDataParts","layoutParts","SET_LAYOUT_DATA_PARTS","setStepSwitching","isSwitching","SET_STEP_SWITCHING","toggleSelectionWindow","selectionOpened","showFilters","dispatch","TOGGLE_SELECTION_WINDOW","setDefaultSelectionGroup","SET_DEFAULT_SELECTION_GROUP","setSelectionWindowView","selectionWindowView","SET_SELECTION_WINDOW_VIEW","toggleSelectionFeatureInfo","selectionFeatureInfo","TOGGLE_SELECTION_INFO","updateFeatureInfoCount","UPDATE_FEATURE_INFO_COUNT","changeSelectionInfoQuantity","selectionInfoQuantity","CHANGE_SELECTION_INFO_QUANTITY","togglePulseFeatureInfoQuantity","pulseFeatureInfoQuantity","TOGGLE_PULSE_FEATURE_INFO_QUANTITY","changeMaterialsInfoFeatureModules","materialsInfoFeatureModules","CHANGE_MATERIALS_INFO_FEATURE_MODULES","changeActivePartRelatedItemIndex","newActivePartRelatedItemIndex","activePartRelatedItemIndex","selectionState","CHANGE_SELECTION_ACTIVE_PART_RELATED_INDEX","isSameStep","setActiveFeature","activeFeature","SET_ACTIVE_FEATURE","toggleShowDescriptionCover","showDescriptionCover","TOGGLE_SHOW_DESCRIPTION_COVER","toggleBathroomVisualizerOpen","bvOpened","bathroomVisualizerState","bvVisited","loaderEnable","TOGGLE_BATHROOM_VISUALIZER_OPEN","setBathroomVisualizerVisited","SET_BATHROOM_VISUALIZER_VISITED","setBathroomVisualizerFeatures","bvFeatures","SET_BV_FEATURES","setBathroomVisualizerPresets","bvPresets","SET_BV_PRESETS","setActivePreset","activePreset","SET_ACTIVE_PRESET","setCanvasId","SET_BV_CANVAS_ID","toggleShowRestorePopup","showRestorePopup","TOGGLE_SHOW_RESTORE_POPUP","setCanvasDimensions","canvasDimensions","SET_CANVAS_DIMENSIONS","setCanvasScale","canvasScale","SET_CANVAS_SCALE","setLoadedPresets","loadedPresets","SET_LOADED_PRESETS","toggleLoader","loaderOpened","loaderText","loaderTitle","loaderFullScreen","TOGGLE_LOADER","setMultiLoader","multiLoader","SET_MULTI_LOADER","toggleUserPopup","userPopupState","TOGGLE_USER_POPUP","showCheckoutPopup","changeUserInfo","userInfo","CHANGE_USER_INFO","changeUserInfoErrors","userInfoErrors","CHANGE_USER_INFO_ERRORS","toggleAdditionalFields","showAdditionalFields","TOGGLE_ADDITIONAL_FIELDS","setUserPhoneNumberValidated","validated","SET_USER_PHONE_NUMBER_VALIDATED","unlockPricing","userIsLoggedIn","userPopupOpened","addToCart","wizardIsActive","wizardActiveStep","allWizardsValues","fromWizardId","fromWizardGroup","fromWizardStep","wizardSteps","wizardGroup","isSquareFootageEnabled","getAvailableSteps","newCartItems","noteText","notesList","foundStep","getWizardStepFromCartItemFeature","getCorrectedWizardGroupForFeature","stepGroups","newCartItem","oldCartItem","bundleFeatures","bundleFeature","bundledFeatureQuantities","assign","bundleParentId","ADD_TO_CART","addDisplayLogicCartItem","ADD_DISPLAY_LOGIC_CART_ITEM","isAddedFromDisplayLogic","changeCartItemQuantity","removeFakeQuantity","CHANGE_CART_QUANTITY","removeFromCart","REMOVE_FROM_CART","changeCartFeature","skipOtherRules","CHANGE_CART_FEATURE","removeInstallationServiceFromCart","installationService","REMOVE_INSTALLATION_SERVICE_FROM_CART","clearCart","CLEAR_CART","toggleApplyPopup","applyPopupOpened","activeApplyPopupItems","TOGGLE_APPLY_POPUP","clickQuestionNo","questionNoClicked","CLICK_QUESTION_NO","setCameFromPage","cameFromPage","CAME_FROM_PAGE","addToRecentlyViewed","ADD_TO_RECENTLY_VIEWED","show","SHOW_CHECKOUT_POPUP","restoreCart","RESTORE_CART","toggleInstOpened","instOpened","TOGGLE_INST_OPENED","setInstList","SET_INST_LIST","setDefaultInstallations","defaultInstallations","SET_DEFAULT_INST_LIST","changeStateToQuote","SET_STATE_TO_QUOTE","setFabricatorData","SET_FABRICATOR_DATA","setFabricatorTaxes","SET_FABRICATOR_TAXES","updateFabricatorSettings","UPDATE_FABRICATOR_SETTINGS","toggleHideItemsSwitcher","TOGGLE_HIDE_ITEMS_PRICES","toggleUseFabricatorCostPrices","TOGGLE_USE_FABRICATOR_COST_PRICES","changeMessageBoxState","messageBoxState","CHANGE_MESSAGE_BOX","setSelectedFilters","SET_SELECTED_FILTERS","loadFilters","fg","fgValue","isFabricatorCustomFilter","LOAD_FILTERS","setExpandedFilters","expandedFilters","SET_EXPANDED_FILTERS","filterId","SHOW_FILTERS","showDocuSign","showFiltersIfHidden","SHOW_FILTERS_IF_NOT_VISIBLE","setFilterVisible","SET_FILTER_VISIBLE","loadMobileNav","LOAD_MOBILE_NAV","hideUserPopup","visible","inline","showSchedulerPopup","SHOW_SCHEDULER","toggleConfirmPopup","confirmPopupOpened","confirmPopupType","TOGGLE_CONFIRM_POPUP","callback","SHOW_DOCUSIGN","showDeposit","SHOW_DEPOSIT","checkForOrderCompletePopup","checkout","hasPaymentGateway","checkoutSuccess","showOrderCompletePopup","showCheckoutLayout","enableDeposit","unlockCalculationsState","unlockCalculationsTutorialIsFinished","_showDeposit","then","enableDocuSign","_showDocuSign","_showCheckoutPopup","shouldUseContractSigning","hashHistory","contract","_showContractSigning","catch","setQtCategoriesRequested","qtCategoriesRequested","SET_QT_CATEGORIES_REQUESTED","setQtCategoriesLoaded","qtCategoriesLoaded","SET_QT_CATEGORIES_LOADED","setQtActiveCategory","SET_QT_ACTIVE_CATEGORY","setIntroVideo","introVideo","SET_INTRO_VIDEO","updateCanvasCount","UPDATE_CANVAS_COUNT","setPresetWasChangedByUser","presetWasChangedByUser","SET_PRESET_WAS_CHANGED_BY_USER","setFirstLoadedPreset","firstLoadedPreset","SET_FIRST_LOADED_PRESET","addLayoutHistory","layoutState","ADD_LAYOUT_HISTORY","setLayoutHistory","layoutHistory","SET_LAYOUT_HISTORY","_zoomLevel","_isDemo","_isShowroomMode","_isTimeoutDisabled","_isTabletMode","_kioskConfigs","_userInfo","_kioskStandAlone","kioskMode","app","db","_parent","exitEditQuote","UseFullSizeImages","IS_OFFLINE_MODE","offlineMode","USE_SERVER_CACHING","AVAILABLE_VISUALIZERS","Bathroom","Kitchen","Fireplace","LaundryRoom","BATHROOM_VISUALIZER_TYPES","AVAILABLE_VISUALIZER_TYPES","kvScene","bvScene","bvLook","NAVIGATION_TYPES","qkb","look","product","IS_LIXIL_SERVERS","host","domain","IS_LIXIL_PRODUCTION","devMode","toolVersion","navigationType","IS_LOOK_JOURNEY","IS_QKB_UI","IS_SUPER_ADMIN","isSuperAdmin","IS_DEALER_FLOW","isDealerFlow","USE_FAB_FILTERS_ONLY","IS_DASHBOARD_MESSAGING","body","classList","add","stringToCheck","AVAILABLE_LANGUAGES","POST_MESSAGES","setIframeLanguage","userRegisterTrue","userRegisterFalse","userLoginTrue","userLoginFalse","IS_BATHROOM_OLD_BV_SCENE","REACT_APP_GOOGLE_API_KEY","_isQTEmbedded","_isTutorial","_visMgmt","_isDevMode","_showAllVisualizerGroups","showAllVisualizerGroups","_isMobile","_subdomain","IS_AS_BATHROOM","subDom","tables","config","getConfigs","configs","Config","AmazonS3","bucketName","root","encodeURI","userDataPath","getScriptPath","scripts","getElementsByTagName","src","getAttribute","substring","lastIndexOf","appRootNode","layerSize","maxZoom","zoomIn","zoomOut","zoomLevel","viewSize","w","demoUserDomains","isDemo","this","subdomain","kioskStandAlone","isKiosk","isShowroomMode","isTimeoutDisabled","isTabletMode","getSubdomain","isMobile","isQTEmbedded","isTutorial","isDevMode","isVisualizerManagement","setUserInfo","isAnalytics","ga","isMixPanel","mixpanel","Analytics","sendEvent","action","label","analyticsDebugging","gtag","track","source","shareUrl","sendPageEvent","sendDataEnteredEvent","sendClickEvent","sendEcommerceEvent","setUserId","setMixPanelPerson","email","phone","alias","identify","people","setExistingMixPanelPerson","logOutMixPanel","reset","sendParentPostMessage","country","firstName","phoneNumber","postal","postMessage","getSkuForAnalytics","withPartId","sku","getStringForAnalytics","string","QKB_ANALYTIC_EVENTS","quotingToolWizardSwitch","LOOK_JOURNEY_ANALYTIC_EVENTS","lookExit","lookCartButton","lookSidebarHome","lookSidebarFilters","lookSidebarEdit","lookSidebarRooms","lookSidebarPingPilot","lookSidebarSave","lookSidebarMore","lookSidebarShare","lookSidebarReset","lookSidebarFacebook","lookSidebarTwitter","lookSidebarPinterest","lookSidebarFeatureGroup","lookFooterExpandMenu","lookFooterCloseMenu","lookMenuHeaderClose","lookMenuHeaderBack","lookMenuHeaderViewType","lookFooterList","lookZoomPlus","lookZoomMinus","lookCanvasLayer","lookCanvasContextMenu","lookCanvasContextMenuItem","lookCanvasDemoPoint","lookFeatureImageChangeLeft","lookFeatureImageChangeRight","lookFeature3dAndArOpen","lookFeature3dAndArClose","lookFeatureMoreInfoOpen","lookFeatureMoreInfoClose","lookFeatureInfoContentHeaderClose","lookFeatureInfoContent3dAr","lookFeatureInfoContentSwitch","lookFeatureInfoContentFeatureLink","lookFeatureInfoContentAccordionOpen","lookFeatureInfoContentAccordionClose","lookFeatureChange","lookFeatureUnlock","lookFeatureRemove","lookFeatureEnable","lookFeatureConfirmChange","lookFeatureOptions","lookFeatureMatchColorsCheckbox","lookFeatureMobile3dButton","lookFeaturesListDesignRecommended","lookFeaturesList","lookFeaturesFiltersClose","lookFeaturesFiltersReset","lookFeaturesFiltersAccordionOpen","lookFeaturesFiltersAccordionClose","lookFeaturesFiltersValueChecked","lookFeaturesFiltersValuerUnChecked","lookOverlayLeave","lookOverlaySave","lookPopupLogin","lookRoom","lookLeadCapturePopupLogin","lookLeadCapturePopupRegister","lookLeadCapturePopupForgotPassword","lookLeadCapturePopupTwoFAResendCode","lookLeadCapturePopupTwoFAReceiveCall","lookLeadCapturePopupTwoFAUpdatePhone","lookMobileActiveFeatureButton","lookMobileListClose","lookIntroLearnToUse","lookIntroStartDesign","lookIntroSkip","lookIntroFinalStepStartDesign","lookIntroPagination","lookIntroNextStep","lookRoomIdeasOnIntro","lookRoomIdeasOpen","lookRoomIdeasClose","lookRoomIdeasPreset","lookMainCategory","lookCanvasPolicyLinks","lookListPolicyLinks","lookListHeaderSave","lookListBackToCustomize","lookListAddToCart","lookListOpenMiniCart","lookListSelectAllItems","lookListCartItemSelect","lookListCartItemQuantityChange","lookListCartItemRemove","lookListCartItemMoreDropdown","lookListCartItemMoreDropdownWishlist","lookListCartItemMoreDropdownChange","lookStylePopupConfirmRemove","lookStylePopupRemoveBackContinue","lookStylePopupRemoveBack","lookStylePopupConfirm","lookPopupSaveSuccessSubmit","lookPopupSaveResetSubmit","lookPopupChangeViewSubmit","lookMenuWizard","lookWizardParent","lookWizardListFeature","lookWizardListFilter","lookWizardMatchAll","lookWizardCompletedClose","lookShowCompatabilityAlert","lookCloseCompatabilityAlert","lookCloseAndApplyCompatabilityAlert","lookLockedButton","lookSidebarRevertCtrlZ","PRODUCT_JOURNEY_ANALYTIC_EVENTS","productTopButtonsShop","productTopButtonsExit","productTopButtonsMenu","productTopButtonsShare","productTopButtonsPingPilot","productTopButtonsShareFacebook","productTopButtonsShareTwitter","productTopButtonsSharePinterest","productTopButtonsSave","productCanvasLayer","productCanvasContextMenu","productCanvasContextMenuItem","productCanvasDemoPoint","productSidebarHeaderAllProducts","productSidebarHeaderRoomLayouts","productSidebarHeaderCart","productSidebarCategory","productFeatureChange","productFeatureImageChangeLeft","productFeatureImageChangeRight","productFeatureMoreInfoOpen","productFeatureMoreInfoClose","productFeatureInfoContentAccordionOpen","productFeatureInfoContentAccordionClose","productFeatureQuantityChange","productFeatureRemove","productFeatureEnable","productFeature3dAndArOpen","productFeature3dAndArClose","productFeatureInfoContentHeaderClose","productFeatureInfoContent3dAr","productFeatureInfoContentSwitch","productFeatureInfoContentFeatureLink","productFeatureUnlockNow","productFeatureLockedBadge","productFeatureLocked3DButton","productFeatureSQFT","productFeatureAddToCart","productFeatureContinueShopping","productFeatureCloseProductsList","productFeatureOptions","productFeatureMobile3dButton","productFeaturesNext","productFeaturesList","productFeaturesListViewType","productFeaturesFiltersClose","productFeaturesFiltersReset","productFeaturesFiltersAccordionOpen","productFeaturesFiltersAccordionClose","productFeaturesFiltersValueChecked","productFeaturesFiltersValuerUnChecked","productSimilarListClose","productSimilarListTitle","productSimilarListFeature","productSimilarListFeatureAddToCart","productOverlayLeave","productOverlaySave","productPopupLogin","productMatchColorsVisualizeAllCheckbox","productRoom","productRoomLayouts","productRoomIdeas","productRoomIdeasPreset","productFiltersOpen","productMenuFooterButton","productPopupSaveSuccessSubmit","productPopupResetSubmit","productPopupChangeViewSubmit","roomsRoomLayouts","roomsRoomIdeas","cartCheckoutLogin","cartCheckoutRegister","cartCheckoutSuccessContinueShopping","cartCheckoutSuccessViewAll","cartCheckoutSuccessFeature","cartTermsAccept","cartTwoFANext","cartTwoFAUpdatePhone","cartTwoFAResendCode","cartTwoFAReceiveCall","leadCapturePopupLogin","leadCapturePopupRegister","leadCapturePopupForgotPassword","leadCapturePopupTwoFAResendCode","leadCapturePopupTwoFAReceiveCall","leadCapturePopupTwoFAUpdatePhone","productLockedButton","shopFeaturesList","shopFeaturesListOptions","shopFeatureOptions","shopFeatureAddToCart","shopHelpChat","shopSQFTButton","store","compose","applyMiddleware","thunk","__REDUX_DEVTOOLS_EXTENSION__","f","createStore","createStoreWithMiddleware","reducers","getCurrentLayoutInstance","getCurrentCanvas","getCurrentZIndexes","createFakeLayout","asLayout","scene","LayoutInstance","fakeLayout","isFakeLayout","parentGroups","getFeatures","needToLoadFeatures","allDbFeatures","s3Bindings","RoomLayout","isNewLayout","RoomScene","loadDbFeature","createCustomConfigurations","setDefaultFeatures","initialized","getVisualizerTypeFromBvScene","bathroom_floor","shower_body","kitchen_floor","getCurrentRoomType","LOOK_ROOM_TYPES","as","grohe","mainNeeded","oppositeNeeded","COUNTERTOP_LABELS","shower_wall","featureGroupCountertop","getSubPartFromQtCategories","getFeatureGroupByPartId","bathTubTypeToString","bathTypeType","BathTubType","Custom60in","FreeStanding","bathTubStringToType","bathtubString","LayoutType","Layout1","Layout2","Layout3","Layout4","Layout5","Layout6","Layout7","Layout8","Layout9","Layout10","Layout11","Layout12","Layout13","Layout14","Layout15","Layout16","Layout17","Layout18","Layout19","Layout20","LayoutAbbreviation","All","LayoutAbbreviations","LayoutAbbreviationsToRemove","METADATA","ALL","NO","LeftSide","RightSide","Center","Inner","Outer","StandAlone","SingleHole","WallHungSinks","WidespreadFaucets","BathtubWithEnclosures","BathtubWithoutEnclosures","ShowerComboTubType","bathtub_liner","replacement_tub","walk_in_tub","jetted_tub","CountsType","allLayoutFeaturesCount","largeLayoutFeaturesCount","smallLayoutFeaturesCount","totalFeaturesCount","VANITY_TYPES","VanityTypes","Complete","Custom","ShowerBodyType","Glass","Door","Simple","ShowerHeadTypes","shower_arm","shower_head_bundle","shower_trim_kit","shower_fixture","shower_system","ShowerHandTypes","hand_shower_kit","hand_shower_holder","vanity_cabinet","vanity_console","vanity_washstand","useNewNavLogicPartIds","vanityWizardFilters","showerWizardFilters","NotQCVanityDoorStylesFilters","COUNTERTOP_GROUP_BATHROOM","CABINET_GROUP_BATHROOM","CORNER_SHELVES_POSITIONS","SIDE_POSITIONS","CONTEXT_MENU_VANITY_ONLY","createParentPositions","layerPositions","position","createPageToLoadArray","nextFeaturesPageToLoadArray","layoutAbbreviation","page","allReceived","PAN_POSITIONS","VANITY_POSITIONS","LOOK_OPENED_TYPES","edit","featureZoom","LOOK_FEATURE_CONTENT","info","threeD","aug","gallery","LOOK_OVERLAYS","exit","intro","print","loadingCart","questionLogin","questionShare","questionView","questionViewUpdated","questionRemove","saveSucess","stylePairing","styleColor","styleRemove","styleRemoveBack","styleRemoveFeature","notCompatiblePopup","leadCapture","LOCAL_STORAGE_KEYS","introVisited","saveQuoteRequired","requiredShareButton","LOOK_INTRO_STEPS","welcome","layoutsAndRooms","wallsAndFloor","saveAndMore","review","LOOK_INTRO_STEPS_MOBILE","layouts","rooms","CONTEXT_MENU_VANITY_BUTTONS","CONTEXT_MENU_BATHTUB_BUTTONS","CONTEXT_MENU_SPLIT_WALL","CONTEXT_MENU_SHOWER_ALL","CONTEXT_MENU_SHOWER_OTHER","CONTEXT_MENU_SHOWER_ACCESSORIES","CONTEXT_MENU_KITCHEN_COUNTERTOPS","CONTEXT_MENU_KITCHEN_CENTER_ISLAND","DECORS_MAX","ALL_CONTEXT_MENU","ALL_CONTEXT_MENU_KITCHEN","LOOK_WALLS","LOOK_WALLS_ONLY","POSSIBLE_ONE_POSITION","WHITE_PAGE_ROUTES","view","login","register","AVAILABLE_FILTERS","WIZARD_STEP_WIDTH","WIZARD_STEP_MOBILE_WIDTH","WIZARD_STEP_PRODUCT_JOURNEY","LOOK_NAVIGATION_LIST_TYPES","regular","designRec","notMatchingMeta","SHAPE_PART_ID","SQFT_POST_MESSAGE_ACTIONS","initialLoad","setQTData","closeSqFtCalc","callResetDataPopup","callChangeLayoutDataPopup","userIdleResetCounter","resetHistory","saveHistory","setNewLayoutOnSqft","setCanvasCenter","stopRender","startRender","MEASURE_UNITS","Metric","Imperial","edge","seamPiece","backsplashPiece","waterfallPiece","slabPlaceHolder","top_cabinet","bottom_cabinet","tall_cabinet","lower_cabinet_boxes","upper_cabinet_boxes","tall_cabinet_boxes","countertop","spacer","vanity_countertop","center_island_countertop","front_wall","dishwasher","hood","fridge","stove","SIDEBAR_NAVIGATION_BUTTONS","APPLIANCE_PART_IDS","FEATUREGROUP_PART_ID","specialty_cut_and_designs","SHAPE_ROTATE_DIRECTION","right","left","ALIGN","center","SHAPE_TYPE","polygon","square","wideangle","horseshoe","appliances","RENDER_TEMPLATES","default","linesOnly","filledPrimary","accordingToFeature","filledActive","SIDEBAR2_BUTTONS","menu","classNames","hasMenu","SIDEBAR_BUTTONS_MENU","move","shapes","summary","cabinetset","SIDEBAR_SLAB_BUTTONS","rotate","loadSlab","seam","duplicate","MOVABLE_IMAGE_TYPES","slabImage","SIDEBAR_SLAB_SEAM_BUTTONS","addSeamHorizontal","addSeamVertical","undoSeam","resetSeams","resize","corners","radius","backsplash","end_cap","angle","bumpout","hardCodeIsLowes","mitered","hardCodeIsMcDermott","toolWaterfall","hardCodeIsModerno","hardCodeIsPorcelanosa","toolUnderlayment","SIDEBAR_NAVIGATION_CABINET_BUTTONS","SIDEBAR_TYPE_AREA_NAVIGATION_BUTTONS","freeDraw","lower","upper","tall","centerIsland","wall","crown","handles","end_panel","SIDEBAR_SHAPE_BUTTONS","lshape","rectangle","dot","shapeFreeForm","SQFT_APPLIANCES","SIDEBAR_NAVIGATION_BUTTONS_LEVEL3","filters","FREE_FORM_THICKNESS_POPUP_ID","SIDEBAR_BUTTONS","message","shouldHardcodeMessage","subMenu","title","additionalClassNames","SIDEBAR_TYPE_AREA_BUTTONS","SIDEBAR_CABINET_BUTTONS","SIDEBAR_WITH_FEATURES_SUBMENU","SHOULD_DISPLAY_FEATURES_ONLY_WITH_AR3DUrls","SIDEBAR_HIDDEN_BUTTONS","buttonMitered","buttonCustomBacksplash","edgePeninsulaUnderwrap","isDisabledInPopupShouldBeHidden","hardCodeIsCaesarStone","SIDEBAR_LAYOUTS_BUTTONS","refrigerator","range","sink","doubleSink","iceMachine","oven","stovetop","trashCompactor","wineFridge","CABINET_LABELS","SQFT_APPLIANCES_CAES","crown_molding","handle","SQFT_CABINET_APPLIANCES","CABINET_BOXES","SQFT_VIEW_MODE","SQFT_APPLIANCES_WITH_SUBMENU","microwave","SQFT_SHAPES_THAT_ADD_OVERHANG","SQFT_MODE","slab","twoDMode","threeDMode","threeDModeDoors","threeDModeFramed","threeDModeFrameless","augmentedReality","augmentedRealityCabinet","augmentedRealityDoorsOnly","SQFT_VIEW_AR_MODES","MANUAL_CALCULATION_ROW_TYPES","countertopRows","backsplashRows","edgeRows","DIRECTION","north","east","south","west","MANUAL_CALCULATION_MEASURE","SQFT_BACKSPLASH_TYPES","SQFT_BACKSPLASH_TYPES_METRIC","SQFT_WALL_TYPES","SQFT_MEASURE_UNIT","imperial","metric","FREE_DRAW_TYPE","shape","CONTEXT_MENU_TYPE","buttons","bumpouts","backsplashes","edges","shower_floor","vanity_accent","vanity_backsplash","shower_interior_wall","shower_interior_wall_accent","shower_wall_accent","accent_wall","wall_a","wall_b","wall_c","top_handle","bottom_handle","underlayment","wall_door_end_accessory","base_door","island_panel","refridgerator_panel","hinge","END_CAP_CABINETS_PART_IDS","DEFAULT_EXPORTED_SQFT_FEATURES","PARENT_KEYS_WITH_COMBINED_FEATURES_IN_CART","END_CAP_AREA_PART_IDS","END_CAP_PART_IDS","SQFT_AREA_TYPE_PART_IDS","SQFT_PARENT_FEATURE_GROUP_PART_IDS","SQFT_CHILD_FEATURE_GROUP_PART_IDS","BACKSPLASH_LABELS","CABINET_PART_IDS_THAT_CAN_HAVE_HANDLES","HANDLE_TO_CABINETS","CABINETS_TO_HANDLE","CABINET_COMMON_COLOR_PART_IDS","FEATURE_QUANTITY_UNITS","EDGE_LABELS","edge_profile","center_island_edge","CORNER_LABELS","corner","SHAPE_PART_IDS_USING_SAME_COLOR","FEATURES_WITH_0_VALUE_FOR_THE_SLABS","ALLOWED_LABEL_NAV_ITEMS","POINT_PROPERTY","arcLength","RESOURCE_TYPE","attachedToLine","waterfallSectionsData","underlaymentSections","RESOURCE_ATTACHED_TO_TYPE","waterfall","RESOURCE_ATTACHED_TO_NAME","WORKSPACE_RESOURCES","spacers","crownMolding","walls","shapeColors","removedFeatures","snappedShapeGroups","selectedShapes","images3d","WATERFALL_SHAPES_KEY","cabinetReturn","overhangReturn","peninsulaUnderwrap","WATERFALL_SHAPES_NAME","SQFT_GROUP","area","cabinets","SQFT_AR3D_POPUP_CONTENT_TYPE","ar","SQFT_AR3D_GLB_VIEWER","singleModel","separateModels","MITER_UNDERWRAP_EDGE_NAMES","MITER_EDGE_NAMES","WATERFALL_OVERLAY_TYPE","MITERED_OVERLAY_TYPE","APPLIANCES_THAT_SHOULD_RENDER_MEASUREMENTS_INSIDE_THE_SHAPE","CABINET_FILTER_NAMES","knobs","hinges","slideSets","doors","drawers","CABINET_SET2","setLookOpened","lookOpened","SET_LOOK_OPENED","setLookExpanded","lookExpanded","setLookParentKeys","lookParentKeys","SET_LOOK_PARENT_KEYS","setLookViewType","lookViewType","SET_LOOK_VIEW_TYPE","setWishlistPopupOpened","wishlistPopupOpened","SET_WISHLIST_POPUP_OPENED","setSidebarModalOpened","sidebarModalOpened","SET_SIDEBAR_MODAL_OPENED","setLookActiveFeature","newLookActiveFeature","lookActiveFeaturePositionInList","SET_LOOK_ACTIVE_FEATURE","lookActiveFeature","useTrumbleApi","quantityOptions","setTrumbleInventoryForFeatures","UPDATE_LOOK_ACTIVE_FEATURE_STOCK_COUNT","setLookActiveCategory","lookActiveCategory","SET_LOOK_ACTIVE_CATEGORY","setLookMoreInfoOpened","moreInfoOpened","moreInfoContent","SET_LOOK_MORE_INFO_OPENED","setLookPageOpened","lookPageOpened","overflow","lookState","SET_LOOK_PAGE_OPENED","setLookOverlayOpened","lookOverlayOpened","lookOverlayAction","SET_LOOK_OVERLAY_OPENED","setLookViewChangeOptions","lookViewChangeOptions","SET_LOOK_VIEW_CHANGE_OPTIONS","setLookStylePopup","lookStylePopup","SET_LOOK_STYLE_POPUP","setLookRemovePopup","lookRemovePopup","SET_LOOK_REMOVE_POPUP","setLookIntroStep","introStep","SET_LOOK_INTRO_STEP","setLookIntroHidden","introHidden","SET_LOOK_INTRO_HIDDEN","setLookContextMenu","contextMenu","SET_LOOK_CONTEXT_MENU","setLookWallsApplyTo","lookWallsApplyTo","SET_LOOK_WALLS_APPLY_TO","setLookAllWallsOpened","lookAllWallsOpened","SET_LOOK_ALL_WALLS_OPENED","setLookReturnAction","lookReturnAction","SET_LOOK_RETURN_ACTION","setLookDemoPointsClicked","lookDemoPointsClicked","SET_LOOK_DEMO_POINTS_CLICKED","updateNavigationCount","UPDATE_LOOK_NAVIGATION_COUNT","setLookCompatabilityAlert","lookCompatabilityAlert","SET_LOOK_COMPATABILITY_ALERT","setLookRestoreState","lookRestoreState","SET_LOOK_RESTORE_STATE","setLookLockedTutorial","lookLockedTutorial","SET_LOOK_LOCK_TUTORIAL","setLookAllWallsTutorial","lookAllWallsTutorial","SET_LOOK_ALL_WALLS_TUTORIAL","ContentType","None","Layout","Design","DisplayRoom","Loading","QuotedItems","ContentTypeName","2","3","6","ContentTypeNameTranslate","UserPopupTypes","Unlock","GetQuote","NewDesign","Schedule","ConfirmPopupTypes","ConsultationRequest","SqftResetChanges","SqftUpdateQuestion","AssignQuoteOnExistingUser","DeleteCartItemsPopup","ChangeWizardToPreviousStepSelection","ReplaceRoomWhenItExistsInCartButWeAddNew","UserPopupContent","terms","forgot","twoFA","twoFAVerify","QuoteRequestType","RequestQuote","ScheduleAnAppointment","RequestDateTime","RegularDesign","RequestConsultation","UserAction","Login","Register","SqftUpdateTypes","Reset","UpdateData","dbFeatureRelatedFeaturesProperties","dbFeatureFilterProperties","otherMissingProperties","MIN_DISTANCE_BETWEEN_FREE_DRAW_POINTS","initializeDependentProperties","fieldWidth","getMM","fieldWidthCabinet","updateDimensions","updateDefaultScale","scale","defaultScale","div","createElement","appendChild","dpi","offsetHeight","removeChild","getDPI","kioskApp","initialize","updateWorkspace","innerWidth","workspace","fontSize","fontSizeMetric","fontSizeSmallest","getMeasureMultiplier","millimetersMultiplier","getMeasureUnitPostfix","shouldAddWhitespace","isCabinetGroupInURL","isSQFTEnabledInURL","getScaledGridSize","gridSize","isDefault","scaledGridSize","nearest","ctx","mmDivider","mm2ToM2Divider","inchesToMMultiplier","sqftToMmMultiplier","sqftToM2Multiplier","lnftToMmMultiplier","waterfallImperialHeight","waterfallMetricHeight","miteredEdgeAdditionalImperialArea","miteredEdgeAdditionalMetricArea","edgeHeightImperial","edgeHeightMetric","minApplianceLineLength","maxApplianceLineLength","imageWidthMetric","imageHeightMetric","imageWidthImperial","imageHeightImperial","canvas","getDefaultScaledGridSize","debug","snapToGrid","menuItemActive","defaultScaleExport","zoomSpeed","controls","scaleHoriz","flipH","flipV","rotateLeft","rotateRight","activeClass","activePalletItemClass","groups","tools","tutorialIsRunning","highlight","points","lines","demoShow","rotateAngle","SNAP_OFFSET","activeFontRegular","activeFontBold","crownMoldingParams","distance","glbViewer","useGoogleModelViewer","useStagingDomain","shouldUseCabinetDoorsSQFT","hardCodeIsRenuit","addEventListener","mouseDown","mouseDownPosition","allowDragEdge","allowDragBumpoutEdge","allowDragMiteredEdge","lineHighlight","loading","objIds","pos","nodes","appBody","designDefault","setCanvas","isInitialized","isEdgeFeatureError","dataHasBeenImported","isLastParent","miteredController","underlaymentController","resultImages","textBoxManager","onMouseDown","mousePos","lineInputFocused","stealCursor","setCursor","onMouseUp","updateShapesIntersections","updateShapesSnappedGroups","onMouseMove","terminate","xDiff","yDiff","setPos","moveWorkspace","resetCursor","getObjIds","setObjIds","who","setAllowEdges","allow","getAllowEdges","setAllowBumpoutEdges","getAllowBumpoutEdges","setAllowMiteredEdges","getAllowMiteredEdges","setAllowLineHighlight","getAllowLineHighlight","getCenter","setCenter","canvasWidth","canvasHeight","innerHeight","getVisibleCenter","getAllShapePoints","allShapePoints","shapeCenter","getPointField","getShapesCenterPoint","getCenterPoint","getCanvas","get$Canvas","getOffset","setPosition","newPos","getPosition","getScale","isEmpty","getShapes","getHoverShape","isHovering","getHoveredSqftShape","getMovingShape","getHoverBumpout","getLines","isWithBumpout","bumpoutOverlay","isHoveringRect","getLineWithMovingBumpout","isBumpoutPointMoving","getHoverPoint","point","getHoverMiteredPoint","isWithMitered","getHoveredLine","getHoverSegment","hoveredLine","getHoveredLines","skipShapeIds","iterateShapes","shp","hoveredLines","getHoverSegmentV2","getHoveredLineCorner","getHoverSegmentOutlineCorner","getShapesWithoutAttachedResources","isWithoutHidden","isHidden","attachedToLineResources","sqftResourceState","concat","getShapeIds","getShapesByIds","ids","getShapesBySlabModeCoreParentId","slabModeCoreParentId","clearWorkspace","removeAllShapes","removeAllTextBoxes","removeAllSlabImages","removeAllSlabBacksplashes","deleteAllResources","deleteAllMiteredSections","deleteShapeOffset","import","importData","clearAllMenusEvents","edgeFeatures","countertops","_images","_attachedResources","importShape","image","importSlabBacksplashes","slabAdditionalShapesList","attachedResource","getLinesAndLineCorners","line","attachedToId","isDisabledInPopup","attachResource","isLine","featureId","qtCatName","attachedTo","importImage","setImportedTextBoxes","textBoxes","importSlabImages","slabImages","sqftMenuState","isShapeFeatureMissing","showChangeShapeColorsMessage","importControllersData","controllers","rememberShapes","updateCalculations","updateSQFTCalculations","imageData","generateImage","importedMovableImage","addImage","subtype","priority","Image","imageProperty","shapeData","shapeIdsWithMissingFeature","setSQFTPopup","content","isOpened","confirmCallback","removeShapeWithIds","setShapeIdsWithMissingFeature","setShouldShowChangeShapeFeatureMissingMessage","closeSQFTPopup","confirmText","cancelCallback","cancelText","getPointProperty","arcLengths","from","getQtCatName","getSink","sinks","getAttachedTo","img","getImage","sinkId","dataset","bExists","qty","getBumpouts","flatMap","getBumpoutTotalArea","millimeters","inches","featureObjectDTO","addBumpoutArea","allLines","getLineCorners","allLineCorners","getLineById","getLineCornerById","undefined","lineCorner","getLineOrCornerLineById","lineSegment","getMiteredSections","sqftMiteredState","miteredSections","getShapeType","addedEdges","edgeName","isImageShapeType","isLabelShapeType","backsplashLength","realLength","lineLength","storedShapes","SHAPE_PART_IDS_VISIBLE_ONLY_IN_THE_SLAB_MODE","historyProps","getBacksplashArea","getBacksplashHeight","getBacksplashLength","getEdgeLength","getEdgeFeatures","edgeFeature","getLineLength","getLineLengthMm","getEdgeArea","parentId","segments","pieces","getTotalInches","getTotalMillimeters","getFeatureGroup","featureGroupName","mmToM","hoverShape","subType","historyCallBack","historyPosition","objId","hide","params","canSnap","isResizable","vc","newImage","onInit","onShapeReady","attachedToShape","init","attachedShape","attachedToParentId","unshift","getAttachedToLineResource","getImagesAttachedTo","addShape","shapeType","fromLayout","shapeParams","realPartId","checkShapeForAvailablePartId","mm","getMinMax","shapeId","newShape","openedMobileButton","setQtCatName","onHover","onShapeHover","hasClass","addClass","removeClass","tutorialShape","setFeatureId","getShapeFeatureId","setOriginalPointsCoords","getPointsCoords","removeTutorialShape","removeShape","shapeIds","removeShapeById","removeSlabImage","movableImage","croppedSlabImages","deleteCroppedSlabImage","deregisterEvents","getShapeById","combinedShapes","shapesCopy","currentShape","overlay","destroy","deleteAttachedItem","to","removeAttachedItem","originalIndex","removeShapePieces","slabAdditionalShapes","removeShapeFromList","updateRemovedFeatures","addResource","removeFeatureBySQFTId","sqftId","deleteAttachedItemById","removeAllBumpouts","removeBumpouts","setSqftCroppedSlabImages","setIntl","$canvas","addEvent","events","MOUSE_MOVE","priorities","WORKSPACE","MOUSE_DOWN","MOUSE_UP","RENDER","render","isSFTCabinetsGroup","initCabinetEvents","renderGrid","workspaceController","start","scaledGrid","lineWidth","clearRect","beginPath","moveTo","lineTo","strokeStyle","stroke","colorOptions","matchesMetaFailed","disableFeature","updateLookCartItem","cabinetParent","topCabinet","allFeaturesReceived","getAdditionalFeaturesOnScroll","loaderDisable","bottomCabinet","bottomHandle","floorParent","floorBody","checkIfLookFeaturesReceived","canBeDisabled","disabled","disabledClick","updateLocalStorage","enableRelatedFeature","notAvailableInVisualizer","relatedFeaturesToEnable","relatedPartId","relatedFeatureGroup","layerPosition","someFeature","getMatchingPositionFeature","checkIfFeatureCanBeAddedToTheCart","shouldUseLixilAvailableQty","enableASInventorySync","isFromAsRoom","enableGInventorySync","bundledFeatures","lixilAvailableQty","trumbleQty","cartItemInStock","getSkuWithoutDot","getProductIdFromSku","featureIsBundle","getPostCartItemsList","forCart","lixilProductId","relatedProductParent","getLookId","getAvailableFeatureContent","availableFeatureContent","subDescription","preset","lookId","getLookIdUrl","withSlash","createShareUrl","getFeatureUrl","withCategory","finalUrl","urlName","urlPartId","getCategoryOnlyUrl","revertFeatureBeforeChange","featureGroups","getLookList","parentObject","featureBeforeChange","sameFeature","filterFeaturesByMetadata","navFeatures","matchFeature","metadataField","navFeature","mType","getDefaultPresetByLook","numLookId","allMatchedPresets","buttonKey","afterSaveUrl","amazonImageUrl","shareImageUrl","shareImage","SHARE_BUTTONS","facebook","metaTag","querySelector","setAttribute","hostname","qfUrl","protocol","splittedHost","topLevelDomain","shareUrlSplitted","encodeURIComponent","pinterest","imageUrl","twitter","getShareWindowReference","open","getShareConfig","getFeatureParent","saveQuoteAndShare","propsShareUrl","saveNeeded","windowReference","isSafari","responseData","saveQuote","submit","showReceipt","setAmazonImageUrl","getCartItemsArrayFromFeature","neededFeature","firstCartItem","itemsToAdd","getSameFeatureWithAnotherMeta","metaName","activeFeatureValue","optionFeatures","metaValue","navItems","designNavigationItems","activeFeatureCollectionName","customFullDisplayName","getCustomFullDisplayName","checkFeature","getSkusDifferences","allowCheckForCollection","optFeature","getFeatureSectionIsHidden","lookFeature","getPropertyToMatchActiveFeature","getFeatureIsActive","parentFeatureGroup","activeNotInVisualizerFeature","removeLookPointFor","sku1","sku2","differences","letter","filterCartItems","withoutNotInStock","withoutZeroQuantity","parentsOnly","sortCartItemsForListPage","hideFeatureSection","showFeaturesOnly","partIdExistInQtCategory","isFeatureEnabled","hardCodelyRemovedClicking","isCoburn","Shower","showerDoorFeatureGroup","showerDoor","getWizardWithFirstStepCurrentPartId","wizardList","wizardItem","openWizardOnClick","firstStepGroups","getCurrentGroups","nodeType","getFeatureGroupFromWizardGroup","home","wizard","lookFeatureSku","category","cartLogin","cartRegister","cartTerms","cartBilling","cartBillingInfo","cartShipping","cartPayment","cartDelivery","cartTwoFAVerify","cartTwoFA","cartConfirm","cartSuccess","shop","shopRoutes","sqft","sqftCabinetsIntro","sqftCabinetsAR","cabinetsAR","sqftCabinetsTutorial","quoting","quoteDesign","newscope","shoppingcart","visualizer","setSQFTMenuOpened","menuOpened","SET_SQFT_MENU_OPENED","setSQFTMenuOpenedLock","menuOpenedLock","SET_SQFT_MENU_LOCK","setSQFTActiveButton","activeButton","SET_SQFT_MENU_ACTIVE_BUTTON","setSQFTActiveSubMenuButton","activeSubMenuButton","SET_SQFT_ACTIVE_SUB_MENU_BUTTON","setSQFTActiveLevel3Button","activeLevel3Button","SET_SQFT_ACTIVE_LEVEL3_BUTTON","setSQFTActiveRoomIndex","activeRoomIndex","SET_SQFT_ACTIVE_ROOM_INDEX","setSQFTActiveRoomType","activeRoomType","SET_SQFT_ACTIVE_ROOM_TYPE","setSQFTActiveRoomId","activeRoomId","SET_SQFT_ACTIVE_ROOM_ID","setSQFTActiveRoom","activeRoom","SET_SQFT_ACTIVE_ROOM","setIsRoomSwitcherVisible","isVisible","SET_SQFT_ROOM_SWITCHER_VISIBLE","setFreeDrawMode","isFreeDrawMode","SET_FREE_DRAW_MODE","setWallsUpMode","isWallsUpMode","SET_WALLS_UP_MODE","setWallsLockMode","isWallsLockMode","SET_WALLS_LOCK_MODE","setSQFTRoomLayouts","roomLayouts","SET_SQFT_ROOM_LAYOUTS","setSQFTContextMenu","SET_SQFT_CONTEXT_MENU","setSQFTContextMenuV2","contextMenuV2","SET_SQFT_CONTEXT_MENU_V2","setSQFTSystemMessage","systemMessage","SET_SQFT_SYSTEM_MESSAGE","setSQFTAr3dPopup","ar3dPopup","SET_SQFT_AR3D_POPUP","setSQFTSystemDeleteMessage","systemDeleteMessage","SET_SQFT_SYSTEM_DELETE_MESSAGE","sqftPopup","SET_SQFT_POPUP","setChangeValuePopups","changeValuePopups","SET_CHANGE_VALUE_POPUPS","addChangeValuePopup","changeValuePopup","ADD_CHANGE_VALUE_POPUP","CHANGE_VALUE_POPUP","deleteChangeValuePopup","DELETE_CHANGE_VALUE_POPUP","setValidationPopups","validationPopups","SET_VALIDATION_POPUPS","addValidationPopup","validationPopup","ADD_VALIDATION_POPUP","VALIDATION_POPUP","deleteValidationPopup","DELETE_VALIDATION_POPUP","SET_CHANGE_SHAPE_FEATURE_MISSING_MESSAGE","SET_SHAPE_IDS_WITH_MISSING_FEATURES","addShapeIdWithMissingFeature","ADD_SHAPE_ID_WITH_MISSING_FEATURES","setSelectedCountertop","selectedCountertop","SET_SELECTED_COUNTERTOP","setSelectedWall","selectedWall","SET_SELECTED_WALL","setAbortController","abortRequestController","SET_ABORT_CONTROLLER","setIsItextEditing","isITextEditing","SET_IS_ITEXT_EDITING","setIsSlabPlaceholderOverlapsWithMultipleShapes","isSlabPlaceholderOverlapsWithMultipleShapes","SET_SLAB_PLACEHOLDER_OVERLAPS_WITH_MULTIPLE_SHAPES","setReCacheMenuCounter","reCacheMenuCounter","SET_RE_CACHE_MENU_COUNTER","dbFeatureInterface","number","shippingCost","fabricatorCost","featureInterface","featureCollectionInterface","isRequired","features","arrayOf","featureGroupInterface","navItemInterface","SET_RELATED_GROUPS","SET_RELATED_GROUPS_SEARCH","TOGGLE_GALLERY_VISIBLE","SET_GALLERY_ACTIVE_IMAGE_INDEX","SET_MATERIALS_PAGE_SUB_STEPS","SET_MATERIALS_PAGE_ACTIVE_SUB_STEP","TOGGLE_NOT_COMPATIBLE_VIEW","TOGGLE_PRODUCT_NOTE_EDITOR_VISIBLE","SET_ROW_ITEMS","SET_MATERIALS_PAGE_CANVAS_CLASS","SET_LANGUAGE","SET_ACTIVE_THEME","SET_NETWORK_CONNECTION","SET_INITIAL_VISUALIZER_TYPE","SET_STATIC_CANVAS_IMAGE","SET_EMPLOYEES_LIST","RESTORE_USER_STATE","SET_ALREADY_REGISTERED_USER","SET_LEAD_CAPTURE_CLICK_COUNT","SET_USER_POPUP_CONTENT","SET_USER_TWO_FA","SET_USER_OPT_IN","SUBMIT_PAYMENT","SUBMIT_PAYMENT_RESPONSE","SHOW_ORDER_COMPLETE_POPUP","TOGGLE_SHOW_MOBILE_QUOTES","TOGGLE_SHOW_ALL_QUOTES_CART_ITEMS_LIST","SET_AGREE_EMAIL_CHECKBOX","SET_CART_FOOTER_ACTIVE_BUTTON_INDEX","SET_CART_ITEM_EDIT_FEATURE","SET_LOOK_REMOVED_CART_ITEMS","SET_AMAZON_IMAGE_URL","SET_CART_ITEMS_ADDED_TO_PARENT_CART","CHANGE_ALL_CART_ITEMS","SET_SURE_TAX","SET_SURE_TAX_LOADING","SET_MANUAL_TAX","SET_MARK_UP_LOGIC","SET_DELIVERY_LIST","SET_ALL_FEATURES_LOADED","SET_ALLOW_ROUTING","SET_ALLOW_MAIN_LOADING","SET_ACTION_AFTER_VISUALIZER_TYPE_CHANGED","SET_VISUALIZER_TYPE_CHANGING","TOGGLE_PRICE_WORKSHEET_OPENED","SET_DISCOUNT_SECTIONS","SET_CUSTOM_ADDED_DISCOUNTS","SET_FINANCE_PERCENTAGE","SET_ALL_FINANCE_OPTIONS_POPUP_VISIBLE","SET_DISCOUNT_FINANCE_CELLS_VISIBLE","SET_AVAILABLE_FILTER_VALUES","UPDATE_FILTERS_COUNT","SET_COUNTERTOP_FILTERS_RECEIVED","TOGGLE_DESKTOP_NAVIGATION","SET_ACTIVE_NAVIGATION_NAMES","SCHEDULER_SCHEDULE","SET_MODULE_CONTEXT_MENU_TYPE","SET_MODULE_CONTEXT_MENU_MODULE","SET_MODULE_CONTEXT_MENU_MODULE_PART","SET_MODULE_CONTEXT_MENU_DIRECTION","SET_NAVIGATION_VIEW_TYPE","SET_CABINETS_APPLY_TO","SET_CABINETS_APPLY_TO_BATHROOM","SET_COUNTERTOPS_APPLY_TO","SET_COUNTERTOPS_APPLY_TO_BATHROOM","SET_APPLY_TO_COMMON","SET_EDGES_APPLY_TO","SET_NAVIGATION_LOADING","UPDATE_DISABLE_FEATURE_GROUP_RADIO","TOGGLE_NAV_ITEM_POSITION_MODAL","SET_USE_FEATURES_LIGHT_REQUEST","SET_ACTIVE_NAVIGATION_FILTER","SET_ACTIVE_NAVIGATION_FILTER_STEP_INDEX","SET_CABINET_NAVIGATION_FILTER_COMPLETED","SET_COUNTERTOP_NAVIGATION_FILTER_COMPLETED","SET_COUNTERTOP_WIZARD","SET_WIZARD_CONFIG","SET_WIZARD_IS_ACTIVE","SET_WIZARD_ACTIVE_FILTER_GROUP_INDEX","SET_WIZARD_LIST","SET_WIZARD_ACTIVE_ITEM","SET_WIZARD_SHOW_FEATURE_SECTION","SET_WIZARD_ACTIVE_STEP","SET_WIZARD_SELECTED_VALUES","SET_ALL_WIZARD_SELECTED_VALUES","SET_WIZARD_CONFLICT_POPUP_OPENED","SET_WIZARD_CONFLICT_STEPS","RESTORE_ALL_WIZARD_SELECTED_VALUES","SET_WIZARD_MISSING_FEATURES","SET_WIZARD_SQFT_CART_ITEMS","SET_WIZARD_ALLOW_SKIP_DONE_STEPS","ENABLE_SQUARE_FOOTAGE","SET_SQUARE_FOOTAGE_GROUP","SET_SQFT_VIEW_MODE","LOAD_SQFT","UPDATE_SQFT","UPDATE_SQFT_CALCULATIONS","SET_SQFT_SQUARE_FEET","TOGGLE_CHANGE_LAYOUT_POPUP","SET_NEW_LAYOUT_ON_SQFT","SET_SQFT_MEASURE_UNIT","CHANGE_SQFT_FEATURES_POPUP","SQT_SQFT_FROM_FEATURE","SET_CABINETS_GLB","SET_CABINETS_AR_BLOB_URL","SET_API_ERROR_MESSAGE","SHOW_SLAB_TOOL","SET_SLAB_TOOL_VISITED","ADD_ROOM_WITH_VISITED_SLAB_TOOL","SET_ACTIVE_SLAB_ID","SET_ACTIVE_SLAB_URL","SET_SQFT_SLAB_ACTIVE_STEP","SET_SQFT_SLAB_SEARCH_TEXT","SET_SQFT_SLAB_ASPECT_RATIO","SET_SQFT_SLAB_IMAGE_WIDTH","SET_SQFT_SLAB_IMAGE_HEIGHT","SET_SQFT_SLAB_CROPPER_DATA","SET_SQFT_CROPPED_SLAB_IMAGES","ADD_SQFT_CROPPED_SLAB_IMAGE","DELETE_CROPPED_SLAB_IMAGE","SET_PRICE_PER_AREA","SET_SLAB_IMAGE_TYPE","SET_IS_MEASUREMENT_VISIBLE_IN_SLAB_MODE","SET_IS_SIZE_VALIDATION_FAILED","SET_IS_SLAB_PRICING_ENABLED","SET_MITERED_SECTIONS","ADD_MITERED_SECTION","CHANGE_MITERED_SECTION","DELETE_MITERED_SECTION","DELETE_ALL_MITERED_SECTIONS","SET_RESOURCES","ADD_RESOURCE","CHANGE_RESOURCE","DELETE_RESOURCE","DELETE_RESOURCE_ATTACHED_TO","DELETE_ALL_RESOURCES","SET_SELECTED_FEATURE","SET_SELECTED_PART_IDS","SET_SELECTED_HANDLE","TOGGLE_SHOW_MANUAL_CALCULATION","SET_SWITCHER_POSITION","ADD_MANUAL_CALCULATION_ROW","UPDATE_MANUAL_CALCULATION_ROW","UPDATE_MANUAL_CALCULATION_ROWS","DELETE_MANUAL_CALCULATION_ROW","SET_SQFT_TUTORIAL_STEP","SET_SQFT_TUTORIAL_SWITCHING","SHOW_CONTRACT_SIGNING","SET_AFTER_CONTRACT_SIGN_CALLBACK","SHOW_MATERIALS_TUTORIAL","SET_MATERIALS_TUTORIAL_STEP","SET_MATERIALS_TUTORIAL_FINISHED","SHOW_MATERIALS_AGENT_TUTORIAL","SET_MATERIALS_AGENT_TUTORIAL_FINISHED","SHOW_VISUALIZER_TUTORIAL","SET_VISUALIZER_TUTORIAL_STEP","SET_VISUALIZER_TUTORIAL_FINISHED","CONTRACT_SIGNING_SET_STEP","CONTRACT_SIGNING_POST_SIGNATURE","CONTRACT_SIGNING_JOB_DOCUMENT","CONTRACT_SIGNING_SHOW_SIGNATURE_PAD","CONTRACT_SIGNING_SET_CONTRACTS_VALUES","SET_CONTRACT_BLOB","CONTRACT_SIGNING_RESTORE_VALUES","CONTRACT_SIGNING_SET_CONTRACTS_LIST","SET_FABRICATOR_SUBSCRIPTIONS","SET_INITIAL_FLOW_FINISHED","SET_INITIAL_FLOW_ADDITIONAL_ROOMS","SET_INITIAL_FLOW_BUTTON","SET_INITIAL_FLOW_ROOM","SET_INITIAL_FLOW_VISUALIZER_NOT_AVAILABLE","SET_INITIAL_FLOW_ROOM_LAYOUT","SET_INITIAL_FLOW_STEP","SET_SHOW_UNLOCK_CALCULATIONS","SET_UNLOCK_CALCULATIONS_STEP","SHOW_UNLOCK_CALCULATIONS_CART_ITEM","SHOW_UNLOCK_CALCULATIONS_TOTAL_ITEM","SHOW_UNLOCK_CALCULATIONS_TUTORIAL","SET_UNLOCK_CALCULATIONS_TUTORIAL_STEP","SET_UNLOCK_CALCULATIONS_TUTORIAL_FINISHED","ADD_NEW_QUOTE","SET_QUOTES","UPDATE_QUOTE","SET_ACTIVE_QUOTE_INDEX","TOGGLE_SHOW_ADVANCED_QUOTING","SET_ADVANCED_QUOTING_SEARCH_ITEM","TOGGLE_SHOW_ASSIGN_QUOTE_POPUP","SET_ASSIGN_QUOTE_POPUP_SEARCH_TEXT","SET_ASSIGN_QUOTE_POPUP_EMPLOYEE","SET_ASSIGN_QUOTE_POPUP_CUSTOMER","SET_ASSIGN_QUOTE_POPUP_SUCCESS_TEXT","SET_ASSIGN_QUOTE_CLONE_MODE","SET_ASSIGN_QUOTE_OFFLINE_DATA","SET_RECEIPT_URL","SET_RECEIPT_SIGNATURE","SET_RECEIPT_REFERRAL","SET_LOOK_EXPANDED","SET_LOOK_PARENT_KEY","SET_LOOK_LAYOUT_OPENED","SET_IFRAME_INTEGRATION_REQUEST","SET_IFRAME_INTEGRATION_RESPONSE","SET_GROHE_FILTERS_OPENED","SET_GROHE_SIMILAR_FEATURE","SET_GROHE_SIMILAR_PRODUCTS_OPENED","SET_GROHE_REQUIRED_BUT_NOT_INCLUDED_FEATURE","SET_GROHE_FILTERS_SEARCH_TEXT","SET_GROHE_LAST_OPENED_CATEGORY","SET_GROHE_SUB_CATEGORY_OPENED","SET_GROHE_SHOW_ADDED_TO_THE_CART_SUCCESS","SET_GROHE_ACTIVE_FEATURE_QUANTITY","SET_GROHE_SHARE_BUTTONS_OPENED","SET_GROHE_SAME_COLOR_ACTIVE_FEATURE","SET_GROHE_SAME_COLOR_SECTION_OPENED","SET_GROHE_SAME_COLOR_CHECKBOX_APPLIED","SET_GROHE_EXISTING_TEMP_ID","SET_GROHE_WIZARD_NAME","SET_GROHE_WIZARD_OPENED","SET_GROHE_WIZARD_STEP","SET_PAYMENT_INFO","SET_CARD_INFO","SET_CARD_ERRORS","SET_SHIPPING_ERRORS","SET_SHIPPING_INFO","SET_BILLING_INFO","RESTORE_PAYMENT_INFO","SET_SHOP_PAGE_LOADED","SET_SHOP_PAGE_OPENED","SET_SHOP_LAST_PAGE_VISITED","SET_SHOP_PAGE_LEAVED","SET_ADMIN_LOGOUT_VISIBLE","SET_ADMIN_LOGIN_POPUP_VISIBLE","SET_ADMIN_TOOL_SETTINGS_POPUP_VISIBLE","THUMBNAIL_SIZES","small","medium","large","imageThumbnail","features_root","getUrlSQFTHashParam","res","item","isEdge","getParamFromUrl","fabricatorId","getFontsize","getPointDistance","getFontsizeSmall","rotatePoint","PI","cos","sin","pointDistance","sqrt","pow","round10","getMidPoint","getClosestPoint","get45CornerLegDistanceByHypotenuse","hypotenuseDistance","point1","point2","getPointBetweenPoints","getSectionPartPoint","getParralelPoint","pointA","pointB","distanceFromLine","midPoint","getParallelPoints","vector","len","ud","parallelPoint1","parallelPoint2","getDistanceFromPointToLine","x1","y1","x2","y2","C","D","len_sq","xx","yy","dx","dy","getDistanceFromPointToInfiniteLine","abs","distanceFromPointA","decimals","Xa","Ya","Xb","Yb","k","Xc","Yc","posX","posY","offset","getMousePositionOnField","getPointOnWorkspace","mouseX","mouseY","wPos","getMousePositionOnShape","pointPosOnShape","getPointPositionOnShape","pointPosX","pointPosY","findClosestPointPairs","pointsA","pointsB","closestPoint","minDistance","MAX_VALUE","orientation","VERTICAL","HORIZONTAL","NORTHWEST","SOUTHEAST","NORTHEAST","SOUTHWEST","regex","RegExp","results","exec","mmToInches","numToLetter","num","mod","out","String","fromCharCode","letterToNum","charCodeAt","calculateHypotenuse","cmToInches","cm","inchesToM","cmToMm","inchesToMm","totalInches","shouldCeil","shouldRound","inchesToLNFT","sqftToM2","sqInchesToMM2","sqInchesToM2","sqftToMM2","lnftToMM","measureDistanceToInches","getTransformedMeasureUnit","numerator","denominator","common","total_segments","segmentDistance","fraction","rounded","floor","feet","reduced","decimal","gcd","getSnappedPos","distanceToInches","dist","fraction_text","distanceToMillimeters","lineBumpoutTotalHeight","lineCornerWidth","getLength","getLineBumpoutTotalHeight","get45CornerLegDistance","prevLine","getPrevLine","totalArea","isWaterfallFeature","isMiterEdge","miterEdgeHeight","getMiterEdgeHeight","backsplashValue","backsplashArea","getGCD","truncate","setStylesOnElement","element","styles","getMinInArray","attrib","prev","curr","getMaxInArray","getIntersectCords","getAspectRatio","heightGCD","aspectHeight","aspectWidth","getIntersectCordsBetweenLines","point3","point4","isRounded","shouldExtend","getIntersectCordsWithExtendedSegments","x3","y3","x4","y4","ua","ub","A1","B1","C1","A2","B2","C2","det","getPointOnTheLine","isPointInsideShape","includeBorder","inside","shapeLines","iPosition","jPosition","xi","yi","xj","yj","isPointOnLine","pt","linePt1","linePt2","dxc","dyc","dxl","dyl","getAreaByShoelaceFormula","addDecimalToLength","getAngleBetweenTwoPoints","atan2","getAngleRelativeToTheHorizontalAxis","getTanDeg","deg","rad","tan","getClosestHigherNumber","needle","isDisabledInPopupWithParents","isInnerCorner","minLineLength","shapePoints","getPointFieldArray","closePoint1","closePoint2","isPointInsidePolygon","parseImperialFractionToDecimal","input","wholePart","fractionPart","decimalValue","s3Path","s3BindingName","isCropped","bvr_root","KIOSK_BVR_Root","S3_BVR_Root","bv5_root","KIOSK_BV5_Root","S3_BV5_Root","kv4_root","KIOSK_KV_Root","S3_KV4_Root","kv5_root","KIOSK_KV5_Root","S3_KV5_Root","bv6_root","s3Root","layersSize","s3FilterImagePath","S3_FILTERS_Root","KIOSK_FEATURES_Root","className","instance","constructor","ignoreDefault","stopPropagation","preventDefault","iStartWith","hayStack","startsWith","iIncludes","getNonce","possible","random","iCmp","s1","s2","needToUppercase","featureName","matches","RgFeatureName","styleBkgImage","backgroundImage","getMetadataByDimensions","dimensions","NN","cb","getMousePos","evt","rect","getBoundingClientRect","getFilterGroupValues","getFilterGroupValue","featureFilterValueId","val","getFilterGroupValueByName","getAllFeatureFilters","featureHasSelectedFilters","featureFilterValueIds","filterObject","filterGroupId","unitedFilterValueIds","newFiltersArray","existingFilterGroup","filterGroupObject","existingFeatureFilter","filVal","scrollToDivInArea","divOffset","animate","scrollLeft","getTranslateX","myElement","getComputedStyle","WebKitCSSMatrix","webkitTransform","m41","reorder","indexA","indexB","tmp","requestAnimFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","isTouchDevice","prefixes","DocumentTouch","matchMedia","mq","makeLayerPolygon","layer","fakeCanvas","context2D","getContext","globalAlpha","drawImage","imgData","getImageData","pnpoly","base64ToBlob","downloadCanvasImageById","canvasId","blob","getElementById","toDataURL","createObjectURL","download","click","revokeObjectURL","imageServer","LAYERS_SIZES","normal","full_hd","full_hd_large","isFeatureHasFilterValue","testFabFilter","filterGroup_id","filterValueId","testFilter","mergeFilterObjects","base64","mime","byteChars","atob","byteArrays","byteNumbers","byteArray","Uint8Array","Blob","toBoolean","visualizerOnly","convertImgToBase64URL","outputFormat","crossOrigin","onerror","onload","dataURL","regexForWizardId","wizardIsDisabled","getCurrentWizardList","isSameVisualizerWizard","disabledScenes","showWizardInsteadOfQT","getActiveWizardItem","stringId","wizItem","isCenterIslandGroup","getFeatureGroupByGroupName","getDefaultMaterialsWizardItem","categoryIsInTheWizard","firstOnly","lookWhere","getCurrentGroupsFromSource","wizardGroups","wizGroup","getMaterialsWizardItem","getUrlFromString","currentVisType","lastSelectedWizardInThisQuote","isLastActiveWizard","foundWizItem","wizardItemId","cachedSiblingFeatures","siblingGroups","wizardEdges","wizEdge","siblingGroup","WIZARD_GROUP_TYPES","useIncluded","featuresIncluded","alreadyCached","cacheObject","wizardId","wGroup","wGroupIndex","totalFeatures","included","exclObj","featureDefinitionId","mergedGroups","featuresExcluded","excluded","exclFeature","getCorrectedWizardGroupId","stepSelectedValue","wizG","realWizardGroup","navItemIsExcluded","prevStepGroups","additionalWizardValuesToCheck","stepStr","toCheckValue","selectedPrevStep","selectedWizardGroupIsNotInCurrentStepAnymore","foundPreviouslySelectedGroup","wg","suggestedStepGroups","wizardGroupWithSelectedFeature","returnAllSteps","maxWizardSteps","stepsArray","currentGroups","findParentWizardFeatureGroup","getWizardStepCommonCoords","commonCoords","currentCoords","getFeatureCoords","getCommonCoords","compareCoords","wizardFeatureParentGroup","currentTry","recursiveFindParent","checkWizardGroup","sourceEdge","nextToCheckWizardGroup","findFeatureBySelectedFilters","skuColor","sameColor","getFilterValueThumbnailAndStyles","currentFilterValue","additionalImages","thumbnail","icon","isColor","backgroundSize","backgroundRepeat","backgroundPosition","backgroundColor","featureDefinitionID","includedFeature","getLowerCasedSharedFeatureName","dontMatchFeaturesBySku","filterWizardNavItems","getCurrentWizardNavItems","searchText","shopPageOpened","showPrevStepsColorFirst","selectedStepsReversed","reverse","selectedStep","selectedFilter","parentWizardGroup","returnAllFeatures","faucetParent","matchesMetaForArrayOfConditions","getArrayOfConditions","selectedFaucetConditions","getActiveFeatureConditions","filteredNavItems","condition","matchesMetaForCondition","propName","propValue","allSelectedColors","colorName","getColorName","currentColorOption","optionMatchForPrevSelectedColor","selectedColor","option","getExistingWizardForGroups","partIdGroups","getFilteredLayersForActiveWizard","layers","hideItems","disableNotSelectedFeatureGroups","getCompressedAllWizardValues","newWizObject","wizValues","getCompressedFeature","getWizardStepIsDisabled","prevWizardGroup","notRequired","getWizardProductGroupName","productCartTitle","shouldUseNewWizardFeaturesRequestsLogic","counts","getMissingWizardFeatures","currentNavItems","requestInProgress","wizardMissingFeatures","missingSkus","setWizardMissingFeatures","slicedArray","stillMissingArray","getBvFeatures","missingSkusResponse","loadNewFeatures","useHideItemsDisabledfeatureGroups","visualizersLoadedLength","useEffect","getNextWizardStepQuantity","wizardSqftCartItems","addedCartItems","getFeatureGroupFeaturesQuantity","displayMaterialsWizardGroupAsFeature","custom","getWizardGroupFromCurrentSteps","wizardValues","neededWizardGroupId","neededStep","neededWizardGroup","step","mergedGroup","IntermediatePart","isChild","getNavItemsWithOptions","newFeatures","allFeatures","matchingFeatureProperty","useMatchingFeatureReplacement","neededColorName","getColorFilterValue","otherOptions","getOptionsFromNavItemsForFeature","currentFeatureColor","getMatchingOptionsName","matchByCollection","_collectionName","matchForSimilarSku","lixilProductSubCategory","colorValue","mainFeature","allOptions","mainOption","setLayerPositions","conditions","defaultLayerLayoutPositions","matchingPositionFeature","name1","arrayOfConditions","cond","roomLayoutMeta","roomSceneMeta","getCurrentLayoutAbbreviation","skuNamesPartIds","whereToFind","getCurrentLayoutName","featuresPartsList","featuresParts","withSkuNameConditions","getCountertopGroupsSplittedFeatureName","_countertopGroupsCustomDisplayName","wasUpdatedFromAnotherResponse","manufacturerFilter","_customMatchingOptionsName","getSplittedSku","_splittedSku","getMatchingFeatureName","_customFullDisplayName","getModuleFeatureName","defaultDisabled","partNumber","load_","setParent","featureList","galleryImages","featured","galImage","featuredImage","roomLayout","layoutName","roomLayoutAbbreviation","loadFeatureCommon","filteredAvailableFeatures","getFeaturesBySearchText","getFilteredFeaturesByFilters","featuresToDisplay","navigationSubItemsWithFilterMultipleConditions","returnUniqueNavFeatures","restOptions","getFeaturesForNavigationFrom","HANDLES_GROUP_BATHROOM","allConditions","mountTypeCondition","oneLayerPosition","navigationItemsWithOptions","collectionName","matchingOptionsName","conditionPassed","skuDiff","featureObject","filterNavigationItems","activePosition","featuresToCheck","conditionObject","setNotInVisFeature","setFeatureGroupDefault","hideLayerCondition","hasAdditionalParts","checkIfFeaturePartIsMatching","_setLayers","setDefault","hideLayers","navFeatureCLick","firstClick","activeLockedFeature","featureClick","placeholderChanged","featureClicked","activeFeatureParts","activeFeaturePart","placeholderFeature","zIndexes","getZIndex","increase","zIndex","additionalPartPartId","abbr","spaceWithLayoutName","edgeFilterGroup","filterGroupValue","activeFilters","activeFeatureConditions","getAdditionalPartsConditions","setActiveFeatureParts","getActiveFeaturePartsAccordingToActiveFeature","shower","currentActiveFeature","layoutAbbr","currentShowerBodyId","getCurrentShowerBodyId","wallConfiguration","previouslySelectedFeatures","showerBodyId","wallConfigurationFeature","filteredFeatures","hardCodedDefaultName","placeholderDefaultName","hardCodedDefault","placeholderDefault","clickedFeature","conflictingPositions","accParent","checkConflictingPosition","showerTubComboIsActive","showerBody","getFeatureOptions","fromNavItemOptions","colorFilterGroup","activeFeatureValues","forSpecificLayout","forSpecificScene","alreadyAddedOptionIndex","getMatchingColorFeature","notMatchingFeature","colorFilterValue","currentCollectionName","currentFeatureName","featureFoundItems","displayText","setLayerPosition","getSameColorFeatures","sameColorOnly","sameColorFeatures","differentColorFeatures","doNotShowStylePopupFor","isAsBathroom","activeFilterGroupValue","sameFeatureAsActive","bathroomShowerPanExclude","getDisplaySameColorGroups","fromArray","activeCollectionFilterGroupValue","displayFeatures","otherGroup","colName","currentColGroup","sameColorObject","addedFeature","currentCollectionValue","getSimilarItemsList","matchingFeatures","sameColorItems","sameCollectionFeature","updateMirrorAndWallsCrop","vanityParent","mirror","setLayers","wallsParent","wallFeatureGroup","updateVanitySides","oldActiveFeature","currentSideMeta","nextSideMeta","vanity_type","nextVanityIsDouble","isDoubleVanity","isCountertopOrBacksplash","forceClick","updateVanityPositions","handleClick","asBathroom","getActiveFeaturesAsObject","checkIfFeatureDisabled","featureParent","checkDisabledOnly","isDisabled","withLayerPositions","withDisabled","showAllGroups","showAllQtCategories","displayInMenu","defaultSubParts","featureGroupsObjects","getActiveFeatures","visType","sortByParents","parentKey","disallowedSkus","getLookListHeight","lmFeatureParent","opened","featuresLength","listHeight","styleNotificationIsVisible","getStyleAlertIsVisibleForGroup","isVisibleForNavigation","getCropCoordsCenter","createCartList","loadByTheDefault","existingCartItem","loadByTheDefaultCItem","foundFeature","getFeatureById","auto","relatedItemQuantity","alreadyAddedRelatedFeature","getLayerCenter","coords","canvasElement","clientWidth","clientHeight","COORDS_MAX","centerXPercentage","min_x","max_x","centerYPercentage","min_y","max_y","zoomPercentage","openedMenuWidth","featureMinX","featureMaxX","featureCenter","gPointPercent","shiftX","GROHE_CONFIG","sidebarWidth","mobile","featureX","getCoordsCenter","parsedCoords","getFeatureCropCoors","getStyleAlertNotMatchingFeatures","fromStyleAlertIcon","notMatchingFeatures","confirmedChange","wallsPartIds","wallPartId","wallGroup","alertIsVisible","names","getAllNotMatchingPartIds","zoomCanvasOut","imageCanvas","current","pinchZoom","zoomToCenter","getRoomLayouts","returnAllLayouts","newLooks","layoutNames","parents","roomScene","lookLayout","lookScene","currentName","getParsedLookUrl","checkURL","regexForRoomPreset","lookIdFromUrl","featureGroupFromUrl","skuFromUrl","splittedLookPath","coordProp","isWizard","zoomFeatureGroup","Coords","toggleArrayValue","newArray","checkForContextMenuCommon","returnObject","allButtons","showButtons","isBathroom","whereToCheck","contextMenuArray","checkPartId","disabledClickablePartIds","withQuotingToolFeatures","hasNavItemsLength","activeVanityType","isVanity","isShower","isCenterIsland","existingWizardItem","button","testBtn","hasSubMenu","sinkIndex","sinkParent","isPedestal","backsplashIndex","backsplashParent","vanityButtonIndex","vanityWizardButton","isAmericanStandard","showerWizardButton","isLixil","counteropWizardButton","accPartId","accFg","hideContext","getOptionStyles","sqftEventManager","renderEvents","renderEventsSlab","OVERALL","SLAB_RIGHT_PART_CONTENT","SLAB_RIGHT_PART_WORKSPACE","BOX_POINT","BOX","OVERLAY","IMAGE_LINE","IMAGE","POINT","SEGMENT_MEASUREMENTS","SEGMENT","SHAPE_LABEL","SHAPE_UPPER","SHAPE","SHAPE_SLAB_PLACEHOLDER","WALL","SLAB_IMAGE","SLAB_LEFT_PART","MOUSE_WHEEL","WHEEL","ON_MOUSE_WHEEL","RESIZE","TOUCH_START","TOUCH_END","TOUCH_MOVE","TOUCH_CANCEL","MOUSE_LEAVE","CLICK","DBLCLICK","CONTEXTMENU","KEYDOWN","DRAG_OVER","DROP","keyCode","ENTER","NumpadEnter","activeEvents","canvasOffset","processing","eventQueue","G_events","userIdleStartTimer","userIdleWarning","userIdleTimeOut","userIdleStopTimer","userIdleGoHome","userIdleGoHomeCountdown","hammer","hammerMC","LastKnownMousePos","zoomLock","resizeHandler","keydownHandler","getCtx","eventSort","pageX","pageY","getTouchPos","touch","mousepos","mousemove","event","sender","mouseup","mousedown","onMouseLeave","mouseleave","onKeyDown","code","onDblClick","onWheel","wheel","onResize","updateOffset","onContextmenu","contextmenu","onDrop","dragEvents","onDragOver","dragOverEvents","onTouchCancel","onRender","triangles","trigger","response","pinchToZoom","additionalEvent","isWithEventManager","Hammer","Manager","Pinch","enable","on","handled","processEventQueue","isComposing","touchPos","passive","clearAll","removeEventListener","override","revertBackAfterMouseUp","releaseStealLock","owner","cursor","noStealing","setCursorImage","cursorImage","getCursor","removeEvent","removeStuckCursorEvents","mouseupEvents","mouseupEvent","enableSquareFootage","setSquareFootageGroup","SQFTGroup","setSQFTGroup","setSQFTViewMode","SQFTViewMode","loadSQFT","sqftLoaded","updateSQFT","sqftUpdateType","setSquareFeet","squareFeet","toggleChangeLayoutPopup","changeLayoutPopupOpened","layoutToApply","applyLayoutOnSqft","sendLayoutChangeOnSqft","setSqftMeasureUnit","changeSqftFeaturesPopup","sqftFeaturesPopup","setSqftFromFeature","sqftFromFeature","setSqftCabinetsGlb","cabinetsGlb","setCabinetsARBlobUrl","cabinetsARBlobUrl","setAPIErrorMessage","apiErrorMessage","showLoading","hideLoading","connect","visualizersLoaded","loaderState","props","iframe","useLocation","color","COLORS","white","active","Small","SmallWithPopout","SmallWithPeninsula","SmallWithIsland","SmallWithPopoutWithPeninsula","SmallWithPopoutWithIsland","SmallWithPeninsulaWithIsland","SmallWithPopoutWithPeninsulaWithIsland","LShape","LShapeWithPeninsula","LShapeWithIsland","LShapeWithPeninsulaWithIsland","PLACEMENTS","Island","Countertop","MODULE_CONTEXT_MENU_TYPES","Filters","SliceButtons","MODULE_CONTEXT_MENU_DIRECTIONS","Vertical","Horizontal","CABINET_WIZARD_BUTTONS","buttonId","filtersGroupName","COUNTERTOP_WIZARD_BUTTONS","pluralText","wizardAllButton","parent_id","BACKSPLASH_TYPES","COUNTERTOP_GROUP","CABINET_GROUP","EDGE_GROUP","SaveIcon","viewBox","strokeWidth","fill","fillRule","transform","ProductsIconAnimated","version","xmlns","TimingIconAnimated","EditIcon","EyeBallIcon","cx","cy","rx","ry","ScreenshotIcon","PlusIcon","LookLayoutIcon","data-name","LookExitIcon","LookCoBrowseIcon","LookShareIcons","LookExpandIcon","LookMinimizeIcon","LookCartIcon","LookRoomIdeasIcon","Look3DIcon","LookAugmentRealityIcon","LookIconHover","strokeDasharray","LookIconNavigate","LookIntroIcon","groheIcon","AmericanStandardIcon","GroheListIcon","GroheFilterIcon","GroheGridIcon","GroheArchitectureIcon","GroheLockIcon","GroheLockIconSmall","GroheNoteAddIcon","GroheBoxIcon","GroheVehicleIcon","opacity","GroheDownloadIcon","GroheSQFTIcon","GroheInkPenIcon","red","gray","gray2","gray3","gray4","light","GROHE_FILTER_COLORS","primary","primary_hover","active_hover","assetsPath","RgCabinetSize","vanitySize","fromName","lastDigit","binding","arrayOfBindings","Large","tryToSetTheSameFeature","setFeatureLayer","shadowFeature","layoutAbr","s3Binding","entityID","fromS3Binding","placeholderName","shadowNeeded","activeName","includesCI","setShadowFeature","parentGroup","shadows","compatibleFeatures","shadow","shadowName","featuresArray","activeFilterValueIDs","filter1","filter2","actionTypes","getSaveQuoteFastData","forTempSave","printState","contractSigningState","needToRevertBackCostPrices","updateCurrentQuote","updatedQuotes","grandTotal","records","quoteObject","record","bvImage","staticCanvasImage","recordData","contractSigningValues","pagesCustomFieldsValue","contractsValues","savedInvoiceNumberOfPages","needToUpdateContract","receiptSignature","priceWorkSheetLogic","getPriceWorkSheetSaveValues","JSON","stringify","sqFtCalcImage","sqFtCalcData","canvasImage","sFtCalcDataJson","quoteId","recordCartItems","getCompressedCartItem","discounts","selected","oldDeleted","differentCurrencyObjects","anotherCurrencies","currObject","currentTotal","totalWithTaxes","customDeposit","getDepositAmount","materialCost","installationCost","balance","fromBV","notes","employeeId","installations","services","service","subId","saveQuoteFast","postMessageIsExecuting","savedFastData","yesNoConsultationRequest","quoteRequestType","fromCheckOutPage","assignQuotePopupCustomer","assignQuotePopupEmployee","showContractSignOnError","formData","FormData","sendConsumerEmail","agreeEmailCheckbox","customerEmail","salesPerson","fullName","salesPersonFullName","salesPersonEmail","leadOriginatorId","rawVal","postalCode","isNewUser","fromTool","installationTaxesRate","materialTaxesRate","fromDashboard","callFabricator","callFabricatorOnSave","language","fileContent","dataUri","append","employeeSelected","employeesListReceived","employeesList","getEmployees","emp","receipt","receiptCost","getCurrentReceipt","pdfReceipt","toBlob","pdfReceipt2","parse","showContractSignPopup","contractsList","showLeadCaptureShoppingCart","showDepositPopup","receiptUrl","signedDocumentUrl","receiptPrinted","setReceiptUrl","retryFunction","renderErrorPopup","Error","skipRequestsFor","loadFiltersOnly","getFilterGroups","getBathroomVisualizerData","featuresCount","loadVisualizerOnly","forVisualizer","featuresToReceive","errorMessage","defaults","updatePresetsArray","wizardData","wizardDataV2","getParsedWizardList","setWizardList","setAllFeaturesLoaded","getBvPresets","getDisplayRoom","getJobIdPreset","editToken","getBVJobData","updateFeaturesWithMarkUp","featuresResponse","useMarkUpFeaturesRequests","getMarkUpForFeatures","markUpResponse","setResponseFeaturesMarkUp","arrayOfSkus","requestSharedFeatureNames","getBathroomVisualizerFeatures","getBvGroups","getBathroomVisualizerGroups","getBvGroupFeatures","pageSize","axiosController","requestOldFeatures","getBathroomVisualizerGroupFeatures","getBvGroupFilterValues","withStoneFilters","getBathroomVisualizerGroupFilterValues","filterResponse","submitPayment","paymentInfo","useNewHoc","transactionResponse","responseCode","msg","errors","errorText","messageDetails","sepIdx","getQtCategories","useWizard","getFabricatorSubscriptions","subscriptions","setFabricatorSubscriptions","fabricatorName","wasCreatedFromFabricator","globalMarkUp","parseMarkUp","setMarkUpLogic","setDealerUserFromFabricator","getDiscounts","getFabricatorDiscounts","dis","enabled","isSaveOnlyDiscount","setDiscountSections","getNavigationButtons","testConnection","forTool","getMenuNavigation","menuData","copySqftImagesToAnotherJob","postData","copySqftImages","setWizardIsActive","setWizardConfig","wizardConfig","setWizardActiveItem","setWizardShowFeatureSection","wizardShowFeatureSection","setWizardActiveStep","currentWizardItem","wizardConflictingSteps","newWizValues","selectedKeyNumber","wizObject","lastVisitedStep","clearWizardSelectedValue","setWizardSelectedValues","direct","currentStep","commonObject","newWizardSteps","getNextWizardSteps","changeWizardValuesToUseNewGroups","updatedWizardValues","shouldReassignValues","switchCartItemsToNewWizardGroups","shouldReassign","changeAllCartItems","getConflictingWizardSteps","getUpdatedAllWizardValues","setAllWizardSelectedValues","getMissingWizardValuesFeatures","compressedAllWizardsValues","missingFeatures","wizardObject","getWizardVisualizerType","compressedFeature","getLoadedFeatureById","featuresFromJob","getRestoredWizardValues","selectedWizardObject","compressedWG","foundWg","updateAllWizardValues","restoreAllWizardSelectedValues","valuesToRestore","setWizardConflictPopupOpened","wizardConflictPopupOpened","setWizardConflictSteps","setWizardSqftCartItems","setWizardAllowSkipDoneSteps","wizardAllowSkipDoneSteps","usePrevious","ref","useRef","useIsMounted","isMountedRef","isMounted","useCallback","requestInProgressTimeoutId","IsMountedComponent","children","isMountedComponent","useOutsideClick","useSQFTCanvas","contains","handleClickThroughCanvasEvents","objectName","useOutsideClickSimple","excludedClassNames","closest","useProgressiveImage","useState","thumbnailLoaded","setThumbnailLoaded","complete","useFeaturesChecker","featuresLoaded","setFeaturesLoaded","callRecursiveFeaturesCheck","clearTimeout","checkFeatures","useShowRoomLayoutsButton","useMemo","isProd","path","someLayoutFound","hasNoVisualizerLayers","clickFrom","keyIndex","SHOWER_FLOOR_GROUP_BATHROOM","FeatureName","maxLength","stringFeatureName","propTypes","bool","injectIntl","skuName","skuName2","MaterialSpinner","withCounter","COLOR_THEMES","PropTypes","oneOfType","removeLayoutFromPartName","removeEdgeFromPartName","removeCabinetLayoutFromPartName","removeBacksplashTypeFromPartName","removeCountertopFromPartName","removeBacksplashFromPartName","cabinetLayout","getFeatureGroupIconURL","getFeatureGroupIconStyles","customImageUrl","getDashboardThemeIcon","largeLayout","bathTubThumbnail","ceilingThumbnail","floorThumbnail","showerThumbnail","showerAccessoriesThumbnail","showerOLDThumbnail","showerTubComboThumbnail","custom60in30X8Shower","custom30in30X8Shower","custom60in15X4Shower","custom30in15X4Shower","custom60inPonyShower","custom30inPonyShower","toiletThumbnail","vanityThumbnail","wallsThumbnail","windowThumbnail","smallLayout","featureGroupNameToIcon","largeLayoutShadow","smallLayoutShadow","shower30inWallShadow","floorPlaceholder","ceilingPlaceholder","showerWallSmallRoomPlaceholder","showerWallSmallRoomPlaceholder60in","showerFloorSmallRoomPlaceholder","showerFloorSmallRoomPlaceholder60in","showerPanSmallRoomPlaceholder","showerPanSmallRoomPlaceholder60in","LayoutThumbnails","homePage","vanity","vanity_sink","vanity_faucet","vanity_mirror","vanity_handle","shower_door","shower_pan","shower_pan_combo","shower_door_handle","threshold","bathtub","bathtub_fixture","toilet","ceiling","lighting","towel","left_shower_wall","right_shower_wall","pony_wall","left_wall","right_wall","popout_wall","faucet","center_island_sink","center_island_faucet","center_island_cabinet","center_island_handle","center_island_chairs","cutout","cutouts","edge_profiles","walls_ceiling","shareImageRebath","baseDashboardImagesPath","normalizeIconFileName","imageSplitted","wizardGroupInterface","oneOf","scopeImageUrl","filtersExcluded","productCartDescription","uploadedImageUrl","noAvailableFilters","wizardGroupIcon","hideInCartAndReceipt","multipleAddToCart","inputFields","headerTitle","headerSubTitle","visibleInVisualizers","hideForCustomers","skipProductInfo","hidePriceNoCart","skipLockDontApply","wizardNodeInterface","wizardEdgeInterface","wizardItemInterface","wizardNodes","startTitle","startDescription","wizardSelectedValueInterface","singleFeature","wizardAllObjectInterface","wizardConflictingObjectInterface","cartItemId","getFeaturePropertyToSort","getNavItemsSortedByProperty","property2","prop1","prop2","prop3","prop4","getSortedNavItems","isQuotingTool","sortNavigationItems","showPricing","hideCheckoutBreakdownCost","hidePricesFromUser","propertyToSort","useMatchesFailedNavigation","unLockedFeatures","lockedFeatures","inVisFeatures","notInVisFeatures","getDesignRecommendedNavItems","getReorderedItems","needToReplaceActiveFeature","navItemsToChange","activeNavItem","isWalls","stoneFeatures","getStonesActiveFeatures","stoneName","existingInNavItems","sorted","nItemToChange","currentIndex","getReplacedNavItemsWithUnlockedFeatures","pricingIsLocked","pricingLocked","unlockedOption","nItem","desRecFilterGroup","desRecFeature","desRecColorFeatures","desRecValues","colorOption","desRecValue","filterValueObject","findNextVanityTypeFeature","getNavigationItemsLists","navItemsList","designRecommended","others","designNavItem","regularFeatures","MountHoles","navTranslate","existingNonMatchingList","navItemsObject","notMatchingMetaName","nextSink","nextFeatureGroup","nextSinkSku","isQCSink","maxWidth","maxTotalWidth","positionFeature","getSinksWidth","matchingVanities","allVanities","testFeature","currentSkuFeature","currentSideFeatures","updateNonCompatibleListWithVanity","nonCompatibleList","Vanity","currentVanityTypeFeatureGroup","nextVanity","fromToObject","getNextSinkOnWashstandOrConsoleChange","isQcSink","forSinkConditions","nextAvailableSinks","conditionsToMatch","updateSinkWithNewFeature","sinkFeature","checkForCompatabilityAlert","matchCounterTopObject","getMatchingCounterTop","matchingFeature","hasSameName","getSinkToClickFromMatchingSinks","clickedSinkConditions","nextFaucet","showerArmFeatureGroup","showerHeadParent","showerHead","clickedArmConditions","showPrice","clickLeadCapture","getMissingFeaturesAndClickThem","updateCanvas","originalPartId","requestInProcess","wallParent","missingFeatureObject","relatedItem","navigationItemName","requestFromBackendName","cropResponse","setGroupFeatures","setCurrentFeature","featureFound","activeFeatureBeforeAllWalls","clickFromAllWalls","alreadyRequestedFeatureNames","requestAfterRoomChange","getShowMatchRadio","checkForTileBacksplash","getApplyToLogic","setApplyToFunction","applyToArrayAll","currentApplyToArray","navigationState","cabinetsApplyTo","countertopsApplyToArray","edgesApplyTo","cabinetsApplyToBathroom","countertopsApplyToArrayBathroom","handlesApplyToBathroom","showerFloorApplyToBathroom","clickOnSimilarFeatures","wallFeature","applyToLogic","useFeaturesLightRequest","isSolidSurface","applyAllCountertops","applyClickTo","getSubPartByPartId","setActiveFeaturesBeforeAllWalls","applyToArray","onlyForOneFeatureGroup","promises","all","applyNewPreset","roomPreset","setActiveFeaturesFromObject","setItemsFromBvState","isRoomLayoutsVisible","featureQuantity","defaultQuantity","setGroheFiltersOpened","filtersOpened","setGroheSimilarFeature","similarFeature","setGroheSimilarProductsOpened","similarProductsOpened","setGroheRequiredButNotIncludedFeature","requiredButNotIncludedFeature","setGroheFiltersSearchText","groheFiltersSearchText","setLastOpenedCategory","lastOpenedCategory","setGroheSubCategoryOpened","subCategoryOpened","setShowAddedToTheCartSuccess","showAddedToTheCartSuccess","setGroheActiveFeatureQuantity","groheActiveFeatureQuantity","setGroheShareButtonsOpened","groheShareButtonsOpened","setGroheSameColorActiveFeature","groheSameColorActiveFeature","setGroheSameColorSectionOpened","groheSameColorSectionOpened","setGroheSameColorCheckboxApplied","groheSameColorCheckboxApplied","setExisingTempId","exisingTempId","cartItemInterface","isMinimumCharge","isMinimumChargeItems","keepOnLookUpdate","shippingName","shippingTime","GET_CANVAS_SCALE","CANVAS_SCALE_CHANGED","RESET_CANVAS","ENABLE_PINCH_ZOOM","DISABLE_PINCH_ZOOM","CHANGE_LAYOUT","UPDATE_ALL_ITEMS","USER_IS_LOGGED_IN","USER_POPUP_CLOSED","REMOVE_GREEN_ZONE_ON_CANVAS","FEATURE_IS_CLICKED","OPEN_MOBILE_NAVIGATION","CHANGE_MOBILE_MENU_CONTENT_TYPE","UPDATE_QUOTING_TOOL","SHOW_NUMERIC_KBD","OVERLAY_CLICK","SHOW_SUMMARY","DIRECTIONS","EAST","WEST","NORTH","SOUTH","UNDEFINED","ShapeHelper","activeShape","activeShapeLines","intersectionPoints","activeShapeLine","testShapeLine","pointFieldActiveShapeLineFrom","pointFieldActiveShapeLineTo","pointFieldTestShapeLineFrom","pointFieldTestShapeLineTo","intersectionCords","shape1","shape2","testShapeLines","getIntersectionCordsV2","shape1Pos","vertex","distances","lineDirection","getAngleDirection","diff","lineMidPoint","diffX","diffY","getResources","getBordersOfWallLines","lineOrientation","getLineOrientation","pointFieldActivePoint","testImagePoints","getLinePointsPointField","getAppliances","images","getSlabImages","usePointsV2","modelCorePoint","getPosX","getPosY","slope","itemBounds","resultV","resultH","vertical","itemBound","horizontal","guides","minV","minH","newItemBounds","verticalElements","horizontalElements","verticalElement","horizontalElement","minLength","pointDistances","pointField","dir","isAngleInner","isInner","facing","isSlabMode","rotatePointX","posSlab","rotatePointY","xCords","yCords","min","max","getAbsolutePosFromSnapPossibilities","snapPossibilities","absolutePos","snapWithShape","snap","getLineLengthNumberText","pointFrom","pointTo","changeValueCallback","yOffset","xOffset","betweenPoints","shouldRenderFrameBorder","isLength","getPointDirection","aP","bP","cP","lineBeforeFrom","vDir","hDir","mAC","newDirection","cornerMargins","fromTop","fromLeft","fromRight","fromBottom","dirX","dirY","point1X","point1Y","point2X","point2Y","point3X","point3Y","pointBeforeX","pointBeforeY","direction","getLineLengthNumberTextV2","getLineDirection","getFontSizeFromContext","design","getLineLengthNumberTextV2ForTheImage","shouldOnlyRenderText","eventsPriority","deltaX","deltaY","getSlope","getSlopeV2","getAngleBetweenTwoSlopes","getAngleBetweenTwoLines","line1","line2","slopeLine1","slopeLine2","M1","M2","atan","getVectorByPoints","getEdgeFeatureGroup","getAngleBetweenTwoLinesV2","vector1","vector2","cosAngle","acos","getAngleBetween3Points","A","B","AB","BC","AC","edgeFeatureGroups","getIsShapePlacedOnTheFloor","edgeFeatureGroup","getNavItemsFromTheWizard","firstFeature","firstConditions","getCountertopPartNames","countertopNavItem","centerIslandNavItem","countertopPartName","centerIslandPartName","canShapeBeAutoShifted","testShape","isShapePlacedOnTheFloor","isShapePlacedOnTheWall","getIsShapePlacedOnTheWall","isTestShapePlacedOnTheFloor","isTestShapePlacedOnTheWall","parentPartId","LIXIL_USER_QUERY_PARAMS","postSaveTempData","getPassedUserInfo","userData","postSaveVisualizerImage","base64Image","tempData","expiresIn","postTrumbleInventory","getSaveTempData","getTempIdForPostMessage","returnAction","existingTempId","stringifiedSaveData","receivedTempId","postSureTax","postVerifyAddress","addressObject","address1","city","stateShort","errorDescription","getTrumbleShippingOptions","skuList","zipCode","postTrumbleShippingOptions","skusArray","requestMoreThanUsualPartIds","postShipperHQOptions","shippingAddress","destination","postShipperHqShipping","availableOptions","options","carrier","shippingRates","shippingRate","totalCharges","success","inventory","featureToUpdate","request6kFeatures","getFeaturesPageSize","isCommonRequest","createdManually","nextFeaturesPage","getNextPageToLoad","responseArray","oldFeatures","responseWithOldFeatures","allRelatedItemsCheck","neededParts","shouldUpdateNavigation","neededFeatureGroup","isVanityChild","isCabinetChild","isCountertop","isFaucetOrSink","isShowerHeadOrArm","isDoorOrShowerPan","appliancesParent","wallId","fridgeEnclosure","centerIslandCabinet","centerCountertop","edgeProfile","showerPanCombo","showerArm","responses","getFeatureFromTheBackendBySku","requestFirstSharedFeaturenames","featureGroupPartId","getFeatureBySku","response2","ShowerType","ShowerTypes","LoadingSpinner","setRelatedGroups","setRelatedGroupsSearch","relatedGroupsSearch","toggleGalleryVisible","galleryVisible","galleryShowActiveFeature","setGalleryActiveImageIndex","galleryActiveImageIndex","setMaterialsPageSubSteps","subSteps","setMaterialsPageActiveSubStep","activeSubStep","toggleNotCompatibleView","showNotCompatibleView","toggleProductNoteEditorVisible","productNoteEditorVisible","setRowItems","rowItems","setMaterialsCanvasClass","materialsCanvasClass","LOWES_DISCLAIMER_EN","getFabricatorLogo","hardCodedLogo","isRenoDepot","hardCodedRenoDepotLogo","isRona","hardCodedRonaLogo","hardCodedLowesLogo","logoUrl","subDomain","hardCodeIsAmericanImport","hardCodeIsAmericanStandard","hardCodeIsRona","hardCodeIsRenoDepot","hardCodeIsFlexFinish","hardCodeIsGraniteTransformation","hardCodeIsGraniteTransformationUK","hardCodeIsLixil","hardCodeIsTorrco","hardCodeIsAgent","hardCodeIsCoburn","hardCodeIsSolidSurface","hardCodeIsLakesideSurfaces","hardCodeIsDeStefano","hardCodeIsNhance","hardCodeIsEncore","hardCodeIsFloform","hardCodeIsDeluxegarage","hardCodeIsFabricator","materialTotalCost","isCafeCountetops","fabId","fabricatorsHardcodeObject","isAmericanImport","isGraniteTransformation","isGraniteTransformationUK","isModerno","isMcDermott","isFlexFinish","isTorrco","isLakesideSurfaces","isNhance","isRenuit","isGrohe","isAccentCountertops","sqftShapeManager","addPlaceholderShape","shouldUseSlabPricing","shapeSegments","updateSlabPlaceholderFeatureId","deregisterLineEvents","setSlabPricing","initTitle","SLAB_IMAGE_TYPES","placeholder","getShapeByIds","hasSameFeatureId","firstFeatureId","hasSameSharedFeatureName","currentShapeFeature","currentShapeFeatureSharedName","testShapeFeature","setShapeFeature","visualizerFeature","setBacksplashFeatureId","setShapeFeatureId","setShapeRelatedParentFeatureId","relatedParentFeatureId","getCounterTopShapes","cLabel","getBacksplashLabeledShapes","getCabinetShapes","partIds","hideSeamShapes","isWithShapePieces","hideShapePieces","restoreSeamShapes","reInitEvents","hideSlabShapes","restoreSlabShapes","reInitLineTitleEvents","hideMiteredSections","miteredOverlay","restoreMiteredSections","resetShapeChangesInTheSlabMode","updateSlabPoints","setShapePieces","shapeSlab","setRotationDegreesSlab","removeAllActiveBacksplashesAttachedToShape","checkForUpdateSlabPoints","isPointsChanged","checkForUpdateSlabPosition","isPositionChanged","updateSlabPosition","hideCorePieceShapes","restoreCorePieceShapes","hideShapeParts","shouldSkipSlabPlaceHolders","deregisterPartEvents","restoreShapeParts","reInitPartEvents","seamHistory","getSeamHistory","latestShape","pop","shapePieces","resetAllSeams","setSeamHistory","ctxCenter","minX","maxX","minY","maxY","getMinMaxWorkspacePoints","isIncludeBumpout","getMinMaxBumpoutPoints","disableRotatableStateForAllShapes","shapeRotatable","disableRotatableState","canShapeBeRotated","isShapeCanBeRotated","isMovableImageCanBeRotated","closeRotatablePopups","getIsRotatable","setIsRotatable","reInitShapePoints","setShapeAsRotatable","shapeOffset","changeValuePopupPosition","shapeHeight","getHeight","shapeCabinet","getShapeHeight","shapeWidth","getWidth","getShapeWidth","changeRotatedDegreeValuePopup","valuePopup","Direction","LEFT","newValuePopup","rotatedDegreesSlab","rotatedDegrees","rotateShapeTo90Deg","currentRotation","newRotation","getShapeCornerPoints","isPointOnField","bumpoutPoints","getBumpoutPoints","dragPoint","getMinMaxShapesPointsOnWorkspace","shouldGetRegularPosition","shapesPoints","getPointsPosOnWorkspace","getBumpoutPointsPosOnWorkspace","getTextBoxPointsOnWorkspace","pointsMinMax","getMinMaxPoints","getShapesConvexHullPointsOnWorkspace","convexHull","getShapesConvexHullPointsPointField","getPointsPointField","getShapesContourPointsOnWorkspace","shouldRemoveRepeatingPoints","shapesPointsOnWorkspace","unifiedContours","unifyShapePoints","contour","removeConsecutiveDuplicates","getShapesOverhangOnWorkspace","contourPoints","snappedShapes","minOverlap","overhangShapes","canShapeCreateOverhang","isShapeInsideSnappedShapes","overhangShape","pointsPosOnWorkspace","roundedPoints","roundShapePoints","cp1","cp2","rp1","rp2","areCollinearAndOverlap","getShapesContourPointsPointField","shapesPointField","getMinMaxShapePoints","getGrandParent","setIsDisabledShapeInPopup","resetShapeSeams","getSnappedShapes","snappedShapeGroup","shapeAbsolute","getSnappedShapeGroup","changeShapesFeatureIDIfColorWasChanged","changeFeatureIdIfColorWasChanged","updateShapeColorSet","updateColorSet","updateMinMaxMiteredPoints","updateMinMaxPoints","toggleDesktopNavigation","desktopNavigationOpened","setNavigationViewType","navigationViewType","setActiveNavigationNames","activeNavigationParentName","activeNavigationChildName","setNavigationLoading","navigationLoadingActive","setModuleContextMenuType","moduleContextMenuType","setModuleContextMenuDirection","moduleContextMenuDirection","setModuleContextMenuModule","moduleContextMenuModule","setModuleContextMenuModulePart","moduleContextMenuModulePart","setActiveNavigationFilter","activeNavigationFilter","setActiveNavigationFilterStepIndex","activeNavigationFilterStepIndex","setCabinetNavigationFilterCompleted","cabinetNavigationFilterCompleted","setCountertopNavigationFilterCompleted","countertopNavigationFilterCompleted","setCountertopWizard","countertopWizard","setCabinetsApplyTo","setCabinetsApplyToBathroom","setCountertopsApplyTo","countertopsApplyTo","newArrayLogic","setCountertopsApplyToBathroom","countertopsApplyToBathroom","setApplyToCommon","arrayToChange","isNewNotUsed","arrayPropertyToChange","setEdgesApplyTo","toggleUpdateDisableFeatureGroupRadio","updateDisableFeatureGroupRadio","toggleNavItemPositionModal","navItemPositionModal","setUseFeaturesLightRequest","controllersConfig","groupedDataInControllers","QUANTITY_GROUP","exportableControllers","workspaceControllers","WORKSPACE_CONTROLLERS_THAT_WILL_ADD_FEATURES","getControllersExportData","exportData","controllerName","controller","createContext","ShowerTubCombo","bathTubLiner","replacementTub","walkInTub","jettedTub","bottomTub","leftShowerWallType","showerComboSize","relatedItemName","RelatedItemClass","BathTubLiner","ReplacementTub","WalkInTub","JettedTub","categoryEnabled","load","WallConfiguration","wallConfigurations","createCustomWallConfiguration","placeholdersNeeded","getRelatedItems","addTo","DesignNavigationItem","showerParent","setZIndex","conf","Part","orderCompletePopupVisible","toggleShowMobileQuotes","showMobileQuotes","toggleShowAllQuotesCartItemsList","showAllQuotesCartItemsList","getMinimumChargeCartItem","fromCartItem","onlyMinimum","newDbFeature","costplus","minCartItem","setCartFooterActiveButtonIndex","cartFooterActiveButtonIndex","setCartItemEditFeature","cartItemEditFeature","setLookRemovedCartItems","lookRemovedCartItems","setCItemsAddedToParentCart","setSureTax","setSureTaxLoading","sureTaxLoading","setDeliveryList","clearCartAndStartOver","fullClear","setActiveQuoteIndex","setQuotes","setManualTax","manualTax","bgImageUrl","splitFilter","keysAndProps","prop","isObject","imagePathCache","imagePath","dev","pathPrefix","count","convertKeysToCamelCase","newObj","each","toCamel","build","destKey","ignore","playVideo","hideVideo","$guide","guide","pause","getIntroVideo","exportCanvasAsPNG","fileName","MIME_TYPE","imgURL","dlLink","downloadurl","monads","ifNotNull","notNullCallback","isEmail","isZip","zip","isPhoneNumber","region","phoneUtil","PhoneNumberUtil","getInstance","parsedPhone","isPossibleNumber","isValidNumberForRegion","getPhoneFormatted","formatInOriginalFormat","getUserPhoneSplitted","oldCountry","googlePhouneUtilInstance","allRegions","getSupportedRegions","phoneCountry","regionCode","dialCode","getCountryCode","iso2","getNationalNumber","phoneSplitted","parseUserResponse","newUserInfo","lastName","isNew","password","parseShippingAndBillingResponse","billingAddress","billingSameAsShipping","address2","getRandomInt","getValidationErrors","currentValue","hasErrors","errorsObject","textSubStringEllipsis","_checkNetworkErrorMessage","renderMessagePopup","retryConnectionFunction","closeButtonCallback","afterContractSignCallback","closeMessageBox","needContractSignDocument","setAfterContractSignCallback","newStyles","renderAccountNotActivatedErrorPopup","resendActivationEmail","renderConfirmPopup","tag","confirmPopupTag","SqftStore","viewGL","clickedEdgeButton","isShowSlabTool","isRegularMode","addSeamHistory","splittedFromTheLayoutName","setCustomVanitySinkMetaData","activeSubType_","Types","vanityCabinet","completeVanity","vanityBacksplash","vanityHandle","vanityPTrap","vanityWashstand","vanityMiddle","drawerPull","wsTowelBar","vanityLegs","vanityConsole","doorHandle","drawerHandle","relatedGroupNames","loadFeature","faucetIndex","vanityPart","forFeatureGroup","getCounterTopSize","isAsBathroomState","sinkFeatureGroup","sinkTypes","currentSku","needToUpdateCustomMetadata","Type","customBodyType","showerGlass","showerInteriorWall","showerInteriorWallAccent","showerFloor","showerOverlay","showerFixture","showerBodySelectedByUser","showerDoorHandle","ponyWallCap","ponyWallGlass","showerFloorIsActive","relatedItemType","showerBodyFeature","handleNavigationItemClick","ponyWallIsActive","getActiveShowerGroup","showerDimensions","isPonyWallPart","showerSizeValues","warn","showerBodyType","comboPart","Combo","showMaterialsTutorial","materialsTutorialIsOpened","setMaterialsTutorialStep","materialsTutorialStep","setMaterialsTutorialFinished","materialsTutorialFinished","showMaterialsAgentTutorial","materialsAgentTutorialIsOpened","setMaterialsAgentTutorialFinished","materialsAgentTutorialFinished","showVisualizerTutorial","visualizerTutorialIsOpened","setVisualizerTutorialStep","visualizerTutorialStep","setVisualizerTutorialFinished","visualizerTutorialFinished","foundGroup","changeWizardToNextStep","getHandleFeatureGroupFromShape","handlesPartId","getNavItems","withPlaceholders","checkFeatureGroup","onSQFTLoadPrepareData","activeQuote","loadData","currentLayout","onSQFTLoadImport","querySelectorAll","remove","setMeasureUnit","rememberConfig","manualCalculate","manualCalculateImport","updateManualCalculateRows","getInitialManualCalcRows","closeSQFTTool","redirectToPage","shouldChangeWizardToNextStep","changeWizardStepRoute","isSQFTinUrl","getNextNotCheckedStep","withGroupIds","getWizardGroupsFromTheWizard","allNavItems","navItemsFromWizardGroup","newWizardGroupId","newWizardStep","wizardStep","newNavItem","getUnderlaymentFeature","underlaymentFeatureGroup","underlaymentFeaure","sinkUTypes","FloorWithIsland","KVSCENE_BACKSPLASH_TYPES","oldKitchenCabinetsLogicProfiles","hasOldCabinetLogic","useOldCabinetLogic","WithOverlay","onClick","popupClassName","overlayElement","fadeIn","hideOverlay","closePopup","fadeOut","any","func","DISCOUNT_MAIN_TYPES","freeFill","subTotal","nested","finance","deposit","percent","DISCOUNT_MODES","and","or","discountInterFace","DISCOUNT_SECTION_TYPES","DISCOUNT_FINANCE_CELLS","financePercentage","financeMonths","financeSalesPercentage","isRidged","isSubTotal","uuId","nestedParent","discountType","financeOptions","multiSelections","approveOptions","discountSectionsInterface","COLOR","black","blackLight","blue","red_transparent","primary_transparent8","primary_transparent","active_disabled","active_transparent","addNewQuote","updateQuote","updatedQuote","reduxState","qtState","switcherTitle","roomNavItem","ACTIVE_ROOM_TYPE","getRoomNameInQuote","getQtCategoryName","roomGroup","getRoomGroupById","getQuoteByRoomName","isQuoteByQTCatNameEqualToCurrentQuote","newQuoteIndex","loadQuoteByQtCatName","loadActiveQuoteToSQFT","roomName","quoteByQtCatName","quoteByRoomName","updateQuoteWithSQFTData","saveSQFTDataToQuote","sqftCalcData","createQuoteIfNotExistOrUpdateCurrent","prepareSQFTData","updateActiveQuoteWithSQFTData","addRoomToCart","newQuotes","qIndex","getSQFTIdsFromAllParentLists","parentsLists","SQFTIds","parentsList","sqftFeature","featuresSubGroups","getSQFTIdsFromSQFTCalcData","deleteCartItemsThatAreMissingInParentLists","sqftIds","SQFTCalcData","model","deleteCartItemsThatAreMissingInSQFTCalcData","sqftQuantities","updatedQuantities","sum","currentQtCategoryInQuotes","getQuoteForCurrentQtCatName","createQuoteFromSqftCalcData","isManualCalculateNotEmpty","createNewQuoteFromCategory","isVisibleInSQFT","isCreatedInSQFT","getRoomCartItemForCategoryName","roomsFeatureGroup","pedestalSink","lightingFixture","Sink","Mirror","LightingFixture","VanityCountertop","VanityFaucet","VanityBacksplash","VanityHandle","CompleteVanity","VanityPedestal","mapDispatchToProps","withRouter","groheState","history","withAddToCart","updateLookCartItemsNew","updateRemovedCartItems","newRemovedCartItems","existingIndex","removedCartItem","currentCartItem","oldExistingCartItem","positionKey","itemToAdd","changeUrl","directChange","needToBeUpdated","toiletEnabled","featureToClick","showerWall","showerWallAccent","showerTubCombo","activeRelItem","port","isLocal","noInternetMode","baseAssetsPath","baseNewImagesPath","getPriceWithIncluded","getShowPrice","forTotal","getMarkUpPrice","markUpValue","markUpType","percentCost","retail","markUpString","isUpdatedInJobBoard","getWizardGroupName","allWizardSelectedValues","newValues","actionPayload","conflictingWizardSteps","confObject","nextStepKey","testWizG","selectedWizardValue","currentStepGroups","stepWizGroup","selectedWizardGroup","wG","mG","checkFeatureGroupForOpposite","erasedValues","updated","newWizGroup","parseWizardData","getFeatureGroupFromWizardSteps","allItems","getUpdatedWizardId","mainResponse","parseOnly","newVisualizerType","wizardItemIndex","fixWizardItem","oldWizardItemId","withToolVersion","commonName","existingSubscription","hasSubscriptionForRoom","getVisualizerTypeFromSubscription","totalShapeCount","minAngle","maxAngle","marginFromShape","hovering","handlerHold","isPointsMovable","isRotatable","getAngleRotatedParts","rotatedAngleValue","baseConfiguration","isHovered","isActive","isPulsing","angleDirection","hoverShapeColor","redHoverShapeColor","fillColor","layout270","slabPos","staticCenterPoint","linesWithoutAngle","shapeSpacer","isSpacer","shapeEditable","shapeIntersections","shapeAutoShuffle","shapeMemory","shapeRender","colorSet","seamCutPoints","shapeParent","isContextMenuActive","labelsMenu","slabParentPartId","isPointsMoved","isResetSlabModePopupWasDisplayed","RIGHT","FlipDirection","rotateAngleParts","slabModeWaterfallSegmentId","originalPointsCoords","getFillColor","getDesign","getColorset","getIsPointsMovable","setType","setProperty","setId","setPartId","getFeatureNameById","getAllResourcesForTheShape","deleteAttachedFeatures","generateAttachedFeatures","isShapeUseTheSameFeatureColor","isSeamPiece","updateRelatedShapes","updateSeamShapes","getFeature","getRelatedParentFeature","relatedParentFeature","setSlabParentPartId","setSlabModeCoreParentPartId","setSlabModeCoreParentId","setSlabModeWaterfallSegmentId","setColorSet","getColorSet","getOrGenerateNewShapeColorByFeatureId","relatedShapes","relatedShape","shapePieceId","shapePiece","updateSeamedShapesPosition","setPositionWithoutChange","setIsPointsChanged","addCrownMolding","setIsPointsMovable","getSize","resetMouseDown","isFromParams","thisShapeMeasurementPoints","getDepth","depth","setFillColor","green","alpha","setShape","setHovering","setHoveringOnlyShape","hoveringOnlyShape","getRotateAngleRectangle","rotateAnglePart","renderFrom","calculateRenderPosition","renderTo","renderFrom2","renderTo2","setSlabPosition","slabAbsolutePos","getSlabAbsolutePosition","getAbsolutePosition","workspacePos","_pos","getSnappedPosition","getRegularPosition","getSlabPosition","isHoveringOnlyShape","setResetSlabModePopupWasDisplayed","getResetSlabModePopupWasDisplayed","addShapePieceId","restoreShapePieces","export","getTotalArea","getCabinetDoorsSQFT","SHAPE_LAYOUTS","lowerLayoutType1","LowerLCorner","lowerLayoutType2","LowerDullangle","lowerLayoutType3","LowerIroningBoard","lowerLayoutType4","LowerDimondShape","lowerLayoutType5","LowerDimondCorner","upperLayoutType2","UpperLCorner","upperLayoutType4","UpperDimondShape","upperLayoutType5","UpperDimondCorner","newFeature","shouldChangeShapePartId","shouldChangeCabinetShapePartId","newParent","getNeededFeatureFromNavItems","featureRelatedFeatures","getFeatureRelatedFeatures","newShapeDbFeature","getCabinetSimilarFeatureFromAnotherColor","updateLineHovering","isAngleHovering","getHoverSegmentCorner","isCornerLineHovering","getPoints","getHoverLabel","labelOverlay","getHoverPointOnClick","isOverPointField","shouldIncludeBumpoutLines","linesWithBumpouts","getBumpoutLines","createLinesWithoutAngle","getLinesWithoutAnglePoints","getLinesWithoutAngle","lineCorners","getOriginalPointsCoords","getPointPosOnWorkspace","bumpoutPointsOnWorkspace","pointName","getOriginPointOnWorkspace","SHAPE_DIAMOND_LAYOUTS","shapeLayout","pointsOnWorkspace","intersection","anglesTotalArea","getCornersArea","getAnglesTotalArea","getEdgesAdditionalArea","getWaterfallToolAdditionalArea","getMiteredTotalArea","getTotalVolume","totalVolume","cornersAdditionalArea","getRectangle","basePoint1","basePoint2","norm","next","rect1","rect2","calculatePolygonClippingPolygonArea","getTotalLnft","getAttachedEdges","isWithWaterfallToolEdge","isWithPeninsulaUnderwrapEdge","waterfallOverlay","getResourceByLineId","getArea","getInnerCornerPoints","handleArrowInputIncrease","isNegative","basePoint","secondaryPoint","rotated90_1","rotated90_2","bottomLine","rotateAngleInputChange","moveShape","resetShapeSnappedGroup","updateShapeSnappedGroup","setAbsolutePosFromSnapPossibilities","setAbsolutePos","isMouseOverShape","wp","vertx","verty","vert2x","vert2y","pointDirection","pointFromX","pointFromY","prevState","rotPart","pnpolyArray","hideShapeOffsetInTheSlabMode","preventNegativeArea","restoreShapeOffsetInTheSlabMode","handleSlabPlaceholderIntersections","handlePlaceShapeOnTheLine","shiftKey","isShapeSelected","removeShapeFromSelection","addShapeToSelection","rememberShapePosition","setShapeToShapeOffset","setRotateAnglePartActive","deActivateRotateAngle","addSeamPieceVertical","addSeamPieceHorizontal","slabShapeOffset","getShapeOffset","restore","initShapeOffset","hideAngleTooltip","angleTooltip","inputArrows","display","elem","parentNode","replaceChild","cloneNode","hideAngleTooltipArrows","inputArrowUp","inputArrowDown","clearInterval","pointsArray","reversePoints","reversedPoints","getPointCordsArray","lineIndex","setPosSlab","activateRotateAngle","isAngleRotatedPartsWithCorner","renderAngleCircle","inputSubmit","expandedSidebar","scrollTop","secondaryLineLength","oninput","focus","onkeydown","blur","onblur","holdStarter","holdActive","arrow","currentTarget","setInterval","deleteBumpout","setRotateAnglePartBaseConfiguration","basePointX","basePointX2","basePointY","basePointY2","baseOldX","baseOldY","baseOldX1","baseOldY1","widthDiff","rotated90_1Calc","rotated90_2Calc","anglePercentage","diffToMinus","pointToRotate1","pointToRotate2","getAngle","rotationCenterPoint","getRotationCentrePoint","rotated","rotated2","getOrientation","getNextLine","angleIsChanged","shouldSearchAmongLinesWithoutAngles","lineBefore","flip","flipDirection","degrees","aroundPoint","Right","changeCornerDirection","rotateOriginalPointCords","rotateShapeBumpoutPoints","rotateShapeRotatablePoints","pointCoords","getRotatedPointV1","bumpoutPointsKey","setRotationDegrees","rotationDegrees","removeActiveBacksplashByLine","initEvents","getPriority","eventManager","resetState","reInitTitleEvents","restoreState","protect","deleteAllResourcesForTheShape","isShapeHasIntersections","hasIntersections","renderAnglePartActive","save","rotateShape1","closePath","fillStyle","getAvailableWizardList","qtCatProperties","getWizardSubParts","qtCategoryName","qtCat","getFeatureGroupDescription","customDescription","getGroupDescription","getLixilRequiredNotIncludedFeatures","lixilRequiredNotIncluded","getAllFeatures","formatStrToUrl","unitsToCountQuantity","getCartItemsCount","forceCheckAllQuantitties","getRoomImageFromQtCategory","lowerCasedVisualizerType","existingAddedCartItem","allowVisualizerSwitching","getRoomNameToCompare","roomFg","roomFeatureNavItem","roomFeature","getCurrentQuoteRoomName","withVisualizerCheck","quoteRoomCartItem","fgNavItems","visualizerRoomName","roomsNavItems","getQtCategoryFromQuoteRoomName","updateQuoteRoomsForCartItems","setNewRoomIndex","shouldCreateNewQuotes","createdRoomCartItems","withCreated","existingCartRoom","newActiveQuoteIndex","newRoomCartItem","updateSQFTCreatedStatusForQuotes","quoteRoomName","needToLowerCaseName","checkCatName","customLowerCasedName","originalLowerCasedName","checkIfNeedToSetNewCategory","getOtherRoomCartItemThatIsAddedToCurrentQuote","addedRoom","addNewQuoteWithNewRoomCartItem","oldRoomCartItem","getQuoteInfo","forLocalStorage","nextVisualizerType","quoteTotalPrice","getQuoteVisualizerType","getImagePromiseFromLayout","leadFeatures","getActiveNames","indexToUpdate","currentQuoteObject","q","setNewActiveQuote","newQuote","switchToNewVisualizerType","switchToWizardItem","setVisualizerIsChanging","deleteCartItemFromSQFTCalcData","cItemQuote","RenderFigures","isFilled","tl","tr","br","bl","defaultRadius","side","quadraticCurveTo","h","fullOval","lx","ty","by","magic","xMagic","yMagic","bezierCurveTo","arc","scaleX","scaleY","lineColor","fillRect","innerX","innerY","innerW","innerH","centerX","centerY","radiusBig","radiusSmall","innerYTop","innerWTop","innerHTop","innerYBottom","innerWBottom","innerHBottom","centerXTop","centerYTop","centerYBottom","startPoint","strokeRect","drawArrow","context","fromX","fromY","toX","toY","drawRotatedArrow","cornerPointX","cornerPointY","midpoint","rotateDirectionPoint","arcTo","renderPolygon","firstPoint","renderPolygonArray","drawArrowsAround4points","prevPoint","nextPoint","afterNextPoint","offsetPoint1","offsetPoint2","midPoint2","drawArrowsAroundPoints","minArrowLength","renderHandle","FeatureThumbnail","isLoading","setThumbnailUrl","smallerSizeTried","setSmallerSizeTried","baseThumbnail","alt","onLoad","onError","showerScreen","showerHeadBundle","handShowerKit","tubSpout","bodySpray","diverterTrim","handShowerHolder","handShowerOnly","showerHose","showerSystem","showerTrimKit","valveTrim","wallUnion","shower_head_type","shower_hand_type","showerHeadType","fromPartId","arrayToDisable","arrayToEnable","canBeEnabled","showerType","setActivePartFilterValues","filterValuesArray","activePart","availableCountertopGroupFilters","allFilterGroups","filtersReceived","getAvailableFiltersForNavItems","featureFilters","featureOptions","fOptions","filterGroupFromAll","currentFilterValues","getAvailableFiltersForReceivedFilters","getAvailableFilters","checkIfNeedToReceiveFeaturesIfFiltersApplied","currentParent","onScroll","getRealFeaturesReceivedProperty","arrayOfNeededFiltersToReceive","filterObj","filterIdsReceived","filterIds","existingFiltersRequest","filtersReceivedObject","allFeaturesWithFiltersReceived","getFeaturesFromBackendWithFilters","counterTopFiltersIdsReceived","existingFilterObject","featuresReceived","featuresCountToReceive","getSelectedFiltersLength","shopNavItems","forceFromNavItems","getFeatureGroupFilters","realFeaturesReceived","filtersRequested","featureGroupFiltersResponse","updateFiltersCount","availableFilters","getHardCodedFilterGroups","setLanguage","setActiveTheme","setAgreeEmailCheckbox","setInitialVisualizerType","initialVisualizerType","setNetworkConnection","networkConnection","allFeaturesWereLoaded","setAllowRouting","allowRouting","setAllowMainLoading","allowMainLoading","setActionAfterVisualizerTypeIsChanged","actionAfterRoomChange","visualizerIsChanging","leftImagePos","inEnabled","isCenterButtonRightPartHovered","isCenterButtonLeftPartHovered","rightPartZoomedShapeId","leftPartZoomedShapeId","isSlabPlaceHolderPresent","measurementPoints","centerButtonRightPart","centerButtonLeftPart","getPos","setEnabled","setSlabPlaceHolderPresent","getRightPartWidth","initRightPart","initLeftPart","centerButton","beforeRenderCenterButtonRightPart","beforeRenderCenterButtonLeftPart","initSlabWorkspaceEvents","renderSlabLeftPartWrapper","renderSlabRightPartWrapper","disableSlabImages","eyeballButtonLeftPartClick","isOverRightPart","eyeballButtonRightPartClick","moveSlabWorkspace","shapesIds","closestHigherNumber","zoomToSlabShape","zoomToShape","rpw","isFullRender","renderSlabRightPart","isMeasurementVisibleInSlabMode","renderMeasurementsAroundSnappedShapes","isCabinetsMode","getSpacerDbFeature","parentFeature","getUrlMatchingByColor","getThirdPartyAR3DMetaData","Height","siblingDbFeature","siblingFeatureUrl","siblingFeatureMetaData","siblingFeatureHeight","SpecialShape","sqftFromFeatureParentGroup","relatedParentParentGroup","getEdgeFilterByValue","edgeFeatureId","getEdgeByFeatureId","parseNumberFromString","fractionMatch","whole","numberMatch","createApplianceOnTheWorkspace","miterEdgeFeature","heightFromFeatureName","getMiterEdgeFeature","getMiterUnderwrap","getBumpoutFeature","bumpoutFeatureGroup","isFeatureUnitUseEach","createApplianceFromFeature","thirdPartyAR3DUrl","findGLBLink","thirdPartyAR3DUrls","thirdPartyAR3DMetaData","getWidthFromDbFeature","getDepthFromDbFeature","itemName","iconFullName","svg","xml","XMLSerializer","serializeToString","svg64","btoa","getDbFeatureName","ActualDisplayedName","getSortedFeatures","widthA","getSQFTGroupFromUrl","getIsSFTAreaGroup","isSFTAreaGroupInUrl","getSQFTGroup","getPartIdsFromMenuOpened","getSearchTextFromMenuOpened","getItemClickCallbackForPartId","itemClickCallback","setHighlighting","setSelectedFeature","setSelectedHandle","handlePartId","selectedPartIds","selectedShape","doNotZoomPartIds","shouldZoomPartId","shouldZoomToTheBottom","getCorrectedCenter","zoomFactor","zoomToFeature","zoomToPostion","closeOpenedCategory","clickOnFeature","lookUrl","hoveredLayer","featureExistInQuotingTool","allowFeatureScreen","shouldZoomCanvas","tapZoomFactor","scrollHeight","zoomFeature","nextStep","showWizardStepDoneCheckMark","getSkippedWizardValues","skippedValue","setWizardValuesFromCartItems","shouldUpdate","similarSelectedWizardStep","changeRoute","foundWizardSelectedObject","wizSelObject","urlStepNumber","nextUrl","currentHash","useChangeWizardStepRoute","useHistory","useRouteMatch","propsWizardItem","currentWizardIndex","prevEnabledWizard","nextEnabledWizard","stepUrl","iconPlusGreen","iconPlusBlack","iconPlusBlue","iconplusPurple","objectFlipVertical","objectFlipHorizontal","iconGreenPlus32","iconGreenClip","iconHeight","iconLength","iconLink","iconThickness","iconEyeball","iconCursorPointer","iconLibrary","iconUpload","iconImage","showSlabTool","setActiveSlabId","activeSlabId","setActiveSlabUrl","activeSlabUrl","setActiveStep","setSlabSearchText","setSlabAspectRatio","slabAspectRatio","setSlabImageType","slabImageType","setSlabImageWidth","setSlabImageHeight","setCropperData","cropperData","addSqftCroppedSlabImage","croppedSlabImage","setSqftSlabToolVisited","isSlabToolVisited","addRoomWithVisitedSlabTool","setPricePerArea","pricePerArea","setMeasurementVisibleInSlabMode","setIsSizeValidationFailed","isSizeValidationFailed","setIsSlabPricingEnabled","getSubTotalPrice","withoutCurrent","allDiscounts","currentDiscount","disSection","customDiscount","section","sec","categoryId","customDiscounts","calculateCellValue","numberOfMonths","finalPrice","fixedDeposit","getCustomDepositAmount","rate","nper","pv","cellValue","PMT","getNextCustomDiscountOrder","fromDiscount","shouldDisplayDiscount","selectedOption","getDepositDiscount","depositDiscount","priceTaken","getPercentage","selectedDiscounts","Cabinet","partThumbnailSize","topHandle","topCabinetShadow","bottomCabinetShadow","withHidden","hideWithoutFeatures","filterRelatedItem","endsWith","searchString","subjectString","lastIndex","serverConfig","__hideFeatures","_get","headers","signal","_post","post","__urlBase","_getUrlBase","addUrlMode","baseUrl","hardcodeResponsesFolder","JsonApi","saveUserKiosk","saveQuoteKiosk","encodedUserId","quoteData","saveSchedule","json","getKioskApiResponse","reject","token","encodedCustomerId","forVisualizerType","allResponse","localUrl","remoteUrl","sharedFeatureNames","skus","Ids","fixedGroupName","fixGroupName","requestUrl","searchGroupName","oldVersion","fixFeaturesResponse","featureLocal","featuresPerGroupAmount","getKioskData","saveData","forceNew","otherData","additionalInfo","getRawKioskData","kioskData","KioskApp","PostMessage","customerId","postString","setEmployeesList","setAlreadyRegisteredUserInfo","alreadyRegisteredUserInfo","setLeadCaptureClickCount","leadCaptureClickCount","setUserPopupContent","userPopupContent","setUserTwoFa","userTwoFa","setUserOptIn","optIn","isParent","nextFeaturesPageToLoad","featureGroupVisible","featureGroupEnabled","selectedFeaturesHistory","condValue","applianceThumbnail","cabinetThumbnail","centerIslandThumbnail","countertopGroupThumbnail","SmallLayoutShadow","resetEvents","currentCursorOwner","clearRotateAngles","drawFinish","closeThicknessPopup","workspace_onClick","tookAction","bumpoutLine","getTextBoxes","initDraw","drawShape","isJustCreated","setIsJustCreated","box","mixin","movable","cornerLine","miteredPoint","getAttachedItems","getArcLength","getMiteredFeatureId","deletePoint","resetHoveredPoint","lineWithTheLabel","activeMenu","cloneShape","cloneMovableImage","createSpacer","isBoxActive","LockedView","getQuoteEnabled","enableQuote","handleUserLoginClick","MobileMenuSelect","handleParentItemClick","parentItem","onParentItemClick","showRelatedItems","handleToggleDropdown","setState","handleBackClick","handleRelatedItemClick","onSubPartClick","toggle","activeSubPart","handleWrapperBlur","handlePrevClick","prevItem","currentChildIndex","childItem","currentParentIndex","parentItems","prevParentItem","lastSubPart","handleNextClick","nextItem","nextParentItem","desktop","setShowName","nextProps","dropDownStyles","data-parent","instanceOf","defaultProps","withEdge","withBacksplash","withWall","withBumpout","isWithUnderlayment","isWithWaterfallEdge","isWithFakeEdge","withId","attachedHandleId","attachedHandleUrl","attachedCrownMoldingFeatureId","attachedCrownMoldingUrl","backsplashFeatureId","backsplashHeight","backsplashName","backsplashType","attachedItems","isWithCrownMolding","isWithEndCap","movePointDistance","angleLinePoints","slabModeSkipMiteredEdgeCreation","isHiddenForever","seamCutPoint","aroundLineColor","cornerGutterSize","outlineWidth","outlineMargin","horizontalOutlineMargin","lineThickness","overlayImportData","lineCornerImportData","overlayMiteredData","overlayUnderlaymentData","waterfallImportData","titleOverlay","staticOffset","blink","lineAttachmentsComposite","getAttachedShape","isWithEdge","isWithBacksplash","isWithHandle","isWithMiteredPrev","isWithMiterEdge","isWithWaterfallEdgeFeature","getAttachedFeature","shouldExcludePoints","getWithId","setWithId","setBacksplashHeight","attachedToResource","updateAttachedToLineResource","renderBacksplashText","getHandleId","setHandleId","getHandle3dURL","setHandle3dURL","getCrownMolding3dURL","setCrownMolding3dURL","getCrownMoldingFeatureId","setCrownMoldingFeatureId","getBacksplashFeatureId","updateAdditionalShapeFeature","setStateParams","getPointsFeatures","isAnyItemsAttached","attachedItemKey","setTutotialImage","tutorialImage","setFakeEdge","setHiddenForever","sqftMode","xCord","yCord","getLineField","fieldSquares","squeezeRatio","setMouseOverLine","field","getMouseOverLineV2","getLineBordersArrayV2","getLineHovering","addFreeSeam","mousePosOnShape","lineStart","lineEnd","getClosestPointOnLine","isCabinet","moveLine","updateCornerHoverState","underlaymentOverlay","waterfallData","existing","foundFrom","foundTo","createMiteredOverlay","addMiteredSection","createUnderlaymentOverlay","labelText","temp","addWaterfallToLine","renderWaterfallText","historyPointFeatures","moveBumpout","moveMitered","nextLine","updateShapeWaterfallLength","updateMiteredLength","updateUnderlaymentLength","getLineDirectionV2","getPairedLines","pairedLines","prevLineStep2","nextLineStep2","prevLineStep3","getLineDistance","getBumpoutTotalHeight","getBiggestXPoint","getBiggestYPoint","getSmallestXPoint","getSmallestYPoint","getSmallestAndBiggestPointWithCorners","toCornerLength","fromCornerLength","toLinePoint","fromLinePoint","biggestLinePoint","smallestLinePoint","toCornerMargin","fromCornerMargin","getLinePointsWithoutCorners","toAngleLength","fromAngleLength","toPoint","fromPosition","toPosition","testLine","testLineFromPosition","testLineToPosition","intersections","toOnly","renderLineBorder","drawBumpoutLine","renderArcLength","renderAngle","nextLineRenderTo","radiusMultiplier","marginFrom","renderLineOverlay","highLightBorder","fromPointWithIndent","toPointWithIndent","drawResizeCursor","setLinePoints","marginTo","prevLineRenderFrom","drawLineFrom","drawLineTo","drawLineBumpoutPoints","bumpoutInOrOut","setPointsOutlineIntersection","prevLineFrom","nextLineTo","fromBorderIntersectionPoint","getBorderFromIntersection","fromOutlineIntersectionPoint","getOutlineFromIntersection","isWithAngle","isWithCorner","closestIntersectionPoint","toBorderIntersectionPoint","getBorderToIntersection","toOutlineIntersectionPoint","getOutlineToIntersection","renderCircle","getOutlineIntersectionPointWithNextTLine","pointOnTheLine","pointOnTheNextLine","nextLineToPointField","nextLineFromPointField","prevLineToPointField","prevLineFromPointField","pointOnTheLineBeforeFrom","pointOnThePrevLine","drawLine","border","drawCorner","interSectionPoint","drawAngle","lineCap","getOutlineStrokeStyle","getOutlineHoverStrokeStyle","getAnglePoints","cord1","cord2","cord3","cord4","get45CornerLegDistanceScaled","setMidpointOffset","deleteMitered","createLineLength","deleteUnderlayment","deleteWaterfallTool","attachedItemsKey","removeLineText","deleteSlabBacksplashByLine","deleteResourceAttachedTo","addEdgeToLine","renderEdgeText","addBacksplashToLine","addCrownMoldingToLine","crownMoldingName","addEndCapToLine","endCapName","addBumpoutToLine","addMiteredToLine","addUnderlaymentToLine","createWaterfallOverlay","createSlabModeWaterfallShapes","addPeninsulaUnderwrapToLine","createPeninsulaUnderwrapOverlay","renderLineField","tutorial","highLightedByTutorial","isHighlightedLightOn","isBumpoutHighlighted","isMiteredHighlighted","canBeMoved","isMovable","pointWasMoved","miteredFeatureId","fillStyleEdge","fillStyleWhite","fillStyleBlack","fillStyleDelete","fillStyleBlue","radiusFillStyle","translateX","translateY","pointRadiusOverlay","setPointWasChangedInRegularMode","shouldResetSlabModePopupOnPointMoveBeDisplayed","renderResetSeamPopup","renderAngleArc","exportAndImportProperties","setMiteredFeatureId","setPointWasChanged","setPointWasMoved","setTranslates","movePosition","canPointBeMoved","allowedNavItems","allowedNavItemsForMovingPoint","isLineWithBumpout","isPrevLineWithBumpout","miteredPoints","addEdgeToPoint","revertPositionIfHasIntersections","exportPoint","importPoint","xPos","yPos","useFieldWidth","getPointCords","isFitSize","isWithoutMitered","rememberPos","backupX","backupY","restorePos","marginX","marginY","pointDiff","pos2","shouldHighLightRadius","isNotHighlighted","renderCircleLayout","renderSmallCircleLayout","renderArrowCircleLayout","renderBlankLayout","renderHighlightRadiusLayout","renderRotateAngleLayout","renderWhitePointLayout","renderGrayPointLayoutV2","arcRadius","renderGrayPointLayout","renderArcLayoutOld","seg","segCorner","resourceType","resourceId","addResourceToStore","shouldShowEyeBall","attachedToHovered","attachedToExisting","prepareResource","attachResourceToLine","createAttachedResourceInStore","shouldChangeExisting","newSection","resourceActionMap","addEdgeToCornerLine","addBacksplashToCornerLine","addSection","addMiteredToCornerLine","getActivePartsCounts","getAvailableLayouts","getShowOtherLayouts","showOtherLayouts","showSmallDesignForClients","showSmallDesignFromDashboard","getAvailableRoomScenes","availableRoomScenes","scrolledVerticalToTheEnd","ceilScrollHeight","floorScrollHeight","ceilScrollTop","floorScrollTop","ceilClientHeight","floorClientHeight","getSideBarSubParts","getAnalyticsEcommerceItem","item_brand","manufacturerFilterGroup","itemQuantity","item_id","item_name","affiliation","companyName","coupon","item_category","lixilProductCategory","item_category2","item_category3","item_category4","item_category5","item_list_id","item_list_name","item_variant","location_id","getAnalyticsEcommerceValues","cartItemsToInclude","cartItemIndex","shipping","WithClickCount","newLeadCount","clickLeadCount","toggleShowAssignQuotePopup","showAssignQuotePopup","assignQuotePopupSaveButtons","setAssignQuotePopupSearchText","assignQuotePopupSearchText","setAssignQuotePopupEmployee","setAssignQuotePopupCustomer","setAssignQuotePopupSuccessText","assignQuotePopupSuccessText","setAssignQuoteCloneMode","assignQuoteCloneMode","setAssignQuoteOfflineData","offlineData","firstCat","wizardAllObject","stepsState","currentActiveCategory","sPart","changeQTRoutePath","relatedItemIndex","subPartItem","GroheCartHeaderCommon","subTitle","afterTitle","withSave","subTitleValues","aria-label","withoutSave","showContractSigning","contractSignPostSignature","contractSignData","showSignaturePad","setContractsValues","contractId","pageIndex","fieldIndex","setContractSigningStep","setContractDocumentForJob","documentData","setContractBlob","contractBlob","restoreContractValues","setContractsList","setLocalStorageItem","localStorage","setItem","getLocalStorageItem","getItem","setSessionStorageItem","sessionStorage","removeSessionStorageItem","removeItem","getSessionStorageItem","withParse","togglePriceWorksheetOpened","priceWorksheetOpened","setCustomAddedDiscounts","setFinancePercentage","setAllFinanceOptionsPopupVisible","allFinanceOptionsPopupVisible","setFinanceCellsVisible","financeCellsVisible","SuccessNotification","isHiding","Component","showQuoteSavedNotification","saveQuoteTimeoutId","fixVisualizerType","neededSubscriptionName","fabricatorSubscriptions","subscription","getToolVersionByVisualizerType","disableLoader","wizardIsActiveObject","roomFeatureGroup","newActiveFeature","advancedQuotingState","showAdvancedQuoting","nextWizard","toolVersionToCheck","quoteCartItems","displayLogic","displayRules","rule","shouldSwitchVisualizer","hasSubscription","createNewQuoteAfterVisualizerChange","newRoomName","needToAddRoomToCart","nvert","testx","testy","isPointInsidePolygonArray","ShowerCommon","isShowerCommonGroup","setShowerHeadType","showerSize","featureGroupId","UserLoginButton","userPopupType","handleLoginClick","toggleMobileButton","userLogoutActive","handleDropdownWrapperBlur","handleLogOutButtonClick","logout","saveQuoteAfterLogin","allowClickLeadCapturePopup","modulePartsList","stickyFooterButtons","classes","variant","translate","startIcon","getContracts","contractsReceived","useContractSigning","getContractDocuments","savedContracts","newOrderedList","contractIndex","getSelectedContracts","getActiveContract","allContractsList","withoutContractsCheck","setContractBlobs","receiptPagesLength","isOfflineFirstLoad","pagesCount","updatedContractsList","pagesFrom","pagesTo","useDocument","documentWithoutTagsUrl","documentUrl","blobUrl","fetch","responseFetch","totalPages","globalContractPage","getAllContractsValues","selectedContracts","activeContract","activeContractPage","changeContractsPage","newPage","changeContext","receiptPages","allValues","showPage","setPaymentInfo","setCardInfo","setCardErrors","cardErrors","setShippingErrors","shippingErrors","setShippingInfo","setBillingInfo","restorePaymentInfo","someValues","createCanvas","backCtx","finishDraw","errorImages","backgroundLayers","quality","useNewEnhance","maxHeight","canvasObject1","canvasObject3","canvasObject2","globalCompositeOperation","imageObject","cropCoords","layerWidth","layerHeight","layerDimensions","dim","polygonArray","loadedImage","getSubscriptionThumbnail","getBackgroundLayers","showPlaceHolders","bvConfig","showPlaceholders","getLayers","backGroundLayers","imagesPromise","cnt","newLayoutType","Background","setResources","resources","resource","changeResource","deleteResource","setSelectedPartIds","selectedHandle","sqftSlabManager","resetBacksplashes","getSlabPlaceHolderShapes","hideShapeOffset","reInitShapeOffset","emit","animateShapeTransition","getRelatedFeatureMetadata","getCabinetDimensions","getHeightFromDbFeature","diamondLength","DiamondLength","featuresListToSearchForNewFeature","currentShapeDbFeature","cabinetBoxName","generateQRCode","qrData","metadataString","getDepthFromAR3DMetaData","Depth","getWidthFromAR3DMetaData","Width","getHeightFromAR3DMetaData","getCategoryFromMetadata","getSpecialShape","Category","getDepthFromDescription","getWidthFromDescription","getHeightFromDescription","normalizeString","links","link","splitAndNormalize","getUrlByName","nameSearch","featureNameParts","urlParts","containsHEBeforeExtension","get3dURLsForFeature","urlByFeatureName","setCabinetsSetToCabinetGLB","startsFromH","isHoodShape","shapeDbFeature","shapeFeature","setCabinetGLBFromCabinetsSet","displayDoorsOnly","shouldDisplayFramedDoors","cabinetsData","CabinetsSet","prepareCabinetsSet","getUrlToCabinetGLB","cabinetsUrl","setUrlToCabinetGLB","abort","cabinetSet","abortController","AbortController","postCabinetSet","s3Url","relatedParentFeatureName","sortedUrls","groupUrlsByVersion","urlBySharedFeatureName","urlBySimilarity","similarityByWords","urlBySimilarityFromFeatureName","matchingUrl","ASYNC_SCRIPTS","html2canvas","bundleReactPdf","bundleReactPdfRenderer","three","_removeElements","loadAllAsyncScripts","scriptName","loadScriptPromise","elements","removeLoadingElements","getElementsByClassName","runSalesForceLogic","Sfdc","sr","client","subscribe","onData","salesForceLoaded","publish","sfdcMessage","Appliance","fridgeEnclosureHandle","loadCommon","AccessoryCommon","showerCondition","accessoriesParent","otherFeatureGroup","soapDish","grabBar","largeCornerSeat","seats","newPosition","LookFeatureImage","withoutGallery","setGalleryImages","activeImageIndex","setActiveImageIndex","featureGalleryImages","galleryEnabled","preview","arrowClick","analyticsLabel","nextIndex","mainImageUrl","ownProps","featureIsMatchingDisplayLogic","currentQuoteCartItems","visibleUpdated","entityVal","entityId","countertopCount","matchingCartItem","entVal","ruleVal","comparison","isMatching","propertyName","originalValue","finalValue","inCatProperties","inCatFabCost","inCatCost","inCatPrice","getOldHidePropertyName","forPage","hidePropertyName","toolSettings","checkProperty","toolSettingsObject","tool","setFabricatorFeatureCategoriesProperties","fabricatorFeatureCategories","fabricatorFeatureCategoriesPropertiesAreSet","qtCategoriesList","inCat","currentFabricatorFeatureCategory","fabricatorFeatureCategoryId","inCatName","bvSetting","setting","kvSetting","hideFromBathroomVisualizer","enableVisualizer","hideFromBVQT","enableQuotingTool","hideFromKitchenVisualizer","hideFromFrontEnd","fCat","hideFromBV","hideFromKV","hideFromKVQT","forActiveQTCategory","SQFTResourceController","resourceName","removeResource","searchedId","exportedData","replaceIncorrectSymbols","getPercentAmount","fromTotal","forCartItems","totalArray","featureCurrency","existingGroup","replacementTubFixture","getIsBathroom","CountertopSwitchers","setToggledByUserProperty","currentCategoryPartId","COUNTERTOPGROUPS","applyTo","newPartId","toggleSwitchedOffByUser","neededSubPart","getUpdatedCountertopSwitcherButtons","countertopsApplyToPartId","countertopsApplyTo2","existingIndex2","setToggleOffProperies","toggleCountertopsApplyTo","getButtonName","getValueText","buttonIsDisabled","renderDropDown","selectItems","withCheckboxes","valueText","disabledButton","showAsDropdown","isMaterials","updateCountertopSwitcherButtons","currentGroupPartId","propsCountertopsApplyTo","setApplyTo","typeGroup","filterName","tileFilterValue","navigationItemPart","passedArrayApplyTo","clickedPartId","currentPartId","isNewKitchen","isNewKitchenBacksplash","featureName2","featureManValues","withSameManufacturerFeatures","currentHeight","getCurrentActiveFeatureType","sameHeight","getFeatureBacksplashType","searchFeaturesByName","turnOffToggles","NavigationRequests","getBvPartFeatures","navigationItem","callBack","itemPart","forceUpdate","_isMounted","getRelatedItemFeatures","checkIfAllFeaturesReceived","materialsPage","showerComboParent","centerIslandParent","countertopParent","applianceParent","isWallItem","vanityAccent","cabinet","checkIfAllFiltersReceived","changeLayout","firstChange","relatedArray","countertopPageChanges","getSubPartLayoutPageChanges","backsplashPageChanges","requestNeeded","requestNameNeeded","getNeeededKvPartsOnLayoutChange","finishChangeLayout","getBvSceneParts","oldType","currentState","selectLayout","refreshCB","childName","nextLayoutFeaturesPage","maxCurrentFeaturesPage","currentActiveName","neededLayoutName","relatedPartsToReceive","relatedPartsToReceiveForLayouts","pageChanges","nextLayoutName","featuresSize","searchName","FiltersClass","blurClickSet","activeFilterId","handleSearchInputChange","filterVisible","actions","toggleFilterArrayValue","FilterSwitchers","replaceFilterArrayValue","setActiveFilterValue","setDefaultFilterValue","setDefaultFilterArrayValue","availableFilterValues","setAvailableFiltersValues","filterGroupName","isRebath","activeFilterValueId","appliedFilter","addFilterArrayValue","FilterSelection","removeFilterSelection","getAvailableFilterValues","featuresToFind","moduleParts","LookFeaturePrice","withUnit","isBundleChild","listPage","mainContentPrice","showPriceAlways","shopPageLoaded","getQuote","showPriceLocked","lockedText","priceEditable","finalText","cartItemsLength","featureInfoCount","shopState","qtCategoriesLoadedLength","FeatureDescription","brief","textLength","desc","dangerouslySetInnerHTML","__html","setInitialFlowAdditionalRooms","initialFlowAdditionalRooms","setInitialFlowType","initialFlowType","setInitialFlowRoom","initialFlowRoom","setInitialFlowVisualizerNotAvailable","visualizerNotAvailable","setInitialFlowFinished","initialFlowFinished","setInitialFlowRoomLayout","initialFlowRoomLayout","setInitialFlowStep","initialFlowStep","crossProduct2D","vectorA","vectorB","findClosestIntersectingPointAndLine","referenceLine","perpendicularVector","getPerpendicularMidpointVector","intersectionPointsAndLines","intersectionPoint","getClosestLineAndIntersectionPoint","convertShapesToPolygons","convertShapeToPolygon","convertFromPolygon","areCollinear","getSegmentIntersectionPoint","isPointOnSegment","p1","p2","p3","p4","seg1","seg2","sortedY1","sortedY2","sortedX1","sortedX2","getOverlapLength","findLowestRightmostPoint","resultPoint","calculateLeg","hypotenuse","lineVec","lineLen","lineUnitVec","mouseVec","dotProduct","clampedDotProduct","coordinates","findNearestPoint","targetPoint","nearestPoint","Infinity","arePointsDifferent","arr1","arr2","getThePositionOfAPointToTheLeftOrRightOfALine","linePoint1","linePoint2","searchedPoint","ax","ay","bx","crossProduct","onSegment","allowOverlap","d1","d2","d3","d4","closestIntersectionPointAndLine","roundShapesPoints","cross","roundPoint","polygons","coord","union","a1","b1","c1","a2","b2","c2","determinant","findTopLeftPoint","topLeft","adjustPointsRelativeToTopLeft","sortPointsClockwise","topRight","bottomLeft","bottomRight","roundCoordinate","precision","factor","findLongestLine","longestLine","getDistanceLength","getLineCrownMoldingPoints","linePointsIds","getDiagonalPointsForTheLine","getLineBordersArrayV1","outlineDistance","pointField1","pointField2","pointOnTheLine2","parallelPoint4","getBordersOfTwoPoints","lineBorderArray","virtualLines","borderPointKey","currentLineBorderPoint","nextLineBorderPoint","virtualLine","addEdgeToTheLines","lineNumbers","addFakeEdgeToLines","setLineParams","shapeLine","updateWaterfallLength","setNewLineWidth","createSimpleLinesFromPoints","initAllLineLength","hideAllLineLength","findCollinearLine","searchLine","roundedSearchLinePoints","roundedTestPoints","isHorizontalDirection","isVerticalDirection","isWesternHemisphere","isEasternHemisphere","adjustedLines","legLengthTo","legLengthFrom","linePosTo","linePointTo","linePosFrom","linePointFrom","cloneLine","newLinePosFrom","newLinePointFrom","legLength","newLinePosTo","newLinePointTo","toggleShowManualCalculation","showManualCalculation","setSwitcherPosition","switcherPosition","addManualCalculateRow","updateManualCalculateRow","row","updatedRowValue","manualCalculationRows","deleteManualCalculateRow","Layer","fromS3","splitWallPartIds","shouldCheckAdditionalPartsConditions","WallCommon","splitWall","getSplitWallType","BodyPanelRadio","radioClick","refreshItems","quotingTool","isToggle","canvasCount","LookAllWallsRadioButton","showColumnCheckbox","viewType","showTutorialToolTip","checked","allWallsCheckboxClick","control","disableRipple","onChange","dbFeaturesArray","setNextPage","loadedPage","fromSearch","edgeGroup","edgeValue","countertopFeature","changeRoutePath","nextRelatedItemIndex","nextPath","subPartName","getMaterialsFixedName","nextSubPart","Layout41","SLAT_WALL_POSITIONS","initialShopContextValues","shopAllNavItems","shopNavItemsLoaded","shopActiveCategory","shopActiveFeature","shopLastActiveFeature","ShopContext","useShopContext","useContext","shopContextAction","shopContextReducer","printLogo","notFoundImage","loadReceiptScript","registerFonts","assignQuotePopupNewCustomer","newEmployeeSelected","isContractSign","assignQuoteState","cartItemsThumbnails","receiptSettings","showThumbnailsAndDescriptions","getCartItemThumbnails","ReactPdfRenderer","pdf","getCurrentReceiptPages","withReceiptUrl","onRenObj","receiptLayout","_INTERNAL__LAYOUT__DATA_","getOfflineReceiptImages","printReceipt","fileURL","setReceiptSignature","setReceiptReferral","receiptReferral","manualCalculationsCheckForChangesApplied","manualCalculationsCountertopArea","manualCalculationsEdgesLength","manualCalculationsBacksplashArea","manualCalculationsEdgeLength","getCountertopArea","totalAreaToMeasureUnit","shapeLength","getCabinetsVolume","getCabinetsDoorsSQFT","totalSQFT","getCabinetsLNFT","totalLength","getCabinetLNFT","getQuantityFromFiltersByShapes","getQuantityFromFilters","getTotalDoors","getTotalKnobs","getTotalDrawers","getEdgesArea","edgeCount","getEdgesLength","getBacksplashTotalArea","backsplashesArea","shapeArea","getSlabTotalArea","slabPlaceHolderShapes","previousValue","imageSize","getSlabImagesAreaGrouped","slabImagesAndPlaceHolders","slabImagesPrepared","preparedSlabImage","prepared","getSlabSameTypeArea","totalSlabs","getSlabSameType","sqftManualCalculationState","getRowSum","LowerDualangle","LowerIroningBoardRight","LowerIroningBoardLeft","totalQuantity","getFeatureSavedFilterName","getConvertedMultipliedValue","getCountertopQtCategory","getExportedManualCalculateBacksplashes","linearFeet","M","inputLength","inputHeight","getExportedManualCalculateEdges","selectedEdges","getExportedManualCalculateCountertops","inputWidth","sqftShapeIntersectionsManager","resetShapesIntersections","setOverlappedWithShapeIds","getTwoShapesIntersections","addOverlappedWithShape","checkIfShapeContainsAnother","logShapeFeatureIds","overlappedWithShapeIds","logSnappedShapeGroups","intersectedShape","showSlabPlaceHolderErrorMessage","slabPlaceHolderShape","CabinetSwitchers","toggleCabinetsApplyTo","getCabinetsApplyTo","getSetCabinetsApplyTo","cabinetsApplyToPartId","CABINETGROUPS","getCabinetGroups","getFeatureDoorStyleFilter","doorStyleFilterGroup","neededPartId","doorStyles","featureDoorStyles","featureMaterials","ds","mat","applyAllCabinets","propsCabinetsApplyTo","FeatureWizardSteps","setFeatureWizardStep","featureWizardStep","availableSteps","exitFeatureWizard","allStepsCompleted","selectedValueId","selectedItemIsLocked","showFeatureWizard","toggleWizardFilterSelection","enableFeatureWizard","isLastStep","nextStepIsLocked","lastStepIsDisabled","allProducts","finishClicked","wizardButton","prevStep","buttonName","getFilterDisplayName","MessageBox","getMessage","msgIndex","bClass","hClass","messageClass","buttonsElements","MessageBoxButton","GROHE_POST_MESSAGES_ACTIONS","signIn","openMiniCart","GROHE_ON_OPEN_ACTION","shareFacebook","shareTwitter","sharePinterest","disallowBlurClasses","NavItemPositionModal","activePartId","checkboxesUpdated","setCheckboxesUpdated","popupPosition","contextMenuBlur","cls","popupOpened","updateCheckboxes","maxRight","fixedTop","triangleStyles","marginTop","isShelf","positionsArray","getPositionsArray","shelf","shelfIndex","AllFeaturesChecker","_filtersRequestsMade","withFiltersRequest","loaderOnly","DiscountCommon","handleDiscountSelectClick","isDiscountDisabled","updateDiscount","setDiscountProperty","getGrandTotal","withoutDiscount","forDiscount","discountAmount","getDiscountPercentageAmount","setAmountValue","getMaxDiscountValue","getDiscountAmount","getInputValue","customDepositAmount","renderAmountInput","isDiscount","numberInput","onRealChange","maxValue","currencySing","resetLoading","loadingBarReducer","loadingBarMiddleware","LoadingBar","ImmutableLoadingBar","_loading_bar","require","_loading_bar2","_interopRequireDefault","_loading_bar_middleware2","_loading_bar_ducks","_immutable2","scheduleCustomer","time","am","scheduleData","scheduleEntryData","date","duration","alert","appointmentType","jobIdType","setUserLoginResponse","fromConfirmationDialog","showSchedule","updatedUserInfo","pendingPhoneVerification","responseDataBase","enableCalendarForScheduling","callUserRegisterErrorPopup","userLogin","showConfirmationPopup","userAction","addGACookie","assignQuote","withCheckoutLogic","noInternetCallBack","executeAfterRegisterIfUserExist","isEmailTaken","errorUserMatch","applyFunction","userRegister","agreedToTerms","subscribeToNewsletter","preferredCommunicationMethod","howDidYouHearAboutUs","phone2","registerResponse","schedulerPending","saveQuoteResponse","resetUserPassword","withLoader","emplList","getCustomerById","showContractOnError","generateTwoFaAuthenticationToken","generateAuthenticationToken","validateTwoFaAuthentication","authCode","validateAuthenticationRequest","sendAuthenticationRequest","NumberText","isInit","initEventListeners","fontColor","fontFamily","fontHeight","valuePrefix","valuePostfix","isMouseOverText","getTextPointsArea","mText","measureText","getMaxLength","initialValue","inputWrapper","createAdjustableInput","onInputChange","onClose","valueBeforeUpdate","isHoveringPoint","hoveredPoint","isHoveredOverText","setValue","setAngle","setBetweenPoints","parentOffset","angleRad","calculatedXOffset","calculatedYOffset","getValue","isString","withSuffixes","updateOrientation","updatePositionBetweenPoints","pointBetweenPoints","renderFrameBorder","renderText","roundedRect","font","textAlign","wrapText","CORE_POINT_LAYOUTS","ear","PointV2","pointPrams","isCentered","isCenteredByY","isResizedByPoint","isScaledByPoint","isVisibleOnHover","shouldRotateShape","pointData","mixins","isHoveredWithParent","isMouseDownWithParent","subLineHeight","renderOval","renderImage","moveCallback","mouseUpCallback","mouseDownCallback","_modelCorePoint","setPosX","setPosY","isParentMovableHovered","isParentHovered","isParentChildrenHovered","hoveringWithChildren","isParentMouseDown","isParentChildrenMouseDown","mouseDownWithChildren","isMouseDown","loadScript","script","readyState","onreadystatechange","initialState","SET_CABINET_RELATED_ITEMS","roomSwitcher","menuItems","contentType","validationMessage","cabinetRelatedItems","CabinetWorkspace","cabinetShapes","cabinetShapesLayout","__crownMoldingParams","handleDrop","handleDrag","closeContextMenu","touchMove","dataTransfer","getData","parentFeatureId","mousePosOnField","enableRegularMode","hideSlabImages","restoreTextBoxes","restoreImages","hideAdditionalShapes","enableSlabMode","shouldUpdatePlaceholderFeatureIds","restoreSlabImages","initWaterfallToolShapes","initBacksplashAndEdgeShapes","initMiteredToolShapes","initUnderlaymentToolShapes","initBumpoutShapes","restoreBacksplashShapes","hideImages","hideTextBoxes","getDimensionsDependingOnShapePositions","maxCordX","maxCordY","imageWidth","imageHeight","fontSizeMatch","PartCommon","forQtCategory","_featureName","originalName","customGroupName","_lowercaseCustomDisplayName","_lowercaseSharedFeatureName","currentLayoutAbbr","collectionFg","fGroup","featureCollectionValue","featureCollectionValueObject","_filterNames","_colorName","getFeaturesFromLayout","currentLayoutFeatures","bvPreset","layout_type","stringifiedLayout","checkAutoAddToCart","setRoomNotInVisualizerProperty","clickable","shouldLoadInDifferentGroups","refactoredArray","Exception","NotImplementedBaseClass","arrayToFilter","getFeaturesBySearchTextLixil","_searchText","isPartName","isFilterName","filterGroupIds","filterIndex","fgv","collectionFilterGroup","matchByName","partsToo","neededId","inParts","arrayToFind","featureParts","matchingItem","_partNameWithoutSpaces","groupId","matchingFeatureExist","currentColorFilterValue","getFeatureByPartName","prevFeatureMatchingName","foundFinally","setCustomConfigurationsAfter","layoutToSet","addFromPageSize","uniqueLayoutsTypes","layoutNumber","activeFeatures","layersBinding","featuresHistory","createNavItems","returnNavItemsFromFeatures","propsFilterGroups","_useCurrency","_relatedFeaturesSet","loadRelatedFeatures","DesktopNavigationCommon","handleContextMenuClick","menuItem","showNavigation","clickedParent","clickedButton","isBacksplash","bType","backsplashSubPart","applyBacksplash","getFeatureByBacksplashType","parentNavigationItem","subMenuParent","contextMenuOpen","ponyWallAndLeftWallClick","triggerOpenNavigationMenu","setNewActiveFeature","clickFeature","subMenuText","handleNavTabClick","closeNavigation","navigationIsClosing","setContentType","openLayoutMenu","_menuOpened","activeDefaultPreset","showFilterSelection","showerWallWizardGroupsSelected","off","overlayClick","navClick","lockClick","userPopupClick","handleHeaderBackClick","resetNavigation","updateSideBar","updateSidebarItems","handleSubPartClick","childNavigationItem","subItemPart","childNavigationItemPartId","scrollAsideToMenuItem","rememberWallsSelection","setActivePartRelatedItemIndex","setNavigationFilterIfTheChildWasChanged","menuItemText","child","needToScroll","handleSubPartHover","renderGreenLayerByZindex","scrollToDefault","handleMobileSelectClick","navigationItemClickCommon","useFilters","contentDesign","handleLayoutItemClick","contentRoom","contentLoading","contentDesignBody","onItemClick","navWidth","toggleApplyWallsCheckbox","handleSubTypeClick","showMenu","setStateActiveFeature","contentDesignWizard","getWizardGroupsByPartId","setWizardGroups","setWizardLockedItem","wizardStepIndex","onBackClick","onSubTypeClick","onSubPartHover","activeChildNavigationItem","presets","checkedForLockedPresets","presetIsLocked","handleDefaultPresetClick","bv_screen","navigationMenuButtons","availableNavButtons","tabClassName","navWrapper","_componentDidMount","_componentWillReceiveProps","setHoveredLayer","setDemoPointClicked","NavigationFiltersSteps","wizardButtons","nextStepIndex","lastStep","commonView","mounted","currentActiveIndex","firstStepIsActive","lastStepIsActive","isCountertopWizard","buttonIcon","MobileNavigationCommon","reRenderComponent","parentCategoryClick","parentItemText","firstChild","openMobileMenu","mobileMenuOpened","handleContextMenuBlur","scrollContentToTop","listContainer","messageBoxClick","twoFactorPopup","countryList","searchClick","wizardClick","loadingClick","canvasIsDragging","setCanvasClass","handleChangeContentType","resetNav","resetEverything","resetWizardSteps","getDisplayRoomContent","toggleSearchInputFocus","searchInputFocused","contentBody","filterSelectionHasValues","switchers","updateParent","backsplashSelectClick","subTypes","activeSubType","subTypeToString","onFocus","onBlur","filtersVisible","keyType","existInQtCategory","parentUpdate","updateComponent","btn","goToMaterialsInfo","MobileNavigationButtons","handleDropDownButtonClick","designNavigationOpened","handleResetButtonClick","changeContentType","resetDropDown","handleDisplayRoomClick","newButtonClick","dropDownClick","handleFiltersClick","dashboardFramed","mobileNav","enableScheduling","buttonLayoutId","MobileNavigationAllWallsCheckbox","allWallsClick","allWallsApplied","MainButtons","handleLoginButtonClick","handleScheduleButtonClick","consoleTableAllFeatures","downloadCSV","consoleActiveFeatures","allPagesEnabled","quoteEnabled","goToCart","enableSharing","goBack","Visualizer","applyStoredItems","localStorageKey","setIframeMessaging","VISUALIZER_MANAGEMENT_ACTIONS","checkState","updatePresetRoomLayout","visualizerIsLoaded","listenToDashboardMessaging","canvasScaleChanged","canvas_scale","setFirstPreset","layoutTypes","isCartAndUserStatedUpdateNeeded","getQtCategoriesCommon","setNewBvState","firstLoad","handleRefresh","navBar","onBvLoad","askToRestore","checkShareUrl","jobResponse","parseJobIdResponse","canvasClass","removeAllClasses","imageCanvasScroll","newMessageBoxState","demoPointClicked","loadQtCategoriesFeatures","featureGroupsWithoutFeatures","loadFeatureGroupFeatures","toRequestFeatureGroups","finishLoading","setShopPageLoaded","getContractSignDocument","getAssignQuoteCustomersAndEmployees","alreadyRestored","tryToSetSelectedRoom","setSubscribers","needToSaveQuote","saveJobResponse","visualizerIsSaved","getCustomersAndEmployees","custAndEmpResponse","clients","employees","assignQuoteOfflineCustomers","assignQuoteOfflineEmployees","employee","roomChosen","initialFlowState","selectedRoomFeature","checkToShowTutorial","lockedView","bvGroupsResponse","savedTempData","parseWizardResponse","setGroupsItemsCount","setQtCategoriesSubparts","recoverFromTempId","editJobId","bvStateVersion","isNewlyCreatedJob","useMouseHovering","useTouchZoom","handleToggleFeatureInfo","VisualizerTutorial","componentDidMount","showTutorialStep","exitTutorial","scrollAndHighLightRing","roomLayoutsOrIdeas","getRoomLayoutsOrIdeasStepLogic","selector","changeHighlightRingPosition","handleNextStepClick","forever","getHighLightButton","buttonComponent","mainTranslate","ringStyles","texts","highlightButton","mainTextId","showText","showNextButton","tutorialState","year","getFullYear","ImageCanvasCommonNew","alreadyRenderedImages","copyImages","shouldUpdateGreenZone","layersHoverings","backCtxBg","canvasBg","greenImage","mouseMoveSet","setOnMouseMove","setLayersHoverings","setShowCanvasLoader","getGliaImage","el","canvasImg","nonTransparentPixelHovered","mousePosArray","layerHovering","pixelHovered","willReadFrequently","hovered","layerIsExcludedFromHover","checkMorePointsPartIds","hoveredMousePos","activeGreenZoneIndex","renderGreenLayer","draw","neededLayerHovering","canvasContext","firstX","isGreenHovering","firstY","lookCanvasClick","onDoubleClick","data-mobile","INITIAL_FLOW_BUTTON_TYPES","Quote","replaceDialCode","inputValue","dialWithPlus","charLength","LookUserPhoneInput","isUserPopup","inputsValidated","inputRef","defaultValue","blurred","setBlurred","focused","setFocused","wasChanged","setWasChanged","utilsScript","handleInputBlur","isValid","restartInput","relatedTarget","replacedValue","fullNumber","formattedPhone","setInitialState","setFlag","setNumber","errorsExist","renderScreenKeyboard","osk","inputId","handleInputChange","selectionStart","tel","v","IntlInputComponent","inputClassName","containerClassName","onSelectFlag","currentNumber","selectedCountryData","preferredCountries","getPreferredCountries","onPhoneNumberChange","forceCarrot","forceCarrotFunc","selectionEnd","onPhoneNumberBlur","onPhoneNumberFocus","separateDialCode","defaultCountry","fieldId","aria-hidden","shrink","restartPhoneInput","setShowUnlockCalculations","showUnlockCalculations","setUnlockCalculationsStep","unlockCalculationsStep","showUnlockCalculationsCartItems","showCartItems","showUnlockCalculationsTotalItems","showTotalItems","setShowUnlockCalculationsTutorial","showUnlockCalculationsTutorial","setUnlockCalculationsTutorialStep","unlockCalculationsTutorialStep","setUnlockCalculationsTutorialFinished","LookIntroPopper","anchorRef","placement","toolTipText","roomIdeasButtonTranslate","anchorEl","transition","disablePortal","TransitionProps","transformOrigin","initialContext","pageRendered","selectedFieldIndex","ContractsContext","UiIcon","MovableImage","_state","mouseDownSize","minimumHeight","minimumWidth","resizablePoint","onClicked","around","newPoint","_setHovering","_isMouesOverImage","_moveImage","initialSize","thickness","hoverColor","renderMovableImage","_setFillColor","_setImage","_setAttachedTo","_snappedPos","updateSnappedPos","resetAbsolutePos","setSnappedWithShape","setSnappedShapeGroup","updateLinesLength","updateLineLength","distancesToShapes","getDistancesToShapes","distancesToImages","getDistancesToImages","snapPossibilitiesToShapes","getSnappingPossibilities","snapPossibilitiesToImages","absolutePosToShapes","snappedWithShape","setSameSnappedShapesGroup","absolutePosToImages","snappedWithImage","realPos","realSize","axis","_getRotatedPoint","_onMouseDown","getCenterPosition","setSize","setInitialSize","getPosField","getThickness","getRotation","linesData","Lines","currentSrc","$","attr","nameMetric","shapeAbsoluteData","skipImportProps","lineData","rotateBorderPoints","getLinePoints","createLines","_onMouseMove","_onMouseUp","_render","initResizablePoint","pointParams","grandParent","newWidth","newHeight","pointDesign","pointPositionX","pointPositionY","reInitLineEvents","appVersion","getSrc","isSVG","getBorderPointsOnWorkspace","posField","createBorderPointsPosition","getImagePoint","revealMeasurementsInsideShape","measurementInsideShape","revealEvents","hideMeasurementsInsideShape","hideEvents","isAnyLineHovering","createImageLinesFromPoints","shouldRenderMeasurementsInsideTheShape","getOuterShape","centerPos","centerPosOnField","RenderParts","drawMeasurementAroundPoints","xMargin","yMargin","drawShapeBorders","strokeTemplate","fillTemplate","renderDevMode","isShapeHovering","shapeColorSet","renderFilledPrimaryTemplate","primary_border","renderColorSetTemplate","renderFilledActiveTemplate","getBoundingBoxFromShape","drawStripedRectangle","color1","color2","lineGap","clip","fillStripedRectangle","gradient","createLinearGradient","addColorStop","drawDiagonalStripesV2","bbox","pointPos","drawDiagonalStripes","lightGray","darkGray","scaledLineWidth","drawHoveredBorders","shadowBlur","extendHoveredLine","shadowColor","drawSpacerBorders","drawShapeCrownMoldings","crownMoldingPoints","renderCrownMolding","drawShapeEndCap","lineState","renderEndCap","drawHandles","renderPosition","getIntersectionPoints","intPoint","pf","roomsWithVisitedSlabTool","miteredEdges","getExportedMiteredEdges","shapesList","SHAPE_PART_IDS_FROM_ADDITIONAL_SHAPES_LIST","totalSQFTArea","workspaceCenter","sqftApplianceImages","getCanvasApplianceImages","sqFtSlabImage","getSlabResultImage","sqFtSlabCalcImage","getSlabCalcImage","getCanvasImage","sqftCanvasImage","images3D","getExportedSlabImages","radii","getExportedTextBoxes","slabImagesTotalArea","manualDiv","getCanvasImageScaled","MiteredController","imgSrc","miteredSectionsHTML","createCursor","registerEvents","attachMiteredEdge","attachMiteredUnderwrapEdge","checkForRestoreCursor","miteredSection","updateSection","changeMiteredSection","deleteSection","deleteMiteredSection","isWaitingToRestoreCursor","onMeasureUnitChange","getSegments","segment","heightNumberText","additionalLength","getEdgeLengthValue","edgeLengthValue","miteredSectionsArea","getMiteredToolTotalArea","setMiteredSections","IRONING_BOARD_DIRECTION","SHAPE_UPPER_LAYOUTS","SHAPE_LOWER_LAYOUTS","SHAPE_LAYOUTS_WITHOUT_HANDLES","addShapeHelper","upperShapes","getShapeLayout","lowerShapes","otherShapes","shapeArray","getShapeLines","specialShape","specialLayoutName","specialShapes","createPoints","createIroningBoardShape","resetUpperShapes","activeBacksplashData","backsplashShape","slabAdditionalShape","addActiveBacksplash","additionalShapes","backsplashShapeId","findAdditionalShapeByLine","additionalShape","shapeToRemove","sqftImageManager","getAppliancesThatShouldRenderMeasurementsInsideTheShape","movableImages","croppedImages","croppedImage","workspaceImages","movableImageData","workspaceImage","filteredImages","DEFAULT_SLAB_IMAGE_PART","upload","selectedImage","TubCommon","showerTubComboParent","setShowerTubCombo","setActiveTub","bottomTubId","applyFeatureIfNotCompatible","loginButtonCommonClick","updateInputValidations","loginResponse","saveQuoteAfterSignIn","savedSuccess","registerButtonCommonClick","registeredResponse","remindPasswordCommonClick","fullStore","getUpdatedUserInfoFromTheResponse","responseCustomer","address","tryToSetUserFromUrl","addresses","contactEmail","provence","Walls","Ceiling","RightWall","LeftWall","PopoutWall","Backsplash","BacksplashRightWall","BacksplashLeftWall","RightWallBacksplash","LeftWallBacksplash","Floor","Globals","GlobalShadow","Baseboard","CeilingLights","CeilingHighlights","Decor1","Decor2","Decor3","Decor4","TopCabinetShadow","TopCabinetShadowPart2","BottomCabinetShadow","TopCabinet","TopCabinetModuleBox","CrownMolding","TopCabinet2","TopCabinetModuleBox2","CrownMolding2","BottomCabinet","BottomCabinetModuleBox","BottomCabinet2","BottomCabinetModuleBox2","TopHandle","TopHandle2","BottomHandle","BottomHandle2","Peninsula","TopCabinetModules","BottomCabinetModules","Appliances","Microwave","Hood","Dishwasher","Range","Fridge","FridgeShadow","CountertopGroup","Countertop2","Faucet","Stovetop","CenterIsland","CenterIslandShadow","ChairsShadow","Chairs","Handle","moduleTopNumber","moduleBottomNumber","module_modulePart","getLayerDimensions","fullImagesFactor","checkForCanvasScale","offsetWidth","getMenuByHoveredLayer","contextMenuPartId","leftWallBacksplash","rightWallBacksplash","backsplashLeftWall","backsplashRightWall","Edge","DemoPoints","setPoints","layoutFeatures","getBathroomPointPositionByPartName","pointC","bvScenePoints","relPoint","bvScenePoint","getKitchenPointPosition","currentLayoutType","handleResize","pointResponsive","islandHood","chairs","setEdgeNotInVisualizer","LookUserInput","userInputChange","userInputBlur","onInputBlur","useInputsValidation","required","InputLabelProps","helperText","miteredSectionInterface","miteredSegmentInterface","miteredSegment","waterfallSectionInterface","waterfallSection","waterfallSegmentInterface","waterfallSegment","changeValuePopupInterface","increaseCallback","decreaseCallback","inputChangeCallback","setIframeIntegrationRequest","savePostMessage","loginPostMessage","wishlistLines","savePostData","postMessageToParent","postMessageData","referrer","setIframeIntegrationResponse","iframeIntegrationState","iframeIntegrationRequest","iframeIntegrationResponse","iframeIntegrationRequestType","iframeIntegrationResponseSuccess","handleIFrameMessage","attachEvent","setInputsValidated","LookFeatureOptions","lookActiveFeatureCustomName","lookActiveFeatureCollection","lookActiveFeatureMatchingFeature","lookActiveFeatureMountType","lookActiveFeatureMountHoles","lookActiveFeatureLixilSubCategory","navigationCount","setAvailableOptions","checkCollectionName","maxClickCountReached","featureLabel","optionsButtonClick","storeActiveFeature","GroheFeatureOptions","wizardOptionClick","optionFeature","parentOptionClick","useButtons","compressedDbFeature","parentName","priceWasChanged","customCost","customPrice","compressedCartItem","featureDefinition_id","fabricatorFeatureId","calculatedCost","getCompressedCartItems","units","fabCurrency","getFeatureGroupsProperties","customNames","setFeatureGroupsProperties","cookie","cookiesAll","cookie_ga","getCookie","getCartItemPartIdFix","enableFreeDrawMode","disableFreeDrawMode","createShapeFromFreeDrawPoints","preparedPoints","createShapeFromPoints","minimumShapeArea","maximumShapeArea","maximumLineDistance","pointCords","isClonePointRequired","canPointsBeMoved","shapeCreationParams","polygonLines","polygonArea","polygonLine","createWallFromPointsV2","centerPoint","lockedAngleStep","createShapeFromCorePoints","createPolygonFromCorePoints","HARDCODED_DOMAIN","SqftJsonApi","sqftPost","SHAPE_HARDCODED_PART_IDS","getFreeDrawPoint","pointState","getLockPointPos","getLockedPoint","existingPoint","lockedPosition","lockedPositionOnField","pointV2","angleStep","pointV2PointField","rotateToMouseAngle","closestAngle","leftWall","rightWall","centerWall","frontWall","popoutWall","backWall","ceilingPanels","leftWallSplitter","activeRelatedPart","selectedByUser","Navigation","userHasLoggedIn","navItemToClick","defaultPresetIndexToClick","messageListening","closeVisualizerNavigation","closeMobileNavigationMenu","hoveredZone","menuItemToShow","subMenuItemToShow","getSearchProducts","searchProductRequest","searchAPIDebounced","activeShower","ponyWall","receiveAllFeaturesAndClickFeatureByName","wallExL","exLSubPart","findAndClick","wallExLFeature","itemClick","searchForSameNameWallsBeforeFeatureApply","applyFeature","featureCanChangeShowerSize","applyAllWalls","itemParent","itemIsLocked","exLAndBathtubAndSmallRoom","callMetaMathesFailedPopup","nonCompatibleWith","handleChangeParent","callToiletFailPopup","shouldRecoverWalls","recoverPrevioslySelected","allWallsCanBeApplied","setPrevioslySelected","allWalls","featuresAvailableToClick","getAvailableFeatures","setDefaultPartAfterSubTypeClick","nextSubPartIndex","currentSubPart","subNavigationItem","featureToSet","defaultPreset","finishPresetLoading","currentActiveItemIsLocked","wizardActiveItemIsLocked","lockedFilters","showSmallRoomLayout","presetUnlocked","bvStateHasLockedItems","setWizardStepIndex","wizardGroupsName","currentGroup","selectedValueName","hidden","resetActiveFeature","vanityWizardGroups","showerWallWizardGroups","setWizardFiltersFromActiveItem","wizardConsumers","wizardClients","currentActiveFilters","selectedFilterValueId","doorStyleFilter","doorStyleActiveValue","doorStyleFilterValue","stepName","materialFilter","materialValueId","materialValue","showPositionsPopup","showLayerPositionsModal","eventPosition","contextMenuPosition","contextMenuPonyWall","bindCanvasClick","$scrollList","setShowLoader","LookSideBarShareButtons","outerWidth","screenX","screenLeft","outerHeight","screenY","screenTop","toolbar","status","directories","menubar","scrollbars","resizable","centerscreen","chrome","handleClose","autoFocusItem","data-id","shareClickButton","FormattedMessage","ImageCanvasCommon","drawPropsLayers","updateGliaCanvasImage","createPinchZoom","canUseUpdate","disable","updateLookCanvas","handleOrientationChange","fromDesktopToMobile","navBreakPoint","fromMobileToDesktop","layoutScene","excludedPartIdsFromHover","excludedIndexesFromHover","excludedLayer","existingGreenLayerHoveringIndex","getHoveringLayer","makeHoveringLayer","hoveringLayer","enableLoader","imagesRendered","alreadyRenderedImage","imageRendered","hoveringImage","allowPropsLayers","greenImageIndex","resizedContext","resizedCanvas","backgroundCanvas","windowHover","Window_Default","windowLayerHovering","layersHovering","Window_Covering","allLayers","timeout","hoveredLayerIndex","layersToRender","checkForLayerParts","moveStart","thisX","thisY","imageCanvasScroll2","statusSwipe","detectedSwipeLeft","detectedSwipeRight","currentTranslate","html","tX","tY","delta","nextPosition","visibleCanvasWidth","transform2d","mozTransform","msTransform","oTransform","moveEnd","hoverZones","backgroundImages","setPinchZoom","onlyLayers","onlyStateLayers","needToUpdateCanvas","onTouchStart","onTouchMove","onTouchEnd","Wall_A","Wall_B","Wall_C","Wall_A_Accent_Mask","Global_Shadow_Overlay","Ceiling_Lights","Wall_Lights","Towel_Rack","Body","ShowerDrain","FloorShadow","ExtrusionWallRight","ExtrusionWallRightShadow","Wall","Wall2","WallAccent","WallAccent2","WallShadow","LargeCornerCaddie","Fixture","ShowerHead","ShowerPanCombo","LargeCornerSeat","CornerCaddie","SoapDish","SmallCornerShelf","GrabBar","ExtrusionWallLeftHalfWall","ExtrusionWallLeftShadowHalfWall","Threshold","ThresholdShadow","ShowerDoor","ShowerDoorHandle","ExtrusionWallLeft","ExtrusionWallLeftShadow","Overlay","PonyWall","PonyWallShadow","PonyWallCap","PonyWallCapShadow","PonyWallGlass","Steam60in","0","TubCombo","Liner","BathTub","FixtureFloorMount","Base","Spa","Top","Toilet","CounterTop","OnScreenKeyboard","componentWillUnmount","keyboardFrame","detach","appendTo","handleShowKeyboard","handleOutsideClick","getFields","$parent","$parentInput","parentInput","$input","oskInputId","tryBindToParent","fields","setKBPosition","lightbox","is","css","draggable","blockOutsideClick","onShow","inputFocused","passwordify","changeValue","runKeyStroke","selStart","selEnd","inc","isUpperCase","select","setSelectionRange","setParentValue","done","mouseUp","renderEmailPanel","keyValue","renderNumericKeyboard","tabIndex","node","prependTo","$keyboardFrame","arrowKeys","mainFrameClass","keyValue2","raw","rightSide","LookFeatureRemoveButton","isIcon","isList","alreadyDisabled","updateForOldUI","deleteButtonClick","BackgroundBG","ShowerWall","CenterWall","ShowerWallAccent","Accessories","WindowBody","WindowKits","LargeCornerCaddie2","LargeCornerSeat2","CornerCaddie2","SoapDish2","SoapDish3","GrabBar2","GrabBar3","CornerShelf1","CornerShelf2","CornerShelf3","CornerShelf4","CornerShelf5","CornerShelf6","ShowerPod","LargeShelf","ShampooShelf","Seats","ShowerRod","TowelBar","ShowerPan","ShowerFixture","ShowerFixture2","ShowerDoor2","CeilingPanels","PaperHolder","ToiletPaper","ToiletPaperHolder","Towel","LightFixture","LampFixture","DecorWindow","DecorSeat","Bathtub","BathTubFixture","BathTubBody","sizeFactor","ShowerAccessories","largeCornerCaddie","cornerCaddie","smallCornerShelf","showerPod","windowBody","windowKits","largeShelf","shampooShelf","towelBar","caddie_type","Layout31","area2Codes","createDeliverySections","cartItemsList","deliveries","cartItemShippingCost","cartItemShippingName","cartItemShippingTime","cartItemShippingCode","existingDelivery","setCartItemsShipping","shippingOptions","shippingForItem","shippingObject","firstOption","shippingCode","area3Codes","getAreaCost","deliveryCost","materialsQuantity","paymentState","Quantity","minValue","handleOnKeyDown","allowDecimals","handleChangeValue","getColor","hideQuantity","squared","htmlFor","readOnly","getDeviceType","opera","DEVICE_TYPE","iOS","Android","Desktop","unknown","handleResizeClick","handleSpacerClick","handleRotateClick","handleWallClick","handleDuplicateClick","handleAngleClick","handleTextClick","handleResetClick","handleMiteredClick","handleUnderlaymentClick","handleFreeFormClick","addThicknessPopup","rgx","TextInput","inputElement","createRef","editing","getUpdatedValue","finishEditing","handleKeyDown","autoComplete","usePropsValue","LookDropdown","selectedItem","selectItemClick","selectLabel","maxItems","changeErrorsObject","textOnly","setOpened","selectElement","checkForError","selectItemHeight","preText","endIcon","selectItem","selectItemIndex","isSelected","handleSelectItemClick","LookFeatureSku","hideSku","withoutCheckout","sendFeatures","lookImage","LookListFeature","fromDesignRecommended","isAllWallsTutorialItem","featureElement","noFeatureSection","currentType","showMatchRadio","positionInList","finished","showAllWalls","viewTypeFour","isLockedAndViewTypeFour","Consumer","compatabilityLogic","listFeatureClick","DesktopHeader","toggleSubNav","subNavVisible","handleLogoClick","renderSubNav","nav","displayOrder","rel","showInstallations","addLaborCustomer","addLaborInstaller","instGroup","autoAddWithProduct","logoStyles","initialFlowIsRunning","initialFlowEnabled","hideLogo","received","isShoppingCartPage","hideTopButtons","uploadsAndNotes","questionShown","DesktopHeaderWithRouter","ShoppingCart","getRecentlyViewedItems","recentlyViewedItems","recentItem","recentItemId","getFinalButton","intlText","handleCheckOut","showBackToDashboard","leadCaptureOnQuote","handleSaveClick","handleStartOverClick","assignButtonsToShow","getFieldValue","getFirstUnfilledCustomField","contractsContext","signIsRequired","showReceiptInContract","customFieldInfo","fieldsNeeded","isEditable","isCheckBox","pageRect","ury","fieldIndexOnPage","getFieldNameWithoutRequired","getFieldCoords","contractFields","fieldsCoords","isCustom","fieldCoords","idx","getAlreadyFilledSignatureField","fieldName","signatureValue","withoutRequiredSignatureName","isSignature","compareName","getLookRowHeight","LookVirtualizedList","renderList","contentHeight","onScrollHandler","loadingCount","columnCount","listSettings","columnWidth","rowCount","rowHeight","overscanRowCount","showScrollingPlaceholder","useDynamicRowHeight","cellRenderer","columnIndex","rowIndex","noRowsRenderer","GroheFeatureQuantity","hideTitle","MIN","updateQuantity","quan","fromButton","analyticsAdjust","pattern","moreInfoType","GroheCartBackButton","backButtonClick","_extends","arguments","_defineProperty","configurable","writable","scope","DEFAULT_SCOPE","SHOW","HIDE","RESET","_ref","_ref$scope","SIMILAR_FILTER_GROUP_NAME","getFeaturesCollectionsList","cartFeatureFilters","featuresCollectionsList","cartFeatureFilter","collectionObject","colObject","getSimilarItemInfoObject","addedCountertops","featureCollection","totalCountertopsQuantity","fromCartItemName","countertopTotalPrice","subTotalPrice","filterValueName","TRANSLATES","getCustomJson","fakeIntl","isEnglish","customJsonResponse","translations","setTranslations","renderLanguage","setRenderLanguage","prevLanguage","prevWasCreatedFromFabricator","parseTranslatesResponse","trans","translatesArray","translatesArrayIndex","translateValue","translateValueIndex","getCustomTranslates","transDoc","localeString","sharedName","loadTranslates","responseMain","customTranslates","responseLowes","jsonFile","responseCaes","defaultLocale","pointsCords","clonePoint","pointCord","filteredRows","newRow","lastRow","lastRowId","getDefaultManualCalcRowEdge","DEFAULT_MANUAL_CALC_ROW","newList","isShowTypesList","getEdgesPlaceholder","rectangleWidth","RECTANGLE_WIDTH","rectangleHeight","RECTANGLE_HEIGHT","RECTANGLE_HEIGHT_METRIC","getParsedSqftData","sqftPassedData","previouslyAddedSqftFeatures","sqftFeatures","sqftFeaturesObj","availablePartIdsKey","createSqftFeaturesObj","featuresPassed","featuresPassedGroups","shouldUseRelatedParentFeatureAsMain","prepareCountertopFeaturesPassed","prepareSlabFeaturesPassed","prepareEdgesAndBacksplashesManual","prepareEdgesAndBacksplashes","prepareCrownMoldings","prepareDefaultFeatureObjectGrouped","prepareDefaultFeatureObject","sections","prepareHandles","featurePassed","prepareSQFTFeatures","preparedFeaturesGroups","groupTitle","isRecalculateSlabNeeded","recalculateSlabs","getSimilarFeatureGroup","useStonePricing","initialQuantity","useSlabImagePricing","parentList","firstOpen","splitPriceBetweenSlabsMaterial","setPriceIntoSingleFeature","commonSharedFeatureNames","getCommonSharedFeatureNames","sharedObject","biggestFeature","sortOrder","isBiggestFeature","quantityRounded","isQuantityAddedToBiggestFeature","sortSqftFeatures","sortSharedObject","updateSharedObjectWithGroupQuantity","alreadyAdded","quantityPerFeature","totalFeaturesInGroup","effectivePartId","getQuantityFromCalculator","getFakePriceFromCalculator","getFeatureFromSQFT","isSqftFromFeature","featureToCheckUnit","featureUnit","quantityGroup","slabImagesGrouped","slabImagesGroup","countertopExist","centerIslandExist","manCountertopObject","handlesForDoors","handlesModel","handlesForDrawers","sqftPassedDataHandler","passedObject","groupByKey","filteredData","groupedByKey","groupKey","quantityInGroup","rest","sqftData","edgeLength","addedEdge","fakePrice","slabAlreadyInTheCart","slabImageAreaGroup","previouslyAddedSqftFeature","idToFind","slabParentFeatureGroup","getFeatureFromCalculatorPassedId","hasSamePartIdWithPreviouslyAddedFeature","foundNavItem","QtCategoryName","SHAPE_LABELS","updateShape","initLabel","firstShapeLine","setLabelText","thirdShapeLine","labelTextColor","isTitle","lineOffset","LayoutCommonNew","getFeatureFromAllLayouts","featuresToLoad","childSubPart","featureLoaded","qtCategoryHasBeenChanged","changedSubPart","needToLoadFeature","useNames","needToChangeLayout","isFake","disabled_parts","previouslySelectedItem","getDefaultFeature","partIdPosition","additionalFeature","setCartStateAndUserStateFromBvState","mValue","LayoutCommon","selectedLayoutFeatures","getNotAvailableInVisualizerFeatures","notInVisualizerFeaturesThatLeft","featureSplittedName","allNotAvailableFeatures","additionalSet","neededDbFeatures","featureGroupFeatures","needToLoadFeatureGroupsFeatures","_navItemsCount","checkedAfterReceived","partsToShow","enabledParts","thirdParam","nItems","bvGroups","groupKeys","withShadow","ri","fixFeatureMetaData","dbFeatures","forParentGroup","applyCustomConfigurations","forNextBvState","loadedDbFeatures","allDbFeaturesToCheck","employeesOnly","updateExistingFeature","fixFeatureBeforeLoad","loaded","setSpecificRules","withOtherGroups","skuNumber","allLayouts","withSharedFeatureName","propToSearch","featureGroupFound","searchFrom","allParents","sameSkuFeatures","sameSide","displayLogicCartItems","useSqftCartPopup","disabledPartIds","getDisabledFeatures","returnAllData","addSpecificPropertiesToLocalStorage","addDisabledPartsToLocalStorage","getActiveInstallations","addCartAndUserStatesToLocalStorage","checkAllLayouts","setCustomPrices","ciFeature","partDataHasLockedItems","isComplex","displayType","unitText","hasFeatures","anotherFg","qtCategoryId","hasFeaturePropertyName","bathroom","kitchen","fireplace","laundryroom","hasBVFeatures","hasKVFeatures","dbName2","addSubPartProperties","_subParts","newSubParts","qtCategorySubPartNavItem","isWordpressPlugin","getCartItemsFromBvState","defaultType","forceReturn","addCustomLayers","zSort","layerToReturn","bgImg","zIndexesObject","receiveAllFeatures","subItems","subItem","subPartsObject","qtCategoryIndex","excludedGroups","excludedGroupName","setCartAndUserState","hasPreviouslySavedItem","featureIndex","strippedGroupName","strippedCurrentName","inGeneral","qtCategoryToSearch","searchPartOfId","valueObj","DASHBOARD_MESSAGING_ACTIONS","updateCartItems","setCostPrices","jobDataAfterUpdate","setReferralData","isDrawFinished","addedPoints","dimensionToMouse","drawLineToMouse","outlineColor","drawType","useLockedPoints","currentNumericInput","clickedBackSplashButton","createDimensionToMouse","updateMeasurementToMousePosition","isLengthKeyCode","newValue","isBackspaceKeyCode","isDeleteKeyCode","createPointFromCurrentNumericInput","drawWall","lastPoint","isPointExist","segmentLength","newCordsAtDistance","drawStart","mPosOnField","lockedPointPos","lockPointOnField","isInited","isFitDistanceWithLastPoint","isMousePosFitDistanceWithLastPoint","wallPointLocked","getWallLockedPoint","wallPoint","getWallPoint","addLineDimensions","numberText","setSegmentLengthFromNumberValue","setSegmentLength","shouldResetPoints","addedPoint","dimension","createWall","changeFirstPointCoordinatesToCreate45or90DegAngleWithTheLastPoint","createShape","secondPoint","lockPointPos","intersectionPointOnField","forCrownMolding","hoodIsVisible","microwaveIsVisible","AxiosInstance","baseURL","leadApiGet","leadApiPost","currentBottomTub","ExternallWall","isComplete","wallName","matchesByBindings","getShadowConditions","hardCodedName","activeShowerGroup","zIndexShadow","ponyWallFeature","BacksplashSelect","handleBacksplashItemClick","getBacksplashPart","getBackplashTypes","renderButtons","CommonFeatureItemsMethods","switchToFeatureInfo","scrollToRelatedFeatureId","featureInfo","setCommonStuff","nextCatName","neededCat","featureParentName","$scrollableDiv","scrollToArea","scrollToDiv","offsetTop","BodySwipable","getScrolllableElement","scrollableRef","scrollableSelector","handleOnMouseDown","swipeActive","scrollableElement","currentScrollLeft","handleOnMouseMove","handleOnMouseUp","ShareButton","clickShareAfterLogin","toggleShareList","shareListOpened","checkForLoggedIn","share","faceBookButtonClick","getShareButtons","data-share","getShareList","shareButton","PingPilotButton","pingButton","pingButtonClick","WrappedComponent","usePingWidget","scriptAdded","dataSignal","setShopPageOpened","setShopLastPageVisited","shopLastPageVisited","setShopPageLeaved","shopPageLeaved","decor","center_wall","background_bg","x1Percentage","x2Percentage","y1Percentage","y2Percentage","clickLogic","showNotCompatibleViewConditions","skipNotCompatible","parseFabricatorSettings","kitchenSettings","bathroomSettings","fireplaceSettings","laundryRoomSettings","finalSettings","getFinalSettings","finalKvSettings","finalBvSettings","finalFPSettings","finalLRSettings","fabricatorHardcode","useIMEAPI","useIMEAPI_PartnerId","taxObject","isCustomEditableTax","currentSettingsProperty","nextSettings","useShipperHQ","hideYourListButton","dashboardUserPermissions","permission","ProtectedAreaId","AccessRights","getDashboardModeSettings","parseFabricatorSettingsOLD","kitchenToggles","oldKey","newKey","checkOut","generalProperties","settingsObject","stateSettings","fabricatorResponse","mUnit","leadCaptureProduct","measurement","showLanguageSelect","useVisualizerSwitching","callForPricing","enableASProductSync","enableGProductSync","CONTENT_TYPES","searchCustomer","newCustomer","contractSelect","PREFERRED_COMMUNICATION_METHODS","HOW_DID_YOU_HEAR_ABOUT_US_OPTIONS","sqftVisited","visited","closeSQFTCalc","useCloseSQFTCalc","handleAddToQuoteClick","setDataToQt","stayOnSqft","isLocationNotUsesPopup","setEdgesQuantity","setRadiusQuantity","setBacksplashesQuantity","setCountertopsQuantity","saveSQFTHistory","dataEdges","edgesIdsObject","edgeId","setSubPartQuantity","radiusCount","angles","dataBacksplashes","countertopSquareFeet","centerIslandCountertopSquareFeet","countertopIsAdded","countertopIsAddedToQtCategory","centerIslandCountertopIsAdded","updateCurrentFeature","setFeatureGroupSqftQuantity","setSqftQuantityToSubPartFinal","sqftQuantity","setAdminLoginPopupVisible","adminLoginPopupVisible","setAdminLogoutVisible","adminLogoutVisible","setAdminToolSettingsPopupVisible","adminToolSettingsPopupVisible","adminToolSettingsPopupFeature","ARButtonGoogleWebXR","modelViewer","activateAR","SQFTFeaturesHeader","isFiltersOpened","protoTypes","featureTitleId","LookListMainFeature","cItemsAddedToParentCart","withShipping","bundleExpanded","setBundleExpanded","outOfStock","expandBundleButton","isBundle","inStock","isBundleParent","HomeButton","MobileMenu","handleItemClick","bvDataPart","showSubNav","handleMobileBlur","goToMaterialsPageCommon","handleBack","getMenuItems","smallButton","smallButtonClassName","data-index","FeatureInfoPrice","mainFeaturePrice","showDiscount","unitAfter","accItemQuantity","salePercentage","priceOld","getListItemHeight","itemsList","widthPercentage","shouldReplaceSelectionInfoFeature","featureG","SelectionGridItem","goToFeatureInfo","checkIfFeatureSelected","wizardSkipAndAddToCartButtonVisible","quoteOrUnlockButtonVisible","isAddToCartButtonVisible","infoButtonVisible","updatedToolSettings","getDifferentToolSettings","handleFeatureClick","currentFeatureId","adminState","shiftFilterTitleInterface","shiftTitleIndex","elementIndex","positionTop","columnPosition","HardcodedCanvasImage","setStaticCanvasImage","currentQtCat","onLoadStart","retryConnectionClick","clipPath","LookFeaturePairPrice","GroheFeatureSQFTButton","featureOpened","handleSQFTButtonClick","GroheFeatureSoldOut","setGroheWizardOpened","wizardOpened","setGroheWizardName","wizardName","setGroheWizardStep","LookMainCategory","lookViewTypeWasChanged","navItemsLists","setNavItemsLists","firstOpenedFeature","setFirstOpenedFeature","firstOpenedConditions","setFirstOpenedConditions","shouldRunAnalytics","setShouldRunAnalytics","prevActiveCategory","setReceivedFeatures","checkPassed","clickedOnItem","navItemIndex","currentPositionInList","nItemsLists","firstLockedIndex","firstUnlockedIndex","withGrid","reqFeatures","desRecNavItemList","navItemList","regularNavItemList","notMatchingNavItemList","scrollObject","onEventScrollHandler","LookFeatureRevertButton","revertButtonClick","zoomToFeatureGroup","LookWizardContentButtons","onSkipClick","previousClick","nextClick","skipEnabled","isCompletedStep","nextDisabled","__tryAddToInstallation","__tryRemoveFromInstallations","__toggleInstallationServiceUsage","getInstallationCost","__installations","hourly","fabricatorFeature_id","fabricatorInstallation_id","hasChanges","ID","__getInstallations","inst","installation","installationName","instGroupIdx","serviceIdx","customerAdd","getAddressFromObject","displayAddress","addressPart","PrintDocumentInfo","View","Text","customerName","customerPhone","customerAddress","customerHasShippingAddress","threeColumns","main","sectionLeft","sectionTwo","mainTitle","mainText","mainTextEmail","sectionCenter","getCartItemName","similarProductsWidth","mainBarWidth","filterGroupInterface","visualType","filterValueInterface","navigationFilterValueInterface","handleHttpError","getResponse","shouldUseKvConfigDomain","HOST_NAME","checkApiError","__error__","ok","statusMessage","reason","isFormData","method","Headers","loadTexture","gl","oc","texture","createTexture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","texImage2D","RGBA","UNSIGNED_BYTE","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","setArrays","prog","vertex_buffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","Float32Array","STATIC_DRAW","getAttribLocation","vertexAttribPointer","FLOAT","enableVertexAttribArray","prepareWebGL","vertSh","createShader","VERTEX_SHADER","shaderSource","compileShader","fragSh","FRAGMENT_SHADER","createProgram","attachShader","linkProgram","useProgram","viewport","webglCanvas","useNewCanvas","wgl","uSampler","getUniformLocation","uniform1i","activeTexture","TEXTURE0","clearColor","clear","COLOR_BUFFER_BIT","drawArrays","TRIANGLES","longPressInterval","longPressDelay","isClosed","adjustInputValue","dispatchEvent","Event","longPressTimeout","delayTimeout","startLongPress","stopLongPress","incrementButton","textContent","onmousedown","onmouseup","onmouseleave","decrementButton","onchange","closeInput","moveElement","newX","newY","speed","oldX","offsetLeft","oldY","distanceX","distanceY","startTime","performance","now","currentTime","elapsedTime","progress","delay","DrawImage","htmlImg","svgImageId","isScale","svgImageDataURI","drawSvg","getHorizontalLineIntersectionPoints","mousePosOnFiled","verticalLinePoint1","verticalLinePoint2","getClosestIntersectionPoints","intersectionXPointAndLine1","intersectionXPointAndLine2","getVerticalLineIntersectionPoints","intersectionPointAndLine1","intersectionPointAndLine2","intersectionPoint1","intersectionPoint2","closestPont","getIntersectionPointsAndLines","pointAndLine","closestPont1","closestPont2","getCircleLineIntersection","circleX","circleY","circleRadius","lineX1","lineY1","lineX2","lineY2","t1","t2","RenderCabinets","getDiagonalPointsForTheSquare","returnPoints","pointIndex","previous","diagonalPoint","currentPoint","squarePoint","linePointId","crownMoldingPoint","fromPointField","toPointField","MiteredOverlay","sectionIndex","hoveredText","pointsDistance","heightMetric","thicknessMetric","maxSegmentPriority","minMiteredSize","measurementMargin","dragPointMargin","rulerMargin","heightMargin","sectionIndexMargin","sectionArrowWidth","letterMargin","thicknessMargin","movePointOffset","lineTextColor","deleteFillStyle","_segments","miteredTextParameters","setMiteredPoints","setSegments","movePointInOrStop","biggestLineCord","smallestLineCord","stopPointLeft","stopPointRight","moveStopPoints","smallestPointStopped","biggestPointStopped","lengthDiff","movePoint","moveMeasurements","getMousePosPointDiff","sameOrientation","getMiteredTextParameter","isMiteredPointMoving","preparePoints","prepareMeasurements","prepareHeight","initPoint","exportSegment","importMitered","preparePoint","shouldAddTwoPointsInTheMiddle","point33","point66","addMeasurementBetweenPoints","xMarginHeight","yMarginHeight","posHeight","heightValue","setSegmentHeightFromNumberValue","endPoint","updateSegmentsLength","updateSegmentThicknessPos","importSegment","point1Index","lengthText","getPointBetweenCords","closestIndex","isPrev","closestPointField","addPointBetweenPoints","getSegmentBetweenPoints","point2Index","getSegmentPointsBySegment","segmentIndex","removeMeasurementBetweenPoints","removeIndex","length2","updateCornerPoints","updateSectionHeightPos","setPriority","resizeMiteredSegment","setSegmentHeight","setSegmentThicknessFromNumberValue","setSegmentThickness","getSegmentByNumberText","getResizedSegmentsWithoutPriority","closestLeft","closestRight","getResizedSegmentsFreeSpace","getResizedSegmentsByPriority","minPrevSegment","minNextSegment","prevSegments","nextSegments","movePointWithMouse","resizeMiteredSegmentFreeSpace","resizeMiteredSegmentWithoutPriority","resizeMiteredSegmentWithPriority","minNextSegmentIndex","minPrevSegmentIndex","segmentPoint1","segmentPoint2","moveAllNextPoints","segmentBetweenPoint2","moveAllPrevPoints","segmentBetweenPoint1","getLeftRightStopPoint","renderTopBlueLine","renderRuler","renderLetter","renderHeight","renderSectionIndex","pointsToRender","parallelPointFrom","parallelPointTo","drawFlatArrow","renderThickness","xMarginLine","yMarginLine","xMarginImage","yMarginImage","thicknessValue","renderSectionIndexOld","xWidth","yWidth","xMarginValue","yMarginValue","renderPos","renderDoubleCircle","isMouseOverPoint","slabState","slabWorkspacePos","shapeRegularPointField","shapeSlabPointField","clearSlabLeftPart","renderLinesWithoutStroke","slabIndex","movableImagePosition","movableImagePointField","movableImageSize","shapeCenterOffset","drawSlabMidDivider","renderSlabWorkspace","drawSlabRightPart","renderMeasurementArrows","getMeasurementPoints","renderMeasurementLength","_self","cfg","clearHistory","getHistoryStore","restoreShapesFromHistory","checkForChangesApplied","shapesChanged","historyShape","historyShapetoFind","navRadius","arcButtons","angleButtons","closeButton","cornerContainer","radiusContainer","measure","angleButton_onClick","handleButtonClick","arcButton_onClick","imgWidth","imgHeight","domImg","$img","ratio","setImage","renderCursor","hoverPoint","hoverMiteredPoint","hoverSegmentCorner","TranslatesProvider","createRadiusElements","createCornerElements","mPos","DEFAULT_COUNTERTOP_HEIGHT","DEFAULT_BACKSPLASH_HEIGHT","MIN_CABINET_HOOD_HEIGHT","cabinetPositions","prepareCabinetsPositions","countertopPositions","CountertopPositions","prepareCountertopPositions","wallPositions","WallPositions","prepareWallPositions","shapePosition","prepareRegularCabinetSet","prepareImageCabinetSet","shapeDepth","radians","centerZ","offsetX","offsetZ","zCorrection","z","getShapeCorrectedPos","thetaRad","xInit","yInit","targetWidth","getShapeDepth","targetDepth","originPointOnWorkspace","material_url","CabinetsHelper","getCabinetPosY","threeDPos","getHandles","appliancePosition","adjustApplianceModelPosition","partIdsCoveredByCountertop","textureUrl","URLByFeatureName","getCountertopTexture","groupShapes","lastHeight","isDishwasher","prepareCountertopForGroup","posA","posB","countertopCabinets","countertopCabinet","countertopCabinetHeight","contours","overhang","getWallTexture","currentShapeHeight","getSnappedWithShape","upperCabinetHighestCabinetValue","getHighestCabinetValue","tallCabinetHighestCabinetValue","handle3dURL","sqftResourcesManager","getLineByAttachedItemId","attachedItem","ShapeAbsolute","__shape","__intersectionPoints","__absolutePos","__snappedWithShape","__snappedShapeGroup","setIntersectionsPoints","shapeGroup","setMinLengthToIntersectionPoints","__minLengthToIntersectionPoints","absolutePosition","movingLine","baseLineDistance","newFrom","newTo","pointDistance2","horizontalEastLineExpand","horizontalWestLineExpand","verticalSouthLineExpand","verticalNorthLineExpand","mathRound","pointOnTheLineFrom","pointOnTheLineTo","prevLineDirection","nextLineDirection","prevPrevLine","nextNextLine","prevPrevLineDirection","nextNextLineDirection","getMaxResizeWidth","RenderFreeDraw","drawLines","nextPointField","drawLastLine","drawLineFromPointV2ToMouse","shouldUseLockedMode","drawLineFromPointV2ToMouseLocked","drawLineFromPointV2ToMouseFree","renderLinesBetweenPoints","renderLines","LineCorner","additionalOutlineHoverWidth","isMouseOverAngle","isMouseOverCornerLine","getOutlineAngleLineField","getAngleLineField","cordCornerFrom","cordCornerTo","isLineCornerInner","pointIndent","pointOnTheBlueLine","pointOnTheBlueNextLine","cordCornerIndent","UiSelect","getSelectText","itemText","baseClass","setAvailableFilterValues","WindowParent","otherParent","shower_tub_combo_is_active","bottom_tub","shower_floor_is_active","setShowerHandType","showerRod","robeHook","paperHolder","toiletBrush","towelTowelRing","towelTowelBar","towelTowelHook","EnclosureCommon","bathParent","relName","bathtubParent","bathTubBody","VanityCommon","counterTopSize","activeSideMeta","getActiveMatchingMetaFromRelatedItem","neededFeatureGroupsToCheckOnShowerSizeChange","showerPanComboParent","newSizeCondition","newConditions","loadAdditionalVisualizerGroups","additionalFeatures","qtCategoriesResponse","loadVisualizer","groupsResponse","SET_APPOINTMENT_DATE","SET_APPOINTMENT_TIME","SET_APPOINTMENT_TIME_STEP_ACTIVE","SET_AVAILABLE_APPOINTMENTS","SET_APPOINTMENTS_NOT_AVAILABLE","SET_SALES_REP_ID","setAvailableAppointments","setAppointmentDate","setAppointmentTime","timeSlot","setAppointmentTimeStepActive","timeStepIsActive","availableAppointmentDates","appointmentState","appointmentDate","appointmentTimeSlot","formattedToMatchApiDate","formatCalendarDateToMatchAvailableDate","selectedLixilDateObject","dateObject","salesRepAppointmentDate","salesRepsInSlots","timeSlotObject","setSalesRepId","setAppointmentsNotAvailable","appointmentsNotAvailable","salesRepID","getCommonLixilPostData","userLocation","productId","productName","getLixilCampaignInfo","Product","LIXIL_PRODUCT_TYPES","srBathing","contactData","installationAddress","zipcode","streetName","streetNumber","productInfo","checkLixilCalendar","postCalendarData","postLixilCalendar","postCalendarResponse","salesRepAvailability","availableSalesReps","getLixilSalesRep","postLixilGetSalesRep","postSalesRepResponse","calendarDate","withSlashes","day","getDate","month","getMonth","getSelectedLixilDateObject","appDate","layoutThumbnails","globalShadowParent","Window","shower_interior_wall_accent_parts","shower_interior_wall_parts","left_shower_wall_type","partPredicate","bvStateKey","shower_type","shower_parts","shower_part_id","shower_accent_wall_part_id","accordingPart","showerFeature","availableParts","bathTub","bathtub_type","showerAccessoriesParent","CheckBox","onChecked","SelectionMobileViewSwitchers","NavigationItemsList","itemClickCount","reorderItems","getActiveFeatureName","uniquePartNamesArray","getSelectedWallIndexes","selectedFirstItemIndex","otherSelectedWallsIndexes","Map","uniquePartName","foundIndex","getLockedFeature","getActiveItemIndex","isActiveItemIndex","activeFeatureId","indexesToReplace","selectedExist","reOrderedFeatures","featuresToPlaceFirst","navItemToReplace","checkForSelectedAccessories","getNavItemsList","reorderedFeatures","isPulsating","currentFeatureCartItemsCount","stoneFeature","customClassName","largeThumbnail","getLoadingFeatures","onDesktopNavigationScroll","scrollWidth","getNewFeaturesOnScroll","onMobileNavigationScroll","finalScrollPosition","featureReceivingStarted","additionalFeaturesLoading","finishScrollRequest","shouldUpdateNavItems","needToUpdate","parentItemPassed","useNewWizardFeaturesRequestsLogic","additionalFeaturesOnScroll","topCabinetModuleSystem","bottomCabinetModuleSystem","getModuleCombinations","fridgeShadow","centerIslandshadow","LayoutNavigationItem","imageOnly","minHeight","ScheduleButton","scheduleButtonOnClick","getAnalyticsEvent","getSchedulingButton","Tutorial","stateProperty","highlightElement","stringNum","actionCartItems","stateCartItems","stateCartItem","sameCartItemIndex","checkForAddToCartFeaturesWithDisplayLogic","checkHardcodedRulesItems","oldItem","cartItemToDeleteIndex","isRecalculateSlabsInCartNeeded","recalculateSlabsInCart","isSlabsStillExistInCart","removeFakePriceFromCartItems","cI","activeApplyPopupItem","existingCartItemIndex","newCi","checkoutPopupVisible","depositVisible","depositCallback","newState","manualTaxEntered","supportedCountries","zipCodeRg","supportedCountriesList","displayLogicCartItem","allowMinimumChargeConditions","countertopItems","accumulator","MINIMUM_SQFT","MINIMUM_SQFT_2","theMostValuableCartItem","currentMostFeatureCost","checkLowesHardcodedRulesItems","uniqueSharedNames","uniqueSharedName","matchingItems","checkCaesHardcodedRulesItems","similarFeatures","isSameNameFeature","UserFieldErrors","setTerms","privacyPolicyUrl","getPrivacyPolicyUrl","termsResponse","anchorScroll","anchor","closeLixilUi","leaveSqft","customerInterface","employeeInterface","customerError","subPartIsDone","relatedIem","SubPartDoneCheckMark","SqftFeaturesPopup3dButtons","threeDButtonClick","arButtonClick","threeDButtonID","augButtonID","LookInput","setInputValue","blockClassName","endAdornment","getEditFeaturesRequestData","postDiffData","featuresToUpdate","toolSettingsDiff","getSameNameFeatures","toolSetting","nameToCompare","newToolSettings","oldToolSettings","existingObject","setNewLayout","setNextLayout","shapeSize","setRoomLayouts","updatedRoomLayouts","roomLayoutIndex","roomIndex","expanded","shapesLength","data-side","data-layout","shouldReturnURL","exporter","USDZExporter","parseAsync","arraybuffer","exportSceneToUSDZ","usdzUrl","maxSize","createImageBitmap","imageBitmap","needsUpdate","exportSceneToGLB","GLTFExporter","blobToBase64","reader","FileReader","onloadend","readAsDataURL","compressMeshForMobileDevices","mesh","originalMaterial","resizeExistingTexture","anisotropy","generateMipmaps","minFilter","THREE","LinearFilter","magFilter","compressTexture","webpDataUrl","compressedTexture","TextureLoader","MultiLoader","useCabinetLoader","shouldGetModelsOnlyWithThirdPartyAR3DUrls","featuresData","setFeaturesData","setIsLoading","newFeaturesData","rows","newViewType","getViewIcon","SqftOptionsRelatedItemList","shouldSortByWidth","activeItemIndex","setActiveItemIndex","setLoading","setParentFeature","useGridDimensions","gridWidth","gridHeight","expandedGroheFiltersSearchText","relatedItemsList","emptyUrlsLog","getGridColumnDimensions","LookVirtualizedListLoadingItem","LookFeaturePriceLocked","LookFilters","wrapperStyles","isRelatedItemsFilters","shouldCloseLevel3Sidebar","LookPolicyLinks","isSimple","openLink","linkKey","ancestorOrigins","openUrl","sessionEnded","tempId","stringifiedParams","withHashUrl","LookSidebar","popupCloseClick","highLightForDemo","stylePopups","stylePopupOnMobile","popupType","sidebarButtonClicked","showRoomLayoutsButton","sendAuthRequest","twoFALoading","twoFAToken","TwoFaCodeInput","setAuthCode","inValidCode","setInValidCode","isBlurred","setIsBlurred","checkCode","newAuthCode","currentLocation","LookWizardSectionListFeature","applyWizardItemClick","propToMatch","nameLength","ShoppingCartButton","dropdownVisible","setDropdownVisible","activeLanguage","newVisible","languageIndex","handleLocaleClick","getLanguageName","toggleShowAdvancedQuoting","setAdvancedQuotingSearchItem","advancedQuotingSearchItem","InstView","closeInstallationView","unmount","FeatureInfoPriceLocked","handlePriceLockClick","FeatureInfoDescription","pros","SelectionGridWizardGroupItem","isRowItem","wizardItemClick","clickOnLogic","getWizardFeatureAsync","NotInVisualizerView","getThumbnail","allVisualizerNotAvailable","goToBV","checkForDeletePopup","fromDelete","removeCartItemsWithQuoteIndex","cartItemsToRemove","checkForWizardPreviousChanges","LookFeatureNotInStock","lookActiveFeatureStockCount","GroheCategoriesMenu","isAccessory","showWizardItems","isShopPage","lmFeature","ACCESSORIES","acc_groups","GroheVirtualizedList","mainContent","parentPositions","GroheCartColumns","isShort","allTaxes","instTaxes","showTaxes","showInstTaxes","showTotal","LockedPrice","taxObjectIndex","taxTotal","taxName","nameIntl","getTaxColumn","LookWizard","closeCompatability","wizardSections","LookCompatabilitySection","compatabilityContentElem","closeButtonClick","BathroomVisualizer","baseResponse","setVisualizerInfo","showTutorial","TERMINATING_ANIMATION_DURATION","ANIMATION_DURATION","PROGRESS_INCREASE","MAX_PROGRESS","UPDATE_TIME","_createClass","defineProperties","descriptor","Constructor","protoProps","staticProps","_react","_react2","_reactLifecyclesCompat","_propTypes","_reactRedux","_classCallCheck","TypeError","_possibleConstructorReturn","ReferenceError","_Component","_temp","_this","_len","args","_key","__proto__","getPrototypeOf","terminatingAnimationTimeoutId","newPercent","progressIncrease","simulateProgress","_ref2","maxProgress","subClass","superClass","setPrototypeOf","_inherits","prevProps","stop","progressIntervalId","updateTime","terminatingAnimationDuration","isShown","showFastActions","animationDuration","willChange","renderComponent","shouldStart","shouldStop","polyfill","ConnectedLoadingBar","loadingBar","lightBlue","bold","getStyles","Font","family","StyleSheet","paddingTop","paddingBottom","paddingHorizontal","pageAS","header","marginBottom","flexDirection","alignItems","justifyContent","headerInfo","headerLogo","flex","headerLogoAS","paddingLeft","paddingRight","headerLogoImage","alignSelf","objectFit","headerText","headerTextBold","specSheet","headerTextASSheet","headerTextASInfo","headerTextValue","sectionRight","borderBottomWidth","borderBottomColor","borderLeftColor","borderLeftWidth","borderLeftStyle","roomTitle","padding","textTransform","roomBody","subPartTitle","marginRight","marginLeft","cartItemWithThumbnail","cartItemWithThumbnailBody","cartItemThumbnail","borderWidth","borderColor","borderRadius","flexBasis","cartItemThumbnailImage","cartItemSkuFullWidth","cartItemDescription","cartItemName","cartItemNameBig","cartItemNameCentered","cartItemInfo","cartItemUnit","flexGrow","flexShrink","wizardItemDescription","cartItemUnitSKU","cartItemUnitItem","cartItemPrice","cartItemNote","borderStyle","cartItemSimilar","cartItemSimilarTitle","cartItemSimilarTitleBundled","cartItemBundled","cartItemSimilarTitlePadding","cartItemSimilarContent","cartItemSimilarContentCell","cartItemSimilarItem","borderBottomStyle","cartItemSimilarItemNoBorder","cartItemSimilarItemBlock","cartItemSimilarItemName","cartItemSimilarItemLabel","cartItemSimilarItemPrice","cartItemSimilarItemExample","roomTotal","marginVertical","roomTotalSecond","roomTotalText","roomTotalAmount","footer","footerLeft","notification","notificationMargin","notificationImage","marginHorizontal","notificationText","totalSectionFirst","totalSection","totalSectionText","totalSectionAmount","totalSectionFinal","totalSectionAmountFinal","pageNumber","bottom","signature","signatureText","borderTopWidth","borderTopColor","borderTopStyle","signatureImage","PrintDocumentBodyCartItem","isComplexMultipliedUsed","priceTotal","getFeatureQuantity","hideUnitPrice","displayFake","bundleProducts","wrap","uri","fixStringEncoding","forLeadForm","leadStepUrl","leadStep","inputObject","wizardSelectedValue","stepGroup","Movable","_posX","_posY","_width","_height","isMouseOverArea","setHoveringWithChildren","p7","textarea","posOnField","cursorName","addedImages","alreadyAddedImage","addCursorImage","prepareData","prepareCountertopRows","prepareBacksplashRows","prepareEdgeRows","dataCountertops","preparedData","dataCountertop","dataBacksplash","dataEdge","clearManualCalcData","manualCalculationRowType","getGroupedShapesByColor","getFeatureGlb","similarity","longer","shorter","longerLength","costs","lastValue","editDistance","arrayToSearch","highestMatchCount","phraseBySimilarity","searchWords","urlWords","matchCount","urls","versionedUrls","versionMatch","isSqftPassedDataEmpty","zoomToLine","shapePos","sqftPoup","popUpWidth","newWorkspacePos","zoomTo","isHalfScreen","shapeMinMax","zoomToInSlab","isXIncrementUp","isYIncrementUp","refreshIntervalId","incrementX","incrementY","ShapeAutoShuffle","shapeToShift","shapeToShiftMeasurementPoints","hoveredLineDirection","newShapePosition","hoveredLinePointFromPosOnWorkspace","shapesToShift","shapeCurrentPos","shapeNewPos","isHorizontal","isVertical","angleDifference","originalWidth","originalHeight","upperLeftX","upperLeftY","referencePosition","resultShapes","shapeTopLeftPoint","hoveredShape","calculateNewPosition","moveShapeToPositionAndRotate","getShapesToShift","calculatePositionDiffForOtherShapes","moveShapesToPositions","hoveredLinesShapes","lowestRightmostPoint","snappedShapesWithoutMovingShape","findShapesRightAndBelow","shouldHideCloseButton","textWidth","imageSrc","flagMargin","svgCache","setLine","editable","dString","midPointPointField","editState","editPoint","isInEditState","renderDimensionToMouseFromPoint","destroyPoints","setEditMode","setEditPoint","addPoint","disableEditingWall","destroyResource","isMouseOverWall","addedPointKey","lineFieldArray","wallLockedPoint","movablePoint","getWallByPoint","editWall","existingWallPoint","newWallPoint","__crownMoldingFeatureId","hingesFeatureGroup","handlesFeature","handlesFeatureGroup","addHandleToTheShape","template","renderBorders","renderDimensionsInsideShape","renderHandles","renderDimensionsOutsideShape","renderTestShapeLines","renderShapeSnappedGroup","textHeight","mTextWidth","mTextHeight","lineHeight","movingShape","getCrownMoldingPoints","isHighlighted","timer","highliteBlinkTime","highliteBlinkTimeTotal","startHighlightingLoop","stopHighlightingLoop","UnderlaymentController","changeMaterialToColorArray","getHardCodedFilterGroupName","weShouldHideFilterGroup","weShouldHideFilterValue","selectedFiltersLength","getFixedFilterValueName","subscr","existingDbFeature","relatedFeatureIds","relFeatureId","loadedDbFeature","coor","BackWall","skirting_board","shower_curb","bathtub_body","split_wall","towel_bar","towel_ring","shower_glass","grab_bar","robe_hook","window_body","toilet_brush","paper_holder","left_wall_splitter","left_wall_crop","right_wall_crop","front_wall_crop","shower_wall_mirror","back_wall","NonVisualizerSubPart","navigationNoMetaSubItems","homePageTitle","ToiletBody","TextBox","_posOnField","_placeholder","_design","addRect","addTextBox","modelText","txt","isNumericKey","isCommaKey","isPeriodKey","isSpace","isSlash","toolsControllers","alreadySelectedWizard","wizardWasRestored","skipStartStep","existingAllObject","existingValues","updatedValues","roomType","responseDefaults","noPresetsAtAll","presetIndex","fixEdgeMeta","metaObject","sinkMeta","mountWidthMeta","currentSinkMetaData","getCurrentSinkMetaData","conditionsWithoutSink","CountertopCommon","getFeatureEdgeFilter","getSameEdgesFeatures","currentEdgeMetaData","allEdgesCountertops","sameEdgeCountertops","countertopMetaDataValues","EdgeCommon","matchingByName","allCountertopFeatures","getEdgeFilterGroupFilters","_allEdgeFilters","allEdgeFilters","getMatchingCounterTopFeaturesBySplittedName","getEdgeFilterGroup","assignedEdgeFilter","metaDataMatchName","featurePart","forNavigation","PrintDocumentDisclaimer","withTotal","depositDisclaimer","enableDisclaimer","hugeDisclaimer","disclaimerMessage","getDisclaimerMessage","warningIcon","LEAD_WIZARD_GROUP_TYPES","inputs","contact","appointment","getLeadFormSteps","leadFormSteps","existingLeadStepObject","leadStepObject","leadStepName","leadSubSteps","getUrlLeadStepName","featureIsExcluded","matchingName","getFilteredNavItems","afterCurrentSelectionWizardSteps","allWizardSteps","wizardGroupIndex","setLixilAuthorizationToken","useLixilCalendar","postSignInAuth","postAuthResponse","bathRemodel","lixilTermsText","globalState","textWithUpdatedButton","footerInfoButtonText","isSrBathing","addressIsNotSupported","IS_DEV_MODE","postAuthData","jwtToken","withSignInRetryRequest","request","checkLixilPostalCode","serviceAvailable","SET_USER_VALUE","SET_USER_LOCATION","SET_USER_ERRORS","SET_REGISTERED_USER_DATA","setUserLocation","setUserErrors","setRegisteredUserData","registeredUserEmail","registeredUserAuthToken","replacePhoneToMatchMask","cleaned","replaceMaskToPassPhoneOnTheBackend","Shadow","wallExR","wallA","wallB","wallC","navSubItems","FiltersBody","isFilterSelected","isFilterExpanded","handleExpandFilter","handleSelectFilter","handleGroupClick","handleReset","renderFiltersBody","getCurrentNavItems","availableOtherFilterGroups","renderGenericFilters","checkFilterGroupForAvailableFilterValues","renderBrand","renderColor","whichFeatures","filterList","groupsFirst","filterOptions","sortedItems","name2","brandFilterGroup","filterButtons","buttonText","filterNameLowerCased","buttonEnabled","BodyPanel","renderAllWallsCheckbox","showWizardGroupsSelection","activeNavPart","showNavigationFilters","canUseNavigationFilter","canUseNavigationFilterSteps","activeFeatureEdgeFilter","edgeFilters","activeEdgeFilter","activeEdgeFilter2","currentFeatureFilters","matchingEdgeFeature","countertopFeatures","edgeFilterValue","edgeFilterId","currentEdgeFilterId","waterFallFilter","matchingCounterTop","NavigationFilters","setToStateFilterValues","setParentFilterValues","getFilterGroupNameByButtonId","colorFilterName","selectedColorFilter","filterG","selectedColorValue","reorderedFilterValues","reorderFilterItems","activeA","filterValueIsActive","activeB","getFeatureBodyItemThumbnail","modulePartJoined","inlayTypeObject","inlayTypes","mJoined","defaultInlayType","removeNavigationFiltersAndSetCommonView","handleFilterValueClick","neededInlayTypesObject","inlayTypeObj","existingMJoinedIndex","selectedF","activeFeatureNameSplitted","featureNameSplitted","getMatchingFeaturesBySplittedName","getFilterFeatureItem","renderMobileFiltersList","renderLoadingList","filterValueIndex","renderFiltersList","innerElements","resetFilters","countertopMaterialOrColor","counterTopWizard","FeatureWizard","updateStepValues","reload","setStepValues","getFilteredFeatures","getLockedPropertyValueObjectById","stepId","filterToFind","selectionAvailable","activeItemIsSelected","checkStepForHidden","doorStyleValueId","doorStyleValue","setLockedView","currentGroupValue","getCurrentFilterObject","selectedFilterObject","availableStep","defaultSteps","showMobileGroups","wizardValueObject","allFiltersObject","getFilterValue","currentStepFilterName","resetStepValues","setHiddenStateToStep","sizeStep","doorStyleStep","existingIdeallyFeature","doorStyleMatch","sizeMatch","sizeValue","patternStep","patternGroup","patternGroupSlabValue","smoothFilterObject","tryToClickOnMatchingFiltersItem","withoutDoorStyle","wizardIsFinished","getPlaceholdersFeatures","arrayOfSelectedKeys","foundFeaturesFromFilters","arrayOfCurrentKeys","onItemClickDisabled","askQuestion","filterValueClicked","itemIsSelected","currentFilter","hasValues","sizeIds","doNotPush","interiorShowerWallWizard","ContextMenu","contextMenuButtons","setShowerBodySelectionButtons","currentShowerSize","intlTranslate","bgImageText","isPony","clickedItemIndex","setWallBButtons","wallPart","zIndexToFind","clickedItem","vanityFaucet","getItemsToRender","hoveredParent","itemsToRender","menuButton","subNav","removeNotUsedTubItemsFromContextMenu","itemToRender","activeTub","keepThisItem","handleSubNavClick","showerTubComboSubParts","activeTubMenuItems","handleContextMenuHover","hoveredButton","hoveredZindex","setContextMenuButtons","getShowerRelatedItems","contextMenuStyles","onMouseOver","HomeMenu","SaveButton","saving","handleSaveQuote","saveQuoteSubmit","KitchenVisualizer","kvGroupsResponse","globalShadow","countertopGroupParent","relatedName","matchingParts","featuresPart","moduleSystem","top_cabinet_parts","bottom_cabinet_parts","crown_molding_parts","countertop_parts","top_module_system","inlay_types","bottom_module_system","allSubParts","newSubPart","cPart","countertopSubParts","changedSubParts","getChangedSubPart","ContextMenuSimple","availablePartIds","getBackSplashButtons","setBacksplashButtons","backSplashButtons","currentLayoutName","CabinetContextMenu","resetModule","arrayNumber","setCabinetModule","moduleSplitted","modulePart","moduleSystemPart","oldIndex","getSliceButtons","getResetButton","getExitButton","openNavigationMenu","getCabinetConfigurationButtons","cabinetConfigurationButtons","availableModuleCombinations","getContextMenuButtons","sliceButtons","firstSliceIsActve","contextButton","contextButtonIndex","KvSceneVisualizer","BvSceneVisualizer","getShowerBodySelectionButtons","desItem","LookVisualizer","decorAndAttachmentResponses","userDataResponse","ContextMenuQKB","setStyles","setButtons","maxAllowedWidth","maxAllowedHeight","negativeMargin","getContextMenuPosition","contextStyles","modifiers","altAxis","altBoundary","tether","rootBoundary","onClickAway","FireplaceVisualizer","LaundryRoomLayout","slatWall","slatWallType","isInstagram","isFacebook","handleBackToDashboard","QCJobId","eventPayload","handleSaveAndBackToDashboard","VIEW","steps","TwoFactorAuthClass","getDialogContent","getVerifyPhoneNumberContent","getTermsAndConditionsContent","getUpdatePhoneContent","handleResendSMS","handleResendVoice","handleCheckVerificationCode","validating","handlePostPhoneNumberUpdated","valid","handleUpdatePhoneNumber","setOldValues","phoneUpdateError","revertUserValues","oldPhoneNumber","getDialog","popupStyles","ConfirmPopup","handleApply","confirm","closeSQFtCalc","confirmedAssign","allowDelete","declineFunction","getConfirmMessage","MobileRotateButton","getIcon","getLogo","AssignQuoteVirtualizedList","selectEntity","activeEntity","noEntitiesFound","contentDimensions","hideEmployeesColumn","scrollToIndex","setScrollToIndex","prevEntity","scrollToIn","rowRenderer","customer","ProjectScopeFunctions","parentSimple","getBathroomHomeSections","vanityItems","showerAndBathTubItems","otherItems","bathTubFixture","disableOnHomeSections","getKitchenHomeSections","getSections","wrapperRef","handleClickOutside","MaterialsWizardFooterStepThumbnail","testCard","cardNumber","replaceAll","amex","visa","cup1","cup2","mastercard","mastercard2","disco1","disco2","disco3","diners","jcb","_getSvgCardIcon","creditCardIcons","iconName","postLoginAdmin","loginAdmin","postEditFeatures","data-text","handleCloseSQFtCalc","SqftPopupWindow","isIsland","ManualCalculateSwitcher","sideBarButtons","blockStyle","gltf","ThreeDWorkspace","SeparateModelGLBViewer","glbUrl","lightIntensity","spinner","animationFrameId","modelScale","envMap","modelLoader","modelsCenter","modelsSize","modelsLoaded","setModelsCenter","initScene","modelsLoader","Scene","background","Color","camera","PerspectiveCamera","renderer","WebGLRenderer","antialias","preserveDrawingBuffer","powerPreference","setPixelRatio","devicePixelRatio","outputColorSpace","SRGBColorSpace","useLegacyLights","toneMapping","ACESFilmicToneMapping","toneMappingExposure","shadowMap","autoUpdate","VSMShadowMap","gammaOutput","gammaFactor","OrbitControls","domElement","update","enableDamping","dampingFactor","screenSpacePanning","maxDistance","xr","isIosDevice","NoToneMapping","loadHDRMap","HDR_MAP_LOADER","pmremGeneratorEXR","copy","clone","Vector3","near","far","lookAt","updateProjectionMatrix","boxCenter","dynamicIntensity","baseHeight","PointLight","castShadow","ambientLight","AmbientLight","directionalLight","DirectionalLight","addLight","Light","addLightV9","addLightV10","intensity","cancelAnimationFrame","stopAnimation","traverse","isMesh","geometry","dispose","ARButton","makeImage","contextMenuType","backSplashFeature","setBackSplashFeature","disallowDemo","SqftOptionsLoading","FeaturePriceInput","priceEditing","setPriceEditing","hidePrice","togglePriceEditing","handlePriceOnChange","newAmount","NavMiteredSection","sectionName","SEGMENTS","debounceRequest","ended","debounceFn","fullWidth","LookFiltersList","wizardFeatureGroup","setActiveFilterId","availableFilter","isExpanded","underscoredText","expandIcon","aria-controls","filtersCount","featureGroupCount","GroheFiltersValues","filterValueText","resetFilterClick","getWindowDimensions","windowDimensions","setWindowDimensions","ARViewUSDZButton","makeLink","LookListContent","LookListContentHeaderRightSide","saveButtonClick","leadPopupWasOpened","setLeadPopupWasOpened","shouldOpenLeadCapturePopup","itemsToCount","hideTotal","hideCheckout","openMiniCartPostMessage","viewCartClick","addToCartPostMessage","leadCaptureTimeoutId","checkoutClick","lookListRequestQuote","downloadAllFeatures","useFeaturesRoomLayoutsChecker","fgObject","needToRequestNames","featureGroupObject","LookListFeatureCheckmark","getUnlockCalculationsCartItems","currentCartItems","runAnimations","animateCartItems","entries","exitAnimations","LoadingDots","LookListActiveFeatureMobileButton","InstallButton","fabSettings","FeatureInfo","getDefaultFeatureQuantity","defaultOrPositionsQuantity","handleChangeItemQuantity","handleSQFTCabnetButtonClick","getFeatureModules","materialsQuantityIndex","mQuantity","showRecentlyViewedItems","navItemParent","changeActivePartRelatedItem","nextActivePartRelatedItemIndex","existInCart","associatedProduct","showFeatureModules","availableMeasureUnits","lowerCasedUnit","um","defaultMessage","isPriceUnlocked","FeatureInfoBrand","featureBrandValues","brandFilterValue","SelectionMainList","showLoader","currentParentText","itemClickCountQuote","updatePositions","listItemHeight","deleteNotInVisualizerFeature","wizardSubStepIsActive","existingWizSetup","unlockedIndexes","$gridBody","isRowView","setRef","showItemsList","setRelatedStones","checkForDisabled","wizardClickOnLogic","clickLeadCaptureOnQuote","clickLeadCountOnQuote","checkIfNeedToSwitchRoom","handleOnMobileGridScroll","ceilScrollWidth","floorScrollWidth","ceilScrollLeft","floorScrollLeft","renderVirtualizedGrid","showListForce","currentFeatures","scrollElement","handleOnDesktopGridScroll","renderVirtualizedList","isFinished","enableForQuoting","RowItem","isRelated","FeatureCartItemsCount","matchingCartItems","getAddedCartItemsCount","SuperAdminFeatureToolSettingsButton","WizardFilterItem","SelectionGridFiltersTitle","filterTitle","allTitles","filtersGrid","isTopTitle","prevTitle","renderFeature","titleIndex","nextTitle","scrollToTitle","scrollToPosition","arrowUpDisabled","arrowDownDisabled","data-title","getWithFilters","withFilters","filtersLoading","materialFilterGroup","caesProfiles","countertopFilters","useGetFiltersRequest","useRequest","requestFilters","filtersLoaded","setFiltersLoaded","checkFilters","GalleryViewClass","handleCloseClick","galleryOpened","thumbnailClick","activeImage","g","gIndex","showFeature","timeoutId","SelectionDescriptionCover","prevActivePart","coverText","setCoverText","showCover","descText","player","play","playsInline","autoPlay","SelectionMainHeader","handleChangeListView","subPartPartId","showBacksplashSelect","showDisabledRadioButtons","SelectionFooterSubParts","scrollToActiveSubPart","animationTime","footerList","maxScroll","scrollIndex","neededScroll","handleFooterListScroll","shadowLeft","shadowRight","updateItems","setRelatedItems","currentSubParts","getSubPartsList","withShoppingCart","itemIndex","handleFooterButtonClick","MaterialsFooterBackButton","checkForSubStepChange","subStepChange","MaterialsAgentTutorial","materialsAgentTutorialTimeoutId","setButtonsPositions","resizeId","MaterialsWizardFooterSteps","isShoppingCart","scrollElementRef","stepDisabled","quantityIsZero","$scrollableInfoArea","getCurrentRelatedCartItems","arrayToAddtoTheCart","relatedGroup","relatedItemCartObject","getCartFeatureParentName","ShoppingCartView","ShoppingCartItemsList","switchToMaterialsPageGroup","listItem","subPartIndex","neededQtCat","sIndex","setFeatureGroupCustomName","createCommonParentsList","quotesList","cartList","uniqueCartItemIds","addToCartList","featureGroupDisplayName","getCartItemsList","quotesListArray","isAddMoreDisabled","editFeatureGroupClick","editCartItem","index2","getInstallations","separateLaborInCart","instItem","instItemIndex","getTaxes","ShoppingCartItemsListItem","editorVisible","editorCanRender","handleRemoveClick","handleEditClick","handleAddNoteClick","onNoteSave","editingPriceAvailable","priceIsLocked","neededObject","wizValueObject","selectedWizValues","itemTitle","hasBundleProducts","closeEditor","parentCartItem","NoteEditor","setNoteText","onNoteSaveClick","ShoppingCartItemsBundledProducts","isAdvancedMode","advancedModeProperties","bundledCartItems","AdvancedQuotingListItem","deleteEmptyCartItem","setQuantity","setEditorVisible","handleNoteButtonClick","setClickedItemActiveQuoteIndex","isSearchDisabled","setParentQuantity","AdvancedQuotingListItemRemoveButton","prevConfirmPopupTag","deleteCartItem","DiscountSubTotal","shoppingCartItem","AdvancedQuotingSubpartItems","advancedCartItems","advancedCartItemsLength","allIds","allSqftIds","setCartItems","addEmptyCartItem","keepPrevious","currentCartItemsList","isAddProductButtonVisible","SimilarProducts","similarOpened","setSimilarOpened","updateState","RecentlyViewedItems","renderEmptyItems","emptyItems","recentlyItems","minItems","emptyItem","ShoppingCartFooter","finalButton","saveButton","renderFooterLeftSide","firstKey","showPriceWorksheet","discountsReceived","finalButtonElement","saveButtonElement","activeButtonIndex","dropDownHeight","setActiveButtonIndex","clickFunction","ShoppingCartTotalColumns","showIncluded","avgPerSqftPrice","showAveragePrice","ShoppingCartCanvas","setStateLayers","openVisualizer","ImageCanvas","ShoppingCartInstallationQuestion","openInstallationView","handleNoClick","updateAllQuotes","PriceWorksheetView","closePriceSheetView","DiscountDropdown","dropdownItems","useIntl","dropdownTitle","UnlockCalculationsTutorialFunctions","runUpdates","updateSureTax","LookCanvas","useReducer","showCanvasLoader","movedCanvasForIntro","hasInteraction","shouldOpenWizardItem","checkForContextMenu","hoveredPartId","imageCanvasRef","isTouch","GroheFeatureButtons","addToCartGroheButtonClick","continueShoppingButtonClick","changeButtonClick","lockedButtonClick","addToCartButtonTextId","mobileMainButtonClick","requiredFeatures","setRequiredFeatures","selection","selectedWizardValues","wizVal","allQuantity","GroheFeatureTopButtons","threeDDisabled","lixilQRCode","lixilAR3DUrls","hasWizard","contentToOpen","LookLockedButton","GroheFeatureWizardButton","wizardButtonClick","useViewItemAnalyticsEvent","prevActiveFeature","parentClick","hideInMenu","data-key","LookMainCategoryLoading","filtersButtonClick","viewButtonClick","badgeContent","invisible","FeatureSubDescription","LookFeatureColorMatchCheckbox","currentColorFeatures","checkboxText","updateAllLookCartItems","featuresToClick","checkboxClick","currentCategory","setSameColorFeatures","setCurrentColorFeatures","checkMatchingFeatures","sectionOpened","notPassedLeadCaptureProcess","checkRedirect","Redirect","Switch","Route","exact","executeAfterRegister","registerButtonClick","registerForm","googleComponentsToOurProperties","LookAddressInput","allowRef","setAllowRef","autoCompleteRef","google","maps","pacContainer","handlePlaceSelect","getPlace","formatted_address","address_components","componentKey","component","short_name","long_name","handleScriptLoad","places","Autocomplete","setFields","addListener","postDealerShipToAddress","isDeliveryPage","paymentSubmit","cartCheckoutClick","paymentResponse","transaction_id","transId","setShipToAddress","getDealerShipToAddress","getShipToAddress","GroheBillingAndShippingInputs","setAddressInfo","setAddressErrors","addressErrors","shippingInputChange","checkValue","inputKey","skusRequested","firstTimeLoaded","LookRouting","timeOut","lookHistoryListener","categorySet","featureSet","layoutChanged","activePresetState","route","getPartIdFromLixilCategoryName","allAvailableSubCategories","allAvailableCategories","categoryName","parsedCatName","LookWizardContentCanvas","setTransform","canvasLoaded","setCanvasLoaded","GroheWizardSelectedSteps","stepsContainerElement","useMobile","scrollContainerWidth","amountOfVisibleSteps","LookMainWizardSelectedStep","isProductJourneyDesktop","isProductJourneyMobile","stepWidth","featureIsInStock","notSelected","actFeature","shopContextState","shopContextDispatch","wasShopPage","cartOpened","loadShopPage","createRelatedItems","qtCatResponse","splittedAfterShop","skuId","Provider","getFeatureGroupFromUrl","shopCategoryId","getFeatureFromUrl","WithShopFeatureVisualizeClick","visualizeButtonClick","newPreset","ShopFeatureOptionsCommon","withTitle","navItemOptions","activeOption","activeOptionText","LookCartButton","cartButtonClick","showPopper","setShowPopper","prevActiveStep","LookFeature","lookLeadCaptureId","setFeatureGroupName","showSelectWord","useContainerOverFlow","LookWizardCompletedAlertModal","closeWizardButtonClick","getRoomIdeasTranslate","popperStep","roomIdeasButtonClick","buttonTranslate","resetMixpanelId","ReactDOM","resetKiosk","ELEMENT","decimalAdjust","exp","NaN","predicate","thisArg","searchElement","fromIndex","sameValueZero","kValue","O","relativeStart","relativeEnd","Element","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","parentElement","floor10","u","global","_toolsProtectJs3","_babelPolyfill","__dirname","filename","process","normalizeArray","allowAboveRoot","up","last","splitPathRe","splitPath","xs","resolvedPath","resolvedAbsolute","cwd","normalize","isAbsolute","trailingSlash","paths","relative","arr","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","dirname","basename","ext","extname","_process","4","queue","draining","drainQueue","currentQueue","noop","nextTick","fun","browser","env","argv","versions","once","removeListener","removeAllListeners","chdir","umask","5","IS_INCLUDES","$this","toObject","toLength","toIndex","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","callbackfn","that","assertDefined","ES5Object","7","assert","msg1","msg2","def","fn","it","isFunction","8","enumKeys","T","S","9","TAG","cof","classof","stat","has","10","safe","forOf","$has","isExtensible","O1","LAST","FIRST","ITER","SIZE","DESC","fastKey","getEntry","entry","getConstructor","wrapper","NAME","ADDER","iterable","setDesc","setIter","iterated","kind","iter","11","$def","P","toJSON","12","WEAK","LEAK","findFrozen","leakStore","13","BUGGY","species","assertInstance","methods","IS_WEAK","proto","fixMethod","KEY","buggyZero","chain","G","W","F","core","14","assertFunction","15","$redef","own","isGlobal","isProto","16","17","getKeys","getDesc","getSymbols","18","iterator","close","19","FW","20","getNames","windowNames","getOwnPropertyNames","getWindowNames","21","un","22","assertObject","23","$iter","SYMBOL_ITERATOR","Iterators","DEFAULT","IS_SET","FORCE","createMethod","$$","_native","_default","IteratorPrototype","getProto","24","SAFE_CLOSING","riter","25","setIterator","getIter","26","createDefiner","toInteger","bitmap","simpleSet","documentElement","getOwnPropertyDescriptor","setDescs","getOwnPropertySymbols","__e","__g","27","28","29","30","invoke","pargs","holder","_length","31","tpl","SRC","_toString","base","inspectSource","32","regExp","isStatic","replacer","33","34","check","buggy","35","36","SPECIES","37","TO_STRING","38","repeat","fillChar","fillLen","RangeError","sFillStr","sFillVal","39","40","defer","channel","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","counter","run","listner","importScripts","port2","port1","onmessage","41","42","sid","43","UNSCOPABLES","44","45","arrayMethod","IE_PROTO","ObjectProto","_slice","_join","getOwnDescriptor","IE8_DOM_DEFINE","$indexOf","$forEach","$map","$filter","$some","$every","Attributes","propertyIsEnumerable","Properties","keys1","keys2","keysLen1","createDict","iframeDocument","contentWindow","write","createGetKeys","Empty","seal","freeze","preventExtensions","isSealed","isFrozen","partArgs","bound","constr","buggySlice","createArrayReduce","isRight","memo","lz","begin","klass","upTo","cloned","arg","reduceRight","brokenDate","toISOString","isFinite","getUTCFullYear","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","callee","46","copyWithin","fin","47","endPos","48","forced","$find","49","50","arrayLike","mapfn","mapping","51","setUnscope","Arguments","52","of","53","54","HAS_INSTANCE","FunctionProto","55","56","strong","57","E","EPSILON","EPSILON32","MAX32","MIN32","sign","expm1","acosh","asinh","atanh","cbrt","clz32","LOG2E","cosh","fround","$abs","$sign","hypot","value1","value2","larg","imul","xn","yn","xl","yl","log1p","log10","LN10","log2","LN2","sinh","tanh","58","$Number","toNumber","valueOf","toPrimitive","binary","59","_isFinite","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","60","61","62","63","64","65","Wrapper","setProto","same","RECORD","isNode","asap","testResolve","sub","useNative","works","P2","thenableThenGotten","isThenable","notify","react","fail","rej","$reject","promise","isUnhandled","$resolve","executor","onFulfilled","onRejected","remaining","race","66","ITERATOR","$Reflect","Reflect","_apply","_isExtensible","_preventExtensions","buggyEnumerate","enumerate","Enumerate","reflect","thisArgument","argumentsList","construct","propertyKey","attributes","deleteProperty","receiver","ownKeys","V","existingDescriptor","ownDesc","67","$RegExp","re","CORRECT_NEW","ALLOWS_RE_WITH_FLAGS","flags","patternIsRegExp","flagsIsUndefined","68","69","$at","codePointAt","70","endPosition","71","$fromCodePoint","fromCodePoint","72","73","74","callSite","sln","75","76","77","setTag","shared","keyOf","$create","$names","$Symbol","setter","HIDDEN","_propertyIsEnumerable","SymbolRegistry","AllSymbols","setSymbolDesc","protoDesc","sym","symbolStatics","keyFor","useSetter","useSimple","78","weak","$WeakMap","79","80","$includes","81","82","getOwnPropertyDescriptors","83","createObjectToArray","isEntries","84","escape","85","86","at","87","$pad","lpad","88","rpad","89","$Array","statics","setStatics","90","ArrayValues","NL","NodeList","HTC","HTMLCollection","NLProto","HTCProto","91","$task","92","partial","MSIE","93","94","hasOwn","iteratorSymbol","inModule","runtime","regeneratorRuntime","ContinueSentinel","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","isGeneratorFunction","genFun","ctor","mark","awrap","AwaitArgument","defineIteratorMethods","AsyncIterator","async","innerFn","outerFn","tryLocsList","Context","sent","delegate","tryEntries","resetTryEntry","tempName","tempIndex","rootRecord","completion","rval","dispatchException","exception","loc","caught","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","abrupt","finallyEntry","afterLoc","finish","thrown","delegateYield","resultName","nextLoc","generator","_invoke","doneResult","returnMethod","tryCatch","makeInvokeMethod","invokeNext","invokeThrow","unwrapped","previousPromise","invokeReturn","enqueueResult","pushTryEntry","locs","iteratorMethod","combineReducers","docuSignState","groheQuotingToolState","historyState","sqftTutorialState","updateFeatureCount","javascriptErrors","handleToggleUserPopup","urlLanguage","urlTheme","bvData","newQuoteData","groupedFeatures","groupedFeaturesDescriptions","introVideoStarted","introVideoFinished","initialRoute","imgUrl","d3_geom_contourDx","d3_geom_contourDy","grid","d3_geom_contourStart","pdx","pdy","_slicedToArray","_arr","_n","_d","_e","_s","_i","sliceIterator","promiseTypeSuffixes","defaultTypeSuffixes","_promiseTypeSuffixes","PENDING","FULFILLED","REJECTED","isPending","isFulfilled","isRejected","actionScope","meta","PrintDocument","Document","Page","object-fit","fixed","width100","flexRow","flexColumn","flexCenter","marginT5","marginT8","marginT10","marginT16","marginT20","marginT30","marginT40","marginB5","marginB8","marginB10","marginB16","marginB20","marginB30","marginB40","marginL10","marginL20","marginR10","marginR20","discountDeposit","discountPercent","financeCell","financeCellMonths","financeCellText","PrintDocumentHeader","logoView","jobInfoView","toLocaleDateString","toLocaleTimeString","PrintDocumentInfoFabricator","mainAddress","adr","addressType","ADDRESSES_TYPES","Shipping","emails","emailIndex","Billing","PrintDocumentBody","getGroupName","fixedPrice","showWizardSteps","slabsCartItems","mainCartItems","PrintDocumentBodyBundledCartItems","bundleCartItem","PrintSimilarProducts","insideQuote","featureCollectionIndex","lastItem","PrintSimilarProductsListItem","sqftCursorManager","currentCursor","noCursorStealing","prefix","interceptors","use","apiResponseError","apiGet","apiPost","setPoint","cornerMargin","radiusLetter","dstring","Fraction","mtext","tLen","SpacersController","isNotCreatedSpacerExist","getIsCreated","Spacer","isCreated","createShapeFromSpacerPoints","getPointsToTheMouse","point3PointField","point4PointField","topLeftPoint","adjustedShapePoints","sortedPoints","spacerShapeId","spacerShape","spacerDbFeature","spacerFeature","spacerLayout","spacerOriginalPointCords","setCreated","renderLinesToMouse","betweenPoint1","betweenPoint2","distanceFromMouseToTheLine","pointLeftRightPosition","parallelPoints","ModelCorePoint","_x","_y","_mixins","setOuterShape","renderMeasurementsInsideShape","outerShape","renderSVG","RenderMeasurementsInsideShape","updateLinePoints","imageCenterPosOnField","imageCenterPosOnShape","imagePosOnField","imagePosOnShape","sideImagePoints","getImageSidePoints","lineStartVerticalOnImage","lineEndVerticalOnImage","sideShapePoints","getShapeSidePoints","lineStartVertical","lineEndVertical","renderLineToBorder","renderArrowLineToCenter","intersectionsWithShape","sideShapePoint","intersectionsWithImage","sideImagePoint","imageLine","closestPointPairs","closestPointPair","startPointField","endPointField","betweenPointFrom","betweenPointTo","imageCenterPosOnShapePointField","lineStartHorizontal","lineEndHorizontal","lineStartHorizontalOnImage","lineEndHorizontalOnImage","intersectionXPointAndLine1WithImage","intersectionXPointAndLine2WithImage","intersectionXPoint1","intersectionXPoint2","intersectionXPoint1PointField","intersectionXPoint2PointField","measurement1Distance","measurement2Distance","measurement2BetweenPointTo","measurement2BetweenPointFrom","imageCenter","imgOffset","renderHovering","containerSize","getContainSize","drawBorder","aspectRatio","renderAttachedTo","MiteredSegment","parentShape","attachedToLineResource","getBacksplashesPos","getSegmentById","getBumpoutPointCords","posOnFiled","getShapePosAndPoints","underlaymentPoints","getWaterfallPoints","addMiteredEdgesToWaterfallShape","miteredEdge","waterfallShapes","edgeParams","miteredEdgeDistance","SlabAdditionalShape","getShapeAdditionalShapes","findOneByBacksplashShapeId","activeBacksplash","hoveredLineCorner","featureNameTranslated","togglePartId","allowedPartId","getUrlBase","fetchDataWithCancellation","shouldSaveDataInStore","cancelFetch","requests","StaticImage","beforeRenderCallback","getHoverArray","SQFTShapeOffset","animationPoints","offsetPoints","calculateOutlineV2","parentPoints","setLineDash","calculateOffsetPoints","offsetDistance","dir1","dir2","norm1","norm2","avgNorm","unitNorm","originalShapePoints","newShapePoints","getTime","elapsed","interpolatedShape","pointNew","pointOriginal","outlinePoints","nx","ny","listeners","eventName","LineImage","updatePosInsideShape","lineLengthText","prevValue","angleInRadians","posXDiff","posYDiff","currentSize","newImageWidth","newImageHeight","testNewImageValue","parallelLine","getParallelLine","updatePrentSize","SimpleLine","initLineLength","setLineLengthFromNumberValue","isMouseOverLineV2","lineBordersArray","lineHoveredArea","isMouseOverLine","moveLineWithMouse","imageState","pointFieldFrom","pointFieldTo","ShapeRotatable","initCornerBorderPoints","hideShapePoints","__cornerPoints","rotateToPointAngle","shapeCenterOnField","movablePointOnField","shapeZeroAnglePoint","rotateToAngleIn360","rotateToAngleWithoutHoveredPointAngle","normalizedRotateToDegreesValue","getCornerPoint","displayValueInPopup","getCornerPoints","getCornerPointsPointField","cornerPointsPointField","renderFramePoints","cornerPoint","HingesModel","createShapesFromCabinetSet","positions","cabinetData","rotation","HandlesController","createModelsForTheShape","changeHandlesForSelectedShapes","updateShapeLineHandleFeature","updateResourcesFeature","selectedShapesIds","linesToAddHandle","findGLBModel","suffix","glbModels","modelWithSuffix","LineHandlesModel","lineId","WallsController","searchPoint","ShapeColorsController","defaultColorSets","getShapeColorByFeatureId","createShapeColor","getResourceById","baseColor","generateRandomRGB","shapeColorModel","ShapeColorModel","WaterfallController","addWaterfallToStore","waterFallOverlay","waterfallOverlaySegment","changeWaterfallSectionInStore","waterfallSectionData","segmentController","WaterfallOverlay","createPeninsulaUnderwrapSections","createWaterfallSections","getEnabledSegments","addSegment","segmentData","waterfallLength","underlaymentLength","isLineInWesternHemisphere","defaultCabinetReturnLength","defaultOverhangReturnLength","cabinetReturnLength","overhangReturnLength","parentSection","COMMON_HEIGHT","USE_DEPTH_INSTEAD_OF_HEIGHT","USE_LINE_LENGTH","overlayId","setIsDisabled","WaterfallSegmentController","parentController","changeSegmentLength","segmentId","postChangeValue","changeSegmentHeight","updatedSegment","changeSegmentThickness","changeSegmentIsDisabled","RemovedFeaturesController","SnappedShapeGroupsController","addNewSnappedShapeGroupNumber","newNumber","snappedShape","snappedWithShapeGroup","groupNumber","shouldUpdateAbsolutePos","aPos","bPos","visitedShapes","Set","resetShapesSnappedGroups","updateGroupForShapeAndConnected","connectedShapes","connectedShape","snapPossibilitiesToWalls","distancesToWalls","getDistancesToWalls","itemBoundsWithSamePartId","getItemBoundsForTheSamePartIdIfExist","absolutePosToWalls","snappedShapeIds","snappedShapeFromAllPossibilities","snapPossibility","SelectedShapesController","clearSelection","removeAllResources","CrownMoldingController","getCrownMoldingForShape","contoursByFeatureId","feature3dUrl","contour_points","addUniquePoint","getCabinetPosYFromShape","cabinet_position","Images3dController","HingesController","isFitLineLength","isFitSiblingLineCorner","isFitBumpout","isFitPontDistancesToCornerLine","isFitByAngleBetweenLines","isFit","getBumpoutTextParameter","length4to","minDistanceNeeded","prevLineLength","isEditInputDisplayed","hoveredColor","originalLineText","lineTextResized","lineText","lineType","offsetFromLineEnd","getLine","getHoveredArea","rotatedPoint1","rotatedPoint2","pointToRotate3","rotatedPoint3","pointToRotate4","rotatedPoint4","getLineDistanceFull","roundedDiff","getAdditionalLineDistance","getCtxColor","getMidpoint","getLineLengthText","getLineDistanceFullInPixels","lineLengthInPx","additionalLineDistance","additionalDistance","orientationValue","space","medgeText","fromPosOnField","marginTotal","renderHoveredArea","hoveredArea","getFrameBorderPosition","minBumpoutSize","bumpoutTextParameters","lengthFrom1","length14","length34","bumpoutLines","flipPoints","biggestPoint","smallestPoint","stopPoint","move23Point","parentLine","lengthMidPoint","createBumpoutLines","bumpoutPointsCords","importPoints","bumpoutFeature","isFeatureExist","bumpoutData","bumpoutPoint","getBumpoutLength","bumpoutDistance","lineLengthInches","lineLengthMm","bumpoutLength","resizeBumpoutPart","vectorAB","vectorADrag","crossProdZ","drawBumpoutRect","renderMeasurements","bumpoutXOffset","bumpoutYOffset","pointDistance34","renderHorizontalText","renderRotatedText","bumpoutTextParameter","textToRender","pointArea","isMouseOverRect","textOrientation","inputPosition","inputClass","scaledValue","LineAttachmentsComposite","execute","angleValue","tempLinePointFrom","tempLinePointTo","getRotationCentrePointByBottomLine","ShapeSlab","__seamTool","renderSeamLinesOnHover","renderSeamCutPoints","seamToolRender","renderSeamVerticalIntersection","renderSeamHorizontalIntersection","seamCutPointOnField","startPointOnField","endPointOnField","__measurementArrows","_shape","absoluteLinePoint1Pos","linesWithoutAnglePoints","seamShapesPoints","splitShape","createShapesFromSeamPointsAndSetSlabRotation","parentShapeCenter","seamPoints","isBacksplashPiece","preparePointCords","rotatedDiffPos","parentSlabAdditionalShape","newSlabAdditionalShape","setSlabPos","shapePieceCenterPointBeforeRotation","reqRotatedDegreesToZero","shapePieceCenterPointAfterRotation","coreShapeAbsolutePosition","slabAbsolutePosition","setParentId","seamPoint","splitOnlyOrientation","piece1Points","piece2Points","intersectionNumber","filterEqualAndPointsOnTheSameLine","isEqualPoints","isOnTheSameLine","ip","seamTool","__measurement1","__measurement2","absoluteLinePoint2Pos","distancesToLines","getDistancesToPoint","snappingPossibilitiesToLines","getSnappingPossibilitiesToLines","renderSeamDashedLine","horizontalLinePoint1","horizontalLinePoint2","renderSeamArrowLine","intersection1","intersection2","intersectionYPoint1","intersectionYPoint2","intersectionYPoint1PointField","intersectionYPoint2PointField","mousePosOnShapePointField","measurement1Midpoint","measurement2Midpoint","measurement1Pos","measurement2Pos","removeOverlappedWithShape","overlappedId","restoreShapePosition","memory","shapeSlabAbsolutePos","shapeAbsolutePos","ShapeRender","renderRegularShape","shapeDesign","hoverLine","shapeState","toggleVanityParts","VanityCabinet","canUseWizard","toggleLayerPositions","updateSink","updateVanityParts","getfilterValueIdByValue","placeholderAvailableFeatures","Other","windowNeededLayouts","navigationSubItemsWithSides","setShowerSize","WalkInTubFixture","ReplacementTubFixture","layerPriority","ShowerScreen","FrontWall","SplitWall","LeftWallSplitter","ShowerGlass","ShowerBody","loadedShowerBody","loadShowerDimensions","loadShowerMetaData","loadThumbnail","bathTubBase","availableFeatures","showerPanCondition","showerBodyParent","showerBodyThatFits","showerSizeValues2","condValue2","shBody","showerBodyToSet","comboParent","clickedPosition","nameSplitted","nameSplitted2","size2","CornerShelf","showerPodParent","windowParent","ToiletBrush","toiletParent","RobeHook","TowelRing","GlassHolder","TowelRack","Wainscoting","TowelTowelRing","towelRing","TowelTowelBar","TowelTowelHook","hardcodedSkus","finalNavItems","forMeta","leftNavItems","existingNavItem","setAdditionalMetaData","setDefaultAccordingToPreviousSelect","rememberPreviousSelection","compatible","ShowerFloor","thresholdAvailableFeatures","currentFloorName","sameThreshold","showerDoorParent","currentShowerPanCondition","showerFloorAvailableFeatures","currentThresholdName","sameShowerFloor","navItemFloor","setArmHeadType","ShowerArm","ShowerHeadBundle","TubSpout","HandShowerKit","ShowerCurb","BodySpray","DiverterTrim","HandShowerHolder","HandShowerOnly","ShowerHose","ShowerSystem","ShowerTrimKit","ValveTrim","WallUnion","removeInterferingParts","cornerShelf","FloorBody","compareMountPosition","dbFeatureLoading","checkForExistingDecor","currentDecorFeatureGroup","decorName","toiletPaper","decor1","showerWallMirror","lamp","mirrors","decorCount","Attachment","currentConditions","selectFrom","attFeature","alreadyAddedFeature","Decor","needShowerSizeMeta","ShowerWallMirror","enclosureTop","enclosureBottom","skirtingBoard","EnclosureTop","EnclosureBottom","SkirtingBoard","table","chair","carpet","basket","frame","plant","Table","Chair","Carpet","Lamp","Basket","Frame","Plant","activeMatchingSink","activeMatchingSinkSku","getActiveSkuFromRelatedItem","shownFeature","sinkFeatures","MountType","alreadyExistingIndex","shouldCheckSize","currentActiveMatchingFeatureSku","currentActiveMatchingFeatureMeta","sinkSku","currentMatchingMatchingFeature","currentMatchingMatchingSku","setVanityOnly","getNextVanityTypeFeature","setActiveFeatureByFilter","singleHoleMeta","activeMatchingVanity","activeMatchingFeatures","sinkActiveFeature","getMatchingSinks","matchingByCabinetType","withCurrentVanityType","sameCollectionName","sameCustomName","fromWhereToPick","featureToCLick","concettoTMIndex","sinkCollectionName","sinkCustomFullDisplayName","mountHolesMeta","sinkType","mountLevel","waterLevel","Ptrap","VanityWashstand","VanityMiddle","DrawerPull","WSTowelBar","VanityLegs","VanityConsole","DoorHandle","DrawerHandle","Box","_mixin","initPoints","deleteEvents","removeBox","pointsParams","IText","_fontHeight","_hMargin","wMargin","fillStyleGray","fillStyleTransparent","parentWidth","parentHeight","createTextArea","fontFace","wrapWords","fillText","hMargin","textBaseline","spaces","currentLine","words","_modelText","ModelText","_txt","_font","_angle","newId","currentShapePosition","cloneShapeLines","cloneShapeLine","currentMovableImagePosition","ShapeFreeForm","checkIfFirstPointHovered","getAddedPointsWitMouse","popupId","getThicknessPopup","outerShapePoints","thicknessPopup","getOffsetShapePointsV10","offsetPointsReversed","renderShapeBetweenPoints","freeFormShapePoints","getPerpendicularPoint","linePoint","isLeft","perpDx","perpDy","getLineEquation","calculateIntersection","prevOffset","prevPointOffset","nextOffset","nextPointOffset","linePrev","lineNext","BaseDraw","checkIfThisIsSecondPoint","figureCanHaveOnly2Points","createFigureFromPoints","RenderFreeForm","getText","posText","adjustedSize","rulerSize","ResultImages","dimensionsMultiplier","clippingWidth","clippingHeight","getCanvasScreen","updateCanvasAtStartPoint","shouldReturnToRegularMode","shapesWithoutSlabImages","pointsMinMaxRegular","resultImage","updateCanvasSlab","applianceImages","createdImagesForShapes","applianceImage","outerShapePosition","newScale","startClippingX","startClippingY","updateCallback","srcCanvas","destinationCanvas","destCtx","TextBoxManager","_textBoxes","getHoveredTextBox","textBox","textBoxPointsOnWorkspace","boxPosition","boxes","FeatureObjectDTO","arrayIds","MARK_UP_APPLY_TO_TYPES","retailPrice","retailPriceAndCost","MARK_UP_PROPS_MATCH","Retail","Cost","Discount","getUpdatedFeaturePriceFromMarkItem","dbFeatureIdString","setFeaturePriceFromMarkItem","markUpListItem","isCaes","priceType","PriceType","Value","setFeaturePriceFromMarkItemQKB","markUpItem","originalValues","markUpObject","fv","pvif","pmt","part2","fridgeConditions","getFridgeWidthAndHeightConditions","widthAndHeightArray","widthHeightConditions","currentHoodWidth","currentHoodNavItems","sameWidth","Oven","Stove","hideLayer","FridgeEnclosure","getFridgeEnclosureSplittedFeatureName","_fridgeEnclosureSplittedFeatureName","FridgeEnclosureHandle","fridgeIsVisible","TallCabinet","currentTopCabinetColor","cabinetFeatures","cabinetFeature","withStoveConditions","rangeIsActive","withDishWasherConditions","withFridgeConditions","relatedFaucet","mountTypeMeta","EdgeProfile","Cutouts","Radius","PrintDocumentBodyWizardItem","baseInfo","withThumbnail","PrintDocumentTotal","roundedPrice","discountsTotalAmount","currObjectIndex","currencySubTotal","referralPercent","referralAmount","PrintDocumentSignature","formattedDate","toLocaleString","hour","minute","doNotFillNameAndDate","isSignField","hideSignatureField","PrintDocumentDiscountsList","discountSectionIndex","displayDiscounts","discountIndex","PrintDocumentDiscount","PrintDocumentDiscountFinance","financeSection","parsedOptions","propertyIndex","cellStyles","selectedDiscount","getWizardList","getWizardListFromBackend","setLeadPopup","getErrorPopupObject","wizardsArray","nextActiveItem","SET_LOADING","EXPAND_FOOTER_INFO","SET_LEAD_POPUP","ALLOW_SAVING_JOB_ON_INPUT_STEP","SET_JOB_SAVED","setJobSaved","SET_FOOTER_INFO_BUTTON_TEXT","faradayLoading","expandFooterInfo","footerInfoExpanded","setFooterInfoButtonText","leadPopup","jobData","someUserInfoIsDifferent","setAllowJobSavingOnInputStep","registeredUser","saveJobAction","isDelayedSave","isLoggedIn","registerUser","registered","authToken","updateUser","updatedCustomer","postSaveJob","getSaveJobData","postScheduleAppointment","getSaveAppointmentData","getJobRecords","selectedFeatures","lixilCampaignInfo","appointment_date_stc","slotStartTime","appointment_time_stc","lixilData","receiveSmsCheckbox","appForm","saveDataBeforeConverting","VISIT_ROUTES","thanks","VISIT_STEPS","personal","project","SKIP_CALENDAR","appointmentTime","defaultTimeValue","timeToPass","splittedTime","parsedUrl","parseUrl","getUserRegisterOrUpdateData","withNewBackgrounds","isBackgroundLayer","multipliers","putImageData","makeHoveringLayerOld","naturalHeight","nextSource","nextKey","triggerEvent","createEvent","initEvent","sanitizeValue","PinchZoom","elText","lastScale","coImage","containerScrolled","timerId","setupMarkup","bindEvents","isCloseTo","expected","interaction","zoomOutFactor","minZoom","lockDragAxis","use2d","dragPixelsBeforeClick","zoomStartEventName","zoomEndEventName","dragStartEventName","dragEndEventName","doubleTapEventName","handleDragStart","lastDragPosition","handleMove","getTouches","drag","sanitizeOffset","handleDragEnd","handleZoomStart","nthZoom","lastZoomCenter","handleZoom","touchCenter","getTouchCenter","handleZoomEnd","closeToOne","handleDoubleTap","startZoomFactor","updateProgress","scaleTo","getCurrentZoomCenter","swing","allowMoving","withFeatureScreen","zoomOutFromLeft","alreadyZoomed","startOffset","targetOffset","moveContainer","removeContainerScroll","withAnimation","setContainerTransform","moveGroheContainer","percentX","menuWidth","containerTransition","container","getContainerX","getContainerY","maxOffsetX","maxOffsetY","minOffsetX","minOffsetY","needToMoveContainer","scaleZoomFactor","addOffset","originalZoomFactor","lastCenter","getVectorAvg","vectors","sanitize","zoomOutAnimation","isInsaneOffset","sanitizeOffsetAnimation","sanitizedOffset","updateAspectRatio","setContainerY","getInitialZoomFactor","offsetRight","widthOffsetRatio","offsetBottom","heightOffsetRatio","canDrag","posTop","posLeft","framefn","timefn","inAnimation","animateNew","timeFraction","implementation","createHTMLDocument","innerHTML","insertBefore","webkitTransformOrigin","mozTransformOrigin","msTransformOrigin","oTransformOrigin","detectGestures","updateCheck","imgEl","nodeName","getCanvasTransform","targetZoomFactor","useNewScale","offsetY","transform3d","setCanvasTransform","updatePlaned","removeClone","offsetXForContainer","is3d","pointerEvents","WebkitTransition","MozTransition","firstMove","fingers","startTouches","setInteraction","newInteraction","updateInteraction","targetTouches","getDistance","cancelEvent","endTouches","startDistance","calculateScale","definePinchZoom","containerX","scrollTo","behavior","getLayerPartToRender","imageCanvasComponent","ShowerBodyIndexes","ShowerIndexes","missingBodyPart","layerHovering2","layersHoveringItem","missingZIndex","CabinetIndexes","CountertopGroupIndexes","missingZindex","missingZindex2","hoveredLayerIndex2","layerHovering3","hoveredLayerIndex3","needToCheck","layerHov","towelRack","bathtubRim","bathTubSpa","bathTubType_","BathTubBase","BathTubSpa","BathTubRim","BathTubTowelRack","bathTubParent","walkInTubType","possibleWalkInTubTypes","featurePartName","sameStoneAsWalls","floorMount","placeTypeGroup","featurePlaceTypeValue","getFixtureType","availableCompleteFeatures","vanityPedestal","handleMeta","hardCodedWizardConditions","counterTopsAvailable","oldVanityType","colorFilter","secondFilter","mathesToCurrentVanity","featureHasFilters","itemA","itemB","tryToSetTheSameFeatureByFilters","setPlaceholderFeature","vanityFilters","matchingFilterFeature","currentNameSplitted","vanityFaucetFeature","sinkSize","getCurrentSinkSize","withSinkSize","isWindowCovering","isWindow","windowDefault","ceilingLight","CeilingBody","CeilingLight","LG","SM","activeShowerPartId","showerBodyActiveFeature","ShowerInteriorWall","wallFeatures","zIndex2","zIndex3","showerSize2","ShowerInteriorWallAccent","doorFeature","checkIfPlaceHolderFits","activeFeatureShowerPanCondition","setNewPlaceHolderFeature","compatibleValue","nameToFind","showerPanValues","showerDoorsThatFits","showerDoorFeature","showerPanValues2","showerSizePassed","showerPanPassed","condPanValue","condPanValue2","sameWallFeatures","showerDoorsThatFit","wallValue","dontFilterByDoorPanMeta","showerDoorType","showerDoorActiveFeature","currentShowerPanMetadata","previousFeature","currentColorArrayValue","colorGroup","existingPans","filteredFeature","filteredFeatureColor","col","filteredByPan","doorCondition","handleCondition","GlobalShadowBody","WallA","WallB","WallC","WallExR","WallExL","shadowSmallRoomName","showerValue","VanityAccent","DesktopNavigation","ponyWallGroup","openContextMenu","updateSideBarIds","sinkSizeConditionValue","tilePatternFilterGroup","acrylicPatternFilterGroup","tileID","acrID","showLockedView","onClickCapture","SidebarClass","getSideBarContent","dni","dniIndex","FiltersSearch","handleToggleSearch","searchVisible","searchInputNode","handleInputSearchFocus","KeyboardKey","KeyType","RIGHT_PANEL","NORMAL","NUMERIC","NUMERIC_EXTENDED","React","PureComponent","BACKSPACE","NORMAL_3","NORMAL_5","NORMAL_2_5","BodyClass","itemsDispatcher","level2ItemsNew","level1Items","currentPart","showNavigationFiltersSteps","BodyPanelCheckbox","BodyPanelWizardSteps","BodyPanelNavigationFiltersSteps","setNavigationWizardStep","wizardButtonIndex","countertopWizardPartIds","allowIcons","LookAllWallsRadioButtonSmall","showTooltip","setShowTooltip","getToolTipTranslate","BodyItemsClass","childItemText","menuBody","columnsCount","cloneElement","verticalAlign","BodyItems","column","featureIsEnabledForQt","sameWallAsLeftWall","leftWallName","featureIsFullWall","setFeatureByName","passedName","splittedName","findFeatureByPartName","cabinetLayoutMetaData","getUniqueFeatures","neededType","currentPartName","getTopCabinetCabinetLayoutMetadata","sameCabinetType","alReadySplitted","applianceType","doorSet","zIndexBox","activeFeaturePartIndex","currentModuleSystemNumber","modulePartSplitted","moduleMatchingPart","topCabinetApplianceType","getTopCabinetApplianceType","allowedPorticos","backsplashActiveFeature","matchedByName","zIndexBox2","featureFilterValueIDs","findFeaturesByModuleSystem","fPart","matchesInlayType","inlayTypeName","getFilterGroupObjectByInlayType","getFilteredFeaturesByTopCabinetFilters","activeTopCabinetFilters","woodTypeFilter","stainColorFilter","featureIsMatchingFilters","matchesByMetaDataAndFilters","filteredFeaturesByTopCabinetFilters","hoodType","isHood","isMicrowave","topCabinetConditions","matchingCabinets","getFeaturesMatchingAllCabinets","featuresMatchingAllCabinets","ignoreConditions","getTopCabinetType","getTopCabinetShadowLayout","ignoreAppliance","getBottomCabinetApplianceType","fromFeatureFilters","edgeFilterGroupId","realActiveFeaturePart","featureIsMatchingEdgeFilters","currentCheckFeature","currentFeatureEdgeFilters","relatedSink","existInSomeLayout","currentLayoutAbbreviation","getCabinetType","getChairType","FeatureWizardBody","getFilterValueObjectById","neededImage","filterValueIds","getFeatureWizardBodyItem","bgFilterName","backGroundSizeCover","selectedFilterValue","renderItemsList","currentValues","setCurrentValues","selectedId","selectedA","selectedB","FeatureWizardBodyItem","FeatureWizardSelection","setWizardValue","clickedFilterValue","setAllItems","FeatureWizardSelectionItem","activeScene","setActiveScene","RoomSceneNavigationItem","imageResponse","roomSceneClick","DesktopNavigationLayoutsContent","allowLoading","setAllowLoading","timeoutRef","MobileNavigation","showerGroup","MobileNavigationBodyNewClass","itemClicked","showMobileMenu","menuList","MobileNavigationBodyNew","MobileParentNavigationItems","parentItemClick","parentItemIndex","QuoteButton","DesignButton","toggleDesignList","designListOpened","handleDesignButtonClick","analyticsEvent","handleDesignResetClick","MinimizeButton","backToQuote","csvRows","blobConfig","encoding","msSaveBlob","DemoPoint","setNotesToFeatures","notesFeatures","notesFeature","hasMultipleVisualizers","loadFeaturesAndNotesForMultipleLayouts","featuresToReturn","differentVisualizers","recordIndex","arrayOfFeaturesIds","currentObject","forLayout","nextBvState","getBvStateProperty","isDesignOnly","firstRecord","loadedFeaturesFromJob","rec","recIndex","allWizardValues","restoreCartFeatures","allDiscountSections","sameDiscountSaved","selectedDiscountSection","discountSectionFound","discountFound","disc","savedCountry","jobMarkUp","sendJobDataToParent","withReceipt","receiptBlob","payloadCartItem","payloadCI","baseboard","ceilingHighlights","ceilingLights","decor2","decor3","countertopGroup","alreadyExistingGroups","receiveBackSplashes","isCenterIslandDecor","IslandHood","Pendants","RightIsland","activeType","alreadyAddedFeatureIndex","alreadyAddedIndex","matchByType","matchByCabLayout","getBacksplashNavItems","sameNameOnly","updateRadio","handleRadioButtonClick","checkRelatedFeatureGroupPositions","filteredAvailableFeatures2","featuresToDisplay2","feature2","countertopSize","partsLayouts","partsRoomLayouts","pl","isPartsLayout","lightFixture","showOnLayouts","showPositionPopup","NavItemPositionModalButton","setChecked","positionName","getPositionName","isChecked","buttonClick","fromConflictingPopup","callConflictingPopup","checkForSameMountPosition","togglePosition","checkRelatedFeatureGroups","checkCenterGrabWall","checkboxDisabled","applyConflictingPosition","NavItemPositionModalSlatWall","isCurrentFeatureActive","getSlatWallButton","needToRequestFeatureGroupsOnClick","ContextMenuQKBButtons","vanitySubMenuOpened","setVanitySubMenuOpened","contextButtonClick","vanButtons","openPartId","regularSink","isVanityParent","FireplaceParent","Furniture","worktop","cabinetLeg","hook","tallCabinet","tallHandle","tallCabinetLeg","CabinetLeg","Hook","CabinetGroup","SlatWall","isMainFeature","OverheadRack","TallHandle","TallCabinetLeg","BottomCabinetLeg","attachment1","allVisualizersPresets","renderSteps","userPopup2FAOpened","userSchedulerOpened","getDefaultCountry","countries","areaCodes","GBP","PLN","CAD","USD","edittoken","showPrivacyPolicy","loadFilterGroups","isNewBathroomOrKitchen","removeTutorial","_show","oldPage","isSignaturePadVisible","signaturePadTag","invoiceNumberOfPages","jobDocumentUrl","contractLoading","filteredResource","resourceTypes","filteredMiteredSections","removeMenuFromState","defaultCompatabilityObject","newScene","itemsToRemove","colors","anchorDbFeatureId","lastOpenedFeature","cardInfo","cardName","expMonth","expYear","cvv","selectedShippingAddressIndex","selectedBillingAddressIndex","lastState","getLastVisitedShopPage","withFeature","currentPage","App","BVQuotingTool","setJobIdVisualizerType","jobRecords","getFabricatorData","enableAutoSaveQuote","callRecursiveAutoSave","autoSaveTimerId","disableAutoSaveQuote","setMobileState","handleHeightResize","resizeHeightId","setGlobalHeight","getVisualizer","visMgmt","CommonVisualizer","showDocusign","ApplyPopup","applyPopupItem","applyPopupItemIndex","handleApplyPopupToggle","applyCartItems","getFeaturesList","filteredActiveApplyPopupItems","allreadyExist","exisingIndex","filteredActiveApplyPopupItem","nextActiveApplyPopupItem","UserPopup","setCanvasImage","handleUserPopupToggle","checkFieldsForErrors","neededFields","handleSubmit","isValidPhone","handleChangeView","handleChangeTerms","termsSelected","setInputFocused","handleAdditionalFieldsShow","twoFAOnClose","cancel","updatedPhoneNumber","getTermsText","getUserPopupTitle","getUserPopupText","textKey","KioskMode","UserFields","dataSet","validation","handleInputFocus","closestLiElement","handleInputKeyPress","which","blurPhoneKeyboard","activeElement","errorsExistFirstName","errorsExistEmail","errorsExistPostal","data-input","data-validation","onKeyPress","ConfirmationScheduleView","selectedDate","aptType","handleMonthDayChange","handleTimeTableTimeChange","handleCancelClick","handleScheduleClick","dateChanged","timeChanged","contextTypes","router","MonthView","handlePrevMonthClick","subtract","handleNextMonthClick","handleDayClick","handleTodayClick","renderDays","mom","dayOfWeek","daysInMonth","today","moreCnt","monthHeaderView","dayView","TimeTableView","handleTimeClick","selectedTime","handleAptTypeClick","renderTimes","endTime","postfix","styleApt","styleHomeEstimate","postFix","MobileRotateButtonIcon","xlinkHref","filterUnits","in","stdDeviation","DocuSignLayer","setupDocuSignForm","docuSignSuccess","hideMe","errorMsg","jsonMatches","jObj","iFrameUrl","allowFullScreen","frameBorder","scrolling","fabricatorWebSiteUrl","newMsgBoxState","DepositPopup","agreeAndContinue","agreeChecked","closeDepositPopup","depositPerc","depositAmount","depositMessage","setContext","isContractSelect","changeContent","saveContract","newContextValues","agreeEmailCheckboxVisible","hideEmployeesList","switchToContract","AssignQuotePopupContent","salesPersons","setSalesPersons","customers","setCustomers","responseReceived","setResponseReceived","empList","customersList","testString","AssignQuoteCustomersList","customerSelected","handleCustomerClick","AssignQuoteEmployeesList","AssignQuotePopupContentHoc","setContentDimensions","assContentElement","setCurrentContentDimensions","AssignQuotePopupNewCustomer","selectFields","getSelectFields","activeContractName","cont","contIndex","getSelectedContractString","AssignQuotePopupNewCustomerInput","requiredFields","AssignQuotePopupNewCustomerSelect","methodIndex","AssignQuotePopupSaveButtons","saveFromAlreadyRegisteredUser","saveFromOfflineContract","newChangesExist","fullNameSplitted","quotesId","fromQuoteId","toQuoteId","showSaveButton","showCheckoutButton","checkoutButtonText","signIsDisabled","AssignQuoteContractSelection","prevIsActive","renderContractList","handleContractCheck","OrderCompletePopup","backToHomeClick","getAnotherQuoteClick","getPopupText","message1","message2","viewInSalesForce","scheduleFlexFinishAppointment","popupText","CookieMessage","cookieElement","checkToDisplayCookie","enableCookiePopup","handleAcceptButtonClick","handlePrivacyPolicyClick","getCookieMessage","setParentsLists","edgesFeatureGroup","edgesReceived","removeDeletedInSQFTFeatures","rebuildQuoteLists","quoteLists","SqftFeaturesPopupApplyButton","skipAddedSteps","applyButtonClick","processSqftFeatures","findCartItemAlreadyAddedToCart","updateCartFeatureWithSqftFeature","updateCartFeatureWithSqftFeatureWithoutIdUpdate","replaceCartItem","updateCartFeatureWithSqftFeatureWithSqftIdUpdate","shouldSkipCeilQuantity","cartItemToAdd","addWizardProperties","addedFeatures","remember","alreadyRememberedIndex","newPreviouslySelectedFeatures","$scrollToFeature","prepareSqftFeaturesBeforeAddToCart","addCabinetFeatures","relatedGroupsWithNewQuantity","sqftFeaturesPrepared","isFoundById","isFoundByName","neededWizardStep","wizStep","cartItemToUpdate","cartItemsInCurrentQuote","cartItemFeatureGroup","sqftFeatureFeatureGroup","isFoundByDbFeatureAndParentKey","isFoundBySqftIds","SqftFeaturesPopupBody","showNotification","show3dAndArButtons","SqftFeaturesPopupParentList","sqftFeatureIndex","groupIndex","SqftFeaturesPopupFeature","editButtonColor","shouldDisplayEyeball","shouldDisplayEditButton","data-feature","filterNavItemsWithSearch","productText","SqftFeaturesPopupFeatureDropdown","setProductText","ignored","dropdownElement","handleNavItemClick","updateResourcesId","namesArray","loader","wizNavItems","getNamesArray","SqftFeaturesPopupFeaturePrice","shouldSkipCeilPrice","useSlabPriceCalculation","featureToGetPrice","toFixedFeatureCostParams","featureGroupTotalPrice","getFeaturePrice","realUnit","displayQuantity","displayPrice","SqftFeaturesPopupFeatureDeleteButton","actionButtonColor","updatedLists","updatedList","SqftFeaturesPopupFeatureEyeball","openShapeRoom","zoomToSqftFeature","SqftFeaturesPopupParentListTitle","isChangeable","relatedParentPartId","SqftFeaturesPopupTitleFeatureDropdown","featureGroupSubPart","WizardConflictPopupCartItem","wizardSelectedKey","wizKey","runDeclineFunc","stepIndexClicked","setEmail","setPassword","setErrors","closeModal","loggedIn","setToolSettings","saved","innerStyle","defaultCountryValue","CheckoutPopup","scrollIntoView","scrollBack","removeAttribute","updatePaymentInfo","ccNum","paymentAmount","getPaymentAmount","checkoutCallback","offlineRetryCallback","depositTotal","countryIndex","showFake","setShowFake","defineGetter","defineSetter","lookupGetter","lookupSetter","hasOwnProp","oThis","aArgs","fToBind","FNOP","fBound","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","propDescriptor","HTML5_DOMStringMap","attrVal","attrName","attribute","attsLength","n0","e1","e2","preBind","currentBindings","CanvasRenderingContext2D","metrics","testWidth","isFloat","roundToPlaces","wholepart","toTeX","mixed","rescale","td","multiply","divide","equals","scalar","scaleup","gcf","primeFactors","factors","_factor","negative","remainder","approximation","MEASURE_UNITS_LABELS","volume","empty","InfoPanel","titleId","unit2","countertopArea","edgesArea","baseSQFT","baseLNFT","baseDoorSQFT","wallSQFT","wallLNFT","wallDoorSQFT","tallSQFT","tallLNFT","tallDoorSQFT","totals","setTotals","measureUnitLabels","setActiveColorSet","handleShapeOffsetChange","activeShapeWithOffset","setIsOpened","getTotalItems","getTotalItem","xmlnsXlink","xmlSpace","ChangeLayoutPopup","setNewActiveFeatureInfo","shouldDisplayEdgeColumn","handleAddRow","$selector","dropDownUl","data-content","rowLetter","data-type","handleUpdateClick","handleToggleShowTypeClick","hideRowTypesList","updateRowSelectedFeatureAfterIndex","data-group","data-for","SqftEdgeRowDropdown","componentMeasureUnit","setComponentMeasureUnit","handleChangeMeasureUnitClick","handleSettingsClick","isSave","data-popup-id","data-action","data-value","data-step","data-menu","data-set","data-open","popupContent","setPopupContent","SqftFeaturesPopupSaveImageButton","SaveImageButtonClick","imageDataURL","screenshotIconStyle","camera-controls","camera-orbit","canvasRef","viewGLRef","onWindowResize","cleanup","forceContextLoss","gc","startAnimation","loadAllModels","closeMultiLoader","intensityValue","setIntensity","newIntensity","updateLightIntensity","handleLightingChange","updateSceneLighting","defaultChecked","hdrLoader","hdrUrl","rgb","rgbeLoader","RGBELoader","EquirectangularReflectionMapping","environment","pmremGenerator","PMREMGenerator","compileEquirectangularShader","hdrTexture","fromEquirectangular","environmentIntensity","EXRLoader","exrCubeRenderTarget","newEnvMap","SceneModelsLoader","sceneViewer","loadWalls","wallPromises","wallPosition","getWall","GLTFLoader","cabinetLoader","models","loadCabinetSet","loadCountertops","should_display_framed_doors","loadModel","totalBox","calculateModelsBox","calculateAndSetCameraPosition","countertopPosition","getCountertops","Box3","Object3D","expandByObject","targetLength","setFromObject","CabinetLoader","handlesLoader","crownMoldingLoader","cabinetCache","materialCache","urlToLoad","original_points","framed","is_filler","getResizedCabinetModel","resizedCabinet","cachedCabinet","cloneCabinet","cabinetScene","originalScene","clonedScene","MathUtils","degToRad","applyCachedMaterial","loadHandles","adjustLighting","materialUrl","assignMaterialToScene","materialGltf","materialMesh","getObjectByProperty","getResizedCornerCabinet","getResizedCabinet","LineBasicMaterial","BufferGeometry","setFromPoints","Line","HandlesLoader","handleCache","drawerObjects","doorObjects","logMeshes","handleIndex","cachedHandle","applyHandleToObjects","loadHandle","gltfHandle","handleMesh","drawer","applyHandleAsChild","door","objectPlacement","handleClone","allAssets","CrownMoldingLoader","loadCrownMolding","crownMoldingPositions","CrownMoldingPositions","prepareCrownMoldingPositionsForTheShape","cabinetMaterial","crownMoldingPromises","crownMoldingPosition","getCrownMolding","crownMoldingURL","loadMoldingModel","moldingModel","getCrownMoldings","SingleModelGLBViewer","initSceneV2","loadGLBModel","halfHeight","correctGltfProps","addLightV8","envMapIntensity","cameras","receiveShadow","isGroup","isLight","boxSize","multiplyScalar","lightOffset","intensityScale","maxDimension","lightDistance","verticalOffset","lights","addLightV4","addLightV5","addLightV6","addLightV7","pointLight","floorGeometry","PlaneGeometry","floorMaterial","MeshStandardMaterial","Mesh","floorMat","roughness","metalness","bumpScale","textureLoader","wrapS","RepeatWrapping","wrapT","sRGBEncoding","bumpMap","roughnessMap","floorMesh","base64data","lastTime","frameCount","renderCalls","activeTimers","originalRender","originalSetTimeout","updateDebugOverlay","totalMeshes","totalTextures","totalGeometries","totalMemory","getParameter","MAX_RENDERBUFFER_SIZE","jsHeapSize","usedJSHeapSize","getCurrentStep","MultiLoaderSteps","shapesData","getAnimationSpeed","baseDuration","animationDurations","startAnimations","transformStyles","finishedIterations","loaderStep","loaderStepIndex","opacityDiff","qrImage","setQrImage","cabinetsInSingleModelUrl","arUrl","extractARUrl","imageDataUrl","renderArButton","deviceType","GLBLoader","updateWorldMatrix","hiddenModelViewerStyle","ar-scale","touch-action","shadow-intensity","max-camera-orbit","xr-environment","cropperRef","handleSelectSlab","initialAspectRatio","autoCropArea","crop","handleRectClick","imageType","isHeightFocused","setIsHeightFocused","isWidthFocused","setIsWidthFocused","handleSizeChange","rawValue","numericValue","cropper","setAspectRatio","sizeInputError","setActive","checkboxClasses","prepareImageDraw","imageElement","imageSource","croppedCanvas","getCroppedCanvas","imageFile","files","maxSizeMB","maxWidthOrHeight","useWebWorker","compressedFile","domString","handlePlaceholderClick","qtActiveCategoryName","separateSqftLabel","labelName","subpart","contextMenuTitle","contextMenuSelection","ContextmenuList","CONTEXTMENU_WIDTH","CONTEXTMENU_HEIGHT","data-part-id","getMaxWidth","KITCHEN_CONTEXT_MENU_BUTTONS","BATHROOM_CONTEXT_MENU_BUTTONS","CONTEXT_MENU_BUTTONS","SqftContextMenuV2","ChangeValuePopupWindow","defaultOptions","shouldPreventDefault","increaseLongPressEvent","decreaseLongPressEvent","strokeLinejoin","isTouchEvent","onLongPress","shouldLongPressBeContinuous","longPressTriggered","setLongPressTriggered","setHandlerHold","shouldTriggerClick","isSFTAreaGroup","navRef","sqftGroup","parentRef","setSideBarButtons","menuThatStaysOpened","getSubMenuActiveButton","sidebarButton","subMenuActiveButton","submenuButton","setNavigationDisplayButton","preparedSidebarButtons","preparedButton","buttonToDisplay","newMenuButton","newMenu","newButtons","getTranslationId","handleWaterfallClick","addWaterfall_onClick","segName","handleFreeDrawClick","addWaterfallLayout","navItemMitered","shapeName","data-shape","counterTopArea","setCounterTopArea","setBumpouts","setEdges","setBacksplashes","setWalls","radiiCounts","radiusName","radiusDisplayName","anglesCount","angleDisplayName","anglesValue","angleName","messageTotal","bumpoutsArea","selectedEdge","setSelectedEdge","SqftNavEdgesFeature","data-shared-feature-name","setEgeFeature","attachAdditionalResources","edgeNameTranslated","lowerCaseEdgeName","attachEdgeResource","SqftNavEdgesMiteredButton","partIdMap","getFeatureGroupByItemName","getNavItemsWithThirdPartyAR3DUrls","processItemSelection","addBumpout_onClick","resetAllBumpouts","selectedBacksplash","setSelectedBacksplash","backsplashOptions","getBackSplashText","data-backsplash","data-name-metric","SqftNavBacksplashesCustomButton","activeCornersMenu","setActiveCornersMenu","radiusButtonRef","cornerButtonRef","data-href","isRadiiFeatures","radiiNavItems","staticFeature","staticFeatureGroup","getHardcodedRadii","radiiToDisplay","getHardcodedRadiiMitered","imperialRadii","radiiValue","getRadiusFeatureId","cornersNavItems","cornersToDisplay","getHardcodedCorners","cornerToDisplay","drawCornerValue","getCornerFeatureId","setSearchInput","SqftFeaturesChecker","checkSubPart","setDataTransfer","setData","dragImage","setDragImage","onDragStart","mouseEvent","MouseEvent","dragEvent","DragEvent","bubbles","cancelable","DataTransfer","dropEvent","SqftOptionsCrown","activeItem","setActiveItem","containerRef","containerHeight","setContainerHeight","setRows","listWidth","setListWidth","isActiveItem","NavMiteredSegment","segmentMaxLength","navMiteredSegment","navMiteredSection","underlaymentSection","NavWaterfallSection","waterfallSegmentsData","getTitle","waterfallSegmentData","NavWaterfallSegment","segmentThickness","NavWaterfallSegmentSwitcher","hasMultiplePartIds","featureData","Fragment","shouldShowFullHeight","SqftNavCustomBacksplashSection","SqftNavCustomBacksplashSegment","setHeightValue","hasRooms","roomsNavItem","QuotesSwitcher","isToggled","setIsToggled","handleDropDownClick","QuotesSwitcherLists","visibleQuotes","startIndex","QuotesSwitcherListQuotes","handleQuoteClick","quoteRoomFeature","loadQuoteToSQFT","visualizerQuotes","QuotesSwitcherListCategories","setQtCategories","categoriesFiltered","isMatchingWithQuote","isRoom","isRoomGroupExist","handleCategoryClick","nextQtCatName","existingQuoteForSelectedCategory","newVisualizer","QuotesSwitcherListRoomGroups","roomGroups","setRoomGroups","roomsNavItemsFiltered","roomNavItemPartName","nextRoomGroupName","existingQuoteIndex","handleItemSelect","handleDropdownSelect","prevIsOpen","onItemSelect","onDropdownSelect","isOpenInitially","Dropdown","isOpen","setIsOpen","internalActiveItem","setInternalActiveItem","hoveredItem","setHoveredItem","toggleDropdown","handleMouseLeave","onMouseEnter","handleMouseEnter","subIndex","topCabinetFeature","bottomCabinetFeature","getWorkspace","showSqftTutorial","renderTask","slide","ui","slider","setMouseWheel","detail","wheelDelta","scaleMinus","scalePlus","returnValue","resizeTimes","stepText","addImageToBody","nodeKey","tutorialImages","initNodes","translates","setSpecificStepRules","showTimer","ring","setButtonClicks","addCursorImages","buttonNext","addToQuote","addToQuote2","edgeImageButton","showNextStep","resizeLines","edgeClick","showFinishStep","forEver","removeCursorImages","animationFinished","$scrollDiv","moveRing","verticalLine","resizeVerticalLine","resizeVerticalLineBack","horizontalLine","resizeHorizontalLine","resizeHorizontalLineBack","toTheRight","basicX","stopResize","toTheBottom","basicY","timer2","edgesButtonsArray","edgeButton","chapeCount","excludedLines","translatesPath","replaceHtml","updateButtonAddToQuote","allElements","translated","innerText","getTranslationColumn","translationMissingValue","translationColumn","translateEdgeToFrench","edgeSharedFeatureName","isSqftVisited","glbLink","setGlbLink","usdzLink","setUsdzLink","saveFiles","sceneFiles","qrCode","glbFile","usdzFile","SceneExporter","exportToUSDZ","usdzBlob","usdzBase64","fileExtension","base64FileContents","exportToGLB","glbBlob","glbBase64","savedFiles","encodedLinks","dynamicLink","generateDynamicLink","pageUrl","whitePageRoute","prevPageRoute","LookListLeft","canvasSrc","setCanvasSrc","LookListContentHeader","selectAllChecked","LookListMainFeatureActions","LookListMainFeatureActionsMoreButton","moreOpened","setMoreOpened","showLabel","LookListMainFeatureActionsPopper","closePopper","LookListMainFeatureActionsPopperButtons","addToWishListButtonCLick","changeItemButtonCLick","LookFeatureQuantity","propsQuantity","useLixilQuantity","MAX","LookFeatureQuantityText","LookListBundleFeatures","GroheCartItemActions","LookListMainFeatureCheckbox","LookListMainFeatureShipping","existingFeature","shippingOption","LookLayoutMain","looks","setLooks","showAllLayouts","setShowAllLayouts","updateMain","ActionTypes","lookIndex","LookLayoutItem","analyticsQuery","lookViewOpened","realDisabled","lookLayoutOpened","loginOpened","buttonTextId","wishlistButtonClick","neededIntroStep","showPoints","LookSideBarEditButtonPopper","setShowPoints","aria-describedby","shareModalOpened","setShareModalOpened","shareClick","resetLookClick","LookSideBarShareModal","hideButton","undoButtonClick","keyboardDetect","ctrlKey","LookRoomsMain","LookRoomPreset","closeRooms","afterSwitch","nextRoute","roomPresetClick","renderButton","questionPopups","getDescription","getButtonText","presetToSet","submitButtonClick","stylePrefix","LookStylePopupFeature","LookStylePopupButtons","removeButtonClick","updatedDeletedCartItems","getBundleFeatureWithoutChildItems","bundleFeatureWithoutChildItems","countRelatedProductParent","removeBackContinueButtonClick","removeBackAddItemsBackClick","removeBothButtonClick","titleString","exitPostMessage","leaveButtonClick","getButtons","sourceChanged","sourceChangeType","variantUrl","changedFeature","currentSelected","fromPreset","preparedVariantUrl","lixilVariantUrl","hideFunction","updateDesignButtonClick","LeadCapturePopupContent","isQuotation","getSubTitle","getContent","LeadCapturePopupContentInputs","forgotPasswordLinkClick","LeadCapturePopupFooter","privacyClick","oneButtonOnly","LeadCapturePopupFooterSubmit","tryToSwitchToTwoFa","resendSMSButtonClick","receiveCallButtonClick","fromShare","saveResponse","getSubmitButtonText","LeadCapturePopupTwoFA","LeadCapturePopupTwoFAVerify","LeadCapturePopupBoxImage","UnlockCalculationStep","closeTutorial","preventRequiredFunc","preserveAspectRatio","contentVisibility","edgeMode","fillOpacity","strokeLinecap","strokeMiterlimit","strokeOpacity","LookFeatureItemLocked","LookListFeatureName","LookWizardSectionListFeatureQuantity","_initialFlowVisited","inititalFlowOnEnter","checkForInitialFlow","nextState","visualizerOnEnter","visualizerEntered","checkForVisualizerOnly","newScopeOnEnter","materialsPageOnEnter","showTutorialVideo","shoppingCartOnEnter","onEnter","QuoteDesignPage","goToVisualizer","goToQuotingTool","buttonClass","WebsiteButton","showCheckoutLineItemPricesToggle","showPrices","showCostPricesToggle","isLoggedAsAdmin","InitialFlow","setQtCategoriesRooms","roomKey","handleFooterBackClick","InitialFlowFooterQuestion","getFooterQuestion","ProjectScopeMobileHeader","handleInitialButtonClick","buttonType","InitialFlowRoom","handleInitialRoomClick","kitchenSubscription","exitInitialFlow","InitialFlowLayout","setMissingInititalFlowValues","handleInitialRoomLayoutClick","layoutIndex","getLayouts","IntroVideo","getStepText","videoPath","videos","fluid","SelectionWindowPage","historyUpdateTimeout","SelectionMainWindow","updateQtRoutePath","getSubPartFeatures","listenToRouteChangeForQtCategories","nextCategory","qtCategoryIndexFromUrl","subPartsMatching","subPartIndexFromUrl","subPartIndexFromUrlTest","setFirstAvailableCategory","setFirstRoute","runActionAfterVisualizerChange","getActiveChildPart","nextCategoryName","hashHistoryListener","listenerObject","existingSelGroup","selGroup","changeActivePart","requestName","_partIdRequestsMade","nextSelGroup","relatedNavItem","checkForCheckedStep","activePartIndex","switchToDirectCategory","closeSelectionWindow","searchRequest","realSubPart","unlisten","listen","SelectionWindowBvRequests","SelectionMain","paginationOffset","pageCount","featuresPerPage","mobileSearch","canvasLoading","canvasExpanding","canvasCollapsing","needToRefreshItems","_ismounted","checkIfNeedToSwitchListView","checkViewType","setDesktopItemHeight","cameFromBV","selectionBodyStyles","firstClickDone","showLockScreen","showHomeButton","showVisualizerExpandButton","showNotInVisualizerView","getZoomingPartId","canvasImageStyles","renderCanvasPosition","handleToggleLayout","getCurrentParent","checkPart","navItemsForPrevParent","InstList","clickedIndex","handleServiceClick","serviceIndex","updateServiceValue","valueName","getSublistHeight","servicesLength","FeatureInfoAssociated","addAllClicked","handleAddAllClick","handleRelatedItemsSearchChange","handleViewAllOptionsClick","prodAll","FeatureInfoAssociatedProducts","relatedFeaturesRequestMade","activeDbFeatureId","getLoadedFeatures","relatedGroupIndex","subItemIndex","FeatureInfoAssociatedProduct","showGalleryButton","data-feature-id","FeatureInfoDesc","FeatureInfoMaterial","featureMaterialValues","materialFilterValue","gImg","changeImage","galleryExist","setVisible","setLoaded","cols","cache","fixedWidth","defaultHeight","SelectionMainVirtualizedList","thisFeatureAdded","rItem","showRowRelatedItems","updateVirtualizedCache","deferredMeasurementCache","RowItemButtons","RowItemQuantity","thisFeature","newRowItems","existingItemIndex","RowItemPrice","existingItem","RowItemRelatedProductsButton","RowItemRelatedProducts","setRelatedFeaturesRequestMade","relGroups","setRelGroups","loadedFeatures","featureHeight","relatedStyles","relatedFeatureIndex","MaterialsWizardSqftButton","WizardList","filterGroupValues","setFilterGroupValues","getFilterValues","filterGroupAll","filteredFilterValues","getRenderFilterValues","filterGroupValuesArray","filObject","WizardDesktopGrid","wizardObjectInterface","enableForVisualizer","WizardMobileGrid","minColumns","SelectionMainVirtualizedGrid","SelectionMainVirtualizedFiltersGrid","setCurrentFilter","defaultTitle","setDefaultTitle","gridFeatures","setGridFeatures","setAllTitles","reversedTitles","setReversedTitles","filterValuesAvailable","firstTitle","getFeaturesAndFirstTitle","renderFeatures","newAllTitles","skipTitles","countertopsFiltered","spacersCount","spacersTitleCount","rowsToAdd","onGridScroll","shiftTitle","firstT","getRowHeight","firstFilterTitle","SelectionGridFiltersTitleDropdown","dropdownOpened","setDropdownOpened","fTitle","fTitleIndex","SelectionMainVirtualizedGridMobile","SelectionMainVirtualizedFiltersGridMobile","columnsToAdd","getColumnWidth","firstRowFeatureIndex","ExpandVisualizerMethods","expandCanvas","wideScreen","bigScreen","SelectionViewSwitchers","showListView","data-view","FiltersButton","SelectionFooter","handleAddCartItemClick","updateCartAndGoBack","otherRoomCartItem","createNewQuoteAndAddNewCartItemAfterConfirmPopupClick","replaceOldCartItemAfterConfirmPopupClick","executeAfterAddToCart","updatedWithQuoteIndexRoomCartItem","exitFeatureInfo","changeRelatedItem","handleAddRowItemsClick","handleSelectItem","footerButtonCick","existingWizSetupIndex","wizObjectIndex","activateWizardAgain","canGoToFeatureInfo","handleNextButtonClick","renderFooterSelect","relatedItemClick","setCurrentWizardStepFinished","addToCartTranslate","rowIsActive","SelectionMainSelect","bvPart","SelectionMainSelectCategory","SelectionFooterSubPart","collapsing","collapseRing","expandTimeoutId","expandRing","SelectionFooterSubSteps","currentSteps","subStepIndex","mapDispathToProps","MaterialsWizardMain","setNavItems","scrollElem","setNavigationItems","newNavItems","setNewCanvasClass","prevFeatureGroup","alreadyAddedCartItem","fakeSetShowLoader","MaterialsMainCanvas","setCanvasLoading","showNotCompatibleViewReal","MaterialsWizardMainList","resizing","setResizing","prevItemHeight","itemHeight","updateHeight","alreadyRequestedWizardFeatures","currentStore","stepFromUrl","MaterialsWizardFooterStep","stepButtonClick","showDoneCheckMark","activeStepIndex","setExpanded","setCollapsing","goToTheNextStep","realNextStep","selectedValueIsNotFromCurrentSelections","currentG","mg","setMaterialsCameFromPage","newItems","isSingleFeatureGroup","showConflictingButton","greenNextIsVisible","hasNavItems","greenNextDisabled","alreadyInCart","addToCartVisible","addToCartDisabled","rowItem","renderWizardList","MaterialsWizardFooterSelectButton","ShoppingCartMobile","onContentScroll","scartContent","needToShowQuestionAgain","changeContainerHeight","handlePaneClick","activePaneIndex","activePane","$activePaneTitle","$scartContent","hardcodedImage","ShoppingCartMobileHeader","ShoppingCartMobileHeaderWithRouter","ChangeRoomButton","handleAddRoomClick","PriceInput","setPrice","CartItemQuantity","cartItemQuantity","isInputDisabled","CartItemCalcButton","handleCalculatorButtonClick","CartItemTotal","CartItemSearch","updateCounter","prevConfirmPopupOpened","updateInputText","updateForNewNavItem","closeDropdown","fromConflicting","neededVisualizerType","CartItemSearchButton","handleSearchButtonClick","ShoppingCartDiscountsList","getDiscountTitle","ShoppingCartDiscountsListItem","ShoppingCartItemsListInstallationItem","handleRemoveInstallationClick","instPrice","otherCartItems","isSlabsCartItem","slabCartItems","selectedQuoteRoomName","SimilarProductsList","SimilarProductsListItem","AdvancedQuotingWizard","notFromWizardCartItems","notFromWizardSlabCartItems","commonVisualizerType","wizardsSelectedObject","AdvancedQuotingWizardGroups","nothingSelected","AdvancedQuotingWizardGroupsSearch","defaultText","ShoppingCartItemsListWizardCustomItem","PriceWorksheetButton","handlePriceWorkSheetButtonClick","ShoppingCartTaxInput","isTaxObject","priceValue","setPriceValue","VisualizerButton","ShoppingCartFooterSubParts","setSelectionGroup","firstCatName","ButtonGroup","dropdownOpenedFirstTime","setDropdownOpenedFirstTime","handleArrowClick","buttonIndex","currentQuoteWizards","wizValue","lastFinishedWizard","getLastWizardItem","quoteClick","quoteDeleteClick","updateAllQutoesTiedItems","changedCartFeatures","newAllValues","selectedObject","severalQuotes","showEditButtons","PriceWorksheetList","DiscountAdd","approvePersonSelectHandle","approveObject","optionIndex","DiscountDeposit","DiscountFinance","percentageChangeClick","dropdownItem","monthChangeClick","getDropdownOptions","textAfterProperty","dropdownPercentageItems","setCellVisible","withPercentage","dropdownMonthItems","DiscountNestedParent","allNested","uuIdId","nestedOptions","allSelectedNested","nestedChild","nestedChildIndex","parentDiscount","DiscountNestedChild","discountDropdownClick","updatedDiscounts","updatedDiscount","addNestedDiscountClick","lastSelectedNested","ShoppingCartDesktop","UnlockCalculations","UnlockCalculationsSteps","exitRunAnimations","currentRenderTime","renderUnlockCalcTimes","waitTime","renderIndex","getStep","stepStart","UnlockCalculationsTutorial","countertopButtonStyles","countertopButtonText","checkCountertopButtonStep","countertopSelector","countertopButton","$list","computed","UnlockCalculationsTutorialLowes","buttonStyles","currentDate","currentYear","currentMonth","sureTaxData","sureTaxResponse","totalTax","contractsPopupOpened","checkContractBlobs","contractData","closeContracts","closeSignPopup","ContractsPopupSuccess","showEmail","disableCustomerEmails","ContractsPopupDocument","ReactPdfDocument","ReactPdfPage","contractRef","pageRef","depositValue","isReceipt","onLoadSuccess","onRenderSuccess","ContractsPopupFooter","onPagerClick","newContext","pageClick","firstUnFilledCustomField","postSaveContracts","Pagination","handlePageClick","pager","setPage","getPager","pages","startPage","endPage","postContractSign","signaturePngBase64","responseSaveQuote","replacements","customFieldValues","contractFieldValuesOnly","contractSign","getDocumentForJob","fromPostSignContract","pdfReceiptPagesLength","hasContractCallBack","DocumentValueDict","Replacements","CustomFieldValues","coordInterface","fieldInterface","isPresent","occurrencesCount","contractInterface","documentKey","documentOptions","cMapUrl","cMapPacked","needToScrollToViewAfterPageChange","ContractsPopupFields","masterContractFields","handleTextFieldOnKeyDown","scrollToIndicator","handleTextFieldOnBlur","block","handleNextIndicatorClick","pageOffsetLeft","pageOffsetTop","renderFields","selectedFieldCoords","selectedFieldHasValue","coordIndex","llx","lly","urx","yExpand","autoFocus","handleTextFieldOnChange","firstEmpty","ContractsPopupSignatureField","fieldValue","signatureName","alreadySignedSameFieldValue","data-coordname","ContractsPopupCheckboxField","ContractsPopupNextIndicator","ContractsPopupFieldValue","getFieldDiv","SignaturePadPopup","setSignatureImage","sigCanvas","_sigPad","_reset","_canvas","fromDataURL","_isEmpty","isInformationFilled","postContractSignature","pngBase64","getTrimmedCanvas","isReceiptSign","closeContractSigning","contractSigningCallback","canvasProps","getReceiptSignStyles","childView","lookTutorialModalRef","neededNumber","scrollSelector","scrollDiv","firstLockedElem","modalEl","LookLockTutorialModal","nextButtonClick","roundToDecimals","getCurrentPositionFromScale","LookZoomer","currentPosition","setCurrentPosition","isDragging","setIsDragging","startY","setStartY","startPosition","setStartPosition","startZoomCenter","setStartZoomCenter","onZoomEnd","zoomButtonClick","currentScale","MIN_SCALE","getCurrentScaleFromPosition","nextScale","prevScale","thumbStyles","LookContextMenu","LookContextMenuContent","zoomedFeature","isShowerWizard","isVanityWizard","isCenterIslandWizard","wizButtonName","LookContextMenuVanityContent","setLoadingCart","prevOverlayOpened","locked","GroheFeature","GroheFeatureOptionsType","updateOptions","activeMetaDataValue","leftRightArray","GroheFeatureOptionsShelfSide","displaySideOptionsFor","GroheFeatureOptionsSide","leftDisabled","rightDisabled","getPanTranslateId","GroheFeatureOptionsShowerPan","currentMeta","positionsAvailable","GroheFeatureOptionsCabinetSide","neededPosition","isButtonDisabled","positionLetter","regexNumbersAndEmptyString","BODY_SPRAY_POSITIONS","GroheFeatureOptionsBodySpray","currentQuantity","positionIndex","GroheFeatureOptionsSlatWall","addedToCartClicked","setAddedToCartClicked","cartItemsArray","requiredFeature","addAllToCartButtonClick","GroheFeaturesTotalPrice","totalFeaturesPrice","withDecimals","SLIDE_DIRECTIONS","sliderRef","handleScrollClick","categoriesOpened","GroheCategory","featureGroupClick","closeFilterClick","displaySameColorGroups","zoomToFeatureGroupByFeature","changeFeature","groheSimilarItemClick","GroheFeatureShort","addedToCart","setAddedToCart","addToCartButtonClick","layoutsOpened","wizardSubParts","totalSteps","featureGroupDescription","boundaryCount","hidePrevButton","hideNextButton","activeTitle","setActiveTitle","lixilURL","infoKey","panel","titleKey","LookFeatureInfo3d","arButtonOnly","threeDSrc","glb","usdz","hdr","arButton","slot","LookFeatureInfo3dViewer","reveal","ar-modes","ios-src","environment-image","class","exposure","aar-modes","quick-look-browsers","infoButtonClick","threeActive","threeColor","augActive","augColor","isRoomIdeasOpened","isRoomLayoutsOpened","continueShopping","selectedValues","canBeAdded","getCartButtonText","checkoutDisabled","allowRender","setAllowRender","roomButton","GroheLayoutItem","GroheRoomPreset","presetTitle","presetPrice","GroheTopButtons","topButtonClick","setHomeRoute","GroheMenuButton","GroheShareParentButton","GroheShareButton","shareButtonClick","GroheSaveButton","GroheSameColorFeaturesContent","sameColorFeature","headerButtonClick","loginButtonClick","GroheCartLoginHeader","allSteps","setUserInputValue","subTitleTranslateId","parentGroupClick","GroheCartDesignRecommendedList","translateIndex","setTranslateIndex","slideButtonCLick","GroheCartDesignRecommendedFeature","termsAcceptClick","GroheCartDeliveryColumn","resendCodeButtonClick","gcRef","cartFooterCheckoutClick","GroheCartFooter","paymentSelect","valuesBeforeCheckbox","setValuesBeforeCheckbox","defaultValues","shippingInfoLoading","setShippingInfoLoading","addressError","setAddressError","getShippingInfo","confirmButtonClick","shipping_tier","addressValidated","isConfirmed","submitButtonTranslateId","payment_type","GroheCartPaymentInputs","cardInputChange","countryItems","countryName","countryItem","cartItemsTotalQuantity","deliveriesReceived","setDeliveriesReceived","prevQuantity","getTrumbleResponseShipping","cartItemsString","getShippingHQResponseShipping","getOptionsAndCreateDeliveryList","deliveriesSections","deliveryIndex","GroheCartDeliverySection","deliveryCartItems","fromToString","getMinAndMaxDays","groheCartDeliveryInterface","SHIPPING_TIMES","minDays","maxDays","days","showWizard","selectedInSqft","canSelectNavItem","showFinalPrice","GroheWizardContentFeature","showPriceInput","GroheWizardContentSingleFeature","LookWizardSection","propsTypes","LookWizardSectionGroup","nextPedestal","LookWizardSectionList","setAdditionalFeaturesLoading","activePositionInListExist","LookLockTutorialCaller","LookWizardSectionFilters","LookWizardSectionFilterItem","listFilterClick","setFeature","featureDownloaded","setFeatureDownloaded","featureFromUrl","newResponse","ShopFeature","galleryImageClick","galleryImageIndex","galleryImage","ShopFeatureImageGalleryItem","ShopFeatureVisualizeButton","ShopFeaturePrice","priceSplitted","ShopFeatureShipping","ShopFeatureOptions","setActiveOption","ShopFeatureAddToCartComponents","ShopFeatureSuccessMessage","setIsVisible","successElement","ShopFeatureDownloads","ShopFeatureBackNextButtons","ShopFeatureWizardButton","stateFeatureGroup","setStateFeatureGroup","checkReceivedFeatures","useSimpleView","ShopCategoryList","startLoadingAdditionalFeatures","ShopCategoryVirtualizedGrid","listElement","gridColumnCount","featureWidth","gridRowCount","gridItemRenderer","overscanIndicesGetter","cellCount","overscanCellsCount","stopIndex","overscanStartIndex","overscanStopIndex","disableHeight","autoHeight","ShopCategoryListFeature","ShopCategoryListFeatureOptions","prevFeature","ShopCategoryAside","ShopCategoryBackNextButtons","LookCompatabilitySectionButtons","closeAlert","compatabilityObject","compatabilityObjectIndex","toFeature","lm_styles","fullScreenHeight","sectionStyles","buyNow","expandDisabled","contentStyles","featureSectionIsHidden","LookFeatureMatchingStyleAlert","styleAlertModalOpened","setStyleAlertModalOpened","deletedFromCart","LookFeatureMatchingStyleAlertModal","reviewYourLookButtonClick","LookFeatureUnlockButton","setShowAllGroups","showAllGroupsCheckbox","parentObjects","LookWizardContent","thumbnailRef","nextActiveFeature","wizRef","LookIntroBox","urlBeforeIntro","setUrlBeforeIntro","skipIntroButtonClick","showAnotherTextFor","stepTranslateId","getStepTranslateId","roomIdeasTranslate","closeIntro","LookIntroBoxSteps","LookIntroBoxIcon","getPartIdsToHighLight","LookIntroCanvasHighlighting","runHighlighting","partIdsToHighLight","callRecursiveRendering","role","outline","spreadMethod","gradientUnits","stopColor","stopOpacity","onTop","videoPlayerRef","video","muted","getArButton"],"mappings":"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,EACL,EAAK,EACL,GAAM,wCAER,CACE,EAAK,GACL,EAAK,EACL,GAAM,wCAER,CACE,EAAK,GACL,EAAK,GACL,GAAM,wCAER,CACE,EAAK,EACL,EAAK,GACL,GAAM,yCAGV,gBAAmB,CACjB,CACE,EAAK,EACL,EAAK,EACL,GAAM,wCAER,CACE,EAAK,GACL,EAAK,EACL,GAAM,wCAER,CACE,EAAK,GACL,EAAK,GACL,GAAM,wCAER,CACE,EAAK,EACL,EAAK,GACL,GAAM,yCAGV,UAAa,UACb,gBAAmB,UACnB,YAAe,aAEjB,CACE,QAAW,GACX,OAAU,sBACV,EAAK,mBACL,EAAK,GACL,EAAK,mBACL,SAAY,GACZ,IAAO,6GACP,aAAgB,iGAChB,QAAU,EACV,YAAe,IACf,aAAgB,IAChB,aAAgB,GAChB,aAAgB,GAChB,cAAiB,GACjB,MAAS,GACT,OAAU,GACV,MAAS,GACT,eAAkB,CAChB,CACE,EAAK,GACL,EAAK,GACL,GAAM,wCAER,CACE,EAAK,GACL,GAAM,GACN,GAAM,wCAER,CACE,EAAK,GACL,GAAM,GACN,GAAM,wCAER,CACE,EAAK,GACL,EAAK,GACL,GAAM,yCAGV,gBAAmB,CACjB,CACE,EAAK,EACL,EAAK,EACL,GAAM,wCAER,CACE,EAAK,GACL,EAAK,EACL,GAAM,wCAER,CACE,EAAK,GACL,EAAK,GACL,GAAM,wCAER,CACE,EAAK,EACL,EAAK,GACL,GAAM,yCAGV,UAAa,UACb,gBAAmB,UACnB,YAAe,aAEjB,CACE,QAAW,GACX,OAAU,sBACV,EAAK,mBACL,EAAK,GACL,EAAK,mBACL,SAAY,IACZ,IAAO,6GACP,aAAgB,iGAChB,QAAU,EACV,YAAe,IACf,aAAgB,IAChB,aAAgB,GAChB,aAAgB,GAChB,cAAiB,GACjB,MAAS,GACT,OAAU,GACV,MAAS,GACT,eAAkB,CAChB,CACE,EAAK,GACL,GAAM,GACN,GAAM,wCAER,CACE,EAAK,GACL,EAAK,GACL,GAAM,wCAER,CACE,EAAK,GACL,EAAK,GACL,GAAM,wCAER,CACE,EAAK,GACL,GAAM,GACN,GAAM,yCAGV,gBAAmB,CACjB,CACE,EAAK,EACL,EAAK,EACL,GAAM,wCAER,CACE,EAAK,GACL,EAAK,EACL,GAAM,wCAER,CACE,EAAK,GACL,EAAK,GACL,GAAM,wCAER,CACE,EAAK,EACL,EAAK,GACL,GAAM,yCAGV,UAAa,UACb,gBAAmB,UACnB,YAAe,aAEjB,CACE,QAAW,EACX,OAAU,sBACV,EAAK,mBACL,EAAK,GACL,EAAK,kBACL,SAAY,IACZ,IAAO,6GACP,aAAgB,iGAChB,QAAU,EACV,YAAe,IACf,aAAgB,IAChB,aAAgB,GAChB,aAAgB,GAChB,cAAiB,GACjB,MAAS,GACT,OAAU,GACV,MAAS,GACT,eAAkB,CAChB,CACE,EAAK,GACL,EAAK,GACL,GAAM,wCAER,CACE,EAAK,EACL,EAAK,GACL,GAAM,wCAER,CACE,EAAK,EACL,EAAK,EACL,GAAM,wCAER,CACE,EAAK,GACL,EAAK,EACL,GAAM,yCAGV,gBAAmB,CACjB,CACE,EAAK,EACL,EAAK,EACL,GAAM,wCAER,CACE,EAAK,GACL,EAAK,EACL,GAAM,wCAER,CACE,EAAK,GACL,EAAK,GACL,GAAM,wCAER,CACE,EAAK,EACL,EAAK,GACL,GAAM,yCAGV,UAAa,UACb,gBAAmB,UACnB,YAAe,aAEjB,CACE,UAAa,UACb,QAAW,EACX,OAAU,OACV,EAAK,mBACL,EAAK,GACL,EAAK,kBACL,SAAY,GACZ,IAAO,6EACP,MAAS,GACT,OAAU,GACV,MAAS,SAEX,CACE,UAAa,UACb,QAAW,EACX,OAAU,OACV,EAAK,mBACL,EAAK,GACL,EAAK,kBACL,SAAY,IACZ,IAAO,6EACP,MAAS,GACT,OAAU,GACV,MAAS,SAEX,CACE,UAAa,UACb,QAAW,EACX,OAAU,OACV,GAAM,kBACN,EAAK,GACL,GAAM,kBACN,SAAY,EACZ,IAAO,6EACP,MAAS,GACT,OAAU,GACV,MAAS,SAEX,CACE,UAAa,UACb,QAAW,EACX,OAAU,OACV,EAAK,kBACL,EAAK,GACL,GAAM,kBACN,UAAa,GACb,IAAO,6EACP,MAAS,GACT,OAAU,GACV,M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AS,aAAEluD,SAASu6F,eAAe,EAAK+pB,MAAMjqB,WACpD,EAAKupG,SAAS,CACZptG,WAAY,CACVl3F,MAAO4uD,EAAO5uD,QACdC,OAAQ2uD,EAAO3uD,aAhJF,EAqJnBuuQ,mCAAqC,SAAC/2P,GAAqC,IAA3BiuL,EAA2B,uDAAf,EAAK1gF,MAC/D,OAAQvtG,GACN,IAAK,SACH,MAAO,CACL29B,KAAM,IACN90C,IAAK,KAET,IAAK,SACH,MAAO,CACL80C,KAAM,IACN90C,IAAK,KAET,IAAK,SACH,MAAO,CACL80C,KAAM,IACN90C,IAAK,KAET,IAAK,QACH,MAAO,CACL80C,KAA+B,IAAzBswJ,EAAUzqL,WAAmB,IAAM,IACzC3a,IAAK,KAET,IAAK,SACH,MAAO,CACL80C,KAAM,KACN90C,IAAK,KAET,IAAK,UACH,MAAO,CACL80C,KAAM,KACN90C,IAAK,KAET,IAAK,SACH,MAAO,CACL80C,KAAM,IACN90C,IAAK,KAET,IAAK,SACH,MAAO,CACL80C,KAAM,IACN90C,IAAK,KAET,IAAK,SACH,MAAO,CACL80C,KAAM,KACN90C,IAAK,KAET,QACE,MAAO,CACL80C,KAAM,EACN90C,IAAK,KAvMM,EA4MnBuuQ,wBAA0B,SAACjtQ,GAAmC,2CAAf,EAAKojH,MAElD,OAAQpjH,GACN,IAAK,YACH,MAAO,CACLwzC,KAAM,IACN90C,IAAK,KAET,IAAK,aACH,MAAO,CACL80C,KAAM,KACN90C,IAAK,KAET,IAAK,UACH,MAAO,CACL80C,KAAM,IACN90C,IAAK,KAET,IAAK,OACH,MAAO,CACL80C,KAAM,KACN90C,IAAK,KAET,IAAK,QACH,MAAO,CACL80C,KAAM,IACN90C,IAAK,KAET,IAAK,SACH,MAAO,CACL80C,KAAM,IACN90C,IAAK,KAET,IAAK,aACH,MAAO,CACL80C,KAAM,IACN90C,IAAK,KAET,IAAK,cACH,MAAO,CACL80C,KAAM,IACN90C,IAAK,KAET,IAAK,eACH,MAAO,CACL80C,KAAM,KACN90C,IAAK,KAET,IAAK,iBACH,MAAO,CACL80C,KAAM,KACN9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EZA,UAAWiB,EAFC,EAEDA,cAEzB+gG,EAAqBl/E,EAAMjhC,YAA3BmgH,kBACA14G,EAAoBw5B,EAAMz5B,YAA1BC,iBACP,MAAO,CACLg3C,aACA0B,qBACAN,oBACAa,iBACApiC,eACAc,gBACAjB,YAEA6jF,wBAAyBme,EAAkBltH,OAC3CwU,sBAmBuBi9J,EAAzB,CAA6Ci9M,K,sHC3S/C,WAEMS,EAA4B,CAChC,QACA,iBACA,wBACA,cACA,wBACA,2BACA,2CACA,uCACA,oBACA,uBACA,oBACA,8BACA,wBACA,4BACA,yBACA,0BACA,yBACA,4BACA,YACA,yBACA,6BACA,sBACA,oCACA,yBACA,4BACA,cACA,kCACA,oBACA,aACA,oBACA,kBACA,0BACA,+BACA,qBACA,sBACA,eACA,sBACA,4BACA,iBACA,6BACA,yBACA,sBACA,gCACA,+BACA,+BACA,wBACA,kBACA,8BACA,eACA,uBACA,eACA,uBACA,aACA,cACA,8BACA,cACA,mBACA,iBACA,4BACA,kBACA,+BACA,wBACA,cACA,sBAGIC,EAAyB,CAC7B,uBACA,wBACA,iBACA,kBACA,kBACA,UACA,UACA,iBAG4CF,EAAjCA,+BAAiC,SAACG,GAC7C,IAAKA,EACH,MAAO,GAETA,EAAeA,EAAar3W,QAAQ,MAAO,KAAKA,QAAQ,SAAU,IAClE,IAAIs3W,GAAgB,IAAAr4W,wBAAuB/Q,mBAAmBmpX,IAAeluW,OAC7E,IAAKguW,EAA0BjoX,SAASooX,KAAmBF,EAAuBloX,SAASooX,GACzF,MAAO,GAET,OAAQA,GAEN,IAAK,uBACH,MAAO,eACT,IAAK,kBACH,MAAO,kBACT,IAAK,iBACH,MAAO,cACT,IAAK,wBACL,IAAK,kBACH,MAAO,gBACT,IAAK,UACH,MAAO,iBACT,IAAK,UACH,MAAO,SACT,IAAK,gBACH,MAAO,YAET,IAAK,sBACL,IAAK,gCACL,IAAK,+BACL,IAAK,+BACL,IAAK,oBACL,IAAK,8BACL,IAAK,wBACL,IAAK,cACL,IAAK,2CACL,IAAK,uCACL,IAAK,iBACL,IAAK,qBACH,MAAO,gBACT,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","file":"js/bundle.min.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".min.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// The chunk loading function for additional chunks\n \t// Since all referenced chunks are already included\n \t// in this file, this function is empty here.\n \t__webpack_require__.e = function requireEnsure() {\n \t\treturn Promise.resolve();\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonpQuickQuote\"] = window[\"webpackJsonpQuickQuote\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1333,0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import forEach from 'lodash/forEach';\r\nimport uniq from \"lodash/uniq\";\r\n\r\nimport {QuotePricing} from 'shared_components';\r\nimport store from '../store';\r\nimport {getInstallationsTotalCost} from \"../reducers/instReducer\";\r\nimport {DISCOUNT_TYPES} from \"../bvcomponents/priceWorksheet/discounstInterface\";\r\nimport {checkIfInCatProperty} from \"./displayLogic\";\r\nimport {PartMenuType} from \"../bvcomponents/visComponents/constants\";\r\nimport {filterFeaturesByValues, isVisualizerRoute, s3FeatureImagePath, splitFeatureName} from \"./utils\";\r\nimport {getCountertopFeatureGroup, getCurrentLayout} from \"../bvcomponents/appLayout\";\r\nimport {\r\n featureIsMatchingQtCatName,\r\n getCurrentQuoteRoomCartItem,\r\n} from \"./categorySwitchingFunctions\";\r\nimport {\r\n BACKSPLASH_LABELS,\r\n CABINET_LABELS, CORNER_LABELS,\r\n COUNTERTOP_LABELS,\r\n EDGE_LABELS,\r\n SQFT_FEATURES\r\n} from \"../bvcomponents/sqft/constants\";\r\nimport sqftConfig from \"../bvcomponents/sqft/components/canvas/store/sqftConfig\";\r\nimport {mm2ToM2, sqInchesToSqFoot} from \"../bvcomponents/sqft/helpers/sqftHelper\";\r\nimport {getBundledFeatures, isInStock} from \"../bvcomponents/look/lookNavigation/lookFunctions2\";\r\nimport {LIXIL_USER_QUERY_PARAMS} from \"../api/look-api\";\r\nimport {CART_ITEM_ADDED_BY} from \"../bvcomponents/shoppingCart/cartItemInterface\";\r\nimport {ROUTES} from \"../routes\";\r\nimport {getCommonVisualizerType, IS_LIXIL_UI, IS_PRODUCT_JOURNEY} from \"../config\";\r\nimport {LOOK_WALLS_ONLY} from \"../bvcomponents/look/core/constants\";\r\nimport {getFeaturePriceProperty, numberWithCommas, updatePriceWithMarkUp} from \"./priceFunctions\";\r\nimport {getHardCodedFloFormShopCartCost, isCabinetsFabricator, isCafeCountetops} from \"./fabricatorHardcode\";\r\nimport {getDifferentCurrencyCartItems} from \"./misc2\";\r\nimport {\r\n getCafeCountertopsDeliveryCost,\r\n getCartItemShippingCost\r\n} from \"../bvcomponents/look/grohe/groheCart/groheCartDelivery/deliveryFunctions\";\r\nimport {\r\n getDiscountsForSection,\r\n getFilteredSections,\r\n shouldCalculateDiscount\r\n} from \"../bvcomponents/priceWorksheet/discountFunctions\";\r\n\r\nexport const featureThumbnailUrl = (feature, size) => {\r\n if (feature.menuType === PartMenuType.Complex) {\r\n return feature.partThumbnail\r\n }\r\n return feature.dbFeature.customThumbnail\r\n ? feature.dbFeature.customThumbnail\r\n : feature.dbFeature.thumbnailUrl\r\n ? s3FeatureImagePath(feature.dbFeature.thumbnailUrl, size)\r\n : \"\";\r\n}\r\n\r\nexport const getPartThemeThumbnail = (partThumbnail, activeTheme) => {\r\n if (partThumbnail && partThumbnail.includes(\"/images\") && activeTheme && activeTheme !== \"qc\") {\r\n const splitted = partThumbnail.split(\"/images\");\r\n if (splitted[0] && splitted[1]) {\r\n return splitted[0] + \"/images-\" + activeTheme + splitted[1];\r\n }\r\n }\r\n return partThumbnail\r\n}\r\n\r\nexport const TAX_DISCOUNT_PCT = 25;\r\n\r\nexport const browserIsSafari = () => {\r\n return navigator.vendor && navigator.vendor.indexOf('Apple') > -1 &&\r\n navigator.userAgent &&\r\n navigator.userAgent.indexOf('CriOS') === -1 &&\r\n navigator.userAgent.indexOf('FxiOS') === -1;\r\n};\r\nexport const isIOSDevice = () => {\r\n return !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\r\n};\r\nexport const isChrome = () => {\r\n return !!navigator.userAgent.match('CriOS');\r\n};\r\nexport const isIphoneX = () => { // https://stackoverflow.com/questions/47226824/iphonex-and-notch-detection\r\n let iPhone = /iPhone/.test(navigator.userAgent) && !window.MSStream;\r\n let aspect = window.screen.width / window.screen.height;\r\n return !!(iPhone && aspect.toFixed(3) === \"0.462\")\r\n};\r\nexport const isAndroid = () => {\r\n return navigator.userAgent && navigator.userAgent.toLowerCase().indexOf(\"android\") > -1;\r\n};\r\nexport const isIframe = () => {\r\n try {\r\n return window.self !== window.top;\r\n } catch (e) {\r\n return true;\r\n }\r\n};\r\nexport const isIE = () => {\r\n return (window.navigator.userAgent.indexOf('MSIE ') > 0)\r\n || (!!window.MSInputMethodContext && !!document.documentMode)\r\n || (window.navigator.userAgent.indexOf('Trident/') > 0)\r\n};\r\nexport const isFirefox = () => navigator.userAgent.toLowerCase().indexOf(\"firefox\") > -1;\r\n\r\nlet __pricingProfiles = null;\r\nlet __pricingProfilesHit = false;\r\nconst pricingProfiles = () => {\r\n if (!__pricingProfilesHit) {\r\n __pricingProfilesHit = true;\r\n __pricingProfiles = QuotePricing(store.getState().fabricatorState.pricingPreset);\r\n }\r\n\r\n console.log(\"__pricingProfiles\", __pricingProfiles);\r\n\r\n return __pricingProfiles;\r\n};\r\n\r\nexport const FEATURE_INSTALLATION = 1;\r\nexport const FEATURE_REGULAR = 2;\r\nexport const FEATURE_STONE = 3;\r\n\r\nexport const getFeatureType = dbFeature => {\r\n if (dbFeature && dbFeature.isInstallation)\r\n return FEATURE_INSTALLATION;\r\n if (dbFeature && (!dbFeature.stonePricingId || dbFeature.stonePricingId.length === 0 || dbFeature.stonePricingId[0] === -1))\r\n return FEATURE_REGULAR;\r\n return FEATURE_STONE;\r\n};\r\n\r\n/**\r\n *\r\n * @param cartItem {cartItemInterface} this is used to calculate first all same name countertops, than display it's total price / quantity, exclude current editing\r\n * @return {cartItemInterface}\r\n */\r\nexport const detectComplexLaborCartItem = (cartItem) => {\r\n return cartItem.cartFeature && (cartItem.partId === \"installation\")\r\n && cartItem.cartFeature.dbFeature.autoAddToCart && cartItem.cartFeature.dbFeature.complexLogic\r\n}\r\n\r\nconst hardcodedFloformV5Features = [\"Costco Shop Card\", \"Costco Citi Visa Cardholder\", \"Costco Executive Members\"];\r\n\r\n/**\r\n *\r\n * @param forQuote {any} get total prices only for specific quote (number or null)\r\n * @param calculateDiscount {boolean}\r\n * @param cartItemsToCount {array}\r\n * @param withNotInStock {boolean}\r\n * @return {object}\r\n */\r\nexport const getTotalPrice = (forQuote = null, calculateDiscount = true, cartItemsToCount = null, withNotInStock = false) => {\r\n const state = store.getState();\r\n let cartItems = cartItemsToCount || state.cartState.cartItems;\r\n if (IS_LIXIL_UI && !cartItemsToCount) {\r\n cartItems = cartItems.filter(cartItem => {\r\n if ((IS_PRODUCT_JOURNEY && cartItem.addedBy !== CART_ITEM_ADDED_BY.user) || cartItem.isRemoved) {\r\n return false\r\n }\r\n if (withNotInStock) {\r\n return !getBundledFeatures(cartItem.cartFeature).length\r\n }\r\n return isInStock(cartItem.cartFeature) && !getBundledFeatures(cartItem.cartFeature).length\r\n });\r\n }\r\n const instList = state.instState.instList;\r\n const {fabricatorTaxes, settings} = state.fabricatorState;\r\n const {sureTax} = state.cartState;\r\n\r\n let materialPrice = 0;\r\n let materialTaxes = 0;\r\n let totalDeliveryCost = 0;\r\n let priceTaxes = Array.isArray(fabricatorTaxes) ? fabricatorTaxes.map(fabTax => {\r\n return {...fabTax, materialTax: 0, laborTax: 0}\r\n }) : [];\r\n let installationPrice = getInstallationsTotalCost(instList);\r\n\r\n if (Number.isInteger(forQuote)) { // get total prices only for specific quote\r\n cartItems = cartItems.filter(cartItem => cartItem.currentQuote === forQuote)\r\n }\r\n\r\n let multipliedCostUsed = false;\r\n\r\n cartItems\r\n .sort((a, b) => (a.partId === \"installation\") - (b.partId === \"installation\"))\r\n .forEach(cartItem => {\r\n\r\n if ((getDifferentCurrencyCartItems(settings, [cartItem]).length && !cartItemsToCount)\r\n || cartItem.isRemoved\r\n || (multipliedCostUsed && detectComplexLaborCartItem(cartItem))\r\n || (cartItem.cartFeature && hardcodedFloformV5Features.some(name => cartItem.cartFeature.dbFeature.sharedFeatureName === name))\r\n ) {\r\n // if (cartItem.cartFeature.dbFeature.sharedFeatureName !== \"Costco Shop Card\") {\r\n return false\r\n }\r\n\r\n const dbFeature = cartItem.cartFeature.dbFeature;\r\n let featurePrice = 0;\r\n\r\n if (parseFloat(cartItem.displayFakePrice) === cartItem.displayFakePrice) {\r\n featurePrice = cartItem.displayFakePrice\r\n } else {\r\n const featureType = getFeatureType(dbFeature);\r\n switch (featureType) {\r\n case FEATURE_INSTALLATION:\r\n // installation dbFeature\r\n //installationPrice += calculateFeatureCost(cartItem.cartFeature, cartItem.quantity);\r\n // never gets here\r\n break;\r\n case FEATURE_REGULAR:\r\n // regular dbFeature, part of the total cost\r\n featurePrice = calculateFeatureCost(cartItem.cartFeature, cartItem.quantity, cartItems, cartItem.fromQtCategory, cartItem.currentQuote);\r\n break;\r\n case FEATURE_STONE: {\r\n const stonePricing = state.serverState.stonePricing;\r\n const stoneSupplier = state.fabricatorState.stoneSupplier;\r\n // dbFeature stone related\r\n const stoneCost = calculateStoneCost(\r\n dbFeature,\r\n cartItem.quantity,\r\n stonePricing,\r\n stoneSupplier,\r\n cartItem.partId === SQFT_FEATURES.slabs && state.sqftSlabState.isSlabPricingEnabled, //cartItem.shouldUseSlabPricing, // calculate shouldUseSlabPricing globally and not per cItem\r\n settings,\r\n state.cartState,\r\n );\r\n const multipliedCost = multiplySlabCostForFeature(cartItem.cartFeature, cartItem.quantity, state, cartItem);\r\n if (multipliedCost && cartItem.partId !== \"slabs\") {\r\n featurePrice = multipliedCost;\r\n multipliedCostUsed = true;\r\n } else {\r\n featurePrice = stoneCost || calculateFeatureCost(cartItem.cartFeature, cartItem.quantity, cartItems, cartItem.fromQtCategory, cartItem.currentQuote);\r\n }\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n const productPriceAfterDiscount = calculateDiscount\r\n ? getQuotePriceWithDiscounts({materialPrice:featurePrice}, [], true)\r\n : featurePrice\r\n materialPrice = materialPrice + productPriceAfterDiscount;\r\n if (fabricatorTaxes && !dbFeature.notTaxable && !settings.sureTax) {\r\n if (Array.isArray(fabricatorTaxes)) {\r\n priceTaxes = priceTaxes.map(tax => {\r\n tax.materialTax += productPriceAfterDiscount * tax.materialRate / 100;\r\n return tax\r\n })\r\n } else {\r\n materialTaxes += productPriceAfterDiscount * fabricatorTaxes.materialRate / 100;\r\n }\r\n }\r\n if (settings.useShipping) {\r\n totalDeliveryCost += getCartItemShippingCost(cartItem);\r\n }\r\n });\r\n\r\n if (isCafeCountetops) {\r\n totalDeliveryCost += getCafeCountertopsDeliveryCost(totalDeliveryCost, cartItems, state);\r\n }\r\n\r\n if ((typeof sureTax === \"number\") && sureTax > 0) {\r\n materialTaxes = sureTax;\r\n }\r\n\r\n const result = {\r\n materialPrice: Math.round(materialPrice * 100) / 100,\r\n installationPrice: Math.round(installationPrice * 100) / 100,\r\n materialTaxes: Math.round(materialTaxes * 100) / 100,\r\n totalDeliveryCost: Math.round(totalDeliveryCost * 100) / 100,\r\n priceTaxes,\r\n installationTaxes: 0,\r\n multipliedCostUsed,\r\n };\r\n\r\n if (fabricatorTaxes) {\r\n result.installationTaxes = Array.isArray(fabricatorTaxes)\r\n ? fabricatorTaxes\r\n .filter(fabTax => fabTax.isEnabled)\r\n .reduce((acc, tax) => acc + (result.installationPrice * tax.laborRate / 100.0), 0)\r\n : result.installationPrice * fabricatorTaxes.laborRate / 100.0;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nexport function getQuotePriceWithDiscounts(totalPriceObject, ignoreDiscounts = [], splitStaticPrice = false) {\r\n const state = store.getState();\r\n let totalPrice = totalPriceObject.materialPrice;\r\n if (state.fabricatorState.settings.priceWorksheetEnabled) {\r\n const discountSections = getFilteredSections(state.priceWorksheetState.discountSections);\r\n discountSections.forEach(discountSection => {\r\n const allDiscounts = sortByOrder(getDiscountsForSection(discountSection, state.priceWorksheetState.customAddedDiscounts));\r\n allDiscounts.forEach(discount => {\r\n if (shouldCalculateDiscount(discount)\r\n && (!ignoreDiscounts.length || ignoreDiscounts.every(ignoreDiscount => ignoreDiscount.id !== discount.id))) {\r\n totalPrice = (discount.type === DISCOUNT_TYPES.price)\r\n ? totalPrice - (splitStaticPrice ? discount.amount / state.cartState.cartItems.length : discount.amount)\r\n : totalPrice * (1 - discount.amount/100) // total - percent\r\n }\r\n })\r\n })\r\n }\r\n return totalPrice;\r\n}\r\n\r\nexport function getQuotePriceWithTaxes(totalPriceObject) {\r\n const taxes = totalPriceObject.priceTaxes.length\r\n ? totalPriceObject.priceTaxes.reduce((acc, tax) => acc + tax.materialTax, 0)\r\n : totalPriceObject.materialTaxes;\r\n\r\n const totalPrice = totalPriceObject.totalDeliveryCost + totalPriceObject.materialPrice + taxes + totalPriceObject.installationPrice + totalPriceObject.installationTaxes;\r\n return +toFixedPrice(totalPrice);\r\n}\r\n\r\nexport function getDeliveryCost(deliveryList) {\r\n if (!deliveryList) {\r\n deliveryList = store.getState().cartState.deliveryList || [];\r\n }\r\n let deliveryCostArray = [];\r\n deliveryList.forEach(delivery => {\r\n // const activeDelivery = deliveryList.find((del, deliveryIndex) => deliveryIndex === delivery.activeDeliveryIndex);\r\n // if (activeDelivery && !deliveryCostArray.includes(activeDelivery.price)) {\r\n // deliveryCostArray.push(activeDelivery.price)\r\n // }\r\n if (delivery.cartItems.length) {\r\n deliveryCostArray.push(delivery.price)\r\n }\r\n });\r\n return deliveryCostArray.reduce((total, cost) => total + cost, 0);\r\n}\r\n\r\n/**\r\n *\r\n * @param feature {object} (object which has dbFeature property)\r\n * @param quantity {int}\r\n * @param state {object}\r\n * @param cartItemToSkip {cartItemInterface} this is used to calculate first all same name countertops, than display it's total price / quantity, exclude current editing\r\n * @return {number}\r\n */\r\nconst multiplySlabCostForFeature = (feature, quantity, state, cartItemToSkip) => {\r\n const stonePricing = state.serverState.stonePricing;\r\n const stoneSupplier = state.fabricatorState.stoneSupplier;\r\n const allCartItems = state.cartState.cartItems;\r\n const isSlabPricingEnabled = state.sqftSlabState.isSlabPricingEnabled;\r\n\r\n let allSameFeaturesQuantity = quantity;\r\n const checkCartItems = allCartItems.filter(cItem => {\r\n return cItem.cartFeature && (cItem.cartFeature.dbFeature.sharedFeatureName === feature.dbFeature.sharedFeatureName)\r\n });\r\n checkCartItems.forEach(cItem => {\r\n if (cartItemToSkip && (cartItemToSkip.id === cItem.id)) { // current editing on feature page\r\n return\r\n }\r\n // Skip adding quantity if it's a slab and slab pricing is disabled\r\n if (!(cItem.partId === SQFT_FEATURES.slabs && !isSlabPricingEnabled)) {\r\n allSameFeaturesQuantity += cItem.quantity;\r\n }\r\n });\r\n if ((checkCartItems.length > 1 || (checkCartItems[0] && checkCartItems[0].partId !== feature.partId))\r\n && allSameFeaturesQuantity && (allSameFeaturesQuantity !== quantity)) {\r\n let allStoneCost = calculateStoneCost(\r\n feature.dbFeature,\r\n allSameFeaturesQuantity,\r\n stonePricing,\r\n stoneSupplier,\r\n false,\r\n state.fabricatorState.settings,\r\n state.cartState,\r\n );\r\n const laborExist = allCartItems.find(cItem => detectComplexLaborCartItem(cItem)) // here we check existing auto add to cart feature (which is depending on countertop quantity)\r\n if (laborExist) {\r\n allStoneCost += getFeatureCost(laborExist.cartFeature, laborExist.quantity, laborExist.fromQtCategory);\r\n }\r\n // console.log(\"quantity\", quantity);\r\n // console.log(\"allSameFeaturesQuantity\", allSameFeaturesQuantity);\r\n // console.log(\"allStoneCost\", allStoneCost);\r\n return Math.round((quantity * (allStoneCost / allSameFeaturesQuantity)) * 100) / 100\r\n }\r\n return 0\r\n}\r\n\r\n/**\r\n *\r\n * @param feature {object} (object which has dbFeature property)\r\n * @param quantity {int}\r\n * @param fromQtCategory {string} (cart feature should be calculated from the category it was added)\r\n * @param withTotalSlabCost {boolean} this is used to calculate first all same name countertops, than display it's total price / quantity\r\n * @param cartItemToSkip {cartItemInterface} this is used to calculate first all same name countertops, than display it's total price / quantity, exclude current editing\r\n * @param useSlabSqftPricing {boolean} this is used to calculate slab pricing assigned from algorithms, slabSqftValue from backed\r\n * @param forQuoteIndex {number} for complex logic\r\n * @return {number}\r\n */\r\nexport const getFeatureCost = (feature,\r\n quantity,\r\n fromQtCategory,\r\n withTotalSlabCost = false,\r\n cartItemToSkip = null,\r\n useSlabSqftPricing = false,\r\n forQuoteIndex = null,\r\n) => {\r\n switch (getFeatureType(feature.dbFeature)) {\r\n case FEATURE_INSTALLATION: // installation dbFeature\r\n case FEATURE_REGULAR:\r\n // regular feature, part of the total cost\r\n return calculateFeatureCost(feature, quantity, null, fromQtCategory, forQuoteIndex);\r\n case FEATURE_STONE: {\r\n // is a stone, calculate using a different algorithm.\r\n const state = store.getState();\r\n const stonePricing = state.serverState.stonePricing;\r\n const stoneSupplier = state.fabricatorState.stoneSupplier;\r\n // feature stone related\r\n // console.log(\"stonePricing\", stonePricing);\r\n // console.log(\"stoneSupplier\", stoneSupplier);\r\n // console.log(\"feature.dbFeature.stonePricingId\", feature.dbFeature.stonePricingId);\r\n const stoneCost = calculateStoneCost(\r\n feature.dbFeature,\r\n quantity,\r\n stonePricing,\r\n stoneSupplier,\r\n useSlabSqftPricing,\r\n state.fabricatorState.settings,\r\n state.cartState,\r\n );\r\n if (stoneCost && withTotalSlabCost && cartItemToSkip.partId !== SQFT_FEATURES.slabs) {\r\n // console.log(\"stoneCost\", stoneCost);\r\n const multipliedCost = multiplySlabCostForFeature(feature, quantity, state, cartItemToSkip);\r\n if (multipliedCost) {\r\n return multipliedCost\r\n }\r\n }\r\n return stoneCost || calculateFeatureCost(feature, quantity, null, fromQtCategory, forQuoteIndex);\r\n }\r\n }\r\n};\r\n\r\nexport const toFixedPrice = (price, withCommas = false) => {\r\n try {\r\n if (Math.round(price) !== price || IS_LIXIL_UI) {\r\n price = price.toFixed(2);\r\n }\r\n } catch(ex) {\r\n console.log(\"Helpers toFixedPrice failed for \", price, ex);\r\n }\r\n return withCommas ? numberWithCommas(price) : price\r\n};\r\n\r\n/**\r\n *\r\n * @param feature {object} (object which has dbFeature property)\r\n * @param quantity {int}\r\n * @param fromQtCategory {string} (cart feature should be calculated from the category it was added)\r\n * @param withTotalSlabCost {boolean} this is used to calculate first all same name countertops, than display it's total price / quantity\r\n * @param cartItemToSkip {featureInterface} this is used to calculate first all same name countertops, than display it's total price / quantity, exclude current editing\r\n * @param useSlabSqftPricing {boolean} this is used to calculate slab pricing assigned from algorithms, slabSqftValue from backed\r\n * @param forQuoteIndex {number} for the complex logic\r\n * @return {string}{number}\r\n */\r\nexport const toFixedFeatureCost = (feature,\r\n quantity,\r\n fromQtCategory = \"\",\r\n withTotalSlabCost = false,\r\n cartItemToSkip = null,\r\n useSlabSqftPricing = false,\r\n forQuoteIndex = null,\r\n) => {\r\n let price = getFeatureCost(feature, quantity, fromQtCategory, withTotalSlabCost, cartItemToSkip, useSlabSqftPricing, forQuoteIndex);\r\n return toFixedPrice(price);\r\n};\r\n\r\n/**\r\n *\r\n * @return {number}\r\n */\r\nexport const getSingleSlabArea = () => {\r\n const storeState = store.getState();\r\n const slabImageHeight = storeState.sqftSlabState.slabImageHeight;\r\n const slabImageWidth = storeState.sqftSlabState.slabImageWidth;\r\n const slabArea = slabImageHeight * slabImageWidth;\r\n\r\n return sqftConfig.measureUnit === \"Imperial\"\r\n ? Math.ceil10(sqInchesToSqFoot(slabArea), -2)\r\n : mm2ToM2(slabArea);\r\n};\r\n\r\n/**\r\n *\r\n * @param feature {featureInterface} (object which has dbFeature property)\r\n * @param quantity {int}\r\n * @param cartItems {array}\r\n * @param fromQtCategory {string} (cart feature should be calculated from the category it was added)\r\n * @param quoteIndex {number}\r\n * @return {number}\r\n */\r\nfunction calculateFeatureCost(feature, quantity, cartItems, fromQtCategory, quoteIndex) {\r\n // is a stone, calculate using a different algorithm.\r\n const storeState = store.getState();\r\n const stonePricing = storeState.serverState.stonePricing;\r\n const stoneSupplier = storeState.fabricatorState.stoneSupplier;\r\n const activeQuoteIndex = Number.isInteger(quoteIndex) ? quoteIndex : storeState.quotesState.activeQuoteIndex;\r\n const dbFeature = feature.dbFeature;\r\n\r\n let featureCost = checkIfInCatProperty(feature, \"inCatPrice\", getFeaturePriceProperty(feature), fromQtCategory);\r\n let featureTotalPrice = 0;\r\n\r\n let material = 0;\r\n let materialPrice = 0;\r\n let backsplashMaterial = 0;\r\n\r\n let quoteMaterial = 0;\r\n let quoteBacksplashMaterial = 0;\r\n\r\n let materials = [];\r\n for(let index in storeState.cartState.cartItems) {\r\n let cartItem = storeState.cartState.cartItems[index];\r\n if(cartItem.cartFeature && cartItem.cartFeature.isStoneFeature) {\r\n switch (cartItem.partId) {\r\n case \"vanity_countertop\":\r\n case \"center_island_countertop\":\r\n case \"countertop\":\r\n case \"front_wall\": {\r\n if (cartItem.partId === \"front_wall\") { // added front_wall to the Fireplace material\r\n const visType = cartItem.fromVisualizerType || document.kvConfig.visualizerType;\r\n if (visType !== \"Fireplace\") {\r\n break;\r\n }\r\n }\r\n material += cartItem.quantity;\r\n // dbFeature stone related\r\n const currentPrice = calculateStoneCost(\r\n cartItem.cartFeature.dbFeature,\r\n cartItem.quantity,\r\n stonePricing,\r\n stoneSupplier,\r\n cartItem.partId === SQFT_FEATURES.slabs && storeState.sqftSlabState.isSlabPricingEnabled, //cartItem.shouldUseSlabPricing,// calculate shouldUseSlabPricing globally and not per cItem\r\n storeState.fabricatorState.settings,\r\n storeState.cartState,\r\n );\r\n materialPrice += currentPrice;\r\n if (cartItem.currentQuote === activeQuoteIndex) {\r\n quoteMaterial += cartItem.quantity;\r\n }\r\n materials.push(cartItem.cartFeature.dbFeature);\r\n break;\r\n }\r\n case \"vanity_backsplash\":\r\n case \"backsplash\": {\r\n backsplashMaterial += cartItem.quantity;\r\n if (cartItem.currentQuote === activeQuoteIndex) {\r\n quoteBacksplashMaterial += cartItem.quantity;\r\n }\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n \r\n const measureUnit = storeState.sqftState ? storeState.sqftState.measureUnit : null;\r\n if (validateFeaturePrice(dbFeature, quantity, measureUnit)) {\r\n let complexLogic = checkIfInCatProperty(feature, \"complexLogic\", dbFeature.complexLogic, fromQtCategory);\r\n if (dbFeature.comparisonType === 'gte+' && dbFeature.comparisonFor !== 'complex') {\r\n const baseQuantity = feature.baseQuantity - 1;\r\n let fQuantity = quantity;\r\n if (dbFeature.comparisonFor === 'material') {\r\n fQuantity = 0; // no material quantity\r\n }\r\n const plus = dbFeature.maxQuantity;\r\n let cost = baseQuantity * featureCost;\r\n for (let i = baseQuantity + 1; i <= fQuantity; i++) {\r\n cost += plus;\r\n }\r\n\r\n featureTotalPrice = cost;\r\n } else if (hardcodedFloformV5Features.some(name => dbFeature.sharedFeatureName === name)) {\r\n if (dbFeature.sharedFeatureName === \"Costco Shop Card\") {\r\n featureTotalPrice = getHardCodedFloFormShopCartCost(storeState.cartState.cartItems);\r\n } else {\r\n const totalPrice = getTotalPrice();\r\n featureTotalPrice = totalPrice.materialPrice * 0.02;\r\n }\r\n } else if (dbFeature.comparisonFor === 'complex' && complexLogic) {\r\n try {\r\n\r\n const $m = material; // amount of square foot of material the feature is using, probably have to be calculated based on the meta data size of the feature\r\n const $b = backsplashMaterial; // we added a new backsplash property, if we need to calculate both, we should have ($m + $b) in the complex logic\r\n const getSqft = (stonePricingId) => {\r\n const stoneSupplierStone = stonePricing[stonePricingId]; // stone supplier stone\r\n if (!stoneSupplierStone) {\r\n return -1\r\n }\r\n const pricingProfileId = stoneSupplierStone.pricingPreset_id;\r\n const quotePricing = __quotePricing || (__quotePricing = pricingProfiles());\r\n const profile = quotePricing.pricingProfiles.find((pp) => (pp.Id || pp.id) === pricingProfileId);\r\n if(profile) {\r\n var ppdList = storeState.fabricatorState.settings.useFabricatorCostPrices\r\n ? profile.pricingProfileCostData\r\n : storeState.fabricatorState.settings.showSalePrices\r\n ? profile.pricingProfileDiscountData\r\n : profile.pricingProfileData;\r\n if (Array.isArray(ppdList) && ppdList.length) {\r\n for(var n = ppdList.length - 1; n >= 0; n--) {\r\n let ppd = ppdList[n];\r\n switch(ppd.type)\r\n {\r\n case \"pricing-presets/set-slab\":\r\n if(ppd.slabSqftValue > 0) {\r\n return ppd.slabSqftValue;\r\n }\r\n else {\r\n return parseFloat(ppd.value) / parseFloat(ppd.end);\r\n }\r\n default:\r\n return -1;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var materialSqft = -1;\r\n for (const m in materials) {\r\n if (Array.isArray(materials[m].stonePricingId)\r\n && materials[m].stonePricingId.length\r\n && materials[m].stonePricingId[0]) {\r\n const msqft = getSqft(materials[m].stonePricingId[0]);\r\n if (msqft > materialSqft) {\r\n materialSqft = msqft;\r\n }\r\n }\r\n }\r\n\r\n const $mc = materialSqft > -1 ? materialSqft : materialPrice / material; // material cost broken down to square foot\r\n const $p = 1; // the per-quantity value of the selected material of the feature\r\n\r\n const $f = quantity; // the feature quantity of the selected feature\r\n const $c = featureCost; // the feature cost of the selected features\r\n const $fa = storeState.cartState.cartItems ? storeState.cartState.cartItems.map(ci => ({\r\n id: ci.cartFeature.dbFeature.id,\r\n quantity: ci.quantity,\r\n name: ci.cartFeature.dbFeature.customDisplayName || ci.cartFeature.dbFeature.displayName,\r\n sharedFeatureName: ci.cartFeature.dbFeature.sharedFeatureName,\r\n groupName: ci.cartFeature.dbFeature.groupName,\r\n wizardGroupId: ci.fromWizardGroupId,\r\n currentQuote: ci.currentQuote,\r\n partId: ci.partId,\r\n })) : []; // an array of key value pairs with the keys being feature id and value being quantity\r\n\r\n if (storeState.wizardState.wizardActiveItem) { // we need to check wizard current selected values to display prices\r\n Object.keys(storeState.wizardState.wizardSelectedValues).forEach(stepIndex => {\r\n const selectedValue = storeState.wizardState.wizardSelectedValues[stepIndex];\r\n if (selectedValue.selectedFeature && selectedValue.quantity) {\r\n $fa.push({\r\n id: selectedValue.selectedFeature.dbFeature.id,\r\n quantity: selectedValue.quantity,\r\n name: selectedValue.selectedFeature.dbFeature.customDisplayName || selectedValue.selectedFeature.dbFeature.displayName,\r\n groupName: selectedValue.selectedFeature.dbFeature.groupName\r\n })\r\n }\r\n })\r\n }\r\n const $room = {\r\n $i: activeQuoteIndex,\r\n $m: quoteMaterial,\r\n $b: quoteBacksplashMaterial,\r\n }\r\n const $other = { // to prevent creating new parameters, all new properties should go here\r\n $useCostPrices: storeState.fabricatorState.settings.useFabricatorCostPrices,\r\n $useDiscountPrices: storeState.fabricatorState.settings.showSalePrices,\r\n $sharedFeatureName: dbFeature.sharedFeatureName,\r\n }\r\n // const $fs = layout.dataObject.features; // its an array of all the fabricator's features\r\n const $fs = []; // its an array of all the fabricator's features\r\n const logic = new Function('$m', '$mc', '$f', '$c', '$fa', '$fs', '$p', '$b', '$room', '$other', complexLogic);\r\n featureTotalPrice = logic($m, $mc, $f, $c, $fa, $fs, $p, $b, $room, $other);\r\n // console.log(888, 'Complex', feature.complexLogic, featureCost, quantity);\r\n } catch (e) {\r\n console.log('Feature complex logic failed.', e);\r\n }\r\n } else if (dbFeature.comparisonType === \"min\" && dbFeature.comparisonFor !== \"complex\") {\r\n if (quantity < dbFeature.baseQuantity) {\r\n featureTotalPrice = featureCost * dbFeature.baseQuantity;\r\n } else {\r\n featureTotalPrice = quantity * featureCost;\r\n }\r\n } else {\r\n featureTotalPrice = featureCost * quantity;\r\n }\r\n }\r\n\r\n if (isNaN(featureTotalPrice)) {\r\n return 0\r\n }\r\n if (storeState.cartState.markUpLogic) {\r\n return updatePriceWithMarkUp(featureTotalPrice, storeState.cartState.markUpLogic, storeState.fabricatorState.settings);\r\n }\r\n return featureTotalPrice;\r\n}\r\n\r\nlet __stoneSupplierStones = null;\r\nlet __quotePricing = null;\r\n\r\nexport function calculateStoneCost(feature, quantity, stonePricing, stoneSupplier, useSlabSqftPricing, fabricatorSettings, cartState) {\r\n if (!feature || (feature.stonePricingId && feature.stonePricingId.length === 1) && feature.stonePricingId[0] === -1) {\r\n // stone was not found\r\n if (feature) {\r\n const price = getFeaturePriceProperty({dbFeature: feature});\r\n if (price > 0) {\r\n return price\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n // only one fabricator here\r\n\r\n let minPrice = -1;\r\n const quotePricing = __quotePricing || (__quotePricing = pricingProfiles());\r\n const stoneSupplierStones = __stoneSupplierStones\r\n || (feature.stonePricingId && feature.stonePricingId.length > 0 ? __stoneSupplierStones = feature.stonePricingId.map(_ => stonePricing[_]) : null);\r\n\r\n if (feature.stonePricingId && feature.stonePricingId.length > 0 && feature.stonePricingId[0]) {\r\n feature.stonePricingId.forEach(id => {\r\n let materialPrice = -1;\r\n const stoneSupplierStone = stonePricing[id]; // stone supplier stone\r\n if (quotePricing && quotePricing.hasPricingProfileAssigned(stoneSupplierStone, fabricatorSettings)) {\r\n const fabPrice = quotePricing.calculatePrice(\r\n stoneSupplierStone.pricingPreset_id,\r\n quantity,\r\n null,\r\n useSlabSqftPricing,\r\n getSingleSlabArea(),\r\n feature,\r\n fabricatorSettings\r\n );\r\n if (materialPrice === -1 || fabPrice < materialPrice) {\r\n materialPrice = fabPrice;\r\n }\r\n if (minPrice === -1 || minPrice > materialPrice) {\r\n minPrice = materialPrice;\r\n }\r\n } else if (stoneSupplierStone) {\r\n let price = stoneSupplierStone.price;\r\n if (stoneSupplierStone.pricePlus > 0) {\r\n price = stoneSupplierStone.pricePlus;\r\n }\r\n let material = quantity;\r\n if (stoneSupplierStone.perQuantity > 1) {\r\n material = Math.ceil(material / stoneSupplierStone.perQuantity);\r\n }\r\n let materialPrice = price * parseFloat(material);\r\n\r\n let baseQuantity;\r\n if (stoneSupplierStone.comparisonType === \"gte+\") {\r\n baseQuantity = parseInt(stoneSupplierStone.baseQuantity) - 1;\r\n if (material > baseQuantity) {\r\n let perUnit = parseFloat(stoneSupplierStone.maxQuantity);\r\n const margin = stoneSupplier.margin;\r\n perUnit = calcPriceWithMargin(perUnit, margin);\r\n materialPrice = baseQuantity * price;\r\n forEach(stoneSupplierStones, function (stoneSupplierStoneInner) {\r\n if (stoneSupplierStoneInner.comparisonType === \"between\" &&\r\n material >= stoneSupplierStoneInner.baseQuantity) {\r\n materialPrice = stoneSupplierStoneInner.price;\r\n for (let n = stoneSupplierStoneInner.maxQuantity + 1; n <= baseQuantity; n++) {\r\n materialPrice += price;\r\n }\r\n }\r\n });\r\n for (let i = baseQuantity + 1; i <= material; i++) {\r\n materialPrice += perUnit;\r\n }\r\n }\r\n } else if (stoneSupplierStone.comparisonType === \"min\") {\r\n if (parseFloat(material) < stoneSupplierStone.baseQuantity) {\r\n materialPrice = price * parseFloat(stoneSupplierStone.baseQuantity);\r\n }\r\n } else if (stoneSupplierStone.comparisonType === \"lte\") {\r\n baseQuantity = parseInt(stoneSupplierStone.baseQuantity);\r\n if (material <= baseQuantity) {\r\n let bFoundOther = false;\r\n forEach(stoneSupplierStones, function (stoneSupplierStoneInner) {\r\n if (stoneSupplierStoneInner.comparisonType === \"lte\" &&\r\n material <= stoneSupplierStoneInner.baseQuantity\r\n && stoneSupplierStoneInner.baseQuantity < baseQuantity) {\r\n bFoundOther = true;\r\n }\r\n });\r\n if (bFoundOther) {\r\n return;\r\n }\r\n }\r\n } else if (stoneSupplierStone.comparisonType === \"between\") {\r\n materialPrice = stoneSupplierStone.price;\r\n }\r\n\r\n if (validStoneSupplierStonePrice(stoneSupplierStone, material)) {\r\n if (minPrice === -1 || minPrice > materialPrice) {\r\n minPrice = materialPrice;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (cartState.markUpLogic) {\r\n minPrice = updatePriceWithMarkUp(minPrice, cartState.markUpLogic, fabricatorSettings);\r\n }\r\n\r\n return Math.trunc(minPrice * 100) / 100;\r\n}\r\n\r\nfunction calcPriceWithMargin(price, margin) {\r\n const total = parseFloat(price);\r\n return (total + (margin * total));\r\n}\r\n\r\n// function calcPriceWithTax(price, tax) {\r\n// const total = parseFloat(price);\r\n// return (total + (tax / 100.0 * total));\r\n// }\r\n\r\nfunction validStoneSupplierStonePrice(stoneSupplierStone, quantity) {\r\n let ret = false;\r\n let material = quantity;\r\n if (stoneSupplierStone.perQuantity > 1) {\r\n material = Math.ceil(material / stoneSupplierStone.perQuantity);\r\n }\r\n switch (stoneSupplierStone.comparisonType) {\r\n case \"lte\":\r\n if (material <= stoneSupplierStone.baseQuantity) {\r\n ret = true;\r\n }\r\n break;\r\n case \"between\":\r\n if (material >= stoneSupplierStone.baseQuantity\r\n && material <= stoneSupplierStone.maxQuantity) {\r\n ret = true;\r\n }\r\n break;\r\n case \"gte\":\r\n case \"gte+\":\r\n if (material >= stoneSupplierStone.baseQuantity) {\r\n ret = true;\r\n }\r\n break;\r\n default:\r\n ret = true;\r\n }\r\n return ret;\r\n}\r\n\r\nfunction validateFeaturePrice(feature, quantity, measureUnit) {\r\n let ret = false;\r\n switch (feature.comparisonType) {\r\n case \"lte\":\r\n if (quantity <= feature.baseQuantity) {\r\n ret = true;\r\n }\r\n break;\r\n case \"between\":\r\n if (quantity >= feature.baseQuantity && quantity <= feature.maxQuantity) {\r\n ret = true;\r\n }\r\n break;\r\n case \"gte\":\r\n case \"gte+\":\r\n if ((quantity >= feature.baseQuantity) || ((measureUnit === \"Metric\") && (quantity > 0) && (feature.baseQuantity === 1))) {\r\n ret = true;\r\n }\r\n break;\r\n default:\r\n ret = true;\r\n }\r\n\r\n return ret;\r\n}\r\n\r\nexport function parseQuery(queryString = null) {\r\n queryString = queryString || window.location.search;\r\n const query = {};\r\n const pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');\r\n for (let i = 0; i < pairs.length; i++) {\r\n let pair = pairs[i].split('=');\r\n query[decodeURIComponent(pair[0]).toLowerCase()] = decodeURIComponent(pair[1] || '');\r\n }\r\n return query;\r\n}\r\nexport function metaDataToCamelCase(metaData) {\r\n if (!metaData) {\r\n metaData = {}; // it could be null, so default parameter is not working\r\n }\r\n Object.keys(metaData).forEach(key => { // make all metadata keys CamelCased (dashboard saving issue)\r\n if (key[0] !== key[0].toUpperCase()) {\r\n const value = metaData[key];\r\n const camelCased = key.charAt(0).toUpperCase() + key.slice(1);\r\n metaData[camelCased] = value;\r\n delete metaData[key]; // we don't need lowerCased key anymore\r\n }\r\n });\r\n return metaData;\r\n}\r\n\r\nexport const capitalizeFirstLetters = (str) => {\r\n if (!str) {\r\n return \"\"\r\n }\r\n return str.split(\" \").map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(\" \")\r\n}\r\n\r\n// export const getObjectWithLowerCasedKeys = (obj) => {\r\n// let\r\n// key,\r\n// keys = Object.keys(obj),\r\n// n = keys.length,\r\n// newObj={};\r\n// while (n--) {\r\n// key = keys[n];\r\n// newObj[key.toLowerCase()] = obj[key];\r\n// }\r\n// return newObj\r\n// };\r\n\r\nexport const getCurrencySign = (currencyName, fabricatorSettings) => {\r\n switch (currencyName) {\r\n case \"USD\":\r\n default:\r\n return fabricatorSettings.useDifferentCurrencies ? \"USD\" : \"$\";\r\n case \"SPN\":\r\n case \"EUR\":\r\n return \"€\";\r\n case \"GBP\":\r\n return \"£\";\r\n case \"PAB\":\r\n return \"B/.\";\r\n case \"PLN\":\r\n return \"zł\";\r\n case \"ARS\":\r\n return \"$\";\r\n }\r\n};\r\n\r\nexport const getCurrencyPosition = (currencyName) => {\r\n switch (currencyName) {\r\n case \"USD\":\r\n case \"SPN\":\r\n case \"EUR\":\r\n case \"GBP\":\r\n case \"PAB\":\r\n case \"ARS\":\r\n default:\r\n return \"left\";\r\n case \"PLN\":\r\n return \"right\";\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param fabricatorSettings {object} fabricatorSettings\r\n * @param price {string|number}\r\n * @param feature {featureInterface}\r\n * @param withSpace {boolean}\r\n * @param alwaysRound {boolean} // returns $10 -> $10.00\r\n * @return {string}\r\n */\r\nexport const getPriceWithCurrency = (fabricatorSettings, price, feature = null, withSpace = false, alwaysRound = false) => {\r\n if (fabricatorSettings.currencyPosition === \"right\") {\r\n return price + fabricatorSettings.currencySign\r\n }\r\n let currencySign = fabricatorSettings.currencySign;\r\n if (fabricatorSettings.useDifferentCurrencies && feature && feature.getFeatureCurrency) {\r\n const separateCurrency = feature.getFeatureCurrency();\r\n if (separateCurrency) {\r\n currencySign = getCurrencySign(separateCurrency, fabricatorSettings);\r\n }\r\n }\r\n if (fabricatorSettings.useDifferentCurrencies) {\r\n if (currencySign === \"USD\") {\r\n withSpace = true;\r\n }\r\n price = numberWithCommas(price);\r\n }\r\n if (currencySign === \"$\") {\r\n const amount = typeof price === \"string\" ? +(price.replace(\",\", \"\")) : price;\r\n const isExact = !alwaysRound && (Number.isInteger(amount) || amount % 1 === 0);\r\n // Create the formatter\r\n const formatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: isExact ? 0 : 2,\r\n maximumFractionDigits: isExact ? 0 : 2,\r\n });\r\n return formatter.format(amount);\r\n }\r\n return withSpace ? currencySign + \" \" + price : currencySign + price\r\n};\r\n\r\nexport const getFeatureIsLocked = (feature, ignoreLocked = false) => {\r\n if (!feature) {\r\n return false\r\n }\r\n const leadCaptureProperty = isVisualizerRoute() || IS_LIXIL_UI ? \"leadCapture\" : \"leadCaptureOnQuote\";\r\n const {fabricatorState, userState, filterState} = store.getState();\r\n\r\n const fabricatorSettings = fabricatorState.settings;\r\n const {isBackend, jobId, canSaveQuote, visualizerManagement} = document.kvConfig;\r\n const isPhoneNumberValidated = userState.isPhoneNumberValidated;\r\n\r\n if (fabricatorSettings.leadCaptureShoppingCart) {\r\n if (IS_LIXIL_UI && (window.location.hash.includes(ROUTES.cart) || window.location.hash.includes(ROUTES.list))) {\r\n return !isPhoneNumberValidated;\r\n } else {\r\n if (window.location.hash.includes(\"materials\")) {\r\n return false\r\n } else if (window.location.hash.includes(\"shoppingcart\")) {\r\n return !isPhoneNumberValidated;\r\n }\r\n }\r\n }\r\n\r\n let featureIsLocked = !(\r\n ignoreLocked\r\n || !fabricatorSettings[leadCaptureProperty]\r\n || (fabricatorSettings[leadCaptureProperty] && visualizerManagement)\r\n || (fabricatorSettings[leadCaptureProperty] && isPhoneNumberValidated)\r\n || (fabricatorSettings[leadCaptureProperty] && (isBackend && jobId && canSaveQuote)));\r\n if (featureIsLocked) {\r\n featureIsLocked = !((feature.dbFeature && feature.dbFeature.unlocked) || isPhoneNumberValidated);\r\n if (!featureIsLocked && !IS_LIXIL_UI) { // search for locked filters // temporary removed from bvLook\r\n const filterValues = feature.dbFeature && feature.dbFeature.filterValueIDs;\r\n if (filterValues) {\r\n featureIsLocked = Object.keys(filterValues).some((filterKey) => {\r\n const filterGroup = filterState.filterGroups.find(group => group.id === +filterKey);\r\n const filterValue = filterGroup && filterGroup.values && filterGroup.values.find(value => value.id === filterValues[filterKey][0]);\r\n return filterValue && filterValue.lockedInWizard\r\n });\r\n }\r\n }\r\n }\r\n return featureIsLocked\r\n};\r\n\r\nexport const sortByOrder = (array) => {\r\n return array.sort((a, b) => a.order !== b.order ? a.order < b.order ? -1 : 1 : 0); // sort by order property\r\n};\r\n\r\nexport const objectWithoutProperties = (obj, keys) => {\r\n let target = {};\r\n for (let i in obj) {\r\n if (keys.indexOf(i) >= 0) continue;\r\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\r\n target[i] = obj[i];\r\n }\r\n return target;\r\n}\r\n\r\n/**\r\n * returns array of Ids, etc. [2313743, 2313335, 2320458]\r\n * @param bvState {object}\r\n * @param checkDifferentVisualizers {boolean}\r\n * @return {[number]}\r\n */\r\nexport const getArrayOfIdsFromBvState = (bvState, checkDifferentVisualizers = false) => {\r\n let arrayOfIds = [];\r\n if (bvState) {\r\n Object.keys(bvState).forEach((key) => {\r\n const bvStateValue = bvState[key];\r\n if (Number.isInteger(bvStateValue) && bvStateValue > 50) { // check for layout_type\r\n if (key === \"presetPrice\") { // it is a number and it is more than 12\r\n return\r\n }\r\n arrayOfIds.push(bvStateValue)\r\n } else if (Array.isArray(bvStateValue)) {\r\n bvStateValue.forEach((bvStateValueArrayItem) => {\r\n if (Number.isInteger(bvStateValueArrayItem)) {\r\n arrayOfIds.push(bvStateValueArrayItem)\r\n }\r\n })\r\n } else if (typeof bvStateValue === 'object' && bvStateValue !== null) {\r\n [\"cartItems\", \"displayLogicCartItems\"].forEach((property) => {\r\n if (bvStateValue[property] && bvStateValue[property].length) {\r\n bvStateValue[property].forEach((cartItem) => {\r\n if (checkDifferentVisualizers && (cartItem.fromVisualizerType !== bvState.visualizerType)) {\r\n return // load only current visualizer features\r\n }\r\n if (cartItem.cartFeature && cartItem.cartFeature.dbFeatureId) {\r\n arrayOfIds.push(cartItem.cartFeature.dbFeatureId)\r\n } else if (cartItem.cartFeature && cartItem.fabFeatId) { // support for old logic\r\n arrayOfIds.push(cartItem.fabFeatId)\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n return uniq(arrayOfIds)\r\n}\r\n\r\nexport const getShareUrl = (jobId) => {\r\n const url = new URL(window.location.href);\r\n console.log(\"url\", url);\r\n let searchParams = new URLSearchParams(decodeURIComponent(url.search || \"\").replace(/amp;/gi, \"\"));\r\n [\"show\", \"jobId\", \"mode\", \"saveQuote\", ...LIXIL_USER_QUERY_PARAMS].forEach(param => {\r\n searchParams.delete(param);\r\n });\r\n searchParams.set(\"design\", jobId);\r\n // const shareUrl = url.href\r\n // .replace(/&show=?\\w*?&/, \"&\")\r\n // .replace(/&jobId=\\d*/gi, \"\")\r\n // .replace(/&mode=\\w*/gi, \"\")\r\n // .replace(/&saveQuote=\\w*/gi, \"\")\r\n // .split(\"#/\")[0]\r\n\r\n let baseHref = url.origin + url.pathname;\r\n if (baseHref[baseHref.length - 1] === \"/\") {\r\n baseHref.slice(0, -1);\r\n }\r\n\r\n // const shareUrl = baseHref + \"?\" + searchParams.toString() + url.hash;\r\n const shareUrl = baseHref + \"?\" + searchParams.toString();\r\n // console.log(\"shareUrl\", shareUrl);\r\n return shareUrl\r\n};\r\n\r\nexport const getDefaultRoomName = (messages, quoteRoomType = \"\") => {\r\n switch (quoteRoomType || document.kvConfig.visualizerType) {\r\n case \"Bathroom\":\r\n case \"BV\":\r\n case \"bvScene\":\r\n case \"bvLook\":\r\n return messages[\"rooms.Bathroom\"]\r\n case \"Kitchen\":\r\n case \"KV\":\r\n case \"kvMaster\":\r\n case \"kvScene\":\r\n return messages[\"rooms.Kitchen\"]\r\n default:\r\n return quoteRoomType || document.kvConfig.visualizerType || \"\"\r\n }\r\n}\r\n\r\n/**\r\n * @param feature {featureInterface}\r\n * @param messages {object}\r\n * @param locale {string}\r\n * @param fabricatorData {object}\r\n * @param filterGroups {array}\r\n * @param useCollectionName {boolean}\r\n * @return {string}\r\n */\r\nexport const getStringFeatureName = (feature,\r\n messages,\r\n locale,\r\n fabricatorData,\r\n filterGroups,\r\n useCollectionName = false) => {\r\n if (!feature) {\r\n return \"\"\r\n }\r\n\r\n if ((fabricatorData.isLowes || fabricatorData.isCaesarStone) && messages) {\r\n if (locale === \"fr-FR\" && messages[\"transDoc.customDisplayName_FR.\" + feature.dbFeature.sharedFeatureName]) {\r\n return messages[\"transDoc.customDisplayName_FR.\" + feature.dbFeature.sharedFeatureName]\r\n } else if (locale === \"pl-PL\" && messages[\"transDoc.customTranslateName_PL.\" + feature.dbFeature.sharedFeatureName]) {\r\n return messages[\"transDoc.customTranslateName_PL.\" + feature.dbFeature.sharedFeatureName]\r\n }\r\n }\r\n\r\n if ((feature.dbFeature.sharedFeatureName === \"additionalCartItem.minimumCharge\")) {\r\n if (fabricatorData.isCaesarStone) {\r\n return `${messages[feature.dbFeature.sharedFeatureName]} (${feature.fromFeatureName})`\r\n }\r\n return messages[feature.dbFeature.sharedFeatureName]\r\n }\r\n\r\n if (!feature.getFeatureName) {\r\n return feature._customDisplayName || feature.customDisplayName || \"\"\r\n }\r\n\r\n return (useCollectionName && !fabricatorData.isEncore)\r\n ? feature.getCollectionName(filterGroups) || feature.getFeatureName()\r\n : feature.getFeatureName()\r\n}\r\n\r\nconst upperCaseAlp = [\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\"N\",\"O\",\"P\",\"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\"];\r\n\r\n/**\r\n * @param quoteIndex {number|string}\r\n * @param cartItems {array}\r\n * @param quotes {array}\r\n * @param messages {object}\r\n * @param locale {string}\r\n * @param fabricatorData {object}\r\n * @return {string}\r\n */\r\nexport const getRoomName = (quoteIndex, cartItems = [], quotes = [], messages, locale, fabricatorData) => {\r\n\r\n quoteIndex = +quoteIndex;\r\n\r\n const getCurentQuoteRoomItem = (quoteIndexToFind) => {\r\n return cartItems.find(cItem => (cItem.currentQuote === quoteIndexToFind) && (cItem.partId === \"room\"))\r\n };\r\n\r\n const quoteRoomNameToCompare = (currentQuoteIndex) => {\r\n const roomCartItem = getCurentQuoteRoomItem(currentQuoteIndex);\r\n if (roomCartItem && roomCartItem.cartFeature && roomCartItem.cartFeature.getLowerCasedCustomDisplayName) {\r\n return roomCartItem.cartFeature.getLowerCasedCustomDisplayName()\r\n }\r\n const quoteRoomType = quotes[currentQuoteIndex] && quotes[currentQuoteIndex].room ? quotes[currentQuoteIndex].room : \"\";\r\n return (getDefaultRoomName(messages, quoteRoomType) || \"\").toLowerCase();\r\n };\r\n\r\n\r\n const currentRoomName = quoteRoomNameToCompare(quoteIndex);\r\n const quoteRoomType = quotes[quoteIndex] && quotes[quoteIndex].room ? quotes[quoteIndex].room : \"\";\r\n const roomItem = getCurentQuoteRoomItem(quoteIndex);\r\n const baseRoomName = roomItem && roomItem.cartFeature\r\n ? getStringFeatureName(roomItem.cartFeature, messages, locale, fabricatorData)\r\n : getDefaultRoomName(messages, quoteRoomType);\r\n\r\n if (quotes.some((quote, currentQuoteIndex) => {\r\n return (quoteIndex !== currentQuoteIndex) && (quoteRoomNameToCompare(currentQuoteIndex) === currentRoomName)\r\n })) {\r\n let letterIndex = 0;\r\n for (let i = 0; i <= quotes.length; i++) {\r\n if ((i < quoteIndex) && (quoteRoomNameToCompare(i) === currentRoomName)) {\r\n letterIndex++\r\n }\r\n }\r\n return baseRoomName + upperCaseAlp[letterIndex] || \"\"\r\n }\r\n return baseRoomName || \"\"\r\n};\r\n\r\n/**\r\n * @param quoteIndex {number|string}\r\n * @param cartItems {array}\r\n * @param quotes {array}\r\n * @param messages {object}\r\n * @param locale {string}\r\n * @param fabricatorData {object}\r\n * @return {string}\r\n */\r\nexport const getBaseRoomName = (quoteIndex, cartItems = [], quotes = [], messages, locale, fabricatorData) => {\r\n\r\n quoteIndex = +quoteIndex;\r\n\r\n const getCurentQuoteRoomItem = (quoteIndexToFind) => {\r\n return cartItems.find(cItem => (cItem.currentQuote === quoteIndexToFind) && (cItem.partId === \"room\"))\r\n };\r\n\r\n const quoteRoomType = quotes[quoteIndex] && quotes[quoteIndex].room ? quotes[quoteIndex].room : \"\";\r\n const roomItem = getCurentQuoteRoomItem(quoteIndex);\r\n const baseRoomName = roomItem && roomItem.cartFeature\r\n ? getStringFeatureName(roomItem.cartFeature, messages, locale, fabricatorData)\r\n : getDefaultRoomName(messages, quoteRoomType);\r\n\r\n return baseRoomName || \"\"\r\n};\r\n\r\nexport const getEventPosition = (e) => {\r\n const eventX = e.clientX ? e.clientX : (e.touches[0] ? e.touches[0].clientX : e.changedTouches[0].clientX);\r\n const eventY = e.clientY ? e.clientY : (e.touches[0] ? e.touches[0].clientY : e.changedTouches[0].clientY);\r\n return {\r\n x: parseFloat(eventX).toFixed(2),\r\n y: parseFloat(eventY).toFixed(2)\r\n }\r\n};\r\n\r\nexport const getUrlParam = (queryParam) => {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n return urlParams.get(queryParam);\r\n}\r\n\r\n/**\r\n *\r\n * @param feature {object} feature\r\n * @param intl {object} translates provider\r\n * @param fabricatorData {object} fabricator state\r\n * @param quantity {number}\r\n * @param cartItem {cartItemInterface} if passed - return its name (for slabs)\r\n * @return {string}\r\n */\r\nexport const getFeatureUnit = (feature, intl, fabricatorData, quantity, cartItem = null) => {\r\n if (cartItem && (cartItem.displayFakeFeatureGroupName === \"slabs\")) {\r\n return getSlabUnit(cartItem.displayFakeQuantity, intl)\r\n }\r\n const dbFeature = feature.dbFeature;\r\n if ((fabricatorData.isLowes || fabricatorData.isCaesarStone) && intl.locale === \"fr-FR\" && intl.messages && intl.messages[\"transDoc.units_FR.\" + dbFeature.sharedFeatureName]) {\r\n if ((intl.formatMessage({id: \"transDoc.units_FR.\" + dbFeature.sharedFeatureName}) === \"pieds carrés\") && dbFeature.unit === \"Each\") {\r\n return quantity === 1 ? \"unité\" : \"nombre unites\"\r\n }\r\n return intl.formatMessage({id: \"transDoc.units_FR.\" + dbFeature.sharedFeatureName})\r\n }\r\n if (dbFeature.unit) {\r\n let lowercasedUnit = dbFeature.unit.toLowerCase();\r\n return lowercasedUnit === \"each\" || lowercasedUnit === \"unit\"\r\n ? quantity <= 1\r\n ? intl.formatMessage({id: \"quotingTool.featureInfo.defaultQuantity\"})\r\n : intl.formatMessage({id: \"quotingTool.featureInfo.defaultQuantityMultiple\"})\r\n : dbFeature.unit\r\n }\r\n if (feature.isStoneFeature) {\r\n return intl.formatMessage({id: \"shoppingCart.fetureInCartDefaultQuantitySQFT\"})\r\n }\r\n return intl.formatMessage({id: \"shoppingCart.fetureInCartDefaultQuantity\"})\r\n};\r\n\r\n/**\r\n *\r\n * @param totalCount {int}\r\n * @param intl {object} translates provider\r\n * @return {string}\r\n */\r\nexport const getSlabUnit = (totalCount, intl) => {\r\n return totalCount === 1\r\n ? intl.formatMessage({id: \"sqftFeaturesPopup.unit.slab\"})\r\n : intl.formatMessage({id: \"sqftFeaturesPopup.unit.slabs\"})\r\n};\r\n\r\n/**\r\n * @returns {DesignNavigationItem}\r\n */\r\nexport const getSlabsFeatureGroup = (layout = getCurrentLayout()) => {\r\n\r\n const countertopFeatureGroup = getCountertopFeatureGroup(layout);\r\n\r\n // create new featureGroup and add it to qtCategories\r\n let slabsFeatureGroup = layout.addNonVisualizerSubPart(\"Slabs\");\r\n if (countertopFeatureGroup) {\r\n slabsFeatureGroup.part.featuresList = countertopFeatureGroup.featuresList;\r\n slabsFeatureGroup.part.translateId = 'visualizer.kitchen.slabs';\r\n slabsFeatureGroup.part.wasCreatedFromGroupName = countertopFeatureGroup.dbName || countertopFeatureGroup.partName;\r\n }\r\n\r\n return slabsFeatureGroup\r\n}\r\n\r\n/**\r\n * todo: this will add slab featureGroup to each category, we need to check what if qtCategories doesn't match room name\r\n * add Slabs FeatureGroup To First qtCategory\r\n * @returns {DesignNavigationItem}\r\n */\r\nexport const getQtCategoriesWithSlabFeatureGroup = (qtCategories) => {\r\n const state = store.getState();\r\n const fabricatorSettings = state.fabricatorState.settings;\r\n if (qtCategories && fabricatorSettings.showSlabMode) {\r\n const cartItems = state.cartState.cartItems;\r\n const activeQuoteIndex = state.quotesState.activeQuoteIndex;\r\n const selectedQuoteRoomCartItem = getCurrentQuoteRoomCartItem(cartItems, activeQuoteIndex);\r\n const selectedQuoteRoomFeature = selectedQuoteRoomCartItem ? selectedQuoteRoomCartItem.cartFeature : null;\r\n const activeCategory = qtCategories.find(qtCategory => featureIsMatchingQtCatName(selectedQuoteRoomFeature, qtCategory.name, true));\r\n let categoryToSearch = activeCategory ? activeCategory : qtCategories[0];\r\n if (categoryToSearch && !categoryToSearch.subParts.some(subPart => subPart.part.partId === 'slabs')) {\r\n let subParts = [...categoryToSearch.subParts];\r\n let slabsFeatureGroup = getSlabsFeatureGroup();\r\n subParts.push(slabsFeatureGroup);\r\n qtCategories[qtCategories.findIndex(qtCategory => qtCategory === categoryToSearch)].subParts = subParts;\r\n }\r\n }\r\n\r\n return qtCategories\r\n}\r\n\r\n/**\r\n *\r\n * @param featureGroup {object} featureGroup\r\n * @param intl {object} translates provider\r\n * @param fabricatorData {object} fabricator state\r\n * @return {string}\r\n */\r\nexport const getFeatureGroupName = (featureGroup, intl, fabricatorData) => {\r\n if (!featureGroup || !intl || !fabricatorData) {\r\n return \"\"\r\n }\r\n const lowerCasedName = featureGroup.partName.toLowerCase();\r\n if ((fabricatorData.isLowes || fabricatorData.isCaesarStone) && intl.messages) {\r\n if (intl.locale === \"fr-FR\" && intl.messages[\"transDoc.customDisplayName_FR.\" + lowerCasedName]) {\r\n return intl.formatMessage({id: \"transDoc.customDisplayName_FR.\" + lowerCasedName})\r\n } else if (intl.locale === \"pl-PL\" && intl.messages[\"transDoc.customTranslateName_PL.\" + lowerCasedName]) {\r\n return intl.formatMessage({id: \"transDoc.customTranslateName_PL.\" + lowerCasedName})\r\n }\r\n }\r\n if ((intl.locale === \"en-US\" || fabricatorData.isDeStefano) && featureGroup.customGroupDisplayName) {\r\n return featureGroup.customGroupDisplayName\r\n }\r\n if (featureGroup.partName === \"Room\") {\r\n return intl.messages[\"shoppingCart.roomTitle\"]\r\n }\r\n\r\n return intl.messages[featureGroup.translateId] || featureGroup.partName\r\n};\r\n\r\n/**\r\n * Each dbFeature should go through this fixes!\r\n * @param dbFeature {object}\r\n * @return dbFeature {object}\r\n */\r\nexport const fixDbFeatureProperties = (dbFeature) => {\r\n dbFeature.metaData = metaDataToCamelCase(dbFeature.metaData); // make all metadata keys CamelCased(dashboard saving issue)\r\n if (!dbFeature.filterValueIDs) {\r\n dbFeature.filterValueIDs = {}\r\n }\r\n if (!dbFeature.fabFilterValueIDs) {\r\n dbFeature.fabFilterValueIDs = {}\r\n }\r\n if (dbFeature.sharedFeatureName) {\r\n dbFeature.sharedFeatureName = dbFeature.sharedFeatureName.trim();\r\n // if (!dbFeature.sku) {\r\n // dbFeature.sku = dbFeature.sharedFeatureName // bvLook visualizer only has shared feature names, not the sku :(\r\n // }\r\n }\r\n if (!dbFeature.displayName) {\r\n dbFeature.displayName = dbFeature.sharedFeatureName;\r\n // if (!dbFeature.sku) {\r\n // dbFeature.sku = dbFeature.sharedFeatureName // bvLook visualizer only has shared feature names, not the sku :(\r\n // }\r\n }\r\n return dbFeature\r\n}\r\n\r\n/**\r\n * @param forFeature {featureInterface}\r\n * @param fabricatorSettings {object}\r\n * @param checkArray {array}\r\n * @return {boolean}\r\n */\r\nexport const canShowSqftButtonForFeature = (forFeature, fabricatorSettings, checkArray = null) => {\r\n if (!checkArray) {\r\n checkArray = [...Object.keys({...COUNTERTOP_LABELS, ...EDGE_LABELS, ...BACKSPLASH_LABELS, ...CORNER_LABELS}), ...LOOK_WALLS_ONLY];\r\n }\r\n const canShowForCommonIds = checkArray.includes(forFeature.partId) || (\r\n forFeature.dbFeature && (forFeature.dbFeature.sharedFeatureName === \"Xtone Underlayment\") // porcelanosa hardcode, but can be used for all\r\n && checkArray.some(key => key === \"center_island_countertop\") // show it only once, cabinets check\r\n )\r\n switch (getCommonVisualizerType()) {\r\n case \"bathroom\": {\r\n if (fabricatorSettings.enableSqFt) { // fabricatorSettings.enableSqFt - is actually disable\r\n return false\r\n }\r\n return canShowForCommonIds\r\n }\r\n case \"fireplace\": { // enableSqFt doesn't work on the fireplace profile omg\r\n return canShowForCommonIds\r\n }\r\n case \"kitchen\":\r\n default: { // remove default as we have fireplace or other visualizer ready\r\n if (fabricatorSettings.enableSqFt) { // fabricatorSettings.enableSqFt - is actually disable\r\n return false\r\n }\r\n return canShowForCommonIds\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * @param forFeature {featureInterface}\r\n * @param fabricatorSettings {object}\r\n * @return {boolean}\r\n */\r\nexport const canShowSqftCabinetButtonForFeature = (forFeature, fabricatorSettings) => {\r\n return isCabinetsFabricator()\r\n || canShowSqftButtonForFeature(forFeature, fabricatorSettings, Object.keys({...CABINET_LABELS}))\r\n}\r\n\r\n/**\r\n * @return {boolean}\r\n */\r\nexport const canShowSqftButton = () => {\r\n const fabricatorSettings = store.getState().fabricatorState.settings;\r\n\r\n if (document.kvConfig.userId === 238280) { // solid surface\r\n return true\r\n }\r\n\r\n return (document.kvConfig.visualizerType === \"Kitchen\" || document.kvConfig.visualizerType === \"KV\" || fabricatorSettings.useCategorySwitching)\r\n && !fabricatorSettings.enableSqFt; // fabricatorSettings.enableSqFt - is actually disable\r\n}\r\n\r\n/**\r\n *\r\n * @param fromFeature {featureInterface}\r\n * @param newQuantity {number}\r\n * @param qtActiveCategory {string}\r\n * @return {cartItemInterface}\r\n */\r\nexport const getCartItemObject = (fromFeature, newQuantity, qtActiveCategory) => {\r\n const subPart = fromFeature.getParent();\r\n const parentName = subPart.getParent ? subPart.getParent().partName : subPart.partName\r\n const cartItemObject = {\r\n selectionGroup: parentName,\r\n quantity: newQuantity,\r\n partId: fromFeature.partId,\r\n cartFeature: fromFeature,\r\n }\r\n // if (fromFeature.inCatProperties) { // added always, to properly switch to feature group and category from cart\r\n cartItemObject.fromQtCategory = qtActiveCategory\r\n // }\r\n return cartItemObject\r\n}\r\n\r\n/**\r\n *\r\n * @param relatedFeatures {array} feature relatedFeatures array\r\n * @param currentFeature {object} feature\r\n * @param searchInputValue\r\n * @return {object}\r\n */\r\nexport const getRelatedFeaturesFromLayout = (relatedFeatures, currentFeature, searchInputValue = \"\", selectedFilters = []) => {\r\n const layout = getCurrentLayout();\r\n const parentParts = Object.values(layout.parts);\r\n let relatedFeaturesFound = [];\r\n let noFeaturesFound = [];\r\n if (!Array.isArray(relatedFeatures)) {\r\n return {noFeaturesFound, relatedFeaturesFound}\r\n }\r\n relatedFeatures.forEach(relatedFeature => {\r\n let featureIsFound = false;\r\n let groupName = relatedFeature.groupName;\r\n if (!groupName) {\r\n groupName = splitFeatureName(relatedFeature.displayName).groupName;\r\n }\r\n groupName = groupName.toLowerCase().trim();\r\n parentParts.forEach(parentPart => {\r\n parentPart.relatedItems.forEach(relItem => {\r\n let edgeCondition = true;\r\n const dbName = (relItem.dbName || relItem.partName).toLowerCase().trim();\r\n // 157699 - hardcode for stone_industries_pan.quotekitchenandbath.com/kitchen - they have back countertop & center island edge\r\n if (groupName === \"edge profile\" && (document.kvConfig.userId !== 157699) && (relItem.partId !== currentFeature.partId)) {\r\n edgeCondition = false; // take edge only for countertop || center_island_countertop\r\n }\r\n if ((dbName === groupName) && edgeCondition) {\r\n let feature = null;\r\n Object.keys(relItem.featuresList).forEach(layoutType => {\r\n feature = feature || relItem.featuresList[layoutType].find(feature => {\r\n return feature.dbFeature.id === relatedFeature.id;\r\n })\r\n });\r\n if (feature) {\r\n if (searchInputValue !== \"\") {\r\n if (feature.getFeatureName().toLowerCase().includes(searchInputValue.trim().toLowerCase())\r\n || (feature.dbFeature && feature.dbFeature.description && feature.dbFeature.description.toLowerCase().includes(searchInputValue.trim().toLowerCase()))\r\n ) {\r\n relatedFeaturesFound.push(feature);\r\n featureIsFound = true;\r\n }\r\n } else {\r\n relatedFeaturesFound.push(feature);\r\n featureIsFound = true;\r\n }\r\n }\r\n }\r\n })\r\n });\r\n if (!featureIsFound) {\r\n noFeaturesFound.push(relatedFeature.id)\r\n }\r\n relatedFeaturesFound = filterFeaturesByValues(relatedFeaturesFound, selectedFilters);\r\n });\r\n return {noFeaturesFound, relatedFeaturesFound}\r\n}\r\n\r\nexport const getFilteredRelatedFeatures = (relatedFeaturesToCheck) => {\r\n // console.log(\"relatedFeaturesToCheck\", relatedFeaturesToCheck);\r\n let relatedFeatures = [];\r\n relatedFeaturesToCheck.forEach((relFeature) => {\r\n const featureAlreadyExistIndex = relatedFeatures.findIndex(currentFeature => {\r\n return currentFeature.getSplittedFeatureName() === relFeature.getSplittedFeatureName()\r\n })\r\n if (featureAlreadyExistIndex > -1) {\r\n if (relFeature.getParent().navigationSubItems().some(navItem => {\r\n return navItem.part.dbFeature.id === relFeature.dbFeature.id\r\n })) {\r\n relatedFeatures.splice(featureAlreadyExistIndex, 1, relFeature)\r\n }\r\n } else {\r\n relatedFeatures.push(relFeature);\r\n }\r\n });\r\n // console.log(\"relatedFeatures\", relatedFeatures);\r\n return relatedFeatures\r\n};\r\n\r\n/**\r\n *\r\n * @param relatedFeatures {array} feature relatedFeatures array\r\n * @param cartItems {array} cartItems array\r\n * @param quoteIndex {number} quoteIndex\r\n * @param intl {object} react-intl instance\r\n * @param fabricatorData {object}\r\n * @return {array}\r\n */\r\nexport const createRelatedGroups = (relatedFeatures, cartItems, quoteIndex, intl, fabricatorData) => {\r\n const relatedGroups = [];\r\n relatedFeatures.forEach(relatedFeature => {\r\n const addedCartItem = cartItems.find(cartItem => {\r\n return cartItem.cartFeature && (cartItem.cartFeature.dbFeature.id === relatedFeature.dbFeature.id)\r\n && cartItem.currentQuote === quoteIndex\r\n })\r\n relatedFeature.cartQuantity = addedCartItem ? addedCartItem.quantity : 0;\r\n const relatedFeatureGroupName = getFeatureGroupName(relatedFeature.getParent(), intl, fabricatorData);\r\n const featureGroup = relatedGroups.find(group => group.name === relatedFeatureGroupName);\r\n if (!featureGroup) {\r\n const name = relatedFeature.getParent\r\n ? relatedFeatureGroupName\r\n : relatedFeature.dbFeature.groupName\r\n relatedGroups.push({\r\n name,\r\n relatedFeatures: [relatedFeature]\r\n })\r\n } else {\r\n featureGroup.relatedFeatures.push(relatedFeature);\r\n }\r\n });\r\n return relatedGroups\r\n}\r\n\r\n/**\r\n *\r\n * @param filterGroup {object}\r\n * @return {array}\r\n */\r\nexport const getAllFilterGroupValuesFromGroup = (filterGroup) => {\r\n const fValues = [];\r\n if (!filterGroup || !filterGroup.values) {\r\n return []\r\n }\r\n filterGroup.values.forEach(fValue => {\r\n fValues.push(fValue);\r\n if (Array.isArray(fValue.items) && fValue.items.length) {\r\n fValue.items.forEach(childValue => {\r\n fValues.push(childValue);\r\n });\r\n }\r\n });\r\n return fValues\r\n};\r\n\r\n/**\r\n *\r\n * @param websiteUrl {string}\r\n */\r\nexport const goToFabricatorUrl = (websiteUrl) => {\r\n websiteUrl = websiteUrl.includes(\"http\") ? websiteUrl : \"//\" + websiteUrl;\r\n if (isIframe()) {\r\n window.parent.location.href = websiteUrl;\r\n } else {\r\n window.location.href = websiteUrl;\r\n }\r\n}\r\n","import * as types from './actionTypes';\r\nimport store from './../store';\r\nimport {loaderEnable} from \"../bvcomponents/ui/loaderView\";\r\nimport * as uuid from \"uuid\";\r\nimport {hashHistory} from \"react-router\";\r\n\r\nimport {showOrderCompletePopup} from \"./shoppingCartFunctions\";\r\nimport {CART_ITEM_ADDED_BY} from \"../bvcomponents/shoppingCart/cartItemInterface\";\r\nimport {\r\n getAvailableSteps, getCorrectedWizardGroupForFeature,\r\n} from \"../bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\nimport {\r\n getWizardStepFromCartItemFeature\r\n} from \"../bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardFunctions2\";\r\nimport {USE_FAB_FILTERS_ONLY} from \"../config\";\r\nimport {getBundledFeatures} from \"../bvcomponents/look/lookNavigation/lookFunctions2\";\r\nimport {IS_QKB_UI} from \"../config\";\r\n// import {showContractSigning} from \"./contractsActions\";\r\nimport {shouldUseContractSigning} from \"../bvcomponents/popups/contractSign/contractsFunctions\";\r\nimport {ROUTES} from \"../routes\";\r\n\r\n//****** SERVER & GLOBAL ******//\r\nexport const setWindowWidth = (windowWidth) => ({\r\n type: types.SET_WINDOW_WIDTH,\r\n payload: {\r\n windowWidth\r\n }\r\n});\r\nexport const setJavascriptErrors = (javascriptError) => ({\r\n type: types.SET_JAVASCRIPT_ERRORS,\r\n payload: {javascriptError}\r\n});\r\nexport const setWindowHeight = (windowHeight) => ({\r\n type: types.SET_WINDOW_HEIGHT,\r\n payload: {\r\n windowHeight\r\n }\r\n});\r\nexport const setStonePricing = (stonePricing) => ({\r\n type: types.SET_STONE_PRICING,\r\n payload: {\r\n stonePricing\r\n }\r\n});\r\nexport const setCookieAccepted = (cookieAccepted) => ({\r\n type: types.SET_COOKIE_ACCEPTED,\r\n payload: {\r\n cookieAccepted\r\n }\r\n});\r\nexport const addVisualizersLoaded = (newLoadedVisualizer) => ({\r\n type: types.ADD_VISUALIZERS_LOADED,\r\n payload: {\r\n newLoadedVisualizer\r\n }\r\n});\r\nexport const showSuccessNotification = (successNotification) => ({\r\n type: types.SHOW_SUCCESS_NOTIFICATION,\r\n payload: successNotification\r\n});\r\nexport const addProjectDocument = (file, description, sqftDiagram = false) => {\r\n\r\n let documents = store.getState().serverState.documents;\r\n const newDocument = {\r\n name: file.name,\r\n uid: uuid.v4(),\r\n text: description,\r\n created: new Date(),\r\n uploaded: false,\r\n file: file // the blob file\r\n };\r\n\r\n if (sqftDiagram) {\r\n const existingCalcDiagramIndex = documents.findIndex(doc => doc.name === file.name);\r\n if (existingCalcDiagramIndex > -1) {\r\n documents.splice(existingCalcDiagramIndex, 1);\r\n }\r\n }\r\n\r\n return {\r\n type: types.ADD_PROJECT_DOCUMENT,\r\n payload: [...documents, newDocument]\r\n }\r\n};\r\nexport const setProjectDocumentsIds = (documents) => {\r\n\r\n let oldDocuments = store.getState().serverState.documents;\r\n oldDocuments = oldDocuments.map(oldDoc => {\r\n const responseDoc = documents.find(doc => doc.name === oldDoc);\r\n if (responseDoc) {\r\n oldDoc.uploaded = true;\r\n oldDoc.documentId = responseDoc.documentId;\r\n }\r\n return oldDoc\r\n });\r\n\r\n return {\r\n type: types.SET_PROJECT_DOCUMENTS_IDS,\r\n payload: [...oldDocuments]\r\n }\r\n};\r\n\r\n/**\r\n * @param jobId {int}\r\n */\r\nexport const setJobId = (jobId) => ({type: types.SET_JOB_ID, payload: {jobId}});\r\n\r\n//****** STEPS ******//\r\nexport const setStep = (activeStep) => ({\r\n type: types.SET_STEP,\r\n payload: {\r\n activeStep\r\n }\r\n});\r\nexport const setLayoutDataParts = (layoutParts) => ({\r\n type: types.SET_LAYOUT_DATA_PARTS,\r\n payload: {\r\n layoutParts\r\n }\r\n});\r\nexport const setStepSwitching = (isSwitching) => ({\r\n type: types.SET_STEP_SWITCHING,\r\n payload: {\r\n isSwitching\r\n }\r\n});\r\n\r\n//****** SELECTION ******//\r\nexport const toggleSelectionWindow = (selectionOpened, selectionGroup) => {\r\n\r\n const {filterState} = store.getState();\r\n if (filterState.showFilters) {\r\n store.dispatch(showFilters(false));\r\n }\r\n\r\n return {\r\n type: types.TOGGLE_SELECTION_WINDOW,\r\n payload: {\r\n selectionOpened,\r\n selectionGroup\r\n }\r\n };\r\n};\r\nexport const setDefaultSelectionGroup = (selectionGroup) => ({\r\n type: types.SET_DEFAULT_SELECTION_GROUP,\r\n payload: {selectionGroup}\r\n});\r\nexport const setSelectionWindowView = (selectionWindowView) => ({\r\n type: types.SET_SELECTION_WINDOW_VIEW,\r\n payload: {selectionWindowView}\r\n});\r\nexport const toggleSelectionFeatureInfo = (selectionFeatureInfo) => ({\r\n type: types.TOGGLE_SELECTION_INFO,\r\n payload: {selectionFeatureInfo}\r\n});\r\nexport const updateFeatureInfoCount = () => ({\r\n type: types.UPDATE_FEATURE_INFO_COUNT,\r\n});\r\nexport const changeSelectionInfoQuantity = (selectionInfoQuantity) => ({\r\n type: types.CHANGE_SELECTION_INFO_QUANTITY,\r\n payload: {selectionInfoQuantity}\r\n});\r\nexport const togglePulseFeatureInfoQuantity = (pulseFeatureInfoQuantity) => ({\r\n type: types.TOGGLE_PULSE_FEATURE_INFO_QUANTITY,\r\n payload: {pulseFeatureInfoQuantity}\r\n});\r\nexport const changeMaterialsInfoFeatureModules = (materialsInfoFeatureModules) => ({\r\n type: types.CHANGE_MATERIALS_INFO_FEATURE_MODULES,\r\n payload: {materialsInfoFeatureModules}\r\n});\r\nexport const changeActivePartRelatedItemIndex = (newActivePartRelatedItemIndex) => {\r\n return (dispatch, getState) => {\r\n const store = getState();\r\n const {activePartRelatedItemIndex} = store.selectionState;\r\n dispatch({\r\n type: types.CHANGE_SELECTION_ACTIVE_PART_RELATED_INDEX,\r\n payload: {\r\n activePartRelatedItemIndex: newActivePartRelatedItemIndex,\r\n isSameStep: newActivePartRelatedItemIndex === activePartRelatedItemIndex\r\n }\r\n });\r\n }\r\n}\r\nexport const setActiveFeature = (activeFeature) => ({\r\n type: types.SET_ACTIVE_FEATURE,\r\n payload: {activeFeature}\r\n});\r\nexport const toggleShowDescriptionCover = (showDescriptionCover) => ({\r\n type: types.TOGGLE_SHOW_DESCRIPTION_COVER,\r\n payload: {showDescriptionCover}\r\n});\r\n\r\n//****** BATHROOM VISUALIZER COMMANDS ******//\r\nexport const toggleBathroomVisualizerOpen = (bvOpened) => {\r\n const {filterState, bathroomVisualizerState} = store.getState();\r\n if (filterState.showFilters) {\r\n store.dispatch(showFilters(false));\r\n }\r\n if (bvOpened && !bathroomVisualizerState.bvVisited) {\r\n loaderEnable();\r\n }\r\n return {\r\n type: types.TOGGLE_BATHROOM_VISUALIZER_OPEN,\r\n payload: {\r\n bvOpened\r\n }\r\n };\r\n};\r\nexport const setBathroomVisualizerVisited = () => {\r\n return {\r\n type: types.SET_BATHROOM_VISUALIZER_VISITED,\r\n payload: {\r\n bvVisited: true\r\n }\r\n };\r\n};\r\nexport const setBathroomVisualizerFeatures = (bvFeatures) => ({\r\n type: types.SET_BV_FEATURES,\r\n payload: {bvFeatures}\r\n});\r\nexport const setBathroomVisualizerPresets = (bvPresets, visualizerType = document.kvConfig.visualizerType) => ({\r\n type: types.SET_BV_PRESETS,\r\n payload: {bvPresets, visualizerType}\r\n});\r\nexport const setActivePreset = (activePreset = 0) => ({\r\n type: types.SET_ACTIVE_PRESET,\r\n payload: {activePreset}\r\n});\r\nexport const setCanvasId = (id) => ({type: types.SET_BV_CANVAS_ID, payload: {id}});\r\nexport const toggleShowRestorePopup = (showRestorePopup) => ({\r\n type: types.TOGGLE_SHOW_RESTORE_POPUP,\r\n payload: {showRestorePopup}\r\n});\r\nexport const setCanvasDimensions = (canvasDimensions = null) => ({\r\n type: types.SET_CANVAS_DIMENSIONS,\r\n payload: {canvasDimensions}\r\n});\r\nexport const setCanvasScale = (canvasScale = 1) => ({\r\n type: types.SET_CANVAS_SCALE,\r\n payload: {canvasScale}\r\n});\r\nexport const setLoadedPresets = (loadedPresets = []) => ({\r\n type: types.SET_LOADED_PRESETS,\r\n payload: {loadedPresets}\r\n});\r\n\r\n//****** LOADER ******//\r\nexport const toggleLoader = (loaderOpened, loaderText = \"loader.defaultText\", loaderTitle = \"loader.defaultTitle\", loaderFullScreen = false) => ({\r\n type: types.TOGGLE_LOADER,\r\n payload: {\r\n loaderOpened,\r\n loaderTitle,\r\n loaderText,\r\n loaderFullScreen,\r\n }\r\n});\r\nexport const setMultiLoader = (multiLoader) => ({\r\n type: types.SET_MULTI_LOADER,\r\n payload: multiLoader\r\n})\r\n\r\n//****** USER COMMANDS ******//\r\nexport const toggleUserPopup = (userPopupState) => ({\r\n type: types.TOGGLE_USER_POPUP,\r\n payload: {\r\n ...userPopupState\r\n }\r\n});\r\nexport const changeUserInfo = (userInfo) => ({\r\n type: types.CHANGE_USER_INFO,\r\n payload: {userInfo}\r\n});\r\nexport const changeUserInfoErrors = (userInfoErrors) => ({\r\n type: types.CHANGE_USER_INFO_ERRORS,\r\n payload: {userInfoErrors}\r\n});\r\nexport const toggleAdditionalFields = (showAdditionalFields) => ({\r\n type: types.TOGGLE_ADDITIONAL_FIELDS,\r\n payload: {showAdditionalFields}\r\n});\r\nexport const setUserPhoneNumberValidated = (validated) => ({\r\n type: types.SET_USER_PHONE_NUMBER_VALIDATED,\r\n payload: {\r\n isPhoneNumberValidated: validated\r\n }\r\n});\r\nexport const unlockPricing = () => {\r\n return (dispatch, getState) => {\r\n const {userState} = getState();\r\n const {userIsLoggedIn, isPhoneNumberValidated} = userState;\r\n if (!userIsLoggedIn || !isPhoneNumberValidated) {\r\n dispatch(toggleUserPopup({\r\n userPopupOpened: true\r\n }));\r\n }\r\n }\r\n};\r\n\r\n//****** CART COMMANDS ******//\r\nexport const addToCart = (cartItems) => {\r\n return (dispatch, getState) => {\r\n const {quotesState, fabricatorState, wizardState, sqftState, cartState} = getState();\r\n\r\n const {wizardIsActive, wizardActiveItem, wizardActiveStep, wizardSelectedValues, allWizardsValues} = wizardState;\r\n let fromWizardId = null;\r\n let fromWizardGroup = null;\r\n let fromWizardStep = null;\r\n let wizardSteps = null;\r\n if (wizardIsActive && wizardActiveItem) {\r\n fromWizardId = wizardState.wizardActiveItem.id;\r\n fromWizardStep = wizardActiveStep;\r\n fromWizardGroup = wizardSelectedValues[wizardActiveStep] && wizardSelectedValues[wizardActiveStep].wizardGroup\r\n ? wizardSelectedValues[wizardActiveStep].wizardGroup : null;\r\n if (sqftState.isSquareFootageEnabled) {\r\n wizardSteps = getAvailableSteps(wizardActiveItem, wizardSelectedValues, true)\r\n }\r\n }\r\n\r\n let newCartItems = cartItems\r\n .map(cartItem => {\r\n cartItem.id = uuid.v4();\r\n cartItem.currentQuote = Number.isInteger(cartItem.currentQuote) ? cartItem.currentQuote : quotesState.activeQuoteIndex;\r\n cartItem.addedBy = cartItem.addedBy || CART_ITEM_ADDED_BY.user;\r\n cartItem.fromVisualizerType = cartItem.fromVisualizerType || document.kvConfig.visualizerType;\r\n if (!cartItem.noteText && cartItem.cartFeature && cartItem.cartFeature.notesList && cartItem.cartFeature.notesList[cartItem.currentQuote]) {\r\n cartItem.noteText = cartItem.cartFeature.notesList[cartItem.currentQuote];\r\n }\r\n if (wizardIsActive && !cartItem.fromWizardId) { // if it is not passed - add it\r\n if (sqftState.isSquareFootageEnabled && wizardSteps) {\r\n const foundStep = getWizardStepFromCartItemFeature(wizardSteps, cartItem);\r\n if (foundStep) {\r\n cartItem.fromWizardId = fromWizardId;\r\n cartItem.fromWizardStep = foundStep.stepIndex;\r\n cartItem.fromWizardGroupId = fromWizardGroup ? getCorrectedWizardGroupForFeature(foundStep.stepGroups[0], cartItem.cartFeature).id : \"\";\r\n } else {\r\n cartItem.fromWizardId = fromWizardId;\r\n cartItem.fromWizardStep = fromWizardStep;\r\n cartItem.fromWizardGroupId = fromWizardGroup ? getCorrectedWizardGroupForFeature(fromWizardGroup, cartItem.cartFeature).id : \"\";\r\n }\r\n } else {\r\n cartItem.fromWizardId = fromWizardId;\r\n cartItem.fromWizardStep = fromWizardStep;\r\n cartItem.fromWizardGroupId = fromWizardGroup ? getCorrectedWizardGroupForFeature(fromWizardGroup, cartItem.cartFeature).id : \"\";\r\n }\r\n }\r\n return cartItem\r\n })\r\n .filter(newCartItem => {\r\n if (newCartItem.partId === \"room\" && newCartItem.cartFeature && cartState.cartItems.some(oldCartItem => {\r\n return oldCartItem.cartFeature && (oldCartItem.cartFeature.dbFeature.id === newCartItem.cartFeature.dbFeature.id)\r\n && oldCartItem.currentQuote === newCartItem.currentQuote\r\n })) {\r\n return false // do not add duplicate room\r\n }\r\n return !cartState.cartItems.some(oldCartItem => oldCartItem.id === newCartItem.id)\r\n && (newCartItem.quantity > 0 || newCartItem.displayFakeQuantity > 0)\r\n });\r\n\r\n if (IS_QKB_UI) { // on look & product journeys we have another method and relatedProductParent property for bundled features\r\n newCartItems.forEach(newCartItem => {\r\n const bundleFeatures = getBundledFeatures(newCartItem.cartFeature);\r\n if (Array.isArray(bundleFeatures) && bundleFeatures.length) {\r\n bundleFeatures.forEach((bundleFeature) => {\r\n const quantity = newCartItem.cartFeature.dbFeature.bundledFeatureQuantities\r\n ? newCartItem.cartFeature.dbFeature.bundledFeatureQuantities[bundleFeature.dbFeature.id] || 1\r\n : 1;\r\n const cartItem = Object.assign({}, newCartItem, {\r\n id: uuid.v4(),\r\n cartFeature: bundleFeature,\r\n partId: bundleFeature.partId,\r\n noteText: \"\",\r\n bundleParentId: newCartItem.id,\r\n quantity: quantity * newCartItem.quantity,\r\n });\r\n // console.log(\"parent cartItem\", newCartItem);\r\n // console.log(\"bundle cartItem\", cartItem);\r\n newCartItems.push(cartItem);\r\n })\r\n }\r\n });\r\n }\r\n\r\n dispatch({\r\n type: types.ADD_TO_CART,\r\n payload: {\r\n cartItems: newCartItems,\r\n fabricatorState,\r\n allWizardsValues,\r\n }\r\n });\r\n }\r\n};\r\nexport const addDisplayLogicCartItem = (cartItem, fromVisualizerType = document.kvConfig.visualizerType) => ({\r\n type: types.ADD_DISPLAY_LOGIC_CART_ITEM,\r\n payload: {\r\n cartItem: Object.assign({}, cartItem, {\r\n id: uuid.v4(),\r\n isAddedFromDisplayLogic: true,\r\n addedBy: CART_ITEM_ADDED_BY.user,\r\n fromVisualizerType,\r\n })\r\n }\r\n});\r\nexport const changeCartItemQuantity = (cartItem, quantity, removeFakeQuantity = false) => {\r\n return (dispatch, getState) => {\r\n const {fabricatorState, wizardState} = getState();\r\n dispatch({\r\n type: types.CHANGE_CART_QUANTITY,\r\n payload: { cartItem, quantity, fabricatorState, removeFakeQuantity, allWizardsValues: wizardState.allWizardsValues }\r\n });\r\n }\r\n};\r\nexport const removeFromCart = (cartItem) => {\r\n return (dispatch, getState) => {\r\n const {fabricatorState, wizardState} = getState();\r\n dispatch({\r\n type: types.REMOVE_FROM_CART,\r\n payload: { cartItem, fabricatorState, allWizardsValues: wizardState.allWizardsValues }\r\n });\r\n }\r\n};\r\nexport const changeCartFeature = (cartItem, skipOtherRules = false) => {\r\n return (dispatch, getState) => {\r\n const {fabricatorState} = getState();\r\n dispatch({\r\n type: types.CHANGE_CART_FEATURE,\r\n payload: {cartItem, fabricatorState, skipOtherRules}\r\n });\r\n }\r\n};\r\nexport const removeInstallationServiceFromCart = installationService => ({\r\n type: types.REMOVE_INSTALLATION_SERVICE_FROM_CART,\r\n payload: {\r\n installationService\r\n }\r\n});\r\nexport const clearCart = () => ({\r\n type: types.CLEAR_CART\r\n});\r\nexport const toggleApplyPopup = (applyPopupOpened, activeApplyPopupItems = []) => ({\r\n type: types.TOGGLE_APPLY_POPUP,\r\n payload: {\r\n applyPopupOpened,\r\n activeApplyPopupItems\r\n }\r\n});\r\nexport const clickQuestionNo = (questionNoClicked) => ({\r\n type: types.CLICK_QUESTION_NO,\r\n payload: {\r\n questionNoClicked\r\n }\r\n});\r\nexport const setCameFromPage = (cameFromPage) => ({\r\n type: types.CAME_FROM_PAGE,\r\n payload: {\r\n cameFromPage\r\n }\r\n});\r\nexport const addToRecentlyViewed = (feature) => ({\r\n type: types.ADD_TO_RECENTLY_VIEWED,\r\n payload: {\r\n feature\r\n }\r\n});\r\nexport const showCheckoutPopup = (show) => ({\r\n type: types.SHOW_CHECKOUT_POPUP,\r\n payload: {\r\n show\r\n }\r\n});\r\nexport const restoreCart = (cartState) => {\r\n return (dispatch, getState) => {\r\n const {fabricatorState, quotesState, wizardState} = getState();\r\n if (cartState && cartState.cartItems) {\r\n cartState.cartItems = cartState.cartItems.map(cartItem => {\r\n cartItem.id = cartItem.id || uuid.v4();\r\n cartItem.currentQuote = Number.isInteger(cartItem.currentQuote) ? cartItem.currentQuote : quotesState.activeQuoteIndex;\r\n cartItem.addedBy = cartItem.addedBy || CART_ITEM_ADDED_BY.user;\r\n return cartItem\r\n })\r\n }\r\n dispatch({\r\n type: types.RESTORE_CART,\r\n payload: { cartState, fabricatorState, allWizardsValues: wizardState.allWizardsValues }\r\n });\r\n }\r\n};\r\n\r\n//****** INSTALLATION COMMANDS ******//\r\nexport const toggleInstOpened = (instOpened) => ({\r\n type: types.TOGGLE_INST_OPENED,\r\n payload: {\r\n instOpened\r\n }\r\n});\r\nexport const setInstList = (instList) => ({\r\n type: types.SET_INST_LIST,\r\n payload: {\r\n instList\r\n }\r\n});\r\nexport const setDefaultInstallations = (defaultInstallations) => ({\r\n type: types.SET_DEFAULT_INST_LIST,\r\n payload: {defaultInstallations}\r\n});\r\n\r\n//****** TOOL STATE ***************//\r\nexport const changeStateToQuote = () => ({\r\n type: types.SET_STATE_TO_QUOTE\r\n});\r\n\r\n//****** FABRICATOR COMMANDS ******//\r\nexport const setFabricatorData = (fabricatorData) => ({\r\n type: types.SET_FABRICATOR_DATA,\r\n payload: {\r\n ...fabricatorData\r\n }\r\n});\r\nexport const setFabricatorTaxes = (fabricatorTaxes) => ({\r\n type: types.SET_FABRICATOR_TAXES,\r\n payload: {fabricatorTaxes}\r\n});\r\n\r\nexport const updateFabricatorSettings = () => ({\r\n type: types.UPDATE_FABRICATOR_SETTINGS,\r\n});\r\n\r\nexport const toggleHideItemsSwitcher = () => ({\r\n type: types.TOGGLE_HIDE_ITEMS_PRICES,\r\n});\r\n\r\nexport const toggleUseFabricatorCostPrices = (useFabricatorCostPrices) => ({\r\n type: types.TOGGLE_USE_FABRICATOR_COST_PRICES,\r\n payload: {useFabricatorCostPrices}\r\n});\r\n\r\n//****** MESSAGEBOX COMMANDS ******//\r\nexport const changeMessageBoxState = (messageBoxState) => ({\r\n type: types.CHANGE_MESSAGE_BOX,\r\n payload: {\r\n ...messageBoxState\r\n }\r\n});\r\n\r\n//******** FILTER COMMANDS **********//\r\nexport const setSelectedFilters = (selectedFilters) => ({\r\n type: types.SET_SELECTED_FILTERS,\r\n payload: [...selectedFilters]\r\n});\r\n\r\nexport const loadFilters = (filterGroups) => {\r\n\r\n if (USE_FAB_FILTERS_ONLY) {\r\n// console.log(\"fabricator only filterGroups\", filterGroups.map(fg => {\r\n// return Object.assign ({}, fg, {\r\n// values: fg.values.filter(fgValue => fgValue.isFabricatorCustomFilter)\r\n// })\r\n// }).filter(fg => fg.values.length));\r\n filterGroups = filterGroups.filter(fg => {\r\n if (!Array.isArray(fg.values) || !fg.values.length) {\r\n return false\r\n }\r\n fg.values = fg.values.filter(fgValue => fgValue.isFabricatorCustomFilter);\r\n return fg.values.length\r\n })\r\n console.log(\"fabricator only filterGroups\", filterGroups);\r\n }\r\n return {\r\n type: types.LOAD_FILTERS,\r\n payload: filterGroups\r\n }\r\n};\r\n\r\nexport const setExpandedFilters = (expandedFilters) => ({\r\n type: types.SET_EXPANDED_FILTERS,\r\n payload: expandedFilters\r\n});\r\n\r\nexport const showFilters = (show = false, filterId = \"\") => ({\r\n type: types.SHOW_FILTERS,\r\n payload: {show, filterId}\r\n});\r\n\r\nexport const showFiltersIfHidden = (filterId = \"\") => ({\r\n type: types.SHOW_FILTERS_IF_NOT_VISIBLE,\r\n payload: filterId\r\n});\r\n\r\nexport const setFilterVisible = (filter) => ({\r\n type: types.SET_FILTER_VISIBLE,\r\n payload: filter\r\n});\r\n\r\n\r\n//********* MOBILE NAVIGATION COMMANDS *********/\r\nexport const loadMobileNav = (data) => ({\r\n type: types.LOAD_MOBILE_NAV,\r\n payload: data\r\n});\r\n\r\nexport const hideUserPopup = () => ({\r\n type: types.CHANGE_MESSAGE_BOX,\r\n payload: {\r\n visible: false,\r\n inline: false\r\n }\r\n});\r\n\r\nexport const showSchedulerPopup = show => {\r\n return {\r\n type: types.SHOW_SCHEDULER,\r\n payload: {show}\r\n }\r\n};\r\nexport const toggleConfirmPopup = (confirmPopupOpened, confirmPopupType) => ({\r\n type: types.TOGGLE_CONFIRM_POPUP,\r\n payload: {confirmPopupOpened, confirmPopupType}\r\n});\r\n\r\n//********* DOCU SIGN *********/\r\nexport const showDocuSign = (show, callback = null) => ({\r\n type: types.SHOW_DOCUSIGN,\r\n payload: {show, callback}\r\n});\r\n\r\nexport const showDeposit = (show, callback = null) => ({\r\n type: types.SHOW_DEPOSIT,\r\n payload: {show, callback}\r\n});\r\n\r\nconst _showCheckoutPopup = (fabricatorSettings) => {\r\n return new Promise((resolve) => {\r\n if (fabricatorSettings.checkout && fabricatorSettings.hasPaymentGateway) {\r\n store.dispatch(showCheckoutPopup(true));\r\n store.dispatch(showDocuSign(false, resolve)); // we need only callback from here\r\n } else {\r\n resolve();\r\n }\r\n });\r\n}\r\n\r\nconst _showDeposit = (fabricatorSettings) => {\r\n return new Promise((resolve) => {\r\n const state = store.getState();\r\n console.log(\"state__state\", state);\r\n if (fabricatorSettings.enableDeposit && (!fabricatorSettings.leadCaptureShoppingCart || state.unlockCalculationsState.unlockCalculationsTutorialIsFinished)) {\r\n store.dispatch(showDeposit(true, resolve))\r\n } else {\r\n resolve();\r\n }\r\n });\r\n}\r\n\r\nconst _showDocuSign = (fabricatorSettings) => {\r\n return new Promise((resolve) => {\r\n if (fabricatorSettings.enableDocuSign) {\r\n store.dispatch(showDocuSign(true, resolve))\r\n } else {\r\n resolve();\r\n }\r\n });\r\n}\r\n\r\nconst _showContractSigning = (fabricatorSettings) => {\r\n return new Promise((resolve) => {\r\n if (shouldUseContractSigning(fabricatorSettings)) {\r\n // store.dispatch(showContractSigning(true, resolve))\r\n hashHistory.push(ROUTES.contract);\r\n } else {\r\n resolve();\r\n }\r\n });\r\n};\r\n\r\nexport const checkForOrderCompletePopup = (fabricatorSettings) => {\r\n return new Promise((resolve) => {\r\n if (fabricatorSettings.checkout && (!fabricatorSettings.hasPaymentGateway || window.checkoutSuccess)) {\r\n store.dispatch(showOrderCompletePopup(true));\r\n }\r\n resolve();\r\n });\r\n}\r\n\r\nexport const showCheckoutLayout = (fabricatorSettings) => {\r\n let p = _showDeposit(fabricatorSettings)\r\n .then(() => _showDocuSign(fabricatorSettings))\r\n .then(() => _showCheckoutPopup(fabricatorSettings))\r\n .then(() => _showContractSigning(fabricatorSettings))\r\n .then(() => checkForOrderCompletePopup(fabricatorSettings));\r\n // .then(() => printReceipt(fabricatorSettings));\r\n return p.catch(console.error);\r\n}\r\n\r\n//********* QUOTING TOOL COMMANDS *********/\r\nexport const setQtCategoriesRequested = (qtCategoriesRequested) => ({\r\n type: types.SET_QT_CATEGORIES_REQUESTED,\r\n payload: {\r\n qtCategoriesRequested\r\n }\r\n});\r\nexport const setQtCategoriesLoaded = (qtCategoriesLoaded) => ({\r\n type: types.SET_QT_CATEGORIES_LOADED,\r\n payload: {\r\n qtCategoriesLoaded\r\n }\r\n});\r\nexport const setQtActiveCategory = (qtActiveCategory) => ({\r\n type: types.SET_QT_ACTIVE_CATEGORY,\r\n payload: {\r\n qtActiveCategory\r\n }\r\n});\r\n\r\nexport const setIntroVideo = (introVideo) => ({\r\n type: types.SET_INTRO_VIDEO,\r\n payload: introVideo\r\n})\r\n\r\nexport const updateCanvasCount = () => ({\r\n type: types.UPDATE_CANVAS_COUNT\r\n})\r\n\r\nexport const setPresetWasChangedByUser = (presetWasChangedByUser) => ({\r\n type: types.SET_PRESET_WAS_CHANGED_BY_USER,\r\n payload: {presetWasChangedByUser}\r\n})\r\n\r\nexport const setFirstLoadedPreset = (firstLoadedPreset) => ({\r\n type: types.SET_FIRST_LOADED_PRESET,\r\n payload: {firstLoadedPreset}\r\n})\r\n\r\nexport const addLayoutHistory = (layoutState) => ({\r\n type: types.ADD_LAYOUT_HISTORY,\r\n payload: {\r\n layoutState\r\n }\r\n});\r\n\r\nexport const setLayoutHistory = (layoutHistory) => ({\r\n type: types.SET_LAYOUT_HISTORY,\r\n payload: {\r\n layoutHistory\r\n }\r\n});\r\n","const __bucketName = 'kv3';\r\nlet _zoomLevel = 0;\r\n\r\nlet _isDemo = null;\r\nlet _isShowroomMode = false;\r\nlet _isTimeoutDisabled = false;\r\nlet _isTabletMode = false;\r\nlet _kioskConfigs = {};\r\nlet _userInfo = {};\r\nlet _kioskStandAlone = document.kvConfig && document.kvConfig.kioskMode && (\r\n// eslint-disable-next-line no-restricted-globals\r\n (parent && parent.window && parent.window.app && parent.window.app.db) ||\r\n// eslint-disable-next-line no-restricted-globals\r\n (parent.parent && parent.parent.window && parent.parent.window.app && parent.parent.window.app.db)\r\n);\r\n// eslint-disable-next-line no-restricted-globals\r\nlet _parent = parent || null;\r\n// eslint-disable-next-line no-restricted-globals\r\nif(_kioskStandAlone && parent && parent.parent && parent.parent.window && parent.parent.window.app)\r\n// eslint-disable-next-line no-restricted-globals\r\n _parent = parent.parent;\r\n\r\ntry {\r\n if(parent && parent.exitEditQuote) { //editing from dashboard\r\n _parent = parent;\r\n }\r\n} catch (e) {\r\n //console.log('Error accessing window.parent.property ', e)\r\n console.log('running in iframe on remote site');\r\n}\r\n\r\nexport const UseFullSizeImages = window.location.href.indexOf('fsi=') !== -1;\r\n\r\nexport const IS_OFFLINE_MODE = document.kvConfig.offlineMode || window.location.href.includes(\"offlineMode\");\r\nexport const USE_SERVER_CACHING = true;\r\nexport const AVAILABLE_VISUALIZERS = {\r\n Bathroom: \"Bathroom\",\r\n Kitchen: \"Kitchen\",\r\n Fireplace: \"Fireplace\",\r\n LaundryRoom: \"LaundryRoom\",\r\n};\r\nexport const BATHROOM_VISUALIZER_TYPES = [\"Bathroom\", \"BV\", \"bvScene\", \"bvLook\"];\r\nexport const AVAILABLE_VISUALIZER_TYPES = {\r\n Bathroom: \"Bathroom\", // toolVersion 4\r\n Kitchen: \"Kitchen\", // toolVersion 4\r\n kvScene: \"kvScene\", // toolVersion 5\r\n bvScene: \"bvScene\", // toolVersion 5\r\n bvLook: \"bvLook\", // toolVersion 5\r\n Fireplace: \"Fireplace\", // toolVersion 6\r\n LaundryRoom: \"LaundryRoom\", // toolVersion 6\r\n};\r\n\r\nexport const NAVIGATION_TYPES = {\r\n qkb: \"qkb\", // regular ui\r\n look: \"look\", // lixil 1\r\n product: \"product\", // lixil 2\r\n};\r\n\r\nexport const IS_LIXIL_SERVERS = window.location.host.includes(\"qkandb\")\r\n || window.location.host.includes(\"kbquote\")\r\n || window.location.host.includes(\"grohe\")\r\n || window.location.host.includes(\"americanstandard-us\")\r\n || (document.kvConfig.domain && document.kvConfig.domain.includes(\"qkandb.net\"))\r\n || (document.kvConfig.domain && document.kvConfig.domain.includes(\"kbquote.com\"));\r\n\r\nexport const IS_LIXIL_PRODUCTION = IS_LIXIL_SERVERS && !window.location.host.includes(\"qkandb\");\r\n\r\nif (IS_LIXIL_SERVERS && !document.kvConfig.devMode) {\r\n // document.kvConfig.toolVersion = 6;\r\n if (document.kvConfig.userId === 140818 && document.kvConfig.visualizerType === \"Kitchen\") {\r\n document.kvConfig.toolVersion = 5;\r\n }\r\n if (!window.location.href.includes(\"nav=\")) {\r\n document.kvConfig.navigationType = \"look\";\r\n }\r\n}\r\n\r\nexport const IS_PRODUCT_JOURNEY = document.kvConfig.navigationType === NAVIGATION_TYPES.product || window.location.href.includes(\"nav=product\");\r\nexport const IS_LOOK_JOURNEY = document.kvConfig.navigationType === NAVIGATION_TYPES.look || window.location.href.includes(\"nav=look\");\r\nexport const IS_LIXIL_UI = IS_PRODUCT_JOURNEY || IS_LOOK_JOURNEY;\r\nexport const IS_QKB_UI = document.kvConfig.navigationType === NAVIGATION_TYPES.qkb || !IS_LIXIL_UI;\r\nexport const IS_SUPER_ADMIN = (window.location.href.includes(\"a=1\") || document.kvConfig.isSuperAdmin)\r\n && (window.location.href.includes(\"quotekandb.com\") || (document.kvConfig.domain === \"https://quotekandb.com\"));\r\nexport const IS_DEALER_FLOW = window.location.href.includes(\"d=1\") || document.kvConfig.isDealerFlow;\r\n\r\nexport const USE_FAB_FILTERS_ONLY = window.location.href.includes(\"ff=1\");\r\nexport const IS_DASHBOARD_MESSAGING = window.location.href.indexOf('dashboardMessaging=true') !== -1;\r\n\r\nif (IS_PRODUCT_JOURNEY) {\r\n document.kvConfig.navigationType = NAVIGATION_TYPES.product;\r\n // document.body.classList.remove('theme-qc');\r\n document.body.classList.add('bv', 'theme-lixil', 'theme-grohe');\r\n} else if (IS_LOOK_JOURNEY) {\r\n document.kvConfig.navigationType = NAVIGATION_TYPES.look;\r\n // document.body.classList.remove('theme-qc');\r\n document.body.classList.add('bv', 'theme-lixil', 'theme-look');\r\n} else {\r\n document.kvConfig.navigationType = NAVIGATION_TYPES.qkb;\r\n document.body.classList.add('bv', 'theme-qc');\r\n}\r\n\r\nexport const getCommonVisualizerType = (visualizerType) => {\r\n const stringToCheck = visualizerType || document.kvConfig.visualizerType;\r\n switch (stringToCheck) {\r\n case \"Bathroom\":\r\n case \"BV\":\r\n case \"bvScene\":\r\n case \"bvLook\":\r\n return \"bathroom\";\r\n case \"Kitchen\":\r\n case \"KV\":\r\n case \"kvMaster\":\r\n case \"kvScene\":\r\n return \"kitchen\";\r\n case \"Fireplace\":\r\n return \"fireplace\";\r\n case \"LaundryRoom\":\r\n return \"laundryroom\";\r\n default:\r\n return (stringToCheck || \"\").toLowerCase()\r\n }\r\n}\r\n\r\nexport const AVAILABLE_LANGUAGES = [\"en-US\",\"en-AU\",\"fr-FR\",\"pl-PL\",\"es-ES\"];\r\nexport const POST_MESSAGES = {\r\n setIframeLanguage: \"SET_IFRAME_LANGUAGE\",\r\n userRegisterTrue: \"analytics_register_success\",\r\n userRegisterFalse: \"analytics_register_error\",\r\n userLoginTrue: \"analytics_login_success\",\r\n userLoginFalse: \"analytics_login_error\",\r\n};\r\n\r\nexport const IS_BATHROOM_OLD_BV_SCENE = window.location.href.includes(\"kitchen8k.quotesflooring\")\r\n || window.location.href.includes(\"bathroom_8k.quotekandb.com\");\r\n\r\nexport const REACT_APP_GOOGLE_API_KEY = \"AIzaSyCU0TUFdkbHi0O4yAUPMPxSC7tzyTy84AY\"; // same as the Solar app\r\n\r\n// export const USE_LIGHT_QT_CAT_REQUEST = (window.location.href.includes(\"quotekandb.com\") // not used anymore, old logic\r\n// || (document.kvConfig.domain === \"https://quotekandb.com\")\r\n// || IS_LIXIL_SERVERS);\r\n\r\n\r\nconst _isQTEmbedded = window.location.href.indexOf('qt=1') !== -1;\r\nconst _isTutorial = window.location.href.indexOf('intro=1') !== -1;\r\nconst _visMgmt = window.location.href.indexOf('visMgmt=1') !== -1;\r\nconst _isDevMode = (window.location.href.indexOf('dev=1') !== -1) || (document.kvConfig.devMode);\r\nconst _showAllVisualizerGroups = (window.location.href.indexOf('all=1') !== -1) || (document.kvConfig.showAllVisualizerGroups);\r\nconst _isMobile = (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)\r\n || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(navigator.userAgent.substr(0, 4)));\r\n\r\nexport const IS_AS_BATHROOM = (!window.location.href.includes(\"grohe\")\r\n && ([\"dev\", \"bravo2\"].every(subDom => (window.location.host || \"\").split(\".\")[0] !== subDom))) || _isDevMode;\r\n\r\nlet _subdomain = 'demo';\r\n\r\nif (_kioskStandAlone) {\r\n _parent.window.app.db.tables.config.getConfigs((configs) => {\r\n configs.forEach(c => {\r\n _kioskConfigs[c.key] = c.value;\r\n });\r\n console.log('kiosk_configs', _kioskConfigs);\r\n _isShowroomMode = _kioskConfigs['kv-showroom-mode'] || false;\r\n _isTimeoutDisabled = _kioskConfigs['kv-timeout-disabled'] || false;\r\n _isTabletMode = _kioskConfigs['tablet-mode'] || false;\r\n _subdomain = _kioskConfigs['subdomain'];\r\n });\r\n}\r\n\r\nconst Config = {\r\n AmazonS3: {\r\n bucketName: __bucketName,\r\n root: function() {\r\n if(_kioskStandAlone) {\r\n return \"file:///\" + encodeURI(_parent.window.app.userDataPath.replace(/\\\\/g, \"/\")) + \"/resources/\" + __bucketName + \"/\";\r\n }\r\n //return \"https://s3.amazonaws.com/\" + __bucketName + \"/\";\r\n return `http://${__bucketName}.s3.amazonaws.com/`;\r\n }()\r\n },\r\n getScriptPath: function() {\r\n let scripts = document.getElementsByTagName(\"script\");\r\n if(scripts && scripts.length) {\r\n for(let i = 0; i < scripts.length; i++) {\r\n let src = scripts[i].getAttribute('src');\r\n if(src && (src.includes(\"bundle.js\") || src.includes(\"bundle.min.js\"))) {\r\n return src.substring(0, src.lastIndexOf('/'));\r\n }\r\n }\r\n }\r\n },\r\n appRootNode: '.main-wrapper',\r\n layerSize: function () {\r\n return \"1620x1080\";\r\n\r\n //switch (_zoomLevel) {\r\n // case 0: return \"1620x1080\";\r\n // case 1: return \"2419x1613\";\r\n // case 2: return \"3218x2145\";\r\n // case 3: return \"4018x2678\";\r\n // case 4: return \"4817x3211\";\r\n // case 5: return \"\"; // it is actually 5616x3744, but we use the original image which is of this size and doesn't have the size suffix on S3\r\n // default: throw \"Unsupported zoom level: \" + _zoomLevel;\r\n //}\r\n },\r\n\r\n maxZoom: 10,\r\n zoomIn: () => {\r\n if (_zoomLevel < (this.maxZoom - 1)) {\r\n _zoomLevel++;\r\n }\r\n },\r\n\r\n zoomOut: () => {\r\n if (_zoomLevel > 0) {\r\n _zoomLevel--;\r\n }\r\n },\r\n\r\n zoomLevel: () => _zoomLevel,\r\n\r\n /**\r\n * Returns an object of current view size based on zoom level\r\n */\r\n viewSize: () => {\r\n const w = 1620 + (1620 * _zoomLevel / 100.0) * 5;\r\n\r\n return {width: parseInt(w, 10), height: parseInt(w * 0.666667, 10)};\r\n },\r\n demoUserDomains: ['demo', 'cosentino'],\r\n isDemo: function () {\r\n if (_isDemo !== null) {\r\n return _isDemo;\r\n }\r\n\r\n _isDemo = document.kvConfig &&\r\n document.kvConfig.kioskMode &&\r\n this.demoUserDomains.some((d) => document.kvConfig.subdomain.toLowerCase() === d);\r\n return _isDemo;\r\n },\r\n kioskStandAlone: _kioskStandAlone,\r\n kvConfig: document.kvConfig,\r\n isKiosk: document.kvConfig.kioskMode,\r\n isShowroomMode: () => { return _isShowroomMode; },\r\n isTimeoutDisabled: () => { return _isTimeoutDisabled; },\r\n isTabletMode: () => { return _isTabletMode; },\r\n getSubdomain: () => { return _subdomain; },\r\n isMobile: () => _isMobile,\r\n getParent: () => _parent,\r\n isQTEmbedded: () => _isQTEmbedded,\r\n isTutorial: () => _isTutorial,\r\n isDevMode: () => _isDevMode,\r\n showAllVisualizerGroups: () => _showAllVisualizerGroups,\r\n isVisualizerManagement: () => _visMgmt,\r\n parent: _parent,\r\n /**\r\n * Is filled after the customer logins\r\n */\r\n userInfo: () => _userInfo,\r\n /**\r\n * Set user info\r\n * @param userInfo {object}\r\n */\r\n setUserInfo: (userInfo) => _userInfo = userInfo,\r\n\r\n};\r\n\r\nexport default Config\r\n","import store from \"./store\";\r\nimport {IS_LIXIL_PRODUCTION} from \"./config\";\r\nimport {isIframe} from \"./misc/helpers\";\r\n\r\nfunction isAnalytics() {\r\n return (typeof window.ga !== 'undefined');\r\n}\r\n\r\nfunction isMixPanel() {\r\n return (typeof window.mixpanel !== 'undefined');\r\n}\r\n\r\nfunction isGtag() {\r\n return (typeof window.gtag !== 'undefined')\r\n}\r\n\r\nconst Analytics = {\r\n sendEvent: function(action, label, data) {\r\n if(window.analyticsDebugging)\r\n console.log('analytics tracking', action, label, data);\r\n if(isAnalytics()) {\r\n ga('send', 'event', 'bathroom-visualizer', action, label);\r\n }\r\n if(isGtag()) {\r\n gtag('event', action, {\r\n 'event_category': 'visualizer',\r\n 'event_label': label\r\n });\r\n }\r\n if(isMixPanel()) {\r\n mixpanel.track(action, {\r\n source: 'bathroom-visualizer',\r\n label: label,\r\n shareUrl: window.shareUrl,\r\n domain: window.location.host,\r\n ...data\r\n });\r\n }\r\n return true;\r\n },\r\n sendPageEvent: function(label, data) {\r\n return this.sendEvent('page-change-to', label, data);\r\n },\r\n sendDataEnteredEvent: function(label, data) {\r\n return this.sendEvent('data-entered', label, data);\r\n },\r\n sendClickEvent: function(label, data) {\r\n const {isMobile} = store.getState().serverState;\r\n if (isMobile) {\r\n label = `mobile-${label}`;\r\n }\r\n console.log(\"label\", label);\r\n return this.sendEvent('clicked-on', label, data);\r\n },\r\n sendEcommerceEvent: function(action, data) {\r\n if (!IS_LIXIL_PRODUCTION) {\r\n return false\r\n }\r\n console.log(\"analytics ecommerce event:\", action, data);\r\n if (window.gtag) {\r\n window.gtag('event', action, data); // https://support.google.com/analytics/answer/9267735#online-sales\r\n }\r\n return true;\r\n },\r\n setUserId: function(userId) {\r\n if(isAnalytics()) {\r\n ga('set', 'userId', userId);\r\n }\r\n },\r\n setMixPanelPerson: function(email, name, phone) {\r\n if(isMixPanel()) {\r\n if(window.analyticsDebugging)\r\n console.log('set mixpanel identity', email, name, phone);\r\n mixpanel.alias(email);\r\n mixpanel.identify(email);\r\n mixpanel.people.set({'$email': email, '$created': new Date(),'$name': name, '$phone':phone});\r\n }\r\n },\r\n setExistingMixPanelPerson: function(email) {\r\n if(isMixPanel()) {\r\n if(window.analyticsDebugging)\r\n console.log(\"set existing mixpanel identity\");\r\n mixpanel.identify(email);\r\n }\r\n },\r\n logOutMixPanel: function() {\r\n if(window.analyticsDebugging)\r\n console.log('reset mixpanel identity', email, name, phone);\r\n if(isMixPanel()) {\r\n mixpanel.reset();\r\n }\r\n },\r\n sendParentPostMessage: function (action) {\r\n if (!isIframe() || !window.parent) {\r\n return\r\n }\r\n const {country, email, firstName, phoneNumber, postal} = store.getState().userState.userInfo;\r\n window.parent.postMessage({\r\n action,\r\n payload: {country, email, firstName, phoneNumber, postal},\r\n }, \"*\");\r\n },\r\n getSkuForAnalytics: function(feature, withPartId = true) {\r\n const sku = feature.dbFeature.sku || feature.dbFeature.sharedFeatureName;\r\n return withPartId\r\n ? feature.partId + \"-\" + sku.replace(/ /gi, \"_\")\r\n : sku.replace(/ /gi, \"_\")\r\n },\r\n getStringForAnalytics: function(string = \"\") {\r\n return string.replace(/ /gi, \"_\")\r\n },\r\n}\r\n\r\nexport const QKB_ANALYTIC_EVENTS = {\r\n quotingToolWizardSwitch: \"quotingtool-wizard-switch-\",\r\n}\r\n\r\nexport const LOOK_JOURNEY_ANALYTIC_EVENTS = {\r\n lookExit: \"look-exit\",\r\n lookCartButton: \"look-cart-button\",\r\n lookSidebarHome: \"look-sidebar-home\",\r\n lookSidebarFilters: \"look-sidebar-filters\",\r\n lookSidebarEdit: \"look-sidebar-edit\",\r\n lookSidebarRooms: \"look-sidebar-rooms\",\r\n lookSidebarPingPilot: \"look-sidebar-ping-pilot\",\r\n lookSidebarSave: \"look-sidebar-save\",\r\n lookSidebarMore: \"look-sidebar-more\",\r\n lookSidebarShare: \"look-sidebar-share\",\r\n lookSidebarReset: \"look-sidebar-reset\",\r\n lookSidebarFacebook: \"look-sidebar-facebook\",\r\n lookSidebarTwitter: \"look-sidebar-twitter\",\r\n lookSidebarPinterest: \"look-sidebar-pinterest\",\r\n lookSidebarFeatureGroup: \"look-sidebar-feature-group-\",\r\n lookFooterExpandMenu: \"look-footer-expand-menu\",\r\n lookFooterCloseMenu: \"look-footer-close-menu\",\r\n lookMenuHeaderClose: \"look-menu-header-close\",\r\n lookMenuHeaderBack: \"look-menu-header-back\",\r\n lookMenuHeaderViewType: \"look-menu-header-view-type-\",\r\n lookFooterList: \"look-footer-your-list\",\r\n lookZoomPlus: \"look-zoom-plus\",\r\n lookZoomMinus: \"look-zoom-minus\",\r\n lookCanvasLayer: \"look-canvas-layer-\",\r\n lookCanvasContextMenu: \"look-canvas-context-menu-\",\r\n lookCanvasContextMenuItem: \"look-canvas-context-menu-item-\",\r\n lookCanvasDemoPoint: \"look-canvas-demo-point-\",\r\n lookFeatureImageChangeLeft: \"look-feature-image-change-left\",\r\n lookFeatureImageChangeRight: \"look-feature-image-change-right\",\r\n lookFeature3dAndArOpen: \"look-feature-3d-and-ar-open\",\r\n lookFeature3dAndArClose: \"look-feature-3d-and-ar-close\",\r\n lookFeatureMoreInfoOpen: \"look-feature-more-info-open\",\r\n lookFeatureMoreInfoClose: \"look-feature-more-info-close\",\r\n lookFeatureInfoContentHeaderClose: \"look-feature-info-content-header-close\",\r\n lookFeatureInfoContent3dAr: \"look-feature-info-content-3d-ar\",\r\n lookFeatureInfoContentSwitch: \"look-feature-info-content-switch-\",\r\n lookFeatureInfoContentFeatureLink: \"look-feature-info-content-feature-link-\",\r\n lookFeatureInfoContentAccordionOpen: \"look-feature-info-content-accordion-open-\",\r\n lookFeatureInfoContentAccordionClose: \"look-feature-info-content-accordion-close-\",\r\n lookFeatureChange: \"look-feature-change\",\r\n lookFeatureUnlock: \"look-feature-unlock\",\r\n lookFeatureRemove: \"look-feature-remove-\",\r\n lookFeatureEnable: \"look-feature-enable-\",\r\n lookFeatureConfirmChange: \"look-feature-confirm-change\",\r\n lookFeatureOptions: \"look-feature-options-\",\r\n lookFeatureMatchColorsCheckbox: \"look-feature-match-colors-checkbox-\",\r\n lookFeatureMobile3dButton: \"look-feature-mobile-3d-button\",\r\n lookFeaturesListDesignRecommended: \"look-features-list-design-recommended-\",\r\n lookFeaturesList: \"look-features-list-\",\r\n lookFeaturesFiltersClose: \"look-features-filters-close\",\r\n lookFeaturesFiltersReset: \"look-features-filters-reset\",\r\n lookFeaturesFiltersAccordionOpen: \"look-features-filters-filter-group-open-\",\r\n lookFeaturesFiltersAccordionClose: \"look-features-filters-filter-group-close-\",\r\n lookFeaturesFiltersValueChecked: \"look-features-filters-filter-value-checked-\",\r\n lookFeaturesFiltersValuerUnChecked: \"look-features-filters-filter-value-unchecked-\",\r\n lookOverlayLeave: \"look-overlay-leave\",\r\n lookOverlaySave: \"look-overlay-save\",\r\n lookPopupLogin: \"look-popup-login\",\r\n lookRoom: \"look-room-\",\r\n lookLeadCapturePopupLogin: \"look-lead-capture-popup-login\",\r\n lookLeadCapturePopupRegister: \"look-lead-capture-popup-register\",\r\n lookLeadCapturePopupForgotPassword: \"look-lead-capture-popup-forgot-password\",\r\n lookLeadCapturePopupTwoFAResendCode: \"look-lead-capture-popup-two-fa-resend-code\",\r\n lookLeadCapturePopupTwoFAReceiveCall: \"look-lead-capture-popup-two-fa-receive-call\",\r\n lookLeadCapturePopupTwoFAUpdatePhone: \"look-lead-capture-popup-two-fa-update-phone\",\r\n lookMobileActiveFeatureButton: \"look-mobile-active-feature-button\",\r\n lookMobileListClose: \"look-mobile-list-close\",\r\n lookIntroLearnToUse: \"look-intro-learn-to-use\",\r\n lookIntroStartDesign: \"look-intro-start-design\",\r\n lookIntroSkip: \"look-intro-skip-on-step-\",\r\n lookIntroFinalStepStartDesign: \"look-intro-final-step-start-design\",\r\n lookIntroPagination: \"look-intro-pagination-\",\r\n lookIntroNextStep: \"look-intro-next-step-\",\r\n lookRoomIdeasOnIntro: \"look-room-ideas-on-intro\",\r\n lookRoomIdeasOpen: \"look-room-ideas-open\",\r\n lookRoomIdeasClose: \"look-room-ideas-close\",\r\n lookRoomIdeasPreset: \"look-room-ideas-preset-\",\r\n lookMainCategory: \"look-main-category-\",\r\n lookCanvasPolicyLinks: \"look-canvas-policy-links-\",\r\n lookListPolicyLinks: \"look-list-policy-links-\",\r\n lookListHeaderSave: \"look-list-header-save\",\r\n lookListBackToCustomize: \"look-list-back-to-customize\",\r\n lookListAddToCart: \"look-list-add-to-cart\",\r\n lookListOpenMiniCart: \"look-list-open-mini-cart\",\r\n lookListSelectAllItems: \"look-list-select-all-items-\",\r\n lookListCartItemSelect: \"look-list-cart-item-\",\r\n lookListCartItemQuantityChange: \"look-list-cart-item-quantity-\",\r\n lookListCartItemRemove: \"look-list-cart-item-remove-\",\r\n lookListCartItemMoreDropdown: \"look-list-cart-item-more-dropdown-\",\r\n lookListCartItemMoreDropdownWishlist: \"look-list-cart-item-more-dropdown-wishlist-\",\r\n lookListCartItemMoreDropdownChange: \"look-list-cart-item-more-dropdown-change-\",\r\n lookStylePopupConfirmRemove: \"look-style-popup-confirm-remove\",\r\n lookStylePopupRemoveBackContinue: \"look-style-popup-remove-back-continue\",\r\n lookStylePopupRemoveBack: \"look-style-popup-remove-back\",\r\n lookStylePopupConfirm: \"look-style-popup-confirm\",\r\n lookPopupSaveSuccessSubmit: \"look-popup-save-success-submit\",\r\n lookPopupSaveResetSubmit: \"look-popup-reset-submit\",\r\n lookPopupChangeViewSubmit: \"look-popup-change-view-submit\",\r\n lookMenuWizard: \"look-menu-wizard-\",\r\n lookWizardParent: \"look-wizard-parent-\",\r\n lookWizardListFeature: \"look-wizard-list-feature-\",\r\n lookWizardListFilter: \"look-wizard-list-filter-\",\r\n lookWizardMatchAll: \"look-wizard-match-all-\",\r\n lookWizardCompletedClose: \"look-wizard-completed-close\",\r\n lookShowCompatabilityAlert: \"look-show-compatability-alert\",\r\n lookCloseCompatabilityAlert: \"look-close-compatability-alert\",\r\n lookCloseAndApplyCompatabilityAlert: \"look-close-and-apply-compatability-alert\",\r\n lookLockedButton: \"look-locked-button\",\r\n lookSidebarRevertCtrlZ: \"look-sidebar-revert-or-ctrl-z\",\r\n}\r\n\r\nexport const PRODUCT_JOURNEY_ANALYTIC_EVENTS = {\r\n productTopButtonsShop: \"product-top-buttons-shop\",\r\n productTopButtonsExit: \"product-top-buttons-exit\",\r\n productTopButtonsMenu: \"product-top-buttons-menu\",\r\n productTopButtonsShare: \"product-top-buttons-share-\",\r\n productTopButtonsPingPilot: \"product-top-buttons-ping-pilot\",\r\n productTopButtonsShareFacebook: \"product-top-buttons-share-facebook\",\r\n productTopButtonsShareTwitter: \"product-top-buttons-share-twitter\",\r\n productTopButtonsSharePinterest: \"product-top-buttons-share-pinterest\",\r\n productTopButtonsSave: \"product-top-buttons-save\",\r\n productCanvasLayer: \"product-canvas-layer-\",\r\n productCanvasContextMenu: \"product-canvas-context-menu-\",\r\n productCanvasContextMenuItem: \"product-canvas-context-menu-item-\",\r\n productCanvasDemoPoint: \"product-canvas-demo-point-\",\r\n productSidebarHeaderAllProducts: \"product-sidebar-header-all-products\",\r\n productSidebarHeaderRoomLayouts: \"product-sidebar-header-room-layouts\",\r\n productSidebarHeaderCart: \"product-sidebar-header-cart\",\r\n productSidebarCategory: \"product-sidebar-category-\",\r\n productFeatureChange: \"product-feature-change\",\r\n productFeatureImageChangeLeft: \"product-feature-image-change-left\",\r\n productFeatureImageChangeRight: \"product-feature-image-change-right\",\r\n productFeatureMoreInfoOpen: \"product-feature-more-info-open\",\r\n productFeatureMoreInfoClose: \"product-feature-more-info-close\",\r\n productFeatureInfoContentAccordionOpen: \"product-feature-info-content-accordion-open-\",\r\n productFeatureInfoContentAccordionClose: \"product-feature-info-content-accordion-close-\",\r\n productFeatureQuantityChange: \"product-feature-quantity-change\",\r\n productFeatureRemove: \"product-feature-remove-\",\r\n productFeatureEnable: \"product-feature-enable-\",\r\n productFeature3dAndArOpen: \"product-feature-3d-and-ar-open\",\r\n productFeature3dAndArClose: \"product-feature-3d-and-ar-close\",\r\n productFeatureInfoContentHeaderClose: \"product-feature-info-content-header-close\",\r\n productFeatureInfoContent3dAr: \"product-feature-info-content-3d-ar\",\r\n productFeatureInfoContentSwitch: \"product-feature-info-content-switch-\",\r\n productFeatureInfoContentFeatureLink: \"product-feature-info-content-feature-link-\",\r\n productFeatureUnlockNow: \"product-feature-unlock-now\",\r\n productFeatureLockedBadge: \"product-feature-locked-badge\",\r\n productFeatureLocked3DButton: \"product-feature-locked-3d-button\",\r\n productFeatureSQFT: \"product-feature-sqft\",\r\n productFeatureAddToCart: \"product-feature-add-to-cart-\",\r\n productFeatureContinueShopping: \"product-feature-continue-shopping\",\r\n productFeatureCloseProductsList: \"product-feature-close-features-list\",\r\n productFeatureOptions: \"product-feature-options-\",\r\n productFeatureMobile3dButton: \"product-feature-mobile-3d-button\",\r\n productFeaturesNext: \"product-features-next-\",\r\n productFeaturesList: \"product-features-list-\",\r\n productFeaturesListViewType: \"product-features-list-view-type-\",\r\n productFeaturesFiltersClose: \"product-features-filters-close\",\r\n productFeaturesFiltersReset: \"product-features-filters-reset\",\r\n productFeaturesFiltersAccordionOpen: \"product-features-filters-filter-group-open-\",\r\n productFeaturesFiltersAccordionClose: \"product-features-filters-filter-group-close-\",\r\n productFeaturesFiltersValueChecked: \"product-features-filters-filter-value-checked-\",\r\n productFeaturesFiltersValuerUnChecked: \"product-features-filters-filter-value-unchecked-\",\r\n productSimilarListClose: \"product-similar-list-close\",\r\n productSimilarListTitle: \"product-similar-list-title\",\r\n productSimilarListFeature: \"product-similar-list-feature-\",\r\n productSimilarListFeatureAddToCart: \"product-similar-list-feature-add-to-cart-\",\r\n productOverlayLeave: \"product-overlay-leave\",\r\n productOverlaySave: \"product-overlay-save\",\r\n productPopupLogin: \"product-popup-login\",\r\n productMatchColorsVisualizeAllCheckbox: \"product-match-colors-visualize-all-checkbox-\",\r\n productRoom: \"product-room-\",\r\n productRoomLayouts: \"product-room-layouts\",\r\n productRoomIdeas: \"product-room-ideas\",\r\n productRoomIdeasPreset: \"product-room-ideas-preset-\",\r\n productFiltersOpen: \"product-filters-open\",\r\n productMenuFooterButton: \"product-menu-footer-button\",\r\n productPopupSaveSuccessSubmit: \"product-popup-save-success-submit\",\r\n productPopupResetSubmit: \"product-popup-reset-submit\",\r\n productPopupChangeViewSubmit: \"product-popup-change-view-submit\",\r\n roomsRoomLayouts: \"rooms-room-layouts\",\r\n roomsRoomIdeas: \"rooms-room-ideas\",\r\n cartCheckoutLogin: \"cart-checkout-login\",\r\n cartCheckoutRegister: \"cart-checkout-register\",\r\n cartCheckoutSuccessContinueShopping: \"cart-checkout-success-continue-shopping\",\r\n cartCheckoutSuccessViewAll: \"cart-checkout-success-view-all-\",\r\n cartCheckoutSuccessFeature: \"cart-checkout-success-feature-\",\r\n cartTermsAccept: \"cart-terms-accept\",\r\n cartTwoFANext: \"cart-two-fa-next\",\r\n cartTwoFAUpdatePhone: \"cart-two-fa-update-phone\",\r\n cartTwoFAResendCode: \"cart-two-fa-resend-code\",\r\n cartTwoFAReceiveCall: \"cart-two-fa-receive-call\",\r\n leadCapturePopupLogin: \"lead-capture-popup-login\",\r\n leadCapturePopupRegister: \"lead-capture-popup-register\",\r\n leadCapturePopupForgotPassword: \"lead-capture-popup-forgot-password\",\r\n leadCapturePopupTwoFAResendCode: \"lead-capture-popup-two-fa-resend-code\",\r\n leadCapturePopupTwoFAReceiveCall: \"lead-capture-popup-two-fa-receive-call\",\r\n leadCapturePopupTwoFAUpdatePhone: \"lead-capture-popup-two-fa-update-phone\",\r\n productLockedButton: \"product-locked-button\",\r\n shopFeaturesList: \"shop-features-list-\",\r\n shopFeaturesListOptions: \"shop-features-list-options-\",\r\n shopFeatureOptions: \"shop-feature-options-\",\r\n shopFeatureAddToCart: \"shop-feature-add-to-cart-\",\r\n shopHelpChat: \"shop-help-chat\",\r\n shopSQFTButton: \"shop-feature-sqft\",\r\n}\r\n\r\nexport default Analytics\r\n","import {createStore, applyMiddleware, compose} from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport {reducers} from './reducers';\r\n\r\n// const reduxDevtoolsExtensionOptions = {\r\n// actionSanitizer: (action) => { // https://github.com/zalmoxisus/redux-devtools-extension/blob/master/docs/API/Arguments.md#actionsanitizer--statesanitizer\r\n// console.log('action', action);\r\n// return action\r\n// },\r\n// trace: true,\r\n// traceLimit: 25\r\n// };\r\n\r\nconst createStoreWithMiddleware = compose(\r\n applyMiddleware(\r\n thunk\r\n ),\r\n window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__() : f => f\r\n // window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__(reduxDevtoolsExtensionOptions) : f => f\r\n)(createStore);\r\n\r\n\r\n// const store = createStore(\r\n// reducers,\r\n// window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()\r\n// );\r\n\r\nconst store = createStoreWithMiddleware(reducers);\r\n\r\nexport default store;\r\n","import {layout as bvLayout} from \"../bvcomponents/bvComponent/bathroomVisualizer\";\r\nimport {layout as kvLayout} from \"../bvcomponents/kvComponent/kitchenVisualizer\";\r\n// import {layout as kvMasterLayout} from \"../bvcomponents/kvMasterComponent/kvMasterVisualizer\";\r\nimport {layout as kvSceneLayout} from \"../bvcomponents/kvSceneComponent/kvSceneVisualizer\";\r\nimport {layout as bvSceneLayout} from \"../bvcomponents/bvSceneComponent/bvSceneVisualizer\";\r\nimport {layout as bvLookLayout} from \"../bvcomponents/look/lookVisualizer\";\r\nimport {layout as fireplaceLayout} from \"../bvcomponents/fireplace/fireplaceVisualizer\";\r\nimport laundryRoomLayout from \"../bvcomponents/commonVisualizer/core/laundryRoomLayout\";\r\n\r\nimport {Layout as bvLayoutInstance} from \"../bvcomponents/bvComponent/core/layout\";\r\nimport {Layout as kvLayoutInstance} from \"../bvcomponents/kvComponent/core/layout\";\r\n// import {Layout as kvMasterLayoutInstance} from \"../bvcomponents/kvMasterComponent/core/layout\";\r\nimport {Layout as kvSceneLayoutInstance} from \"../bvcomponents/kvSceneComponent/core/layout\";\r\nimport {Layout as bvSceneLayoutInstance} from \"../bvcomponents/bvSceneComponent/core/layout\";\r\nimport {Layout as bvLookLayoutInstance} from \"../bvcomponents/look/core/layout\";\r\nimport {Layout as fireplaceLayoutInstance} from \"../bvcomponents/fireplace/core/layout\";\r\nimport {LaundryRoomLayout as laundryRoomLayoutInstance} from \"../bvcomponents/commonVisualizer/core/laundryRoomLayout\";\r\n\r\nimport ImageCanvasCommon from \"./visComponents/imageCanvasCommon\";\r\nimport ImageCanvasCommonNew from \"./visComponents/imageCanvasCommonNew\";\r\n\r\nimport bvZIndexes from \"../bvcomponents/bvComponent/core/parts/zIndex\";\r\nimport kvZIndexes from \"../bvcomponents/kvComponent/core/zIndex\";\r\n// import kvMasterZIndexes from \"../bvcomponents/kvMasterComponent/core/zIndex\";\r\nimport kvSceneZIndexes from \"../bvcomponents/kvSceneComponent/core/zIndex\";\r\nimport bvSceneZIndexes from \"../bvcomponents/bvSceneComponent/core/zIndex\";\r\nimport bvLookZIndexes from \"../bvcomponents/look/core/zIndex\";\r\nimport fireplaceZIndexes from \"../bvcomponents/fireplace/core/zIndex\";\r\n\r\nimport {AVAILABLE_VISUALIZER_TYPES, getCommonVisualizerType} from \"../config\";\r\nimport {LOOK_ROOM_TYPES} from \"./look/core/constants\";\r\nimport {COUNTERTOP_LABELS} from \"./sqft/constants\";\r\n\r\nexport const getCurrentLayout = (visualizerType = document.kvConfig.visualizerType) => { // layout should be dynamic (could be switched)\r\n switch (visualizerType) {\r\n case \"Kitchen\":\r\n case \"KV\":\r\n return kvLayout;\r\n case \"Bathroom\":\r\n case \"BV\":\r\n return bvLayout;\r\n // case \"kvMaster\":\r\n // return kvMasterLayout;\r\n case \"kvScene\":\r\n case \"KitchenV5\":\r\n return kvSceneLayout;\r\n case \"bvScene\":\r\n case \"BathroomV5\":\r\n return bvSceneLayout;\r\n case \"bvLook\":\r\n case \"BathroomV6\":\r\n return bvLookLayout;\r\n case \"Fireplace\":\r\n return fireplaceLayout;\r\n case \"LaundryRoom\":\r\n return laundryRoomLayout;\r\n default:\r\n // console.trace(\"Incorrect layout selected (document.kvConfig.visualizerType)\");\r\n return null\r\n }\r\n};\r\n\r\nexport const getCurrentLayoutInstance = (visualizerType = document.kvConfig.visualizerType) => { // is used for creating fake layouts (to show layouts, scenes, etc.), to show thumbnails\r\n switch (visualizerType) {\r\n case \"Kitchen\":\r\n case \"KV\":\r\n return kvLayoutInstance;\r\n case \"Bathroom\":\r\n case \"BV\":\r\n return bvLayoutInstance;\r\n // case \"kvMaster\":\r\n // return kvMasterLayoutInstance;\r\n case \"kvScene\":\r\n return kvSceneLayoutInstance;\r\n case \"bvScene\":\r\n return bvSceneLayoutInstance;\r\n case \"bvLook\":\r\n return bvLookLayoutInstance;\r\n case \"Fireplace\":\r\n return fireplaceLayoutInstance;\r\n case \"LaundryRoom\":\r\n return laundryRoomLayoutInstance;\r\n default:\r\n // console.trace(\"Incorrect layout selected (document.kvConfig.visualizerType)\");\r\n return null\r\n }\r\n};\r\n\r\nexport const getCurrentCanvas = (visualizerType = document.kvConfig.visualizerType) => { // layout should be dynamic (could be switched)\r\n switch (visualizerType) {\r\n case \"Kitchen\":\r\n case \"KV\":\r\n case \"kvMaster\":\r\n case \"Bathroom\":\r\n case \"BV\":\r\n case \"bvScene\":\r\n return ImageCanvasCommon;\r\n case \"bvLook\":\r\n case \"kvScene\":\r\n case \"Fireplace\":\r\n case \"LaundryRoom\":\r\n default:\r\n return ImageCanvasCommonNew;\r\n }\r\n};\r\n\r\n\r\nexport const getCurrentZIndexes = (visualizerType = document.kvConfig.visualizerType) => {\r\n switch (visualizerType) {\r\n case \"Kitchen\":\r\n case \"KV\":\r\n return kvZIndexes;\r\n case \"Bathroom\":\r\n case \"BV\":\r\n return bvZIndexes;\r\n // case \"kvMaster\":\r\n // return kvMasterZIndexes;\r\n case \"kvScene\":\r\n return kvSceneZIndexes;\r\n case \"bvScene\":\r\n return bvSceneZIndexes;\r\n case \"bvLook\":\r\n return bvLookZIndexes;\r\n case \"Fireplace\":\r\n case \"LaundryRoom\":\r\n return fireplaceZIndexes;\r\n default:\r\n // console.trace(\"Incorrect layout selected (document.kvConfig.visualizerType)\");\r\n return null\r\n }\r\n};\r\n\r\n/**\r\n * Returns the fake created layout,\r\n * @param asLayout {object}\r\n * @param type {number} to filter features for this specific layout\r\n * @param scene {string} to filter features for this specific scene\r\n * @returns {object}\r\n */\r\nexport const createFakeLayout = (asLayout = getCurrentLayout(), type, scene) => {\r\n const LayoutInstance = getCurrentLayoutInstance(asLayout.visualizerType);\r\n const fakeLayout = new LayoutInstance();\r\n fakeLayout.isFakeLayout = true;\r\n const parentGroups = fakeLayout.getFeatures(true);\r\n let needToLoadFeatures = {};\r\n if (type || scene) {\r\n Object.keys(asLayout.allDbFeatures).forEach(groupName => {\r\n needToLoadFeatures[groupName] = asLayout.allDbFeatures[groupName].filter(dbFeature => {\r\n if (!dbFeature.s3Bindings || !dbFeature.metaData) {\r\n return false\r\n }\r\n if (type && !dbFeature.metaData.RoomLayout || !dbFeature.metaData.RoomLayout.includes(type)) {\r\n return false\r\n }\r\n if (asLayout.isNewLayout && scene && !dbFeature.metaData.RoomScene || !dbFeature.metaData.RoomScene.includes(scene)) {\r\n return false\r\n }\r\n return true\r\n })\r\n })\r\n } else {\r\n needToLoadFeatures = asLayout.allDbFeatures;\r\n }\r\n // console.log(\"asLayout.allDbFeatures\", asLayout.allDbFeatures);\r\n // console.log(\"needToLoadFeatures\", needToLoadFeatures);\r\n Object.keys(asLayout.allDbFeatures).forEach(groupName => {\r\n for (let i = 0; i < asLayout.allDbFeatures[groupName].length; i++) {\r\n fakeLayout.loadDbFeature(asLayout.allDbFeatures[groupName][i], parentGroups, null)\r\n }\r\n })\r\n fakeLayout.createCustomConfigurations(); // set shower body first\r\n fakeLayout.setDefaultFeatures();\r\n fakeLayout.initialized = true;\r\n return fakeLayout\r\n};\r\n\r\n/**\r\n * Returns the visualizer type from saved quote\r\n * @param bvScene {object} main object that passed between backend and frontend\r\n // * @param quoteObject {object} not required // main parent quote(room) object that passed between backend and frontend\r\n * @returns {string}\r\n */\r\nexport const getVisualizerTypeFromBvScene = (bvScene) => {\r\n if (bvScene.visualizerType) {\r\n return bvScene.visualizerType // this should be the most common case, but we still need to support old quotes :(\r\n }\r\n if (bvScene.bathroom_floor || bvScene.shower_body) {\r\n switch (document.kvConfig.toolVersion) {\r\n case 6:\r\n return AVAILABLE_VISUALIZER_TYPES.bvLook\r\n case 5:\r\n return AVAILABLE_VISUALIZER_TYPES.bvScene\r\n case 4:\r\n default:\r\n return AVAILABLE_VISUALIZER_TYPES.Bathroom\r\n }\r\n }\r\n if (bvScene.kitchen_floor) {\r\n return document.kvConfig.toolVersion === 5 ? AVAILABLE_VISUALIZER_TYPES.kvScene : AVAILABLE_VISUALIZER_TYPES.Kitchen\r\n }\r\n // return quoteObject ? quoteObject.room : \"\"\r\n return document.kvConfig.visualizerType\r\n};\r\n\r\n/**\r\n * @param layout {object}\r\n */\r\nexport const getCurrentRoomType = (layout = getCurrentLayout()) => {\r\n if (layout.type >= 10) {\r\n return LOOK_ROOM_TYPES.as\r\n }\r\n return LOOK_ROOM_TYPES.grohe\r\n // return IS_AS_BATHROOM ? LOOK_ROOM_TYPES.as : LOOK_ROOM_TYPES.grohe\r\n};\r\n\r\n\r\n/**\r\n * @param layout {object}\r\n * @returns featureGroup {featureGroupInterface}\r\n */\r\nexport const getCountertopFeatureGroup = (layout = getCurrentLayout(), ) => {\r\n let mainNeeded, oppositeNeeded;\r\n switch (getCommonVisualizerType(layout.visualizerType)) {\r\n case \"kitchen\":\r\n mainNeeded = \"center_island_countertop\";\r\n oppositeNeeded = \"countertop\";\r\n break;\r\n case \"bathroom\":\r\n mainNeeded = COUNTERTOP_LABELS.shower_wall;\r\n oppositeNeeded = \"vanity_countertop\";\r\n break;\r\n case \"fireplace\":\r\n mainNeeded = \"front_wall\";\r\n break;\r\n default:\r\n mainNeeded = \"countertop\";\r\n break;\r\n }\r\n let featureGroupCountertop = layout.getSubPartFromQtCategories(mainNeeded);\r\n if (!featureGroupCountertop && oppositeNeeded) {\r\n featureGroupCountertop = layout.getSubPartFromQtCategories(oppositeNeeded);\r\n }\r\n if (featureGroupCountertop) {\r\n return featureGroupCountertop.part\r\n }\r\n\r\n return layout.getFeatureGroupByPartId(mainNeeded) || (oppositeNeeded ? layout.getFeatureGroupByPartId(oppositeNeeded) : null)\r\n}\r\n","import {ROUTES} from \"../../../routes\";\r\n\r\nexport const LayoutType = {\r\n Layout1: 1,\r\n Layout2: 2,\r\n Layout3: 3,\r\n Layout4: 4,\r\n Layout5: 5,\r\n Layout6: 6,\r\n Layout7: 7,\r\n Layout8: 8,\r\n Layout9: 9,\r\n Layout10: 10,\r\n Layout11: 11,\r\n Layout12: 12,\r\n Layout13: 13,\r\n Layout14: 14,\r\n Layout15: 15,\r\n Layout16: 16,\r\n Layout17: 17,\r\n Layout18: 18,\r\n Layout19: 19,\r\n Layout20: 20,\r\n};\r\n\r\nexport const LayoutAbbreviation = {\r\n All: \"ALL\",\r\n Layout1: \"Layout1\",\r\n Layout2: \"Layout2\",\r\n Layout3: \"Layout3\",\r\n Layout4: \"Layout4\",\r\n Layout5: \"Layout5\",\r\n Layout6: \"Layout6\",\r\n Layout7: \"Layout7\",\r\n Layout8: \"Layout8\",\r\n Layout9: \"Layout9\",\r\n Layout10: \"Layout10\",\r\n Layout11: \"Layout11\",\r\n Layout12: \"Layout12\",\r\n Layout13: \"Layout13\",\r\n Layout14: \"Layout14\",\r\n Layout15: \"Layout15\",\r\n Layout16: \"Layout16\",\r\n Layout17: \"Layout17\",\r\n Layout18: \"Layout18\",\r\n Layout19: \"Layout19\",\r\n Layout20: \"Layout20\",\r\n};\r\n\r\nexport const LayoutAbbreviations = [\r\n \"Layout1\",\r\n \"Layout2\",\r\n \"Layout3\",\r\n \"Layout4\",\r\n \"Layout5\",\r\n \"Layout6\",\r\n \"Layout7\",\r\n \"Layout8\",\r\n \"Layout9\",\r\n \"Layout10\",\r\n \"Layout11\",\r\n \"Layout12\",\r\n \"Layout13\",\r\n \"Layout14\",\r\n \"Layout15\",\r\n \"Layout16\",\r\n \"Layout17\",\r\n \"Layout18\",\r\n \"Layout19\",\r\n \"Layout20\",\r\n];\r\nexport const LayoutAbbreviationsToRemove = [\r\n \"Layout20\",\r\n \"Layout19\",\r\n \"Layout18\",\r\n \"Layout17\",\r\n \"Layout16\",\r\n \"Layout15\",\r\n \"Layout14\",\r\n \"Layout13\",\r\n \"Layout12\",\r\n \"Layout11\",\r\n \"Layout10\",\r\n \"Layout9\",\r\n \"Layout8\",\r\n \"Layout7\",\r\n \"Layout6\",\r\n \"Layout5\",\r\n \"Layout4\",\r\n \"Layout3\",\r\n \"Layout2\",\r\n \"Layout1\",\r\n];\r\n\r\nexport const METADATA = {\r\n ALL: \"ALL\",\r\n NO: \"NO\",\r\n LeftSide: \"L\", // used as side for shower grab bars\r\n RightSide: \"R\", // used as side for shower grab bars\r\n Center: \"C\", // used as side for shower doors and others\r\n Inner: \"T\", // used for sinks & faucets\r\n Outer: \"S\", // used for sinks & faucets,\r\n StandAlone: \"ST\", // used for sinks & faucets,\r\n SingleHole: \"Single Hole Faucets\", // used for sinks & faucets,\r\n WallHungSinks: \"Wall Hung Sinks\", // used for sinks & faucets,\r\n WidespreadFaucets: \"Widespread Faucets\", // used for sinks & faucets,\r\n BathtubWithEnclosures: \"Drop-in\", // used for bathtubs & enclosures,\r\n BathtubWithoutEnclosures: \"StandAlone\", // used for bathtubs & enclosures,\r\n};\r\n\r\nexport const ShowerComboTubType = {\r\n bathtub_liner: \"bathtub_liner\",\r\n replacement_tub: \"replacement_tub\",\r\n walk_in_tub: \"walk_in_tub\",\r\n jetted_tub: \"jetted_tub\",\r\n};\r\n\r\nexport const CountsType = {\r\n allLayoutFeaturesCount: \"All\", // not used\r\n largeLayoutFeaturesCount: \"Large\",\r\n smallLayoutFeaturesCount: \"Small\",\r\n totalFeaturesCount: \"Total\" // not used\r\n};\r\n\r\nexport const BathTubType = {\r\n Custom60in: 'Custom60in',\r\n FreeStanding: 'BathTubFreeStanding'\r\n};\r\n\r\nexport const VanityTypes = {\r\n Complete: 'Complete',\r\n Custom: 'Custom'\r\n};\r\n\r\nexport const ShowerBodyType = {\r\n Glass: 0,\r\n Door: 1\r\n};\r\n\r\nexport const PartMenuType = {\r\n Simple: 0, // i.e. Toilet - doesn't have any sub-items\r\n Complex: 1, // i.e. Vanity - has sub-menu items, Sink, Faucet Mirror\r\n};\r\n\r\nexport const ShowerHeadTypes = { // todo we might will change it soon, tbd\r\n shower_arm: \"shower_arm\", // old\r\n shower_head_bundle: \"shower_head_bundle\", // old\r\n shower_trim_kit: \"shower_trim_kit\", // new\r\n shower_fixture: \"shower_fixture\", // new\r\n shower_system: \"shower_system\", // new\r\n};\r\n\r\nexport const ShowerHandTypes = { // https://qc-cdn.s3.amazonaws.com/lixil/shower_hand_logic.png\r\n hand_shower_kit: \"hand_shower_kit\",\r\n hand_shower_holder: \"hand_shower_holder\",\r\n};\r\n\r\nexport const VANITY_TYPES = {\r\n // standAlone: \"standAlone\", // ST\r\n vanity_cabinet: \"vanity_cabinet\", // S, W, A, U\r\n vanity_console: \"vanity_console\", // T\r\n vanity_washstand: \"vanity_washstand\", // T, S, W, A, U\r\n};\r\n\r\nexport const useNewNavLogicPartIds = [\"vanity_sink\", ...Object.keys(VANITY_TYPES)];\r\n\r\nexport function bathTubTypeToString(bathTypeType) {\r\n switch (bathTypeType) {\r\n case BathTubType.Custom60in:\r\n return 'Custom';\r\n case BathTubType.FreeStanding:\r\n return 'Complete';\r\n }\r\n}\r\nexport function bathTubStringToType(bathtubString) {\r\n switch (bathtubString) {\r\n case 'custom':\r\n return BathTubType.Custom60in;\r\n case 'complete':\r\n return BathTubType.FreeStanding;\r\n }\r\n}\r\n\r\nexport const vanityWizardFilters = [\"Size\", \"DoorStyle\", \"Material\", \"Color\"];\r\n\r\nexport const showerWizardFilters = [\"Material\", \"DuraBathColor\", \"SlabColor\", \"TileColor\", \"TilePattern\", \"AcrylicPattern\", \"AcrylicColor\"];\r\n\r\nexport const NotQCVanityDoorStylesFilters = [\"Centennial\", \"Hudson\", \"Northbrook\", \"Osage\", \"Quebec\", \"Riverside\", \"Villager\", \"Zurich\"];\r\n\r\nexport const COUNTERTOP_GROUP_BATHROOM = [\"vanity_countertop\", \"vanity_backsplash\"];\r\n\r\nexport const CABINET_GROUP_BATHROOM = [\"vanity_cabinet\", \"vanity_mirror\"];\r\n\r\nexport const CORNER_SHELVES_POSITIONS = [\"L1\",\"L2\",\"L3\",\"R1\",\"R2\",\"R3\"];\r\n\r\nexport const SIDE_POSITIONS = [\"L\",\"R\", \"C\"];\r\nexport const createParentPositions = (object) => {\r\n if (!object.layerPositions) {\r\n object.layerPositions = {};\r\n }\r\n SIDE_POSITIONS.forEach(position => {\r\n object.layerPositions[position] = null;\r\n })\r\n}\r\nexport const createPageToLoadArray = (object) => {\r\n object.nextFeaturesPageToLoadArray = {};\r\n LayoutAbbreviations.forEach(layoutAbbreviation => {\r\n object.nextFeaturesPageToLoadArray[layoutAbbreviation] = {\r\n page: 0,\r\n allReceived: false,\r\n };\r\n });\r\n}\r\n\r\nexport const PAN_POSITIONS = [\"L\",\"C\",\"R\"];\r\n\r\nexport const VANITY_POSITIONS = [\"L\",\"0\",\"R\"];\r\n\r\nexport const LOOK_OPENED_TYPES = {\r\n edit: \"edit\",\r\n featureZoom: \"featureZoom\"\r\n}\r\n\r\nexport const LOOK_FEATURE_CONTENT = {\r\n info: \"info\",\r\n threeD: \"threeD\",\r\n aug: \"aug\",\r\n gallery: \"gallery\", //todo\r\n}\r\n\r\nexport const LOOK_OVERLAYS = {\r\n exit: \"exit\",\r\n intro: \"intro\",\r\n print: \"print\",\r\n reset: \"reset\",\r\n loadingCart: \"loadingCart\",\r\n questionLogin: \"questionLogin\",\r\n questionShare: \"questionShare\",\r\n questionView: \"questionView\",\r\n questionViewUpdated: \"questionViewUpdated\",\r\n questionRemove: \"questionRemove\",\r\n saveSucess: \"saveSucess\",\r\n stylePairing: \"stylePairing\",\r\n styleColor: \"styleColor\",\r\n styleRemove: \"styleRemove\",\r\n styleRemoveBack: \"styleRemoveBack\",\r\n styleRemoveFeature: \"styleRemoveFeature\",\r\n notCompatiblePopup: \"notCompatiblePopup\",\r\n leadCapture: \"leadCapture\",\r\n}\r\n\r\nexport const LOCAL_STORAGE_KEYS = {\r\n introVisited: \"introVisited\",\r\n saveQuoteRequired: \"saveQuoteRequired\", // not used anymore\r\n requiredShareButton: \"requiredShareButton\" // not used anymore\r\n}\r\n\r\nexport const LOOK_INTRO_STEPS = {\r\n welcome: 0,\r\n // edit: 1,\r\n layoutsAndRooms: 1,\r\n wallsAndFloor: 2,\r\n saveAndMore: 3,\r\n review: 4,\r\n}\r\n\r\nexport const LOOK_INTRO_STEPS_MOBILE = {\r\n welcome: 0,\r\n wallsAndFloor: 1,\r\n layouts: 2,\r\n saveAndMore: 3,\r\n rooms: 4,\r\n review: 5,\r\n}\r\n\r\nexport const CONTEXT_MENU_VANITY_ONLY = [...Object.keys(VANITY_TYPES), \"vanity_legs\"];\r\nexport const CONTEXT_MENU_VANITY_BUTTONS = [\"vanity_faucet\", \"vanity_sink\", \"vanity_countertop\", \"vanity_backsplash\", ...CONTEXT_MENU_VANITY_ONLY];\r\nexport const CONTEXT_MENU_BATHTUB_BUTTONS = [\"bathtub_body\", \"bathtub_fixture\"];\r\nexport const CONTEXT_MENU_SPLIT_WALL = [\"split_wall\", \"shower_screen\"];\r\nexport const CONTEXT_MENU_SHOWER_ALL = [\"shower_fixture\", \"shower_arm\", \"shower_head\", \"shower_head_bundle\",\r\n \"hand_shower_kit\", \"shower_wall\", \"shower_door\", \"shower_pan_combo\", \"replacement_tub\"];\r\nexport const CONTEXT_MENU_SHOWER_OTHER = [\"valve_trim\", \"body_spray\", \"wall_union\", \"shower_hose\", \"hand_shower_holder\",\r\n \"hand_shower_only\", \"hand_shower\", \"diverter_trim\"];\r\nexport const CONTEXT_MENU_SHOWER_ACCESSORIES = [\"shower_pod\", \"grab_bar\", \"corner_shelf\", \"large_corner_seat\",\r\n \"shower_seats\", \"soap_dish\", \"shower_rod\"];\r\n\r\nexport const CONTEXT_MENU_KITCHEN_COUNTERTOPS = [\"countertop\", \"faucet\", \"sink\", \"edge_profile\"];\r\nexport const CONTEXT_MENU_KITCHEN_CENTER_ISLAND = [\"center_island_sink\", \"center_island_faucet\", \"center_island_countertop\",\r\n \"center_island_stovetop\", \"center_island_range\", \"center_island_edge\"];\r\n\r\nexport const ALL_CONTEXT_MENU = [\r\n ...CONTEXT_MENU_VANITY_BUTTONS,\r\n ...CONTEXT_MENU_BATHTUB_BUTTONS,\r\n ...CONTEXT_MENU_SPLIT_WALL,\r\n ...CONTEXT_MENU_SHOWER_ALL,\r\n ...CONTEXT_MENU_SHOWER_OTHER,\r\n ...CONTEXT_MENU_SHOWER_ACCESSORIES,\r\n];\r\n\r\nexport const ALL_CONTEXT_MENU_KITCHEN = [\r\n ...CONTEXT_MENU_KITCHEN_CENTER_ISLAND,\r\n ...CONTEXT_MENU_KITCHEN_COUNTERTOPS,\r\n];\r\n\r\nexport const DECORS_MAX = 100;\r\n\r\nexport let LOOK_WALLS = [\"left_wall\", \"right_wall\", \"front_wall\", \"back_wall\", \"split_wall\", \"left_wall_splitter\", \"shower_wall\", \"bathroom_floor\"];\r\nfor (let i = 1; i <= DECORS_MAX; i++) {\r\n LOOK_WALLS.push(\"decor_\" + i);\r\n}\r\n\r\nexport const LOOK_WALLS_ONLY = [\"left_wall\", \"right_wall\", \"front_wall\", \"back_wall\", \"split_wall\", \"left_wall_splitter\",\r\n \"shower_wall\", \"wainscoting\", \"enclosure_top\", \"enclosure_bottom\", \"center_wall\", \"shower_floor\", \"shower_curb\", \"pony_wall\"];\r\n\r\nexport const POSSIBLE_ONE_POSITION = [\"towel_bar\", \"robe_hook\"];\r\n\r\nexport const WHITE_PAGE_ROUTES = [ROUTES.view, ROUTES.list, ROUTES.login, ROUTES.register, ROUTES.rooms];\r\n\r\nexport const AVAILABLE_FILTERS = [\"Color\", \"Material\", \"Collection\", \"Size\"];\r\n\r\nexport const WIZARD_STEP_WIDTH = 184; // 176 + 8\r\nexport const WIZARD_STEP_MOBILE_WIDTH = 96; // 88 + 8\r\nexport const WIZARD_STEP_PRODUCT_JOURNEY = 88; // 80 + 8\r\n\r\nexport const LOOK_NAVIGATION_LIST_TYPES = {\r\n regular: \"regular\",\r\n designRec: \"designRec\",\r\n notMatchingMeta: \"notMatchingMeta\"\r\n}\r\n\r\nexport const LOOK_ROOM_TYPES = {\r\n as: \"americanstandard\",\r\n grohe: \"grohe\",\r\n}\r\n","import {\r\n hardCodeIsCaesarStone,\r\n hardCodeIsLowes,\r\n hardCodeIsMcDermott,\r\n hardCodeIsModerno,\r\n hardCodeIsPorcelanosa,\r\n isProd\r\n} from \"../../misc/fabricatorHardcode\";\r\n\r\nexport const isDevMode = () => {\r\n return window.location.href.includes(\"dev=1\") || document.kvConfig.devMode\r\n};\r\n\r\nexport const SQFT_POST_MESSAGE_ACTIONS = {\r\n initialLoad: \"initialLoad\",\r\n setQTData: \"setQTData\",\r\n closeSqFtCalc: \"closeSqFtCalc\",\r\n callResetDataPopup: \"callResetDataPopup\",\r\n callChangeLayoutDataPopup: \"callChangeLayoutDataPopup\",\r\n userIdleResetCounter: \"userIdleResetCounter\",\r\n resetHistory: \"resetHistory\",\r\n saveHistory: \"saveHistory\",\r\n setNewLayoutOnSqft: \"setNewLayoutOnSqft\",\r\n setCanvasCenter: \"setCanvasCenter\",\r\n stopRender: \"stopRender\",\r\n startRender: \"startRender\",\r\n};\r\n\r\nexport const MEASURE_UNITS = {\r\n Metric: \"Metric\",\r\n Imperial: \"Imperial\",\r\n};\r\n\r\n/**\r\n *\r\n * This is used only to take shape part id\r\n * @type {{top_cabinet: string, bottom_cabinet: string, center_island_countertop: string, slabPlaceHolder: string, seamPiece: string, countertop: string, spacer: string, vanity_countertop: string, backsplashPiece: string}}\r\n */\r\nexport const SHAPE_PART_ID = {\r\n edge: 'edge',\r\n seamPiece: 'seamPiece',\r\n backsplashPiece: 'backsplashPiece',\r\n waterfallPiece: 'waterfallPiece',\r\n slabPlaceHolder: 'slabPlaceHolder',\r\n top_cabinet: 'top_cabinet',//\r\n bottom_cabinet: 'bottom_cabinet',//\r\n tall_cabinet: 'tall_cabinet', //\r\n lower_cabinet_boxes: 'lower_cabinet_boxes',\r\n upper_cabinet_boxes: 'upper_cabinet_boxes',\r\n tall_cabinet_boxes: 'tall_cabinet_boxes',\r\n countertop: 'countertop',\r\n spacer: 'spacer',\r\n vanity_countertop: 'vanity_countertop',\r\n center_island_countertop: 'center_island_countertop',\r\n front_wall: 'front_wall',\r\n\r\n //appliances\r\n dishwasher: \"dishwasher\",\r\n hood: \"hood\",\r\n fridge: \"fridge\",\r\n stove: \"stove\",\r\n};\r\n\r\nexport const APPLIANCE_PART_IDS = [\r\n SHAPE_PART_ID.dishwasher,\r\n SHAPE_PART_ID.hood,\r\n SHAPE_PART_ID.fridge,\r\n SHAPE_PART_ID.stove,\r\n]\r\n\r\nexport const FEATUREGROUP_PART_ID = {\r\n specialty_cut_and_designs: 'specialty_cut_and_designs'\r\n}\r\n\r\nexport const SHAPE_ROTATE_DIRECTION = {\r\n right: 0,\r\n left: 1,\r\n};\r\n\r\nexport const ALIGN = {\r\n right: 'right',\r\n left: 'left',\r\n center: 'center',\r\n};\r\n\r\nexport const SHAPE_TYPE = {\r\n polygon: \"polygon\",\r\n square: \"square\",\r\n wideangle: \"wideangle\",\r\n horseshoe: \"horseshoe\",\r\n appliances: \"appliances\",\r\n};\r\n\r\nexport const RENDER_TEMPLATES = {\r\n default: \"default\",\r\n linesOnly: \"linesOnly\",\r\n filledPrimary: \"filledPrimary\",\r\n accordingToFeature: \"accordingToFeature\",\r\n filledActive: \"filledActive\",\r\n};\r\n\r\n/**\r\n * NAVIGATION\r\n */\r\nexport const SIDEBAR2_BUTTONS = [\r\n {\r\n menu: \"summary\",\r\n classNames: \"button--parent button--summary\",\r\n text: \"mobile.summary\",\r\n hasMenu: true\r\n },\r\n // {\r\n // menu: \"settings\",\r\n // classNames: \"button--parent button--settings\",\r\n // text: \"settings\",\r\n // hasMenu: true\r\n // }\r\n];\r\n\r\nexport const SIDEBAR_BUTTONS_MENU = {\r\n move: \"move\",\r\n shapes: \"shapes\",\r\n layouts: \"layouts\",\r\n summary: \"summary\",\r\n delete: \"delete\",\r\n cabinetset: \"cabinetset\"\r\n}\r\n\r\nexport const SIDEBAR_SLAB_BUTTONS = {\r\n move: \"move\",\r\n //moveSlab: \"moveSlab\",\r\n rotate: \"rotate\",\r\n loadSlab: \"loadSlab\",\r\n seam: \"seam\",\r\n duplicate: \"duplicate\",\r\n delete: \"delete\",\r\n};\r\n\r\nexport const MOVABLE_IMAGE_TYPES = {\r\n slabImage: \"slabImage\",\r\n};\r\n\r\nexport const SIDEBAR_SLAB_SEAM_BUTTONS = {\r\n //addFreeSeam: \"addFreeSeam\", //todo enable when ready\r\n addSeamHorizontal: \"addSeamHorizontal\",\r\n addSeamVertical: \"addSeamVertical\",\r\n undoSeam: \"undoSeam\",\r\n resetSeams: \"resetSeams\",\r\n};\r\n\r\n/**\r\n * remember to update SIDEBAR_HIDDEN_BUTTONS (names should be the same)\r\n */\r\nexport const SIDEBAR_NAVIGATION_BUTTONS = {\r\n move: \"move\",\r\n //freeDraw: \"freeDraw\",\r\n resize: \"resize\",\r\n rotate: \"rotate\",\r\n corners: \"corners\",\r\n radius: \"radius\",\r\n edge: \"edge\",\r\n backsplash: \"backsplash\",\r\n end_cap: \"end_cap\",\r\n appliances: \"appliances\", // disable appliances for caes\r\n angle: \"angle\",\r\n bumpout: \"bumpout\",\r\n label: \"label\", // disable appliances for caes\r\n text: \"text\",\r\n ...((!hardCodeIsLowes()) && { mitered: \"mitered\" }),\r\n ...((!hardCodeIsMcDermott() && !hardCodeIsLowes()) && { toolWaterfall: \"toolWaterfall\" }),\r\n ...((!isProd && (hardCodeIsModerno() || hardCodeIsPorcelanosa() || isDevMode())) && { toolUnderlayment: \"toolUnderlayment\" }),\r\n duplicate: \"duplicate\",\r\n};\r\n\r\nexport const SIDEBAR_TYPE_AREA_NAVIGATION_BUTTONS = {\r\n move: \"move\",\r\n freeDraw: \"freeDraw\",\r\n resize: \"resize\",\r\n rotate: \"rotate\",\r\n corners: \"corners\",\r\n edge: \"edge\",\r\n bumpout: \"bumpout\",\r\n mitered: \"mitered\",\r\n ...((hardCodeIsModerno() || hardCodeIsPorcelanosa() || isDevMode()) && {toolWaterfall: \"toolWaterfall\"}),\r\n label: \"label\", // disable appliances for caes\r\n text: \"text\",\r\n duplicate: \"duplicate\",\r\n};\r\n\r\nexport const SIDEBAR_NAVIGATION_CABINET_BUTTONS = {\r\n move: \"move\",\r\n resize: \"resize\",\r\n rotate: \"rotate\",\r\n lower: \"lower\",\r\n upper: \"upper\",\r\n tall: \"tall\",\r\n centerIsland: \"centerIsland\",\r\n spacer: \"spacer\",\r\n //style: \"style\",\r\n wall: \"wall\",\r\n crown: \"crown\",\r\n handles: \"handles\",\r\n // top_handle: \"top_handle\",\r\n // bottom_handle: \"bottom_handle\",\r\n end_panel: \"end_panel\",\r\n appliances: \"appliances\", // disable appliances for caes\r\n text: \"text\",\r\n};\r\n\r\nexport const SIDEBAR_SHAPE_BUTTONS = {\r\n square: \"square\",\r\n lshape: \"lshape\",\r\n wideangle: \"wideangle\",\r\n rectangle: \"rectangle\",\r\n dot: \"dot\",\r\n freeDraw: \"freeDraw\",\r\n shapeFreeForm: \"shapeFreeForm\",\r\n};\r\n\r\nexport const SIDEBAR_NAVIGATION_BUTTONS_LEVEL3 = {\r\n filters: \"filters\",\r\n};\r\n\r\nexport const FREE_FORM_THICKNESS_POPUP_ID = \"freeForm\";\r\n\r\nexport const SIDEBAR_BUTTONS = [\r\n {\r\n menu: \"move\",\r\n message: \"sqft.navigation.menu.tools\",\r\n shouldHardcodeMessage: true,\r\n hasMenu: true,\r\n subMenu: SIDEBAR_NAVIGATION_BUTTONS\r\n }, {\r\n menu: \"shapes\",\r\n message: \"sqft.navigation.menu.shapes\",\r\n hasMenu: true,\r\n subMenu: SIDEBAR_SHAPE_BUTTONS\r\n }, {\r\n menu: \"layouts\",\r\n message: \"sqft.navigation.menu.layouts\",\r\n hasMenu: true\r\n }, { // disable summary for caes\r\n menu: \"summary\",\r\n message: \"sqft.navigation.menu.summary\",\r\n hasMenu: true\r\n }, {\r\n menu: \"delete\",\r\n message: \"sqft.navigation.menu.delete\",\r\n title: \"Remove an object from the workspace\", //todo translation\r\n additionalClassNames: \"dot-delete\"\r\n },\r\n // {\r\n // menu: \"settings\",\r\n // message: \"sqft.navigation.menu.settings\"\r\n // },\r\n];\r\n\r\nexport const SIDEBAR_TYPE_AREA_BUTTONS = [\r\n {\r\n menu: \"move\",\r\n message: \"sqft.navigation.menu.move\",\r\n hasMenu: true,\r\n subMenu: SIDEBAR_NAVIGATION_BUTTONS\r\n }, {\r\n menu: \"shapes\",\r\n message: \"sqft.navigation.menu.shapes\",\r\n hasMenu: true,\r\n subMenu: SIDEBAR_SHAPE_BUTTONS\r\n }, { // disable summary for caes\r\n menu: \"summary\",\r\n message: \"sqft.navigation.menu.summary\",\r\n hasMenu: true\r\n }, {\r\n menu: \"delete\",\r\n message: \"sqft.navigation.menu.delete\",\r\n title: \"Remove an object from the workspace\", //todo translation\r\n additionalClassNames: \"dot-delete\"\r\n },\r\n];\r\n\r\nexport const SIDEBAR_CABINET_BUTTONS = [\r\n {\r\n menu: \"move\",\r\n message: \"sqft.navigation.menu.move\",\r\n hasMenu: true,\r\n subMenu: SIDEBAR_NAVIGATION_CABINET_BUTTONS\r\n }, { // disable summary for caes\r\n menu: \"summary\",\r\n message: \"sqft.navigation.menu.summary\",\r\n hasMenu: true\r\n }, {\r\n menu: \"delete\",\r\n message: \"sqft.navigation.menu.delete\",\r\n title: \"Remove an object from the workspace\", //todo translation\r\n additionalClassNames: \"dot-delete\"\r\n },...(isDevMode() ? [{\r\n menu: \"cabinetset\",\r\n message: \"Cabinet Set\",\r\n }] : []),\r\n // {\r\n // menu: \"settings\",\r\n // message: \"sqft.navigation.menu.settings\"\r\n // },\r\n];\r\n\r\nexport const SIDEBAR_WITH_FEATURES_SUBMENU = [\r\n SIDEBAR_NAVIGATION_BUTTONS.end_cap,\r\n SIDEBAR_NAVIGATION_CABINET_BUTTONS.end_panel,\r\n SIDEBAR_NAVIGATION_CABINET_BUTTONS.centerIsland,\r\n SIDEBAR_NAVIGATION_CABINET_BUTTONS.wall,\r\n SIDEBAR_NAVIGATION_CABINET_BUTTONS.handles\r\n];\r\n\r\nexport const SHOULD_DISPLAY_FEATURES_ONLY_WITH_AR3DUrls = [\r\n SIDEBAR_NAVIGATION_CABINET_BUTTONS.wall,\r\n SIDEBAR_NAVIGATION_CABINET_BUTTONS.handles\r\n];\r\n\r\nexport const SIDEBAR_HIDDEN_BUTTONS = {\r\n mitered: \"mitered\",\r\n toolWaterfall: \"toolWaterfall\",\r\n toolUnderlayment: \"toolUnderlayment\",\r\n buttonMitered: \"buttonMitered\",\r\n buttonCustomBacksplash: \"buttonCustomBacksplash\",\r\n edgePeninsulaUnderwrap: \"edgePeninsulaUnderwrap\",\r\n};\r\n\r\n/*\r\n* Hide shapes after removing them in popup window\r\n*/\r\nexport const isDisabledInPopupShouldBeHidden = () => {\r\n return hardCodeIsCaesarStone() //enabled only for caesarstone\r\n}\r\n\r\nexport const SIDEBAR_LAYOUTS_BUTTONS = [\r\n \"S\", \"SP\", \"SI\", \"SPI\", \"SN\", \"SPN\", \"SNI\", \"SPNI\", \"L\", \"LI\", \"LN\", \"LNI\"\r\n];\r\n\r\nexport const SQFT_APPLIANCES = {\r\n hood: \"hood\",\r\n refrigerator: \"refrigerator\",\r\n range: \"range\",\r\n sink: \"sink\",\r\n doubleSink: \"doubleSink\",\r\n dishwasher: \"dishwasher\",\r\n iceMachine: \"ice machine\",\r\n oven: \"oven\",\r\n stovetop: \"stovetop\",\r\n trashCompactor: \"trash compactor\",\r\n wineFridge: \"wine fridge\"\r\n};\r\n\r\nexport const SQFT_APPLIANCES_CAES = {\r\n hood: \"hood\",\r\n sink: \"sink\",\r\n stovetop: \"stovetop\",\r\n};\r\n\r\nexport const CABINET_LABELS = {\r\n top_cabinet: 'top_cabinet',\r\n bottom_cabinet: 'bottom_cabinet',\r\n tall_cabinet: 'tall_cabinet',\r\n crown_molding: 'crown_molding',\r\n tall_cabinet_boxes: 'tall_cabinet_boxes',\r\n lower_cabinet_boxes: 'lower_cabinet_boxes',\r\n upper_cabinet_boxes: 'upper_cabinet_boxes',\r\n handle: 'handle',\r\n};\r\n\r\nexport const CABINET_BOXES = [\r\n SHAPE_PART_ID.lower_cabinet_boxes,\r\n SHAPE_PART_ID.upper_cabinet_boxes,\r\n SHAPE_PART_ID.tall_cabinet_boxes,\r\n];\r\n\r\nexport const SQFT_CABINET_APPLIANCES = {\r\n //hood: \"hood\",\r\n //microwave: \"microwave\",\r\n};\r\n\r\nexport const SQFT_APPLIANCES_WITH_SUBMENU = [\r\n SQFT_APPLIANCES.oven,\r\n SQFT_APPLIANCES.hood,\r\n SQFT_APPLIANCES.dishwasher,\r\n SQFT_APPLIANCES.stovetop,\r\n SQFT_APPLIANCES.refrigerator,\r\n SQFT_APPLIANCES.range,\r\n SQFT_CABINET_APPLIANCES.microwave,\r\n //partIds which names are mismatched\r\n SHAPE_PART_ID.stove,\r\n SHAPE_PART_ID.fridge,\r\n]\r\n\r\nexport const SQFT_SHAPES_THAT_ADD_OVERHANG = [\r\n SQFT_APPLIANCES.oven,\r\n SQFT_APPLIANCES.range,\r\n SQFT_APPLIANCES.hood,\r\n SQFT_APPLIANCES.dishwasher,\r\n SQFT_APPLIANCES.stovetop,\r\n SQFT_APPLIANCES.refrigerator,\r\n CABINET_LABELS.tall_cabinet_boxes,\r\n //CABINET_LABELS.lower_cabinet_boxes,\r\n //partIds which names are mismatched\r\n SHAPE_PART_ID.stove,\r\n SHAPE_PART_ID.fridge,\r\n]\r\n\r\nexport const SQFT_MODE = {\r\n regular: \"regular\",\r\n slab: \"slab\",\r\n};\r\n\r\nexport const SQFT_VIEW_MODE = {\r\n twoDMode: \"2d Mode\",\r\n threeDMode: \"3d Mode\",\r\n threeDModeDoors: \"3d Mode Doors\",\r\n threeDModeFramed: \"Framed\",\r\n threeDModeFrameless: \"Frameless\",\r\n augmentedReality: \"Augmented Reality\",\r\n augmentedRealityCabinet: \"Augmented Reality Cabinet\",\r\n augmentedRealityDoorsOnly: \"Augmented Reality Doors Only\"\r\n}\r\nexport const SQFT_VIEW_AR_MODES = [\r\n SQFT_VIEW_MODE.augmentedReality,\r\n SQFT_VIEW_MODE.augmentedRealityCabinet,\r\n SQFT_VIEW_MODE.augmentedRealityDoorsOnly,\r\n]\r\n\r\nexport const MANUAL_CALCULATION_ROW_TYPES = {\r\n countertopRows: \"countertopRows\",\r\n backsplashRows: \"backsplashRows\",\r\n edgeRows: \"edgeRows\",\r\n};\r\n\r\nexport const DIRECTION = {\r\n north: \"north\",\r\n east: \"east\",\r\n south: \"south\",\r\n west: \"west\",\r\n};\r\n\r\nexport const MANUAL_CALCULATION_MEASURE = {\r\n length: \"length\",\r\n height: \"height\",\r\n width: \"width\",\r\n selectedFeature: \"selectedFeature\",\r\n};\r\n\r\nexport const SQFT_BACKSPLASH_TYPES = [\"4\", \"6\", \"18\"];\r\nexport const SQFT_BACKSPLASH_TYPES_METRIC = [\"100\", \"150\", \"600\"];\r\nexport const SQFT_WALL_TYPES = [\"wall\"];\r\nexport const SQFT_MEASURE_UNIT = {\r\n imperial: \"Imperial\",\r\n metric: \"Metric\",\r\n};\r\nexport const FREE_DRAW_TYPE = {\r\n shape: \"shape\",\r\n shapeFreeForm: \"shapeFreeForm\",\r\n wall: \"wall\",\r\n};\r\n\r\nexport const CONTEXT_MENU_TYPE = {\r\n list: \"list\",\r\n buttons: \"buttons\",\r\n};\r\n\r\nexport const SQFT_FEATURES = {\r\n bumpouts: 'bumpouts',\r\n countertop: 'countertop',\r\n center_island_countertop: 'center_island_countertop',\r\n slabs: 'slabs',\r\n backsplashes: 'backsplashes',\r\n edges: 'edges',\r\n radius: 'radius',\r\n corners: 'corners',\r\n shower_wall: 'shower_wall',\r\n shower_floor: 'shower_floor',\r\n kitchen_floor: 'kitchen_floor',\r\n vanity_accent: 'vanity_accent',\r\n vanity_countertop: 'vanity_countertop',\r\n vanity_backsplash: 'vanity_backsplash',\r\n shower_interior_wall: 'shower_interior_wall',\r\n shower_interior_wall_accent: 'shower_interior_wall_accent',\r\n shower_wall_accent: 'shower_wall_accent',\r\n accent_wall: 'accent_wall',\r\n bathroom_floor: 'bathroom_floor',\r\n wall_a: 'wall_a',\r\n wall_b: 'wall_b',\r\n wall_c: 'wall_c',\r\n front_wall: 'front_wall',\r\n top_cabinet: 'top_cabinet',\r\n bottom_cabinet: 'bottom_cabinet',\r\n upper_cabinet_boxes: 'upper_cabinet_boxes',\r\n top_handle: 'top_handle',\r\n lower_cabinet_boxes: 'lower_cabinet_boxes',\r\n bottom_handle: 'bottom_handle',\r\n tall_cabinet_boxes: 'tall_cabinet_boxes',\r\n crown_molding: 'crown_molding',\r\n handle: 'handle',\r\n underlayment: 'underlayment',\r\n wall_door_end_accessory: 'wall_door_end_accessory',\r\n base_door: 'base_door',\r\n island_panel: 'island_panel',\r\n refridgerator_panel: 'refridgerator_panel',\r\n end_cap: 'end_cap',\r\n hinge: 'hinge',\r\n};\r\n\r\nexport const DEFAULT_EXPORTED_SQFT_FEATURES = [\r\n SQFT_FEATURES.crown_molding,\r\n SQFT_FEATURES.radius,\r\n SQFT_FEATURES.corners,\r\n SQFT_FEATURES.underlayment,\r\n SQFT_FEATURES.bumpouts,\r\n]\r\n\r\nexport const PARENT_KEYS_WITH_COMBINED_FEATURES_IN_CART = [\r\n 'edges',\r\n 'backsplashes',\r\n 'countertop',\r\n 'center_island_countertop',\r\n 'radius',\r\n 'corners',\r\n 'slabs',\r\n 'vanity_countertop',\r\n 'vanity_backsplash',\r\n 'shower_wall',\r\n 'shower_interior_wall',\r\n 'shower_interior_wall_accent',\r\n 'accent_wall',\r\n 'shower_floor',\r\n 'bathroom_floor',\r\n 'kitchen_floor',\r\n 'wall_a',\r\n 'wall_b',\r\n 'wall_c',\r\n 'front_wall',\r\n];\r\n\r\nexport const END_CAP_CABINETS_PART_IDS = [\r\n SQFT_FEATURES.wall_door_end_accessory,\r\n SQFT_FEATURES.base_door,\r\n SQFT_FEATURES.island_panel,\r\n SQFT_FEATURES.refridgerator_panel,\r\n];\r\n\r\nexport const END_CAP_AREA_PART_IDS = [\r\n SQFT_FEATURES.end_cap,\r\n];\r\n\r\nexport const END_CAP_PART_IDS = [\r\n ...END_CAP_CABINETS_PART_IDS,\r\n ...END_CAP_AREA_PART_IDS,\r\n];\r\n\r\nexport const SQFT_PARENT_FEATURE_GROUP_PART_IDS = {\r\n upper_cabinet_boxes: 'top_cabinet',\r\n tall_cabinet_boxes: 'tall_cabinet',\r\n lower_cabinet_boxes: 'bottom_cabinet',\r\n}\r\n\r\nexport const SQFT_CHILD_FEATURE_GROUP_PART_IDS = {\r\n top_cabinet: 'upper_cabinet_boxes',\r\n tall_cabinet: 'tall_cabinet_boxes',\r\n bottom_cabinet: 'lower_cabinet_boxes',\r\n}\r\n\r\nexport const SQFT_AREA_TYPE_PART_IDS = {\r\n shower_wall: 'shower_wall',\r\n shower_floor: 'shower_floor',\r\n kitchen_floor: 'kitchen_floor',\r\n shower_interior_wall: 'shower_interior_wall',\r\n shower_interior_wall_accent: 'shower_interior_wall_accent',\r\n shower_wall_accent: 'shower_wall_accent',\r\n accent_wall: 'accent_wall',\r\n bathroom_floor: 'bathroom_floor',\r\n wall_a: 'wall_a',\r\n wall_b: 'wall_b',\r\n wall_c: 'wall_c',\r\n};\r\n\r\nexport const COUNTERTOP_LABELS = {\r\n center_island_countertop: 'center_island_countertop',\r\n countertop: 'countertop',\r\n vanity_countertop: 'vanity_countertop',\r\n vanity_accent: 'vanity_accent',\r\n shower_wall: 'shower_wall',\r\n shower_wall_accent: 'shower_wall_accent',\r\n shower_interior_wall: 'shower_interior_wall',\r\n shower_interior_wall_accent: 'shower_interior_wall_accent',\r\n accent_wall: 'accent_wall',\r\n shower_floor: 'shower_floor',\r\n bathroom_floor: 'bathroom_floor',\r\n kitchen_floor: 'kitchen_floor',\r\n wall_a: 'wall_a',\r\n wall_b: 'wall_b',\r\n wall_c: 'wall_c',\r\n front_wall: 'front_wall',\r\n};\r\n\r\nexport const CABINET_PART_IDS_THAT_CAN_HAVE_HANDLES = [\r\n SHAPE_PART_ID.tall_cabinet_boxes,\r\n SHAPE_PART_ID.upper_cabinet_boxes,\r\n SHAPE_PART_ID.lower_cabinet_boxes,\r\n]\r\n\r\nexport const HANDLE_TO_CABINETS = {\r\n [SQFT_FEATURES.top_handle]: [SQFT_FEATURES.upper_cabinet_boxes],\r\n [SQFT_FEATURES.bottom_handle]: [SQFT_FEATURES.lower_cabinet_boxes, SQFT_FEATURES.tall_cabinet_boxes],\r\n [SQFT_FEATURES.handle]: [SQFT_FEATURES.upper_cabinet_boxes, SQFT_FEATURES.lower_cabinet_boxes],\r\n};\r\n\r\nexport const CABINETS_TO_HANDLE = {\r\n [SQFT_FEATURES.upper_cabinet_boxes]: SQFT_FEATURES.top_handle,\r\n [SQFT_FEATURES.lower_cabinet_boxes]: SQFT_FEATURES.bottom_handle,\r\n [SQFT_FEATURES.tall_cabinet_boxes]: SQFT_FEATURES.bottom_handle,\r\n};\r\n\r\nexport const CABINET_COMMON_COLOR_PART_IDS = [\r\n SHAPE_PART_ID.top_cabinet,\r\n SHAPE_PART_ID.bottom_cabinet,\r\n SHAPE_PART_ID.tall_cabinet,\r\n SHAPE_PART_ID.tall_cabinet_boxes,\r\n SHAPE_PART_ID.upper_cabinet_boxes,\r\n SHAPE_PART_ID.lower_cabinet_boxes,\r\n];\r\n\r\nexport const FEATURE_QUANTITY_UNITS = [\r\n SHAPE_PART_ID.upper_cabinet_boxes,\r\n SHAPE_PART_ID.lower_cabinet_boxes,\r\n SHAPE_PART_ID.tall_cabinet_boxes\r\n];\r\n\r\nexport const BACKSPLASH_LABELS = {\r\n backsplash: 'backsplash',\r\n backsplashes: 'backsplashes',\r\n vanity_backsplash: 'vanity_backsplash',\r\n};\r\n\r\nexport const EDGE_LABELS = {\r\n edge: 'edge',\r\n edge_profile: 'edge_profile',\r\n center_island_edge: 'center_island_edge',\r\n};\r\n\r\nexport const CORNER_LABELS = {\r\n radius: 'radius',\r\n corner: 'corner',\r\n};\r\n\r\n// export const FEATURES_WITH_0_VALUE_FOR_THE_SLABS = [\r\n// SQFT_FEATURES.backsplashes,\r\n// SQFT_FEATURES.countertop,\r\n// SQFT_FEATURES.center_island_countertop,\r\n// SQFT_FEATURES.shower_wall,\r\n// SQFT_FEATURES.shower_floor,\r\n// SQFT_FEATURES.kitchen_floor,\r\n// SQFT_FEATURES.vanity_countertop,\r\n// SQFT_FEATURES.vanity_backsplash,\r\n// SQFT_FEATURES.shower_interior_wall,\r\n// SQFT_FEATURES.shower_interior_wall_accent,\r\n// SQFT_FEATURES.bathroom_floor,\r\n// SQFT_FEATURES.wall_a,\r\n// SQFT_FEATURES.wall_b,\r\n// SQFT_FEATURES.wall_c\r\n// ];\r\n\r\nexport const SHAPE_PART_IDS_USING_SAME_COLOR = {\r\n ...COUNTERTOP_LABELS,\r\n ...BACKSPLASH_LABELS,\r\n waterfallPiece: SHAPE_PART_ID.waterfallPiece,\r\n backsplashPiece: SHAPE_PART_ID.backsplashPiece,\r\n seamPiece: SHAPE_PART_ID.seamPiece,\r\n}\r\n\r\nexport const FEATURES_WITH_0_VALUE_FOR_THE_SLABS = {\r\n ...COUNTERTOP_LABELS,\r\n ...BACKSPLASH_LABELS,\r\n}\r\n\r\nexport const ALLOWED_LABEL_NAV_ITEMS = {\r\n ...COUNTERTOP_LABELS,\r\n ...BACKSPLASH_LABELS,\r\n ...CABINET_LABELS,\r\n ...SQFT_AREA_TYPE_PART_IDS,\r\n ...END_CAP_PART_IDS\r\n}\r\n\r\nexport const POINT_PROPERTY = {\r\n angle: 'angle', // 45 degCorner\r\n arcLength: 'arcLength', // Radius\r\n}\r\n\r\nexport const RESOURCE_TYPE = {\r\n attachedToLine: 'attachedToLine',\r\n waterfallSectionsData: 'waterfallSectionsData',\r\n underlaymentSections: 'underlaymentSections',\r\n selectedFeature: null\r\n}\r\n\r\nexport const RESOURCE_ATTACHED_TO_TYPE = {\r\n edge: 'edge',\r\n backsplash: 'backsplash',\r\n wall: 'wall',\r\n mitered: 'mitered',\r\n underlayment: 'underlayment',\r\n bumpout: 'bumpout',\r\n waterfall: 'waterfall',\r\n crown_molding: 'crown_molding',\r\n end_cap: 'end_cap',\r\n}\r\n\r\nexport const RESOURCE_ATTACHED_TO_NAME = {\r\n waterfall: 'Waterfall',\r\n}\r\n\r\nexport const WORKSPACE_RESOURCES = {\r\n spacers: 'spacers',\r\n handles: 'handles',\r\n hinge: 'hinge',\r\n crownMolding: 'crownMolding',\r\n walls: 'walls',\r\n shapeColors: 'shapeColors',\r\n waterfall: 'waterfall',\r\n removedFeatures: 'removedFeatures',\r\n snappedShapeGroups: 'snappedShapeGroups',\r\n selectedShapes: 'selectedShapes',\r\n images3d: 'images3d',\r\n}\r\n\r\n/**\r\n * Should be unique\r\n * @type {{peninsulaUnderwrap: string, underlayment: string, waterfall: string, cabinetReturn: string, overhangReturn: string}}\r\n */\r\nexport const WATERFALL_SHAPES_KEY = {\r\n cabinetReturn: 'Cabinet Return',\r\n waterfall: 'Waterfall Panel',\r\n overhangReturn: 'Overhang Return',\r\n underlayment: 'Underlayment',\r\n peninsulaUnderwrap: 'Ppeninsula Underwrap',\r\n}\r\n\r\nexport const WATERFALL_SHAPES_NAME = {\r\n cabinetReturn: 'Cabinet Return',\r\n waterfall: 'Waterfall Panel',\r\n overhangReturn: 'Overhang Return',\r\n underlayment: 'Underlayment',\r\n peninsulaUnderwrap: 'Underlayment',\r\n}\r\n\r\nexport const SQFT_GROUP = {\r\n area: 'area',\r\n cabinets: 'cabinets',\r\n default: 'default',\r\n}\r\n\r\nexport const SQFT_AR3D_POPUP_CONTENT_TYPE = {\r\n ar: 'ar',\r\n threeD: 'threeD',\r\n}\r\n\r\nexport const SQFT_AR3D_GLB_VIEWER = {\r\n singleModel: 'singleModel',\r\n separateModels: 'separateModels',\r\n}\r\n\r\nexport const MITER_UNDERWRAP_EDGE_NAMES = [\r\n \"miter underwrap\"\r\n];\r\n\r\nexport const MITER_EDGE_NAMES = [\r\n 'Miter 1 1/2\"',\r\n 'Miter 2\"-3\"',\r\n 'Miter 4\"-6\"',\r\n 'Miter Edge',\r\n 'Mitered Edge',\r\n 'Rimrock - 981',\r\n 'Ingletado',\r\n 'Inglete',\r\n 'Inglete.',\r\n]\r\n\r\nexport const WATERFALL_OVERLAY_TYPE = {\r\n waterfall: 'waterfall',\r\n peninsulaUnderwrap: 'peninsulaUnderwrap',\r\n}\r\n\r\nexport const MITERED_OVERLAY_TYPE = {\r\n mitered: \"mitered\",\r\n underlayment: \"underlayment\",\r\n}\r\n\r\nexport const APPLIANCES_THAT_SHOULD_RENDER_MEASUREMENTS_INSIDE_THE_SHAPE = [\r\n SQFT_APPLIANCES.sink,\r\n SQFT_APPLIANCES.doubleSink,\r\n SQFT_APPLIANCES.stovetop\r\n]\r\n\r\nexport const CABINET_FILTER_NAMES = {\r\n knobs: 'Number_of_Knobs',\r\n hinges: 'Number_of_Hinges',\r\n slideSets: 'Numbe_of_Slide_Sets',\r\n doors: 'Number_of_Doors',\r\n drawers: 'Number_of_Drawers',\r\n}\r\n\r\nexport const CABINET_SET2 = [\r\n {\r\n \"shapeId\": 12,\r\n \"partId\": \"upper_cabinet_boxes\",\r\n \"x\": 80.26666666666674,\r\n \"y\": 52,\r\n \"z\": -71.97196666666699,\r\n \"rotation\": 0,\r\n \"url\": \"https://d1mb1i73swc8dz.cloudfront.net/ar-composer-v2/models/All-Top Cabinet-Fairbank-Barcelona 2-H4818.glb\",\r\n \"material_url\": \"https://d1mb1i73swc8dz.cloudfront.net/ar-composer-v2/textures/All-Cabinet-Dutch Gray-Trend.glb\",\r\n \"framed\": false,\r\n \"frame_width\": 0.75,\r\n \"frame_height\": 0.25,\r\n \"target_width\": 48,\r\n \"target_depth\": 12,\r\n \"target_height\": 18,\r\n \"width\": 48,\r\n \"height\": 18,\r\n \"depth\": 12,\r\n \"contour_points\": [\r\n {\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"id\": \"3fb0dd23-ad18-442b-b32f-b03219772ff6\"\r\n },\r\n {\r\n \"x\": 48,\r\n \"y\": 0,\r\n \"id\": \"43e20056-a6f8-4767-8e43-200a5a07dde0\"\r\n },\r\n {\r\n \"x\": 48,\r\n \"y\": 12,\r\n \"id\": \"de3dcd0c-0416-4e6e-80a1-c3b81dd1df48\"\r\n },\r\n {\r\n \"x\": 0,\r\n \"y\": 12,\r\n \"id\": \"51ca1273-ddc9-433a-a065-264123a62b32\"\r\n }\r\n ],\r\n \"original_points\": [\r\n {\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"id\": \"3fb0dd23-ad18-442b-b32f-b03219772ff6\"\r\n },\r\n {\r\n \"x\": 48,\r\n \"y\": 0,\r\n \"id\": \"43e20056-a6f8-4767-8e43-200a5a07dde0\"\r\n },\r\n {\r\n \"x\": 48,\r\n \"y\": 12,\r\n \"id\": \"de3dcd0c-0416-4e6e-80a1-c3b81dd1df48\"\r\n },\r\n {\r\n \"x\": 0,\r\n \"y\": 12,\r\n \"id\": \"51ca1273-ddc9-433a-a065-264123a62b32\"\r\n }\r\n ],\r\n \"featureId\": 272476414,\r\n \"parentFeatureId\": 272289587,\r\n \"shapeLayout\": \"rectangle\"\r\n },\r\n {\r\n \"shapeId\": 11,\r\n \"partId\": \"upper_cabinet_boxes\",\r\n \"x\": 1.0666666666667943,\r\n \"y\": 52,\r\n \"z\": 24.930683333333434,\r\n \"rotation\": 90,\r\n \"url\": \"https://d1mb1i73swc8dz.cloudfront.net/ar-composer-v2/models/All-Top Cabinet-Fairbank-Barcelona 2-H4818.glb\",\r\n \"material_url\": \"https://d1mb1i73swc8dz.cloudfront.net/ar-composer-v2/textures/All-Cabinet-Dutch Gray-Trend.glb\",\r\n \"framed\": false,\r\n \"frame_width\": 0.75,\r\n \"frame_height\": 0.25,\r\n \"target_width\": 48,\r\n \"target_depth\": 12,\r\n \"target_height\": 18,\r\n \"width\": 48,\r\n \"height\": 18,\r\n \"depth\": 12,\r\n \"contour_points\": [\r\n {\r\n \"x\": 18,\r\n \"y\": 30,\r\n \"id\": \"13c5f884-cc36-4537-afab-9e73716b37ce\"\r\n },\r\n {\r\n \"x\": 18,\r\n \"y\": -18,\r\n \"id\": \"67cba080-e63f-4367-a5d6-3294d212aaf1\"\r\n },\r\n {\r\n \"x\": 30,\r\n \"y\": -18,\r\n \"id\": \"ba70c7da-e2a9-4914-afb8-9c435cbde0f7\"\r\n },\r\n {\r\n \"x\": 30,\r\n \"y\": 30,\r\n \"id\": \"11c8255e-c2f2-4afe-bca8-3dff28be49d1\"\r\n }\r\n ],\r\n \"original_points\": [\r\n {\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"id\": \"13c5f884-cc36-4537-afab-9e73716b37ce\"\r\n },\r\n {\r\n \"x\": 48,\r\n \"y\": 0,\r\n \"id\": \"67cba080-e63f-4367-a5d6-3294d212aaf1\"\r\n },\r\n {\r\n \"x\": 48,\r\n \"y\": 12,\r\n \"id\": \"ba70c7da-e2a9-4914-afb8-9c435cbde0f7\"\r\n },\r\n {\r\n \"x\": 0,\r\n \"y\": 12,\r\n \"id\": \"11c8255e-c2f2-4afe-bca8-3dff28be49d1\"\r\n }\r\n ],\r\n \"featureId\": 272476414,\r\n \"parentFeatureId\": 272289587,\r\n \"shapeLayout\": \"rectangle\"\r\n },\r\n {\r\n \"shapeId\": 10,\r\n \"partId\": \"upper_cabinet_boxes\",\r\n \"x\": 160.53333333333316,\r\n \"y\": 52,\r\n \"z\": 3.4359833333333327,\r\n \"rotation\": 270,\r\n \"url\": \"https://d1mb1i73swc8dz.cloudfront.net/ar-composer-v2/models/All-Top Cabinet-Fairbank-Barcelona 2-H4818.glb\",\r\n \"material_url\": \"https://d1mb1i73swc8dz.cloudfront.net/ar-composer-v2/textures/All-Cabinet-Dutch Gray-Trend.glb\",\r\n \"framed\": false,\r\n \"frame_width\": 0.75,\r\n \"frame_height\": 0.25,\r\n \"target_width\": 48,\r\n \"target_depth\": 12,\r\n \"target_height\": 18,\r\n \"width\": 48,\r\n \"height\": 18,\r\n \"depth\": 12,\r\n \"contour_points\": [\r\n {\r\n \"x\": 30,\r\n \"y\": -18,\r\n \"id\": \"fb95bdb3-57ac-4b9e-9620-3aea19504c2b\"\r\n },\r\n {\r\n \"x\": 30,\r\n \"y\": 30,\r\n \"id\": \"f2939976-4d3e-48dc-be86-0f4b0f4894ef\"\r\n },\r\n {\r\n \"x\": 18,\r\n \"y\": 30,\r\n \"id\": \"1df267ef-bd5d-41ac-a492-4d29480d2ff3\"\r\n },\r\n {\r\n \"x\": 18,\r\n \"y\": -18,\r\n \"id\": \"c6be3316-86e1-4872-ad32-38bb00c70d76\"\r\n }\r\n ],\r\n \"original_points\": [\r\n {\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"id\": \"fb95bdb3-57ac-4b9e-9620-3aea19504c2b\"\r\n },\r\n {\r\n \"x\": 48,\r\n \"y\": 0,\r\n \"id\": \"f2939976-4d3e-48dc-be86-0f4b0f4894ef\"\r\n },\r\n {\r\n \"x\": 48,\r\n \"y\": 12,\r\n \"id\": \"1df267ef-bd5d-41ac-a492-4d29480d2ff3\"\r\n },\r\n {\r\n \"x\": 0,\r\n \"y\": 12,\r\n \"id\": \"c6be3316-86e1-4872-ad32-38bb00c70d76\"\r\n }\r\n ],\r\n \"featureId\": 272476414,\r\n \"parentFeatureId\": 272289587,\r\n \"shapeLayout\": \"rectangle\"\r\n },\r\n {\r\n \"shapeId\": 9,\r\n \"partId\": \"upper_cabinet_boxes\",\r\n \"x\": 115.33333333333331,\r\n \"y\": 52,\r\n \"z\": 99.10529999999989,\r\n \"rotation\": 180,\r\n \"url\": \"https://d1mb1i73swc8dz.cloudfront.net/ar-composer-v2/models/All-Top Cabinet-Fairbank-Barcelona 2-H4818.glb\",\r\n \"material_url\": \"https://d1mb1i73swc8dz.cloudfront.net/ar-composer-v2/textures/All-Cabinet-Dutch Gray-Trend.glb\",\r\n \"framed\": false,\r\n \"frame_width\": 0.75,\r\n \"frame_height\": 0.25,\r\n \"target_width\": 48,\r\n \"target_depth\": 12,\r\n \"target_height\": 18,\r\n \"width\": 48,\r\n \"height\": 18,\r\n \"depth\": 12,\r\n \"contour_points\": [\r\n {\r\n \"x\": 48,\r\n \"y\": 12,\r\n \"id\": \"b091744b-00bb-4f92-9e69-b447e6e4def6\"\r\n },\r\n {\r\n \"x\": 0,\r\n \"y\": 12,\r\n \"id\": \"4325e622-93fb-414c-b662-f83a86dee364\"\r\n },\r\n {\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"id\": \"300f3d60-3ca2-45c5-9016-1a40122bd839\"\r\n },\r\n {\r\n \"x\": 48,\r\n \"y\": 0,\r\n \"id\": \"7dce39ce-5fb3-4655-bc1c-066af713d4e8\"\r\n }\r\n ],\r\n \"original_points\": [\r\n {\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"id\": \"b091744b-00bb-4f92-9e69-b447e6e4def6\"\r\n },\r\n {\r\n \"x\": 48,\r\n \"y\": 0,\r\n \"id\": \"4325e622-93fb-414c-b662-f83a86dee364\"\r\n },\r\n {\r\n \"x\": 48,\r\n \"y\": 12,\r\n \"id\": \"300f3d60-3ca2-45c5-9016-1a40122bd839\"\r\n },\r\n {\r\n \"x\": 0,\r\n \"y\": 12,\r\n \"id\": \"7dce39ce-5fb3-4655-bc1c-066af713d4e8\"\r\n }\r\n ],\r\n \"featureId\": 272476414,\r\n \"parentFeatureId\": 272289587,\r\n \"shapeLayout\": \"rectangle\"\r\n },\r\n {\r\n \"featureId\": 272209426,\r\n \"shapeId\": 8,\r\n \"partId\": \"hood\",\r\n \"x\": 16.333333333333343,\r\n \"y\": 52,\r\n \"z\": 99.10794999999992,\r\n \"rotation\": 90,\r\n \"url\": \"https://qc-3dfiles.s3.amazonaws.com/ar-composer/All-Hood-GE JVW5361 BS.glb\",\r\n \"width\": 30,\r\n \"height\": 12,\r\n \"depth\": 15.4053\r\n },\r\n {\r\n \"featureId\": 272209426,\r\n \"shapeId\": 7,\r\n \"partId\": \"hood\",\r\n \"x\": 167.83068333333313,\r\n \"y\": 52,\r\n \"z\": 66.43863333333334,\r\n \"rotation\": 180,\r\n \"url\": \"https://qc-3dfiles.s3.amazonaws.com/ar-composer/All-Hood-GE JVW5361 BS.glb\",\r\n \"width\": 30,\r\n \"height\": 12,\r\n \"depth\": 15.4053\r\n },\r\n {\r\n \"featureId\": 272209426,\r\n \"shapeId\": 6,\r\n \"partId\": \"hood\",\r\n \"x\": -6.230683333333214,\r\n \"y\": 52,\r\n \"z\": -38.06666666666658,\r\n \"rotation\": 0,\r\n \"url\": \"https://qc-3dfiles.s3.amazonaws.com/ar-composer/All-Hood-GE JVW5361 BS.glb\",\r\n \"width\": 30,\r\n \"height\": 12,\r\n \"depth\": 15.4053\r\n },\r\n {\r\n \"featureId\": 272209426,\r\n \"shapeId\": 5,\r\n \"partId\": \"hood\",\r\n \"x\": 143.2666666666667,\r\n \"y\": 52,\r\n \"z\": -71.96931666666698,\r\n \"rotation\": -90,\r\n \"url\": \"https://qc-3dfiles.s3.amazonaws.com/ar-composer/All-Hood-GE JVW5361 BS.glb\",\r\n \"width\": 30,\r\n \"height\": 12,\r\n \"depth\": 15.4053\r\n },\r\n {\r\n \"featureId\": 374232550,\r\n \"shapeId\": 4,\r\n \"partId\": \"fridge\",\r\n \"x\": -2.356533333333223,\r\n \"y\": 0,\r\n \"z\": 42.907483333333424,\r\n \"rotation\": 0,\r\n \"url\": \"https://qc-3dfiles.s3.amazonaws.com/ar-composer/All-Fridge-ZLINE RFM-W 36 SS.glb\",\r\n \"width\": 36,\r\n \"height\": 12,\r\n \"depth\": 29.1536\r\n },\r\n {\r\n \"featureId\": 374232550,\r\n \"shapeId\": 3,\r\n \"partId\": \"fridge\",\r\n \"x\": 163.9565333333332,\r\n \"y\": 0,\r\n \"z\": -14.587216666666674,\r\n \"rotation\": 180,\r\n \"url\": \"https://qc-3dfiles.s3.amazonaws.com/ar-composer/All-Fridge-ZLINE RFM-W 36 SS.glb\",\r\n \"width\": 36,\r\n \"height\": 12,\r\n \"depth\": 29.1536\r\n },\r\n {\r\n \"featureId\": 374232550,\r\n \"shapeId\": 2,\r\n \"partId\": \"fridge\",\r\n \"x\": 49.33333333333332,\r\n \"y\": 0,\r\n \"z\": 99.08209999999991,\r\n \"rotation\": 90,\r\n \"url\": \"https://qc-3dfiles.s3.amazonaws.com/ar-composer/All-Fridge-ZLINE RFM-W 36 SS.glb\",\r\n \"width\": 36,\r\n \"height\": 12,\r\n \"depth\": 29.1536\r\n },\r\n {\r\n \"featureId\": 374232550,\r\n \"shapeId\": 1,\r\n \"partId\": \"fridge\",\r\n \"x\": 62.26666666666674,\r\n \"y\": 0,\r\n \"z\": -71.99516666666699,\r\n \"rotation\": -90,\r\n \"url\": \"https://qc-3dfiles.s3.amazonaws.com/ar-composer/All-Fridge-ZLINE RFM-W 36 SS.glb\",\r\n \"width\": 36,\r\n \"height\": 12,\r\n \"depth\": 29.1536\r\n }\r\n]\r\n","//********* NAVIGATION *********//\r\nimport * as types from \"./actionTypes\";\r\nimport {setTrumbleInventoryForFeatures} from \"../api/look-api\";\r\nimport {ROUTES} from \"../routes\";\r\n\r\nexport const setLookOpened = (lookOpened = false) => {\r\n return (dispatch, getState) => {\r\n const store = getState();\r\n const {isMobile} = store.serverState;\r\n dispatch({\r\n type: types.SET_LOOK_OPENED,\r\n payload: {lookOpened, isMobile}\r\n });\r\n }\r\n};\r\n\r\nexport const setLookExpanded = (lookExpanded = false) => ({\r\n type: types.SET_LOOK_OPENED,\r\n payload: {lookExpanded}\r\n});\r\n\r\nexport const setLookParentKeys = (lookParentKeys = []) => ({\r\n type: types.SET_LOOK_PARENT_KEYS,\r\n payload: {lookParentKeys}\r\n});\r\n\r\nexport const setLookViewType = (lookViewType = 1) => ({\r\n type: types.SET_LOOK_VIEW_TYPE,\r\n payload: {lookViewType}\r\n});\r\n\r\nexport const setWishlistPopupOpened = (wishlistPopupOpened = false) => ({\r\n type: types.SET_WISHLIST_POPUP_OPENED,\r\n payload: {wishlistPopupOpened}\r\n});\r\n\r\nexport const setSidebarModalOpened = (sidebarModalOpened = false) => ({\r\n type: types.SET_SIDEBAR_MODAL_OPENED,\r\n payload: {sidebarModalOpened}\r\n});\r\n\r\nexport const setLookActiveFeature = (newLookActiveFeature = null, lookActiveFeaturePositionInList = null) => {\r\n return (dispatch, getState) => {\r\n const store = getState();\r\n const {isMobile} = store.serverState;\r\n dispatch({\r\n type: types.SET_LOOK_ACTIVE_FEATURE,\r\n payload: {lookActiveFeature: newLookActiveFeature, lookActiveFeaturePositionInList, isMobile}\r\n });\r\n\r\n const {settings} = store.fabricatorState;\r\n if (newLookActiveFeature && settings.useTrumbleApi && !newLookActiveFeature.quantityOptions) {\r\n setTrumbleInventoryForFeatures([newLookActiveFeature]).then(() => {\r\n dispatch({\r\n type: types.UPDATE_LOOK_ACTIVE_FEATURE_STOCK_COUNT,\r\n });\r\n })\r\n }\r\n }\r\n};\r\n\r\nexport const setLookActiveCategory = (lookActiveCategory = \"\") => {\r\n return (dispatch, getState) => {\r\n const store = getState();\r\n const {isMobile} = store.serverState;\r\n dispatch({\r\n type: types.SET_LOOK_ACTIVE_CATEGORY,\r\n payload: {lookActiveCategory, isMobile}\r\n });\r\n }\r\n};\r\n\r\nexport const setLookMoreInfoOpened = (moreInfoOpened = \"\", moreInfoContent = \"\") => ({\r\n type: types.SET_LOOK_MORE_INFO_OPENED,\r\n payload: {moreInfoOpened, moreInfoContent}\r\n});\r\n\r\nexport const setLookPageOpened = (lookPageOpened) => {\r\n return (dispatch, getState) => {\r\n const store = getState();\r\n const {isMobile} = store.serverState;\r\n if (isMobile) {\r\n if (lookPageOpened === ROUTES.cart) {\r\n document.body.style.overflow = \"hidden\";\r\n } else if (!lookPageOpened && store.lookState.lookPageOpened === ROUTES.cart) {\r\n document.body.style.overflow = \"\";\r\n }\r\n }\r\n dispatch({\r\n type: types.SET_LOOK_PAGE_OPENED,\r\n payload: {lookPageOpened, isMobile}\r\n });\r\n }\r\n};\r\n\r\nexport const setLookOverlayOpened = (lookOverlayOpened, lookOverlayAction = \"\") => ({\r\n type: types.SET_LOOK_OVERLAY_OPENED,\r\n payload: {lookOverlayOpened, lookOverlayAction}\r\n});\r\n\r\nexport const setLookViewChangeOptions = (lookViewChangeOptions) => ({\r\n type: types.SET_LOOK_VIEW_CHANGE_OPTIONS,\r\n payload: {lookViewChangeOptions}\r\n});\r\n\r\nexport const setLookStylePopup = (lookStylePopup) => ({\r\n type: types.SET_LOOK_STYLE_POPUP,\r\n payload: {lookStylePopup}\r\n});\r\n\r\nexport const setLookRemovePopup = (lookRemovePopup) => ({\r\n type: types.SET_LOOK_REMOVE_POPUP,\r\n payload: {lookRemovePopup}\r\n});\r\n\r\nexport const setLookIntroStep = (introStep) => ({\r\n type: types.SET_LOOK_INTRO_STEP,\r\n payload: {introStep}\r\n});\r\n\r\nexport const setLookIntroHidden = (introHidden) => ({\r\n type: types.SET_LOOK_INTRO_HIDDEN,\r\n payload: {introHidden}\r\n});\r\n\r\nexport const setLookContextMenu = (contextMenu) => ({\r\n type: types.SET_LOOK_CONTEXT_MENU,\r\n payload: {contextMenu}\r\n});\r\n\r\nexport const setLookWallsApplyTo = (lookWallsApplyTo) => ({\r\n type: types.SET_LOOK_WALLS_APPLY_TO,\r\n payload: {lookWallsApplyTo}\r\n});\r\n\r\nexport const setLookAllWallsOpened = (lookAllWallsOpened) => ({\r\n type: types.SET_LOOK_ALL_WALLS_OPENED,\r\n payload: {lookAllWallsOpened}\r\n});\r\n\r\nexport const setLookReturnAction = (lookReturnAction) => ({\r\n type: types.SET_LOOK_RETURN_ACTION,\r\n payload: {lookReturnAction}\r\n});\r\n\r\nexport const setLookDemoPointsClicked = (lookDemoPointsClicked) => ({\r\n type: types.SET_LOOK_DEMO_POINTS_CLICKED,\r\n payload: {lookDemoPointsClicked}\r\n});\r\n\r\nexport const updateNavigationCount = () => ({\r\n type: types.UPDATE_LOOK_NAVIGATION_COUNT,\r\n});\r\n\r\n// export const updateFeatureGroupCount = () => ({\r\n// type: types.UPDATE_LOOK_FEATURE_GROUP_COUNT,\r\n// });\r\n\r\nexport const setLookCompatabilityAlert = (lookCompatabilityAlert) => ({\r\n type: types.SET_LOOK_COMPATABILITY_ALERT,\r\n payload: {lookCompatabilityAlert}\r\n});\r\n\r\nexport const setLookRestoreState = (lookRestoreState) => ({\r\n type: types.SET_LOOK_RESTORE_STATE,\r\n payload: {lookRestoreState}\r\n});\r\n\r\nexport const setLookLockedTutorial = (lookLockedTutorial) => ({\r\n type: types.SET_LOOK_LOCK_TUTORIAL,\r\n payload: {lookLockedTutorial}\r\n});\r\n\r\nexport const setLookAllWallsTutorial = (lookAllWallsTutorial) => ({\r\n type: types.SET_LOOK_ALL_WALLS_TUTORIAL,\r\n payload: {lookAllWallsTutorial}\r\n});\r\n","export const ContentType = {\r\n None: 0,\r\n Layout: 1,\r\n Design: 2,\r\n DisplayRoom: 3,\r\n Loading: 4,\r\n QuotedItems: 5,\r\n RoomScene: 6,\r\n};\r\n\r\nexport const ContentTypeName = {\r\n 1: \"Room Layout\",\r\n 2: \"Design\",\r\n 3: \"Room Ideas\",\r\n 6: \"Room Scene\",\r\n};\r\n\r\nexport const ContentTypeNameTranslate = {\r\n 1: \"desktop.nav.roomLayout\",\r\n 2: \"desktop.nav.designButton\",\r\n 3: \"desktop.nav.roomIdeas\",\r\n 6: \"desktop.nav.roomScene\",\r\n};\r\n\r\nexport const PartMenuType = {\r\n Simple: 0,\r\n Complex: 1,\r\n};\r\n\r\nexport const UserPopupTypes = {\r\n Unlock: 1, // simple User Login popup\r\n GetQuote: 2, // Get quote button\r\n NewDesign: 3, // when N clicks happen & Email Design Click\r\n Schedule: 4, // schedule button\r\n};\r\nexport const ConfirmPopupTypes = {\r\n ConsultationRequest: 1,\r\n SqftResetChanges: 2,\r\n SqftUpdateQuestion: 3,\r\n AssignQuoteOnExistingUser: 4,\r\n DeleteCartItemsPopup: 5,\r\n ChangeWizardToPreviousStepSelection: 6,\r\n ReplaceRoomWhenItExistsInCartButWeAddNew: 7,\r\n};\r\n\r\nexport const UserPopupContent = {\r\n register: \"register\",\r\n login: \"login\",\r\n terms: \"terms\",\r\n forgot: \"forgot\",\r\n twoFA: \"twoFA\",\r\n twoFAVerify: \"twoFAVerify\",\r\n};\r\n\r\nexport const QuoteRequestType = {\r\n RequestQuote: 'RequestQuote',\r\n ScheduleAnAppointment: 'ScheduleAnAppointment',\r\n RequestDateTime: 'RequestDateTime',\r\n RegularDesign: 'RegularDesign', //Email Design\r\n RequestConsultation: 'RequestConsultation'\r\n};\r\n\r\nexport const UserAction = {\r\n Login: 1,\r\n Register: 2\r\n};\r\n\r\nexport const SqftUpdateTypes = {\r\n Reset: 1,\r\n UpdateData: 2\r\n};\r\n\r\nexport const dbFeatureRelatedFeaturesProperties = [\"relatedFeatures\", \"bundledFeatures\"];\r\nexport const dbFeatureFilterProperties = [\"fabFilterValueIDs\", \"filterValueIDs\"];\r\nexport const otherMissingProperties = [\"thirdPartyAR3DUrls\", \"thirdPartyAR3DMetaData\",\"lixilAR3DUrls\",\"lixilQRCode\"];\r\n","import COLOR_THEMES from \"./colorThemes\";\r\nimport $ from \"jquery\";\r\nimport {hardCodeIsPorcelanosa, hardCodeIsRenuit} from \"../../../../../misc/fabricatorHardcode\";\r\nimport {SQFT_AR3D_GLB_VIEWER} from \"../../../constants\";\r\n\r\nexport const MIN_DISTANCE_BETWEEN_FREE_DRAW_POINTS = 1\r\n\r\nclass SqftConfig {\r\n constructor() {\r\n // Initialization of properties\r\n this.ctx = null;\r\n this.measureUnit = \"Imperial\";\r\n this.mmDivider = 1000;\r\n this.mm2ToM2Divider = 1000000;\r\n this.millimetersMultiplier = 25.4;\r\n this.inchesToMMultiplier = 1 / 39.37;\r\n this.sqftToMmMultiplier = 92903;\r\n this.sqftToM2Multiplier = 1 / 10.764;\r\n this.lnftToMmMultiplier = 304.8;\r\n this.waterfallImperialHeight = 36;\r\n this.waterfallMetricHeight = 900;\r\n this.miteredEdgeAdditionalImperialArea = hardCodeIsPorcelanosa() ? 1.5 : 0;\r\n this.miteredEdgeAdditionalMetricArea = 0; //40;//38.1;\r\n this.edgeHeightImperial = 1.25;\r\n this.edgeHeightMetric = 30;\r\n this.minApplianceLineLength = 1;\r\n this.maxApplianceLineLength = 150;\r\n this.slab = {\r\n imageWidthMetric: 3200,\r\n imageHeightMetric: 1600,\r\n imageWidthImperial: 120,\r\n imageHeightImperial: 60\r\n };\r\n this.workspace = {\r\n canvas: $('#workspace'),\r\n gridSize: 12,\r\n getScaledGridSize: () => this.getScaledGridSize(this.workspace.gridSize),\r\n getDefaultScaledGridSize: () => this.getScaledGridSize(this.workspace.gridSize, true),\r\n fontSize: $(window).width() <= 1024 ? 14 : 16,\r\n fontSizeMetric: $(window).width() <= 1024 ? 14 : 16,\r\n fontSizeSmallest: $(window).width() <= 1024 ? 11 : 11,\r\n debug: false,\r\n snapToGrid: false,\r\n menuItemActive: null\r\n };\r\n this.defaultScaleExport = 7;\r\n this.zoomSpeed = 5;\r\n this.controls = {\r\n scale: $('#scale-control'),\r\n scaleHoriz: $('#scale-control-horiz'),\r\n snapToGrid: $('#snapToGrid'),\r\n debug: $('#debug'),\r\n delete: $('#delete'),\r\n flipH: $('#flipH'),\r\n flipV: $('#flipV'),\r\n rotateLeft: $('#rotateLeft'),\r\n rotateRight: $('#rotateRight')\r\n };\r\n this.activeClass = 'active';\r\n this.activePalletItemClass = \"pallet-tool-icon-selected\";\r\n this.groups = {\r\n tools: \"tools\"\r\n };\r\n this.filterGroups = [];\r\n this.tutorialIsRunning = false;\r\n this.highlight = {\r\n points: false,\r\n lines: false,\r\n type: '',\r\n id: null,\r\n demoShow: false,\r\n rotateAngle: false,\r\n };\r\n this.activeTheme = Object.keys(COLOR_THEMES)[0];\r\n this.SNAP_OFFSET = 12;\r\n this.activeFontRegular = \"playregular\";\r\n this.activeFontBold = \"playbold\";\r\n this.crownMoldingParams = {\r\n distance: 10\r\n };\r\n this.threeD = {\r\n //glbViewer: SQFT_AR3D_GLB_VIEWER.singleModel,\r\n glbViewer: SQFT_AR3D_GLB_VIEWER.separateModels,\r\n useGoogleModelViewer: false, // this requires singleModel\r\n useStagingDomain: false,\r\n }\r\n this.shouldUseCabinetDoorsSQFT = hardCodeIsRenuit();\r\n\r\n // Initialize dependent properties\r\n this.initializeDependentProperties();\r\n\r\n // Add event listeners\r\n document.addEventListener('DOMContentLoaded', this.initialize);\r\n window.addEventListener('resize', this.updateDimensions);\r\n }\r\n\r\n initializeDependentProperties = () => {\r\n this.fieldWidth = this.getMM() * 13;\r\n this.fieldWidthCabinet = 4;\r\n this.updateDimensions();\r\n this.updateDefaultScale();\r\n this.scale = this.defaultScale;\r\n }\r\n\r\n getMM = () => {\r\n const getDPI = () => {\r\n const div = document.createElement('div');\r\n div.style.height = '1in';\r\n const body = document.getElementsByTagName('body')[0];\r\n body.appendChild(div);\r\n const dpi = div.offsetHeight;\r\n body.removeChild(div);\r\n return dpi === 0 ? 96 : dpi;\r\n }\r\n return getDPI() / 25.4;\r\n }\r\n\r\n isKiosk = (() => {\r\n let isKiosk = false;\r\n try {\r\n isKiosk = (parent && parent.parent && parent.parent.window.app && parent.parent.window.app.db);\r\n } catch (e) {\r\n isKiosk = false;\r\n }\r\n return isKiosk;\r\n })();\r\n\r\n kioskApp = (() => {\r\n if (this.isKiosk) {\r\n return parent.parent.window.app;\r\n }\r\n })();\r\n\r\n initialize = () => {\r\n this.updateDimensions();\r\n this.initializeDependentProperties();\r\n }\r\n\r\n updateDimensions = () => {\r\n this.updateDefaultScale();\r\n this.updateWorkspace(window.innerWidth);\r\n }\r\n\r\n updateDefaultScale = () => {\r\n this.defaultScale = window.innerWidth <= 1024 ? 1.5 : 3.75;\r\n };\r\n\r\n updateWorkspace = (windowWidth) => {\r\n this.workspace.fontSize = windowWidth <= 1024 ? 14 : 16;\r\n this.workspace.fontSizeMetric = windowWidth <= 1024 ? 14 : 16;\r\n this.workspace.fontSizeSmallest = windowWidth <= 1024 ? 11 : 11;\r\n }\r\n\r\n getMeasureMultiplier = () => {\r\n switch (this.measureUnit) {\r\n case \"Metric\":\r\n return this.millimetersMultiplier;\r\n case \"Metric-meters\":\r\n return 1 / 39.37;\r\n case \"Imperial\":\r\n default:\r\n return 1;\r\n }\r\n }\r\n\r\n getMeasureUnitPostfix = (shouldAddWhitespace = false) => {\r\n switch (this.measureUnit) {\r\n case \"Metric\":\r\n return shouldAddWhitespace ? \" mm\" : \"mm\";\r\n case \"Imperial\":\r\n default:\r\n return \"\\\"\";\r\n }\r\n }\r\n\r\n isDevMode = () => window.location.href.includes(\"dev=1\");\r\n\r\n isCabinetGroupInURL = () => window.location.href.includes(\"cabinets=1\");\r\n\r\n isSQFTEnabledInURL = () => window.location.hash.includes(\"sqft\");\r\n\r\n getScaledGridSize = (gridSize, isDefault = false) => {\r\n const scale = isDefault ? this.defaultScale : this.scale;\r\n let scaledGridSize = Math.round(gridSize / scale);\r\n let nearest = (12 % scaledGridSize);\r\n return nearest < scaledGridSize / 2 ?\r\n scaledGridSize - nearest :\r\n scaledGridSize + nearest;\r\n }\r\n}\r\n\r\nexport default new SqftConfig();\r\n","import clone from 'lodash/clone';\r\nimport $ from \"jquery\";\r\n\r\nimport Shape from \"./shapes/sqftShape\";\r\nimport MovableImage from \"./shapes/movableImage\";\r\nimport WorkspaceEvents, {clearAllMenusEvents} from \"./workspace/workspaceEvents\";\r\nimport EventManager from \"./../store/sqftEventManager\";\r\nimport RulerOverlay from \"./workspace/ruler\";\r\nimport history from \"./workspaceHistory\";\r\nimport config from \"./../store/sqftConfig\";\r\nimport {\r\n mmToM,\r\n sqInchesToSqFoot,\r\n mm2ToM2,\r\n getEdgeLength,\r\n getBacksplashArea, getEdgeArea, getPointField\r\n} from \"../../../helpers/sqftHelper\";\r\n//todo sqft-react\r\n// import edges from \"./controls/edges\";\r\n// import Edges from \"./controls/edges\";\r\n// import TranslatesProvider from \"./../../../translatesProvider\";\r\nimport ShapeHelper, {getEdgeFeatures} from \"../../../helpers/shapeHelper\";\r\nimport store from \"../../../../../store\";\r\nimport {getBacksplashLength} from \"../../../helpers/sqftHelper\";\r\nimport {\r\n FEATUREGROUP_PART_ID,\r\n MOVABLE_IMAGE_TYPES,\r\n RESOURCE_ATTACHED_TO_TYPE,\r\n SHAPE_PART_ID,\r\n SHAPE_TYPE,\r\n WORKSPACE_RESOURCES\r\n} from \"../../../constants\";\r\nimport ResultImages from \"./workspace/resultImages\";\r\nimport sqftShapeManager from \"../store/sqftShapeManager\";\r\nimport sqftImageManager from \"../store/sqftImageManager\";\r\nimport {deleteCroppedSlabImage, setSqftCroppedSlabImages} from \"../../../../../actions/sqftSlabFunctions\";\r\nimport sqftSlabManager from \"../store/sqftSlabManager\";\r\nimport {updateSQFTCalculations} from \"../../../../../actions/sqftFunctions\";\r\nimport {attachResource, closeSQFTPopup} from \"./controls/resourseCanas\";\r\nimport slabWorkspace from \"./slab/slabWorkspace\";\r\nimport sqftShape from \"./shapes/sqftShape\";\r\nimport {checkShapeForAvailablePartId} from \"./shapes/shapeFunctions\";\r\nimport {getFeatureGroupName} from \"../../../../../misc/helpers\";\r\nimport {getFeatureGroup} from \"../../../helpers/sqftHelperUi\";\r\nimport {getQtCatName} from \"../../../helpers/sqftQuotesHelper\";\r\nimport cabinetWorkspace from \"./cabinet/cabinetWorkspace\";\r\nimport LineCorner from \"./shapes/lineHooks/lineCorner\";\r\nimport TextBoxManager from \"./workspace/textBoxManager\";\r\nimport {\r\n setShapeIdsWithMissingFeature,\r\n setShouldShowChangeShapeFeatureMissingMessage,\r\n setSQFTPopup\r\n} from \"../../../../../actions/sqftMenuFunctions\";\r\nimport {getShapeFeatureId} from \"../../../helpers/featureHelper\";\r\nimport sqftResourcesManager from \"../store/sqftResoursesManager\";\r\nimport {SHAPE_PART_IDS_VISIBLE_ONLY_IN_THE_SLAB_MODE} from \"../../../constantsFeature\";\r\nimport workspaceControllers, {importControllersData} from \"../store/workspaceControllers\";\r\nimport {isSFTCabinetsGroup} from \"../../../helpers/sqftNavigationHelper\";\r\nimport sqftShapeIntersectionsManager from \"../store/sqftShapeIntersectionsManager\";\r\nimport {FeatureObjectDTO} from \"../../../dto/FeatureObjectDTO\";\r\nimport SqftStore from \"../store/sqftStore\";\r\n\r\nconst workspace = function() {\r\n //private variables\r\n var canvas = null;\r\n var self = this;\r\n var state = {\r\n mouseDown: false,\r\n mouseDownPosition: null,\r\n allowDragEdge: false,\r\n allowDragBumpoutEdge: false,\r\n allowDragMiteredEdge: false,\r\n lineHighlight: true,\r\n loading: false\r\n };\r\n var objIds = 0;\r\n var pos = { //workspace top-left corner position\r\n x: 0,\r\n y: 0\r\n };\r\n var shapes = [];\r\n var nodes = {\r\n appBody : $('body'),\r\n tools: {\r\n designDefault: $('#design-default')\r\n }\r\n };\r\n //public variables\r\n this.name = 'workspace';\r\n this.isInitialized = false;\r\n this.isEdgeFeatureError = false;\r\n this.dataHasBeenImported = false;\r\n this.isLastParent = true; // used to get {x: 0, y:0} position\r\n this.miteredController = null;\r\n this.underlaymentController = null;\r\n this.resultImages = new ResultImages(this);\r\n this.textBoxManager = new TextBoxManager();\r\n this[WORKSPACE_RESOURCES.spacers] = [];\r\n this[WORKSPACE_RESOURCES.handles] = [];\r\n this[WORKSPACE_RESOURCES.hinge] = [];\r\n this[WORKSPACE_RESOURCES.walls] = [];\r\n this[WORKSPACE_RESOURCES.shapeColors] = [];\r\n this[WORKSPACE_RESOURCES.waterfall] = [];\r\n this[WORKSPACE_RESOURCES.removedFeatures] = [];\r\n this[WORKSPACE_RESOURCES.snappedShapeGroups] = [];\r\n this[WORKSPACE_RESOURCES.selectedShapes] = [];\r\n this[WORKSPACE_RESOURCES.images3d] = [];\r\n\r\n //private functions\r\n function setCanvas(value) {\r\n canvas = value;\r\n }\r\n var moveWorkspace = function(mousePos) {\r\n var xDiff = mousePos.x - state.mouseDownPosition.x;\r\n var yDiff = mousePos.y - state.mouseDownPosition.y;\r\n\r\n pos.x -= xDiff;\r\n state.mouseDownPosition.x = mousePos.x;\r\n\r\n pos.y -= yDiff;\r\n state.mouseDownPosition.y = mousePos.y;\r\n\r\n slabWorkspace.setPos({\r\n x: slabWorkspace.pos.x += xDiff,\r\n y: slabWorkspace.pos.y += yDiff\r\n }\r\n )\r\n };\r\n //private events\r\n var onMouseDown = function(mousePos, e) {\r\n void e;\r\n //debugger // eslint-disable-line no-debugger\r\n if (!window.lineInputFocused) {\r\n EventManager.stealCursor(true, true);\r\n state.mouseDown = true;\r\n state.mouseDownPosition = mousePos;\r\n EventManager.setCursor('grabbing', self, false);\r\n //debugger // eslint-disable-line no-debugger\r\n return true;\r\n }\r\n };\r\n\r\n function onMouseUp(mousePos, e) {\r\n state.mouseDown = false;\r\n state.mouseDownPosition = null;\r\n // var selectedMenu = $('.pallet-tool-icon-selected');\r\n // if (!(selectedMenu && selectedMenu.attr('data-action') === \"rotate-left\" || selectedMenu.attr('data-action') === \"delete\")) {\r\n // EventManager.resetCursor(self);\r\n // config.highlight.type = '';\r\n // $('.steps-scope-config-button').removeClass('active');\r\n // }\r\n //todo this takes too much time to update\r\n sqftShapeIntersectionsManager.updateShapesIntersections();\r\n workspaceControllers.snappedShapeGroups.updateShapesSnappedGroups(false);\r\n\r\n return onMouseMove(mousePos, e);\r\n }\r\n function onMouseMove(mousePos, e) {\r\n //debugger // eslint-disable-line no-debugger\r\n if(e.terminate) {\r\n return false;\r\n }\r\n if(state.mouseDown) {\r\n moveWorkspace(mousePos);\r\n // EventManager.setCursor('grabbing', self);\r\n } else {\r\n EventManager.resetCursor(self);\r\n }\r\n return true;\r\n }\r\n\r\n //public functions\r\n this.getObjIds = function() {\r\n return objIds;\r\n };\r\n this.setObjIds = (value) => {\r\n objIds = value\r\n };\r\n this.stealCursor = function(who) {\r\n EventManager.resetCursor(self);\r\n for(var i = 0; i < shapes.length; i++) {\r\n shapes[i].stealCursor(who);\r\n }\r\n };\r\n this.setAllowEdges = function(allow) {\r\n state.allowDragEdge = allow;\r\n };\r\n this.getAllowEdges = function() {\r\n return state.allowDragEdge\r\n };\r\n this.setAllowBumpoutEdges = function(allow) {\r\n state.allowDragBumpoutEdge = allow;\r\n };\r\n this.getAllowBumpoutEdges = function() {\r\n return state.allowDragBumpoutEdge\r\n };\r\n this.setAllowMiteredEdges = function(allow) {\r\n state.allowDragMiteredEdge = allow;\r\n };\r\n this.getAllowMiteredEdges = function() {\r\n return state.allowDragMiteredEdge\r\n };\r\n this.setAllowLineHighlight = function(allow) {\r\n state.lineHighlight = allow;\r\n };\r\n this.getAllowLineHighlight = function() {\r\n return state.lineHighlight\r\n };\r\n this.getCenter = function() {\r\n return {\r\n x: pos.x * -1,\r\n y: pos.y * -1\r\n }\r\n };\r\n this.setCenter = function(canvasWidth = window.innerWidth, canvasHeight = window.innerHeight) {\r\n pos.x = parseInt(0 - (canvasWidth / 2));\r\n pos.y = parseInt(0 - (canvasHeight / 2));\r\n //console.log(\"pos.x!\", pos.x)\r\n //console.log(\"pos.y!\", pos.y)\r\n };\r\n this.getVisibleCenter = function() {\r\n return {\r\n x: (pos.x + (canvas.width()/2)) / config.scale,\r\n y: (pos.y + (canvas.height()/2)) / config.scale\r\n };\r\n };\r\n this.getAllShapePoints = () => {\r\n let allShapePoints = [];\r\n for (const shape of shapes) {\r\n //allShapePoints.push(...shape.getPointFieldArray());\r\n const shapeCenter = shape.getCenter();\r\n const shapeCenterPointField = getPointField(shapeCenter, shape);\r\n void shapeCenterPointField;\r\n allShapePoints.push(shapeCenter);\r\n }\r\n return allShapePoints\r\n }\r\n this.getShapesCenterPoint = () => {\r\n const allShapePoints = this.getAllShapePoints();\r\n return ShapeHelper.getCenterPoint(allShapePoints);\r\n }\r\n this.getCanvas = function() {\r\n return canvas[0];\r\n };\r\n this.get$Canvas = function() {\r\n return canvas;\r\n };\r\n this.getOffset = function() {\r\n return self.getCenter();\r\n };\r\n this.setPosition = (newPos) => {\r\n slabWorkspace.setPos({\r\n x: slabWorkspace.pos.x += pos.x - newPos.x,\r\n y: slabWorkspace.pos.y += pos.y - newPos.y\r\n }\r\n )\r\n pos = clone(newPos);\r\n };\r\n this.getPosition = function() {\r\n return pos;\r\n };\r\n this.getScale = function() {\r\n return config.scale;\r\n };\r\n this.getState = function() {\r\n return state;\r\n };\r\n this.isEmpty = () => {\r\n return this.getShapes().length === 0\r\n }\r\n this.getHoverShape = function() {\r\n for (var i = 0; i < shapes.length; i++) {\r\n var shape = shapes[i];\r\n if (shape.isHovering()) {\r\n return shape;\r\n }\r\n }\r\n };\r\n this.getHoveredSqftShape = function() {\r\n for (let i = 0; i < shapes.length; i++) {\r\n let shape = shapes[i];\r\n if (shape.isHovering() && shape instanceof sqftShape) {\r\n return shape;\r\n }\r\n }\r\n };\r\n this.getMovingShape = () => {\r\n for (let i = 0; i < shapes.length; i++) {\r\n let shape = shapes[i];\r\n if (shape.getState().mouseDown && (shape instanceof sqftShape || shape instanceof MovableImage)) {\r\n return shape;\r\n }\r\n }\r\n };\r\n this.getHoverBumpout = function() {\r\n for (let i = 0; i < shapes.length; i++) {\r\n let shape = shapes[i];\r\n let lines = shape.getLines ? shape.getLines() : null;\r\n if (lines) {\r\n for (let n = 0; n < lines.length; n++) {\r\n if (lines[n].isWithBumpout && lines[n].isWithBumpout() && lines[n].bumpoutOverlay.isHoveringRect()) {\r\n return lines[n];\r\n }\r\n }\r\n }\r\n }\r\n };\r\n this.getLineWithMovingBumpout = function() {\r\n for (let i = 0; i < shapes.length; i++) {\r\n let shape = shapes[i];\r\n let lines = shape.getLines ? shape.getLines() : null;\r\n if (lines) {\r\n for (let n = 0; n < lines.length; n++) {\r\n if (lines[n].isWithBumpout && lines[n].isWithBumpout() && lines[n].bumpoutOverlay.isBumpoutPointMoving()) {\r\n return lines[n];\r\n }\r\n }\r\n }\r\n }\r\n };\r\n this.getHoverPoint = function() {\r\n for(var i = 0; i < shapes.length; i++) {\r\n if(typeof (shapes[i].getHoverPoint) === 'function') {\r\n var point = shapes[i].getHoverPoint();\r\n if(point) {\r\n return point;\r\n }\r\n }\r\n }\r\n };\r\n this.getHoverMiteredPoint = function() {\r\n for(let i = 0; i < shapes.length; i++) {\r\n if(typeof (shapes[i].getHoverPoint) === 'function' && shapes[i].isWithMitered()) {\r\n let point = shapes[i].getHoverMiteredPoint();\r\n if(point) {\r\n return point;\r\n }\r\n }\r\n }\r\n };\r\n this.getHoveredLine = function() {\r\n for (let i = 0; i < shapes.length; i++) {\r\n if (typeof (shapes[i].getHoverSegment) === 'function') {\r\n let hoveredLine = shapes[i].getHoverSegment();\r\n if (hoveredLine) {\r\n return hoveredLine;\r\n }\r\n }\r\n }\r\n };\r\n this.getHoveredLines = (skipShapeIds = []) => {\r\n const iterateShapes = shapes.filter(shp => !skipShapeIds.includes(shp.id));\r\n const hoveredLines = [];\r\n for (let i = 0; i < iterateShapes.length; i++) {\r\n if (typeof (iterateShapes[i].getHoverSegment) === 'function') {\r\n let hoveredLine = iterateShapes[i].getHoverSegmentV2();\r\n if (hoveredLine) {\r\n hoveredLines.push(hoveredLine);\r\n }\r\n }\r\n }\r\n return hoveredLines\r\n };\r\n this.getHoveredLineCorner = function() {\r\n for (let i = 0; i < shapes.length; i++) {\r\n if (typeof (shapes[i].getHoverSegmentOutlineCorner) === 'function') {\r\n let hoveredLine = shapes[i].getHoverSegmentOutlineCorner();\r\n if (hoveredLine) {\r\n return hoveredLine;\r\n }\r\n }\r\n }\r\n };\r\n this.getShapesWithoutAttachedResources = (isWithoutHidden = false) => {\r\n if (isWithoutHidden) {\r\n return shapes.filter(shape => !shape.isHidden);\r\n }\r\n return shapes\r\n }\r\n\r\n this.getShapes = (isWithoutHidden = false) => {\r\n const state = store.getState();\r\n const attachedToLineResources = state.sqftResourceState.attachedToLine;\r\n\r\n if (isWithoutHidden) {\r\n return shapes.concat(attachedToLineResources).filter(shape => !shape.isHidden);\r\n }\r\n\r\n return shapes.concat(attachedToLineResources);\r\n };\r\n this.getShapeIds = function() {\r\n const shapes = this.getShapes();\r\n\r\n return shapes.map(shape => shape.id);\r\n };\r\n this.getShapesByIds = (ids) => {\r\n const shapes = this.getShapes();\r\n\r\n return shapes.filter(shape => ids.includes(shape.id));\r\n };\r\n this.getShapesBySlabModeCoreParentId = (ids) => {\r\n const shapes = this.getShapes();\r\n\r\n return shapes.filter(shape => ids.includes(shape.slabModeCoreParentId));\r\n };\r\n\r\n this.clearWorkspace = () => {\r\n this.removeAllShapes();\r\n objIds = 0;\r\n shapes = [];\r\n this.textBoxManager.removeAllTextBoxes();\r\n sqftImageManager.removeAllSlabImages();\r\n sqftSlabManager.removeAllSlabBacksplashes();\r\n sqftResourcesManager.deleteAllResources();\r\n sqftResourcesManager.deleteAllMiteredSections();\r\n sqftSlabManager.deleteShapeOffset();\r\n }\r\n\r\n this.import = (importData) => {\r\n //todo on cancel click line state.withBumout somehow turns to false\r\n this.clearWorkspace();\r\n clearAllMenusEvents();\r\n SqftStore.edgeFeatures = [];\r\n\r\n console.log(\"importData to SQFT\", importData);\r\n this.dataHasBeenImported = true;\r\n objIds = importData.objIds || 0;\r\n const values = importData.countertops || importData.shapes; // QCDES-1639 \"shapes\" for old compatibility\r\n state.loading = true;\r\n let _images = [];\r\n let _attachedResources = [];\r\n if (values) {\r\n for (let i = values.length - 1; i >= 0; i--) {\r\n let value = values[i];\r\n if (value.lines) {\r\n this.importShape(value);\r\n } else if (Object.keys(RESOURCE_ATTACHED_TO_TYPE).some((key) => key === value.type)) {\r\n _attachedResources.push(value);\r\n } else if (value.image && value.type !== MOVABLE_IMAGE_TYPES.slabImage) {\r\n _images.push(value);\r\n }\r\n }\r\n }\r\n //1) Import additional shapes that are visible only in the slab mode\r\n sqftSlabManager.importSlabBacksplashes(importData.slabAdditionalShapesList || []);\r\n\r\n //2) Add attached resources\r\n //We will skip adding mitered as it was already added when the line was initiated\r\n for (const attachedResource of _attachedResources) {\r\n let lines = this.getLinesAndLineCorners();\r\n lines.forEach((line) => {\r\n if (attachedResource.attachedToId === line.id) {\r\n line.isDisabledInPopup = attachedResource.isDisabledInPopup;\r\n attachResource(line.isLine ? line : null,\r\n line instanceof LineCorner ? line : null,\r\n attachedResource.type,\r\n attachedResource.featureId,\r\n attachedResource.partId,\r\n attachedResource.name,\r\n attachedResource.height ? attachedResource.height : attachedResource.featureId, //support for old quotes, can be removed in future\r\n attachedResource.id,\r\n attachedResource.qtCatName\r\n );\r\n } else if (attachedResource.attachedTo === line.id) {\r\n //old version support\r\n attachResource(line.isLine ? line : null,\r\n line instanceof LineCorner ? line : null,\r\n attachedResource.type,\r\n attachedResource.featureId,\r\n attachedResource.partId,\r\n attachedResource.image.name,\r\n attachedResource.height ? attachedResource.height : attachedResource.featureId, //support for old quotes, can be removed in future\r\n attachedResource.id\r\n );\r\n }\r\n });\r\n }\r\n //Add movable images\r\n\r\n for (let i = 0; i < _images.length; i++) {\r\n this.importImage(_images[i]);\r\n\r\n // if (data.attachedTo) {\r\n // switch(value.type) {\r\n // case \"backsplash\":\r\n // case \"wall\":\r\n // if (value.part === 'lineCorner') {\r\n // data.attachedTo.addBacksplashToCornerLine(value.image.name, value.type, value.image.id);\r\n // } else {\r\n // data.attachedTo.addBacksplashToLine(value.image.name, value.type, value.image.id);\r\n // }\r\n // break;\r\n // case \"edge\":\r\n // if (value.part === 'lineCorner') {\r\n // data.attachedTo.lineCorner.addEdgeToCornerLine(value.image.name, value.image.id);\r\n // } else {\r\n // data.attachedTo.addEdgeToLine(value.image.name, value.image.id);\r\n // }\r\n // break;\r\n // }\r\n // }\r\n }\r\n\r\n this.textBoxManager.setImportedTextBoxes(importData.textBoxes);\r\n sqftImageManager.importSlabImages(importData.slabImages || []);\r\n\r\n const {sqftMenuState} = store.getState();\r\n const {isShapeFeatureMissing} = sqftMenuState;\r\n if (isShapeFeatureMissing) {\r\n this.showChangeShapeColorsMessage();\r\n }\r\n importControllersData(importData.controllers);\r\n\r\n history.rememberShapes();\r\n state.loading = false;\r\n\r\n const reduxState = store.getState();\r\n const updateCalculations = reduxState.sqftState.updateCalculations;\r\n store.dispatch(updateSQFTCalculations(updateCalculations + 1));\r\n };\r\n this.importImage = (imageData) => {\r\n const image = this.generateImage(imageData.image);\r\n const importedMovableImage = this.addImage(\r\n image,\r\n imageData.size.width,\r\n imageData.size.height,\r\n imageData.attachedTo,\r\n imageData.attachedTo ? imageData.attachedTo.getParent() : null,\r\n imageData.type,\r\n imageData.subtype,\r\n null,\r\n null,\r\n imageData.part,\r\n imageData.id,\r\n imageData.priority,\r\n imageData.featureId\r\n );\r\n // _img.pos.x = imageData.pos.x;\r\n // _img.pos.y = imageData.pos.y;\r\n importedMovableImage.importData(imageData); //import object here\r\n\r\n return importedMovableImage\r\n }\r\n this.generateImage = (imageData) => {\r\n let image = new Image();\r\n for (const imageProperty in imageData) {\r\n if (imageData.hasOwnProperty(imageProperty)) {\r\n image[imageProperty] = imageData[imageProperty];\r\n }\r\n }\r\n return image\r\n };\r\n this.importShape = (shapeData) => {\r\n let shape = new Shape();\r\n shape.import(shapeData);\r\n shapes.push(shape);\r\n\r\n return shape\r\n }\r\n this.showChangeShapeColorsMessage = () => {\r\n const {sqftMenuState} = store.getState();\r\n const {isShapeFeatureMissing, shapeIdsWithMissingFeature} = sqftMenuState;\r\n if (isShapeFeatureMissing) {\r\n store.dispatch(setSQFTPopup(\r\n {\r\n title: this.intl.formatMessage({id: \"sqft.popup.title.systemMessage\"}),\r\n content: this.intl.formatMessage({id: \"sqft.popup.system.shapeFeaturesWasFailed\"}),\r\n isOpened: true,\r\n confirmCallback: () => {\r\n this.removeShapeWithIds(shapeIdsWithMissingFeature);\r\n store.dispatch(setShapeIdsWithMissingFeature([]));\r\n store.dispatch(setShouldShowChangeShapeFeatureMissingMessage(false));\r\n closeSQFTPopup();\r\n },\r\n confirmText: this.intl.formatMessage({id: \"sqft.popup.button.yes\"}),\r\n cancelCallback: () => {\r\n store.dispatch(setShapeIdsWithMissingFeature([]));\r\n store.dispatch(setShouldShowChangeShapeFeatureMissingMessage(false));\r\n closeSQFTPopup();\r\n },\r\n cancelText: this.intl.formatMessage({id: \"sqft.popup.button.no\"}),\r\n }\r\n ));\r\n }\r\n }\r\n this.getPointProperty = (property) => {\r\n let arcLengths = [];\r\n for (let i = 0; i < shapes.length; i++) {\r\n let shape = shapes[i];\r\n if (shape.getLines) {\r\n let lines = shape.getLines();\r\n for (let n = 0; n < lines.length; n++) {\r\n let point = lines[n].from;\r\n if (point[property] > 0) {\r\n arcLengths.push({\r\n id: point.id,\r\n value: point[property],\r\n featureId: point.featureId,\r\n qtCatName: getQtCatName(),\r\n quantity: 1,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return arcLengths;\r\n };\r\n this.getSink = function() {\r\n var sinks = [];\r\n for(var i = 0; i < shapes.length; i++) {\r\n var shape = shapes[i];\r\n if(shape.getAttachedTo && !shape.getAttachedTo()) { //sink not edging\r\n var img = shape.getImage();\r\n var sinkId = img.dataset.id;\r\n if(sinkId) {\r\n var bExists = false;\r\n for(var n = 0; n < sinks.length; n++) {\r\n if(sinks[n].id === sinkId) {\r\n sinks[n].qty++;\r\n bExists = true;\r\n break;\r\n }\r\n }\r\n if(!bExists) {\r\n sinks.push({\r\n sink: img,\r\n name: img.dataset.name,\r\n id: sinkId,\r\n qty: 1\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return sinks;\r\n };\r\n /**\r\n * get all bumpouts\r\n */\r\n this.getBumpouts = () => {\r\n return shapes\r\n .filter(shape => shape.getLines)\r\n .flatMap(shape =>\r\n shape.getLines()\r\n .filter(line => line.isWithBumpout && line.isWithBumpout())\r\n .map(line => {\r\n const area = config.measureUnit === \"Metric\"\r\n ? line.bumpoutOverlay.getBumpoutTotalArea().millimeters\r\n : line.bumpoutOverlay.getBumpoutTotalArea().inches;\r\n const featureObjectDTO = new FeatureObjectDTO(line.bumpoutOverlay.id, FEATUREGROUP_PART_ID.specialty_cut_and_designs, line.bumpoutOverlay.featureId);\r\n featureObjectDTO.addBumpoutArea(area)\r\n\r\n return featureObjectDTO;\r\n })\r\n );\r\n };\r\n\r\n this.getLines = () => {\r\n let allLines = [];\r\n for (let i = 0; i < shapes.length; i++) {\r\n let shape = shapes[i];\r\n if (shape.getLines && shape instanceof sqftShape) {\r\n allLines = allLines.concat(shape.getLines());\r\n }\r\n }\r\n\r\n return allLines;\r\n };\r\n\r\n this.getLineCorners = () => {\r\n let allLineCorners = [];\r\n for (let i = 0; i < shapes.length; i++) {\r\n let shape = shapes[i];\r\n if (shape.getLineCorners) {\r\n allLineCorners = allLineCorners.concat(shape.getLineCorners());\r\n }\r\n }\r\n\r\n return allLineCorners;\r\n };\r\n\r\n this.getLinesAndLineCorners = () => {\r\n return this.getLines().concat(this.getLineCorners())\r\n }\r\n\r\n this.getLineById = (id) => {\r\n let allLines = this.getLines();\r\n\r\n return allLines.find((line) => line.id === id);\r\n };\r\n\r\n this.getLineCornerById = (id) => {\r\n let allLines = this.getLines();\r\n const line = allLines.find((line) => line.lineCorner !== undefined && line.lineCorner.id === id);\r\n\r\n if (line !== undefined) {\r\n return line.lineCorner\r\n }\r\n };\r\n\r\n this.getLineOrCornerLineById = (id) => {\r\n let lineSegment = this.getLineById(id)\r\n if (lineSegment) {\r\n return lineSegment\r\n }\r\n return this.getLineCornerById(id)\r\n };\r\n\r\n this.getMiteredSections = function() {\r\n // let mitered = [];\r\n // for(let i = 0; i < shapes.length; i++) {\r\n // let shape = shapes[i];\r\n // if(shape.getLines) {\r\n // let lines = shape.getLines();\r\n // for(let n = 0; n < lines.length; n++) {\r\n // if(lines[n].isWithMitered()) {\r\n // mitered.push(lines[n].miteredOverlay);\r\n // }\r\n // }\r\n // }\r\n // }\r\n const reduxState = store.getState();\r\n\r\n return reduxState.sqftMiteredState.miteredSections;\r\n };\r\n\r\n /**\r\n * @deprecated use features from redux store\r\n */\r\n this.getShapeType = (type) => {\r\n let addedEdges = [];\r\n let edgeName;\r\n let isImageShapeType;\r\n let isLabelShapeType;\r\n let backsplashLength = 0;\r\n let area = 0;\r\n let length = 0;\r\n let realLength = 0;\r\n let lineLength = 0;\r\n let unit = null;\r\n const storedShapes = this.getShapes().filter(shp => {\r\n return !SHAPE_PART_IDS_VISIBLE_ONLY_IN_THE_SLAB_MODE.includes(shp.partId)\r\n });\r\n const state = store.getState();\r\n const fabricatorData = state.fabricatorState;\r\n\r\n for (let i = 0; i < storedShapes.length; i++) {\r\n const shape = storedShapes[i];\r\n isImageShapeType = shape.type && shape.type.includes(type);\r\n isLabelShapeType = shape instanceof sqftShape && shape.partId.includes(type);\r\n if (isImageShapeType && !isLabelShapeType) {\r\n const attachedTo = shape.attachedToId\r\n ? this.getLineOrCornerLineById(shape.attachedToId)\r\n : shape.historyProps\r\n ? shape.historyProps.attachedTo\r\n : null; //old quotes support can be removed in future\r\n\r\n let featureId = +shape.featureId;\r\n length = 0;\r\n area = 0;\r\n\r\n if (type === \"backsplash\") {\r\n length = attachedTo ? getBacksplashArea(attachedTo.getBacksplashHeight(), attachedTo) : 0;\r\n backsplashLength = attachedTo ? getBacksplashLength(attachedTo) : 0;\r\n } else if (type === \"wall\") {\r\n length = realLength = getEdgeLength(attachedTo);\r\n } else {\r\n const navItems = getEdgeFeatures();\r\n let edge = navItems.find(edge => edge.part.dbFeature.id === featureId);\r\n if (edge && edge.part) {\r\n let edgeFeature = edge.part.dbFeature;\r\n unit = edgeFeature ? edgeFeature.unit : null;\r\n }\r\n // count only one length for \"each\" units\r\n length = (unit ? unit.toLowerCase() : null) === \"each\" ? 1 : getEdgeLength(attachedTo);\r\n realLength = getEdgeLength(attachedTo);\r\n lineLength = config.measureUnit === \"Imperial\" ? attachedTo.getLineLength() : attachedTo.getLineLengthMm();\r\n area = getEdgeArea(attachedTo, lineLength, featureId);\r\n }\r\n // export all edges (combine them after adding to cart from popup)\r\n\r\n // for (let n = 0; n < addedEdges.length; n++) {\r\n // if(addedEdges[n].id === edgeId) {\r\n // addedEdges[n].length += length;\r\n // addedEdges[n].realLength += realLength;\r\n // addedEdges[n].area += area;\r\n // addedEdges[n].pieces.push(backsplashLength);\r\n // addedEdges[n].segments += 1;\r\n // //bExists = true;\r\n // break;\r\n // }\r\n // }\r\n //if(!bExists) {\r\n //todo sqft-react translate\r\n //edgeName = TranslatesProvider.translate('transDoc.customDisplayName_FR.' + img.dataset.sharedFeatureName, img.dataset.name);\r\n edgeName = shape.name; //intl.formatMessage({id: edgeFeature.dbFeature.sharedFeatureName}); //img.dataset.name;\r\n\r\n addedEdges.push({\r\n parentId: attachedTo ? attachedTo.getParent().id : null,\r\n partId: attachedTo ? attachedTo.getParent().partId : null,\r\n fromWizardGroupId: attachedTo ? attachedTo.getParent().fromWizardGroupId : \"\",\r\n edge: featureId,//img,\r\n name: edgeName,\r\n id: featureId,\r\n segments: 1,\r\n pieces: [backsplashLength],\r\n length,\r\n realLength,\r\n unit,\r\n area\r\n });\r\n //}\r\n } else if (isLabelShapeType && shape.getTotalInches) {\r\n area = config.measureUnit === \"Imperial\" ? sqInchesToSqFoot(shape.getTotalInches()) : mm2ToM2(shape.getTotalMillimeters());\r\n length = config.measureUnit === \"Imperial\" ? sqInchesToSqFoot(shape.getTotalInches()) : mm2ToM2(shape.getTotalMillimeters());\r\n let featureGroup = getFeatureGroup(shape.partId);\r\n if (featureGroup && featureGroup.part) {\r\n let featureGroupName = getFeatureGroupName(featureGroup.part, this.intl, fabricatorData);\r\n addedEdges.push({\r\n partId: shape.partId,\r\n fromWizardGroupId: shape.fromWizardGroupId,\r\n //edge: img,\r\n name: featureGroupName,\r\n //id: edgeId,\r\n segments: 1,\r\n length,\r\n area\r\n });\r\n }\r\n }\r\n }\r\n if (type === \"edge\") {\r\n for (let n = 0; n < addedEdges.length; n++) {\r\n addedEdges[n].length = config.measureUnit === \"Imperial\" ? addedEdges[n].length : mmToM(addedEdges[n].length);\r\n }\r\n }\r\n\r\n return addedEdges;\r\n };\r\n\r\n this.addImage = function(\r\n image,\r\n width,\r\n height,\r\n attachedTo,\r\n hoverShape,\r\n type,\r\n subType, // appliance type\r\n historyCallBack,\r\n historyPosition,\r\n part = null,\r\n objId = null,\r\n priority = null,\r\n featureId = null,\r\n hide = false,\r\n params = {\r\n canSnap: true,\r\n isResizable: true\r\n },\r\n ) {\r\n let vc = self.getVisibleCenter(),\r\n newImage = new MovableImage(objId ? objId : ++objIds, priority, subType, params);\r\n\r\n newImage.onInit = self.onShapeReady;\r\n newImage.attachedToShape = hoverShape;\r\n newImage.type = type;\r\n newImage.part = part;\r\n newImage.featureId = featureId;\r\n newImage.init(\r\n historyPosition || {x: vc.x - (width / 2), y: vc.y - (height/2)},\r\n image,\r\n { width: width, height: height},\r\n attachedTo,\r\n hide\r\n );\r\n attachedTo && (attachedTo.attachedShape = newImage);\r\n newImage.historyProps = {\r\n image: image,\r\n width: width,\r\n height: height,\r\n attachedTo: attachedTo,\r\n attachedToParentId: attachedTo\r\n ? attachedTo.getParent ? attachedTo.getParent().id : null\r\n : null,\r\n hoverShape: hoverShape,\r\n type: type,\r\n subType: subType,\r\n part: part,\r\n historyCallBack: historyCallBack,\r\n featureId: featureId\r\n };\r\n shapes.unshift(newImage);\r\n\r\n return newImage;\r\n };\r\n\r\n this.getAttachedTo = function(attachedTo) {\r\n const state = store.getState();\r\n\r\n return state.sqftResourceState.attachedToLine.find(attachedToLine => attachedToLine.attachedToId === attachedTo.id)\r\n };\r\n this.getAttachedToLineResource = (type) => {\r\n const reduxState = store.getState();\r\n return reduxState.sqftResourceState.attachedToLine.filter(attachedToLine => {\r\n return attachedToLine.type === type\r\n });\r\n };\r\n this.getImagesAttachedTo = function(attachedTo) {\r\n for (var i = 0; i < shapes.length; i++) {\r\n if(shapes[i].getAttachedTo) {\r\n if(shapes[i].getAttachedTo() === attachedTo) {\r\n return shapes[i];\r\n }\r\n }\r\n }\r\n };\r\n this.onShapeReady = function() {\r\n\r\n };\r\n\r\n this.addShape = function(segments, shapeType, historyPosition, partId, fromLayout = null, shapeParams = {}) {\r\n const realPartId = checkShapeForAvailablePartId(partId);\r\n let vc = self.getVisibleCenter(),\r\n mm = sqftShapeManager.getMinMax(segments),\r\n shapeId = ++objIds,\r\n newShape = new Shape(shapeId, shapes.length, shapeType, realPartId, fromLayout, shapeParams),\r\n openedMobileButton = $('.pallet-wrapper--opened');\r\n\r\n newShape.setQtCatName(getQtCatName())\r\n newShape.onHover = self.onShapeHover;\r\n newShape.onInit = self.onShapeReady;\r\n newShape.init(\r\n historyPosition || {x: vc.x - (mm.width/2), y: vc.y - (mm.height/2)}, //position\r\n segments\r\n );\r\n shapes.unshift(newShape);\r\n !nodes.appBody.hasClass('step--shapes--selected') && nodes.appBody.addClass('step--shapes--selected');\r\n (openedMobileButton.length > 0) && openedMobileButton.removeClass('pallet-wrapper--opened');\r\n if (nodes.appBody.hasClass('tutorial--enabled')) {\r\n this.tutorialShape = newShape;\r\n }\r\n newShape.setFeatureId(getShapeFeatureId(realPartId));\r\n\r\n newShape.setOriginalPointsCoords(newShape.getPointsCoords());\r\n return shapeId\r\n };\r\n\r\n this.removeTutorialShape = function () {\r\n this.tutorialShape && this.removeShape(this.tutorialShape);\r\n };\r\n\r\n this.removeShapeWithIds = (shapeIds) => {\r\n for (let i = shapeIds.length - 1; i >= 0; i--) {\r\n this.removeShapeById(shapeIds[i]);\r\n }\r\n }\r\n\r\n this.removeShapeById = function(id) {\r\n for (let i = shapes.length - 1; i >= 0; i--) {\r\n if (shapes[i] && shapes[i].id === id) {\r\n if (shapes[i] instanceof MovableImage && shapes[i].type === MOVABLE_IMAGE_TYPES.slabImage) {\r\n this.removeSlabImage(shapes[i]);\r\n } else {\r\n this.removeShape(shapes[i])\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.removeSlabImage = (movableImage) => {\r\n const reduxState = store.getState();\r\n const croppedSlabImages = reduxState.sqftSlabState.croppedSlabImages || [];\r\n\r\n if (!Array.isArray(croppedSlabImages)) {\r\n console.error('croppedSlabImages is not a valid array');\r\n return;\r\n }\r\n\r\n store.dispatch(deleteCroppedSlabImage(movableImage.id));\r\n this.removeShape(movableImage);\r\n\r\n if (croppedSlabImages.length === 0) {\r\n slabWorkspace.deregisterEvents();\r\n }\r\n };\r\n\r\n this.getShapeById = (id) => {\r\n const combinedShapes = this.getShapes();\r\n for (let i = combinedShapes.length - 1; i >= 0; i--) {\r\n if (combinedShapes[i].id === id) {\r\n return combinedShapes[i]\r\n }\r\n }\r\n\r\n return null\r\n };\r\n\r\n this.removeShape = (shape) => {\r\n const shapesCopy = [...shapes];\r\n\r\n // Iterate a copy of the shapes array from end to beginning\r\n for (let i = shapesCopy.length - 1; i >= 0; i--) {\r\n const currentShape = shapesCopy[i];\r\n\r\n if (currentShape && currentShape.id === shape.id) {\r\n\r\n if (currentShape.shapeType in SHAPE_TYPE) {\r\n currentShape.getLines().forEach((line) => {\r\n if (line.overlay) {\r\n line.overlay.destroy();\r\n }\r\n line.deleteAttachedItem ? line.deleteAttachedItem() : void null;\r\n line.to.removeAttachedItem ? line.to.removeAttachedItem() : void null;\r\n });\r\n }\r\n\r\n if (currentShape) {\r\n currentShape.destroy();\r\n\r\n // Find current shape index in the original array and delete it\r\n const originalIndex = shapes.indexOf(currentShape);\r\n if (originalIndex !== -1) {\r\n shapes.splice(originalIndex, 1);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (shape.removeShapePieces) {\r\n shape.removeShapePieces();\r\n }\r\n\r\n slabWorkspace.slabAdditionalShapes.removeShapeFromList(shape);\r\n\r\n const reduxState = store.getState();\r\n const updateCalculations = reduxState.sqftState.updateCalculations;\r\n store.dispatch(updateSQFTCalculations(updateCalculations + 1));\r\n };\r\n\r\n\r\n this.updateRemovedFeatures = (shape) => {\r\n if (shape.partId === SHAPE_PART_ID.slabPlaceHolder\r\n || shape.type === MOVABLE_IMAGE_TYPES.slabImage\r\n ) {\r\n workspaceControllers.removedFeatures.addResource(shape.id);\r\n }\r\n };\r\n\r\n this.removeAllShapes = function() {\r\n for (let i = shapes.length - 1; i >= 0; i--) {\r\n if (shapes[i]) {\r\n self.removeShape(shapes[i])\r\n }\r\n }\r\n // todo sqft react: lineLength are not equal when going back to sqft\r\n //_.isEqual(sqftEventManager.activeEvents[\"render\"][11].sender, shapes[i].getLines()[3].overlay)\r\n };\r\n this.removeFeatureBySQFTId = (sqftId) => {\r\n //console.log(\"sqftId to remove\", sqftId);\r\n this.removeShapeById(sqftId);\r\n sqftResourcesManager.deleteAttachedItemById(sqftId);\r\n\r\n // sqftImageManager.removeAllSlabImages();\r\n // sqftSlabManager.removeAllSlabBacksplashes();\r\n // sqftResourcesManager.deleteAllResources();\r\n // sqftResourcesManager.deleteAllMiteredSections();\r\n // sqftSlabManager.deleteShapeOffset();\r\n };\r\n this.removeAllBumpouts = function() {\r\n for (let i = shapes.length - 1; i >= 0; i--) {\r\n if (shapes[i] && shapes[i].removeBumpouts) {\r\n shapes[i].removeBumpouts()\r\n }\r\n }\r\n };\r\n this.removeAllSlabImages = () => {\r\n for (let i = shapes.length - 1; i >= 0; i--) {\r\n if (shapes[i] instanceof MovableImage && shapes[i].type === 'slabImage') {\r\n self.removeShape(shapes[i].destroy())\r\n }\r\n }\r\n store.dispatch(setSqftCroppedSlabImages([]));\r\n };\r\n\r\n this.onShapeHover = function() {\r\n };\r\n this.setIntl = (intl) => {\r\n this.intl = intl\r\n };\r\n\r\n this.init = ($canvas = null, intl = null) => {\r\n //set global configuration\r\n this.isInitialized = true;\r\n this.name = config.workspace.name;\r\n setCanvas($canvas);\r\n if (intl) {\r\n this.intl = intl\r\n }\r\n //initialize workspace canvas such that 0x 0y is in the center\r\n pos.x = parseInt(0 - (canvas.width() / 2));\r\n pos.y = parseInt(0 - (canvas.height() / 2));\r\n //connect events\r\n EventManager.init(canvas[0]);\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_MOVE,\r\n onMouseMove,\r\n self,\r\n EventManager.priorities.WORKSPACE\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_DOWN,\r\n onMouseDown,\r\n self,\r\n EventManager.priorities.WORKSPACE\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_UP,\r\n onMouseUp,\r\n self,\r\n EventManager.priorities.WORKSPACE\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.RENDER,\r\n self.render,\r\n self,\r\n EventManager.priorities.WORKSPACE\r\n );\r\n\r\n WorkspaceEvents.init();\r\n RulerOverlay.init();\r\n if (isSFTCabinetsGroup()) {\r\n cabinetWorkspace.initCabinetEvents();\r\n }\r\n };\r\n\r\n this.render = (ctx) => {\r\n this.renderGrid(ctx);\r\n Object.values(workspaceControllers).forEach(workspaceController => {\r\n if (workspaceController.render) {\r\n workspaceController.render();\r\n }\r\n });\r\n };\r\n\r\n this.renderGrid = (ctx) => {\r\n let i;\r\n var scale = config.scale;\r\n var gridSize = config.workspace.gridSize * scale;\r\n var start = {\r\n x: ((pos.x % gridSize) * -1),\r\n y: ((pos.y % gridSize) * -1)\r\n };\r\n var canvasWidth = canvas[0].width;\r\n var canvasHeight = canvas[0].height;\r\n var center = self.getCenter();\r\n var scaledGrid = gridSize / Math.round(config.workspace.gridSize / config.workspace.getScaledGridSize());\r\n //render grid background\r\n ctx.lineWidth = 1;\r\n ctx.clearRect(0, 0, canvasWidth, canvasHeight);\r\n // rendering cells\r\n if(scale > 1) {\r\n ctx.beginPath();\r\n for(i = start.x % scaledGrid; i < canvasWidth; i+= scaledGrid) {\r\n ctx.moveTo(i, 0);\r\n ctx.lineTo(i, canvasHeight);\r\n }\r\n for(i = start.y % scaledGrid; i < canvasHeight; i+= scaledGrid) {\r\n ctx.moveTo(0, i);\r\n ctx.lineTo(canvasWidth, i);\r\n }\r\n ctx.strokeStyle = \"#EEEEEE\";\r\n ctx.stroke();\r\n }\r\n //render 12inch grid\r\n ctx.beginPath();\r\n for(i = start.x; i < canvasWidth; i+=gridSize) {\r\n ctx.moveTo(i, 0);\r\n ctx.lineTo(i, canvasHeight);\r\n }\r\n for(i = start.y; i < canvasHeight; i+= gridSize) {\r\n ctx.moveTo(0, i);\r\n ctx.lineTo(canvasWidth, i);\r\n }\r\n ctx.strokeStyle = '#DDDDDD';\r\n ctx.stroke();\r\n //render center lines\r\n ctx.beginPath();\r\n ctx.moveTo(center.x, 0);\r\n ctx.lineTo(center.x, canvasHeight);\r\n ctx.moveTo(0, center.y);\r\n ctx.lineTo(canvasWidth, center.y);\r\n ctx.strokeStyle = '#BBBBBB';\r\n ctx.stroke();\r\n };\r\n};\r\n\r\nexport default new workspace\r\n","export default class DesignNavigationItem {\r\n /**\r\n *\r\n * @type {string}\r\n */\r\n text = '';\r\n\r\n /**\r\n *\r\n * @type {featureInterface}\r\n */\r\n part = null;\r\n\r\n /**\r\n *\r\n * @type {boolean}\r\n */\r\n matchesMetaFailed = false;\r\n\r\n /**\r\n *\r\n * @type {[featureInterface]}\r\n */\r\n colorOptions = null;\r\n\r\n constructor(text, feature, colorOptions = null) {\r\n this.text = text;\r\n this.part = feature;\r\n this.matchesMetaFailed = feature.matchesMetaFailed || false;\r\n this.colorOptions = colorOptions;\r\n // this.matchesMetaFailedArray = part.matchesMetaFailedArray || null\r\n }\r\n}\r\n","import takeRight from \"lodash/takeRight\";\r\nimport isEqual from \"lodash/isEqual\";\r\n\r\nimport {getCurrentLayout, getCurrentRoomType} from \"../../appLayout\";\r\nimport {\r\n browserIsSafari,\r\n getCartItemObject,\r\n getFeatureIsLocked,\r\n getRelatedFeaturesFromLayout,\r\n getShareUrl\r\n} from \"../../../misc/helpers\";\r\nimport {checkIfFeatureCanBeAddedToTheCart, getLookList} from \"./lookFunctions\";\r\nimport {shareImage} from \"../../bvComponent/core/assets\";\r\nimport {loaderDisable, loaderEnable} from \"../../ui/loaderView\";\r\nimport {saveQuote} from \"../../../api/server-api\";\r\nimport {setAmazonImageUrl} from \"../../../actions/serverFunctions\";\r\nimport {getShareConfig, SHARE_BUTTONS} from \"./lookSideBar/lookSidebarModals/lookSideBarShareButtons\";\r\nimport store from \"../../../store\";\r\nimport {LOOK_ROOM_TYPES, LOOK_WALLS} from \"../core/constants\";\r\nimport {IS_LOOK_JOURNEY, IS_PRODUCT_JOURNEY} from \"../../../config\";\r\nimport {allowCheckForCollection} from \"../grohe/groheNavigation/groheFunctions\";\r\nimport {CART_ITEM_ADDED_BY} from \"../../shoppingCart/cartItemInterface\";\r\nimport {isFeatureEnabled} from \"../../../misc/displayLogic\";\r\nimport Cabinet from \"../../kvSceneComponent/core/parts/cabinet\";\r\nimport {checkIfLookFeaturesReceived, getAdditionalFeaturesOnScroll} from \"../../../api/look-api\";\r\nimport {getCurrentGroups, getFeatureGroupFromWizardGroup} from \"./lookMain/lookWizard/lookWizardFunctions\";\r\n\r\n/**\r\n * disable Feature common function\r\n * @param feature {featureInterface}\r\n * @param updateLookCartItem {function}\r\n */\r\nexport const disableFeature = async (feature, updateLookCartItem = null) => {\r\n if (!feature) {\r\n return\r\n }\r\n switch (feature.partId) {\r\n case \"hood\": {\r\n const cabinetParent = feature.getParent().getParent().layout.parts[Cabinet.id];\r\n if (cabinetParent && cabinetParent.topCabinet && !cabinetParent.topCabinet.allFeaturesReceived) {\r\n loaderEnable();\r\n await getAdditionalFeaturesOnScroll(cabinetParent.topCabinet)\r\n loaderDisable();\r\n }\r\n break;\r\n }\r\n case \"sink\": {\r\n const cabinetParent = feature.getParent().getParent().layout.parts[Cabinet.id];\r\n if (cabinetParent\r\n && ((cabinetParent.bottomCabinet && !cabinetParent.bottomCabinet.allFeaturesReceived)\r\n || (cabinetParent.bottomHandle && !cabinetParent.bottomHandle.allFeaturesReceived))) {\r\n loaderEnable();\r\n if (cabinetParent.bottomCabinet && !cabinetParent.bottomCabinet.allFeaturesReceived) {\r\n await getAdditionalFeaturesOnScroll(cabinetParent.bottomCabinet)\r\n }\r\n if (cabinetParent.bottomHandle && !cabinetParent.bottomHandle.allFeaturesReceived) {\r\n await getAdditionalFeaturesOnScroll(cabinetParent.bottomHandle)\r\n }\r\n loaderDisable();\r\n }\r\n break;\r\n }\r\n case \"center_island_cabinet\": {\r\n const floorParent = feature.getParent().getParent().layout.parts[\"Floor\"];\r\n if (floorParent && floorParent.floorBody && !floorParent.floorBody.allFeaturesReceived) {\r\n loaderEnable();\r\n await getAdditionalFeaturesOnScroll(floorParent.floorBody)\r\n loaderDisable();\r\n }\r\n break;\r\n }\r\n case \"fridge\": {\r\n const cabinetParent = feature.getParent().getParent().layout.parts[\"Cabinet\"];\r\n if (cabinetParent && cabinetParent.topCabinet && !cabinetParent.topCabinet.allFeaturesReceived) {\r\n loaderEnable();\r\n await checkIfLookFeaturesReceived(cabinetParent.topCabinet)\r\n loaderDisable();\r\n }\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n // console.log(\"removeFromCartArray\", removeFromCartArray);\r\n const featureGroup = feature.getParent();\r\n if (!featureGroup || !featureGroup.canBeDisabled) {\r\n return;\r\n }\r\n if (featureGroup.layerPositions) {\r\n Object.keys(featureGroup.layerPositions).forEach(position => {\r\n featureGroup.layerPositions[position] = null;\r\n })\r\n }\r\n featureGroup.disabled = true;\r\n featureGroup.disabledClick();\r\n if (updateLookCartItem && IS_LOOK_JOURNEY) {\r\n updateLookCartItem();\r\n }\r\n const layout = getCurrentLayout();\r\n layout.updateLocalStorage();\r\n}\r\n\r\n/**\r\n * enable Feature common function\r\n * @param feature {object}\r\n * @param addToCart {function}\r\n * @param qtActiveCategory {string}\r\n */\r\nexport const enableRelatedFeature = (feature, addToCart, qtActiveCategory) => {\r\n const featureIsLocked = getFeatureIsLocked(feature);\r\n if (featureIsLocked || feature.notAvailableInVisualizer) {\r\n return false\r\n }\r\n let relatedFeaturesToEnable = [];\r\n const layout = getCurrentLayout();\r\n switch (feature.partId) {\r\n case \"vanity_sink\":\r\n case \"vanity_faucet\": {\r\n const relatedPartId = feature.partId === \"vanity_sink\" ? \"vanity_faucet\" : \"vanity_sink\";\r\n const relatedFeatureGroup = layout.getFeatureGroupByPartId(relatedPartId);\r\n if (relatedFeatureGroup) {\r\n relatedFeatureGroup.disabled = false;\r\n Object.keys(relatedFeatureGroup.layerPositions).forEach(position => {\r\n if ((position !== \"C\" && feature.metaData.layerPosition === \"C\") || (feature.metaData.layerPosition !== \"C\" && position === \"C\")) {\r\n relatedFeatureGroup.layerPositions[position] = null; // erase sibling positions\r\n return\r\n }\r\n const someFeature = relatedFeatureGroup.getMatchingPositionFeature(position);\r\n if (someFeature) {\r\n relatedFeatureGroup.layerPositions[position] = someFeature;\r\n }\r\n })\r\n // } else if (relatedFeatureGroup && !relatedFeatureGroup.layerPositions[feature.metaData.layerPosition]) {\r\n // const someFeature = relatedFeatureGroup.getMatchingPositionFeature(feature.metaData.layerPosition);\r\n // if (someFeature) {\r\n // relatedFeaturesToEnable.push(someFeature);\r\n // relatedFeatureGroup.disabled = false;\r\n // relatedFeatureGroup.layerPositions[feature.metaData.layerPosition] = someFeature;\r\n // }\r\n }\r\n break;\r\n }\r\n case \"toilet\": {\r\n [\"toilet_brush\", \"paper_holder\"].forEach(partId => {\r\n const relatedFeatureGroup = layout.getFeatureGroupByPartId(partId);\r\n if (relatedFeatureGroup && relatedFeatureGroup.disabled && relatedFeatureGroup.activeFeature) {\r\n relatedFeatureGroup.disabled = false;\r\n relatedFeaturesToEnable.push(relatedFeatureGroup.activeFeature);\r\n }\r\n })\r\n break;\r\n }\r\n case \"bathtub_body\":\r\n case \"bathtub_fixture\": {\r\n const relatedPartId = feature.partId === \"bathtub_body\" ? \"bathtub_fixture\" : \"bathtub_body\";\r\n const relatedFeatureGroup = layout.getFeatureGroupByPartId(relatedPartId);\r\n if (relatedFeatureGroup && relatedFeatureGroup.disabled && relatedFeatureGroup.activeFeature) {\r\n relatedFeatureGroup.disabled = false;\r\n relatedFeaturesToEnable.push(relatedFeatureGroup.activeFeature);\r\n }\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n if (relatedFeaturesToEnable.length && addToCart) {\r\n relatedFeaturesToEnable.forEach(relatedFeature => {\r\n if (checkIfFeatureCanBeAddedToTheCart(relatedFeature)) {\r\n addToCart([getCartItemObject(relatedFeature, 1, qtActiveCategory)]);\r\n }\r\n })\r\n }\r\n}\r\n\r\n/**\r\n * returns use or not lixil stock available quantity\r\n * @param fabricatorSettings {object}\r\n * @param feature {featureInterface}\r\n * @returns {boolean}\r\n */\r\nexport const shouldUseLixilAvailableQty = (fabricatorSettings, feature) => {\r\n if (!fabricatorSettings || !feature) {\r\n return false;\r\n }\r\n return (fabricatorSettings.enableASInventorySync && feature.dbFeature.isFromAsRoom)\r\n || (fabricatorSettings.enableGInventorySync && !feature.dbFeature.isFromAsRoom)\r\n}\r\n\r\n/**\r\n * returns lixil stock available quantity\r\n * @param feature {featureInterface}\r\n * @returns {boolean}\r\n */\r\nexport const isInStock = (feature) => {\r\n if (document.kvConfig.visualizerType !== \"bvLook\") {\r\n return true\r\n }\r\n const {settings} = store.getState().fabricatorState;\r\n if (shouldUseLixilAvailableQty(settings, feature)) {\r\n const bundledFeatures = getBundledFeatures(feature);\r\n if (bundledFeatures.length > 1) { // fix for ROUGH VALVE BODIES assigned on Shower Fixtures\r\n return bundledFeatures.some(relFeature => relFeature.dbFeature.lixilAvailableQty > 0)\r\n }\r\n return feature.dbFeature.lixilAvailableQty > 0\r\n }\r\n if (settings.useTrumbleApi && feature.quantityOptions && feature.quantityOptions.trumbleQty === \"0\") {\r\n return false\r\n }\r\n return true\r\n}\r\n/**\r\n * returns lixil stock available quantity for cart item\r\n * @param cartItem {cartItemInterface}\r\n * @returns {boolean}\r\n */\r\nexport const cartItemInStock = (cartItem) => {\r\n // return cartItem.relatedProductParent ? isInStock(cartItem.relatedProductParent) : isInStock(cartItem.cartFeature)\r\n return isInStock(cartItem.cartFeature)\r\n}\r\n\r\n/**\r\n * returns lixil sku first part 0328400.222 -> 0328400\r\n * @param sku {string}\r\n * @returns {string}\r\n */\r\nexport const getSkuWithoutDot = (sku) => {\r\n if (!sku) {\r\n return \"\"\r\n }\r\n return sku.split(\".\")[0]\r\n}\r\n\r\n/**\r\n * returns lixil stock available quantity for cart item\r\n * @param sku {string}\r\n * @returns {string}\r\n */\r\nexport const getProductIdFromSku = (sku) => {\r\n if (sku.includes(\".\")) {\r\n return getSkuWithoutDot(sku) // \"7075100.002\" => \"7075100\"\r\n }\r\n if (sku.includes(\"-\")) {\r\n return sku.split(\"-\")[0] // \"A8001L-RHO.020\" => \"A8001L-RHO\"\r\n }\r\n return sku.substr(0, 5) + \"_\" + sku.substr(sku.length - 1); // \"26635GN0\" => \"26635_0\"\r\n}\r\n\r\n/**\r\n * returns a list needed for integration\r\n * @param cartItems {array}\r\n * @param forCart {boolean}\r\n * @returns {array}\r\n */\r\nexport const getPostCartItemsList = (cartItems, forCart = false) => {\r\n return cartItems\r\n .filter(cartItem => {\r\n let match = !(cartItem.cartFeature.dbFeature.sharedFeatureName || \"\").includes(\"undle sku\")\r\n && (!featureIsBundle(cartItem.cartFeature, cartItems) || (forCart && cartItemInStock(cartItem)));\r\n if (match && forCart) {\r\n match = cartItem.quantity > 0 && cartItemInStock(cartItem) && !cartItem.isRemoved;\r\n }\r\n return match\r\n })\r\n .map(cartItem => {\r\n const sku = cartItem.cartFeature.dbFeature.sku || \"\";\r\n const lixilProductId = cartItem.cartFeature.dbFeature.lixilProductId || getProductIdFromSku(sku);\r\n return {\r\n \"VariantId\": sku, // \"26635GN0\"\r\n \"ProductId\": lixilProductId, // \"26635_0\"\r\n \"Quantity\": \"\" + cartItem.quantity // \"1\"\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * @param feature {featureInterface}\r\n * @param cartItems {array}\r\n * @returns {boolean}\r\n */\r\nexport const featureIsBundle = (feature, cartItems) => {\r\n if (!feature) {\r\n return false\r\n }\r\n const relatedFeatures = getBundledFeatures(feature);\r\n return Array.isArray(relatedFeatures) && !!relatedFeatures.length && cartItems.some(cItem => {\r\n return cItem.relatedProductParent && cItem.relatedProductParent.dbFeature.id === feature.dbFeature.id;\r\n })\r\n}\r\n\r\n/**\r\n * returns bundled features\r\n * @param feature {featureInterface}\r\n * @returns {array}\r\n */\r\nexport const getBundledFeatures = (feature) => {\r\n if (Array.isArray(feature.dbFeature.bundledFeatures) && feature.dbFeature.bundledFeatures.length) {\r\n // console.log(\"relatedFeatures\", relatedFeatures);\r\n let {relatedFeaturesFound} = getRelatedFeaturesFromLayout(feature.dbFeature.bundledFeatures, feature);\r\n // console.log(\"relatedFeaturesFound\", relatedFeaturesFound);\r\n return relatedFeaturesFound\r\n }\r\n return []\r\n}\r\n\r\n/**\r\n * returns bundled features\r\n * @param feature {featureInterface}\r\n * @returns {array}\r\n */\r\nexport const getAvailableFeatureContent = (feature) => {\r\n if (!feature) {\r\n return []\r\n }\r\n const availableFeatureContent = []; // [\"description\", \"features\", \"reviews\", \"faq\"]\r\n if (feature.dbFeature.description) {\r\n availableFeatureContent.push(\"description\");\r\n }\r\n if (feature.dbFeature.subDescription) {\r\n availableFeatureContent.push(\"features\");\r\n }\r\n return availableFeatureContent\r\n}\r\n\r\n/**\r\n * returns bundled features\r\n * @param activePreset {number}\r\n * @param bvPresets {array}\r\n * @returns lookId {number}\r\n */\r\nexport const getLookId = (activePreset, bvPresets) => {\r\n const room = bvPresets.find(preset => preset.id === activePreset);\r\n return room ? room.lookId : 0\r\n}\r\n\r\n/**\r\n * returns URL start for look and product journeys\r\n * @param withSlash {boolean}\r\n * @returns string {string}\r\n */\r\nexport const getLookIdUrl = (withSlash = true) => {\r\n const {activePreset, bvPresets} = store.getState().bathroomVisualizerState;\r\n const lookId = getLookId(activePreset, bvPresets);\r\n return withSlash ? `/look-${lookId}/` : `/look-${lookId}`\r\n}\r\n\r\n/**\r\n * returns feature url name\r\n * @param feature {featureInterface}\r\n * @param withCategory {boolean}\r\n * @returns string {string}\r\n */\r\nexport const getFeatureUrl = (feature, withCategory = false) => {\r\n if (!feature || !feature.dbFeature) {\r\n return \"\"\r\n }\r\n\r\n let finalUrl = getLookIdUrl();\r\n const urlName = feature.dbFeature.sku || feature.dbFeature.sharedFeatureName; // check sku first! old support\r\n\r\n if (withCategory) {\r\n const urlPartId = feature.partId.replace(/_/gi, \"-\");\r\n return finalUrl + `${urlPartId}/${urlName}`\r\n } else {\r\n return finalUrl + urlName\r\n }\r\n}\r\n\r\n/**\r\n * returns category url\r\n * @param partId {string}\r\n * @returns string {string}\r\n */\r\nexport const getCategoryOnlyUrl = (partId = \"\") => {\r\n let finalUrl = getLookIdUrl();\r\n return finalUrl + partId.replace(/_/gi, \"-\")\r\n}\r\n\r\n/**\r\n * returns bundled features\r\n * @param updateCanvasCount {function}\r\n */\r\nexport const revertFeatureBeforeChange = (updateCanvasCount) => {\r\n if (IS_PRODUCT_JOURNEY) {\r\n return\r\n }\r\n const featureGroups = getLookList();\r\n if (featureGroups) {\r\n featureGroups.forEach(parentObject => {\r\n if (parentObject.featureGroup && parentObject.featureGroup.featureBeforeChange\r\n && checkIfFeatureCanBeAddedToTheCart(parentObject.featureGroup.featureBeforeChange)) {\r\n if (parentObject.featureGroup.layerPositions) {\r\n Object.keys(parentObject.featureGroup.layerPositions).forEach(position => {\r\n if (parentObject.featureGroup.layerPositions[position]) {\r\n const sameFeature = parentObject.featureGroup.getMatchingPositionFeature(position, parentObject.featureGroup.featureBeforeChange);\r\n if (sameFeature) {\r\n parentObject.featureGroup.layerPositions[position] = sameFeature;\r\n }\r\n }\r\n })\r\n }\r\n if (!parentObject.featureGroup.disabled) {\r\n parentObject.featureGroup.activeFeature = parentObject.featureGroup.featureBeforeChange;\r\n }\r\n parentObject.featureGroup.featureBeforeChange = null;\r\n updateCanvasCount();\r\n }\r\n })\r\n }\r\n}\r\n\r\n/**\r\n * returns filtered features by metadata field\r\n * @param navFeatures {object}\r\n * @param matchFeature {object}\r\n * @param metadataField {string}\r\n */\r\nexport const filterFeaturesByMetadata = (navFeatures, matchFeature, metadataField) => {\r\n return navFeatures.filter((navFeature) => {\r\n return navFeature.part.metaData[metadataField] && navFeature.part.metaData[metadataField].some((mType) => {\r\n return matchFeature.metaData[metadataField] &&\r\n matchFeature.metaData[metadataField].includes(mType)\r\n })\r\n })\r\n}\r\n\r\n/**\r\n * returns default camera preset\r\n * @param bvPresets {array}\r\n * @param lookId {string|number}\r\n * @returns lookId {number}\r\n */\r\nexport const getDefaultPresetByLook = (bvPresets, lookId) => {\r\n const numLookId = +lookId;\r\n const allMatchedPresets = bvPresets.filter((preset) => preset.lookId === numLookId);\r\n if (!allMatchedPresets.length) {\r\n return null\r\n }\r\n switch (numLookId) {\r\n case 5:\r\n return allMatchedPresets.find(preset => preset.scene === \"1\" && (preset.id === 22)) || allMatchedPresets[0];\r\n default:\r\n return allMatchedPresets.find(preset => preset.scene === \"1\")\r\n }\r\n}\r\n\r\n/**\r\n * open share link\r\n * @param buttonKey {string}\r\n * @param afterSaveUrl {string}\r\n * @param amazonImageUrl {string}\r\n */\r\nconst createShareUrl = (buttonKey, afterSaveUrl, amazonImageUrl) => {\r\n const shareUrl = afterSaveUrl; // || propsShareUrl;\r\n const shareImageUrl = amazonImageUrl || shareImage[document.kvConfig.visualizerType];\r\n switch (buttonKey) {\r\n case SHARE_BUTTONS.facebook: {\r\n const metaTag = document.querySelector('meta[property=\"og:image\"]');\r\n if (metaTag) {\r\n metaTag.setAttribute(\"content\", shareImageUrl);\r\n }\r\n var domain = takeRight(window.location.hostname.split('.'), 2);\r\n if(domain[0] == \"americanstandard-us\") {\r\n domain[0] = \"americanstandard.\" + domain[0];\r\n } else if(domain[0] == \"grohe\") {\r\n domain[0] = \"grohe.\" + domain[0];\r\n }\r\n const fbUrl = \"https://facebook.com/sharer/sharer.php?u=\";\r\n const qfUrl = window.location.protocol + \"//\" + domain.join('.') + \"/url?u=\";\r\n const splittedHost = window.location.host.split(\".\") // ['grohe', 'qkandb', 'net']\r\n const topLevelDomain = \".\" + splittedHost[splittedHost.length - 1]; // \".com\" or \".net\"\r\n\r\n const shareUrlSplitted = shareUrl.split(topLevelDomain)\r\n return fbUrl + qfUrl + shareUrlSplitted[0] + topLevelDomain + encodeURIComponent(shareUrlSplitted[1])\r\n }\r\n case SHARE_BUTTONS.pinterest: {\r\n const imageUrl = encodeURIComponent(shareImageUrl);\r\n return `//pinterest.com/pin/create/button/?url=${encodeURIComponent(shareUrl)}&media=${imageUrl}`\r\n }\r\n case SHARE_BUTTONS.twitter: {\r\n return `//twitter.com/share?url=${encodeURIComponent(shareUrl)}&text=Click Here to Design your Dream Bathroom!`\r\n }\r\n default:\r\n return \"\"\r\n }\r\n}\r\n\r\n/**\r\n * open share link\r\n * @param buttonKey {string}\r\n */\r\nconst getShareWindowReference = (buttonKey) => {\r\n switch (buttonKey) {\r\n case SHARE_BUTTONS.facebook: {\r\n // target: facebook-share-dialog\r\n return window.open(\"\", '_blank', getShareConfig({width: 630, height: 420}))\r\n }\r\n case SHARE_BUTTONS.pinterest: {\r\n return window.open(\"\", '_blank', getShareConfig({width: 880, height: 554}))\r\n }\r\n case SHARE_BUTTONS.twitter: {\r\n return window.open(\"\", '_blank', getShareConfig({width: 550, height: 470}))\r\n }\r\n default:\r\n return window.open()\r\n }\r\n}\r\n\r\n/**\r\n * save Quote and open share link\r\n * @param buttonKey {string}\r\n * @param propsShareUrl {string}\r\n * @param saveNeeded {boolean}\r\n * @param imageUrl {string}\r\n */\r\nexport const saveQuoteAndShare = async (buttonKey, propsShareUrl, saveNeeded = true, imageUrl = \"\") => {\r\n if (!propsShareUrl) {\r\n propsShareUrl = store.getState().serverState.shareUrl;\r\n }\r\n let windowReference = null;\r\n const isSafari = browserIsSafari();\r\n if (isSafari) {\r\n windowReference = getShareWindowReference(buttonKey);\r\n }\r\n let responseData = null;\r\n if (saveNeeded) {\r\n loaderEnable();\r\n responseData = await saveQuote({\r\n submit: true,\r\n showReceipt: false\r\n });\r\n if (!responseData) {\r\n return false\r\n }\r\n document.kvConfig.jobId = responseData.jobId;\r\n if (responseData.imageUrl) {\r\n imageUrl = responseData.imageUrl;\r\n store.dispatch(setAmazonImageUrl(responseData.imageUrl));\r\n }\r\n loaderDisable();\r\n }\r\n\r\n if (!isSafari) {\r\n windowReference = getShareWindowReference(buttonKey);\r\n }\r\n\r\n windowReference.location = createShareUrl(buttonKey, getShareUrl(document.kvConfig.jobId) || propsShareUrl, imageUrl);\r\n\r\n}\r\n\r\n/**\r\n * returns cart items array\r\n * @param neededFeature {featureInterface}\r\n * @param quantity {number}\r\n * @param qtActiveCategory {string}\r\n * @param addedBy {string}\r\n * @returns {array}\r\n */\r\nexport const getCartItemsArrayFromFeature = (neededFeature, quantity, qtActiveCategory, addedBy = CART_ITEM_ADDED_BY.user) => {\r\n const firstCartItem = getCartItemObject(neededFeature, quantity, qtActiveCategory);\r\n firstCartItem.addedBy = addedBy;\r\n let itemsToAdd = [firstCartItem];\r\n const relatedFeatures = getBundledFeatures(neededFeature);\r\n if (Array.isArray(relatedFeatures) && relatedFeatures.length) {\r\n relatedFeatures.forEach((relatedFeature) => {\r\n const cartItem = getCartItemObject(relatedFeature, quantity, qtActiveCategory);\r\n cartItem.relatedProductParent = neededFeature;\r\n cartItem.addedBy = addedBy;\r\n itemsToAdd.push(cartItem);\r\n })\r\n }\r\n return itemsToAdd\r\n}\r\n\r\n\r\n/**\r\n * Checks available meta options for feature\r\n * @param lookActiveFeature {featureInterface}\r\n * @param filterGroups {array}\r\n * @param metaName {string}\r\n * @returns {array} array of objects\r\n */\r\nexport const getSameFeatureWithAnotherMeta = (lookActiveFeature, filterGroups, metaName = \"MatchingFeature\") => {\r\n if (!lookActiveFeature) {\r\n return null\r\n }\r\n\r\n const parent = lookActiveFeature.getParent();\r\n const activeFeatureValue = Array.isArray(lookActiveFeature.metaData[metaName]) ? lookActiveFeature.metaData[metaName][0] : null;\r\n\r\n let optionFeatures = activeFeatureValue ? [{\r\n feature: lookActiveFeature,\r\n metaValue: activeFeatureValue\r\n }] : [];\r\n\r\n const layout = getCurrentLayout();\r\n const navItems = layout.designNavigationItems({part: parent}, {}, \"\", lookActiveFeature, true);\r\n const activeFeatureCollectionName = lookActiveFeature.getCollectionName(filterGroups);\r\n const customFullDisplayName = lookActiveFeature.getCustomFullDisplayName();\r\n\r\n for (let i = 0; i < navItems.length; i++) {\r\n const checkFeature = navItems[i].part;\r\n if ((checkFeature.dbFeature.sharedFeatureName === \"MatchingFeature\") && checkFeature.getCustomFullDisplayName() !== customFullDisplayName) {\r\n continue\r\n }\r\n if ((checkFeature.dbFeature.sharedFeatureName !== \"MatchingFeature\") && getSkusDifferences(checkFeature.dbFeature.sharedFeatureName, lookActiveFeature.dbFeature.sharedFeatureName) > 1) {\r\n continue\r\n }\r\n // // console.log(\"checkFeature\", checkFeature);\r\n const metaValue = Array.isArray(checkFeature.metaData[metaName]) ? checkFeature.metaData[metaName][0] : null;\r\n if (!metaValue) {\r\n continue\r\n }\r\n if (allowCheckForCollection(checkFeature) && (checkFeature.getCollectionName(filterGroups) !== activeFeatureCollectionName)) {\r\n continue\r\n }\r\n if ((metaName === \"MatchingFeature\") && lookActiveFeature.metaData[\"MatchingFeature\"] && !isEqual(lookActiveFeature.metaData[\"MatchingFeature\"], checkFeature.metaData[\"MatchingFeature\"])) {\r\n continue\r\n }\r\n if (optionFeatures.every(optFeature => optFeature.metaValue !== metaValue)) {\r\n optionFeatures.push({\r\n feature: checkFeature,\r\n metaValue\r\n })\r\n }\r\n }\r\n\r\n return optionFeatures\r\n\r\n};\r\n\r\nexport const getFeatureSectionIsHidden = (lookActiveFeature) => {\r\n return !lookActiveFeature || (LOOK_WALLS.includes(lookActiveFeature.partId) && !(\r\n lookActiveFeature.partId === \"front_wall\" && (document.kvConfig.visualizerType === \"Fireplace\")\r\n ))\r\n // const layout = getCurrentLayout();\r\n // return lookActiveFeature && (\r\n // (!layout.partIdExistInQtCategory(lookActiveFeature.partId, true) || LOOK_WALLS.includes(lookActiveFeature.partId)));\r\n}\r\n\r\n/**\r\n * returns parent feature group\r\n * @param lookFeature {featureInterface}\r\n * @param lookActiveCategory {string}\r\n * @returns {object} featureGroup\r\n */\r\nexport const getFeatureParent = (lookFeature, lookActiveCategory = \"\") => {\r\n if (lookFeature && lookFeature.getParent) {\r\n return lookFeature.getParent()\r\n }\r\n const layout = getCurrentLayout();\r\n return layout.getFeatureGroupByPartId(lookActiveCategory);\r\n}\r\n\r\n/**\r\n * returns feature property name\r\n * @param lookActiveFeature {featureInterface}\r\n * @returns {string}\r\n */\r\nexport const getPropertyToMatchActiveFeature = (lookActiveFeature) => {\r\n if (lookActiveFeature.dbFeature.sharedFeatureName) {\r\n // keep old logic, some features are missing the sku, so we have to have the code below\r\n return \"sharedFeatureName\"\r\n }\r\n // original check for other tools\r\n return \"sku\"\r\n}\r\n\r\n/**\r\n * Checks if list feature is currently active\r\n * @param lookFeature {featureInterface}\r\n * @param lookActiveFeature {featureInterface}\r\n * @param lookActiveCategory {string}\r\n * @param featureGroup {object}\r\n * @returns {boolean}\r\n */\r\nexport const getFeatureIsActive = (lookFeature, lookActiveFeature, lookActiveCategory = \"\", featureGroup) => {\r\n if (!lookFeature) {\r\n return false\r\n }\r\n let checkFeature = lookActiveFeature;\r\n if (!checkFeature && lookActiveCategory) {\r\n const parentFeatureGroup = featureGroup || getFeatureParent(lookFeature, lookActiveCategory);\r\n if (parentFeatureGroup) {\r\n checkFeature = parentFeatureGroup.activeNotInVisualizerFeature || parentFeatureGroup.activeFeature;\r\n }\r\n }\r\n return checkFeature && ((lookFeature.dbFeature.id === checkFeature.dbFeature.id)\r\n || (lookFeature.getSplittedFeatureName() === checkFeature.getSplittedFeatureName())\r\n )\r\n}\r\n\r\n/**\r\n * Checks if list feature is currently active\r\n * @param parentObject {object}\r\n * @param layoutType {number|string}\r\n * @param scene {number|string}\r\n * @param [position] {string}\r\n * @returns {boolean}\r\n */\r\nexport const removeLookPointFor = (parentObject, layoutType, scene, position) => {\r\n const layout = getCurrentLayout();\r\n if ((layout.type === layoutType) && (layout.scene === scene)) {\r\n if (position) {\r\n return parentObject.layerPosition !== position\r\n }\r\n return false\r\n }\r\n return true\r\n}\r\n\r\n/**\r\n * Checks if two strings are almost the same (to compare SKU\\s, for example 0328400.222 and 0328800.222)\r\n * @param sku1 {string}\r\n * @param sku2 {string}\r\n * @returns {number}\r\n */\r\nexport const getSkusDifferences = (sku1, sku2) => {\r\n if (sku1 === sku2) {\r\n return 0\r\n }\r\n let differences = 0;\r\n sku1.split(\"\").forEach((letter, letterIndex) => {\r\n if (!sku2[letterIndex] || letter !== sku2[letterIndex]) {\r\n differences++;\r\n }\r\n })\r\n return differences\r\n}\r\n\r\n/**\r\n * filters removed cartItems\r\n * @param cartItems {[cartItemInterface]}\r\n * @param withoutNotInStock {boolean}\r\n * @param withoutZeroQuantity {boolean}\r\n * @param parentsOnly {boolean}\r\n * @returns {[cartItemInterface]}\r\n */\r\nexport const filterCartItems = (cartItems, withoutNotInStock = false, withoutZeroQuantity = false, parentsOnly = false) => {\r\n return cartItems.filter(cItem => {\r\n if (withoutZeroQuantity && cItem.quantity < 1) {\r\n return false\r\n }\r\n if (withoutNotInStock) {\r\n // if (cItem.relatedProductParent && !isInStock(cItem.relatedProductParent)) {\r\n // return false\r\n // }\r\n if (!isInStock(cItem.cartFeature) || getBundledFeatures(cItem.cartFeature).length) {\r\n return false\r\n }\r\n }\r\n if (IS_PRODUCT_JOURNEY) {\r\n return cItem.addedBy === CART_ITEM_ADDED_BY.user && !cItem.isRemoved\r\n }\r\n if (parentsOnly) {\r\n return !cItem.relatedProductParent\r\n }\r\n return !cItem.isRemoved\r\n })\r\n}\r\n\r\n/**\r\n * sorts CartItems for List Page\r\n * @param cartItems {[cartItemInterface]}\r\n * @returns {[cartItemInterface]}\r\n */\r\nexport const sortCartItemsForListPage = (cartItems) => {\r\n return cartItems\r\n .filter(cItem => !cItem.relatedProductParent)\r\n .sort((a, b) => featureIsBundle(a.cartFeature, cartItems) - featureIsBundle(b.cartFeature, cartItems))\r\n .sort((a, b) => (b.addedBy === CART_ITEM_ADDED_BY.user) - (a.addedBy === CART_ITEM_ADDED_BY.user) || cartItemInStock(b) - cartItemInStock(a))\r\n}\r\n\r\n/**\r\n * returns array of deliveries\r\n * @param lookOpened {boolean}\r\n * @param lookActiveCategory {string}\r\n * @param lookActiveFeature {featureInterface}\r\n * @param lookCompatabilityAlert {object}\r\n * @returns {boolean}\r\n */\r\nexport const hideFeatureSection = (lookOpened, lookActiveCategory, lookActiveFeature, lookCompatabilityAlert) => {\r\n const layout = getCurrentLayout();\r\n let showFeaturesOnly = !lookCompatabilityAlert.visible && lookOpened && lookActiveCategory && !layout.partIdExistInQtCategory(lookActiveCategory, true);\r\n if (!showFeaturesOnly && lookActiveFeature && !lookCompatabilityAlert.visible) {\r\n showFeaturesOnly = !isFeatureEnabled(lookActiveFeature, \"quotingTool\");\r\n }\r\n return showFeaturesOnly\r\n}\r\n\r\n/**\r\n * returns array of deliveries\r\n * @param partId {string}\r\n * @param layout {object}\r\n * @param fabricatorState {object}\r\n * @returns {boolean}\r\n */\r\nexport const hardCodelyRemovedClicking = (partId, layout = getCurrentLayout(), fabricatorState = null) => {\r\n if (document.kvConfig.visualizerType !== \"bvLook\") {\r\n return false\r\n }\r\n if (getCurrentRoomType(layout) === LOOK_ROOM_TYPES.as) {\r\n if (fabricatorState && fabricatorState.isCoburn && partId === \"shower_door\" && layout.parts.Shower) {\r\n const showerDoorFeatureGroup = layout.parts.Shower.showerDoor;\r\n if (showerDoorFeatureGroup && showerDoorFeatureGroup.activeFeature\r\n && (showerDoorFeatureGroup.activeFeature.dbFeature.sharedFeatureName === \"Hinge Door.002\"\r\n || showerDoorFeatureGroup.activeFeature.dbFeature.sharedFeatureName === \"Barn Door.002\")) {\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n return partId === \"bathtub_body\" || partId === \"vanity_cabinet\"\r\n}\r\n\r\nexport const getWizardWithFirstStepCurrentPartId = (wizardList, partId) => {\r\n return wizardList.find(wizardItem => {\r\n if (!wizardItem.openWizardOnClick) {\r\n return false\r\n }\r\n const firstStepGroups = getCurrentGroups(wizardItem, 0, {});\r\n if (firstStepGroups && firstStepGroups.length === 1 && firstStepGroups[0].nodeType === \"group\") {\r\n const featureGroup = getFeatureGroupFromWizardGroup(firstStepGroups[0]);\r\n if (featureGroup && featureGroup.partId === partId) {\r\n return true\r\n }\r\n }\r\n return false\r\n });\r\n}\r\n","export const ROUTES = {\r\n home: \"/\",\r\n list: \"/list\",\r\n view: \"/view\",\r\n wizard: \"/wizard\",\r\n login: \"/login\",\r\n register: \"/register\",\r\n rooms: \"/room-ideas\",\r\n // look: \"/look\",\r\n // lookActiveFeature: \"/look/:partId\",\r\n // lookActiveCategory: \"/look/:partId/select\",\r\n // quote: \"/quote\", // wtf? never used that\r\n lookId: \":lookId\",\r\n lookFeatureSku: \":lookId/:skuId\",\r\n // grohe\r\n category: \"/category\",\r\n // product journey\r\n print: \"/print\",\r\n cart: \"/cart\",\r\n cartLogin: \"/cart/login\",\r\n cartRegister: \"/cart/register\",\r\n cartTerms: \"/cart/terms\",\r\n cartBilling: \"/cart/billing\",\r\n cartBillingInfo: \"/cart/billing/info\",\r\n cartShipping: \"/cart/shipping\",\r\n cartPayment: \"/cart/payment\",\r\n cartDelivery: \"/cart/delivery\",\r\n cartTwoFAVerify: \"/cart/twoFA/verify\",\r\n cartTwoFA: \"/cart/twoFA\",\r\n cartConfirm: \"/cart/confirm\",\r\n cartSuccess: \"/cart/success\",\r\n shop: \"/shop\",\r\n shopRoutes: \"/shop/:shopCategoryId/:skuId\",\r\n sqft: \"/sqft\",\r\n sqftCabinetsIntro: \"/sqft-cabinets-intro/:step\",\r\n sqftCabinetsAR: \"/sqft-cabinets-ar/:file\", // this is for the models saved by Vlad's API (old not used)\r\n cabinetsAR: \"/cabinets-ar/:file\", // this is fr the urls created by exporting scene\r\n sqftCabinetsTutorial: \"/sqft-cabinets-tutorial/:step\",\r\n /// QKB routes\r\n quoting: \"/quoting/:wizardId/:wizardStep\",\r\n quoteDesign: \"/quote-design\",\r\n newscope: \"/newscope\",\r\n shoppingcart: \"/shoppingcart\",\r\n visualizer: \"/visualizer\",\r\n contract: \"/sign\",\r\n};\r\n","//********* SQFT *********//\r\nimport * as types from \"./actionTypes\";\r\n\r\nexport const setSQFTMenuOpened = (menuOpened = \"\") => ({\r\n type: types.SET_SQFT_MENU_OPENED,\r\n payload: {menuOpened}\r\n});\r\n\r\nexport const setSQFTMenuOpenedLock = (menuOpenedLock = true) => ({\r\n type: types.SET_SQFT_MENU_LOCK,\r\n payload: {menuOpenedLock}\r\n});\r\n\r\nexport const setSQFTActiveButton = (activeButton) => ({\r\n type: types.SET_SQFT_MENU_ACTIVE_BUTTON,\r\n payload: {activeButton}\r\n});\r\n\r\nexport const setSQFTActiveSubMenuButton = (activeSubMenuButton) => ({\r\n type: types.SET_SQFT_ACTIVE_SUB_MENU_BUTTON,\r\n payload: {activeSubMenuButton}\r\n});\r\n\r\nexport const setSQFTActiveLevel3Button = (activeLevel3Button = \"\") => ({\r\n type: types.SET_SQFT_ACTIVE_LEVEL3_BUTTON,\r\n payload: {activeLevel3Button}\r\n});\r\n\r\nexport const setSQFTActiveRoomIndex = (activeRoomIndex) => ({\r\n type: types.SET_SQFT_ACTIVE_ROOM_INDEX,\r\n payload: {activeRoomIndex}\r\n});\r\n\r\nexport const setSQFTActiveRoomType = (activeRoomType) => ({\r\n type: types.SET_SQFT_ACTIVE_ROOM_TYPE,\r\n payload: {activeRoomType}\r\n});\r\n\r\nexport const setSQFTActiveRoomId = (activeRoomId) => ({\r\n type: types.SET_SQFT_ACTIVE_ROOM_ID,\r\n payload: {activeRoomId}\r\n});\r\n\r\nexport const setSQFTActiveRoom = (activeRoom) => ({\r\n type: types.SET_SQFT_ACTIVE_ROOM,\r\n payload: {activeRoom}\r\n});\r\n\r\nexport const setIsRoomSwitcherVisible = (isVisible) => ({\r\n type: types.SET_SQFT_ROOM_SWITCHER_VISIBLE,\r\n payload: {isVisible}\r\n});\r\n\r\nexport const setFreeDrawMode = (isFreeDrawMode) => ({\r\n type: types.SET_FREE_DRAW_MODE,\r\n payload: {isFreeDrawMode}\r\n});\r\n\r\nexport const setWallsUpMode = (isWallsUpMode) => ({\r\n type: types.SET_WALLS_UP_MODE,\r\n payload: {isWallsUpMode}\r\n});\r\n\r\nexport const setWallsLockMode = (isWallsLockMode) => ({\r\n type: types.SET_WALLS_LOCK_MODE,\r\n payload: {isWallsLockMode}\r\n});\r\n\r\nexport const setSQFTRoomLayouts = (roomLayouts) => ({\r\n type: types.SET_SQFT_ROOM_LAYOUTS,\r\n payload: {roomLayouts}\r\n});\r\n\r\nexport const setSQFTContextMenu = (contextMenu) => ({\r\n type: types.SET_SQFT_CONTEXT_MENU,\r\n payload: {contextMenu}\r\n});\r\n\r\nexport const setSQFTContextMenuV2 = (contextMenuV2) => ({\r\n type: types.SET_SQFT_CONTEXT_MENU_V2,\r\n payload: {contextMenuV2}\r\n});\r\n\r\nexport const setSQFTSystemMessage = (systemMessage) => ({\r\n type: types.SET_SQFT_SYSTEM_MESSAGE,\r\n payload: {systemMessage}\r\n});\r\n\r\nexport const setSQFTAr3dPopup = (ar3dPopup) => ({\r\n type: types.SET_SQFT_AR3D_POPUP,\r\n payload: {ar3dPopup}\r\n});\r\n\r\nexport const setSQFTSystemDeleteMessage = (systemDeleteMessage) => ({\r\n type: types.SET_SQFT_SYSTEM_DELETE_MESSAGE,\r\n payload: {systemDeleteMessage}\r\n});\r\n\r\nexport const setSQFTPopup = (sqftPopup) => ({\r\n type: types.SET_SQFT_POPUP,\r\n payload: {sqftPopup}\r\n});\r\n\r\n/**\r\n * Change Value Popups\r\n */\r\nexport const setChangeValuePopups = (changeValuePopups) => ({\r\n type: types.SET_CHANGE_VALUE_POPUPS,\r\n payload: {changeValuePopups}\r\n});\r\n\r\nexport const addChangeValuePopup = (changeValuePopup) => ({\r\n type: types.ADD_CHANGE_VALUE_POPUP,\r\n payload: changeValuePopup\r\n});\r\n\r\nexport const changeValuePopup = (changeValuePopup) => ({\r\n type: types.CHANGE_VALUE_POPUP,\r\n payload: changeValuePopup\r\n});\r\n\r\nexport const deleteChangeValuePopup = (id) => ({\r\n type: types.DELETE_CHANGE_VALUE_POPUP,\r\n payload: {id}\r\n});\r\n\r\n/**\r\n * ValidationPopups\r\n */\r\nexport const setValidationPopups = (validationPopups) => ({\r\n type: types.SET_VALIDATION_POPUPS,\r\n payload: {validationPopups}\r\n});\r\n\r\nexport const addValidationPopup = (validationPopup) => ({\r\n type: types.ADD_VALIDATION_POPUP,\r\n payload: validationPopup\r\n});\r\n\r\nexport const validationPopup = (validationPopup) => ({\r\n type: types.VALIDATION_POPUP,\r\n payload: validationPopup\r\n});\r\n\r\nexport const deleteValidationPopup = (id) => ({\r\n type: types.DELETE_VALIDATION_POPUP,\r\n payload: {id}\r\n});\r\n\r\nexport const setShouldShowChangeShapeFeatureMissingMessage = (isShapeFeatureMissing) => ({\r\n type: types.SET_CHANGE_SHAPE_FEATURE_MISSING_MESSAGE,\r\n payload: {isShapeFeatureMissing}\r\n});\r\n\r\nexport const setShapeIdsWithMissingFeature = (shapeIdsWithMissingFeature) => ({\r\n type: types.SET_SHAPE_IDS_WITH_MISSING_FEATURES,\r\n payload: {shapeIdsWithMissingFeature}\r\n});\r\n\r\nexport const addShapeIdWithMissingFeature = (shapeIdsWithMissingFeature) => ({\r\n type: types.ADD_SHAPE_ID_WITH_MISSING_FEATURES,\r\n payload: shapeIdsWithMissingFeature\r\n});\r\n\r\nexport const setSelectedCountertop = (selectedCountertop) => ({\r\n type: types.SET_SELECTED_COUNTERTOP,\r\n payload: {selectedCountertop}\r\n})\r\n\r\nexport const setSelectedWall = (selectedWall) => ({\r\n type: types.SET_SELECTED_WALL,\r\n payload: {selectedWall}\r\n});\r\n\r\nexport const setAbortController = (abortRequestController) => ({\r\n type: types.SET_ABORT_CONTROLLER,\r\n payload: {abortRequestController}\r\n});\r\n\r\nexport const setIsItextEditing = (isITextEditing) => ({\r\n type: types.SET_IS_ITEXT_EDITING,\r\n payload: {isITextEditing}\r\n});\r\n\r\nexport const setIsSlabPlaceholderOverlapsWithMultipleShapes = (isSlabPlaceholderOverlapsWithMultipleShapes) => ({\r\n type: types.SET_SLAB_PLACEHOLDER_OVERLAPS_WITH_MULTIPLE_SHAPES,\r\n payload: {isSlabPlaceholderOverlapsWithMultipleShapes}\r\n});\r\n\r\nexport const setReCacheMenuCounter = (reCacheMenuCounter) => ({\r\n type: types.SET_RE_CACHE_MENU_COUNTER,\r\n payload: {reCacheMenuCounter}\r\n});\r\n","import PropTypes from \"prop-types\";\r\n\r\nexport const dbFeatureInterface = {\r\n id: PropTypes.number, // unique id fro every feature\r\n price: PropTypes.number, // retail price\r\n cost: PropTypes.number, // fabricator price\r\n shippingCost: PropTypes.number, // shippingCost\r\n fabricatorCost: PropTypes.number, // discount price\r\n}\r\n\r\nexport const featureInterface = {\r\n metaData: PropTypes.object,\r\n dbFeature: PropTypes.shape(dbFeatureInterface),\r\n};\r\n\r\nexport const featureCollectionInterface = {\r\n id: PropTypes.number.isRequired,\r\n features: PropTypes.arrayOf(PropTypes.shape(featureInterface)),\r\n};\r\n\r\nexport const featureGroupInterface = {\r\n partName: PropTypes.string.isRequired,\r\n};\r\n\r\nexport const navItemInterface = {\r\n part: PropTypes.shape(featureInterface).isRequired,\r\n}\r\n","// STEPS\r\nexport const SET_STEP = 'SET_STEP';\r\nexport const SET_STEP_SWITCHING = 'SET_STEP_SWITCHING';\r\n\r\n// SELECTION(MATERIALS PAGE)\r\nexport const SET_DEFAULT_SELECTION_GROUP = 'SET_DEFAULT_SELECTION_GROUP';\r\nexport const TOGGLE_SELECTION_WINDOW = 'TOGGLE_SELECTION_WINDOW';\r\nexport const SET_SELECTION_WINDOW_VIEW = 'SET_SELECTION_WINDOW_VIEW';\r\nexport const TOGGLE_SELECTION_INFO = 'TOGGLE_SELECTION_INFO';\r\nexport const UPDATE_FEATURE_INFO_COUNT = 'UPDATE_FEATURE_INFO_COUNT';\r\nexport const CHANGE_SELECTION_INFO_QUANTITY = 'CHANGE_SELECTION_INFO_QUANTITY';\r\nexport const TOGGLE_PULSE_FEATURE_INFO_QUANTITY = 'TOGGLE_PULSE_FEATURE_INFO_QUANTITY';\r\nexport const CHANGE_MATERIALS_INFO_FEATURE_MODULES = 'CHANGE_MATERIALS_INFO_FEATURE_MODULES';\r\nexport const CHANGE_SELECTION_ACTIVE_PART_RELATED_INDEX = 'CHANGE_SELECTION_ACTIVE_PART_RELATED_INDEX';\r\nexport const SET_ACTIVE_FEATURE = 'SET_ACTIVE_FEATURE';\r\nexport const SET_RELATED_GROUPS = 'SET_RELATED_GROUPS';\r\nexport const SET_RELATED_GROUPS_SEARCH = 'SET_RELATED_GROUPS_SEARCH';\r\nexport const TOGGLE_SHOW_DESCRIPTION_COVER = 'TOGGLE_SHOW_DESCRIPTION_COVER';\r\nexport const TOGGLE_GALLERY_VISIBLE = 'TOGGLE_GALLERY_VISIBLE';\r\nexport const SET_GALLERY_ACTIVE_IMAGE_INDEX = 'SET_GALLERY_ACTIVE_IMAGE_INDEX';\r\nexport const SET_MATERIALS_PAGE_SUB_STEPS = 'SET_MATERIALS_PAGE_SUB_STEPS';\r\nexport const SET_MATERIALS_PAGE_ACTIVE_SUB_STEP = 'SET_MATERIALS_PAGE_ACTIVE_SUB_STEP';\r\nexport const TOGGLE_NOT_COMPATIBLE_VIEW = 'TOGGLE_NOT_COMPATIBLE_VIEW';\r\nexport const TOGGLE_PRODUCT_NOTE_EDITOR_VISIBLE = 'TOGGLE_PRODUCT_NOTE_EDITOR_VISIBLE';\r\nexport const SET_ROW_ITEMS = 'SET_ROW_ITEMS';\r\nexport const SET_MATERIALS_PAGE_CANVAS_CLASS = 'SET_MATERIALS_PAGE_CANVAS_CLASS';\r\n\r\n// SERVER COMMANDS\r\nexport const SET_LAYOUT_DATA_PARTS = 'SET_LAYOUT_DATA_PARTS';\r\nexport const SET_JAVASCRIPT_ERRORS = 'SET_JAVASCRIPT_ERRORS';\r\nexport const SET_WINDOW_WIDTH = 'SET_WINDOW_WIDTH';\r\nexport const SET_WINDOW_HEIGHT = 'SET_WINDOW_HEIGHT';\r\nexport const SET_JOB_ID = 'SET_JOB_ID';\r\nexport const SET_FABRICATOR_DATA = 'SET_FABRICATOR_DATA';\r\nexport const SET_FABRICATOR_TAXES = 'SET_FABRICATOR_TAXES';\r\nexport const UPDATE_FABRICATOR_SETTINGS = 'UPDATE_FABRICATOR_SETTINGS';\r\nexport const TOGGLE_HIDE_ITEMS_PRICES = 'TOGGLE_HIDE_ITEMS_PRICES';\r\nexport const TOGGLE_USE_FABRICATOR_COST_PRICES = 'TOGGLE_USE_FABRICATOR_COST_PRICES';\r\nexport const SET_STONE_PRICING = 'SET_STONE_PRICING';\r\nexport const ADD_VISUALIZERS_LOADED = 'ADD_VISUALIZERS_LOADED';\r\nexport const SET_COOKIE_ACCEPTED = 'SET_COOKIE_ACCEPTED';\r\nexport const SHOW_SUCCESS_NOTIFICATION = 'SHOW_SUCCESS_NOTIFICATION';\r\nexport const SET_LANGUAGE = 'SET_LANGUAGE';\r\nexport const SET_ACTIVE_THEME = 'SET_ACTIVE_THEME';\r\nexport const SET_NETWORK_CONNECTION = 'SET_NETWORK_CONNECTION';\r\nexport const SET_INITIAL_VISUALIZER_TYPE = 'SET_INITIAL_VISUALIZER_TYPE';\r\n\r\n// QUOTINGTOOL CATEGORIES\r\nexport const SET_QT_CATEGORIES_REQUESTED = 'SET_QT_CATEGORIES_REQUESTED';\r\nexport const SET_QT_CATEGORIES_LOADED = 'SET_QT_CATEGORIES_LOADED';\r\nexport const SET_QT_ACTIVE_CATEGORY = 'SET_QT_ACTIVE_CATEGORY';\r\n\r\n// BATHROOM VISUALIZER COMMANDS\r\nexport const TOGGLE_BATHROOM_VISUALIZER_OPEN = 'TOGGLE_BATHROOM_VISUALIZER_OPEN';\r\nexport const SET_BATHROOM_VISUALIZER_VISITED = 'SET_BATHROOM_VISUALIZER_VISITED';\r\nexport const SET_BV_CANVAS_ID = 'SET_BV_CANVAS_ID';\r\nexport const SET_BV_FEATURES = 'SET_BV_FEATURES';\r\nexport const SET_BV_PRESETS = 'SET_BV_PRESETS';\r\nexport const SET_ACTIVE_PRESET = 'SET_ACTIVE_PRESET';\r\nexport const TOGGLE_SHOW_RESTORE_POPUP = 'TOGGLE_SHOW_RESTORE_POPUP';\r\nexport const SET_CANVAS_DIMENSIONS = 'SET_CANVAS_DIMENSIONS';\r\nexport const SET_STATIC_CANVAS_IMAGE = 'SET_STATIC_CANVAS_IMAGE';\r\nexport const SET_CANVAS_SCALE = 'SET_CANVAS_SCALE';\r\nexport const UPDATE_CANVAS_COUNT = 'UPDATE_CANVAS_COUNT';\r\nexport const SET_PRESET_WAS_CHANGED_BY_USER = 'SET_PRESET_WAS_CHANGED_BY_USER';\r\nexport const SET_FIRST_LOADED_PRESET = 'SET_FIRST_LOADED_PRESET';\r\nexport const SET_LOADED_PRESETS = 'SET_LOADED_PRESETS';\r\n\r\n// LOADER\r\nexport const TOGGLE_LOADER = 'TOGGLE_LOADER';\r\nexport const SET_MULTI_LOADER = 'SET_MULTI_LOADER';\r\n\r\n// APPLY POPUP\r\nexport const TOGGLE_APPLY_POPUP = 'TOGGLE_APPLY_POPUP';\r\n// CONFIRM POPUP\r\nexport const TOGGLE_CONFIRM_POPUP = 'TOGGLE_CONFIRM_POPUP';\r\n\r\n// USER COMMANDS\r\nexport const TOGGLE_USER_POPUP = 'TOGGLE_USER_POPUP';\r\nexport const CHANGE_USER_INFO = 'CHANGE_USER_INFO';\r\nexport const CHANGE_USER_INFO_ERRORS = 'CHANGE_USER_INFO_ERRORS';\r\nexport const SET_EMPLOYEES_LIST = 'SET_EMPLOYEES_LIST';\r\nexport const TOGGLE_ADDITIONAL_FIELDS = 'TOGGLE_ADDITIONAL_FIELDS';\r\nexport const SET_USER_PHONE_NUMBER_VALIDATED = 'SET_USER_PHONE_NUMBER_VALIDATED';\r\nexport const RESTORE_USER_STATE = 'RESTORE_USER_STATE';\r\nexport const SET_ALREADY_REGISTERED_USER = 'SET_ALREADY_REGISTERED_USER';\r\nexport const SET_LEAD_CAPTURE_CLICK_COUNT = 'SET_LEAD_CAPTURE_CLICK_COUNT';\r\nexport const SET_USER_POPUP_CONTENT = 'SET_USER_POPUP_CONTENT';\r\nexport const SET_USER_TWO_FA = 'SET_USER_TWO_FA';\r\nexport const SET_USER_OPT_IN = 'SET_USER_OPT_IN';\r\n\r\n// CART COMMANDS\r\nexport const ADD_TO_CART = 'ADD_TO_CART';\r\nexport const ADD_DISPLAY_LOGIC_CART_ITEM = 'ADD_DISPLAY_LOGIC_CART_ITEM';\r\nexport const REMOVE_FROM_CART = 'REMOVE_FROM_CART';\r\nexport const REMOVE_INSTALLATION_SERVICE_FROM_CART = 'REMOVE_INSTALLATION_SERVICE_FROM_CART';\r\nexport const CHANGE_CART_QUANTITY = 'CHANGE_CART_QUANTITY';\r\nexport const CHANGE_CART_FEATURE = 'CHANGE_CART_FEATURE';\r\nexport const CLICK_QUESTION_NO = 'CLICK_QUESTION_NO';\r\nexport const CAME_FROM_PAGE = 'CAME_FROM_PAGE';\r\nexport const CLEAR_CART = 'CLEAR_CART';\r\nexport const RESTORE_CART = 'RESTORE_CART';\r\nexport const ADD_TO_RECENTLY_VIEWED = 'ADD_TO_RECENTLY_VIEWED';\r\nexport const SHOW_CHECKOUT_POPUP = 'SHOW_CHECKOUT_POPUP';\r\nexport const SUBMIT_PAYMENT = 'SUBMIT_PAYMENT';\r\nexport const SUBMIT_PAYMENT_RESPONSE = 'SUBMIT_PAYMENT_RESPONSE';\r\nexport const SHOW_ORDER_COMPLETE_POPUP = 'SHOW_ORDER_COMPLETE_POPUP';\r\nexport const TOGGLE_SHOW_MOBILE_QUOTES = 'TOGGLE_SHOW_MOBILE_QUOTES';\r\nexport const TOGGLE_SHOW_ALL_QUOTES_CART_ITEMS_LIST = 'TOGGLE_SHOW_ALL_QUOTES_CART_ITEMS_LIST';\r\nexport const SET_AGREE_EMAIL_CHECKBOX = 'SET_AGREE_EMAIL_CHECKBOX';\r\nexport const SET_CART_FOOTER_ACTIVE_BUTTON_INDEX = 'SET_CART_FOOTER_ACTIVE_BUTTON_INDEX';\r\nexport const SET_CART_ITEM_EDIT_FEATURE = 'SET_CART_ITEM_EDIT_FEATURE';\r\nexport const SET_LOOK_REMOVED_CART_ITEMS = 'SET_LOOK_REMOVED_CART_ITEMS';\r\nexport const SET_AMAZON_IMAGE_URL = 'SET_AMAZON_IMAGE_URL';\r\nexport const SET_CART_ITEMS_ADDED_TO_PARENT_CART = 'SET_CART_ITEMS_ADDED_TO_PARENT_CART';\r\nexport const CHANGE_ALL_CART_ITEMS = 'CHANGE_ALL_CART_ITEMS';\r\nexport const SET_SURE_TAX = 'SET_SURE_TAX';\r\nexport const SET_SURE_TAX_LOADING = 'SET_SURE_TAX_LOADING';\r\nexport const SET_MANUAL_TAX = 'SET_MANUAL_TAX';\r\n\r\nexport const SET_MARK_UP_LOGIC = 'SET_MARK_UP_LOGIC';\r\nexport const SET_DELIVERY_LIST = 'SET_DELIVERY_LIST';\r\nexport const SET_ALL_FEATURES_LOADED = 'SET_ALL_FEATURES_LOADED';\r\nexport const SET_ALLOW_ROUTING = 'SET_ALLOW_ROUTING';\r\nexport const SET_ALLOW_MAIN_LOADING = 'SET_ALLOW_MAIN_LOADING';\r\nexport const SET_ACTION_AFTER_VISUALIZER_TYPE_CHANGED = 'SET_ACTION_AFTER_VISUALIZER_TYPE_CHANGED';\r\nexport const SET_VISUALIZER_TYPE_CHANGING = 'SET_VISUALIZER_TYPE_CHANGING';\r\n\r\n// INSTALLATION COMMANDS\r\nexport const TOGGLE_INST_OPENED = 'TOGGLE_INST_OPENED';\r\nexport const SET_INST_LIST = 'SET_INST_LIST';\r\nexport const SET_DEFAULT_INST_LIST = 'SET_DEFAULT_INST_LIST';\r\n\r\n// QUOTE STATE\r\nexport const SET_STATE_TO_QUOTE = \"SET_STATE_TO_QUOTE\";\r\n\r\n// PRICE WORKSHEET\r\nexport const TOGGLE_PRICE_WORKSHEET_OPENED = 'TOGGLE_PRICE_WORKSHEET_OPENED';\r\nexport const SET_DISCOUNT_SECTIONS = 'SET_DISCOUNT_SECTIONS';\r\nexport const SET_CUSTOM_ADDED_DISCOUNTS = 'SET_CUSTOM_ADDED_DISCOUNTS';\r\nexport const SET_FINANCE_PERCENTAGE = 'SET_FINANCE_PERCENTAGE';\r\nexport const SET_ALL_FINANCE_OPTIONS_POPUP_VISIBLE = 'SET_ALL_FINANCE_OPTIONS_POPUP_VISIBLE';\r\nexport const SET_DISCOUNT_FINANCE_CELLS_VISIBLE = 'SET_DISCOUNT_FINANCE_CELLS_VISIBLE';\r\n\r\n// MESSAGE BOX COMMANDS\r\nexport const CHANGE_MESSAGE_BOX = 'CHANGE_MESSAGE_BOX';\r\n\r\n// FILTERS\r\nexport const SET_SELECTED_FILTERS = 'SET_SELECTED_FILTERS';\r\nexport const LOAD_FILTERS = 'LOAD_FILTERS';\r\nexport const SET_EXPANDED_FILTERS = 'SET_EXPANDED_FILTERS';\r\nexport const SHOW_FILTERS = 'SHOW_FILTERS';\r\nexport const SHOW_FILTERS_IF_NOT_VISIBLE = \"SHOW_FILTERS_IF_NOT_VISIBLE\";\r\nexport const SET_FILTER_VISIBLE = 'SET_FILTER_VISIBLE';\r\nexport const SET_AVAILABLE_FILTER_VALUES = 'SET_AVAILABLE_FILTER_VALUES';\r\nexport const UPDATE_FILTERS_COUNT = 'UPDATE_FILTERS_COUNT';\r\nexport const SET_COUNTERTOP_FILTERS_RECEIVED = 'SET_COUNTERTOP_FILTERS_RECEIVED';\r\n\r\n// DESKTOP NAVIGATION\r\nexport const TOGGLE_DESKTOP_NAVIGATION = \"TOGGLE_DESKTOP_NAVIGATION\";\r\nexport const SET_ACTIVE_NAVIGATION_NAMES = \"SET_ACTIVE_NAVIGATION_NAMES\";\r\n\r\n// MOBILE MENU NAV\r\nexport const LOAD_MOBILE_NAV = \"LOAD_MOBILE_NAV\";\r\nexport const SHOW_SCHEDULER = \"SHOW_SCHEDULER\";\r\nexport const SCHEDULER_SCHEDULE = \"SCHEDULER_SCHEDULE\";\r\n\r\n// COMMON NAVIGATION\r\nexport const SET_MODULE_CONTEXT_MENU_TYPE = \"SET_MODULE_CONTEXT_MENU_TYPE\";\r\nexport const SET_MODULE_CONTEXT_MENU_MODULE = \"SET_MODULE_CONTEXT_MENU_MODULE\";\r\nexport const SET_MODULE_CONTEXT_MENU_MODULE_PART = \"SET_MODULE_CONTEXT_MENU_MODULE_PART\";\r\nexport const SET_MODULE_CONTEXT_MENU_DIRECTION = \"SET_MODULE_CONTEXT_MENU_DIRECTION\";\r\nexport const SET_NAVIGATION_VIEW_TYPE = \"SET_NAVIGATION_VIEW_TYPE\";\r\nexport const SET_CABINETS_APPLY_TO = \"SET_CABINETS_APPLY_TO\";\r\nexport const SET_CABINETS_APPLY_TO_BATHROOM = \"SET_CABINETS_APPLY_TO_BATHROOM\";\r\nexport const SET_COUNTERTOPS_APPLY_TO = \"SET_COUNTERTOPS_APPLY_TO\";\r\nexport const SET_COUNTERTOPS_APPLY_TO_BATHROOM = \"SET_COUNTERTOPS_APPLY_TO_BATHROOM\";\r\nexport const SET_APPLY_TO_COMMON = \"SET_APPLY_TO_COMMON\";\r\nexport const SET_EDGES_APPLY_TO = \"SET_EDGES_APPLY_TO\";\r\nexport const SET_NAVIGATION_LOADING = \"SET_NAVIGATION_LOADING\";\r\nexport const UPDATE_DISABLE_FEATURE_GROUP_RADIO = \"UPDATE_DISABLE_FEATURE_GROUP_RADIO\";\r\nexport const TOGGLE_NAV_ITEM_POSITION_MODAL = \"TOGGLE_NAV_ITEM_POSITION_MODAL\";\r\nexport const SET_USE_FEATURES_LIGHT_REQUEST = \"SET_USE_FEATURES_LIGHT_REQUEST\";\r\n\r\n// CABINET MODULE FILTERS\r\nexport const SET_ACTIVE_NAVIGATION_FILTER = \"SET_ACTIVE_NAVIGATION_FILTER\";\r\nexport const SET_ACTIVE_NAVIGATION_FILTER_STEP_INDEX = \"SET_ACTIVE_NAVIGATION_FILTER_STEP_INDEX\";\r\nexport const SET_CABINET_NAVIGATION_FILTER_COMPLETED = \"SET_CABINET_NAVIGATION_FILTER_COMPLETED\";\r\n\r\n//COUNTERTOP WIZARD\r\nexport const SET_COUNTERTOP_NAVIGATION_FILTER_COMPLETED = \"SET_COUNTERTOP_NAVIGATION_FILTER_COMPLETED\";\r\nexport const SET_COUNTERTOP_WIZARD = \"SET_COUNTERTOP_WIZARD\";\r\n\r\n//NEW DASHBOARD WIZARD\r\nexport const SET_WIZARD_CONFIG = \"SET_WIZARD_CONFIG\";\r\nexport const SET_WIZARD_IS_ACTIVE = \"SET_WIZARD_IS_ACTIVE\";\r\nexport const SET_WIZARD_ACTIVE_FILTER_GROUP_INDEX = \"SET_WIZARD_ACTIVE_FILTER_GROUP_INDEX\";\r\nexport const SET_WIZARD_LIST = \"SET_WIZARD_LIST\";\r\nexport const SET_WIZARD_ACTIVE_ITEM = \"SET_WIZARD_ACTIVE_ITEM\";\r\nexport const SET_WIZARD_SHOW_FEATURE_SECTION = \"SET_WIZARD_SHOW_FEATURE_SECTION\";\r\nexport const SET_WIZARD_ACTIVE_STEP = \"SET_WIZARD_ACTIVE_STEP\";\r\nexport const SET_WIZARD_SELECTED_VALUES = \"SET_WIZARD_SELECTED_VALUES\";\r\nexport const SET_ALL_WIZARD_SELECTED_VALUES = \"SET_ALL_WIZARD_SELECTED_VALUES\";\r\nexport const SET_WIZARD_CONFLICT_POPUP_OPENED = \"SET_WIZARD_CONFLICT_POPUP_OPENED\";\r\nexport const SET_WIZARD_CONFLICT_STEPS = \"SET_WIZARD_CONFLICT_STEPS\";\r\nexport const RESTORE_ALL_WIZARD_SELECTED_VALUES = \"RESTORE_ALL_WIZARD_SELECTED_VALUES\";\r\nexport const SET_WIZARD_MISSING_FEATURES = \"SET_WIZARD_MISSING_FEATURES\";\r\nexport const SET_WIZARD_SQFT_CART_ITEMS = \"SET_WIZARD_SQFT_CART_ITEMS\";\r\nexport const SET_WIZARD_ALLOW_SKIP_DONE_STEPS = \"SET_WIZARD_ALLOW_SKIP_DONE_STEPS\";\r\n\r\n// SQUARE FOOTAGE TOOL\r\n// export const TOGGLE_SQFT = \"TOGGLE_SQFT\";\r\nexport const ENABLE_SQUARE_FOOTAGE = \"ENABLE_SQUARE_FOOTAGE\";\r\nexport const SET_SQUARE_FOOTAGE_GROUP = \"SET_SQUARE_FOOTAGE_GROUP\";\r\nexport const SET_SQFT_VIEW_MODE = \"SET_SQFT_VIEW_MODE\";\r\nexport const LOAD_SQFT = \"LOAD_SQFT\";\r\nexport const UPDATE_SQFT = \"UPDATE_SQFT\";\r\nexport const UPDATE_SQFT_CALCULATIONS = \"UPDATE_SQFT_CALCULATIONS\";\r\nexport const SET_SQFT_SQUARE_FEET = \"SET_SQFT_SQUARE_FEET\";\r\nexport const TOGGLE_CHANGE_LAYOUT_POPUP = \"TOGGLE_CHANGE_LAYOUT_POPUP\";\r\nexport const SET_NEW_LAYOUT_ON_SQFT = \"SET_NEW_LAYOUT_ON_SQFT\";\r\nexport const SET_SQFT_MEASURE_UNIT = \"SET_SQFT_MEASURE_UNIT\";\r\nexport const CHANGE_SQFT_FEATURES_POPUP = \"CHANGE_SQFT_FEATURES_POPUP\";\r\nexport const SQT_SQFT_FROM_FEATURE = \"SQT_SQFT_FROM_FEATURE\";\r\nexport const SET_CABINETS_GLB = \"SET_CABINETS_GLB\";\r\nexport const SET_CABINETS_AR_BLOB_URL = \"SET_CABINETS_AR_BLOB_URL\";\r\nexport const SET_API_ERROR_MESSAGE = \"SET_API_ERROR_MESSAGE\";\r\nexport const SET_SHAPE_IDS_WITH_MISSING_FEATURES = \"SET_SHAPE_IDS_WITH_MISSING_FEATURES\";\r\nexport const SET_CHANGE_SHAPE_FEATURE_MISSING_MESSAGE = \"SET_CHANGE_SHAPE_FEATURE_MISSING_MESSAGE\";\r\nexport const ADD_SHAPE_ID_WITH_MISSING_FEATURES = \"ADD_SHAPE_ID_WITH_MISSING_FEATURES\";\r\nexport const SET_SELECTED_COUNTERTOP = \"SET_SELECTED_COUNTERTOP\";\r\nexport const SET_SELECTED_WALL = \"SET_SELECTED_WALL\";\r\nexport const SET_ABORT_CONTROLLER = \"SET_ABORT_CONTROLLER\";\r\n\r\n// SLAB TOOL\r\nexport const SHOW_SLAB_TOOL = \"SHOW_SLAB_TOOL\";\r\nexport const SET_SLAB_TOOL_VISITED = \"SET_SLAB_TOOL_VISITED\";\r\nexport const ADD_ROOM_WITH_VISITED_SLAB_TOOL = \"ADD_ROOM_WITH_VISITED_SLAB_TOOL\";\r\nexport const SET_ACTIVE_SLAB_ID = \"SET_ACTIVE_SLAB_ID\";\r\nexport const SET_ACTIVE_SLAB_URL = \"SET_ACTIVE_SLAB_URL\";\r\nexport const SET_SQFT_SLAB_ACTIVE_STEP = \"SET_SQFT_SLAB_ACTIVE_STEP\";\r\nexport const SET_SQFT_SLAB_SEARCH_TEXT = \"SET_SQFT_SLAB_SEARCH_TEXT\";\r\nexport const SET_SQFT_SLAB_ASPECT_RATIO = \"SET_SQFT_SLAB_ASPECT_RATIO\";\r\nexport const SET_SQFT_SLAB_IMAGE_WIDTH = \"SET_SQFT_SLAB_IMAGE_WIDTH\";\r\nexport const SET_SQFT_SLAB_IMAGE_HEIGHT = \"SET_SQFT_SLAB_IMAGE_HEIGHT\";\r\nexport const SET_SQFT_SLAB_CROPPER_DATA = \"SET_SQFT_SLAB_CROPPER_DATA\";\r\nexport const SET_SQFT_CROPPED_SLAB_IMAGES = \"SET_SQFT_CROPPED_SLAB_IMAGES\";\r\nexport const ADD_SQFT_CROPPED_SLAB_IMAGE = \"ADD_SQFT_CROPPED_SLAB_IMAGE\";\r\nexport const DELETE_CROPPED_SLAB_IMAGE = \"DELETE_CROPPED_SLAB_IMAGE\";\r\nexport const SET_PRICE_PER_AREA = \"SET_PRICE_PER_AREA\";\r\nexport const SET_SLAB_IMAGE_TYPE = \"SET_SLAB_IMAGE_TYPE\";\r\nexport const SET_IS_MEASUREMENT_VISIBLE_IN_SLAB_MODE = \"SET_IS_MEASUREMENT_VISIBLE_IN_SLAB_MODE\";\r\nexport const SET_IS_SIZE_VALIDATION_FAILED = \"SET_IS_SIZE_VALIDATION_FAILED\";\r\nexport const SET_IS_SLAB_PRICING_ENABLED = \"SET_IS_SLAB_PRICING_ENABLED\";\r\n\r\n// MITERED\r\nexport const SET_MITERED_SECTIONS = \"SET_MITERED_SECTIONS\";\r\nexport const ADD_MITERED_SECTION = \"ADD_MITERED_SECTION\";\r\nexport const CHANGE_MITERED_SECTION = \"CHANGE_MITERED_SECTION\";\r\nexport const DELETE_MITERED_SECTION = \"DELETE_MITERED_SECTION\";\r\nexport const DELETE_ALL_MITERED_SECTIONS = \"DELETE_ALL_MITERED_SECTIONS\";\r\n\r\n// RESOURCE\r\nexport const SET_RESOURCES = \"SET_RESOURCES\";\r\nexport const ADD_RESOURCE = \"ADD_RESOURCE\";\r\nexport const CHANGE_RESOURCE = \"CHANGE_RESOURCE\";\r\nexport const DELETE_RESOURCE = \"DELETE_RESOURCE\";\r\nexport const DELETE_RESOURCE_ATTACHED_TO = \"DELETE_RESOURCE_ATTACHED_TO\";\r\nexport const DELETE_ALL_RESOURCES = \"DELETE_ALL_RESOURCES\";\r\nexport const SET_SELECTED_FEATURE = \"SET_SELECTED_FEATURE\";\r\nexport const SET_SELECTED_PART_IDS = \"SET_SELECTED_PART_IDS\";\r\nexport const SET_SELECTED_HANDLE = \"SET_SELECTED_HANDLE\";\r\n\r\n// SQUARE FOOTAGE MENU\r\nexport const SET_SQFT_MENU_OPENED = \"SET_SQFT_MENU_OPENED\";\r\nexport const SET_SQFT_MENU_LOCK = \"SET_SQFT_MENU_LOCK\";\r\nexport const SET_SQFT_MENU_ACTIVE_BUTTON = \"SET_SQFT_MENU_ACTIVE_BUTTON\";\r\nexport const SET_SQFT_SYSTEM_MESSAGE = \"SET_SQFT_SYSTEM_MESSAGE\";\r\nexport const SET_SQFT_AR3D_POPUP = \"SET_SQFT_AR3D_POPUP\";\r\nexport const SET_SQFT_POPUP = \"SET_SQFT_POPUP\";\r\nexport const SET_SQFT_CONTEXT_MENU = \"SET_SQFT_CONTEXT_MENU\";\r\nexport const SET_SQFT_CONTEXT_MENU_V2 = \"SET_SQFT_CONTEXT_MENU_V2\";\r\nexport const SET_SQFT_SYSTEM_DELETE_MESSAGE = \"SET_SQFT_SYSTEM_DELETE_MESSAGE\";\r\nexport const SET_SQFT_ACTIVE_SUB_MENU_BUTTON = \"SET_SQFT_ACTIVE_SUB_MENU_BUTTON\";\r\nexport const SET_SQFT_ACTIVE_LEVEL3_BUTTON = \"SET_SQFT_ACTIVE_LEVEL3_BUTTON\";\r\nexport const SET_SQFT_ROOM_LAYOUTS = \"SET_SQFT_ROOM_LAYOUTS\";\r\nexport const SET_SQFT_ACTIVE_ROOM = \"SET_SQFT_ACTIVE_ROOM\";\r\nexport const SET_SQFT_ACTIVE_ROOM_ID = \"SET_SQFT_ACTIVE_ROOM_ID\";\r\nexport const SET_SQFT_ACTIVE_ROOM_TYPE = \"SET_SQFT_ACTIVE_ROOM_TYPE\";\r\nexport const SET_SQFT_ACTIVE_ROOM_INDEX = \"SET_SQFT_ACTIVE_ROOM_INDEX\";\r\nexport const SET_SQFT_ROOM_SWITCHER_VISIBLE= \"SET_SQFT_ROOM_SWITCHER_VISIBLE\";\r\nexport const SET_FREE_DRAW_MODE = \"SET_FREE_DRAW_MODE\";\r\n\r\nexport const SET_CHANGE_VALUE_POPUPS = \"SET_CHANGE_VALUE_POPUPS\";\r\nexport const ADD_CHANGE_VALUE_POPUP = \"ADD_CHANGE_VALUE_POPUP\";\r\nexport const CHANGE_VALUE_POPUP = \"CHANGE_VALUE_POPUP\";\r\nexport const DELETE_CHANGE_VALUE_POPUP = \"DELETE_CHANGE_VALUE_POPUP\";\r\n\r\nexport const SET_VALIDATION_POPUPS = \"SET_VALIDATION_POPUPS\";\r\nexport const ADD_VALIDATION_POPUP = \"ADD_VALIDATION_POPUP\";\r\nexport const VALIDATION_POPUP = \"VALIDATION_POPUP\";\r\nexport const DELETE_VALIDATION_POPUP = \"DELETE_VALIDATION_POPUP\";\r\n\r\nexport const SET_WALLS_UP_MODE = \"SET_WALLS_UP_MODE\";\r\nexport const SET_WALLS_LOCK_MODE = \"SET_WALLS_LOCK_MODE\";\r\nexport const SET_IS_ITEXT_EDITING = \"SET_IS_ITEXT_EDITING\";\r\nexport const SET_SLAB_PLACEHOLDER_OVERLAPS_WITH_MULTIPLE_SHAPES = \"SET_SLAB_PLACEHOLDER_OVERLAPS_WITH_MULTIPLE_SHAPES\";\r\nexport const SET_RE_CACHE_MENU_COUNTER = \"SET_RE_CACHE_MENU_COUNTER\";\r\n\r\n// SQUARE FOOTAGE MANUAL CALCULATION\r\nexport const TOGGLE_SHOW_MANUAL_CALCULATION = \"TOGGLE_SHOW_MANUAL_CALCULATION\";\r\nexport const SET_SWITCHER_POSITION = \"SET_SWITCHER_POSITION\";\r\nexport const ADD_MANUAL_CALCULATION_ROW = \"ADD_MANUAL_CALCULATION_ROW\";\r\nexport const UPDATE_MANUAL_CALCULATION_ROW = \"UPDATE_MANUAL_CALCULATION_ROW\";\r\nexport const UPDATE_MANUAL_CALCULATION_ROWS = \"UPDATE_MANUAL_CALCULATION_ROWS\";\r\nexport const DELETE_MANUAL_CALCULATION_ROW = \"DELETE_MANUAL_CALCULATION_ROW\";\r\n\r\n// SQUARE FOOTAGE TUTORIAL\r\nexport const SET_SQFT_TUTORIAL_STEP = 'SET_SQFT_TUTORIAL_STEP';\r\nexport const SET_SQFT_TUTORIAL_SWITCHING = 'SET_SQFT_TUTORIAL_SWITCHING';\r\n\r\n// CHECKOUT DOCUSIGN IFRAME\r\nexport const SHOW_DOCUSIGN = 'SHOW_DOCUSIGN';\r\nexport const SHOW_DEPOSIT = 'SHOW_DEPOSIT';\r\nexport const SHOW_CONTRACT_SIGNING = 'SHOW_CONTRACT_SIGNING';\r\nexport const SET_AFTER_CONTRACT_SIGN_CALLBACK = 'SET_AFTER_CONTRACT_SIGN_CALLBACK';\r\n\r\n// UPLOADS, NOTES & SQFT\r\nexport const ADD_PROJECT_DOCUMENT = 'ADD_PROJECT_DOCUMENT';\r\n// export const EDIT_PROJECT_DOCUMENTS = 'EDIT_PROJECT_DOCUMENTS';\r\nexport const SET_PROJECT_DOCUMENTS_IDS = 'SET_PROJECT_DOCUMENTS_IDS';\r\n\r\n// UPLOADS, NOTES & SQFT\r\nexport const SHOW_MATERIALS_TUTORIAL = 'SHOW_MATERIALS_TUTORIAL';\r\nexport const SET_MATERIALS_TUTORIAL_STEP = 'SET_MATERIALS_TUTORIAL_STEP';\r\nexport const SET_MATERIALS_TUTORIAL_FINISHED = 'SET_MATERIALS_TUTORIAL_FINISHED';\r\nexport const SHOW_MATERIALS_AGENT_TUTORIAL = 'SHOW_MATERIALS_AGENT_TUTORIAL';\r\nexport const SET_MATERIALS_AGENT_TUTORIAL_FINISHED = 'SET_MATERIALS_AGENT_TUTORIAL_FINISHED';\r\nexport const SHOW_VISUALIZER_TUTORIAL = 'SHOW_VISUALIZER_TUTORIAL';\r\nexport const SET_VISUALIZER_TUTORIAL_STEP = 'SET_VISUALIZER_TUTORIAL_STEP';\r\nexport const SET_VISUALIZER_TUTORIAL_FINISHED = 'SET_VISUALIZER_TUTORIAL_FINISHED';\r\n\r\n// CONTRACT SIGNING\r\nexport const CONTRACT_SIGNING_SET_STEP = 'CONTRACT_SIGNING_SET_STEP';\r\nexport const CONTRACT_SIGNING_POST_SIGNATURE = 'CONTRACT_SIGNING_POST_SIGNATURE';\r\nexport const CONTRACT_SIGNING_JOB_DOCUMENT = 'CONTRACT_SIGNING_JOB_DOCUMENT';\r\nexport const CONTRACT_SIGNING_SHOW_SIGNATURE_PAD = 'CONTRACT_SIGNING_SHOW_SIGNATURE_PAD';\r\nexport const CONTRACT_SIGNING_SET_CONTRACTS_VALUES = 'CONTRACT_SIGNING_SET_CONTRACTS_VALUES';\r\nexport const SET_CONTRACT_BLOB = 'SET_CONTRACT_BLOB';\r\nexport const CONTRACT_SIGNING_RESTORE_VALUES = 'CONTRACT_SIGNING_RESTORE_VALUES';\r\nexport const CONTRACT_SIGNING_SET_CONTRACTS_LIST = 'CONTRACT_SIGNING_SET_CONTRACTS_LIST';\r\n\r\n// INITIAL FLOW\r\nexport const SET_FABRICATOR_SUBSCRIPTIONS = 'SET_FABRICATOR_SUBSCRIPTIONS';\r\nexport const SET_INITIAL_FLOW_FINISHED = 'SET_INITIAL_FLOW_FINISHED';\r\nexport const SET_INITIAL_FLOW_ADDITIONAL_ROOMS = 'SET_INITIAL_FLOW_ADDITIONAL_ROOMS';\r\nexport const SET_INITIAL_FLOW_BUTTON = 'SET_INITIAL_FLOW_BUTTON';\r\nexport const SET_INITIAL_FLOW_ROOM = 'SET_INITIAL_FLOW_ROOM';\r\nexport const SET_INITIAL_FLOW_VISUALIZER_NOT_AVAILABLE = 'SET_INITIAL_FLOW_VISUALIZER_NOT_AVAILABLE';\r\nexport const SET_INITIAL_FLOW_ROOM_LAYOUT = 'SET_INITIAL_FLOW_ROOM_LAYOUT';\r\nexport const SET_INITIAL_FLOW_STEP = 'SET_INITIAL_FLOW_STEP';\r\n\r\n// UNLOCK CALCULATIONS TUTORIAL\r\nexport const SET_SHOW_UNLOCK_CALCULATIONS = 'SET_SHOW_UNLOCK_CALCULATIONS';\r\nexport const SET_UNLOCK_CALCULATIONS_STEP = 'SET_UNLOCK_CALCULATIONS_STEP';\r\nexport const SHOW_UNLOCK_CALCULATIONS_CART_ITEM = 'SHOW_UNLOCK_CALCULATIONS_CART_ITEM';\r\nexport const SHOW_UNLOCK_CALCULATIONS_TOTAL_ITEM = 'SHOW_UNLOCK_CALCULATIONS_TOTAL_ITEM';\r\nexport const SHOW_UNLOCK_CALCULATIONS_TUTORIAL = 'SHOW_UNLOCK_CALCULATIONS_TUTORIAL';\r\nexport const SET_UNLOCK_CALCULATIONS_TUTORIAL_STEP = 'SET_UNLOCK_CALCULATIONS_TUTORIAL_STEP';\r\nexport const SET_UNLOCK_CALCULATIONS_TUTORIAL_FINISHED = 'SET_UNLOCK_CALCULATIONS_TUTORIAL_FINISHED';\r\n\r\n// INTRO VIDEO\r\nexport const SET_INTRO_VIDEO = 'SET_INTRO_VIDEO';\r\n\r\n// QUOTES\r\nexport const ADD_NEW_QUOTE = 'ADD_NEW_QUOTE';\r\nexport const SET_QUOTES = 'SET_QUOTES';\r\nexport const UPDATE_QUOTE = 'UPDATE_QUOTE';\r\nexport const SET_ACTIVE_QUOTE_INDEX = 'SET_ACTIVE_QUOTE_INDEX';\r\n\r\n// ADVANCED QUOTING\r\nexport const TOGGLE_SHOW_ADVANCED_QUOTING = 'TOGGLE_SHOW_ADVANCED_QUOTING';\r\nexport const SET_ADVANCED_QUOTING_SEARCH_ITEM = 'SET_ADVANCED_QUOTING_SEARCH_ITEM';\r\n\r\n// ADVANCED QUOTING\r\nexport const TOGGLE_SHOW_ASSIGN_QUOTE_POPUP = 'TOGGLE_SHOW_ASSIGN_QUOTE_POPUP';\r\nexport const SET_ASSIGN_QUOTE_POPUP_SEARCH_TEXT = 'SET_ASSIGN_QUOTE_POPUP_SEARCH_TEXT';\r\nexport const SET_ASSIGN_QUOTE_POPUP_EMPLOYEE = 'SET_ASSIGN_QUOTE_POPUP_EMPLOYEE';\r\nexport const SET_ASSIGN_QUOTE_POPUP_CUSTOMER = 'SET_ASSIGN_QUOTE_POPUP_CUSTOMER';\r\nexport const SET_ASSIGN_QUOTE_POPUP_SUCCESS_TEXT = 'SET_ASSIGN_QUOTE_POPUP_SUCCESS_TEXT';\r\nexport const SET_ASSIGN_QUOTE_CLONE_MODE = 'SET_ASSIGN_QUOTE_CLONE_MODE';\r\nexport const SET_ASSIGN_QUOTE_OFFLINE_DATA = 'SET_ASSIGN_QUOTE_OFFLINE_DATA';\r\n\r\n// RECEIPT\r\nexport const SET_RECEIPT_URL = 'SET_RECEIPT_URL';\r\nexport const SET_RECEIPT_SIGNATURE = 'SET_RECEIPT_SIGNATURE';\r\nexport const SET_RECEIPT_REFERRAL = 'SET_RECEIPT_REFERRAL';\r\n\r\n// LOOK ACTIONS\r\nexport const SET_LOOK_OPENED = 'SET_LOOK_OPENED';\r\nexport const SET_LOOK_EXPANDED = 'SET_LOOK_EXPANDED';\r\nexport const SET_LOOK_PARENT_KEY = 'SET_LOOK_PARENT_KEY';\r\nexport const SET_LOOK_PARENT_KEYS = 'SET_LOOK_PARENT_KEYS';\r\nexport const SET_LOOK_VIEW_TYPE = 'SET_LOOK_VIEW_TYPE';\r\nexport const SET_WISHLIST_POPUP_OPENED = 'SET_WISHLIST_POPUP_OPENED';\r\nexport const SET_SIDEBAR_MODAL_OPENED = 'SET_SIDEBAR_MODAL_OPENED';\r\nexport const SET_LOOK_ACTIVE_FEATURE = 'SET_LOOK_ACTIVE_FEATURE';\r\nexport const UPDATE_LOOK_ACTIVE_FEATURE_STOCK_COUNT = 'UPDATE_LOOK_ACTIVE_FEATURE_STOCK_COUNT';\r\nexport const SET_LOOK_ACTIVE_CATEGORY = 'SET_LOOK_ACTIVE_CATEGORY';\r\nexport const SET_LOOK_MORE_INFO_OPENED = 'SET_LOOK_MORE_INFO_OPENED';\r\nexport const SET_LOOK_LAYOUT_OPENED = 'SET_LOOK_LAYOUT_OPENED';\r\nexport const SET_LOOK_PAGE_OPENED = 'SET_LOOK_PAGE_OPENED';\r\nexport const SET_LOOK_OVERLAY_OPENED = 'SET_LOOK_OVERLAY_OPENED';\r\nexport const SET_LOOK_VIEW_CHANGE_OPTIONS = 'SET_LOOK_VIEW_CHANGE_OPTIONS';\r\nexport const SET_LOOK_STYLE_POPUP = 'SET_LOOK_STYLE_POPUP';\r\nexport const SET_LOOK_REMOVE_POPUP = 'SET_LOOK_REMOVE_POPUP';\r\nexport const SET_LOOK_INTRO_STEP = 'SET_LOOK_INTRO_STEP';\r\nexport const SET_LOOK_INTRO_HIDDEN = 'SET_LOOK_INTRO_HIDDEN';\r\nexport const SET_LOOK_CONTEXT_MENU = 'SET_LOOK_CONTEXT_MENU';\r\nexport const SET_LOOK_WALLS_APPLY_TO = 'SET_LOOK_WALLS_APPLY_TO';\r\nexport const SET_LOOK_ALL_WALLS_OPENED = 'SET_LOOK_ALL_WALLS_OPENED';\r\nexport const SET_LOOK_RETURN_ACTION = 'SET_LOOK_RETURN_ACTION';\r\nexport const SET_LOOK_DEMO_POINTS_CLICKED = 'SET_LOOK_DEMO_POINTS_CLICKED';\r\nexport const UPDATE_LOOK_NAVIGATION_COUNT = 'UPDATE_LOOK_NAVIGATION_COUNT';\r\n// export const UPDATE_LOOK_FEATURE_GROUP_COUNT = 'UPDATE_LOOK_FEATURE_GROUP_COUNT';\r\nexport const SET_LOOK_COMPATABILITY_ALERT = 'SET_LOOK_COMPATABILITY_ALERT';\r\nexport const SET_LOOK_RESTORE_STATE = 'SET_LOOK_RESTORE_STATE';\r\nexport const SET_LOOK_LOCK_TUTORIAL = 'SET_LOOK_LOCK_TUTORIAL';\r\nexport const SET_LOOK_ALL_WALLS_TUTORIAL = 'SET_LOOK_ALL_WALLS_TUTORIAL';\r\n\r\n// IFRAME ACTIONS\r\nexport const SET_IFRAME_INTEGRATION_REQUEST = 'SET_IFRAME_INTEGRATION_REQUEST';\r\nexport const SET_IFRAME_INTEGRATION_RESPONSE = 'SET_IFRAME_INTEGRATION_RESPONSE';\r\n\r\n// GROHE ACTIONS\r\n// export const SET_GROHE_CATEGORIES_OPENED = 'SET_GROHE_CATEGORIES_OPENED';\r\nexport const SET_GROHE_FILTERS_OPENED = 'SET_GROHE_FILTERS_OPENED';\r\nexport const SET_GROHE_SIMILAR_FEATURE = 'SET_GROHE_SIMILAR_FEATURE';\r\nexport const SET_GROHE_SIMILAR_PRODUCTS_OPENED = 'SET_GROHE_SIMILAR_PRODUCTS_OPENED';\r\nexport const SET_GROHE_REQUIRED_BUT_NOT_INCLUDED_FEATURE = 'SET_GROHE_REQUIRED_BUT_NOT_INCLUDED_FEATURE';\r\nexport const SET_GROHE_FILTERS_SEARCH_TEXT = 'SET_GROHE_FILTERS_SEARCH_TEXT';\r\nexport const SET_GROHE_LAST_OPENED_CATEGORY = 'SET_GROHE_LAST_OPENED_CATEGORY';\r\nexport const SET_GROHE_SUB_CATEGORY_OPENED = 'SET_GROHE_SUB_CATEGORY_OPENED';\r\nexport const SET_GROHE_SHOW_ADDED_TO_THE_CART_SUCCESS = 'SET_GROHE_SHOW_ADDED_TO_THE_CART_SUCCESS';\r\nexport const SET_GROHE_ACTIVE_FEATURE_QUANTITY = 'SET_GROHE_ACTIVE_FEATURE_QUANTITY';\r\nexport const SET_GROHE_SHARE_BUTTONS_OPENED = 'SET_GROHE_SHARE_BUTTONS_OPENED';\r\nexport const SET_GROHE_SAME_COLOR_ACTIVE_FEATURE = 'SET_GROHE_SAME_COLOR_ACTIVE_FEATURE';\r\nexport const SET_GROHE_SAME_COLOR_SECTION_OPENED = 'SET_GROHE_SAME_COLOR_SECTION_OPENED';\r\nexport const SET_GROHE_SAME_COLOR_CHECKBOX_APPLIED = 'SET_GROHE_SAME_COLOR_CHECKBOX_APPLIED';\r\nexport const SET_GROHE_EXISTING_TEMP_ID = 'SET_GROHE_EXISTING_TEMP_ID';\r\n\r\n// GROHE QUOTING TOOL ACTIONS\r\nexport const SET_GROHE_WIZARD_NAME = 'SET_GROHE_WIZARD_NAME';\r\nexport const SET_GROHE_WIZARD_OPENED = 'SET_GROHE_WIZARD_OPENED';\r\nexport const SET_GROHE_WIZARD_STEP = 'SET_GROHE_WIZARD_STEP';\r\n\r\n// GROHE SHOPPING CART PAYMENT\r\nexport const SET_PAYMENT_INFO = 'SET_PAYMENT_INFO';\r\nexport const SET_CARD_INFO = 'SET_CARD_INFO';\r\nexport const SET_CARD_ERRORS = 'SET_CARD_ERRORS';\r\nexport const SET_SHIPPING_ERRORS = 'SET_SHIPPING_ERRORS';\r\nexport const SET_SHIPPING_INFO = 'SET_SHIPPING_INFO';\r\nexport const SET_BILLING_INFO = 'SET_BILLING_INFO';\r\nexport const RESTORE_PAYMENT_INFO = 'RESTORE_PAYMENT_INFO';\r\n\r\n//HISTORY\r\nexport const ADD_LAYOUT_HISTORY = 'ADD_LAYOUT_HISTORY';\r\nexport const SET_LAYOUT_HISTORY = 'SET_LAYOUT_HISTORY';\r\n\r\n//SHOP PAGES\r\nexport const SET_SHOP_PAGE_LOADED = 'SET_SHOP_PAGE_LOADED';\r\nexport const SET_SHOP_PAGE_OPENED = 'SET_SHOP_PAGE_OPENED';\r\nexport const SET_SHOP_LAST_PAGE_VISITED = 'SET_SHOP_LAST_PAGE_VISITED';\r\nexport const SET_SHOP_PAGE_LEAVED = 'SET_SHOP_PAGE_LEAVED';\r\n// export const SET_SHOP_ACTIVE_CATEGORY = 'SET_SHOP_ACTIVE_CATEGORY';\r\n// export const SET_SHOP_ACTIVE_FEATURE = 'SET_SHOP_ACTIVE_FEATURE';\r\n\r\n// SUPER ADMIN\r\nexport const SET_ADMIN_LOGOUT_VISIBLE = \"SET_ADMIN_LOGOUT_VISIBLE\";\r\nexport const SET_ADMIN_LOGIN_POPUP_VISIBLE = \"SET_ADMIN_LOGIN_POPUP_VISIBLE\";\r\nexport const SET_ADMIN_TOOL_SETTINGS_POPUP_VISIBLE = \"SET_ADMIN_TOOL_SETTINGS_POPUP_VISIBLE\";\r\n","import config from \"./../components/canvas/store/sqftConfig\";\r\n///todo sqft-reacet//import 'core-js/es/array';\r\nimport workspace from \"./../components/canvas/core/workspace\";\r\nimport line from \"./../components/canvas/core/shapes/line\";\r\nimport $ from \"jquery\";\r\nimport sqftConfig from \"../components/canvas/store/sqftConfig\";\r\nimport {getEdgeFeatures} from \"./shapeHelper\";\r\nimport {isPointInsidePolygon} from \"../lib/pnpoly\";\r\nimport LineCorner from \"../components/canvas/core/shapes/lineHooks/lineCorner\";\r\nimport {getMiterEdgeHeight, isMiterEdge, isWaterfallFeature} from \"./featureHelper\";\r\n\r\nconst S3_FEATURES_Root = 'https://features-thumbnails.s3-accelerate.amazonaws.com/';\r\n\r\nexport const THUMBNAIL_SIZES = {\r\n small: `_100x100`,\r\n medium: `_175x175`,\r\n large: `_400x400`,\r\n};\r\n\r\nexport const featureThumbnailUrl = (dbFeature, size) => {\r\n return dbFeature.customThumbnail\r\n ? dbFeature.customThumbnail\r\n : dbFeature.thumbnailUrl\r\n ? s3FeatureImagePath(dbFeature.thumbnailUrl, size)\r\n : \"\";\r\n};\r\n\r\nexport function s3FeatureImagePath(imageThumbnail, size) {\r\n // const features_root = document.kvConfig.kioskMode ? KIOSK_FEATURES_Root : S3_FEATURES_Root;\r\n const features_root = S3_FEATURES_Root;\r\n return size\r\n ? `${features_root}feature-${imageThumbnail + size}.png`\r\n : `${features_root}feature-${imageThumbnail}.png` // full image path\r\n}\r\n\r\nexport const getUrlSQFTHashParam = (queryParam) => {\r\n let hash = window.location.hash.substr(1);\r\n hash = hash.replace('/sqft?', '');\r\n\r\n const hashParsed = hash.split('&').reduce(function (res, item) {\r\n let parts = item.split('=');\r\n res[parts[0]] = parts[1];\r\n return res;\r\n }, {});\r\n\r\n return hashParsed[queryParam];\r\n}\r\n\r\nexport const isIphoneX = () => { // https://stackoverflow.com/questions/47226824/iphonex-and-notch-detection\r\n let iPhone = /iPhone/.test(navigator.userAgent) && !window.MSStream;\r\n let aspect = window.screen.width / window.screen.height;\r\n return !!(iPhone && aspect.toFixed(3) === \"0.462\")\r\n};\r\nexport const isAndroid = () => {\r\n return navigator.userAgent && navigator.userAgent.toLowerCase().indexOf(\"android\") > -1;\r\n};\r\nexport const isChrome = () => {\r\n return !!navigator.userAgent.match('CriOS');\r\n};\r\nexport const isIOSDevice = () => {\r\n return !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\r\n};\r\nexport const isIE = () => {\r\n return (window.navigator.userAgent.indexOf('MSIE ') > 0)\r\n || (!!window.MSInputMethodContext && !!document.documentMode)\r\n || (window.navigator.userAgent.indexOf('Trident/') > 0)\r\n};\r\nexport const isEdge = () => {\r\n return window.navigator.userAgent.indexOf('Edge') > 0\r\n};\r\nexport const isFirefox = () => navigator.userAgent.toLowerCase().indexOf(\"firefox\") > -1;\r\n\r\nexport const hardCodeIsLowes = () => {\r\n const fabricatorId = getParamFromUrl(\"fabricatorId\") || window.fabricatorId || document.kvConfig.userId || 137530; // master countertops2\r\n return fabricatorId === 139043 || window.location.href.includes(\"mdp_surfaces\") || window.location.href.includes(\"lowes_\")\r\n};\r\n\r\nexport const getFontsize = () => {\r\n return config.measureUnit === \"Imperial\" ? config.workspace.fontSize : config.workspace.fontSizeMetric;\r\n};\r\n\r\nexport const getFontsizeSmall = () => {\r\n return $(window).width() <= 1024 ? getFontsize() - 4 : getFontsize() - 4;\r\n};\r\n\r\nexport const rotatePoint = (point, center, angle) => {\r\n angle = angle * (Math.PI/180); // Convert to radians\r\n const rotatedX = Math.cos(angle) * (point.x - center.x) - Math.sin(angle) * (point.y - center.y) + center.x;\r\n const rotatedY = Math.sin(angle) * (point.x - center.x) + Math.cos(angle) * (point.y - center.y) + center.y;\r\n\r\n return {x: rotatedX, y: rotatedY}\r\n};\r\n\r\nexport const getPointDistance = (from, to) => {\r\n var pointDistance = Math.sqrt(Math.pow(to.x - from.x, 2) + Math.pow(to.y - from.y, 2));\r\n return Math.round10(pointDistance, -3)\r\n};\r\n\r\nexport const getClosestPoint = (point, points) => {\r\n return points.reduce((a, b) => getPointDistance(point, a) < getPointDistance(point, b) ? a : b);\r\n};\r\n\r\nexport const get45CornerLegDistanceByHypotenuse = (hypotenuseDistance) => {\r\n return Math.sqrt(Math.pow(hypotenuseDistance, 2) / 2)\r\n};\r\n\r\nexport const getMidPoint = (point1, point2) => {\r\n return {\r\n x: (point1.x + point2.x) / 2,\r\n y: (point1.y + point2.y) / 2\r\n };\r\n};\r\n\r\nexport const getSectionPartPoint = (point1, point2, part) => {\r\n return {\r\n x: (point1.x + 1/part * point2.x) / (1 + 1/part),\r\n y: (point1.y + 1/part * point2.y) / (1 + 1/part)\r\n };\r\n};\r\n\r\nexport const getParralelPoint = (pointA, pointB, distanceFromLine = 5) => {\r\n // pointA - closest to the needed point\r\n // pointB - far to the needed point\r\n const midPoint = getPointBetweenPoints(pointA, pointB, distanceFromLine);\r\n const x = pointA.x + (pointA.x - midPoint.x) * 2;\r\n const y = pointA.y + (pointA.y - midPoint.y) * 2;\r\n\r\n return {x, y}\r\n};\r\n\r\nexport const getParallelPoints = (pointA, pointB, distanceFromLine = 5) => {\r\n let vector = {x: pointB.x - pointA.x, y: pointB.y - pointA.y}\r\n let len = Math.sqrt(Math.pow(vector.x, 2) + Math.pow(vector.y, 2));\r\n let ud = {x: vector.x / len, y: vector.y / len};\r\n //let perpendicularVector = {x: -ud.y, y: ud.x };\r\n\r\n let parallelPoint1 = {\r\n x: pointA.x - ud.y * distanceFromLine,\r\n y: pointA.y + ud.x * distanceFromLine\r\n };\r\n let parallelPoint2 = {\r\n x: parallelPoint1.x + vector.x,\r\n y: parallelPoint1.y + vector.y,\r\n };\r\n\r\n return [parallelPoint2, parallelPoint1];\r\n};\r\n\r\nexport const getDistanceFromPointToLine = (x, y, x1, y1, x2, y2) => {\r\n let A = x - x1;\r\n let B = y - y1;\r\n let C = x2 - x1;\r\n let D = y2 - y1;\r\n\r\n let dot = A * C + B * D;\r\n let len_sq = C * C + D * D;\r\n let param = -1;\r\n if (len_sq !== 0) //in case of 0 length line\r\n param = dot / len_sq;\r\n\r\n let xx, yy;\r\n if (param < 0) {\r\n xx = x1;\r\n yy = y1;\r\n } else if (param > 1) {\r\n xx = x2;\r\n yy = y2;\r\n } else {\r\n xx = x1 + param * C;\r\n yy = y1 + param * D;\r\n }\r\n\r\n let dx = x - xx;\r\n let dy = y - yy;\r\n\r\n return Math.sqrt(dx * dx + dy * dy);\r\n}\r\n\r\nexport const getDistanceFromPointToInfiniteLine = (x, y, x1, y1, x2, y2) => {\r\n return Math.abs((y2 - y1) * x - (x2 - x1) * y + x2 * y1 - y2 * x1) /\r\n Math.sqrt( Math.pow(y2 - y1, 2) + Math.pow(x2 - x1, 2))\r\n}\r\n\r\n/**\r\n * @param pointA closest to the needed point\r\n * @param pointB far to the needed point\r\n * @param distanceFromPointA\r\n * @param decimals\r\n * @return {{x: *, y: *}}\r\n */\r\nexport const getPointBetweenPoints = (pointA, pointB, distanceFromPointA = 5, decimals = null) => {\r\n // Calculate distance between pointA and pointB\r\n const distance = getPointDistance(pointA, pointB);\r\n const Xa = pointA.x;\r\n const Ya = pointA.y;\r\n const Xb = pointB.x;\r\n const Yb = pointB.y;\r\n\r\n // Calculate proportion k\r\n const k = distanceFromPointA / distance;\r\n let Xc = Xa + (Xb - Xa) * k;\r\n let Yc = Ya + (Yb - Ya) * k;\r\n\r\n // Check if decimals is not null and round if needed\r\n if (decimals !== null) {\r\n Xc = parseFloat(Math.round10(Xc, decimals));\r\n Yc = parseFloat(Math.round10(Yc, decimals));\r\n }\r\n\r\n return { x: Xc, y: Yc };\r\n};\r\n\r\nexport const getPointField = (posX, posY, parent = workspace) => {\r\n let scale = workspace.getScale(),\r\n offset = parent.getOffset();\r\n\r\n return {\r\n x: (posX * scale) + offset.x,\r\n y: (posY * scale) + offset.y\r\n };\r\n};\r\n\r\nexport const getPointOnWorkspace = (posX, posY, parent = workspace) => {\r\n let offset = parent.getOffset();\r\n\r\n return {\r\n x: posX + offset.x,\r\n y: posY + offset.y\r\n };\r\n};\r\n\r\nexport const getMousePositionOnField = (mouseX, mouseY) => {\r\n let wPos = workspace.getPosition();\r\n let scale = config.scale;\r\n\r\n return {\r\n x: (mouseX + wPos.x) / scale,\r\n y: (mouseY + wPos.y) / scale\r\n };\r\n};\r\n\r\nexport const getMousePositionOnShape = (mouseX, mouseY, shape) => {\r\n const pointPosOnShape = getMousePositionOnField(mouseX, mouseY, shape);\r\n const pos = shape.getPosition();\r\n return {\r\n x: pointPosOnShape.x - pos.x,\r\n y: pointPosOnShape.y - pos.y\r\n };\r\n};\r\n\r\nexport const getPointPositionOnShape = (pointPosX, pointPosY, shape) => {\r\n const pos = shape.getPosition();\r\n return {\r\n x: pointPosX - pos.x,\r\n y: pointPosY - pos.y\r\n };\r\n};\r\n\r\n/**\r\n * Return the first two pairs which have the smallest distances\r\n * @param pointsA\r\n * @param pointsB\r\n * @return {*[]}\r\n */\r\nexport const findClosestPointPairs = (pointsA, pointsB) => {\r\n let pairs = [];\r\n\r\n // Find the closest point from pointsB for each point in pointsA\r\n pointsA.forEach(pointA => {\r\n let closestPoint = null;\r\n let minDistance = Number.MAX_VALUE;\r\n\r\n // Iterating over each point in pointsB\r\n pointsB.forEach(pointB => {\r\n let distance = getPointDistance(pointA, pointB);\r\n // Updating the closest point and minimum distance if a closer point is found\r\n if (distance < minDistance) {\r\n closestPoint = pointB;\r\n minDistance = distance;\r\n }\r\n });\r\n\r\n pairs.push({ pointA, pointB: closestPoint, distance: minDistance });\r\n });\r\n\r\n // Sorting the pairs by distance\r\n pairs.sort((a, b) => a.distance - b.distance);\r\n\r\n return pairs.slice(0, 2);\r\n}\r\n\r\nexport const orientation = {\r\n VERTICAL: 0,\r\n HORIZONTAL: 1,\r\n NORTHWEST: 2,\r\n SOUTHEAST: 3,\r\n NORTHEAST: 4,\r\n SOUTHWEST: 5\r\n};\r\n\r\nexport const getParamFromUrl = (name, url = window.location.href) => {\r\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\r\n var regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\r\n};\r\n\r\nexport const numToLetter = (num) => {\r\n let mod = num % 26;\r\n let pow = num / 26 | 0;\r\n let out = mod ? String.fromCharCode(64 + mod) : (pow--, 'Z');\r\n\r\n return pow ? numToLetter(pow) + out : out;\r\n};\r\n\r\nexport const letterToNum = (str) => {\r\n let out = 0,\r\n len = str.length,\r\n pos = len;\r\n\r\n while ((pos -= 1) > -1) {\r\n out += (str.charCodeAt(pos) - 64) * Math.pow(26, len - 1 - pos);\r\n }\r\n\r\n return out;\r\n};\r\n\r\nexport const calculateHypotenuse = (a, b) => {\r\n return Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2));\r\n}\r\n\r\n//// CONVERT MEASURE UNIT START ////\r\n\r\nexport const mmToM = (mm) => {\r\n return Math.ceil10(mm / config.mmDivider, -2);\r\n};\r\n\r\nexport const mm2ToM2 = (mm) => {\r\n return Math.ceil10(mm / config.mm2ToM2Divider, -2);\r\n};\r\n\r\nexport const cmToInches = (cm) => {\r\n return Math.ceil10(cm / 2.54, -2);\r\n};\r\n\r\nexport const mmToInches = (mm) => {\r\n return Math.ceil10(mm / 25.4, -3);\r\n};\r\n\r\nexport const cmToMm = (cm) => {\r\n return Math.ceil10(cm * 10, -2);\r\n};\r\n\r\nexport const inchesToMm = (totalInches, shouldCeil = true, shouldRound = false) => {\r\n if (shouldCeil) {\r\n return Math.ceil(totalInches * config.millimetersMultiplier);\r\n } else if (shouldRound) {\r\n return Math.round(totalInches * config.millimetersMultiplier);\r\n }\r\n return totalInches * config.millimetersMultiplier;\r\n};\r\n\r\nexport const inchesToM = (totalInches) => {\r\n return Math.ceil10(totalInches * config.inchesToMMultiplier, -2);\r\n};\r\nexport const inchesToLNFT = (totalInches) => {\r\n return Math.ceil10(totalInches * 0.08333, -2);\r\n};\r\nexport const sqInchesToSqFoot = (totalInches) => {\r\n return Math.ceil10(totalInches / 144, -2);\r\n};\r\n\r\nexport const sqInchesToMM2 = (inches) => {\r\n return Math.ceil10(inches * 645.16, -2);\r\n};\r\n\r\nexport const sqInchesToM2 = (totalInches) => {\r\n return Math.ceil10(totalInches / 1550, -2);\r\n};\r\n\r\nexport const sqftToMM2 = (length) => {\r\n return Math.ceil(length * config.sqftToMmMultiplier);\r\n};\r\n\r\nexport const lnftToMM = (length) => {\r\n return Math.ceil(length * config.lnftToMmMultiplier);\r\n};\r\n\r\nexport const sqftToM2 = (length) => {\r\n return Math.ceil10(length * config.sqftToM2Multiplier, -2);\r\n};\r\n\r\nexport const getTransformedMeasureUnit = (value) => {\r\n return sqftConfig.measureUnit === \"Metric\"\r\n ? measureDistanceToInches(value).millimeters // ? distanceToMillimeters(inchesToMm(segment.length.value))\r\n : value;\r\n}\r\n\r\n//// CONVERT MEASURE UNIT END ////\r\n\r\n//// MEASURE DISTANCE START ////\r\n\r\n// Reduce a fraction by finding the Greatest Common Divisor and dividing by it.\r\nconst gcd = (a, b) => {\r\n if (b === 0) return a;\r\n return gcd(b, a % b);\r\n};\r\n\r\nconst reduce = (numerator, denominator) => {\r\n const common = gcd(numerator, denominator);\r\n return [numerator / common, denominator / common];\r\n};\r\n\r\nexport const measureDistanceToInches = (distance) => {\r\n let denom = 16;\r\n var total_segments = Math.ceil(distance * denom),\r\n // todo check if calculations are correct\r\n // millimeters = inchesToMm(distance),\r\n millimeters = Math.round(distance * config.millimetersMultiplier),\r\n segmentDistance = total_segments / denom,\r\n fraction = total_segments % denom,\r\n rounded = Math.floor(segmentDistance),\r\n inches = rounded % 12,\r\n feet = (rounded - inches) / 12,\r\n reduced = [0,0],\r\n decimal = 0;\r\n\r\n if(fraction > 0) {\r\n reduced = reduce(fraction, denom);\r\n }\r\n\r\n if(reduced[0] !== 0 && reduced[1] !== 0) {\r\n decimal = Math.floor((reduced[0] * 100) / (reduced[1] * 100)) / 100;\r\n }\r\n\r\n return {\r\n feet: feet,\r\n inches: inches,\r\n millimeters: millimeters,\r\n rounded: rounded,\r\n reduced: reduced,\r\n decimal: decimal\r\n }\r\n};\r\n\r\nexport const getSnappedPos = function(pos) {\r\n let scaledGridSize = sqftConfig.workspace.getScaledGridSize();\r\n let newX = Math.round(pos.x / scaledGridSize) * scaledGridSize;\r\n let newY = Math.round(pos.y / scaledGridSize) * scaledGridSize;\r\n return {\r\n x: newX,\r\n y: newY\r\n };\r\n};\r\n\r\nexport const distanceToInches = (distance) => {\r\n var dist = measureDistanceToInches(distance),\r\n ret = \"\";\r\n\r\n if(dist.feet > 0)\r\n ret = dist.feet + \"'\";\r\n if(dist.inches > 0)\r\n ret += dist.inches + \"\\\"\";\r\n\r\n if(dist.reduced[0] > 0) {\r\n var fraction_text = dist.reduced[0] + \"/\" + dist.reduced[1];\r\n ret = ret.toString().substr(0, ret.length - 1) + \" \" + fraction_text + \"\\\"\";\r\n dist.rounded += \" \" + fraction_text;\r\n }\r\n\r\n ret = dist.rounded + \"\\\"\";\r\n\r\n return ret;\r\n};\r\n\r\nexport const distanceToMillimeters = (distance) => {\r\n var dist = measureDistanceToInches(distance);\r\n\r\n return dist.millimeters + \" mm\";\r\n};\r\n\r\n/*\r\n * edge can be applied to line and to lineCorner\r\n */\r\nexport const getEdgeLength = (attachedTo) => {\r\n let lineBumpoutTotalHeight = 0;\r\n let lineCornerWidth = 0;\r\n let length = 0;\r\n if (attachedTo instanceof LineCorner) {\r\n switch (config.measureUnit) {\r\n case \"Imperial\": length += inchesToLNFT(attachedTo.getLength()); break;\r\n case \"Metric\": length += inchesToM(attachedTo.getLength()); break;\r\n }\r\n } else if (attachedTo instanceof line) {\r\n if (attachedTo.isWithBumpout()) {\r\n lineBumpoutTotalHeight = attachedTo.getLineBumpoutTotalHeight();\r\n }\r\n if (attachedTo.lineCorner) {\r\n lineCornerWidth += attachedTo.get45CornerLegDistance();\r\n }\r\n const prevLine = attachedTo.getParent().getPrevLine(attachedTo);\r\n if (prevLine.lineCorner) {\r\n lineCornerWidth += prevLine.get45CornerLegDistance();\r\n }\r\n if (config.measureUnit === \"Imperial\") {\r\n length = Math.round(( Math.sqrt(\r\n Math.pow(attachedTo.to.x - attachedTo.from.x, 2)\r\n +\r\n Math.pow(attachedTo.to.y - attachedTo.from.y, 2)\r\n ) + lineBumpoutTotalHeight - lineCornerWidth) / 12 * 100) / 100;\r\n } else {\r\n length = inchesToM(\r\n Math.abs(attachedTo.to.x - attachedTo.from.x + attachedTo.to.y - attachedTo.from.y)\r\n + lineBumpoutTotalHeight - lineCornerWidth\r\n )\r\n }\r\n }\r\n\r\n return length;\r\n};\r\n\r\nexport const getEdgeArea = (line, length, featureId) => {\r\n let totalArea = 0;\r\n const navItems = getEdgeFeatures();\r\n let edge = navItems.find(edge => edge.part.dbFeature.id === featureId);\r\n // let edge = edges.edges.find(edge => edge.id === +img.dataset.id);\r\n // let edgeFeature = edges.getFeatureEdgeFilter(edge);\r\n\r\n if (!edge) {\r\n if (!workspace.isEdgeFeatureError) {\r\n console.log('edgeFeature not found', featureId);\r\n workspace.isEdgeFeatureError = true\r\n }\r\n\r\n return totalArea;\r\n }\r\n\r\n // 1.) additional area for waterfall edges\r\n if (isWaterfallFeature(edge.part.dbFeature.id)) { // && !isFeatureUnitUseEach(edge.part)\r\n switch (config.measureUnit) {\r\n case \"Imperial\": totalArea += length * config.waterfallImperialHeight; break;\r\n case \"Metric\": totalArea += length * config.waterfallMetricHeight; break;\r\n }\r\n // additional area for 40mm edges\r\n }\r\n\r\n // 2.) additional area for mitered edges (additional area for the mitered edge tool added separately)\r\n if (isMiterEdge(featureId) && !line.isWithMitered() ) {\r\n // additional area for 40mm edges\r\n const miterEdgeHeight = getMiterEdgeHeight(featureId);\r\n if (miterEdgeHeight) {\r\n totalArea += length * miterEdgeHeight\r\n }\r\n }\r\n\r\n //let edge40mmIds = edges.getEdgeFilterByValue(\"40mm Waterfall\").map(({ id }) => id);\r\n //let is40mmEdge = edge40mmIds.filter(value => edgeFeature.includes(value)).length > 0;\r\n\r\n // else if (is40mmEdge) { // by text: edge.displayName.includes('40mm')\r\n // switch (config.measureUnit) {\r\n // //case \"Imperial\": totalArea += length * config.waterfallImperialHeight; break;\r\n // case \"Metric\": totalArea += length * 40; break;\r\n // }\r\n // }\r\n\r\n return totalArea;\r\n}\r\n\r\nexport const getBacksplashArea = (backsplashValue, attachedTo) => {\r\n backsplashValue = config.measureUnit === \"Imperial\" ? +backsplashValue : mmToInches(+backsplashValue);\r\n const backsplashLength = sqInchesToSqFoot(getBacksplashLength(attachedTo));\r\n const backsplashArea = Math.round10(backsplashValue * backsplashLength, -2)\r\n\r\n return config.measureUnit === \"Imperial\" ? backsplashArea : sqftToM2(backsplashArea);\r\n};\r\n\r\n/*\r\n * backsplash can be applied to line and to lineCorner\r\n * return sqft\r\n */\r\nexport const getBacksplashLength = (attachedTo) => {\r\n let length = 0;\r\n let lineCornerWidth = 0;\r\n\r\n if (attachedTo instanceof LineCorner) {\r\n length += attachedTo.getLength();\r\n } else if(attachedTo instanceof line) {\r\n const prevLine = attachedTo.getParent().getPrevLine(attachedTo);\r\n let lineLength = attachedTo.getLineLength();\r\n\r\n if (attachedTo.isWithBumpout()) {\r\n lineLength += attachedTo.getLineBumpoutTotalHeight();\r\n }\r\n if (attachedTo.lineCorner) {\r\n lineCornerWidth += attachedTo.get45CornerLegDistance();\r\n }\r\n if (prevLine.lineCorner) {\r\n lineCornerWidth += prevLine.get45CornerLegDistance();\r\n }\r\n\r\n length += lineLength - lineCornerWidth;\r\n }\r\n\r\n return length;\r\n};\r\n\r\n//// MEASURE DISTANCE END ////\r\n\r\nexport const truncate = (source, size) => {\r\n let quot = '"';\r\n if(source.slice(0, size - 1 + quot.length).includes(quot)) {\r\n size += quot.length - 1;\r\n }\r\n\r\n return source.length > size ? source.slice(0, size - 1) + \"…\" : source;\r\n};\r\n\r\n//// HTML ////\r\n\r\nexport const setStylesOnElement = (element, styles) => {\r\n Object.assign(element.style, styles);\r\n};\r\n\r\nexport const getMinInArray = (array, attrib) => {\r\n return array.reduce(function(prev, curr) {\r\n return prev[attrib] < curr[attrib] ? prev : curr;\r\n });\r\n};\r\n\r\nexport const getMaxInArray = (array, attrib) =>{\r\n return array.reduce(function(prev, curr) {\r\n return prev[attrib] < curr[attrib] ? prev : curr;\r\n });\r\n};\r\n\r\n/// SLAB ///\r\n\r\nexport const getGCD = function(a, b) {\r\n if (!b) {\r\n return a;\r\n }\r\n\r\n return getGCD(b, a % b);\r\n};\r\n\r\nexport const getAspectRatio = function(height, width) {\r\n let heightGCD = getGCD(height, width);\r\n let aspectHeight = height / heightGCD;\r\n let aspectWidth = width / heightGCD;\r\n\r\n console.log(\"heightGCD\", heightGCD);\r\n console.log(\"aspectHeight\", aspectHeight);\r\n console.log(\"aspectWidth\", aspectWidth);\r\n\r\n return {aspectHeight, aspectWidth, heightGCD};\r\n};\r\n\r\n/**\r\n * If shouldExtend is true this will always return point if segments are not parallel.\r\n * @param {{x: number, y: number}} point1\r\n * @param {{x: number, y: number}} point2\r\n * @param {{x: number, y: number}} point3\r\n * @param {{x: number, y: number}} point4\r\n * @param {boolean} isRounded\r\n * @param {boolean} shouldExtend\r\n * @return {{x: number, y: number}|null} new point on the line\r\n */\r\nexport const getIntersectCordsBetweenLines = (point1, point2, point3, point4, isRounded, shouldExtend = false) => {\r\n const points = [point1.x, point1.y, point2.x, point2.y, point3.x, point3.y, point4.x, point4.y];\r\n if (shouldExtend) {\r\n return getIntersectCordsWithExtendedSegments(...points);\r\n } else {\r\n return getIntersectCords(...points, isRounded)\r\n }\r\n\r\n}\r\n\r\n// line intercept math by Paul Bourke http://paulbourke.net/geometry/pointlineplane/\r\n// Determine the intersection point of two line segments\r\n// Return FALSE if the lines don't intersect\r\nexport const getIntersectCords = function(x1, y1, x2, y2, x3, y3, x4, y4, rounded) {\r\n\r\n // Check if none of the lines are of length 0\r\n if ((x1 === x2 && y1 === y2) || (x3 === x4 && y3 === y4)) {\r\n return false\r\n }\r\n let denominator = ((y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1));\r\n\r\n // Lines are parallel\r\n if (denominator === 0) {\r\n return false\r\n }\r\n\r\n let ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / denominator;\r\n let ub = ((x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)) / denominator;\r\n\r\n // is the intersection along the segments\r\n if (ua < 0 || ua > 1 || ub < 0 || ub > 1) {\r\n return false\r\n }\r\n\r\n // Return a object with the x and y coordinates of the intersection\r\n let x = x1 + ua * (x2 - x1);\r\n let y = y1 + ua * (y2 - y1);\r\n if (rounded) {\r\n x = Math.round(x);\r\n y = Math.round(y);\r\n }\r\n\r\n return {x, y}\r\n};\r\n\r\n/**\r\n * We expand two segments and get their intersection point. This will always return point if segments are not parallel.\r\n * @param x1\r\n * @param y1\r\n * @param x2\r\n * @param y2\r\n * @param x3\r\n * @param y3\r\n * @param x4\r\n * @param y4\r\n * @return {{x: number, y: number}|null} new point on the line\r\n **/\r\nconst getIntersectCordsWithExtendedSegments = (x1, y1, x2, y2, x3, y3, x4, y4) => {\r\n const A1 = y2 - y1;\r\n const B1 = x1 - x2;\r\n const C1 = A1 * x1 + B1 * y1;\r\n\r\n const A2 = y4 - y3;\r\n const B2 = x3 - x4;\r\n const C2 = A2 * x3 + B2 * y3;\r\n\r\n const det = A1 * B2 - A2 * B1;\r\n\r\n if (det === 0) {\r\n return null;\r\n } else {\r\n const x = (B2 * C1 - B1 * C2) / det;\r\n const y = (A1 * C2 - A2 * C1) / det;\r\n return { x, y };\r\n }\r\n};\r\n\r\n/**\r\n * get new point on the beam which is at distant from the second point at a certain length distance\r\n * @param {{x: number, y: number}} point1\r\n * @param {{x: number, y: number}} point2\r\n * @param {number} distance\r\n * @return {{x: number, y: number}} new point on the line\r\n */\r\nexport const getPointOnTheLine = (point1, point2, distance) => {\r\n const length = getPointDistance(point1, point2);\r\n const k = 1 + distance / length;\r\n const x = parseFloat(point2.x) + k * (parseFloat(point1.x) - parseFloat(point2.x));\r\n const y = parseFloat(point2.y) + k * (parseFloat(point1.y) - parseFloat(point2.y));\r\n\r\n return {x, y}\r\n}\r\n\r\n/**\r\n * Determines whether a point is inside a shape or on its border.\r\n *\r\n * @param {Object} point - The point to check, with properties x and y.\r\n * @param {Object} shape - The shape object, which has a getLines method returning line segments.\r\n * @param {boolean} [includeBorder=false] - If true, the function also returns true when the point is on the border of the shape.\r\n * @returns {boolean} True if the point is inside the shape or on its border (depending on includeBorder), otherwise false.\r\n */\r\nexport const isPointInsideShape = (point, shape, includeBorder = false) => {\r\n let x = point.x, y = point.y;\r\n let inside = false;\r\n let shapeLines = shape.getLines(true);\r\n\r\n for (let i = 0, j = shapeLines.length - 1; i < shapeLines.length; j = i++) {\r\n const iPosition = getPointField(shapeLines[i].from.x, shapeLines[i].from.y, shapeLines[i]);\r\n const jPosition = getPointField(shapeLines[j].to.x, shapeLines[i].to.y, shapeLines[j]);\r\n\r\n let xi = iPosition.x, yi = iPosition.y;\r\n let xj = jPosition.x, yj = jPosition.y;\r\n\r\n // Check if the point is on the line segment\r\n if (includeBorder && isPointOnLine(point, {x: xi, y: yi}, {x: xj, y: yj})) {\r\n return true;\r\n }\r\n\r\n if (((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi)) {\r\n inside = !inside;\r\n }\r\n }\r\n\r\n return inside;\r\n};\r\n\r\n/**\r\n * Checks if a point is on a line segment defined by two points.\r\n *\r\n * @param {Object} pt - The point to check, with properties x and y.\r\n * @param {Object} linePt1 - The first point of the line segment, with properties x and y.\r\n * @param {Object} linePt2 - The second point of the line segment, with properties x and y.\r\n * @returns {boolean} True if the point is on the line segment, otherwise false.\r\n */\r\nfunction isPointOnLine(pt, linePt1, linePt2) {\r\n const dxc = pt.x - linePt1.x;\r\n const dyc = pt.y - linePt1.y;\r\n const dxl = linePt2.x - linePt1.x;\r\n const dyl = linePt2.y - linePt1.y;\r\n\r\n const cross = dxc * dyl - dyc * dxl;\r\n if (cross !== 0) return false; // Point is not on the line\r\n\r\n // Check if the point is within the line segment bounds\r\n if (Math.abs(dxl) >= Math.abs(dyl))\r\n return dxl > 0 ? linePt1.x <= pt.x && pt.x <= linePt2.x : linePt2.x <= pt.x && pt.x <= linePt1.x;\r\n else\r\n return dyl > 0 ? linePt1.y <= pt.y && pt.y <= linePt2.y : linePt2.y <= pt.y && pt.y <= linePt1.y;\r\n}\r\n\r\nexport const getAreaByShoelaceFormula = (lines) => {\r\n let area = 0;\r\n for (let i = 0; i < lines.length; i++) {\r\n area += lines[i].to.x * (lines[i + 1] ? lines[i + 1].to.y : lines[0].to.y );\r\n area -= lines[i].to.y * (lines[i + 1] ? lines[i + 1].to.x : lines[0].to.x );\r\n }\r\n\r\n return area / 2;\r\n};\r\n\r\nexport const addDecimalToLength = (lineLength) => {\r\n let decimal = 0;\r\n if (lineLength.reduced.length) {\r\n if (lineLength.reduced[0] === 1 && lineLength.reduced[1] === 4) {\r\n decimal = 0.25;\r\n } else if (lineLength.reduced[0] === 1 && lineLength.reduced[1] === 2) {\r\n decimal = 0.5;\r\n } else if (lineLength.reduced[0] === 3 && lineLength.reduced[1] === 4) {\r\n decimal = 0.75;\r\n }\r\n }\r\n\r\n return lineLength.rounded + decimal\r\n};\r\n\r\nexport const getAngleBetweenTwoPoints = (point1, point2) => {\r\n return Math.atan2(point2.y - point1.y, point2.x - point1.x) * 180 / Math.PI;\r\n}\r\n\r\nexport const getAngleRelativeToTheHorizontalAxis = (point1, point2) => {\r\n let dx = point1.x - point2.x;\r\n let dy = point1.y - point2.y;\r\n\r\n return (Math.atan2(dy, dx) * 180 / Math.PI + 360) % 360;\r\n}\r\n\r\nexport const getTanDeg = (deg) => {\r\n let rad = deg * Math.PI/180;\r\n return Math.tan(rad);\r\n}\r\n\r\n/**\r\n * return closest higher number in array than needle\r\n * @param {int} needle\r\n * @param {[int]} array\r\n * @return {*}\r\n */\r\nexport const getClosestHigherNumber = (needle, array) => {\r\n return array.reduce((prev, curr) => {\r\n if (curr <= needle) {\r\n return prev\r\n }\r\n if (prev === null) {\r\n return curr\r\n }\r\n return curr - needle < prev - needle ? curr : prev;\r\n }, null);\r\n}\r\n\r\nexport const isDisabledInPopupWithParents = (item) => {\r\n if (item.isDisabledInPopup) {\r\n return true\r\n }\r\n if (item.getParent && item.getParent()) {\r\n return isDisabledInPopupWithParents(item.getParent());\r\n }\r\n\r\n return false\r\n}\r\n\r\n/**\r\n * Point 1,2,3 is a corner, where 2 is midpoint\r\n * we assume that distance between lines is more than minLineLength\r\n * @param shape\r\n * @param point1\r\n * @param point2\r\n * @param point3\r\n * @param {number} minLineLength\r\n */\r\nexport const isInnerCorner = (shape, point1, point2, point3, minLineLength = 25) => {\r\n const shapePoints = shape.getPointFieldArray();\r\n const closePoint1 = getPointOnTheLine(point2, point1, -minLineLength);\r\n const closePoint2 = getPointOnTheLine(point2, point3, -minLineLength);\r\n const midPoint = getMidPoint(closePoint1, closePoint2);\r\n\r\n // RenderFigures.renderCircle(closePoint1, 12,1, '#63b141');\r\n // RenderFigures.renderCircle(closePoint2, 12,1, '#63b141');\r\n // RenderFigures.renderCircle(midPoint, 10, 1);\r\n // console.log(\"midPoint\", midPoint);\r\n // console.log(\"isPointInsidePolygon\", isPointInsidePolygon(midPoint, shapePoints));\r\n // debugger // eslint-disable-line no-debugger\r\n return !isPointInsidePolygon(midPoint, shapePoints);\r\n}\r\n\r\nexport const parseImperialFractionToDecimal = (input) => {\r\n const sanitizedInput = input.replace(/['\"]/g, \"\");\r\n const [wholePart, fractionPart] = sanitizedInput.split(\" \");\r\n\r\n let decimalValue = parseFloat(wholePart) || 0; // Default to 0 if no whole part\r\n\r\n // If there's a fraction part, convert it to decimal\r\n if (fractionPart && fractionPart.includes(\"/\")) {\r\n const [numerator, denominator] = fractionPart.split(\"/\").map(Number);\r\n if (denominator) {\r\n decimalValue += numerator / denominator;\r\n }\r\n }\r\n\r\n return decimalValue;\r\n};\r\n","import imagePolygon from \"./imagePolygon\";\r\nimport {UseFullSizeImages} from \"../config\";\r\n\r\nconst KIOSK_BVR_Root = document.kvConfig.imageServer + \"/brv/\";\r\nconst KIOSK_BV5_Root = document.kvConfig.imageServer + \"/bv5/\";\r\n\r\nconst KIOSK_KV_Root = document.kvConfig.imageServer + \"/kv4/\";\r\nconst KIOSK_KV5_Root = document.kvConfig.imageServer + \"/kv5/\";\r\n\r\nconst S3_BVR_Root = 'https://brv.s3-accelerate.amazonaws.com/';\r\nconst S3_BV5_Root = document.kvConfig.visualizerType === \"bvLook\"\r\n ? 'https://qc-bv5.s3-accelerate.amazonaws.com/'\r\n : 'https://qc-bv5.s3.amazonaws.com/';\r\nconst S3_BV6_Root = 'https://qc-fp5.s3.amazonaws.com/';\r\n\r\nconst S3_KV4_Root = 'https://kv4.s3-accelerate.amazonaws.com/';\r\nconst S3_KV5_Root = 'https://kv5.s3-accelerate.amazonaws.com/';\r\n//const S3_BVR_Root = 'http://s3.gfd.us/';\r\n\r\nconst KIOSK_FEATURES_Root = document.kvConfig.imageServer + \"/features-thumbnails/\";\r\nconst S3_FEATURES_Root = 'https://features-thumbnails.s3-accelerate.amazonaws.com/';\r\nconst S3_FILTERS_Root = 'https://s3.amazonaws.com/';\r\n\r\nexport const THUMBNAIL_SIZES = {\r\n small: `_100x100`,\r\n medium: `_175x175`,\r\n large: `_400x400`,\r\n}\r\nexport const LAYERS_SIZES = {\r\n normal: {\r\n width: 1620,\r\n height: 1080,\r\n },\r\n full_hd: {\r\n width: 1920,\r\n height: 1080,\r\n },\r\n full_hd_large: {\r\n width: 2880,\r\n height: 1620,\r\n },\r\n large: {\r\n width: 3000,\r\n height: 2000,\r\n },\r\n}\r\n\r\n/**\r\n * Case insensitive string inclusion\r\n * @param s3BindingName {string}\r\n * @param visualizer {string}\r\n * @param isCropped {boolean}\r\n * @param bucketName {string}\r\n * @returns {string}\r\n */\r\nexport function s3Path(s3BindingName, visualizer, isCropped = false, bucketName = \"\") {\r\n let bvr_root = document.kvConfig.kioskMode ? KIOSK_BVR_Root : S3_BVR_Root;\r\n let bv5_root = document.kvConfig.kioskMode ? KIOSK_BV5_Root : S3_BV5_Root;\r\n let kv4_root = document.kvConfig.kioskMode ? KIOSK_KV_Root : S3_KV4_Root;\r\n let kv5_root = document.kvConfig.kioskMode ? KIOSK_KV5_Root : S3_KV5_Root;\r\n let bv6_root = document.kvConfig.kioskMode ? KIOSK_KV5_Root : S3_BV6_Root;\r\n // https://brv.s3.amazonaws.com/features/All%20-%20Background%20-%20Default.png\r\n let s3Root = \"\";\r\n switch (visualizer) {\r\n case \"bv\":\r\n s3Root = document.kvConfig.toolVersion === 5 || document.kvConfig.toolVersion === 6 ? bv5_root : bvr_root;\r\n break;\r\n case \"kv\":\r\n s3Root = document.kvConfig.toolVersion === 5 || document.kvConfig.toolVersion === 6 ? kv5_root : kv4_root;\r\n break;\r\n case \"fireplace\":\r\n s3Root = bv6_root;\r\n break;\r\n default:\r\n s3Root = `https://${bucketName}.s3.amazonaws.com/`\r\n // console.error(\"undefined visualizer\", visualizer, s3BindingName);\r\n break;\r\n }\r\n let url = s3Root + s3BindingName;\r\n switch (document.kvConfig.layersSize) {\r\n case \"full_hd\":\r\n url += UseFullSizeImages || isCropped ? \".png\" : \"_1920x1080.png\"\r\n break;\r\n default:\r\n url+= UseFullSizeImages || isCropped ? \".png\" : \"_1620x1080.png\"\r\n }\r\n return encodeURI(url).replace(new RegExp('#', 'g'), '%23');\r\n}\r\n\r\nexport function s3FilterImagePath(imageThumbnail) {\r\n return imageThumbnail ? `${S3_FILTERS_Root}filter-images/${imageThumbnail.replace(\".png\", \"\")}.png` : \"\";\r\n}\r\n\r\n// export function s3FeatureImagePath(imageThumbnail, smallThumbnail = false, largeThumbnail = false) {\r\n// const features_root = document.kvConfig.kioskMode ? KIOSK_FEATURES_Root : S3_FEATURES_Root;\r\n// const mobileThumbnailPath = `_100x100`;\r\n// const desktopThumbnailPath = `_175x175`;\r\n// return smallThumbnail\r\n// ? `${features_root}feature-${imageThumbnail + mobileThumbnailPath}.png`\r\n// : `${features_root}feature-${largeThumbnail ? imageThumbnail : imageThumbnail + desktopThumbnailPath}.png`;\r\n// }\r\nexport function s3FeatureImagePath(imageThumbnail, size) {\r\n const features_root = document.kvConfig.kioskMode ? KIOSK_FEATURES_Root : S3_FEATURES_Root;\r\n return size\r\n ? `${features_root}feature-${imageThumbnail + size}.png`\r\n : `${features_root}feature-${imageThumbnail}.png` // full image path\r\n}\r\n\r\nexport function className(instance) {\r\n if(instance && instance.constructor)\r\n return instance.constructor.name;\r\n console.log(\"Instance constructor not found\", instance);\r\n return \"\";\r\n}\r\n\r\nexport function ignoreDefault(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n}\r\n\r\n/**\r\n *\r\n * @param hayStack {string}\r\n * @param needle {string}\r\n * @return {boolean}\r\n */\r\nexport function iStartWith(hayStack, needle) {\r\n return hayStack ? hayStack.toLowerCase().startsWith(needle.toLowerCase()) : false\r\n}\r\n\r\n/**\r\n * Case insensitive string inclusion\r\n * @param hayStack {string}\r\n * @param needle {string}\r\n * @returns {boolean}\r\n */\r\nexport function iIncludes(hayStack, needle) {\r\n return hayStack ? hayStack.toLowerCase().includes(needle.toLowerCase()) : false\r\n}\r\n\r\nexport function getNonce(length = 6) {\r\n let text = \"\";\r\n const possible = \"abcdefghijklmnopqrstuvwxyz0123456789\";\r\n for (let i = 0; i < length; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n return text;\r\n}\r\n\r\n/**\r\n * Makes a case-insensitive string compare\r\n * @param s1 {string}\r\n * @param s2 {string}\r\n * @param needToUppercase {boolean}\r\n * @returns {boolean}\r\n */\r\nexport function iCmp(s1, s2, needToUppercase = false) {\r\n if (!s1 && !s2) {\r\n return true;\r\n }\r\n if (!s1 || !s2) {\r\n return false;\r\n }\r\n if (needToUppercase) {\r\n return s1.toUpperCase() === s2.toUpperCase()\r\n }\r\n return s1 === s2;\r\n}\r\n\r\nconst RgFeatureName = /^([\\w\\s\\d]+)\\s*-\\s*([\\w\\d\\s]+)\\s*([\\[\\(][(\\d\\w=;\\s_\\(\\):,]+[\\)\\]]\\s*)*$/i;\r\n\r\n/**\r\n * Split a full feature name into: GroupName, FeatureName\r\n * @param name {string} Full Feature Name GroupName - Name\r\n * @param groupName {string}\r\n * @returns {*}\r\n */\r\nexport function splitFeatureName(name, groupName) {\r\n if (groupName && (groupName !== \"Backsplash\")) {\r\n return {featureName: name, groupName}\r\n }\r\n name = name.replace(/\\\"-/g, \"in \"); // for example Backsplash - 4\"-6\" Backsplash -> Backsplash - 4in 6in Backsplash\r\n name = name.replace(/\\\"/g, \"in\"); // for example Radius - 1\" Radius -> Radius - 1in Radius\r\n const matches = RgFeatureName.exec(name);\r\n if (!matches) {\r\n return {}\r\n }\r\n return {\r\n groupName: matches[1].trim(),\r\n featureName: matches[2].trim(),\r\n }\r\n}\r\n\r\n\r\nexport function styleBkgImage(image) {\r\n return {backgroundImage: `url('${image}')`};\r\n}\r\n\r\nexport function getMetadataByDimensions(dimensions) {\r\n switch (dimensions) {\r\n case \"30X8\":\r\n case \"Full\":\r\n return \"Full\";\r\n case \"15X4\":\r\n case \"Half\":\r\n return \"Half\";\r\n case \"Pony\":\r\n return \"Pony\";\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Checked wheather an object is NULL, if not, calls the callback method with the object itself\r\n */\r\nexport function NN(obj, cb) {\r\n if (obj)\r\n cb(obj);\r\n}\r\n\r\n/**\r\n * returns clicked canvas coordinates as {x:value, y:value}\r\n */\r\nexport function getMousePos(evt, canvas) {\r\n const rect = canvas.getBoundingClientRect();\r\n return {\r\n x: evt.clientX - rect.left,\r\n y: evt.clientY - rect.top\r\n };\r\n}\r\n\r\nexport function getFilterGroupValues(feature, filterGroup) {\r\n return feature.dbFeature.fabFilterValueIDs[filterGroup.id] || feature.dbFeature.filterValueIDs[filterGroup.id]\r\n}\r\nexport const isFeatureHasFilterValue = (feature, filterValue) => {\r\n let testFabFilter = feature.dbFeature.fabFilterValueIDs[filterValue.filterGroup_id] &&\r\n feature.dbFeature.fabFilterValueIDs[filterValue.filterGroup_id].some(filterValueId => filterValueId === filterValue.id)\r\n let testFilter = feature.dbFeature.filterValueIDs[filterValue.filterGroup_id] &&\r\n feature.dbFeature.filterValueIDs[filterValue.filterGroup_id].some(filterValueId => filterValueId === filterValue.id)\r\n\r\n return testFabFilter || testFilter;\r\n}\r\nexport function getFilterGroupValue(featureFilterValueId, filterGroup) {\r\n return filterGroup.values.find(val => val.id === featureFilterValueId);\r\n}\r\nexport function getFilterGroupValueByName(name, filterGroup) {\r\n return filterGroup.values.find(val => val.value === name);\r\n}\r\n\r\nexport const mergeFilterObjects = (filterValueIDs, fabFilterValueIDs) => {\r\n let unitedFilterValueIds = Object.assign({}, filterValueIDs || {}); // 1st create duplicate object\r\n Object.keys(fabFilterValueIDs || {}).forEach((filterKey) => {\r\n if (unitedFilterValueIds[filterKey]) { // group exist\r\n unitedFilterValueIds[filterKey] = [\r\n ...unitedFilterValueIds[filterKey],\r\n ...fabFilterValueIDs[filterKey]\r\n ];\r\n } else {\r\n unitedFilterValueIds[filterKey] = fabFilterValueIDs[filterKey] // set new key\r\n }\r\n });\r\n return unitedFilterValueIds\r\n}\r\n\r\nexport function getAllFeatureFilters(feature) {\r\n return mergeFilterObjects(feature.dbFeature.filterValueIDs, feature.dbFeature.fabFilterValueIDs)\r\n}\r\n\r\n/**\r\n * Filters features according to received filters\r\n * @param feature {featureInterface}\r\n * @param filters {Object} array of objects with filters: [{ 18: 111 }, {5: 12}] etc.\r\n * @returns {Array}\r\n */\r\nexport function featureHasSelectedFilters(feature, filters) {\r\n const featureFilterValueIds = getAllFeatureFilters(feature);\r\n return filters.every(filterObject => {\r\n return featureFilterValueIds[filterObject.filterGroupId]\r\n && featureFilterValueIds[filterObject.filterGroupId].some(filterId => filterObject.filterId === filterId)\r\n })\r\n}\r\n\r\n/**\r\n * Filters features according to received filters\r\n * @param features {Array} Array of features\r\n * @param filters {[navigationFilterValueInterface]} array with filters: {filterId: 9, filterGroupId: 5} // old logic object -> { 18: 111, 5: 12 } etc.\r\n * @returns {Array}\r\n */\r\nexport function filterFeaturesByValues(features, filters) {\r\n return features.filter(feature => {\r\n let unitedFilterValueIds = getAllFeatureFilters(feature);\r\n const newFiltersArray = [];\r\n filters.forEach((filterObject) => {\r\n const existingFilterGroup = newFiltersArray.find(filterGroupObject => {\r\n return filterGroupObject.filterGroupId === filterObject.filterGroupId\r\n });\r\n if (filterObject.filterId) {\r\n if (existingFilterGroup) {\r\n existingFilterGroup.filterValues.push(filterObject.filterId)\r\n } else {\r\n newFiltersArray.push({\r\n filterGroupId: filterObject.filterGroupId,\r\n filterValues: [filterObject.filterId]\r\n })\r\n }\r\n }\r\n });\r\n return newFiltersArray.every(filterObject => {\r\n const existingFeatureFilter = unitedFilterValueIds[filterObject.filterGroupId];\r\n return existingFeatureFilter && existingFeatureFilter.some(filterValue => {\r\n return filterObject.filterValues.some(filVal => filVal === filterValue)\r\n })\r\n })\r\n });\r\n}\r\n\r\nexport function scrollToDivInArea(div, area) {\r\n const divOffset = div.offset();\r\n if (divOffset) {\r\n area.animate({\r\n scrollLeft: divOffset.left - area.offset().left + area.scrollLeft() - area.width()/2 + div.width()/2\r\n }, 600);\r\n }\r\n}\r\n\r\nexport function getTranslateX(myElement) {\r\n const style = window.getComputedStyle(myElement);\r\n const matrix = new window.WebKitCSSMatrix(style.webkitTransform);\r\n return matrix.m41;\r\n}\r\n\r\nexport function reorder(array, indexA, indexB) {\r\n const tmp = array[indexA];\r\n array[indexA] = array[indexB];\r\n array[indexB] = tmp;\r\n return array\r\n}\r\n\r\n/**\r\n * requestAnim shim layer by Paul Irish\r\n */\r\nconst updateRate = 1000 / 60; //ticks per second in miliseconds\r\nexport function requestAnimFrame() {\r\n return window.requestAnimationFrame ||\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.oRequestAnimationFrame ||\r\n window.msRequestAnimationFrame ||\r\n function(callback){\r\n window.setTimeout(callback, updateRate);\r\n };\r\n}\r\n\r\n/**\r\n * checks for mobile state\r\n */\r\nexport function isTouchDevice() { // https://stackoverflow.com/questions/4817029/whats-the-best-way-to-detect-a-touch-screen-device-using-javascript\r\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\r\n const mq = function(query) {\r\n return window.matchMedia(query).matches;\r\n };\r\n\r\n if (('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch) {\r\n return true;\r\n }\r\n\r\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\r\n // https://git.io/vznFH\r\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\r\n return mq(query);\r\n}\r\n\r\n/**\r\n * creates a layer polygon https://stackoverflow.com/questions/23983461/creating-a-path-from-the-edge-of-an-image\r\n */\r\n\r\nexport function makeLayerPolygon(layer, image, width, height) {\r\n const fakeCanvas = document.createElement('canvas');\r\n fakeCanvas.setAttribute('height', `${height}px`);\r\n fakeCanvas.setAttribute('width', `${width}px`);\r\n const context2D = fakeCanvas.getContext(\"2d\");\r\n\r\n // step 3 - make canvas layer 0.5 transparent\r\n context2D.globalAlpha = 0.5;\r\n\r\n // step 4 - put layer image on fake canvas\r\n context2D.clearRect(0, 0, fakeCanvas.width, fakeCanvas.height);\r\n context2D.drawImage(image, 0, 0);\r\n\r\n const imgData = context2D.getImageData(0,0, width, height);\r\n const layerPolygon = {\r\n layer,\r\n img: image,\r\n polygon: imagePolygon(imgData.data, width, height, layer.image)\r\n };\r\n // console.log('layerPolygon created!', layerPolygon);\r\n return layerPolygon\r\n}\r\n/**\r\n * checks if point is inside the polygon\r\n */\r\nexport function pnpoly(points, test) {\r\n let i, j, c = false;\r\n for (i = 0, j = points.length - 1; i < points.length; j = i++) {\r\n if (((points[i][1] > test.y) !== (points[j][1] > test.y)) &&\r\n (test.x < (points[j][0] - points[i][0]) * (test.y - points[i][1])\r\n / (points[j][1] - points[i][1]) + points[i][0])) {\r\n c = !c;\r\n }\r\n }\r\n return c;\r\n}\r\n\r\nexport function base64ToBlob(base64, mime) {\r\n mime = mime || '';\r\n var sliceSize = 1024;\r\n var byteChars = window.atob(base64);\r\n var byteArrays = [];\r\n for (var offset = 0, len = byteChars.length; offset < len; offset += sliceSize) {\r\n var slice = byteChars.slice(offset, offset + sliceSize);\r\n var byteNumbers = new Array(slice.length);\r\n for (var i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n var byteArray = new window.Uint8Array(byteNumbers);\r\n byteArrays.push(byteArray);\r\n }\r\n return new Blob(byteArrays, {type: mime});\r\n}\r\nexport function downloadCanvasImageById(canvasId) {\r\n const canvas = document.getElementById(canvasId);\r\n // console.log('canvasId', canvasId);\r\n // console.log('canvas', canvas);\r\n const imageUrl = canvas.toDataURL();\r\n var base64ImageContent = imageUrl.replace(/^data:image\\/(png|jpg);base64,/, \"\");\r\n var blob = base64ToBlob(base64ImageContent, 'image/png');\r\n var a = document.createElement(\"a\");\r\n document.body.appendChild(a);\r\n a.style = \"display: none\";\r\n var url = window.URL.createObjectURL(blob);\r\n a.href = url;\r\n a.download = \"bathroom-visualizer.png\";\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n}\r\n\r\nexport const toBoolean = (value) => {\r\n if (typeof (value) === 'string') {\r\n value = value.toLowerCase();\r\n }\r\n switch (value) {\r\n case true:\r\n case \"true\":\r\n case 1:\r\n case \"1\":\r\n case \"on\":\r\n case \"yes\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n};\r\n\r\nexport const capitalizeFirstLetters = (string) => {\r\n return string.replace(/(^\\w|\\s\\w)/g, m => m.toUpperCase()) // ^\\w - first character of the string, | - or, \\s\\w - first character after whitespace, (^\\w|\\s\\w) - Capture the pattern, g - Flag: Match all occurrences\r\n}\r\n\r\nexport const isVisualizerRoute = () => {\r\n return window.location.hash.includes(\"visualizer\") || (document.kvConfig.visualizerOnly && window.location.hash === \"#/\")\r\n}\r\n\r\nexport const convertImgToBase64URL = (url, outputFormat = \"image/jpeg\") => {\r\n return new Promise((resolve) => {\r\n const img = new Image();\r\n img.crossOrigin = 'Anonymous';\r\n img.onerror = (e) => {\r\n console.log(\"couldn't load receipt logo image :(\", e)\r\n resolve(\"\");\r\n };\r\n img.onload = function () {\r\n let canvas = document.createElement('CANVAS');\r\n const ctx = canvas.getContext('2d');\r\n let dataURL = \"\";\r\n canvas.height = img.height;\r\n canvas.width = img.width;\r\n ctx.drawImage(img, 0, 0, img.width, img.height);\r\n if (url && url.includes(\".png\")) {\r\n outputFormat = \"image/png\";\r\n }\r\n dataURL = canvas.toDataURL(outputFormat);\r\n canvas = null;\r\n resolve(dataURL);\r\n };\r\n img.src = url;\r\n });\r\n}\r\n","import {useEffect} from \"react\";\r\n\r\nimport {compareCoords, getCommonCoords, getFeatureCoords} from \"../../lookFunctions\";\r\nimport {getCurrentLayout} from \"../../../../appLayout\";\r\nimport {featureHasSelectedFilters, s3FilterImagePath} from \"../../../../../misc/utils\";\r\nimport {WIZARD_GROUP_TYPES} from \"../../../../../interfaces/wizardItemInterface\";\r\nimport Misc from \"../../../../../misc/misc\";\r\nimport {getCompressedFeature} from \"../../../../../misc/backendFunctions\";\r\nimport {getBvFeatures} from \"../../../../../api/server-api\";\r\nimport store from \"../../../../../store\";\r\nimport {setWizardMissingFeatures} from \"../../../../../actions/wizardFunctions\";\r\nimport {getFeatureGroupFeaturesQuantity} from \"../../lookNavigationFunctions\";\r\nimport {AVAILABLE_VISUALIZER_TYPES, getCommonVisualizerType} from \"../../../../../config\";\r\nimport {isSameVisualizerWizard, selectedWizardGroupIsNotInCurrentStepAnymore} from \"./lookWizardFunctions2\";\r\n\r\nconst regexForWizardId = /\\/wizard\\/(.*?)$/;\r\n\r\n/**\r\n * returns current wizard list for visualizer\r\n * @param wizardList {[wizardItemInterface]}\r\n * @param activePreset {string|number}\r\n * @returns {wizardItemInterface[]}\r\n */\r\nexport const getCurrentWizardList = (wizardList, activePreset) => {\r\n return wizardList.filter(wizardItem => !wizardIsDisabled(wizardItem, activePreset))\r\n}\r\n\r\n/**\r\n * returns current wizard step section items\r\n * @param wizardItem {wizardItemInterface}\r\n * @param activePreset {string|number}\r\n * @returns {boolean}\r\n */\r\nexport const wizardIsDisabled = (wizardItem, activePreset) => {\r\n if (!isSameVisualizerWizard(wizardItem)) {\r\n return true\r\n }\r\n return !wizardItem.disabledScenes || (typeof activePreset !== \"undefined\" && wizardItem.disabledScenes.includes(activePreset))\r\n}\r\n\r\n/**\r\n * checks if we need to show the wizard in the project scope and shoppingcart for the QuotingTool\r\n * @param wizardList {[wizardItemInterface]}\r\n * @param wizardIsActive {boolean}\r\n * @returns {boolean}\r\n */\r\nexport const showWizardInsteadOfQT = (wizardList, wizardIsActive) => {\r\n return wizardIsActive && wizardList.length\r\n}\r\n\r\n/**\r\n * returns current wizard step section items\r\n * @param wizardList {[wizardItemInterface]}\r\n * @param location {object}\r\n * @returns wizardActiveItem {wizardItemInterface}\r\n */\r\nexport const getActiveWizardItem = (wizardList, location) => {\r\n if (!Array.isArray(wizardList) || !location) {\r\n return null\r\n }\r\n const match = location.pathname.match(regexForWizardId);\r\n if (!Array.isArray(match) || !match[1]) {\r\n return null\r\n }\r\n const stringId = +match[1];\r\n return wizardList.find(wizItem => wizItem.id === stringId);\r\n}\r\n\r\n\r\n/**\r\n * returns layout's featureGroup\r\n * @param wizardGroup {wizardGroupInterface}\r\n * @param layout {object}\r\n * @returns featureGroup {featureGroupInterface}\r\n */\r\nexport const getFeatureGroupFromWizardGroup = (wizardGroup, layout = getCurrentLayout()) => {\r\n if (!wizardGroup) {\r\n return null\r\n }\r\n if (layout.visualizerType === AVAILABLE_VISUALIZER_TYPES.Kitchen || layout.visualizerType === AVAILABLE_VISUALIZER_TYPES.kvScene) {\r\n switch (wizardGroup.groupName) {\r\n case \"Edge Profile\":\r\n return layout.getFeatureGroupByPartId(wizardGroup.isCenterIslandGroup ? \"center_island_edge\" : \"edge_profile\")\r\n case \"Sink\":\r\n return layout.getFeatureGroupByPartId(wizardGroup.isCenterIslandGroup ? \"center_island_sink\" : \"sink\")\r\n case \"Faucet\":\r\n return layout.getFeatureGroupByPartId(wizardGroup.isCenterIslandGroup ? \"center_island_faucet\" : \"faucet\")\r\n default:\r\n break;\r\n }\r\n }\r\n return layout.getFeatureGroupByGroupName(wizardGroup.groupName)\r\n}\r\n\r\n/**\r\n * returns current wizard step section items\r\n * @param wizardList {[wizardItemInterface]}\r\n * @param partId {string}\r\n * @param activePreset {number|string} // check\r\n * @param firstOnly {boolean} // determines if we need to check only first step featureGroups or all\r\n * @returns wizardActiveItem {wizardItemInterface}\r\n */\r\nexport const categoryIsInTheWizard = (wizardList, partId = \"\", activePreset, firstOnly = true) => {\r\n if (!Array.isArray(wizardList) || !partId) {\r\n return null\r\n }\r\n return wizardList.find(wizItem => {\r\n if (wizardIsDisabled(wizItem, activePreset)) {\r\n return false\r\n }\r\n let lookWhere = firstOnly ? getCurrentGroupsFromSource(\"0\", wizItem) : wizItem.wizardGroups;\r\n if (firstOnly && Array.isArray(lookWhere) && lookWhere.length && lookWhere.every(wizGroup => wizGroup.nodeType === \"custom\")) {\r\n lookWhere = lookWhere.reduce((total, wizGroup) => {\r\n return [...total, ...getCurrentGroupsFromSource(wizGroup.id, wizItem)]\r\n }, []);\r\n }\r\n return lookWhere.some(wizardGroup => {\r\n if (wizardGroup.nodeType !== \"group\") {\r\n return false;\r\n }\r\n const featureGroup = getFeatureGroupFromWizardGroup(wizardGroup);\r\n if (!featureGroup) {\r\n return false\r\n }\r\n return featureGroup.partId === partId\r\n })\r\n })\r\n}\r\n\r\n/**\r\n * returns current wizard step section items\r\n * @param wizardList {[wizardItemInterface]}\r\n * @param params {object}\r\n * @returns wizardActiveItem {wizardItemInterface}\r\n */\r\nexport const getMaterialsWizardItem = (wizardList, params) => {\r\n if (!Array.isArray(wizardList) || !params) {\r\n return null\r\n }\r\n return wizardList.find(wizItem => {\r\n if (!isSameVisualizerWizard(wizItem)) {\r\n return false\r\n }\r\n return (Misc.getUrlFromString(wizItem.name) === params.partName || wizItem.id === +params.partName)\r\n }) || getDefaultMaterialsWizardItem()\r\n}\r\n\r\n/**\r\n * returns default wizard on switch to page\r\n * @returns wizardActiveItem {wizardItemInterface}\r\n */\r\nexport const getDefaultMaterialsWizardItem = () => {\r\n const {quotesState, wizardState} = store.getState();\r\n const {wizardList, allWizardsValues, wizardActiveItem} = wizardState;\r\n const {activeQuoteIndex} = quotesState;\r\n if (!Array.isArray(wizardList)) {\r\n return null\r\n }\r\n const currentVisType = getCommonVisualizerType();\r\n const lastSelectedWizardInThisQuote = Array.isArray(allWizardsValues) ? allWizardsValues.find(wizItem => {\r\n return wizItem.quoteIndex === activeQuoteIndex && wizItem.isLastActiveWizard\r\n && isSameVisualizerWizard(wizItem, currentVisType)\r\n }) : null;\r\n if (lastSelectedWizardInThisQuote) {\r\n const foundWizItem = wizardList.find(wizItem => wizItem.id === lastSelectedWizardInThisQuote.wizardItemId);\r\n if (foundWizItem) {\r\n return foundWizItem\r\n }\r\n }\r\n if (wizardActiveItem && isSameVisualizerWizard(wizardActiveItem, currentVisType)) {\r\n return wizardActiveItem\r\n }\r\n return wizardList.find(wizItem => isSameVisualizerWizard(wizItem, currentVisType)) || wizardList[0]\r\n}\r\n\r\nlet cachedSiblingFeatures = []; // {wizardId: number, groups: [{}, {}], totalFeatures: [] }\r\n\r\n/**\r\n * returns current wizard step section items\r\n * @param source {string}\r\n * @param wizardActiveItem {wizardItemInterface}\r\n * @returns array {[wizardGroupInterface]}\r\n */\r\nexport const getCurrentGroupsFromSource = (source, wizardActiveItem) => {\r\n if (!wizardActiveItem) {\r\n return []\r\n }\r\n const siblingGroups = wizardActiveItem.wizardGroups.filter(wizGroup => {\r\n return wizardActiveItem.wizardEdges.some(wizEdge => wizEdge.source === source && wizEdge.target === wizGroup.id)\r\n });\r\n // console.log(\"siblingGroups\", siblingGroups);\r\n const areSameSiblingGroups = siblingGroups.length > 1 && siblingGroups.every(siblingGroup => {\r\n return (siblingGroup.nodeType === WIZARD_GROUP_TYPES.group) && (siblingGroup.groupName === siblingGroups[0].groupName)\r\n });\r\n if (areSameSiblingGroups) {\r\n // console.log(\"cachedSiblingFeatures\", cachedSiblingFeatures);\r\n\r\n if (siblingGroups.every(wizardGroup => wizardGroup.useIncluded && wizardGroup.featuresIncluded)) { // new logic\r\n let featuresIncluded = [];\r\n const alreadyCached = cachedSiblingFeatures.find(cacheObject => {\r\n return (cacheObject.wizardId === wizardActiveItem.id) && (cacheObject.groups.every((wGroup, wGroupIndex) => {\r\n return siblingGroups[wGroupIndex] && (wGroup.id === siblingGroups[wGroupIndex].id)\r\n }))\r\n })\r\n // console.log(\"alreadyCached\", alreadyCached);\r\n if (alreadyCached) {\r\n featuresIncluded = alreadyCached.totalFeatures;\r\n } else {\r\n featuresIncluded = siblingGroups.reduce((total, wizardGroup) => {\r\n wizardGroup.featuresIncluded.forEach(included => {\r\n if (!total.some(exclObj => (exclObj.featureDefinitionId === included.featureDefinitionId))) {\r\n total.push(included)\r\n }\r\n })\r\n return total\r\n }, []);\r\n cachedSiblingFeatures.push({\r\n wizardId: wizardActiveItem.id,\r\n groups: siblingGroups,\r\n totalFeatures: featuresIncluded\r\n })\r\n }\r\n const newGroup = Object.assign({}, siblingGroups[0], {\r\n mergedGroups: siblingGroups,\r\n featuresExcluded: [], // not sure if we need it\r\n featuresIncluded\r\n })\r\n return [newGroup]\r\n }\r\n\r\n const allFeaturesExcluded = siblingGroups.reduce((total, wizardGroup) => {\r\n wizardGroup.featuresExcluded.forEach(excluded => {\r\n if (!excluded) {\r\n return\r\n }\r\n if (typeof excluded === \"object\") { // new logic for excluded\r\n if (!total.some(exclObj => (typeof exclObj === \"object\") && (exclObj.featureDefinitionId === excluded.featureDefinitionId))) {\r\n total.push(excluded)\r\n }\r\n } else if (!total.includes(excluded)) {\r\n total.push(excluded)\r\n }\r\n })\r\n return total\r\n }, []);\r\n const featuresExcluded = allFeaturesExcluded.filter(exclFeature => {\r\n return siblingGroups.every(siblingGroup => {\r\n if (typeof exclFeature === \"object\") {\r\n return siblingGroup.featuresExcluded.some(exclObj => {\r\n return (exclObj !== null)\r\n && (typeof exclObj === \"object\")\r\n && (exclObj.featureDefinitionId === exclFeature.featureDefinitionId)\r\n })\r\n }\r\n return siblingGroup.featuresExcluded.includes(exclFeature) // reaally old support\r\n })\r\n })\r\n const newGroup = Object.assign({}, siblingGroups[0], {\r\n mergedGroups: siblingGroups,\r\n featuresExcluded\r\n })\r\n return [newGroup]\r\n }\r\n return siblingGroups\r\n}\r\n\r\nexport const getCorrectedWizardGroupId = (stepGroups, stepSelectedValue) => {\r\n if ((stepGroups.length === 1) && stepGroups[0].mergedGroups && stepSelectedValue && stepSelectedValue.wizardGroup\r\n && (stepSelectedValue.wizardGroup.groupName === stepGroups[0].groupName)\r\n && stepGroups[0].mergedGroups.some(wizG => wizG.id === stepSelectedValue.wizardGroup.id)) {\r\n const correctedWizG = Object.assign({}, stepGroups[0], {\r\n id: stepSelectedValue.wizardGroup.id\r\n });\r\n return [correctedWizG]\r\n }\r\n return stepGroups\r\n}\r\n\r\n/**\r\n * returns fixed wizard group for merged groups\r\n * @param wizardGroup {wizardGroupInterface}\r\n * @param feature {featureInterface}\r\n * @returns {wizardGroupInterface}\r\n */\r\nexport const getCorrectedWizardGroupForFeature = (wizardGroup, feature) => {\r\n if (wizardGroup.mergedGroups && feature) {\r\n const realWizardGroup = wizardGroup.mergedGroups.find(wizG => !navItemIsExcluded({part: feature}, wizG));\r\n if (realWizardGroup && (realWizardGroup.id !== wizardGroup.id)) {\r\n return Object.assign({}, wizardGroup, {\r\n id: realWizardGroup.id\r\n })\r\n }\r\n }\r\n return wizardGroup\r\n}\r\n\r\n/**\r\n * returns current wizard step section items\r\n * @param wizardActiveItem {wizardItemInterface}\r\n * @param wizardActiveStep {number}\r\n * @param wizardSelectedValues {object}\r\n * @param prevStepGroups {[wizardGroupInterface]}\r\n * @param additionalWizardValuesToCheck {object}\r\n * @returns {array}\r\n */\r\nexport const getCurrentGroups = (wizardActiveItem,\r\n wizardActiveStep,\r\n wizardSelectedValues,\r\n prevStepGroups = [],\r\n additionalWizardValuesToCheck= null) => {\r\n if (!wizardActiveItem || wizardActiveStep < 0) {\r\n return []\r\n }\r\n const stepStr = \"\" + wizardActiveStep;\r\n\r\n const toCheckValue = wizardSelectedValues[wizardActiveStep] || (additionalWizardValuesToCheck\r\n ? additionalWizardValuesToCheck[wizardActiveStep] : null);\r\n\r\n if (wizardActiveStep === 0) {\r\n return getCorrectedWizardGroupId(\r\n getCurrentGroupsFromSource(stepStr, wizardActiveItem),\r\n toCheckValue\r\n )\r\n }\r\n\r\n const selectedPrevStep = wizardSelectedValues[wizardActiveStep - 1];\r\n if (!selectedPrevStep || !selectedPrevStep.wizardGroup\r\n || (prevStepGroups.length && selectedWizardGroupIsNotInCurrentStepAnymore(selectedPrevStep, prevStepGroups))) {\r\n if (prevStepGroups.length && prevStepGroups[0].id) {\r\n if (additionalWizardValuesToCheck) { // here we check also previously selected values to make steps similar to prev choices\r\n let foundPreviouslySelectedGroup = null;\r\n if (prevStepGroups.every(wg => wg.nodeType === \"custom\")) {\r\n Object.keys(additionalWizardValuesToCheck).forEach(key => {\r\n if ((key > Object.keys(wizardSelectedValues).length)\r\n && !additionalWizardValuesToCheck[key].partId\r\n && additionalWizardValuesToCheck[key].wizardGroup) {\r\n prevStepGroups.forEach(wg => {\r\n if (wg.id === additionalWizardValuesToCheck[key].wizardGroup.id) {\r\n foundPreviouslySelectedGroup = wg;\r\n }\r\n });\r\n }\r\n });\r\n } else {\r\n // here we can add simple feature group, but no need for now\r\n }\r\n if (foundPreviouslySelectedGroup) {\r\n return getCorrectedWizardGroupId(\r\n getCurrentGroupsFromSource(foundPreviouslySelectedGroup.id, wizardActiveItem),\r\n toCheckValue\r\n )\r\n }\r\n }\r\n const suggestedStepGroups = getCurrentGroupsFromSource(prevStepGroups[0].id, wizardActiveItem);\r\n if ((suggestedStepGroups.length === 1 && (suggestedStepGroups[0].nodeType === \"group\") && suggestedStepGroups[0].mergedGroups && suggestedStepGroups[0].mergedGroups.length)\r\n && additionalWizardValuesToCheck && Object.keys(additionalWizardValuesToCheck).length) {\r\n // here we check if there are selections in the old flow that might actually help to select current product\r\n if (toCheckValue && toCheckValue.wizardGroup\r\n && (toCheckValue.wizardGroup.groupName === suggestedStepGroups[0].groupName)\r\n && toCheckValue.selectedFeature\r\n && suggestedStepGroups[0].mergedGroups.some(wizG => !navItemIsExcluded({part: toCheckValue.selectedFeature}, wizG))) {\r\n return [getCorrectedWizardGroupForFeature(\r\n suggestedStepGroups[0],\r\n toCheckValue.selectedFeature\r\n )]\r\n } else if (!toCheckValue || !toCheckValue.wizardGroup || (toCheckValue.wizardGroup.groupName !== suggestedStepGroups[0].groupName)) {\r\n // here we check if there are selections in the old flow that might actually help to select current product\r\n for (let key = Object.keys(wizardSelectedValues).length + 1; key < Object.keys(additionalWizardValuesToCheck).length; key++) {\r\n if (key && (key > Object.keys(wizardSelectedValues).length)\r\n && additionalWizardValuesToCheck[key]\r\n && additionalWizardValuesToCheck[key].wizardGroup\r\n && additionalWizardValuesToCheck[key].selectedFeature\r\n && (additionalWizardValuesToCheck[key].wizardGroup.groupName === suggestedStepGroups[0].groupName)\r\n && suggestedStepGroups[0].mergedGroups.some(wizG => !navItemIsExcluded({part: additionalWizardValuesToCheck[key].selectedFeature}, wizG))) {\r\n return [getCorrectedWizardGroupForFeature(\r\n suggestedStepGroups[0],\r\n additionalWizardValuesToCheck[key].selectedFeature\r\n )]\r\n }\r\n }\r\n }\r\n }\r\n return getCorrectedWizardGroupId(\r\n suggestedStepGroups,\r\n toCheckValue\r\n )\r\n }\r\n // console.log(\"Previous step is not selected! Check selected values --> \", wizardSelectedValues);\r\n return []\r\n }\r\n\r\n if (selectedPrevStep && selectedPrevStep.wizardGroup && selectedPrevStep.wizardGroup.mergedGroups && selectedPrevStep.selectedFeature) {\r\n const wizardGroupWithSelectedFeature = selectedPrevStep.wizardGroup.mergedGroups.find(wizGroup => {\r\n return !navItemIsExcluded({part: selectedPrevStep.selectedFeature}, wizGroup)\r\n });\r\n if (wizardGroupWithSelectedFeature) {\r\n return getCorrectedWizardGroupId(\r\n getCurrentGroupsFromSource(wizardGroupWithSelectedFeature.id, wizardActiveItem),\r\n toCheckValue\r\n )\r\n }\r\n }\r\n\r\n // const prevStepStr = \"\" + (wizardActiveStep - 1);\r\n // const prevGroups = getCurrentGroupsFromSource(prevStepStr, wizardActiveItem);\r\n // if (prevGroups.length > 1 && wizardActiveStep > 0) {\r\n // return [selectedPrevStep.wizardGroup]\r\n // }\r\n\r\n return getCorrectedWizardGroupId(\r\n getCurrentGroupsFromSource(selectedPrevStep.wizardGroup.id, wizardActiveItem),\r\n toCheckValue\r\n )\r\n}\r\n\r\n/**\r\n * returns current wizard step section items\r\n * @param wizardActiveItem {wizardItemInterface}\r\n * @param wizardSelectedValues {object}\r\n * @param returnAllSteps {boolean}\r\n * @param additionalWizardValuesToCheck {object}\r\n * @returns {array}\r\n */\r\nexport const getAvailableSteps = (wizardActiveItem, wizardSelectedValues, returnAllSteps, additionalWizardValuesToCheck = null) => {\r\n if (!wizardActiveItem || !wizardActiveItem.wizardGroups || !wizardActiveItem.wizardEdges) {\r\n return []\r\n }\r\n\r\n const maxWizardSteps = 50;\r\n\r\n let stepsArray = [{\r\n stepIndex: 0,\r\n stepGroups: getCorrectedWizardGroupId(getCurrentGroupsFromSource(\"0\", wizardActiveItem), wizardSelectedValues[0]),\r\n }];\r\n\r\n for (let i = 1; i <= maxWizardSteps; i++) {\r\n const prevStepGroups = returnAllSteps && stepsArray[i - 1] ? stepsArray[i - 1].stepGroups : [];\r\n const currentGroups = getCurrentGroups(wizardActiveItem, i, wizardSelectedValues, prevStepGroups, additionalWizardValuesToCheck)\r\n if (!currentGroups.length) {\r\n break;\r\n }\r\n stepsArray.push({\r\n stepIndex: i,\r\n stepGroups: currentGroups\r\n })\r\n }\r\n\r\n return stepsArray\r\n}\r\n\r\n/**\r\n * returns current wizard step section items\r\n * @param currentGroups {[wizardGroupInterface]}\r\n * @returns {array}\r\n */\r\nexport const getWizardStepCommonCoords = (currentGroups) => {\r\n if (!currentGroups.length) {\r\n return []\r\n }\r\n let commonCoords = {};\r\n for (let i = 0; i < currentGroups.length; i++) {\r\n const wizardGroup = currentGroups[i];\r\n const featureGroup = getFeatureGroupFromWizardGroup(wizardGroup);\r\n if (!featureGroup) {\r\n continue\r\n }\r\n const currentCoords = featureGroup.activeFeature ? getFeatureCoords(featureGroup.activeFeature) : getCommonCoords(featureGroup);\r\n commonCoords = compareCoords(currentCoords, currentCoords);\r\n }\r\n\r\n return commonCoords\r\n}\r\n\r\n/**\r\n * returns closest wizard group with nodeType === group\r\n * @param wizardGroup {wizardGroupInterface}\r\n * @param wizardActiveItem {wizardItemInterface}\r\n * @returns {array}\r\n */\r\nexport const findParentWizardFeatureGroup = (wizardGroup, wizardActiveItem) => {\r\n if (!wizardGroup || !wizardActiveItem) {\r\n return null\r\n }\r\n let wizardFeatureParentGroup = null;\r\n\r\n let maxStack = 5;\r\n let currentTry = 0;\r\n const recursiveFindParent = (checkWizardGroup) => {\r\n const sourceEdge = wizardActiveItem.wizardEdges.find(wizEdge => wizEdge.target === checkWizardGroup.id);\r\n const nextToCheckWizardGroup = wizardActiveItem.wizardGroups.find(wizGroup => wizGroup.id === sourceEdge.source);\r\n if (nextToCheckWizardGroup && nextToCheckWizardGroup.nodeType === \"group\") {\r\n wizardFeatureParentGroup = nextToCheckWizardGroup;\r\n } else if (nextToCheckWizardGroup && currentTry < maxStack) {\r\n currentTry++;\r\n recursiveFindParent(nextToCheckWizardGroup)\r\n }\r\n }\r\n recursiveFindParent(wizardGroup)\r\n\r\n return wizardFeatureParentGroup\r\n}\r\n/**\r\n * returns closest wizard group with nodeType === group\r\n * @param featureGroup {featureGroupInterface}\r\n * @param selectedFilters {array}\r\n * @returns {featureInterface}\r\n */\r\nexport const findFeatureBySelectedFilters = (featureGroup, selectedFilters) => {\r\n if (!featureGroup || !selectedFilters) {\r\n return null\r\n }\r\n if (featureGroup.activeFeature && featureHasSelectedFilters(featureGroup.activeFeature, selectedFilters)) {\r\n return featureGroup.activeFeature\r\n }\r\n const layout = getCurrentLayout();\r\n const navItems = layout.designNavigationItems({part: featureGroup}, selectedFilters);\r\n if (!navItems.length) {\r\n return null\r\n }\r\n if (navItems.length > 1 && featureGroup.activeFeature && featureGroup.activeFeature.dbFeature.sharedFeatureName.includes(\".\")) {\r\n const skuColor = \".\" + featureGroup.activeFeature.dbFeature.sharedFeatureName.split(\".\")[1];\r\n const sameColor = navItems.find(navItem => navItem.part.dbFeature.sharedFeatureName.includes(skuColor));\r\n if (sameColor) {\r\n return sameColor.part\r\n }\r\n }\r\n return navItems[0].part\r\n}\r\n\r\n/**\r\n * @param currentFilterValue {object} filterValueInterface\r\n * @param filterGroup {object} filterGroupInterface\r\n * @returns {object}\r\n */\r\nexport const getFilterValueThumbnailAndStyles = (currentFilterValue, filterGroup) => {\r\n\r\n const getFilterItemThumbnail = () => {\r\n const additionalImages = currentFilterValue.additionalImages;\r\n if (Array.isArray(additionalImages) && additionalImages.length) {\r\n return additionalImages[0].imageUrl\r\n }\r\n return s3FilterImagePath(currentFilterValue.icon);\r\n }\r\n\r\n let thumbnail = getFilterItemThumbnail();\r\n const isColor = (filterGroup.name || \"\").toLowerCase().includes(\"color\");\r\n\r\n const styles = {\r\n backgroundSize: isColor ? \"cover\" : \"contain\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"center\",\r\n };\r\n if (thumbnail) {\r\n styles.backgroundImage = \"url(\" + thumbnail + \")\";\r\n }\r\n if (!thumbnail && currentFilterValue && isColor) {\r\n styles.backgroundColor = currentFilterValue.value;\r\n }\r\n\r\n return {thumbnail, styles}\r\n}\r\n\r\n/**\r\n * @param navItem {navItemInterface}\r\n * @param wizardGroup {wizardGroupInterface}\r\n * @returns {boolean}\r\n */\r\nexport const navItemIsExcluded = (navItem, wizardGroup) => {\r\n const {sku, featureDefinitionID, customDisplayName} = navItem.part.dbFeature;\r\n const {partName} = navItem.part; // it replaces the {groupName + \"-\"} from the name, same logic as we have in the dashboard\r\n // if (customDisplayName === \"Only Front Edge\") {\r\n // console.log(\"checking excluded from wizardGroup\", wizardGroup);\r\n // debugger;//eslint-disable-line\r\n // }\r\n if (wizardGroup.useIncluded && wizardGroup.featuresIncluded) {\r\n return !wizardGroup.featuresIncluded.some(includedFeature => {\r\n return (includedFeature.sharedFeatureName && (includedFeature.sharedFeatureName === navItem.part.getLowerCasedSharedFeatureName()))\r\n || (includedFeature.featureDefinitionId === featureDefinitionID)\r\n || (!includedFeature.sharedFeatureName && (includedFeature.name === customDisplayName))\r\n || (!wizardGroup.dontMatchFeaturesBySku && (includedFeature.sku && sku && (includedFeature.sku === sku)))\r\n })\r\n }\r\n for (let excluded of wizardGroup.featuresExcluded) {\r\n if (excluded && (typeof excluded === \"object\")) {\r\n if (\r\n (excluded.sharedFeatureName && (excluded.sharedFeatureName === navItem.part.getLowerCasedSharedFeatureName()))\r\n || (excluded.featureDefinitionId === featureDefinitionID)\r\n || (excluded.name === customDisplayName)\r\n || (excluded.sku && sku && (excluded.sku === sku))\r\n ) {\r\n return true\r\n }\r\n // if (excluded.name === customDisplayName || excluded.name === sharedFeatureName || (excluded.sku && sku && (excluded.sku === sku))) {\r\n } else if (excluded) {\r\n // if (excluded === sku || excluded === sharedFeatureName || excluded === partName || excluded === featureDefinitionID) {\r\n if (excluded === sku || excluded === partName || excluded === featureDefinitionID) {\r\n return true\r\n }\r\n }\r\n }\r\n return false\r\n}\r\n\r\n/**\r\n * @param navItems {[navItemInterface]}\r\n * @param wizardGroup {wizardGroupInterface}\r\n * @returns {[navItemInterface]}\r\n */\r\nexport const filterWizardNavItems = (navItems, wizardGroup) => {\r\n if (!wizardGroup.useIncluded && (!Array.isArray(wizardGroup.featuresExcluded) || !wizardGroup.featuresExcluded.length)) {\r\n return navItems\r\n }\r\n // console.log(\"navItems to filter\", navItems);\r\n return navItems.filter(navItem => !navItemIsExcluded(navItem, wizardGroup));\r\n}\r\n\r\n/**\r\n * @param wizardSelectedValues {object} // selected wizard steps values\r\n * @param wizardActiveStep {number} wizardActiveStep\r\n * @param wizardActiveItem {wizardItemInterface} wizardItemInterface\r\n * @param wizardGroup {wizardGroupInterface} wizardGroupInterface\r\n * @param featureGroup {featureGroupInterface} featureGroupInterface\r\n * @param filterGroups {[filterGroupInterface]}\r\n * @param searchText {string}\r\n * @param filters {object}\r\n * @param shopPageOpened {boolean}\r\n * @param showPrevStepsColorFirst {boolean}\r\n * @returns {array}\r\n */\r\nexport const getCurrentWizardNavItems = (wizardSelectedValues,\r\n wizardActiveStep,\r\n wizardActiveItem,\r\n wizardGroup,\r\n featureGroup = null,\r\n filterGroups = [],\r\n searchText = \"\",\r\n filters = [],\r\n shopPageOpened = false,\r\n showPrevStepsColorFirst = false) => {\r\n\r\n const layout = getCurrentLayout();\r\n featureGroup = featureGroup || getFeatureGroupFromWizardGroup(wizardGroup);\r\n if (!featureGroup) {\r\n return []\r\n }\r\n\r\n const selectedStepsReversed = Object.keys(wizardSelectedValues).reverse() // is needed to take last selected steps first\r\n\r\n selectedStepsReversed.forEach(selectedStep => {\r\n const {selectedFilter} = wizardSelectedValues[selectedStep];\r\n if (!selectedFilter || +selectedStep >= wizardActiveStep) {\r\n return\r\n }\r\n const parentWizardGroup = findParentWizardFeatureGroup(wizardSelectedValues[selectedStep].wizardGroup, wizardActiveItem);\r\n if (!parentWizardGroup) {\r\n return null\r\n }\r\n const parentFeatureGroup = getFeatureGroupFromWizardGroup(parentWizardGroup);\r\n if (parentFeatureGroup && parentFeatureGroup.partId === featureGroup.partId) {\r\n filters.push({\r\n filterId: selectedFilter.id,\r\n filterGroupId: selectedFilter.filterGroup_id,\r\n })\r\n }\r\n });\r\n\r\n let navItems = layout.designNavigationItems(\r\n {part: featureGroup},\r\n filters,\r\n searchText,\r\n featureGroup.activeFeature,\r\n \"all\",\r\n filterGroups,\r\n {returnAllFeatures: shopPageOpened}\r\n );\r\n\r\n navItems = filterWizardNavItems(navItems, wizardGroup);\r\n\r\n if (featureGroup.partId === \"vanity_sink\") {\r\n const selectedPrevStep = wizardSelectedValues[wizardActiveStep - 1];\r\n if (selectedPrevStep && selectedPrevStep.partId === \"vanity_faucet\" && selectedPrevStep.selectedFeature) {\r\n const faucetParent = selectedPrevStep.selectedFeature.getParent();\r\n if (selectedPrevStep.selectedFeature.matchesMetaForArrayOfConditions(faucetParent.getArrayOfConditions())) {\r\n const selectedFaucetConditions = faucetParent.getActiveFeatureConditions(selectedPrevStep.selectedFeature)\r\n const filteredNavItems = navItems.filter(navItem => {\r\n return selectedFaucetConditions.every(condition => navItem.part.matchesMetaForCondition(condition.propName, condition.propValue))\r\n });\r\n // console.log(\"navItems left\", filteredNavItems);\r\n return filteredNavItems\r\n }\r\n }\r\n }\r\n\r\n if (showPrevStepsColorFirst && !wizardSelectedValues[wizardActiveStep]) {\r\n const allSelectedColors = selectedStepsReversed.reduce((total, selectedStep) => {\r\n if (wizardSelectedValues[selectedStep] && wizardSelectedValues[selectedStep].selectedFeature) {\r\n const colorName = wizardSelectedValues[selectedStep].selectedFeature.getColorName(filterGroups);\r\n if (colorName && !total.includes(colorName)) {\r\n total.push(colorName)\r\n }\r\n }\r\n return total\r\n }, []);\r\n // console.log(\"navItems222\", navItems);\r\n // console.log(\"allSelectedColors\", allSelectedColors);\r\n // console.log(\"wizardGroup\", wizardGroup);\r\n if (allSelectedColors.length) {\r\n navItems = navItems.map(navItem => {\r\n if (navItem.colorOptions && navItem.colorOptions.length) {\r\n const currentColorOption = navItem.part.getColorName(filterGroups);\r\n if (currentColorOption !== allSelectedColors[0]) {\r\n let optionMatchForPrevSelectedColor = null;\r\n allSelectedColors.forEach(selectedColor => {\r\n if (!optionMatchForPrevSelectedColor && (currentColorOption !== selectedColor)) {\r\n optionMatchForPrevSelectedColor = navItem.colorOptions.find(option => {\r\n return option.feature.getColorName(filterGroups) === selectedColor\r\n })\r\n }\r\n })\r\n if (optionMatchForPrevSelectedColor) {\r\n // console.log(\"replaced! from\", navItem);\r\n // console.log(\"replaced! to\", {part: optionMatchForPrevSelectedColor});\r\n return {part: optionMatchForPrevSelectedColor.feature}\r\n }\r\n }\r\n }\r\n return navItem\r\n })\r\n }\r\n }\r\n\r\n\r\n return navItems\r\n}\r\n\r\n/**\r\n * is used for context menu, to detect vanity wizard or shower wizard\r\n * @param partIdGroups {[string]}\r\n * @param wizardList {[wizardItemInterface]}\r\n * @param activePreset {string|number}\r\n * @returns {wizardItemInterface}\r\n */\r\nexport const getExistingWizardForGroups = (partIdGroups, wizardList, activePreset) => {\r\n return wizardList.find(wizardItem => {\r\n if (wizardIsDisabled(wizardItem, activePreset)) {\r\n return false\r\n }\r\n // const currentGroups = getCurrentGroups(wizardItem, 0, {});\r\n // // console.log(\"currentGroups\", currentGroups);\r\n // if (!currentGroups || !currentGroups.length) {\r\n // return false\r\n // }\r\n return wizardItem.wizardGroups.some(wizardGroup => {\r\n const featureGroup = getFeatureGroupFromWizardGroup(wizardGroup)\r\n return featureGroup && partIdGroups.includes(featureGroup.partId)\r\n })\r\n });\r\n}\r\n\r\n/**\r\n * is used for removing the layers from the canvas which are not selected in the wizard\r\n * @param wizardActiveItem {wizardItemInterface}\r\n * @param wizardSelectedValues {object}\r\n * @param layers {[]}\r\n * @returns partIdGroups {[string]}\r\n */\r\nexport const getFilteredLayersForActiveWizard = (wizardActiveItem, wizardSelectedValues, layers) => {\r\n if (!wizardActiveItem || !wizardActiveItem.hideItems) {\r\n return layers\r\n }\r\n wizardActiveItem.wizardGroups.forEach(wizardGroup => {\r\n const featureGroup = getFeatureGroupFromWizardGroup(wizardGroup);\r\n if (featureGroup && !Object.keys(wizardSelectedValues).some(stepIndex => {\r\n return wizardSelectedValues[stepIndex].partId === featureGroup.partId && wizardSelectedValues[stepIndex].selectedFeature\r\n })) {\r\n layers = layers.filter(layer => layer.partId !== featureGroup.partId) // if there is a step and it is not selected - remove it\r\n }\r\n })\r\n return layers\r\n}\r\n\r\n/**\r\n * is used for removing the feature groups to prevent them appear after the wizard is finished\r\n * @param wizardActiveItem {wizardItemInterface}\r\n * @param wizardSelectedValues {object}\r\n */\r\nexport const disableNotSelectedFeatureGroups = (wizardActiveItem, wizardSelectedValues) => {\r\n wizardActiveItem.wizardGroups.forEach(wizardGroup => {\r\n const featureGroup = getFeatureGroupFromWizardGroup(wizardGroup);\r\n if (featureGroup && !Object.keys(wizardSelectedValues).some(stepIndex => {\r\n return wizardSelectedValues[stepIndex].partId === featureGroup.partId && wizardSelectedValues[stepIndex].selectedFeature\r\n })) {\r\n featureGroup.disabled = true;\r\n if (featureGroup.layerPositions) { // we need it here to prevent adding to the cart through restore cart on item change\r\n Object.keys(featureGroup.layerPositions).forEach(position => {\r\n featureGroup.layerPositions[position] = null;\r\n })\r\n }\r\n if (featureGroup.disabledClick) {\r\n featureGroup.disabledClick()\r\n }\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * is used to compress the data that will be passed in the job data back and force\r\n * @param allWizardsValues {array}\r\n * @param allWizardsValues {array}\r\n */\r\nexport const getCompressedAllWizardValues = (allWizardsValues) => {\r\n const allWizardsValuesToSave = allWizardsValues.map(newWizObject => {\r\n let wizValues = {};\r\n Object.keys(newWizObject.wizardSelectedValues).forEach(stepIndex => {\r\n wizValues[stepIndex] = Object.assign({}, newWizObject.wizardSelectedValues[stepIndex])\r\n if (newWizObject.wizardSelectedValues[stepIndex].wizardGroup) {\r\n wizValues[stepIndex].wizardGroup = Object.assign(\r\n {},\r\n newWizObject.wizardSelectedValues[stepIndex].wizardGroup,\r\n {featuresExcluded: [], featuresIncluded: []} // to keep clean in json\r\n )\r\n if (wizValues[stepIndex].wizardGroup.mergedGroups) {\r\n wizValues[stepIndex].wizardGroup.mergedGroups = wizValues[stepIndex].wizardGroup.mergedGroups.map(wizGroup => {\r\n return {id: wizGroup.id, groupName: wizGroup.groupName}\r\n });\r\n }\r\n }\r\n if (newWizObject.wizardSelectedValues[stepIndex].selectedFeature) {\r\n wizValues[stepIndex].selectedFeature = getCompressedFeature(\r\n null,\r\n newWizObject.wizardSelectedValues[stepIndex].selectedFeature,\r\n newWizObject.quoteIndex\r\n ); // to keep clean in json\r\n }\r\n })\r\n return Object.assign({}, newWizObject, {wizardSelectedValues: wizValues})\r\n });\r\n // console.log(\"allWizardsValues to save ->\", allWizardsValuesToSave);\r\n return allWizardsValuesToSave\r\n}\r\n\r\n/**\r\n * checks if the following step is disabled\r\n * @param stepIndex {number}\r\n * @param wizardSelectedValues {object}\r\n * @param wizardSteps {array}\r\n * @returns {boolean}\r\n */\r\nexport const getWizardStepIsDisabled = (stepIndex, wizardSelectedValues, wizardSteps) => {\r\n if (stepIndex === 0) {\r\n return false\r\n }\r\n if (wizardSelectedValues[stepIndex - 1] && wizardSelectedValues[stepIndex - 1].wizardGroup) {\r\n return false // prev step is selected, current is not disabled\r\n }\r\n const prevWizardGroup = wizardSelectedValues[stepIndex - 1]\r\n ? wizardSelectedValues[stepIndex - 1].wizardGroup\r\n : wizardSteps[stepIndex - 1] && wizardSteps[stepIndex - 1].stepGroups\r\n ? wizardSteps[stepIndex - 1].stepGroups[0]\r\n : null;\r\n if (prevWizardGroup && prevWizardGroup.notRequired && (stepIndex === 1 || wizardSelectedValues[stepIndex - 2])) {\r\n // added logic for cases when not required goes after not required so you can't jump in the end of the wizard\r\n // you have to have prev prev step selected to jump\r\n return false // if prev is not required - return false, otherwise true\r\n }\r\n return true\r\n}\r\n\r\nexport const getWizardProductGroupName = (wizardGroup) => {\r\n return wizardGroup.productCartTitle || wizardGroup.title || wizardGroup.groupName || \"\"\r\n}\r\n\r\n/**\r\n * checks if we need to request sharedFeatureNames from backend instead of the regular request\r\n * @param wizardGroup {wizardGroupInterface}\r\n * @param featureGroup {featureGroupInterface}\r\n * @returns {boolean}\r\n */\r\nexport const shouldUseNewWizardFeaturesRequestsLogic = (wizardGroup, featureGroup) => {\r\n if (!wizardGroup || !wizardGroup.useIncluded || !wizardGroup.featuresIncluded || !wizardGroup.featuresIncluded.length\r\n || !featureGroup) {\r\n return false\r\n }\r\n return featureGroup.counts && Object.keys(featureGroup.counts).some(layoutType => {\r\n // if less - we will request features with regular request cause it is faster\r\n // we are checking in all layouts case they might be not uploaded(need to change after feature overhaul)\r\n return featureGroup.counts[layoutType] > 1000\r\n })\r\n}\r\n\r\n\r\n/**\r\n * checks if the following step is disabled\r\n * @param currentNavItems {[navItemInterface]}\r\n * @param wizardGroup {wizardGroupInterface}\r\n * @param featureGroup {featureGroupInterface}\r\n * @returns {boolean}\r\n */\r\nexport const getMissingWizardFeatures = async (currentNavItems,\r\n wizardGroup,\r\n featureGroup) => {\r\n\r\n if (featureGroup.requestInProgress) {\r\n // we will request features with regular request cause it is faster\r\n return false\r\n }\r\n\r\n const {wizardMissingFeatures} = store.getState().wizardState;\r\n\r\n if (wizardMissingFeatures[wizardGroup.groupName] && !wizardMissingFeatures[wizardGroup.groupName].length) {\r\n // already received everything\r\n return false\r\n }\r\n\r\n const missingSkus = (wizardGroup.featuresIncluded || [])\r\n .filter(feature => {\r\n return !currentNavItems.some(navItem => navItem.part.getLowerCasedSharedFeatureName() === feature.sharedFeatureName)\r\n })\r\n .map(feature => feature.sharedFeatureName); // convert to names only array\r\n\r\n console.log(\"current missing skus\", missingSkus);\r\n\r\n if (!missingSkus.length) { // first time we create it with requested features // small chances but let it be\r\n store.dispatch(setWizardMissingFeatures(wizardGroup.groupName, missingSkus));\r\n return\r\n }\r\n\r\n const slicedArray = missingSkus.slice(0, 100); // take first 100 features\r\n const stillMissingArray = missingSkus.slice(100); // from 100 to the end\r\n\r\n // 2) get missing features from the backend;\r\n console.log(\"request more missingSkus\", slicedArray);\r\n console.log(\"stillMissingArray\", stillMissingArray);\r\n // loaderEnable();\r\n featureGroup.requestInProgress = true;\r\n const missingSkusResponse = await getBvFeatures(null, slicedArray, true);\r\n featureGroup.requestInProgress = false;\r\n\r\n store.dispatch(setWizardMissingFeatures(wizardGroup.groupName, stillMissingArray)); // set features that left\r\n\r\n if (missingSkusResponse && missingSkusResponse.data) {\r\n console.log(\"missingSkusResponse\", missingSkusResponse.data);\r\n const layout = getCurrentLayout();\r\n layout.loadNewFeatures(missingSkusResponse.data);\r\n return true\r\n }\r\n\r\n // loaderDisable();\r\n return false\r\n}\r\n\r\n/**\r\n * this hook is disabling feature groups for hide items wizards because they should not be added to the cart\r\n * @param wizardActiveItem {wizardItemInterface}\r\n * @param visualizersLoadedLength {number}\r\n * @param wizardSelectedValues {object}\r\n * @param updateLookCartItem {function}\r\n * @returns {boolean}\r\n */\r\nexport const useHideItemsDisabledfeatureGroups = (wizardActiveItem, visualizersLoadedLength, wizardSelectedValues, updateLookCartItem = null) => {\r\n useEffect(() => {\r\n if (wizardActiveItem && wizardActiveItem.hideItems && visualizersLoadedLength) {\r\n wizardActiveItem.wizardGroups.forEach(wizardGroup => {\r\n if (Object.keys(wizardSelectedValues).some(key => wizardSelectedValues[key].wizardGroup.groupName === wizardGroup.groupName)) {\r\n return // do not disable already selected in wizard groups (restoring logic)\r\n }\r\n const featureGroup = getFeatureGroupFromWizardGroup(wizardGroup);\r\n if (featureGroup) {\r\n featureGroup.disabled = true;\r\n if (featureGroup.layerPositions) {\r\n Object.keys(featureGroup.layerPositions).forEach(position => {\r\n featureGroup.layerPositions[position] = null;\r\n })\r\n }\r\n console.log(\"featureGroup disabled\", featureGroup);\r\n }\r\n })\r\n }\r\n if (updateLookCartItem) {\r\n updateLookCartItem();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [visualizersLoadedLength]);\r\n}\r\n\r\nexport const getNextWizardStepQuantity = (currentGroups, wizardSelectedValues, wizardActiveStep, fromFeature, wizardSqftCartItems = []) => {\r\n let newQuantity = 1\r\n if (currentGroups.length === 1) {\r\n const featureGroup = getFeatureGroupFromWizardGroup(currentGroups[0]);\r\n if (wizardSelectedValues[wizardActiveStep] && Number.isInteger(wizardSelectedValues[wizardActiveStep].quantity)) {\r\n newQuantity = wizardSelectedValues[wizardActiveStep].quantity;\r\n } else if (wizardSqftCartItems.length && (fromFeature || featureGroup)) {\r\n const groupName = fromFeature ? fromFeature.dbFeature.groupName : (featureGroup.dbName || featureGroup.partName);\r\n const addedCartItems = wizardSqftCartItems.filter(cItem => cItem.cartFeature && cItem.cartFeature.dbFeature.groupName === groupName);\r\n // console.log(\"addedCartItems\", addedCartItems);\r\n if (addedCartItems.length) {\r\n newQuantity = addedCartItems.reduce((total, cItem) => total + cItem.quantity, 0);\r\n } else {\r\n newQuantity = getFeatureGroupFeaturesQuantity(fromFeature, featureGroup);\r\n }\r\n } else {\r\n newQuantity = getFeatureGroupFeaturesQuantity(fromFeature, featureGroup);\r\n }\r\n }\r\n return newQuantity\r\n}\r\n\r\n/**\r\n * this returns on qkb wizard custom groups or feature groups as features\r\n * @param currentGroups {[wizardGroupInterface]}\r\n * @returns {boolean}\r\n */\r\nexport const displayMaterialsWizardGroupAsFeature = (currentGroups) => {\r\n return currentGroups.length > 1 || (currentGroups.length === 1 && currentGroups[0].nodeType === WIZARD_GROUP_TYPES.custom)\r\n}\r\n\r\n/**\r\n * this returns on qkb wizard wizardGroup from current steps\r\n * @param wizardItem {wizardItemInterface}\r\n * @param wizardValues {object}\r\n * @param neededWizardGroupId {string}\r\n * @returns {object}\r\n */\r\nexport const getWizardGroupFromCurrentSteps = (wizardItem, wizardValues, neededWizardGroupId) => {\r\n let neededStep, neededWizardGroup;\r\n if (!wizardItem || !wizardValues || !neededWizardGroupId) {\r\n return {neededStep, neededWizardGroup}\r\n }\r\n getAvailableSteps(wizardItem, wizardValues, true).forEach(step => {\r\n if (neededStep) {\r\n return\r\n }\r\n step.stepGroups.forEach(wizGroup => {\r\n if (wizGroup.id === neededWizardGroupId) {\r\n neededStep = step;\r\n neededWizardGroup = wizGroup;\r\n } else if (wizGroup.mergedGroups) {\r\n wizGroup.mergedGroups.forEach(mergedGroup => {\r\n if (mergedGroup.id === neededWizardGroupId) {\r\n neededStep = step;\r\n neededWizardGroup = mergedGroup;\r\n }\r\n })\r\n }\r\n })\r\n });\r\n return {neededStep, neededWizardGroup}\r\n}\r\n","import invert from \"lodash/invert\";\r\nimport uniqBy from \"lodash/uniqBy\";\r\nimport isEqual from \"lodash/isEqual\";\r\n\r\nimport {getFilterGroupValues, splitFeatureName} from \"../../../misc/utils\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\nimport {Part} from \"./part\";\r\nimport store from '../../../store';\r\nimport {\r\n LayoutAbbreviation, LayoutType, LayoutAbbreviationsToRemove, SIDE_POSITIONS,\r\n useNewNavLogicPartIds, LOOK_WALLS_ONLY, COUNTERTOP_GROUP_BATHROOM, PAN_POSITIONS\r\n} from \"./constants\";\r\nimport {getFeatureIsLocked} from \"../../../misc/helpers\";\r\nimport {getOptionsFromNavItemsForFeature, navFeatureCLick} from \"../lookNavigation/lookFunctions\";\r\nimport {allowCheckForCollection} from \"../grohe/groheNavigation/groheFunctions\";\r\nimport {getSkusDifferences, getSkuWithoutDot} from \"../lookNavigation/lookFunctions2\";\r\nimport {getColorFilterValue} from \"../../../misc/filtersFunctions\";\r\nimport {IS_LIXIL_SERVERS, IS_QKB_UI} from \"../../../config\";\r\nimport {HANDLES_GROUP_BATHROOM} from \"../../bvSceneComponent/core/constants\";\r\nimport {isEncore} from \"../../../misc/fabricatorHardcode\";\r\n\r\n/**\r\n * Used for Complex parts such as Vanity, to perform some base functionality for related items\r\n */\r\nexport class IntermediatePart extends Part {\r\n\r\n constructor(isChild) {\r\n super(false, isChild);\r\n this.disabled = false;\r\n this.defaultDisabled = false; // used after reset click\r\n this.canBeDisabled = false;\r\n }\r\n\r\n /**\r\n * This will be called on feature creation\r\n * @param dbFeature\r\n */\r\n load(dbFeature) {\r\n if (this.layerPositions) {\r\n dbFeature.metaData[\"layerPosition\"] = dbFeature.metaData[\"Side\"] && dbFeature.metaData[\"Side\"][0] !== \"0\"\r\n ? dbFeature.metaData[\"Side\"][0]\r\n : SIDE_POSITIONS[0];\r\n const partNumber = dbFeature.metaData[\"layerPosition\"] === SIDE_POSITIONS[0] ? 1 : 2;\r\n const instance = new this.constructor(false, partNumber);\r\n return this.load_(dbFeature, instance, true, partNumber === 1 ? 'features' : 'featuresParts');\r\n }\r\n return this.load_(dbFeature, new this.constructor());\r\n }\r\n\r\n /**\r\n * This will be called by the underlying vanity feature with a concrete instance of the part\r\n * @param dbFeature\r\n * @param part {Part}\r\n * @param setParent {boolean}\r\n * @param features\r\n */\r\n load_(dbFeature, part, setParent = true, features = 'features') {\r\n\r\n const featureList = features + \"List\";\r\n\r\n const {displayName} = dbFeature;\r\n let {featureName} = splitFeatureName(displayName);\r\n if (!featureName && dbFeature.groupName && dbFeature.displayName) {\r\n featureName = dbFeature.displayName.replace(dbFeature.groupName + \" - \", \"\")\r\n }\r\n // console.log('displayName:', displayName);\r\n\r\n if (setParent) {\r\n part.getParent = () => this;\r\n if (dbFeature.galleryImages) {\r\n const featured = dbFeature.galleryImages.find(galImage => galImage.featured);\r\n if (featured) {\r\n this.featuredImage = featured.url\r\n }\r\n dbFeature.galleryImages = dbFeature.galleryImages.sort((a, b) => b.default - a.default)\r\n }\r\n }\r\n\r\n if (!dbFeature.sharedFeatureName) {\r\n console.error(\"No sharedFeatureName property:\", dbFeature);\r\n }\r\n\r\n part.partName = featureName;\r\n part.metaData = dbFeature.metaData || {};\r\n\r\n if (dbFeature.s3Bindings && dbFeature.s3Bindings.length) {\r\n // dbFeature.s3Bindings = dbFeature.s3Bindings.filter(binding => binding.visualizer === \"BathroomV5\")\r\n }\r\n\r\n part.dbFeature = dbFeature || {};\r\n if (!part.dbFeature.filterValueIDs) {\r\n part.dbFeature.filterValueIDs = {}\r\n }\r\n part.notAvailableInVisualizer = !dbFeature.s3Bindings || !dbFeature.s3Bindings.length;\r\n\r\n if (part.metaData.RoomLayout) {\r\n const roomLayout = part.metaData.RoomLayout;\r\n if (roomLayout.includes(LayoutAbbreviation.All)) {\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this[featureList][layoutName].push(part);\r\n })\r\n } else if (Array.isArray(roomLayout) && roomLayout.length) {\r\n roomLayout.forEach(roomLayoutAbbreviation => {\r\n const layoutName = invert(LayoutAbbreviation)[roomLayoutAbbreviation];\r\n if (layoutName) { // Prevent bad roomLayout Metadata\r\n this[featureList][layoutName].push(part);\r\n }\r\n });\r\n } else { // single value\r\n const layoutName = invert(LayoutAbbreviation)[roomLayout];\r\n if(layoutName) {\r\n this[featureList][layoutName].push(part);\r\n }\r\n }\r\n }\r\n\r\n if (part.notAvailableInVisualizer || !part.metaData.RoomLayout) {\r\n part.notAvailableInVisualizer = true;\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this[featureList][layoutName].push(part);\r\n })\r\n }\r\n\r\n // Object.keys(LayoutType).forEach(layoutName => {\r\n // this[features+\"List\"][layoutName].push(part);\r\n // });\r\n\r\n this.loadFeatureCommon(part);\r\n\r\n return part\r\n }\r\n\r\n getActiveFeatureConditions() {\r\n return this.getArrayOfConditions()\r\n }\r\n\r\n // someFeatureInStock(feature, arrayOfFeatures) {\r\n // // console.log(\"someFeatureInStock\", feature);\r\n // return isInStock(feature) || arrayOfFeatures.some(currentFeature => {\r\n // // if ((feature._collectionName === currentFeature._collectionName) && (currentFeature.dbFeature.id !== feature.dbFeature.id) && isInStock(currentFeature)) {\r\n // // console.log(\"currentFeature\", currentFeature);\r\n // // }\r\n // if (feature.partId === \"vanity_sink\") {\r\n // return (feature._collectionName === currentFeature._collectionName)\r\n // && (currentFeature.dbFeature.id !== feature.dbFeature.id) && isInStock(currentFeature)\r\n // }\r\n // return (feature._collectionName === currentFeature._collectionName)\r\n // && (feature.dbFeature.lixilProductSubCategory === currentFeature.dbFeature.lixilProductSubCategory)\r\n // && (currentFeature.dbFeature.id !== feature.dbFeature.id) && isInStock(currentFeature)\r\n // })\r\n // }\r\n\r\n // navigationSubItems(filters, searchText, forFeature, filterGroups, restOptions) { // to do\r\n navigationSubItemsSimple(filters, searchText) {\r\n const featuresList = this.activeFeature && this.activeFeature.metaData.layerPosition\r\n && this.activeFeature.metaData.layerPosition !== SIDE_POSITIONS[0] ? this.featuresParts : this.features;\r\n const filteredAvailableFeatures = this.getFeaturesBySearchText(this.getFilteredFeaturesByFilters(filters, featuresList), searchText);\r\n let featuresToDisplay = this.navigationSubItemsWithFilterMultipleConditions(this.getArrayOfConditions(true), filteredAvailableFeatures);\r\n // console.log(\"filterGroups\", filterGroups);\r\n return this.returnUniqueNavFeatures(featuresToDisplay)\r\n }\r\n\r\n navigationSubItems(filters, searchText, forFeature, filterGroups, restOptions = {}) {\r\n // const {firstOpenedFeature, firstOpenedConditions, returnAllFeatures} = restOptions;\r\n const {returnAllFeatures} = restOptions;\r\n const featuresList = this.getFeaturesForNavigationFrom(restOptions);\r\n const filteredAvailableFeatures = this.getFeaturesBySearchText(this.getFilteredFeaturesByFilters(filters, featuresList), searchText);\r\n let featuresToDisplay = returnAllFeatures\r\n ? filteredAvailableFeatures\r\n : this.navigationSubItemsWithFilterMultipleConditions(this.getArrayOfConditions(true), filteredAvailableFeatures);\r\n if (this.partId === \"vanity_faucet\" || HANDLES_GROUP_BATHROOM.includes(this.partId) || this.nextFeaturesPageToLoadArray) {\r\n const allConditions = this.getArrayOfConditions();\r\n if (this.partId === \"vanity_faucet\") {\r\n const mountTypeCondition = allConditions.find(cond => cond.propName === \"MountType\");\r\n if (mountTypeCondition) {\r\n featuresToDisplay = featuresToDisplay.sort((a, b) => {\r\n return b.matchesMetaForCondition(mountTypeCondition.propName, mountTypeCondition.propValue)\r\n - a.matchesMetaForCondition(mountTypeCondition.propName, mountTypeCondition.propValue)\r\n })\r\n }\r\n } else { // vanity_backsplash and vanity_countertop should show in visualizer first\r\n featuresToDisplay = featuresToDisplay.sort((a, b) => {\r\n return b.matchesMetaForArrayOfConditions(allConditions) - a.matchesMetaForArrayOfConditions(allConditions)\r\n })\r\n }\r\n }\r\n // console.log(\"filterGroups\", filterGroups);\r\n if (this.layerPositions || this.oneLayerPosition || returnAllFeatures) {\r\n featuresToDisplay = uniqBy(featuresToDisplay, (feature) => feature.getSplittedFeatureName());\r\n }\r\n return this.navigationItemsWithOptions(filters, forFeature, filterGroups, featuresToDisplay)\r\n }\r\n\r\n // navigationSubItems(filters, searchText, forFeature, filterGroups, restOptions) { // to do\r\n navigationItemsWithOptions(filters, forFeature, filterGroups, featuresToDisplay) {\r\n let newFeatures = [];\r\n let navItems = [];\r\n const matchingFeatureProperty = this.useMatchingFeatureReplacement || \"MatchingFeature\";\r\n\r\n if (filterGroups && filterGroups.length && (!filters || !Object.keys(filters).length) && !IS_QKB_UI && !isEncore) {\r\n // console.log(\"filteredAvailableFeatures\", filteredAvailableFeatures);\r\n // console.log(\"featuresToDisplay\", featuresToDisplay);\r\n for (let i = 0; i < featuresToDisplay.length; i++) { // 1) take all others\r\n const currentFeature = featuresToDisplay[i];\r\n // if (currentFeature.dbFeature.sharedFeatureName === \"26128EN2\") {\r\n // debugger;//eslint-disable-line\r\n // }\r\n const collectionName = currentFeature.getCollectionName(filterGroups);\r\n const colorName = currentFeature.getColorName(filterGroups);\r\n const matchingOptionsName = currentFeature.getMatchingOptionsName();\r\n const matchByCollection = allowCheckForCollection(currentFeature) ? !newFeatures.some(feature => {\r\n return feature._collectionName === collectionName && feature.dbFeature.lixilProductSubCategory === currentFeature.dbFeature.lixilProductSubCategory\r\n }) : false;\r\n let conditionPassed = false;\r\n if (useNewNavLogicPartIds.includes(this.partId)) {\r\n const sku = getSkuWithoutDot(currentFeature.dbFeature.sharedFeatureName);\r\n conditionPassed = !collectionName\r\n || matchByCollection\r\n || (!colorName && !newFeatures.some(feature => getSkusDifferences(feature.dbFeature.sharedFeatureName, currentFeature.dbFeature.sharedFeatureName) <= 1))\r\n || (colorName && !newFeatures.some(feature => {\r\n const skuDiff = getSkusDifferences(feature.dbFeature.sharedFeatureName, currentFeature.dbFeature.sharedFeatureName);\r\n if (this.partId === \"vanity_cabinet\" && skuDiff <= 2) {\r\n // case when K-33554-ASB-1WT and K-33555-ASB-0 and K-33555-ASB-1WT should be shown separately\r\n return false\r\n }\r\n return skuDiff <= 1 || getSkuWithoutDot(feature.dbFeature.sharedFeatureName) === sku\r\n }))\r\n } else {\r\n conditionPassed = !collectionName\r\n || !colorName\r\n || matchByCollection\r\n || !newFeatures.some(feature => feature.getMatchingOptionsName() === matchingOptionsName)\r\n || !newFeatures.some(feature => feature.metaData[matchingFeatureProperty] && currentFeature.metaData[matchingFeatureProperty]\r\n && isEqual(feature.metaData[matchingFeatureProperty], currentFeature.metaData[matchingFeatureProperty]))\r\n }\r\n if (conditionPassed) {\r\n newFeatures.push(currentFeature);\r\n }\r\n }\r\n // console.log(\"newFeatures\", newFeatures);\r\n navItems = this.returnUniqueNavFeatures(this.getNavItemsWithOptions(forFeature, newFeatures, featuresToDisplay, filterGroups).map(featureObject => {\r\n return new DesignNavigationItem(featureObject.mainFeature.featureName, featureObject.mainFeature, featureObject.otherOptions)\r\n }), false);\r\n }\r\n if (!navItems.length) {\r\n navItems = this.returnUniqueNavFeatures(featuresToDisplay)\r\n }\r\n if (this.filterNavigationItems && forFeature) {\r\n navItems = this.filterNavigationItems(navItems, forFeature)\r\n }\r\n // console.log(\"navItems\", navItems);\r\n return navItems\r\n }\r\n\r\n /**\r\n * this is almost the same as feature options, it is replacing next nav items with the needed color feature\r\n * @param forFeature {featureInterface} featureInterface\r\n * @param newFeatures {[featureInterface]}\r\n * @param allFeatures {[featureInterface]}\r\n * @param filterGroups {[filterGroupInterface]}\r\n * @returns {array}\r\n */\r\n getNavItemsWithOptions = (forFeature= null,\r\n newFeatures = [],\r\n allFeatures = [],\r\n filterGroups) => {\r\n\r\n const matchingFeatureProperty = this.useMatchingFeatureReplacement || \"MatchingFeature\";\r\n const neededColorName = forFeature ? forFeature.getColorName(filterGroups) : \"\";\r\n\r\n return newFeatures.map(currentFeature => {\r\n const filterValue = getColorFilterValue(currentFeature, filterGroups);\r\n const otherOptions = getOptionsFromNavItemsForFeature(currentFeature, allFeatures, filterGroups);\r\n\r\n const currentFeatureColor = currentFeature.getColorName(filterGroups);\r\n const customFullDisplayName = currentFeature.getMatchingOptionsName();\r\n const matchByCollection = forFeature && allowCheckForCollection(currentFeature) ? (currentFeature._collectionName === forFeature._collectionName) : true;\r\n let matchForSimilarSku = forFeature && useNewNavLogicPartIds.includes(this.partId) && matchByCollection\r\n && getSkusDifferences(currentFeature.dbFeature.sharedFeatureName, forFeature.dbFeature.sharedFeatureName) <= 1;\r\n if (this.partId === \"vanity_cabinet\" && matchForSimilarSku) {\r\n matchForSimilarSku = customFullDisplayName === forFeature.getMatchingOptionsName() // cases when 48 replaced 24\r\n }\r\n if (forFeature && (currentFeature.dbFeature.id === forFeature.dbFeature.id || matchForSimilarSku || (\r\n (customFullDisplayName === forFeature.getMatchingOptionsName())\r\n && (!forFeature.metaData[matchingFeatureProperty] || isEqual(forFeature.metaData[matchingFeatureProperty], currentFeature.metaData[matchingFeatureProperty]))\r\n && matchByCollection\r\n && (forFeature.partId === \"vanity_sink\" ? true : forFeature.dbFeature.lixilProductSubCategory === currentFeature.dbFeature.lixilProductSubCategory)\r\n && (currentFeature.dbFeature.id !== forFeature.dbFeature.id)\r\n && (currentFeatureColor && forFeature.getColorName(filterGroups) && (currentFeatureColor !== forFeature.getColorName(filterGroups)))\r\n ))) {\r\n if (filterValue && !otherOptions.some(option => option.colorValue.id === filterValue.id)) {\r\n otherOptions.push({feature: currentFeature, colorValue: filterValue})\r\n }\r\n return {\r\n mainFeature: forFeature,\r\n otherOptions: otherOptions.filter(option => option.feature.dbFeature.id !== forFeature.dbFeature.id)\r\n };\r\n } else {\r\n // console.log(\"neededColorName\", neededColorName);\r\n // console.log(\"otherOptions\", otherOptions);\r\n if (!filterValue || !otherOptions.length) {\r\n return {mainFeature: currentFeature, otherOptions: []}\r\n }\r\n if (!LOOK_WALLS_ONLY.includes(this.partId) && !COUNTERTOP_GROUP_BATHROOM.includes(this.partId)) {\r\n const allOptions = [{feature: currentFeature, colorValue: filterValue}, ...otherOptions];\r\n const mainOption = (forFeature && neededColorName && allOptions.find(option => option.feature.getColorName(filterGroups) === neededColorName))\r\n || allOptions.find(option => option.feature.getColorName(filterGroups) && option.feature.getColorName(filterGroups).includes(\"Chrome\"))\r\n || allOptions.find(option => option.feature.getColorName(filterGroups) && option.feature.getColorName(filterGroups).includes(\"White\"))\r\n || allOptions.find(option => option.feature.getColorName(filterGroups) && option.feature.getColorName(filterGroups).includes(\"rushed\")) // brushed nickel;\r\n // console.log(\"mainOption\", mainOption);\r\n if (mainOption) {\r\n return {\r\n mainFeature: mainOption.feature,\r\n otherOptions: allOptions.filter(option => option.feature.dbFeature.id !== mainOption.feature.dbFeature.id)\r\n }\r\n }\r\n }\r\n return {mainFeature: currentFeature, otherOptions}\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n navigationSubItemsWithSides(filters, searchText) {\r\n const filteredAvailableFeatures = this.getFeaturesBySearchText(this.getFilteredFeaturesByFilters(filters), searchText);\r\n const featuresToDisplay = this.navigationSubItemsWithFilterMultipleConditions(this.getArrayOfConditions(true), filteredAvailableFeatures);\r\n\r\n let navFeatures = [];\r\n const activePosition = this.activeFeature && this.activeFeature.dbFeature.metaData[\"layerPosition\"]\r\n ? this.activeFeature.dbFeature.metaData[\"layerPosition\"]\r\n : SIDE_POSITIONS[0];\r\n navFeatures = featuresToDisplay.filter(feature => {\r\n return feature.dbFeature.metaData[\"layerPosition\"] === activePosition\r\n })\r\n featuresToDisplay.forEach(feature => {\r\n const name1 = feature.getSplittedFeatureName();\r\n if (!navFeatures.some(navFeature => navFeature.getSplittedFeatureName() === name1)) {\r\n navFeatures.push(feature)\r\n }\r\n })\r\n return this.returnUniqueNavFeatures(navFeatures)\r\n }\r\n\r\n navigationSubItemsWithFilter(propName, propValue, featuresToCheck = this.features) {\r\n return featuresToCheck.filter((feature) => {\r\n return feature.matchesMetaForCondition(propName, propValue);\r\n }).map(_ => new DesignNavigationItem(_.featureName, _));\r\n }\r\n\r\n navigationSubItemsWithFilterMultipleConditions(arrayOfConditions, featuresToCheck = this.features) {\r\n // console.log('arrayOfConditions', arrayOfConditions);\r\n // console.log('featuresToCheck', featuresToCheck);\r\n return featuresToCheck.filter((feature) => {\r\n return feature.notAvailableInVisualizer || arrayOfConditions.every((conditionObject) => {\r\n const {propName, propValue} = conditionObject;\r\n return feature.matchesMetaForCondition(propName, propValue);\r\n });\r\n })\r\n }\r\n\r\n setDefault(layout, setNotInVisFeature = false) {\r\n this.setFeatureGroupDefault(layout, setNotInVisFeature)\r\n }\r\n\r\n setLayerPositions = (activeFeature = this.activeFeature) => {\r\n if (!activeFeature) {\r\n return\r\n }\r\n const layout = this.getParent().layout;\r\n const conditions = this.getArrayOfConditions();\r\n if (layout && this.defaultLayerLayoutPositions && this.defaultLayerLayoutPositions[layout.type]) {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if (this.defaultLayerLayoutPositions[layout.type] === key\r\n && (!this.layerPositions[key] || !this.layerPositions[key].matchesMetaForArrayOfConditions(conditions))) {\r\n this.layerPositions[key] = activeFeature;\r\n } else if (activeFeature.dbFeature.metaData[\"layerPosition\"] !== key) {\r\n this.layerPositions[key] = null;\r\n }\r\n })\r\n } else {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if ((activeFeature.dbFeature.metaData[\"layerPosition\"] === key)\r\n && (!this.layerPositions[key] || !this.layerPositions[key].matchesMetaForArrayOfConditions(conditions))) {\r\n this.layerPositions[key] = activeFeature;\r\n // } else if (this.setAllLayerPositions) {\r\n } else if ((key !== \"C\" && activeFeature.metaData.layerPosition === \"C\") || (activeFeature.metaData.layerPosition !== \"C\" && key === \"C\")) {\r\n this.layerPositions[key] = null;\r\n } else {\r\n const matchingPositionFeature = this.getMatchingPositionFeature(key);\r\n if (matchingPositionFeature) {\r\n this.layerPositions[key] = matchingPositionFeature;\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n toggleLayerPositions() {\r\n if (this.layerPositions) { // just in case\r\n Object.keys(this.layerPositions).forEach(key => {\r\n this.layerPositions[key] = this.disabled ? null : this.getMatchingPositionFeature(key)\r\n })\r\n }\r\n }\r\n\r\n getMatchingPositionFeature = (position = \"\",\r\n fromFeature = this.activeFeature,\r\n fromLayout = null,\r\n conditions = null) => {\r\n if (fromFeature) { //just in case\r\n const name1 = fromFeature.getSplittedFeatureName();\r\n let arrayOfConditions = (conditions || this.getArrayOfConditions()).filter(cond => cond.propName !== \"Side\");\r\n // if (fromFeature.metaData[\"SkuName\"]) {\r\n // arrayOfConditions.push({\r\n // propName: \"SkuName\",\r\n // propValue: fromFeature.metaData[\"SkuName\"]\r\n // })\r\n // }\r\n if (fromLayout) {\r\n let roomLayoutMeta = arrayOfConditions.find(condition => condition.propName === \"RoomLayout\");\r\n let roomSceneMeta = arrayOfConditions.find(condition => condition.propName === \"RoomScene\");\r\n if (roomLayoutMeta) {\r\n roomLayoutMeta.propValue = fromLayout.getCurrentLayoutAbbreviation();\r\n }\r\n if (roomSceneMeta) {\r\n roomSceneMeta.propValue = fromLayout.scene;\r\n }\r\n }\r\n const skuNamesPartIds = [\"walk_in_tub\"];\r\n\r\n const whereToFind = (!this.layerPositions || (position === Object.keys(this.layerPositions)[0])\r\n || (this.partId === \"grab_bar\" && position === \"C\"))\r\n ? fromLayout ? this.featuresList[fromLayout.getCurrentLayoutName()] : this.features\r\n : fromLayout ? this.featuresPartsList[fromLayout.getCurrentLayoutName()] : this.featuresParts;\r\n\r\n let matchFeature = null;\r\n if (fromFeature.metaData[\"SkuName\"]) {\r\n const withSkuNameConditions = [...arrayOfConditions, {\r\n propName: \"SkuName\",\r\n propValue: fromFeature.metaData[\"SkuName\"][0],\r\n }]\r\n matchFeature = whereToFind.find((feature) => {\r\n return (skuNamesPartIds.includes(this.partId) || name1 === feature.getSplittedFeatureName())\r\n && feature.matchesMetaForArrayOfConditions(withSkuNameConditions) && feature.metaData[\"layerPosition\"] === position\r\n });\r\n }\r\n if (!matchFeature) {\r\n matchFeature = whereToFind.find((feature) => {\r\n return (skuNamesPartIds.includes(this.partId) || name1 === feature.getSplittedFeatureName())\r\n && feature.matchesMetaForArrayOfConditions(arrayOfConditions) && feature.metaData[\"layerPosition\"] === position\r\n });\r\n }\r\n return matchFeature\r\n }\r\n return null\r\n };\r\n\r\n getArrayOfConditions() {\r\n const layout = this.getParent().layout;\r\n return [{\r\n propName: 'RoomLayout',\r\n propValue: layout.getCurrentLayoutAbbreviation()\r\n }, {\r\n propName: 'RoomScene',\r\n propValue: layout.scene\r\n }];\r\n }\r\n\r\n setLayers(layout) {\r\n if (this.hideLayerCondition && this.hideLayerCondition()) {\r\n this.hideLayers();\r\n return;\r\n }\r\n if (this.activeFeature && (this.activeFeature.matchesMetaForArrayOfConditions(this.getArrayOfConditions()))) {\r\n if (this.hasAdditionalParts) {\r\n this.checkIfFeaturePartIsMatching();\r\n }\r\n return this._setLayers(layout);\r\n }\r\n this.setDefault(layout);\r\n return this._setLayers(layout);\r\n }\r\n\r\n showLayerPositionsModal(forFeature) {\r\n const checkSidesFeatureGroups = [\"shower_door\", \"shower_fixture\", \"grab_bar\", \"large_corner_seat\",\r\n \"replacement_tub\", \"shower_pan_combo\", \"corner_caddie\", \"large_corner_caddie\", \"soap_dish\", \"walk_in_tub\",\r\n \"shower_seats\", \"replacement_tub_fixture\"];\r\n if (checkSidesFeatureGroups.includes(this.partId)) {\r\n const positionsAvailable = PAN_POSITIONS.filter(position => {\r\n return !!this.getMatchingPositionFeature(position, forFeature);\r\n });\r\n return positionsAvailable.length > 1\r\n }\r\n return false\r\n }\r\n\r\n clickFromAllWalls(ignoreLocked) {\r\n if (this && this.dbFeature && this.dbFeature.sharedFeatureName) {\r\n console.log(`${this.partId}:`, this.dbFeature.sharedFeatureName);\r\n }\r\n navFeatureCLick(this, false, ignoreLocked, false);\r\n // this.handleClick(ignoreLocked, \"all_walls\");\r\n }\r\n\r\n /**\r\n * @param ignoreLocked {boolean} // false by the default, is used by wizard ONLY\r\n */\r\n handleClick(ignoreLocked = false) {\r\n const parent = this.getParent();\r\n const {activeQuoteIndex} = store.getState().quotesState;\r\n parent.firstClick[activeQuoteIndex] = true; // allow to show active item\r\n const featureIsLocked = getFeatureIsLocked(this, ignoreLocked);\r\n if (featureIsLocked) {\r\n parent.activeLockedFeature = this;\r\n } else {\r\n if (parent.activeLockedFeature) {\r\n parent.activeLockedFeature = null;\r\n }\r\n this.featureClick();\r\n }\r\n }\r\n\r\n featureClick() {\r\n const parent = this.getParent();\r\n parent.placeholderChanged = true;\r\n if (this.notAvailableInVisualizer) {\r\n parent.activeNotInVisualizerFeature = this; // do not change the activeFeature (in order to keep the layer)\r\n } else if (parent.activeNotInVisualizerFeature) {\r\n parent.activeNotInVisualizerFeature = null; // remove it from other searches and so on\r\n parent.activeFeature = this;\r\n } else {\r\n parent.activeFeature = this;\r\n }\r\n this.featureClicked();\r\n }\r\n\r\n hideLayers() {\r\n if (this.activeFeature) {\r\n this.activeFeature.layer.src = '';\r\n }\r\n if (Array.isArray(this.activeFeatureParts) && this.activeFeatureParts.length) {\r\n this.activeFeatureParts.forEach((activeFeaturePart) => {\r\n if (activeFeaturePart && activeFeaturePart.layer) {\r\n activeFeaturePart.layer.src = '';\r\n }\r\n })\r\n }\r\n if (this.placeholderFeature) {\r\n this.placeholderFeature.layer.src = '';\r\n }\r\n if (this.layerPositions) {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if (this.layerPositions[key]) {\r\n this.layerPositions[key].layer.src = '';\r\n }\r\n })\r\n }\r\n }\r\n\r\n setZIndex(zIndexes) {\r\n\r\n const getZIndex = (feature, partId = null) => {\r\n return feature.metaData[\"ZSorting\"] ? feature.metaData[\"ZSorting\"] * 1000 : zIndexes[partId || this.partId];\r\n }\r\n\r\n let increase = 0;\r\n if (this.layerPositions) {\r\n Object.keys(this.layerPositions).forEach((key) => {\r\n const feature = this.layerPositions[key];\r\n if (feature) {\r\n increase = increase + 0.000001;\r\n feature.layer.zIndex = getZIndex(feature) + increase;\r\n }\r\n })\r\n } else if (zIndexes && this.activeFeature) {\r\n this.activeFeature.layer.zIndex = getZIndex(this.activeFeature);\r\n if (this.hasAdditionalParts && this.activeFeatureParts && this.activeFeatureParts.length) {\r\n this.activeFeatureParts.forEach((activeFeaturePart) => {\r\n if (this.partId === \"attachment\") {\r\n activeFeaturePart.layer.zIndex = getZIndex(activeFeaturePart, this.additionalPartPartId)\r\n } else {\r\n increase = increase + 0.000001;\r\n activeFeaturePart.layer.zIndex = getZIndex(activeFeaturePart, this.additionalPartPartId) + increase;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n removeLayoutFromPartName(partName) {\r\n LayoutAbbreviationsToRemove.forEach(abbr => {\r\n const spaceWithLayoutName = \" \"+abbr;\r\n partName = partName.replace(spaceWithLayoutName + \" \", \" \"); // 1) replace \" Agra S Some edge name\" -> \" Agra Some edge name\"\r\n if (partName.slice(-spaceWithLayoutName.length) === spaceWithLayoutName) {\r\n partName = partName.substring(0, partName.length - spaceWithLayoutName.length); // 2) replace \" Agra Some edge name S\" -> \" Agra Some edge name\"\r\n }\r\n });\r\n partName = partName.replace(\" Backsplash\", \"\");\r\n return partName\r\n }\r\n\r\n removeEdgeFromPartName(partName) {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n const edgeFilterGroup = filterGroups.find(group => group.name === \"Edge\" || group.name === \"Edge Profile\");\r\n if (edgeFilterGroup && edgeFilterGroup.values && edgeFilterGroup.values.length) {\r\n const edgeFilterGroupValues = edgeFilterGroup.values.sort((a,b) => {\r\n return a.value && b.value && (b.value.length - a.value.length)\r\n }); // 1st should be \"Full Bullnose\", then simple \"Bullnose\"\r\n edgeFilterGroupValues.forEach((filterGroupValue) => { // arrayOf {id: 293, value: \"Eased\", displayText: \"Eased\", parent_id: null, icon: \"\", …}\r\n partName = partName.split(\" \"+filterGroupValue.value).join(\"\");\r\n });\r\n }\r\n return partName\r\n }\r\n\r\n getCountertopGroupsSplittedFeatureName = () => {\r\n if (this._countertopGroupsCustomDisplayName == null) {\r\n this._countertopGroupsCustomDisplayName = this.dbFeature.sharedFeatureName || \"\";\r\n }\r\n return this._countertopGroupsCustomDisplayName\r\n };\r\n\r\n getSplittedFeatureName = () => {\r\n if (this._customDisplayName == null || this.dbFeature.wasUpdatedFromAnotherResponse) {\r\n this._customDisplayName = this.dbFeature.sharedFeatureName || this.partName || \"\";\r\n if (LOOK_WALLS_ONLY.includes(this.partId) || COUNTERTOP_GROUP_BATHROOM.includes(this.partId)) {\r\n const manufacturerFilter = getFilterGroupValues(this, {id: 35});\r\n if (Array.isArray(manufacturerFilter)) {\r\n this._customDisplayName = this._customDisplayName + manufacturerFilter[0];\r\n }\r\n } else if (this.partId === \"shower_pan_combo\") {\r\n this._customDisplayName = !IS_LIXIL_SERVERS && this.metaData && Array.isArray(this.metaData[\"MatchingFeature\"])\r\n && this.metaData[\"MatchingFeature\"][0]\r\n ? this.metaData[\"MatchingFeature\"][0]\r\n : this._customDisplayName.replace(/LHO/g, \"\").replace(/RHO/g, \"\");\r\n }\r\n }\r\n if (this.dbFeature.wasUpdatedFromAnotherResponse) {\r\n this.dbFeature.wasUpdatedFromAnotherResponse = false;\r\n }\r\n return this._customDisplayName\r\n };\r\n\r\n getMatchingOptionsName = () => {\r\n if (!this._customMatchingOptionsName) {\r\n switch (this.partId) {\r\n case \"vanity_cabinet\":\r\n this._customMatchingOptionsName = getSkuWithoutDot(this.getCustomFullDisplayName()).split(\"-ASB\")[0];\r\n break;\r\n case \"hand_shower_only\": {\r\n this._customMatchingOptionsName = this.getCustomFullDisplayName();\r\n if (this.metaData[\"MatchingFeature\"] && this.metaData[\"MatchingFeature\"][0]) {\r\n this._customMatchingOptionsName += this.metaData[\"MatchingFeature\"][0];\r\n }\r\n break;\r\n }\r\n case \"vanity_backsplash\":\r\n case \"vanity_countertop\":\r\n case \"walk_in_tub_fixture\":\r\n this._customMatchingOptionsName = this.getSplittedFeatureName();\r\n break;\r\n case \"shower_fixture\":\r\n case \"shower_door\":\r\n this._customMatchingOptionsName = getSkuWithoutDot(this.getSplittedFeatureName()); // TU105507.243 -> TU105507\r\n break;\r\n case \"body_spray\":\r\n this._customMatchingOptionsName = this.getSplittedFeatureName().substr(0, 5);\r\n break;\r\n default:\r\n this._customMatchingOptionsName = getSkuWithoutDot(this.getCustomFullDisplayName()).substr(0, 5);\r\n break;\r\n }\r\n if (LOOK_WALLS_ONLY.includes(this.partId)) {\r\n const manufacturerFilter = getFilterGroupValues(this, {id: 35});\r\n if (Array.isArray(manufacturerFilter)) {\r\n this._customMatchingOptionsName = this._customMatchingOptionsName + manufacturerFilter[0];\r\n }\r\n }\r\n }\r\n return this._customMatchingOptionsName\r\n };\r\n\r\n getSplittedSku = () => {\r\n if (!this._splittedSku) {\r\n this._splittedSku = this.dbFeature.isFromAsRoom\r\n ? getSkuWithoutDot(this.dbFeature.sku || this.dbFeature.sharedFeatureName || \"\") // as rooms should have 8\r\n : (this.dbFeature.sku || this.dbFeature.sharedFeatureName || \"\").substr(0, 5); // grohe rooms should have 5\r\n }\r\n return this._splittedSku\r\n }\r\n\r\n getMatchingFeatureName = () => {\r\n return this.getSplittedFeatureName()\r\n };\r\n\r\n getCustomFullDisplayName = () => {\r\n if (!this._customFullDisplayName) {\r\n this._customFullDisplayName = this.dbFeature.customDisplayName || \"\";\r\n switch (this.partId) {\r\n case \"vanity_faucet\":\r\n this._customFullDisplayName = this._customFullDisplayName\r\n .replace(\" With Lever Handles\", \"\")\r\n .replace(\" With Lever Handle\", \"\");\r\n break;\r\n case \"vanity_sink\":\r\n this._customFullDisplayName = this._customFullDisplayName\r\n .replace(\"4 Inch Centerset \", \"\")\r\n .replace(\"8 Inch Widespread \", \"\")\r\n .replace(\"Center Hole Only \", \"\");\r\n break;\r\n case \"shower_hose\":\r\n this._customFullDisplayName = this._customFullDisplayName.replace(\" Longlife\", \"\")\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return this._customFullDisplayName\r\n };\r\n\r\n getModuleFeatureName = () => {\r\n // return this.partName.split(\" M_\")[0];\r\n return this.partName.split(\" M\")[0];\r\n };\r\n\r\n featureIsMatchingFilters(currentFeature, activeFilters, filters = []) {\r\n return filters.every(filter => {\r\n return activeFilters[filter.id]\r\n && currentFeature.dbFeature.filterValueIDs[filter.id]\r\n && currentFeature.dbFeature.filterValueIDs[filter.id].includes(activeFilters[filter.id][0])\r\n })\r\n }\r\n\r\n getActiveFeaturePartsAccordingToActiveFeature(fromFeature = this.activeFeature, activeFeatureConditions = []) {\r\n let activeFeatureParts = [];\r\n if (fromFeature && fromFeature.partNumber) {\r\n let activeFeaturePart;\r\n const name1 = fromFeature.getSplittedFeatureName();\r\n // console.log(\"name1\", name1);\r\n let arrayOfConditions = activeFeatureConditions.length\r\n ? activeFeatureConditions\r\n : this.getActiveFeatureConditions(fromFeature);\r\n // if (this.partId === \"right_wall\") {\r\n // arrayOfConditions = arrayOfConditions.filter(condition => condition.propName !== \"MirrorSize\");\r\n // }\r\n if (this.getAdditionalPartsConditions) {\r\n arrayOfConditions = this.getAdditionalPartsConditions(arrayOfConditions); // modify or extend parts conditions\r\n }\r\n activeFeatureParts = this.featuresParts.filter((feature) => name1 === feature.getSplittedFeatureName());\r\n // console.log(\"this.featuresParts\", this.featuresParts);\r\n // console.log(\"activeFeatureParts\", activeFeatureParts);\r\n if (activeFeatureParts.length) {\r\n activeFeaturePart = activeFeatureParts.find((feature) => {\r\n return feature.matchesMetaForArrayOfConditions(arrayOfConditions)\r\n });\r\n if (!activeFeaturePart) {\r\n activeFeaturePart = activeFeatureParts[0];\r\n }\r\n }\r\n activeFeatureParts = activeFeaturePart ? [activeFeaturePart] : [];\r\n activeFeatureParts.forEach((activeFeaturePart) => {\r\n activeFeaturePart.disabled = this.disabled\r\n });\r\n }\r\n return activeFeatureParts\r\n }\r\n\r\n checkIfFeaturePartIsMatching() {\r\n if (this.activeFeatureParts && this.activeFeatureParts.length) {\r\n let activeFeatureConditions = this.getActiveFeatureConditions();\r\n if (this.getAdditionalPartsConditions) {\r\n activeFeatureConditions = this.getAdditionalPartsConditions(activeFeatureConditions); // modify or extend parts conditions\r\n }\r\n const name1 = this.activeFeature.getSplittedFeatureName();\r\n const activeFeaturePart = this.activeFeatureParts[0];\r\n if (!(activeFeaturePart.matchesMetaForArrayOfConditions(activeFeatureConditions)\r\n && name1 === activeFeaturePart.getSplittedFeatureName())) {\r\n this.activeFeatureParts = this.setActiveFeatureParts(this.activeFeature, activeFeatureConditions);\r\n }\r\n } else {\r\n this.activeFeatureParts = this.setActiveFeatureParts();\r\n }\r\n }\r\n\r\n setActiveFeatureParts(fromFeature = this.activeFeature, activeFeatureConditions = []) {\r\n if (!this.hasAdditionalParts) {\r\n return []\r\n }\r\n return this.getActiveFeaturePartsAccordingToActiveFeature(fromFeature, activeFeatureConditions);\r\n }\r\n\r\n\r\n // OLD SHOWER LOGIC\r\n\r\n rememberPreviousSelection(shower, currentActiveFeature) {\r\n const layoutAbbr = shower.layout.getCurrentLayoutAbbreviation();\r\n const currentShowerBodyId = IntermediatePart.getCurrentShowerBodyId(shower);\r\n const wallConfiguration = shower.layout.parts[\"Shower Tub Combo\"] && shower.layout.parts[\"Shower Tub Combo\"].wallConfiguration;\r\n if (this.currentShowerBodyId !== currentShowerBodyId && currentActiveFeature && !currentActiveFeature.partName.includes(\"laceholder\")) {\r\n if (!this.previouslySelectedFeatures[layoutAbbr]) {\r\n this.previouslySelectedFeatures[layoutAbbr] = {}\r\n }\r\n this.previouslySelectedFeatures[layoutAbbr][this.currentShowerBodyId] = currentActiveFeature; // remember previous active item\r\n if (wallConfiguration\r\n && wallConfiguration.features.some(feature => feature.showerBodyId === this.currentShowerBodyId)) {\r\n wallConfiguration.features.forEach((wallConfigurationFeature) => { // remember previous active item for all wall conf\r\n this.previouslySelectedFeatures[layoutAbbr][wallConfigurationFeature.showerBodyId] = currentActiveFeature;\r\n })\r\n }\r\n }\r\n this.currentShowerBodyId = currentShowerBodyId; // set new shower type\r\n }\r\n\r\n setDefaultAccordingToPreviousSelect(shower, filteredFeatures, hardCodedDefaultName, placeholderDefaultName = \"laceholder\") {\r\n const layoutAbbr = shower.layout.getCurrentLayoutAbbreviation();\r\n const currentShowerBodyId = IntermediatePart.getCurrentShowerBodyId(shower);\r\n // console.log('currentShowerBodyId', currentShowerBodyId);\r\n // console.log('this.previouslySelectedFeatures', this.previouslySelectedFeatures);\r\n\r\n if (this.currentShowerBodyId !== currentShowerBodyId\r\n && this.previouslySelectedFeatures[layoutAbbr]\r\n && this.previouslySelectedFeatures[layoutAbbr][currentShowerBodyId]\r\n && filteredFeatures.some(f => f.dbFeature.id === this.previouslySelectedFeatures[layoutAbbr][currentShowerBodyId].dbFeature.id)) {\r\n this.activeFeature = this.previouslySelectedFeatures[layoutAbbr][currentShowerBodyId]; // restore from previous chosen\r\n } else {\r\n const hardCodedDefault = hardCodedDefaultName && filteredFeatures.find((feature) => {\r\n return !feature.notAvailableInVisualizer && feature.dbFeature.displayName && feature.dbFeature.displayName.includes(hardCodedDefaultName);\r\n });\r\n this.activeFeature = hardCodedDefault || filteredFeatures[0];\r\n }\r\n const placeholderDefault = filteredFeatures.find((feature) => {\r\n return !feature.notAvailableInVisualizer && feature.dbFeature.displayName\r\n && feature.dbFeature.displayName.includes(placeholderDefaultName);\r\n });\r\n this.placeholderFeature = placeholderDefault || null;\r\n }\r\n\r\n canDisplayDemoPoint() {\r\n return true\r\n }\r\n\r\n /** shower door, fixture methods **/\r\n static getCurrentShowerBodyId(shower) {\r\n let currentShowerBodyId = \"\";\r\n const showerTubComboIsActive = shower.showerTubComboIsActive();\r\n if (!showerTubComboIsActive && shower.showerBody && shower.showerBody.activeFeature) {\r\n currentShowerBodyId = shower.showerBody.activeFeature.showerBodyId;\r\n } else if (showerTubComboIsActive && shower.layout.parts[\"Shower Tub Combo\"]\r\n && shower.layout.parts[\"Shower Tub Combo\"].wallConfiguration\r\n && shower.layout.parts[\"Shower Tub Combo\"].wallConfiguration.activeFeature) {\r\n currentShowerBodyId = shower.layout.parts[\"Shower Tub Combo\"].wallConfiguration.activeFeature.showerBodyId;\r\n }\r\n return currentShowerBodyId\r\n }\r\n\r\n canBeEnabled() {\r\n const {wizardActiveItem, wizardSelectedValues, wizardActiveStep} = store.getState().wizardState;\r\n if (wizardActiveItem && wizardActiveItem.hideItems && wizardActiveItem.wizardGroups\r\n && wizardActiveItem.wizardGroups.length\r\n && wizardActiveItem.wizardGroups.some(wizardGroup => wizardGroup.groupName === (this.dbName || this.partName))\r\n && !Object.keys(wizardSelectedValues).some(key => key <= wizardActiveStep && wizardSelectedValues[key].partId === this.partId)) {\r\n return false // do not enable feature group if it uses hide items (shower wizard issue)\r\n }\r\n return true\r\n }\r\n\r\n /**\r\n * @param position {string}\r\n * @param clickedFeature {featureInterface}\r\n * @returns {[featureInterface]}\r\n */\r\n checkConflictingPosition(position, clickedFeature) {\r\n if (!position || !clickedFeature || !this.conflictingPositions\r\n || ((clickedFeature.partId === \"shower_seats\")\r\n && !clickedFeature.dbFeature.sharedFeatureName.includes(\"Comfort Plus\"))) { // hardcode - should be metadata here\r\n return []\r\n }\r\n const accParent = this.getParent();\r\n let conflictingPositions = [];\r\n this.conflictingPositions.forEach(partId => {\r\n const relItem = accParent.layout.getFeatureGroupByPartId(partId);\r\n if (relItem && !relItem.disabled && relItem.layerPositions && relItem.layerPositions[position]) {\r\n if ((clickedFeature.partId === \"valve_trim\")\r\n && !relItem.layerPositions[position].dbFeature.sharedFeatureName.includes(\"Comfort Plus\")) {\r\n // hardcode - should be metadata here. for now only Comfort Plus are conflicting\r\n return\r\n }\r\n conflictingPositions.push(relItem.layerPositions[position])\r\n }\r\n });\r\n return conflictingPositions\r\n }\r\n\r\n applyConflictingPosition(position, clickedFeature) {\r\n const conflictingPositions = this.checkConflictingPosition(position, clickedFeature);\r\n conflictingPositions.forEach(feature => {\r\n const parent = feature.getParent();\r\n parent.layerPositions[position] = null;\r\n })\r\n }\r\n\r\n}\r\n","import groupBy from \"lodash/groupBy\";\r\nimport isEqual from \"lodash/isEqual\";\r\n\r\nimport {getFilterGroupValue, getFilterGroupValues, s3FilterImagePath} from \"../../../misc/utils\";\r\nimport {getCurrentLayout, getCurrentRoomType} from \"../../appLayout\";\r\nimport {\r\n ALL_CONTEXT_MENU,\r\n CONTEXT_MENU_BATHTUB_BUTTONS,\r\n CONTEXT_MENU_SHOWER_ALL,\r\n CONTEXT_MENU_SHOWER_OTHER,\r\n CONTEXT_MENU_SPLIT_WALL,\r\n CONTEXT_MENU_VANITY_BUTTONS,\r\n POSSIBLE_ONE_POSITION,\r\n VANITY_TYPES,\r\n LOOK_ROOM_TYPES,\r\n ALL_CONTEXT_MENU_KITCHEN,\r\n CONTEXT_MENU_KITCHEN_CENTER_ISLAND,\r\n CONTEXT_MENU_KITCHEN_COUNTERTOPS,\r\n CONTEXT_MENU_VANITY_ONLY, CONTEXT_MENU_SHOWER_ACCESSORIES, METADATA\r\n} from \"../core/constants\";\r\nimport {getCartItemObject, getFeatureIsLocked} from \"../../../misc/helpers\";\r\nimport {getBundledFeatures, hardCodelyRemovedClicking} from \"./lookFunctions2\";\r\nimport {isVisibleForNavigation} from \"../../../misc/displayLogic\";\r\nimport {allowCheckForCollection} from \"../grohe/groheNavigation/groheFunctions\";\r\nimport {CART_ITEM_ADDED_BY} from \"../../shoppingCart/cartItemInterface\";\r\nimport {getCommonVisualizerType, IS_PRODUCT_JOURNEY, IS_QKB_UI} from \"../../../config\";\r\nimport {GROHE_CONFIG} from \"../grohe/groheConfig\";\r\nimport {addLayoutHistory} from \"../../../actions/actionFunctions\";\r\nimport store from \"../../../store\";\r\nimport {getExistingWizardForGroups} from \"./lookMain/lookWizard/lookWizardFunctions\";\r\nimport {getColorFilterValue} from \"../../../misc/filtersFunctions\";\r\nimport {getFeatureCropCoors} from \"../../../misc/metaDataFunctions\";\r\n\r\n\r\n/**\r\n * Checks available color options for reature\r\n * @param lookActiveFeature {object}\r\n * @param filterGroups {array}\r\n * @param returnAllFeatures {boolean}\r\n * @param fromNavItemOptions {array}\r\n * @returns {array} array of objects\r\n */\r\nexport const getFeatureOptions = (lookActiveFeature, filterGroups, returnAllFeatures = false, fromNavItemOptions = null) => {\r\n if (!lookActiveFeature) {\r\n return null\r\n }\r\n\r\n const colorFilterGroup = filterGroups.find(group => group.name === \"Color\");\r\n\r\n if (!colorFilterGroup) {\r\n return null\r\n }\r\n\r\n const activeFeatureValues = getFilterGroupValues(lookActiveFeature, colorFilterGroup);\r\n\r\n // console.log(\"activeFeatureValues\", activeFeatureValues);\r\n\r\n if (!Array.isArray(activeFeatureValues) || !activeFeatureValues.length) {\r\n return null\r\n }\r\n\r\n const parent = lookActiveFeature.getParent();\r\n const activeFeatureValue = getFilterGroupValue(activeFeatureValues[0], colorFilterGroup);\r\n\r\n let optionFeatures = activeFeatureValue ? [{\r\n feature: lookActiveFeature,\r\n colorValue: activeFeatureValue\r\n }] : [];\r\n\r\n if (fromNavItemOptions) {\r\n // console.log(\"optionFeatures\", optionFeatures);\r\n return activeFeatureValue && fromNavItemOptions.some(option => option.colorValue.id === activeFeatureValue.id)\r\n ? fromNavItemOptions\r\n : [...optionFeatures, ...fromNavItemOptions]\r\n }\r\n\r\n const layout = getCurrentLayout();\r\n let navItems;\r\n if (returnAllFeatures) {\r\n const layout = getCurrentLayout();\r\n const forSpecificLayout = lookActiveFeature.metaData[\"RoomLayout\"] ? lookActiveFeature.metaData[\"RoomLayout\"][0] : null;\r\n if (forSpecificLayout && (+(forSpecificLayout.replace(\"Layout\", \"\")) !== layout.type)) {\r\n navItems = parent.getFeaturesForNavigationFrom({\r\n returnAllFeatures,\r\n forSpecificLayout: lookActiveFeature.metaData[\"RoomLayout\"] ? lookActiveFeature.metaData[\"RoomLayout\"][0] : null,\r\n forSpecificScene: lookActiveFeature.metaData[\"RoomScene\"] ? lookActiveFeature.metaData[\"RoomScene\"][0] : null\r\n })\r\n } else {\r\n navItems = layout.designNavigationItems({part: parent}, {}, \"\", lookActiveFeature, false)\r\n }\r\n } else {\r\n navItems = layout.designNavigationItems({part: parent}, {}, \"\", lookActiveFeature, false)\r\n }\r\n\r\n optionFeatures = getOptionsFromNavItemsForFeature(lookActiveFeature, navItems, filterGroups, optionFeatures);\r\n return optionFeatures\r\n};\r\n\r\nexport const getOptionsFromNavItemsForFeature = (lookActiveFeature, navItems, filterGroups, optionFeatures = []) => {\r\n const activeFeatureCollectionName = lookActiveFeature.getCollectionName(filterGroups);\r\n const matchingOptionsName = lookActiveFeature.getMatchingOptionsName();\r\n const matchingFeatureProperty = lookActiveFeature.useMatchingFeatureReplacement || \"MatchingFeature\";\r\n\r\n for (let i = 0; i < navItems.length; i++) {\r\n const checkFeature = navItems[i].part || navItems[i];\r\n if (checkFeature.dbFeature.id === lookActiveFeature.dbFeature.id) {\r\n continue\r\n }\r\n if (checkFeature.getMatchingOptionsName() !== matchingOptionsName) {\r\n continue\r\n }\r\n // console.log(\"checkFeature\", checkFeature);\r\n const filterValue = getColorFilterValue(checkFeature, filterGroups);\r\n if (!filterValue) {\r\n continue\r\n }\r\n if (lookActiveFeature.metaData[matchingFeatureProperty] && !isEqual(lookActiveFeature.metaData[matchingFeatureProperty], checkFeature.metaData[matchingFeatureProperty])) {\r\n continue\r\n }\r\n if (document.kvConfig.visualizerType === \"bvLook\") {\r\n if (allowCheckForCollection(checkFeature) && (checkFeature.getCollectionName(filterGroups) !== activeFeatureCollectionName)) {\r\n continue\r\n }\r\n if (lookActiveFeature.partId !== \"vanity_sink\" && (lookActiveFeature.dbFeature.lixilProductSubCategory !== checkFeature.dbFeature.lixilProductSubCategory)) {\r\n continue\r\n }\r\n if (lookActiveFeature.partId === \"vanity_cabinet\" && lookActiveFeature.dbFeature.metaData[\"VanitySize\"]\r\n && !isEqual(lookActiveFeature.metaData[\"VanitySize\"], checkFeature.metaData[\"VanitySize\"])) {\r\n continue\r\n }\r\n }\r\n if (optionFeatures.every(optFeature => optFeature.colorValue.id !== filterValue.id)) {\r\n optionFeatures.push({\r\n feature: checkFeature,\r\n colorValue: filterValue\r\n })\r\n } else if (lookActiveFeature.partId === \"vanity_sink\" && (document.kvConfig.visualizerType === \"bvLook\")) {\r\n const alreadyAddedOptionIndex = optionFeatures.findIndex(optFeature => optFeature.colorValue.id === filterValue.id);\r\n if (alreadyAddedOptionIndex > -1\r\n && !isEqual(optionFeatures[alreadyAddedOptionIndex].feature.metaData[\"MountHoles\"], lookActiveFeature.metaData[\"MountHoles\"])\r\n && isEqual(checkFeature.metaData[\"MountHoles\"], lookActiveFeature.metaData[\"MountHoles\"])) {\r\n optionFeatures.splice(alreadyAddedOptionIndex, 1, {\r\n feature: checkFeature,\r\n colorValue: filterValue\r\n })\r\n }\r\n }\r\n }\r\n return optionFeatures\r\n}\r\n\r\n\r\n/**\r\n * returns matching color feature depending on the feature passed\r\n * @param activeFeature {featureInterface}\r\n * @param notMatchingFeature {featureInterface}\r\n * @param filterGroups {array}\r\n * @returns featureFound {featureInterface}\r\n */\r\nexport const getMatchingColorFeature = (activeFeature, notMatchingFeature, filterGroups) => {\r\n if (activeFeature) { //just in case\r\n const colorFilterValue = getColorFilterValue(activeFeature, filterGroups);\r\n const currentCollectionName = notMatchingFeature.getCollectionName(filterGroups);\r\n const currentFeatureName = activeFeature.getSplittedFeatureName();\r\n const parent = notMatchingFeature.getParent();\r\n const navItems = parent.navigationSubItems({}, \"\", notMatchingFeature);\r\n\r\n let featureFound = null;\r\n let featureFoundItems = navItems.filter((navItem) => { // 2) match by color filter\r\n const colorValue = getColorFilterValue(navItem.part, filterGroups);\r\n return !!(colorValue && colorFilterValue && (\r\n (colorValue.id === colorFilterValue.id)\r\n || [colorValue,colorFilterValue].every(filterValue => filterValue.displayText && filterValue.displayText.toLowerCase().includes(\"chrome\"))\r\n ));\r\n });\r\n if (featureFoundItems.length) {\r\n featureFound =\r\n featureFoundItems.find(navItem => navItem.part.getSplittedFeatureName() === currentFeatureName) // 2) match by sku\r\n || featureFoundItems.find(navItem => navItem.part.getCollectionName(filterGroups) === currentCollectionName) // 3) match by collection\r\n || featureFoundItems[0]; // 4) return at least something\r\n } else {\r\n featureFound = navItems.find(navItem => {\r\n return navItem.part.getSplittedFeatureName() === currentFeatureName // 2) match by sku\r\n });\r\n }\r\n return featureFound\r\n }\r\n return null\r\n};\r\n\r\n/**\r\n * returns same color features but different feature groups\r\n * @param lookActiveFeature {featureInterface}\r\n * @param filterGroups {array}\r\n * @param sameColorOnly {boolean}\r\n * @returns sameColorFeatures {array}\r\n */\r\nexport const getSameColorFeatures = (lookActiveFeature, filterGroups, sameColorOnly = true) => {\r\n let sameColorFeatures = [];\r\n let differentColorFeatures = [];\r\n const doNotShowStylePopupFor = [\"bathtub_body\", \"vanity_cabinet\", \"vanity_middle\", \"shower_pan_combo\", \"replacement_tub\"];\r\n const isAsBathroom = getCurrentRoomType() === LOOK_ROOM_TYPES.as;\r\n\r\n if (lookActiveFeature && (doNotShowStylePopupFor.includes(lookActiveFeature.partId)) && isAsBathroom) {\r\n return {sameColorFeatures, differentColorFeatures}\r\n }\r\n\r\n const featureGroups = getLookList(true);\r\n if (featureGroups) {\r\n const activeFilterGroupValue = getColorFilterValue(lookActiveFeature, filterGroups);\r\n featureGroups.forEach(parentObject => {\r\n if (activeFilterGroupValue && parentObject.cartFeature && (parentObject.cartFeature.partId !== lookActiveFeature.partId)) {\r\n const colorValue = getColorFilterValue(parentObject.cartFeature, filterGroups);\r\n if (colorValue && (colorValue.id !== activeFilterGroupValue.id)) {\r\n const sameFeatureAsActive = getMatchingColorFeature(lookActiveFeature, parentObject.cartFeature, filterGroups);\r\n const bathroomShowerPanExclude = isAsBathroom\r\n && (sameFeatureAsActive && sameFeatureAsActive.part.partId === \"shower_pan_combo\")\r\n && sameFeatureAsActive.part.getParent().getParent().layout.parts[\"Shower Tub Combo\"]\r\n && sameFeatureAsActive.part.getParent().getParent().layout.parts[\"Shower Tub Combo\"].showerTubComboIsActive;\r\n if (sameFeatureAsActive && !bathroomShowerPanExclude) {\r\n sameColorFeatures.push(sameFeatureAsActive.part);\r\n differentColorFeatures.push(parentObject.cartFeature);\r\n } else if (IS_PRODUCT_JOURNEY && !sameColorOnly) {\r\n differentColorFeatures.push(parentObject.cartFeature);\r\n }\r\n } else if (IS_PRODUCT_JOURNEY && !sameColorOnly) {\r\n differentColorFeatures.push(parentObject.cartFeature);\r\n }\r\n }\r\n })\r\n }\r\n // console.log(\"sameColorFeatures\", sameColorFeatures);\r\n // console.log(\"differentColorFeatures\", differentColorFeatures);\r\n return {sameColorFeatures, differentColorFeatures}\r\n};\r\n\r\n/**\r\n * returns same color features but different feature groups\r\n * @param lookActiveFeature {featureInterface}\r\n * @param fromArray {array}\r\n * @param filterGroups {array}\r\n * @returns displayFeatures {array}\r\n */\r\nexport const getDisplaySameColorGroups = (lookActiveFeature, fromArray, filterGroups) => {\r\n\r\n if (!lookActiveFeature || !fromArray.length || !filterGroups) {\r\n return []\r\n }\r\n\r\n // const activeFilterGroupValue = getColorFilterValue(lookActiveFeature, filterGroups);\r\n const activeCollectionFilterGroupValue = lookActiveFeature.getCollectionName(filterGroups);\r\n\r\n let displayFeatures = [];\r\n let otherGroup = {\r\n colName: \"other\",\r\n features: []\r\n }\r\n let currentColGroup = {\r\n colName: activeCollectionFilterGroupValue,\r\n features: []\r\n }\r\n if (activeCollectionFilterGroupValue) {\r\n displayFeatures.push(currentColGroup)\r\n }\r\n displayFeatures.push(otherGroup);\r\n\r\n\r\n fromArray.forEach(feature => {\r\n if (displayFeatures.some(sameColorObject => sameColorObject.features.some(addedFeature => addedFeature.partId === feature.partId))) {\r\n return false\r\n }\r\n\r\n const currentCollectionValue = feature.getCollectionName(filterGroups);\r\n\r\n if (currentCollectionValue && activeCollectionFilterGroupValue && (currentCollectionValue === activeCollectionFilterGroupValue)) {\r\n currentColGroup.features.push(feature)\r\n } else {\r\n otherGroup.features.push(feature)\r\n }\r\n });\r\n displayFeatures = displayFeatures\r\n .filter(sameColorObject => sameColorObject.features.length)\r\n .sort((a,b) => (a.colName === \"other\") - (b.colName === \"other\"));\r\n\r\n // console.log(\"displayFeatures\", displayFeatures);\r\n\r\n return displayFeatures\r\n};\r\n\r\n\r\n/**\r\n * returns a list needed for integration\r\n * @param checkFeature {object}\r\n * @param filterGroups {array}\r\n * @returns {array}\r\n */\r\nexport const getSimilarItemsList = (checkFeature, filterGroups) => {\r\n if (!checkFeature) {\r\n return []\r\n }\r\n const featureGroups = getLookList();\r\n if (!featureGroups) {\r\n return []\r\n }\r\n let matchingFeatures = [];\r\n const activeFilterGroupValue = getColorFilterValue(checkFeature, filterGroups);\r\n const collectionName = checkFeature.getCollectionName(filterGroups);\r\n featureGroups.forEach(parentObject => {\r\n if (parentObject.partId === checkFeature.partId) {\r\n return\r\n }\r\n const navItems = parentObject.featureGroup.navigationSubItems({}, \"\", checkFeature)\r\n const sameColorItems = navItems.filter((navItem) => { // 2) match by color filter\r\n const colorValue = getColorFilterValue(navItem.part, filterGroups);\r\n return colorValue && activeFilterGroupValue && (colorValue.id === activeFilterGroupValue.id)\r\n });\r\n if (sameColorItems.length) {\r\n const sameCollectionFeature = sameColorItems.find(navItem => {\r\n return navItem.part.getCollectionName(filterGroups) === collectionName\r\n });\r\n matchingFeatures.push(sameCollectionFeature ? sameCollectionFeature.part : sameColorItems[0].part);\r\n } else if (parentObject.cartFeature) {\r\n // tubs, toilets and shower pans? for now let's push all\r\n matchingFeatures.push(parentObject.cartFeature);\r\n }\r\n })\r\n return matchingFeatures\r\n}\r\n\r\nconst setLayerPosition = (position, featureGroup) => {\r\n const sameFeature = featureGroup.getMatchingPositionFeature(position, featureGroup.activeFeature);\r\n // console.log(\"sameFeature\", sameFeature);\r\n if (sameFeature) {\r\n featureGroup.activeFeature = sameFeature;\r\n }\r\n featureGroup.layerPositions[position] = sameFeature || null; // if no feature found - erase previous\r\n}\r\n\r\nconst updateMirrorAndWallsCrop = (feature) => {\r\n const layout = getCurrentLayout();\r\n const vanityParent = layout.parts[\"Vanity\"];\r\n if (!vanityParent || !vanityParent.mirror || !vanityParent.relatedItems || !vanityParent.relatedItems.some(relItem => relItem.partId === feature.partId)) {\r\n return\r\n }\r\n vanityParent.mirror.setLayers(layout);\r\n const wallsParent = layout.parts[\"Walls\"];\r\n if (wallsParent && wallsParent.relatedItems) {\r\n wallsParent.relatedItems.forEach(wallFeatureGroup => {\r\n if (wallFeatureGroup.hasAdditionalParts) {\r\n wallFeatureGroup.checkIfFeaturePartIsMatching(); // update crops after mirror change\r\n }\r\n })\r\n }\r\n}\r\n\r\n/**\r\n * Updates Vanity related items sides\r\n * @param feature {featureInterface}\r\n * @param oldActiveFeature {featureInterface}\r\n */\r\nexport const updateVanitySides = (feature, oldActiveFeature = null) => {\r\n const layout = getCurrentLayout();\r\n const currentSideMeta = oldActiveFeature ? oldActiveFeature.metaData.layerPosition : null;\r\n const nextSideMeta = feature.metaData.layerPosition;\r\n const vanityParent = layout.parts[\"Vanity\"];\r\n if (!vanityParent || !vanityParent.relatedItems || !vanityParent.relatedItems.some(relItem => relItem.partId === feature.partId)\r\n || feature.partId === \"vanity_mirror\") { // vanity mirror is independent! it has Vanity Size and mirror shape meta\r\n return\r\n }\r\n\r\n if (feature.partId === \"vanity_cabinet\") {\r\n const nextVanityIsDouble = vanityParent.isDoubleVanity(feature);\r\n vanityParent.relatedItems.forEach(featureGroup => {\r\n if (feature.partId === featureGroup.partId || featureGroup.partId === \"vanity_mirror\") {\r\n // feature is already applied, no need to do anything\r\n return\r\n }\r\n if (featureGroup.layerPositions) {\r\n const isCountertopOrBacksplash = featureGroup.partId === \"vanity_countertop\" || featureGroup.partId === \"vanity_backsplash\";\r\n\r\n Object.keys(featureGroup.layerPositions).forEach(position => {\r\n if (isCountertopOrBacksplash) {\r\n if (position === feature.metaData.layerPosition || (position !== \"C\" && feature.metaData.layerPosition !== \"C\")) {\r\n setLayerPosition(position, featureGroup);\r\n } else {\r\n featureGroup.layerPositions[position] = null; // erase sibling positions\r\n }\r\n } else {\r\n if (position === \"C\" && (nextVanityIsDouble && feature.metaData.layerPosition === \"C\"\r\n || (!nextVanityIsDouble && nextSideMeta !== \"C\"))) {\r\n featureGroup.layerPositions[position] = null; // erase sibling positions\r\n } else if (position !== \"C\" && !nextVanityIsDouble && feature.metaData.layerPosition === \"C\") {\r\n featureGroup.layerPositions[position] = null; // erase sibling positions\r\n } else {\r\n setLayerPosition(position, featureGroup);\r\n }\r\n }\r\n })\r\n }\r\n })\r\n return\r\n }\r\n\r\n if (nextSideMeta === currentSideMeta) {\r\n return\r\n }\r\n if (!((currentSideMeta !== \"C\" && nextSideMeta === \"C\") || (nextSideMeta !== \"C\" && currentSideMeta === \"C\"))) {\r\n return // no need to change anything\r\n }\r\n\r\n vanityParent.relatedItems.forEach(featureGroup => {\r\n if (feature.partId === featureGroup.partId) {\r\n // feature is already applied, no need to do anything\r\n return\r\n }\r\n if (featureGroup.layerPositions) {\r\n Object.keys(featureGroup.layerPositions).forEach(position => {\r\n if ((position !== \"C\" && feature.metaData.layerPosition === \"C\") || (feature.metaData.layerPosition !== \"C\" && position === \"C\")) {\r\n if (featureGroup.getParent().vanity_type === \"vanity_cabinet\"\r\n && (featureGroup.partId === \"vanity_cabinet\")\r\n && (feature.metaData.layerPosition !== \"C\" && position === \"C\")\r\n && (featureGroup.layerPositions[\"C\"] && !featureGroup.layerPositions[\"L\"] && !featureGroup.layerPositions[\"R\"])\r\n && featureGroup.layerPositions[\"C\"].metaData[\"MatchingFeature\"]\r\n && featureGroup.layerPositions[\"C\"].metaData[\"MatchingFeature\"].includes(METADATA.NO)\r\n && featureGroup.layerPositions[\"C\"].metaData[\"VanityWidth\"]\r\n && featureGroup.layerPositions[\"C\"].metaData[\"VanityWidth\"] === 64) {\r\n return; // do not erase 64 vanity if we are trying to apply L sink, it can be used with 64 vanity size\r\n }\r\n featureGroup.layerPositions[position] = null; // erase sibling positions\r\n } else {\r\n if (nextSideMeta === position && featureGroup.layerPositions[position]) {\r\n // feature is already applied, no need to search for it\r\n return\r\n }\r\n setLayerPosition(position, featureGroup);\r\n }\r\n })\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * Simple navigation feature click\r\n * @param feature {object}\r\n * @param updateLocalStorage {boolean}\r\n * @param forceClick {boolean}\r\n * @param updateVanityPositions {boolean}\r\n // * @param fromUrl {boolean}\r\n * @returns {boolean}\r\n */\r\nexport const navFeatureCLick = (feature, updateLocalStorage = true, forceClick = false, updateVanityPositions = true) => {\r\n const parent = feature.getParent();\r\n const featureIsLocked = getFeatureIsLocked(feature);\r\n if (featureIsLocked && !forceClick) {\r\n feature.handleClick(forceClick); // update active locked feature or active not in visualizer feature\r\n return false\r\n }\r\n\r\n const currentActiveFeature = parent.activeFeature;\r\n const asBathroom = getCurrentRoomType() === LOOK_ROOM_TYPES.as;\r\n if (asBathroom) {\r\n if (feature.partId === \"vanity_sink\" && (document.kvConfig.visualizerType === \"bvLook\")) {\r\n feature.handleClick(forceClick, true);\r\n } else if (feature.partId === \"vanity_cabinet\" && (document.kvConfig.visualizerType === \"bvLook\") && !updateVanityPositions) {\r\n feature.handleClick(forceClick, false); // do not click again on the sink, we came from the sink click\r\n } else {\r\n feature.handleClick(forceClick); // first set custom types (for vanity)\r\n }\r\n }\r\n if (!feature.notAvailableInVisualizer && parent.layerPositions && feature.metaData.layerPosition) { // prevent clicking on disabled item if same sku is opened for enabled feature\r\n // if (fromUrl && Object.keys(parent.layerPositions).some(layerPosition => !parent.layerPositions[layerPosition])) {\r\n // return false\r\n // }\r\n Object.keys(parent.layerPositions).forEach(position => {\r\n if (position === feature.metaData.layerPosition) {\r\n parent.layerPositions[position] = feature\r\n } else if ((position !== \"C\" && feature.metaData.layerPosition === \"C\") || (feature.metaData.layerPosition !== \"C\" && position === \"C\")) {\r\n parent.layerPositions[position] = null; // erase sibling positions\r\n } else {\r\n const sameFeature = parent.getMatchingPositionFeature(position, feature, null, parent.getActiveFeatureConditions(feature));\r\n // console.log(\"sameFeature\", sameFeature);\r\n parent.layerPositions[position] = sameFeature || null; // if no feature found - erase previous\r\n }\r\n });\r\n }\r\n if (parent.disabled) {\r\n parent.disabled = false;\r\n parent.disabledClick();\r\n }\r\n\r\n if (feature.partId === \"vanity_cabinet\" && (document.kvConfig.visualizerType === \"bvLook\") && !updateVanityPositions) {\r\n feature.handleClick(forceClick, false); // do not click again on the sink, we came from the sink click\r\n } else {\r\n feature.handleClick(forceClick); // update active feature or active not in visualizer feature\r\n }\r\n\r\n if (updateLocalStorage) {\r\n const layout = getCurrentLayout();\r\n store.dispatch(addLayoutHistory(layout.getActiveFeaturesAsObject(false, false, true)))\r\n }\r\n if (parent.layerPositions && feature.metaData.layerPosition && updateVanityPositions && !feature.notAvailableInVisualizer) {\r\n updateVanitySides(feature, currentActiveFeature);\r\n updateMirrorAndWallsCrop(feature);\r\n }\r\n}\r\n\r\n/**\r\n * For delete buttons\r\n * @param feature {object}\r\n * @param featureParent {object}\r\n * @param checkDisabledOnly {boolean}\r\n * @returns {boolean}\r\n */\r\nexport const checkIfFeatureDisabled = (feature, featureParent, checkDisabledOnly = false) => {\r\n if (!featureParent) {\r\n featureParent = feature.getParent();\r\n }\r\n const isDisabled = featureParent.layerPositions\r\n ? Object.keys(featureParent.layerPositions).every(pos => !featureParent.layerPositions[pos])\r\n : featureParent.disabled;\r\n return checkDisabledOnly ? isDisabled : isDisabled && featureParent.canBeDisabled\r\n}\r\n\r\n/**\r\n * Returns active features list for\r\n * @param withLayerPositions {boolean} return all positions features\r\n * @param withDisabled {boolean} return feature positions even disabled\r\n * @param showAllGroups {boolean} returns all layout feature groups\r\n * @param showAllQtCategories {boolean} returns quotingTool featureGroups\r\n * @param displayInMenu {boolean} whether to display in look menu\r\n * @returns {array} array of objects\r\n */\r\nexport const getLookList = (withLayerPositions = false,\r\n withDisabled = false,\r\n showAllGroups = false,\r\n showAllQtCategories = false,\r\n displayInMenu = false) => {\r\n const layout = getCurrentLayout();\r\n\r\n let featureGroups = [];\r\n\r\n if (showAllGroups) {\r\n layout.getFeatures().forEach(parent => {\r\n parent.relatedItems.forEach(featureGroup => {\r\n if (!featureGroup.activeFeature) {\r\n featureGroup.setDefault(layout, true);\r\n }\r\n if (!featureGroup.activeFeature) {\r\n return\r\n }\r\n featureGroups.push({\r\n selectionGroup: parent.partName,\r\n partId: featureGroup.partId,\r\n quantity: 0,\r\n cartFeature: featureGroup.activeFeature,\r\n featureGroup,\r\n })\r\n })\r\n });\r\n return featureGroups\r\n }\r\n\r\n if (((document.kvConfig.toolVersion !== 6 || showAllQtCategories) && layout.qtCategories)) {\r\n layout.qtCategories.forEach((qtCategory) => {\r\n qtCategory.defaultSubParts.forEach(subPart => {\r\n if (document.kvConfig.visualizerType === \"kvScene\") {\r\n if ((subPart.part.partId === \"center_island_edge\" && layout.type === 3)\r\n || (subPart.part.partId === \"crown_molding\" && (layout.type !== 1 && layout.type !== 4))) {\r\n return\r\n }\r\n }\r\n if (!featureGroups.some(parentObject => parentObject.partId === subPart.part.partId)) {\r\n featureGroups.push({\r\n selectionGroup: subPart.part.getParent().partName,\r\n partId: subPart.part.partId,\r\n quantity: 0,\r\n cartFeature: subPart.part.activeFeature, // it can be null here! it's ok since we need to show featureGroups from another layouts (for shop)\r\n featureGroup: subPart.part\r\n })\r\n }\r\n })\r\n })\r\n return featureGroups\r\n }\r\n\r\n let featureGroupsObjects = layout.getActiveFeatures(false, withLayerPositions, withDisabled);\r\n // console.log(\"parentGroups before wizard clean\", featureGroupsObjects);\r\n\r\n if (displayInMenu) {\r\n const {wizardList} = store.getState().wizardState;\r\n if (Array.isArray(wizardList) && wizardList.length) {\r\n wizardList.forEach(wizardItem => {\r\n if (wizardItem.hideItems && Array.isArray(wizardItem.wizardGroups) && wizardItem.wizardGroups.length) {\r\n featureGroupsObjects = featureGroupsObjects.filter(parentObject => {\r\n return wizardItem.wizardGroups.every(wizardGroup => {\r\n return (parentObject.featureGroup.dbName || parentObject.featureGroup.partName) !== wizardGroup.groupName\r\n })\r\n })\r\n }\r\n })\r\n }\r\n }\r\n\r\n const parentGroups = groupBy(featureGroupsObjects, 'selectionGroup');\r\n // console.log(\"parentGroups\", parentGroups);\r\n\r\n if (!Object.keys(parentGroups).length) {\r\n return null\r\n }\r\n\r\n const visType = getCommonVisualizerType();\r\n const sortByParents = visType === \"bathroom\"\r\n ? [\"Vanity\", \"Shower\", \"Shower Tub Combo\", \"Shower Accessories\", \"Bathtub\", \"Toilet\", \"Floor\", \"Walls\", \"Window\"]\r\n : visType === \"kitchen\"\r\n ? [\"Countertop\", \"CenterIsland\", \"Cabinet\", \"Appliances\", \"Walls\", \"Floor\"]\r\n : Object.keys(parentGroups);\r\n\r\n sortByParents.forEach(parentKey => {\r\n featureGroups = [...featureGroups, ...(parentGroups[parentKey] || [])]\r\n });\r\n\r\n if (getCurrentRoomType(layout) === LOOK_ROOM_TYPES.as) {\r\n const vanityParent = layout.parts[\"Vanity\"];\r\n featureGroups = featureGroups.filter(parentObject => {\r\n if (parentObject.partId === \"vanity_ws_towel_bar\" && vanityParent.vanity_type !== VANITY_TYPES.vanity_washstand) {\r\n return false\r\n } else if ((parentObject.partId === \"vanity_middle\" || parentObject.partId === \"vanity_legs\") && vanityParent.vanity_type !== VANITY_TYPES.vanity_cabinet) {\r\n return false\r\n }\r\n return !(vanityParent && Object.keys(VANITY_TYPES).includes(parentObject.partId) && vanityParent.vanity_type !== parentObject.partId);\r\n })\r\n }\r\n // console.log(\"featureGroups\", featureGroups);\r\n\r\n // simple hardcoded sort\r\n return featureGroups.filter(parentObject => parentObject.cartFeature)\r\n}\r\n\r\n/**\r\n * Returns look navigation list height\r\n * @param lmFeatureParent {object}\r\n * @param lookViewType {number}\r\n * @param lookParentKeys {array}\r\n * @returns {number}\r\n */\r\nexport const getLookListHeight = (lmFeatureParent, lookViewType, lookParentKeys) => {\r\n const opened = lookParentKeys.includes(lmFeatureParent.partId);\r\n // const featuresLength = parentGroups[parentKey].length;\r\n let featuresLength = 1;\r\n if (lmFeatureParent.layerPositions) {\r\n if (POSSIBLE_ONE_POSITION.includes(lmFeatureParent.partId)) {\r\n featuresLength = 0;\r\n Object.keys(lmFeatureParent.layerPositions).forEach(position => {\r\n if (lmFeatureParent.getMatchingPositionFeature(position)) {\r\n featuresLength += 1;\r\n }\r\n });\r\n } else {\r\n featuresLength = Object.keys(lmFeatureParent.layerPositions).length\r\n }\r\n }\r\n let listHeight = 0;\r\n const styleNotificationIsVisible = getStyleAlertIsVisibleForGroup(lmFeatureParent);\r\n if (opened) {\r\n switch (lookViewType) {\r\n case 1:\r\n default:\r\n listHeight = 104 * featuresLength; // feature height 88 + feature margin 16\r\n break;\r\n case 2:\r\n listHeight = (172 + 22) * Math.ceil(featuresLength / 2); // feature height 156 + feature margin 16 + featureName 22\r\n break;\r\n case 3:\r\n listHeight = (280 + 22 + 16) * featuresLength; // feature height 280 + feature margin 16 + featureName 22\r\n break;\r\n }\r\n if (styleNotificationIsVisible) {\r\n listHeight += 96 // 80 + 8 + 8 margins\r\n }\r\n }\r\n return listHeight\r\n}\r\n\r\nconst disallowedSkus = [\"athtub\"];\r\n\r\n/**\r\n * @param feature {featureInterface}\r\n * @returns {boolean}\r\n */\r\nexport const checkIfFeatureCanBeAddedToTheCart = (feature) => {\r\n return (document.kvConfig.visualizerOnly || isVisibleForNavigation(feature, true)) && !disallowedSkus.some(sku => feature.dbFeature.sharedFeatureName.includes(sku))\r\n}\r\n\r\n/**\r\n * Creates cart items list depending on quotingTool features\r\n * @param qtActiveCategory {string} current active quote category name\r\n * @param loadByTheDefault {object} loadByTheDefault object from localstorage\r\n * @returns {array} array of cart items\r\n */\r\nexport const createCartList = (qtActiveCategory, loadByTheDefault = null) => {\r\n const featureGroups = getLookList(true);\r\n let cartItems = [];\r\n if (featureGroups && featureGroups.length) {\r\n featureGroups.forEach(featureGroup => {\r\n if ((getCurrentRoomType() === LOOK_ROOM_TYPES.as) && featureGroup.featureGroup.hideLayerCondition && featureGroup.featureGroup.hideLayerCondition()) {\r\n return\r\n }\r\n const existingCartItem = cartItems.find(cItem => {\r\n if (!featureGroup.cartFeature) {\r\n return null\r\n }\r\n return (cItem.partId === featureGroup.cartFeature.partId)\r\n && cItem.cartFeature.dbFeature.sharedFeatureName && featureGroup.cartFeature.dbFeature.sharedFeatureName\r\n && (cItem.cartFeature.dbFeature.sharedFeatureName === featureGroup.cartFeature.dbFeature.sharedFeatureName)\r\n });\r\n let quantity = 1;\r\n let loadByTheDefaultCItem = null;\r\n if (loadByTheDefault && loadByTheDefault.cartState && Array.isArray(loadByTheDefault.cartState.cartItems)){\r\n loadByTheDefaultCItem = loadByTheDefault.cartState.cartItems.find(cItem => {\r\n const foundFeature = featureGroup.featureGroup.getFeatureById(cItem.cartFeature.dbFeatureId, true)\r\n if (foundFeature) {\r\n return foundFeature.dbFeature.sharedFeatureName && featureGroup.cartFeature.dbFeature.sharedFeatureName\r\n && (foundFeature.dbFeature.sharedFeatureName === featureGroup.cartFeature.dbFeature.sharedFeatureName)\r\n }\r\n return cItem.cartFeature.dbFeatureId === featureGroup.cartFeature.dbFeature.id\r\n })\r\n if (loadByTheDefaultCItem) {\r\n quantity = loadByTheDefaultCItem.quantity;\r\n } else {\r\n quantity = 0\r\n }\r\n }\r\n\r\n if (existingCartItem && quantity) {\r\n if (!loadByTheDefaultCItem) {\r\n existingCartItem.quantity += quantity;\r\n }\r\n } else if (featureGroup.cartFeature && checkIfFeatureCanBeAddedToTheCart(featureGroup.cartFeature) && quantity) {\r\n const newCartItem = getCartItemObject(featureGroup.cartFeature, quantity, qtActiveCategory);\r\n newCartItem.addedBy = CART_ITEM_ADDED_BY.auto;\r\n cartItems.push(newCartItem);\r\n const relatedFeatures = getBundledFeatures(featureGroup.cartFeature);\r\n relatedFeatures.forEach((relatedFeature) => {\r\n let relatedItemQuantity = 1;\r\n if (loadByTheDefault && loadByTheDefault.cartState && Array.isArray(loadByTheDefault.cartState.cartItems)) {\r\n const alreadyAddedRelatedFeature = loadByTheDefault.cartState.cartItems.find(cartItem => {\r\n return cartItem.cartFeature.dbFeatureId === relatedFeature.dbFeature.id\r\n });\r\n if (alreadyAddedRelatedFeature) {\r\n relatedItemQuantity = alreadyAddedRelatedFeature.quantity\r\n }\r\n }\r\n const cartItem = getCartItemObject(relatedFeature, relatedItemQuantity, qtActiveCategory);\r\n cartItem.relatedProductParent = featureGroup.cartFeature;\r\n cartItem.addedBy = CART_ITEM_ADDED_BY.auto;\r\n cartItems.push(cartItem);\r\n })\r\n }\r\n })\r\n }\r\n return cartItems\r\n}\r\n\r\n/**\r\n * Returns layer center\r\n * @param coords {object} metadata object // {min_x: 0.2109375, min_y: 1.3685185185185185, max_x: 1.9994791666666667, max_y: 2}\r\n * @param canvasElement {$ElementType} canvas\r\n * @param isMobile {boolean} on mobile we have different menu position\r\n * @returns {object}\r\n */\r\nexport const getLayerCenter = (coords, canvasElement, isMobile = false) => {\r\n if (!coords) {\r\n return null\r\n }\r\n let {clientWidth, clientHeight} = canvasElement;\r\n const COORDS_MAX = 1;\r\n // const openedMenuWidth = 712;\r\n // console.log(\"clientWidth\", clientWidth);\r\n // console.log(\"clientWidth - openedMenuWidth\", openedMenuWidth);\r\n // const threeQuater = clientWidth - (clientWidth / 4);\r\n // const featureViewWidth = (clientWidth - openedMenuWidth) / 2;\r\n let centerXPercentage = ((coords.min_x + ((coords.max_x - coords.min_x) / 2)) * 100) / COORDS_MAX;\r\n const centerYPercentage = ((coords.min_y + ((coords.max_y - coords.min_y) / 2)) * 100) / COORDS_MAX; // 1.5 ⋅ 100 : 2 = 75%\r\n // console.log(\"centerXPercentage\", centerXPercentage);\r\n // let scrollPercentage = 0;\r\n let x = 0;\r\n // if (isMobile) {\r\n //\r\n // const menuWidth = 320;\r\n // const shiftX = clientWidth - (clientWidth * centerXPercentage / 100);\r\n // const containerScrolled = shiftX < menuWidth;\r\n //\r\n // const startZeroPosition = IS_PRODUCT_JOURNEY ? 15 : 13;\r\n //\r\n // scrollPercentage = centerXPercentage < startZeroPosition\r\n // ? 0\r\n // : centerXPercentage > 54\r\n // ? centerXPercentage - ((100 - centerXPercentage) / 3) // 80 + 5 = 85\r\n // // ? centerXPercentage // 80 + 5 = 85\r\n // : centerXPercentage - ((35 - centerXPercentage) - ((centerXPercentage / 100) * (35 - centerXPercentage))) // 1) calculate percent of scroll from 75 2) 61 - 12%;\r\n // if (containerScrolled && (centerXPercentage > 50) && (centerXPercentage < 60)) {\r\n // scrollPercentage = centerXPercentage - ((100 - centerXPercentage) / 5)\r\n // }\r\n // x = (clientWidth * scrollPercentage) / 100;\r\n // } else {\r\n const zoomPercentage = 75;\r\n if (centerXPercentage < zoomPercentage) {\r\n\r\n const openedMenuWidth = IS_PRODUCT_JOURNEY ? 412 : 360;\r\n // const featureViewWidth = IS_PRODUCT_JOURNEY ? clientWidth - openedMenuWidth : (clientWidth - openedMenuWidth - 64); // 64 is sidebar\r\n const featureMinX = (clientWidth * (coords.min_x * 100 / COORDS_MAX)) / 100;\r\n const featureMaxX = (clientWidth * (coords.max_x * 100 / COORDS_MAX)) / 100;\r\n const featureCenter = featureMinX + (featureMaxX - featureMinX) / 2;\r\n // console.log(\"clientWidth\", clientWidth);\r\n // console.log(\"featureViewWidth\", featureViewWidth);\r\n // console.log(\"centerXPercentage\", centerXPercentage);\r\n // console.log(\"centerXPercentage\", centerXPercentage);\r\n // console.log(\"featureMinX\", featureMinX);\r\n // console.log(\"featureMaxX\", featureMaxX);\r\n const gPointPercent = 40; // don't ask me why, just because it is magic number\r\n const shiftX = clientWidth - (clientWidth * centerXPercentage / 100);\r\n if (IS_PRODUCT_JOURNEY && isMobile && (shiftX > GROHE_CONFIG.sidebarWidth.mobile)) {\r\n x = featureCenter - (clientWidth * (gPointPercent - centerXPercentage)) / 100;\r\n } else {\r\n x = featureCenter - (clientWidth * (gPointPercent - centerXPercentage)) / 100 - (openedMenuWidth / 2);\r\n }\r\n } else {\r\n x = clientWidth;\r\n }\r\n // }\r\n // console.log(\"scrollPercentage\", scrollPercentage);\r\n\r\n const y = (clientHeight * centerYPercentage) / 100; // 1920 ⋅ 75 : 100\r\n\r\n // console.log(\"getLayerCenter\", {x, y});\r\n // console.log(\"getLayerCenter\", {x, y, isMobile, featureX: centerXPercentage, clientWidth});\r\n return {x, y, isMobile, featureX: centerXPercentage, clientWidth}\r\n}\r\n\r\n/**\r\n * Returns layer center\r\n * @param coords {object} metadata object // {min_x: 0.2109375, min_y: 1.3685185185185185, max_x: 1.9994791666666667, max_y: 2}\r\n * @param canvasElement {$ElementType} canvas\r\n * @returns {object}\r\n */\r\nexport const getCoordsCenter = (coords, canvasElement) => {\r\n let {clientWidth, clientHeight} = canvasElement;\r\n const COORDS_MAX = 1;\r\n let centerXPercentage = ((coords.min_x + ((coords.max_x - coords.min_x) / 2)) * 100) / COORDS_MAX;\r\n const centerYPercentage = ((coords.min_y + ((coords.max_y - coords.min_y) / 2)) * 100) / COORDS_MAX; // 1.5 ⋅ 100 : 2 = 75%\r\n\r\n const x = (clientWidth * centerXPercentage) / 100;\r\n const y = (clientHeight * centerYPercentage) / 100; // 1920 ⋅ 75 : 100\r\n\r\n // console.log(\"getLayerCenter\", {x, y});\r\n return {x, y}\r\n}\r\n\r\n/**\r\n * Returns layer center\r\n * @returns {object}\r\n */\r\nexport const getCropCoordsCenter = (feature) => {\r\n if (feature.metaData[\"CropCoords\"]) {\r\n const parsedCoords = getFeatureCropCoors(feature);\r\n // const {clientWidth, clientHeight} = canvasElement;\r\n const clientWidth = 1920;\r\n const clientHeight = 1080;\r\n\r\n const changed = {\r\n min_x: parsedCoords[0] / clientWidth,\r\n min_y: parsedCoords[1] / clientHeight,\r\n max_x: parsedCoords[2] / clientWidth,\r\n max_y: parsedCoords[3] / clientHeight,\r\n }\r\n // if (feature.partId) {\r\n // console.log(\"original\", feature.metaData[\"Coords\"]);\r\n // console.log(\"changed\", changed);\r\n // }\r\n return changed\r\n }\r\n return feature.metaData[\"Coords\"]\r\n}\r\n\r\n/**\r\n * Returns bool\r\n * @param lookFeature {object} feature\r\n * @param fromStyleAlertIcon {boolean}\r\n * @returns {array} not matching features\r\n */\r\nexport const getStyleAlertNotMatchingFeatures = (lookFeature, fromStyleAlertIcon = false) => {\r\n let notMatchingFeatures = [];\r\n if (lookFeature) {\r\n const featureGroup = lookFeature.getParent();\r\n\r\n if (fromStyleAlertIcon && !featureGroup.confirmedChange) {\r\n return notMatchingFeatures\r\n }\r\n\r\n const currentFeatureName = lookFeature.getSplittedFeatureName();\r\n // console.log(\"currentFeatureName\", currentFeatureName);\r\n const wallsPartIds = [\"left_wall\", \"front_wall\", \"right_wall\"];\r\n if (wallsPartIds.includes(lookFeature.partId)) {\r\n const layout = getCurrentLayout();\r\n wallsPartIds.forEach(wallPartId => {\r\n const wallGroup = layout.getFeatureGroupByPartId(wallPartId);\r\n if (wallGroup && wallGroup.activeFeature && (wallGroup.activeFeature.getSplittedFeatureName() !== currentFeatureName)) {\r\n // console.log(\"wallGroup.activeFeature.getSplittedFeatureName()\", wallGroup.activeFeature.getSplittedFeatureName());\r\n\r\n notMatchingFeatures.push(wallGroup.activeFeature);\r\n }\r\n })\r\n } else if (featureGroup.layerPositions && lookFeature.metaData.layerPosition) {\r\n Object.keys(featureGroup.layerPositions).forEach(position => {\r\n const feature = featureGroup.layerPositions[position];\r\n if (feature && (feature.dbFeature.id !== lookFeature.dbFeature.id)\r\n && (feature.getSplittedFeatureName() !== currentFeatureName)) {\r\n notMatchingFeatures.push(feature)\r\n }\r\n })\r\n }\r\n }\r\n return notMatchingFeatures\r\n}\r\n\r\n/**\r\n * Returns bool\r\n * @param featureGroup {object} featureGroup\r\n * @returns {boolean}\r\n */\r\nexport const getStyleAlertIsVisibleForGroup = (featureGroup) => {\r\n let alertIsVisible = false;\r\n if (featureGroup.layerPositions) {\r\n let names = [];\r\n Object.keys(featureGroup.layerPositions).forEach(position => {\r\n const feature = featureGroup.layerPositions[position];\r\n if (feature) {\r\n const featureName = feature.getSplittedFeatureName();\r\n names.push(featureName)\r\n }\r\n });\r\n alertIsVisible = Object.keys(featureGroup.layerPositions).some(position => {\r\n const feature = featureGroup.layerPositions[position];\r\n if (feature) {\r\n const featureName = feature.getSplittedFeatureName();\r\n return names.some(name => name !== featureName)\r\n }\r\n return false\r\n })\r\n }\r\n return alertIsVisible\r\n}\r\n\r\n/**\r\n * Returns array of not matched features partIds\r\n * @returns {array}\r\n */\r\nexport const getAllNotMatchingPartIds = () => {\r\n const layout = getCurrentLayout();\r\n const allFeatures = layout.getActiveFeatures(false);\r\n return allFeatures\r\n .filter(feature => getStyleAlertNotMatchingFeatures(feature.cartFeature).length)\r\n .map(feature => feature.partId);\r\n}\r\n\r\n/**\r\n * zooms canvas to default position\r\n * @param imageCanvas {object}\r\n * @param setCanvasScale {function}\r\n */\r\nexport const zoomCanvasOut = (imageCanvas, setCanvasScale) => {\r\n if (imageCanvas && imageCanvas.current && imageCanvas.current.pinchZoom) {\r\n imageCanvas.current.pinchZoom.zoomToCenter(null, 1);\r\n // removed as we don't see crown molding on unzoom, decided not to unzoom to floor\r\n // const scrollCheck = document.body.scrollHeight - document.body.clientHeight;\r\n // if (!scrollCheck || (scrollCheck > (document.documentElement.scrollTop + 1))) {\r\n // $(\"html, body\").animate({scrollTop: document.body.scrollHeight}, 1000);\r\n // }\r\n setCanvasScale(1);\r\n }\r\n}\r\n\r\n/**\r\n * creates all available rooms and room scenes\r\n * @param returnAllLayouts {boolean}\r\n * @returns objects {array}\r\n */\r\nexport const getRoomLayouts = (returnAllLayouts = false) => {\r\n const newLooks = [];\r\n const layout = getCurrentLayout();\r\n const layoutNames = Object.keys(layout.layoutNames).filter(key => key !== \"All\");\r\n const parents = layout.getFeatures();\r\n const isAsBathroom = getCurrentRoomType() === LOOK_ROOM_TYPES.as;\r\n parents.forEach(parent => {\r\n parent.relatedItems.forEach(relItem => {\r\n layoutNames.forEach(layoutName => {\r\n const features = relItem.featuresList[layoutName];\r\n for (let i = 0; i < features.length; i++) {\r\n const feature = features[i];\r\n const roomLayout = feature.dbFeature.metaData[\"RoomLayout\"];\r\n const roomScene = feature.dbFeature.metaData[\"RoomScene\"];\r\n if (document.kvConfig.toolVersion === 4) {\r\n if (feature.dbFeature.s3Bindings && Array.isArray(roomLayout) && !newLooks.some(look => look.lookLayout === layoutName)) {\r\n newLooks.push({\r\n lookLayout: layoutName,\r\n lookScene: \"1\",\r\n })\r\n }\r\n } else if (feature.dbFeature.s3Bindings && Array.isArray(roomLayout) && Array.isArray(roomScene) && roomLayout.length && roomScene.length) {\r\n if (!newLooks.some(look => (look.lookLayout === roomLayout[0]) && (look.lookScene === roomScene[0]))\r\n && (!isAsBathroom || (roomScene[0] === \"1\"))) {\r\n newLooks.push({\r\n lookLayout: roomLayout[0],\r\n lookScene: roomScene[0],\r\n })\r\n }\r\n }\r\n }\r\n })\r\n })\r\n });\r\n console.log(\"newLooks\", newLooks);\r\n if (returnAllLayouts || (document.kvConfig.toolVersion === 4) || (\r\n document.kvConfig.userId === 140000\r\n || document.kvConfig.userId === 140001\r\n || window.location.href.includes(\"quote_bathroom_2022\")\r\n || window.location.href.includes(\"qc_main_bathroom_set_2022\"))) {\r\n return newLooks\r\n }\r\n const currentName = layout.getCurrentLayoutName();\r\n // if (getCurrentRoomType() === LOOK_ROOM_TYPES.as) {\r\n // return newLooks\r\n // }\r\n return newLooks.filter(look => look.lookLayout === currentName)\r\n}\r\n\r\n/**\r\n * parses passed URL, and returns look ID, look category and sku\r\n * @param checkURL {string}\r\n * @returns parsedUrl {object}\r\n */\r\nexport const getParsedLookUrl = (checkURL = window.location.href) => {\r\n const regexForRoomPreset = /\\/look(.*?)$/;\r\n let lookIdFromUrl = checkURL.includes(\"/look\") ? checkURL.match(regexForRoomPreset)[1] : null;\r\n\r\n if (!lookIdFromUrl) {\r\n return {}\r\n }\r\n\r\n let featureGroupFromUrl = \"\";\r\n let skuFromUrl = \"\";\r\n\r\n let splittedLookPath = lookIdFromUrl.split(\"/\");\r\n if (lookIdFromUrl && splittedLookPath.length) {\r\n lookIdFromUrl = +splittedLookPath[0].replace(\"-\", \"\");\r\n featureGroupFromUrl = splittedLookPath[2] ? splittedLookPath[1] : null;\r\n skuFromUrl = splittedLookPath[2] || splittedLookPath[1];\r\n }\r\n // console.log(\"{lookIdFromUrl, featureGroupFromUrl, skuFromUrl}\", {lookIdFromUrl, featureGroupFromUrl, skuFromUrl});\r\n\r\n return {lookIdFromUrl, featureGroupFromUrl, skuFromUrl}\r\n}\r\n\r\n/**\r\n * compares currect and common coords - gives max & min values\r\n * @param currentCoords {object}\r\n * @param commonCoords {object}\r\n * @returns {object}\r\n */\r\nexport const compareCoords = (currentCoords, commonCoords) => {\r\n if (currentCoords) {\r\n [\"min_x\",\"min_y\",].forEach(coordProp => {\r\n if (!commonCoords[coordProp] || (commonCoords[coordProp] > currentCoords[coordProp])) {\r\n commonCoords[coordProp] = currentCoords[coordProp];\r\n }\r\n });\r\n [\"max_x\", \"max_y\"].forEach(coordProp => {\r\n if (!commonCoords[coordProp] || (commonCoords[coordProp] < currentCoords[coordProp])) {\r\n commonCoords[coordProp] = currentCoords[coordProp];\r\n }\r\n });\r\n }\r\n return commonCoords\r\n}\r\n\r\n/**\r\n * compares currect and common coords - gives max & min values\r\n * @param feature {featureInterface}\r\n * @param isWizard {boolean}\r\n * @returns {object}\r\n */\r\nexport const getFeatureCoords = (feature, isWizard = false) => {\r\n if (document.kvConfig.visualizerType === \"kvScene\"\r\n && feature.metaData[\"RoomLayout\"] && feature.metaData[\"RoomLayout\"].includes('Layout1')\r\n && feature.metaData[\"RoomScene\"] && feature.metaData[\"RoomScene\"].includes('1')) {\r\n if ((feature.partId === \"top_cabinet\" || feature.partId === \"bottom_cabinet\")) {\r\n return feature.metaData[\"Coords\"]\r\n ? Object.assign({}, feature.metaData[\"Coords\"], {max_x: 0.2}) // do not zoom to right part of it\r\n : {min_x: 0, min_y: 0, max_x: 0.2, max_y: 0.38}\r\n } else if (feature.partId === \"crown_molding\") {\r\n return isWizard\r\n ? {min_x: 0.5, min_y: 0, max_x: 0.7, max_y: 0.1}\r\n : {min_x: 0.4, min_y: 0, max_x: 0.6, max_y: 0.1} // do not zoom to left part of it\r\n }\r\n\r\n }\r\n if (document.kvConfig.visualizerType === \"bvLook\" && feature.metaData[\"Coords\"]) {\r\n\r\n if (feature.partId === \"shower_wall\") {\r\n if (feature.metaData[\"RoomLayout\"] && feature.metaData[\"RoomLayout\"].includes('Layout18')) {\r\n return Object.assign({}, feature.metaData[\"Coords\"], {max_x: feature.metaData[\"Coords\"].max_x / 1.8})\r\n }\r\n }\r\n }\r\n return feature.metaData[\"Coords\"]\r\n}\r\n\r\n/**\r\n * parses passed URL, and returns look ID, look category and sku\r\n * @param featureGroup {object}\r\n * @param clickedFeature {object}\r\n * @param canvasElement {$ElementType} canvas\r\n * @param layerPosition {string}\r\n * @returns parsedUrl {object}\r\n */\r\nexport const getCommonCoords = (featureGroup, clickedFeature = null, canvasElement = null, layerPosition = \"\") => {\r\n\r\n const layout = getCurrentLayout();\r\n let zoomFeatureGroup;\r\n switch (featureGroup.partId) {\r\n case \"edge_profile\":\r\n zoomFeatureGroup = layout.getFeatureGroupByPartId(\"countertop\") || featureGroup;\r\n break;\r\n case \"center_island_edge\":\r\n zoomFeatureGroup = layout.getFeatureGroupByPartId(\"center_island_countertop\") || featureGroup;\r\n break;\r\n default:\r\n zoomFeatureGroup = featureGroup\r\n break;\r\n }\r\n\r\n let commonCoords = clickedFeature ? clickedFeature.metaData.Coords || {} : {};\r\n if (!clickedFeature && layerPosition) {\r\n clickedFeature = zoomFeatureGroup.getMatchingPositionFeature(layerPosition);\r\n }\r\n\r\n const navItems = layout.designNavigationItems({part: zoomFeatureGroup}, {}, \"\", clickedFeature, true);\r\n\r\n for (let i = 0; i < navItems.length; i++) {\r\n const currentFeature = navItems[i].part;\r\n let currentCoords = getCropCoordsCenter(currentFeature, canvasElement);\r\n commonCoords = compareCoords(currentCoords, commonCoords);\r\n }\r\n if ((getCurrentRoomType() === LOOK_ROOM_TYPES.as) && [\"front_wall\", \"right_wall\"].some(partId => zoomFeatureGroup.partId === partId)) {\r\n commonCoords.min_x = 0.8 // because of the reflection in mirror, it sets min_x to 0.1, so the menu is not scrolling on open\r\n }\r\n return commonCoords\r\n}\r\n\r\n/**\r\n * toggles array val\r\n * @param array {array}\r\n * @param value {any}\r\n * @returns array {array}\r\n */\r\nexport const toggleArrayValue = (array, value) => {\r\n let newArray = [...array];\r\n let index = newArray.indexOf(value);\r\n (index >= 0) ? newArray.splice(index, 1) : newArray.push(value);\r\n return newArray;\r\n};\r\n\r\n/**\r\n * Checks if it is needed to show a context menu\r\n * @param partId {string}\r\n * @param layerPosition {string}\r\n * @param fabricatorData {object}\r\n * @returns object\r\n */\r\nexport const checkForContextMenuCommon = (partId, layerPosition, fabricatorData) => {\r\n const returnObject = {\r\n allButtons: [], // {partId: \"\", translateId: \"\", isWizard: true, wizardId: sting|number, hasSubMenu: false}\r\n showButtons: [] // {partId: \"\", translateId: \"\", isWizard: true, wizardId: sting|number, hasSubMenu: false}\r\n }\r\n if (!partId) {\r\n return returnObject\r\n }\r\n const isBathroom = getCommonVisualizerType() === \"bathroom\";\r\n if (isBathroom && (fabricatorData && fabricatorData.isEncore)) {\r\n return returnObject\r\n }\r\n const allContextMenus = isBathroom ? ALL_CONTEXT_MENU : ALL_CONTEXT_MENU_KITCHEN;\r\n if (!allContextMenus.includes(partId)) {\r\n return returnObject\r\n }\r\n // if (imageCanvas.current && imageCanvas.current.setHoveredLayer) {\r\n // imageCanvas.current.renderGreenLayerByZindex(hoveredLayer.zIndex);\r\n\r\n let whereToCheck = isBathroom\r\n ? [CONTEXT_MENU_VANITY_BUTTONS, CONTEXT_MENU_BATHTUB_BUTTONS, CONTEXT_MENU_SPLIT_WALL, CONTEXT_MENU_SHOWER_ALL,\r\n CONTEXT_MENU_SHOWER_OTHER]\r\n : [CONTEXT_MENU_KITCHEN_CENTER_ISLAND, CONTEXT_MENU_KITCHEN_COUNTERTOPS];\r\n\r\n if (isBathroom && IS_QKB_UI) {\r\n whereToCheck.push(CONTEXT_MENU_SHOWER_ACCESSORIES);\r\n }\r\n\r\n let checkArray = whereToCheck.find(contextMenuArray => contextMenuArray.includes(partId)) || [];\r\n\r\n if (!checkArray.length) {\r\n return returnObject\r\n }\r\n\r\n const layout = getCurrentLayout();\r\n checkArray.forEach(checkPartId => {\r\n if (checkPartId === \"vanity_legs\" && layout.parts[\"Vanity\"] && layout.parts[\"Vanity\"].vanity_type !== VANITY_TYPES.vanity_cabinet) {\r\n return\r\n } else if (document.kvConfig.visualizerType === \"kvScene\" && checkPartId === \"center_island_edge\" && layout.type === 3) {\r\n return\r\n }\r\n if (layout.disabledClickablePartIds.includes(checkPartId) || hardCodelyRemovedClicking(checkPartId, layout)) {\r\n return;\r\n }\r\n const featureGroup = layout.getFeatureGroupByPartId(checkPartId);\r\n\r\n if (!isBathroom) {\r\n if (featureGroup && featureGroup.features.length > 0) {\r\n returnObject.allButtons.push({\r\n partId: featureGroup.partId,\r\n translateId: featureGroup.translateId,\r\n });\r\n }\r\n return;\r\n }\r\n\r\n const forFeature = featureGroup && layerPosition && featureGroup.layerPositions && featureGroup.layerPositions[layerPosition]\r\n ? featureGroup.layerPositions[layerPosition]\r\n : null;\r\n const withQuotingToolFeatures = layout.partIdExistInQtCategory(checkPartId);\r\n if (featureGroup && layout.hasNavItemsLength({part: featureGroup}, {}, \"\", forFeature, withQuotingToolFeatures)\r\n && ((featureGroup.partId !== \"vanity_countertop\") || featureGroup.activeFeature)) {\r\n returnObject.allButtons.push({\r\n partId: featureGroup.partId,\r\n translateId: featureGroup.translateId,\r\n });\r\n }\r\n });\r\n\r\n if (!returnObject.allButtons.length) {\r\n return returnObject\r\n }\r\n\r\n // wizard item check\r\n const {wizardState, bathroomVisualizerState, fabricatorState} = store.getState();\r\n const {wizardList, wizardIsActive} = wizardState;\r\n const {activePreset} = bathroomVisualizerState;\r\n\r\n returnObject.showButtons = returnObject.allButtons.sort((a) => partId === a.partId ? -1 : 1);\r\n\r\n const activeVanityType = layout.parts[\"Vanity\"] && layout.parts[\"Vanity\"].vanity_type ? layout.parts[\"Vanity\"].vanity_type : VANITY_TYPES.vanity_cabinet;\r\n const isVanity = isBathroom && CONTEXT_MENU_VANITY_BUTTONS.includes(partId);\r\n const isShower = isBathroom && (CONTEXT_MENU_SHOWER_ALL.includes(partId) || CONTEXT_MENU_SHOWER_OTHER.includes(partId));\r\n const isCenterIsland = !isBathroom && CONTEXT_MENU_KITCHEN_CENTER_ISLAND.includes(partId);\r\n let existingWizardItem = null;\r\n\r\n if (isVanity && (getCurrentRoomType(layout) === LOOK_ROOM_TYPES.as)) {\r\n returnObject.showButtons = returnObject.allButtons.filter(button => {\r\n return !CONTEXT_MENU_VANITY_ONLY.includes(button.partId) || CONTEXT_MENU_VANITY_ONLY.includes(button.partId) && button.partId === partId\r\n });\r\n if (!returnObject.showButtons.some(testBtn => CONTEXT_MENU_VANITY_ONLY.includes(testBtn.partId))) {\r\n returnObject.showButtons.push({\r\n partId: activeVanityType,\r\n translateId: activeVanityType === \"vanity_cabinet\" ? \"visualizer.bathroom.vanity.vanity\" : \"visualizer.bathroom.vanity.\" + activeVanityType,\r\n hasSubMenu: true,\r\n });\r\n }\r\n if (!IS_QKB_UI) {\r\n const sinkIndex = returnObject.showButtons.findIndex(button => button.partId === \"vanity_sink\");\r\n if (sinkIndex > -1) {\r\n const sinkParent = layout.getFeatureGroupByPartId(\"vanity_sink\");\r\n const isPedestal = sinkParent.activeFeature && sinkParent.activeFeature.metaData[\"MountType\"] && sinkParent.activeFeature.metaData[\"MountType\"].includes(\"ST\");\r\n returnObject.showButtons.splice(isPedestal ? sinkIndex : sinkIndex + 1, 0, {\r\n partId: \"vanity_pedestal_sink\",\r\n translateId: \"visualizer.bathroom.vanity.vanity_pedestal_sink\",\r\n });\r\n }\r\n }\r\n const backsplashIndex = returnObject.showButtons.findIndex(button => button.partId === \"vanity_backsplash\");\r\n if (backsplashIndex > -1) {\r\n const backsplashParent = layout.getFeatureGroupByPartId(\"vanity_backsplash\");\r\n // console.log(\"backsplashParent\", backsplashParent);\r\n if (backsplashParent && backsplashParent.hideLayerCondition()) {\r\n returnObject.showButtons.splice(backsplashIndex, 1);\r\n }\r\n }\r\n\r\n if (Array.isArray(wizardList) && wizardList.length && (!IS_QKB_UI || wizardIsActive)) {\r\n existingWizardItem = getExistingWizardForGroups(CONTEXT_MENU_VANITY_ONLY, wizardList, activePreset);\r\n if (existingWizardItem) {\r\n const vanityButtonIndex = returnObject.showButtons.findIndex(button => CONTEXT_MENU_VANITY_ONLY.includes(button.partId));\r\n if (vanityButtonIndex > -1) {\r\n const vanityWizardButton = {\r\n partId: \"vanity_wizard-\" + existingWizardItem.id,\r\n translateId: activeVanityType === \"vanity_cabinet\" ? \"visualizer.bathroom.vanity.vanity\" : \"visualizer.bathroom.vanity.\" + activeVanityType,\r\n isWizard: true,\r\n wizardId: existingWizardItem.id,\r\n };\r\n fabricatorState.isAmericanStandard\r\n ? returnObject.showButtons.splice(vanityButtonIndex, 1, vanityWizardButton)\r\n : returnObject.showButtons.unshift(vanityWizardButton)\r\n }\r\n if (fabricatorState.isAmericanStandard) {\r\n returnObject.showButtons = returnObject.showButtons.filter(button => !button.partId.includes(\"sink\")) //LX-791\r\n }\r\n }\r\n }\r\n\r\n } else if (isShower && Array.isArray(wizardList) && wizardList.length) {\r\n existingWizardItem = getExistingWizardForGroups([...CONTEXT_MENU_SHOWER_ALL, ...CONTEXT_MENU_SHOWER_OTHER], wizardList, activePreset);\r\n if (existingWizardItem) {\r\n const showerWizardButton = {\r\n partId: \"shower_wizard-\" + existingWizardItem.id,\r\n translateId: \"visualizer.bathroom.shower.shower\",\r\n isWizard: true,\r\n wizardId: existingWizardItem.id,\r\n };\r\n if (fabricatorState.isLixil) {\r\n returnObject.showButtons = [showerWizardButton]\r\n } else {\r\n returnObject.showButtons.push(showerWizardButton)\r\n }\r\n }\r\n } else if (isCenterIsland && Array.isArray(wizardList) && wizardList.length) {\r\n existingWizardItem = getExistingWizardForGroups(CONTEXT_MENU_KITCHEN_CENTER_ISLAND, wizardList, activePreset);\r\n if (existingWizardItem) {\r\n const counteropWizardButton = {\r\n partId: \"counterop_wizard-\" + existingWizardItem.id,\r\n translateId: \"wizard.contextMenu.wizardBuild\",\r\n isWizard: true,\r\n wizardId: existingWizardItem.id,\r\n };\r\n returnObject.showButtons.push(counteropWizardButton)\r\n }\r\n }\r\n\r\n if (isBathroom && isShower && IS_QKB_UI && CONTEXT_MENU_SHOWER_ACCESSORIES.some(accPartId => {\r\n const accFg = layout.getFeatureGroupByPartId(accPartId);\r\n return accFg && layout.hasNavItemsLength({part: accFg})\r\n })) {\r\n const accessoriesButton = {\r\n partId: \"accessories\",\r\n translateId: \"visualizer.bathroom.accessories\",\r\n hasSubMenu: true,\r\n };\r\n returnObject.showButtons.push(accessoriesButton);\r\n }\r\n\r\n if (IS_QKB_UI && document.kvConfig.visualizerOnly) {\r\n // remove wizard, as we can't jump to the quotingtool\r\n returnObject.showButtons = returnObject.showButtons.filter(button => !button.isWizard)\r\n } else if (existingWizardItem && existingWizardItem.hideContext) {\r\n returnObject.showButtons = returnObject.showButtons.filter(button => button.isWizard) // wizard only\r\n }\r\n\r\n return returnObject;\r\n};\r\n\r\nexport const getOptionStyles = (filterValue) => { // we have the logic with additionalImages in the FeatureWizardBody component\r\n let styles = {};\r\n let thumbnail = (Array.isArray(filterValue.additionalImages) && filterValue.additionalImages.length)\r\n ? filterValue.additionalImages[0].imageUrl\r\n : s3FilterImagePath(filterValue.icon);\r\n if (thumbnail) {\r\n styles.backgroundImage = \"url(\" + thumbnail + \")\";\r\n }\r\n if (!thumbnail) {\r\n styles.backgroundColor =\r\n filterValue.value && filterValue.value.includes(\"BLACK\")\r\n ? \"black\"\r\n : filterValue.value && filterValue.value.includes(\"BRONZE\")\r\n ? \"#3f270f\"\r\n : filterValue.value && filterValue.value.includes(\"NICKEL\")\r\n ? \"#727472\"\r\n : filterValue.value;\r\n }\r\n return styles\r\n};\r\n","import $ from \"jquery\";\r\nimport 'hammerjs';\r\nimport sqftConfig from \"./sqftConfig\";\r\nimport sqftCursorManager from \"./sqftCursorManager\";\r\n\r\nconst sqftEventManager = {\r\n renderEvents: [],\r\n renderEventsSlab: [],\r\n priorities: {\r\n OVERALL: -100,\r\n SLAB_RIGHT_PART_CONTENT: -40,\r\n SLAB_RIGHT_PART_WORKSPACE: -30,\r\n BOX_POINT: -5,\r\n BOX: -1,\r\n OVERLAY: 0,\r\n IMAGE_LINE: 1,\r\n IMAGE: 3,\r\n POINT: 5,\r\n SEGMENT_MEASUREMENTS: 7,\r\n SEGMENT: 10,\r\n SHAPE_LABEL: 12,\r\n SHAPE_UPPER: 14.5,\r\n SHAPE: 15,\r\n SHAPE_SLAB_PLACEHOLDER: 15.5,\r\n WALL: 18,\r\n SLAB_IMAGE: 20,\r\n SLAB_LEFT_PART: 25,\r\n WORKSPACE: 100,\r\n },\r\n events: {\r\n MOUSE_MOVE: \"mousemove\",\r\n MOUSE_DOWN: \"mousedown\",\r\n MOUSE_UP: \"mouseup\",\r\n MOUSE_WHEEL: \"mousewheel\",\r\n WHEEL: \"wheel\",\r\n ON_MOUSE_WHEEL: \"onmousewheel\",\r\n RESIZE: \"resize\",\r\n TOUCH_START: \"touchstart\",\r\n TOUCH_END: \"touchend\",\r\n TOUCH_MOVE: \"touchmove\",\r\n TOUCH_CANCEL: \"touchcancel\",\r\n MOUSE_LEAVE: \"mouseleave\",\r\n CLICK: \"click\",\r\n DBLCLICK: \"dblclick\",\r\n CONTEXTMENU: \"contextmenu\",\r\n KEYDOWN: \"keydown\",\r\n RENDER: \"render\",\r\n DRAG_OVER: \"dragover\",\r\n DROP: \"drop\"\r\n },\r\n keyCode: {\r\n ENTER: \"Enter\",\r\n NumpadEnter: \"NumpadEnter\"\r\n },\r\n self: this,\r\n activeEvents: [],\r\n canvas: null,\r\n $canvas: null,\r\n canvasOffset: null,\r\n ctx: null,\r\n state: {\r\n processing: false\r\n },\r\n eventQueue: [],\r\n G_events: { //events to tie into the Quoting Tool's Global Events for Idle timeout\r\n userIdleStartTimer: 'userIdleStartTimer',\r\n userIdleWarning: 'userIdleWarning',\r\n userIdleTimeOut: 'userIdleTimeOut',\r\n userIdleStopTimer: 'userIdleStopTimer',\r\n userIdleGoHome: 'userIdleGoHome',\r\n userIdleGoHomeCountdown: 'userIdleGoHomeCountdown'\r\n },\r\n hammer: null,\r\n hammerMC: null,\r\n LastKnownMousePos: null,\r\n //currentCursorOwner: null,\r\n //currentCursor: null,\r\n //noCursorStealing: false,\r\n zoomLock: null,\r\n resizeHandler: null,\r\n keydownHandler: null,\r\n\r\n getCtx: function() {\r\n return this.ctx\r\n },\r\n eventSort: function (a, b) {\r\n if (a.priority < b.priority)\r\n return -1;\r\n if (a.priority > b.priority)\r\n return 1;\r\n return 0;\r\n },\r\n getMousePos: function (e) {\r\n if (!e) {\r\n return this.LastKnownMousePos;\r\n }\r\n this.LastKnownMousePos = {\r\n x: e.pageX - this.canvasOffset.left,\r\n y: e.pageY - this.canvasOffset.top\r\n };\r\n return this.LastKnownMousePos;\r\n },\r\n getTouchPos: function (e) {\r\n var touch = e.changedTouches[0];\r\n if (!touch) {\r\n return null;\r\n }\r\n this.LastKnownMousePos = {\r\n x: touch.pageX - this.canvasOffset.left,\r\n y: touch.pageY - this.canvasOffset.top\r\n };\r\n return this.LastKnownMousePos;\r\n },\r\n setCanvas: function(value) {\r\n this.canvas = value;\r\n this.$canvas = $(value);\r\n this.ctx = this.canvas.getContext('2d');\r\n sqftCursorManager.init(this.canvas);\r\n },\r\n onMouseMove: function(mousepos, e) {\r\n let mousemove = this.activeEvents[this.events.MOUSE_MOVE] || [];\r\n e.terminate = false;\r\n for (var i = 0; i < mousemove.length; i++) {\r\n if (mousemove[i].event.call(mousemove[i].sender, mousepos, e)) {\r\n e.terminate = true;\r\n }\r\n }\r\n },\r\n onMouseUp: function(mousepos, e) {\r\n var mouseup = this.activeEvents[this.events.MOUSE_UP] || [];\r\n for (var i = 0; i < mouseup.length; i++) {\r\n if (mouseup[i].event.call(mouseup[i].sender, mousepos, e)) {\r\n break;\r\n }\r\n }\r\n },\r\n onMouseDown: function(mousepos, e, callback) {\r\n var mousedown = this.activeEvents[this.events.MOUSE_DOWN] || [];\r\n for (var i = 0; i < mousedown.length; i++) {\r\n if (mousedown[i].event.call(mousedown[i].sender, mousepos, e)) {\r\n break;\r\n }\r\n }\r\n if (callback) {\r\n callback(mousepos, e);\r\n }\r\n },\r\n onMouseLeave: function(mousepos, e, callback) {\r\n var mouseleave = this.activeEvents[this.events.MOUSE_LEAVE] || [];\r\n for (var i = 0; i < mouseleave.length; i++) {\r\n if (mouseleave[i].event.call(mouseleave[i].sender, mousepos, e)) {\r\n break;\r\n }\r\n }\r\n if (callback) {\r\n callback(mousepos, e);\r\n }\r\n },\r\n onKeyDown: function (code, e, callback) {\r\n let mouseleave = this.activeEvents[this.events.KEYDOWN] || [];\r\n for (let i = 0; i < mouseleave.length; i++) {\r\n if (mouseleave[i].event.call(mouseleave[i].sender, code, e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n break;\r\n }\r\n }\r\n if (callback) {\r\n callback(code, e);\r\n }\r\n },\r\n onDblClick: function(mousepos, e, callback) {\r\n let mousedown = this.activeEvents[this.events.DBLCLICK] || [];\r\n for (let i = 0; i < mousedown.length; i++) {\r\n if (mousedown[i].event.call(mousedown[i].sender, mousepos, e)) {\r\n break;\r\n }\r\n }\r\n if (callback) {\r\n callback(mousepos, e);\r\n }\r\n },\r\n onWheel: function(mousePos, e, callback) {\r\n let wheel = this.activeEvents[this.events.WHEEL] || [];\r\n for (let i = 0; i < wheel.length; i++) {\r\n if (wheel[i].event.call(wheel[i].sender, mousePos, e)) {\r\n break;\r\n }\r\n }\r\n if (callback) {\r\n callback(mousePos, e);\r\n }\r\n },\r\n onResize: function(e) {\r\n let resize = this.activeEvents[this.events.RESIZE] || [];\r\n for (let i = 0; i < resize.length; i++) {\r\n if (resize[i].event.call(resize[i].sender, e)) {\r\n break;\r\n }\r\n }\r\n this.updateOffset(e);\r\n },\r\n onContextmenu: function(mousePos, e, callback) {\r\n let contextmenu = this.activeEvents[this.events.CONTEXTMENU] || [];\r\n for (let i = 0; i < contextmenu.length; i++) {\r\n if (contextmenu[i].event.call(contextmenu[i].sender, mousePos, e)) {\r\n break;\r\n }\r\n }\r\n if (callback) {\r\n callback(mousePos, e);\r\n }\r\n },\r\n onDrop: function(mousePos, e, callback) {\r\n let dragEvents = this.activeEvents[this.events.DROP] || [];\r\n for (let i = 0; i < dragEvents.length; i++) {\r\n if (dragEvents[i].event.call(dragEvents[i].sender, mousePos, e)) {\r\n break;\r\n }\r\n }\r\n if (callback) {\r\n callback(mousePos, e);\r\n }\r\n },\r\n onDragOver: function(mousePos, e, callback) {\r\n let dragOverEvents = this.activeEvents[this.events.DRAG_OVER] || [];\r\n for (let i = 0; i < dragOverEvents.length; i++) {\r\n if (dragOverEvents[i].event.call(dragOverEvents[i].sender, mousePos, e)) {\r\n break;\r\n }\r\n }\r\n if (callback) {\r\n callback(mousePos, e);\r\n }\r\n },\r\n onTouchCancel: function() {\r\n onMouseUp(this.LastKnownMousePos, {});\r\n this.LastKnownMousePos = {x: 0, y: 0};\r\n onMouseMove(this.LastKnownMousePos, {});\r\n },\r\n onRender: function() {\r\n var render = this.activeEvents[this.events.RENDER] || [];\r\n var triangles = [];\r\n for (var i = render.length - 1; i >= 0; i-- ) {\r\n if (render[i] === undefined) {\r\n continue\r\n }\r\n var result = render[i].event.call(render[i].sender, this.ctx);\r\n if (render[i] !== undefined && render[i].priority === this.priorities.SHAPE) {\r\n triangles.push(result);\r\n }\r\n }\r\n return triangles;\r\n },\r\n updateOffset: function() {\r\n this.canvasOffset = $(this.canvas).offset();\r\n },\r\n trigger: function(event, e) {\r\n let response = null;\r\n switch(event) {\r\n case this.events.MOUSE_MOVE:\r\n case this.events.TOUCH_MOVE:\r\n response = this.onMouseMove(this.getMousePos(e), e);\r\n break;\r\n case this.events.MOUSE_WHEEL:\r\n case this.events.WHEEL:\r\n case this.events.ON_MOUSE_WHEEL:\r\n console.log(\"WHEEL\");\r\n break;\r\n case this.events.MOUSE_UP:\r\n case this.events.TOUCH_END:\r\n response = this.onMouseUp(this.getMousePos(e), e);\r\n break;\r\n case this.events.MOUSE_DOWN:\r\n case this.events.TOUCH_START:\r\n response = this.onMouseDown(this.getMousePos(e), e);\r\n break;\r\n case this.events.TOUCH_CANCEL:\r\n response = this.onTouchCancel();\r\n break;\r\n case this.events.RESIZE:\r\n response = this.onResize(e);\r\n break;\r\n case this.MOUSE_LEAVE:\r\n response = this.onMouseLeave(e);\r\n break;\r\n case this.CONTEXTMENU:\r\n response = this.onContextmenu(this.getMousePos(e), e);\r\n break;\r\n case this.DBLCLICK:\r\n response = this.onDblClick(this.getMousePos(e), e);\r\n break;\r\n case this.events.RENDER:\r\n response = this.onRender();\r\n break;\r\n }\r\n return response;\r\n },\r\n pinchToZoom: function(event) {\r\n let stepSize = 0.04;\r\n let self = this;\r\n if (!this.zoomLock) {\r\n this.zoomLock = window.setTimeout(function() {\r\n self.zoomLock = null;\r\n }, 10);\r\n let scale = sqftConfig.scale,\r\n mod = 0;\r\n if (event.additionalEvent === \"pinchin\") {\r\n mod = -1;\r\n } else if (event.additionalEvent === \"pinchout\") {\r\n mod = 1;\r\n }\r\n if (mod !== 0) {\r\n scale += (mod * stepSize);\r\n if (scale < 1) {\r\n scale = 1;\r\n } else if (scale > 10) {\r\n scale = 10;\r\n }\r\n sqftConfig.scale = scale;\r\n }\r\n }\r\n },\r\n init: function(canvas) {\r\n if (this.canvas && this.canvas.isWithEventManager) {\r\n return;\r\n }\r\n let self = this;\r\n this.setCanvas(canvas);\r\n if (!this.hammerMC) {\r\n this.hammerMC = new Hammer.Manager(canvas);\r\n this.hammerMC.add(new Hammer.Pinch({enable: true}));\r\n this.hammerMC.on(\"pinch\", this.pinchToZoom);\r\n }\r\n\r\n if (!this.hammer) {\r\n this.hammer = new Hammer(canvas);\r\n this.hammer.on(\"doubletap\", (e) => {\r\n if (!e.handled) {\r\n this.eventQueue.push([this.events.DBLCLICK, this.getMousePos(e), e]);\r\n this.processEventQueue();\r\n }\r\n });\r\n }\r\n\r\n this.resizeHandler = this.onResize.bind(this);\r\n window.addEventListener(this.events.RESIZE, this.resizeHandler);\r\n\r\n this.keydownHandler = function (e) {\r\n // e.preventDefault();\r\n // e.stopPropagation();\r\n if (event.isComposing || event.keyCode === 229) {\r\n return;\r\n }\r\n\r\n //console.log(\"code\", e.code);\r\n //console.log(\"keyCode\", e.keyCode);\r\n this.eventQueue.push([this.events.KEYDOWN, e.code, e]);\r\n this.processEventQueue();\r\n }.bind(this);\r\n window.addEventListener(this.events.KEYDOWN, this.keydownHandler);\r\n\r\n canvas.addEventListener(this.events.MOUSE_MOVE, function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (this.eventQueue.length > 2 &&\r\n this.eventQueue[this.eventQueue.length - 1][0] === self.events.MOUSE_MOVE &&\r\n this.eventQueue[this.eventQueue.length - 2][0] === self.events.MOUSE_MOVE\r\n ) {\r\n this.eventQueue[this.eventQueue.length - 1] = [self.events.MOUSE_MOVE, this.getMousePos(e), e];\r\n } else {\r\n this.eventQueue.push([self.events.MOUSE_MOVE, this.getMousePos(e), e]);\r\n }\r\n this.processEventQueue();\r\n }.bind(this));\r\n canvas.addEventListener('dragover', function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.eventQueue.push([self.events.DRAG_OVER, this.getMousePos(e), e]);\r\n this.processEventQueue();\r\n }.bind(this));\r\n canvas.addEventListener('drop', function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.eventQueue.push([self.events.DROP, this.getMousePos(e), e]);\r\n this.processEventQueue();\r\n }.bind(this));\r\n canvas.addEventListener(self.events.MOUSE_DOWN, function(e){\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (!e.handled) {\r\n this.eventQueue.push([self.events.MOUSE_DOWN, this.getMousePos(e), e]);\r\n this.processEventQueue();\r\n }\r\n }.bind(this));\r\n canvas.addEventListener(this.events.MOUSE_UP, function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (!e.handled) {\r\n this.eventQueue.push([self.events.MOUSE_UP, this.getMousePos(e), e]);\r\n this.processEventQueue();\r\n }\r\n }.bind(this));\r\n canvas.addEventListener(this.events.TOUCH_START, function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n e.handled = true;\r\n if (e.touches.length === 1) {\r\n let touchPos = self.getTouchPos(e);\r\n this.eventQueue.push([self.events.MOUSE_MOVE, touchPos, e]);\r\n this.eventQueue.push([self.events.TOUCH_START, touchPos, e]);\r\n this.processEventQueue();\r\n }\r\n }.bind(this), { passive: false });\r\n canvas.addEventListener(this.events.TOUCH_END, function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n e.handled = true;\r\n this.eventQueue.push([self.events.TOUCH_END, this.getTouchPos(e), e]);\r\n this.processEventQueue();\r\n }.bind(this), { passive: false });\r\n canvas.addEventListener(this.events.TOUCH_CANCEL, function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.eventQueue.push([self.events.TOUCH_CANCEL, this.getTouchPos(e), e]);\r\n this.processEventQueue();\r\n }.bind(this), { passive: false });\r\n canvas.addEventListener(this.events.TOUCH_MOVE, function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (self.zoomLock || e.touches.length > 1) //do not move when multi-touch or zoom locked or if the finger-move jumps too far\r\n return;\r\n let touchPos = self.getTouchPos(e);\r\n if (self.eventQueue.length > 2 &&\r\n self.eventQueue[self.eventQueue.length - 1][0] === self.events.TOUCH_MOVE &&\r\n self.eventQueue[self.eventQueue.length - 2][0] === self.events.TOUCH_MOVE\r\n ) {\r\n self.eventQueue[self.eventQueue.length - 1] = [self.events.TOUCH_MOVE, self.getTouchPos(e), e];\r\n } else {\r\n self.eventQueue.push([self.events.TOUCH_MOVE, touchPos, e]);\r\n }\r\n self.processEventQueue();\r\n }.bind(this), { passive: false });\r\n canvas.addEventListener(this.events.MOUSE_LEAVE, function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.eventQueue.push([self.events.MOUSE_LEAVE, this.getMousePos(e), e]);\r\n this.processEventQueue();\r\n }.bind(this));\r\n canvas.addEventListener(this.events.DBLCLICK, function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (!e.handled) {\r\n this.eventQueue.push([self.events.DBLCLICK, this.getMousePos(e), e]);\r\n this.processEventQueue();\r\n }\r\n }.bind(this));\r\n canvas.addEventListener(this.events.WHEEL, function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (!e.handled) {\r\n this.eventQueue.push([self.events.WHEEL, this.getMousePos(e), e]);\r\n this.processEventQueue();\r\n }\r\n }.bind(this));\r\n canvas.addEventListener(this.events.CONTEXTMENU, function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (!e.handled) {\r\n this.eventQueue.push([self.events.CONTEXTMENU, this.getMousePos(e), e]);\r\n this.processEventQueue();\r\n }\r\n }.bind(this));\r\n this.updateOffset();\r\n this.resetCursor(null);\r\n this.canvas.isWithEventManager = true;\r\n },\r\n clearAll: function() {\r\n window.removeEventListener(this.events.RESIZE, this.resizeHandler);\r\n window.removeEventListener(this.events.KEYDOWN, this.keydownHandler);\r\n\r\n this.activeEvents = [];\r\n this.eventQueue = [];\r\n this.LastKnownMousePos = {\r\n x: -1,\r\n y: -1\r\n };\r\n },\r\n stealCursor: (override, revertBackAfterMouseUp) => {\r\n return sqftCursorManager.stealCursor(override, revertBackAfterMouseUp);\r\n },\r\n releaseStealLock: (owner) => {\r\n return sqftCursorManager.releaseStealLock(owner);\r\n },\r\n setCursor: (cursor, owner, noStealing) => {\r\n return sqftCursorManager.setCursor(cursor, owner, noStealing);\r\n },\r\n setCursorImage: (cursorImage, owner, noStealing) => {\r\n return sqftCursorManager.setCursorImage(cursorImage, owner, noStealing);\r\n },\r\n resetCursor: (owner) => {\r\n return sqftCursorManager.resetCursor(owner);\r\n },\r\n getCursor: () => {\r\n return sqftCursorManager.getCursor();\r\n },\r\n event: function(callback, sender, priority) {\r\n this.event = callback;\r\n this.sender = sender;\r\n this.priority = priority;\r\n },\r\n addEvent: function(event, callback, sender, priority) {\r\n var e = new this.event(callback, sender, priority);\r\n this.activeEvents[event] = this.activeEvents[event] || [];\r\n this.activeEvents[event].unshift(e);\r\n this.activeEvents[event].sort(this.eventSort);\r\n },\r\n removeEvent: function(sender, event) {\r\n let i;\r\n if (typeof(event) === 'undefined') {\r\n event = null;\r\n } else {\r\n event = event.toLowerCase();\r\n }\r\n if (event === null) {\r\n for (var key in this.activeEvents) {\r\n for (i = this.activeEvents[key].length -1; i >= 0; i--) {\r\n // lodash compare variant\r\n // if (_.isEqual(this.activeEvents[key][i].sender, sender)) {\r\n if (this.activeEvents[key][i].sender === sender) {\r\n this.activeEvents[key].splice(i, 1);\r\n }\r\n }\r\n }\r\n } else if (this.activeEvents[event] !== null) {\r\n for (i = this.activeEvents[event].length - 1; i >= 0; i--) {\r\n if (this.activeEvents[event][i].sender === sender) {\r\n this.activeEvents[event].splice(i, 1);\r\n }\r\n }\r\n }\r\n },\r\n removeStuckCursorEvents: function() {\r\n let mouseupEvents = this.activeEvents[this.events.MOUSE_UP] || [];\r\n for (const mouseupEvent of mouseupEvents) {\r\n const isCursorExist = mouseupEvent.sender.cursorImage || mouseupEvent.sender.cursor;\r\n if (isCursorExist && mouseupEvent.sender && mouseupEvent.sender.destroy) {\r\n mouseupEvent.sender.destroy(true, false);\r\n }\r\n }\r\n },\r\n processEventQueue: function() {\r\n if (!this.state.processing) {\r\n this.state.processing = true;\r\n let e;\r\n while( (e = this.eventQueue.shift()) ) {\r\n if (e[1] == null) {\r\n continue;\r\n }\r\n switch(e[0]) {\r\n case this.events.MOUSE_DOWN:\r\n case this.events.TOUCH_START:\r\n this.onMouseDown(e[1], e[2]);\r\n break;\r\n case this.events.MOUSE_MOVE:\r\n case this.events.TOUCH_MOVE:\r\n this.onMouseMove(e[1], e[2]);\r\n break;\r\n case this.events.MOUSE_UP:\r\n case this.events.TOUCH_END:\r\n this.onMouseUp(e[1], e[2]);\r\n break;\r\n case this.events.DBLCLICK:\r\n this.onDblClick(e[1], e[2]);\r\n break;\r\n case this.events.TOUCH_CANCEL:\r\n this.onTouchCancel();\r\n break;\r\n case this.events.MOUSE_LEAVE:\r\n this.onMouseLeave(e[1], e[2]);\r\n break;\r\n case this.events.RESIZE:\r\n this.onResize(e[1], e[2]);\r\n break;\r\n case this.events.MOUSE_WHEEL:\r\n case this.events.WHEEL:\r\n case this.events.ON_MOUSE_WHEEL:\r\n this.onWheel(e[1], e[2]);\r\n break;\r\n case this.events.KEYDOWN:\r\n this.onKeyDown(e[1], e[2]);\r\n break;\r\n case this.events.CONTEXTMENU:\r\n this.onContextmenu(e[1], e[2]);\r\n break;\r\n case this.events.DRAG_OVER:\r\n this.onDragOver(e[1], e[2]);\r\n break;\r\n case this.events.DROP:\r\n this.onDrop(e[1], e[2]);\r\n break;\r\n }\r\n }\r\n }\r\n this.state.processing = false;\r\n //window.resetIdleTimer(); //todo sqft-react is this needed\r\n }\r\n};\r\n\r\nexport default sqftEventManager\r\n","//********* SQFT *********//\r\nimport * as types from \"./actionTypes\";\r\n\r\nexport const enableSquareFootage = (isSquareFootageEnabled) => ({\r\n type: types.ENABLE_SQUARE_FOOTAGE,\r\n payload: {isSquareFootageEnabled}\r\n});\r\n\r\nexport const setSquareFootageGroup = (SQFTGroup) => ({\r\n type: types.SET_SQUARE_FOOTAGE_GROUP,\r\n payload: {SQFTGroup}\r\n});\r\n\r\nexport const setSQFTGroup = (SQFTGroup) => ({\r\n type: types.SET_SQUARE_FOOTAGE_GROUP,\r\n payload: {SQFTGroup}\r\n});\r\n\r\nexport const setSQFTViewMode = (SQFTViewMode) => ({\r\n type: types.SET_SQFT_VIEW_MODE,\r\n payload: {SQFTViewMode}\r\n});\r\n\r\nexport const loadSQFT = () => ({\r\n type: types.LOAD_SQFT,\r\n payload: {sqftLoaded: true}\r\n});\r\n\r\nexport const updateSQFT = (sqftUpdateType) => ({\r\n type: types.UPDATE_SQFT,\r\n payload: {sqftUpdateType}\r\n});\r\n\r\nexport const updateSQFTCalculations = (updateCalculations) => ({\r\n type: types.UPDATE_SQFT_CALCULATIONS,\r\n payload: {updateCalculations}\r\n});\r\n\r\nexport const setSquareFeet = (squareFeet) => ({\r\n type: types.SET_SQFT_SQUARE_FEET,\r\n payload: {squareFeet}\r\n});\r\n\r\nexport const toggleChangeLayoutPopup = (changeLayoutPopupOpened = false, layoutToApply = \"\", applyLayoutOnSqft = false) => ({\r\n type: types.TOGGLE_CHANGE_LAYOUT_POPUP,\r\n payload: {changeLayoutPopupOpened, layoutToApply, applyLayoutOnSqft}\r\n});\r\n\r\nexport const sendLayoutChangeOnSqft = (setNewLayoutOnSqft) => ({\r\n type: types.SET_NEW_LAYOUT_ON_SQFT,\r\n payload: {setNewLayoutOnSqft}\r\n});\r\n\r\nexport const setSqftMeasureUnit = (measureUnit) => ({\r\n type: types.SET_SQFT_MEASURE_UNIT,\r\n payload: {measureUnit}\r\n});\r\n\r\nexport const changeSqftFeaturesPopup = (sqftFeaturesPopup) => ({\r\n type: types.CHANGE_SQFT_FEATURES_POPUP,\r\n payload: {sqftFeaturesPopup}\r\n});\r\n\r\nexport const setSqftFromFeature = (sqftFromFeature) => ({\r\n type: types.SQT_SQFT_FROM_FEATURE,\r\n payload: {sqftFromFeature}\r\n});\r\n\r\nexport const setSqftCabinetsGlb = (cabinetsGlb) => ({\r\n type: types.SET_CABINETS_GLB,\r\n payload: {cabinetsGlb}\r\n});\r\n\r\nexport const setCabinetsARBlobUrl = (cabinetsARBlobUrl) => ({\r\n type: types.SET_CABINETS_AR_BLOB_URL,\r\n payload: {cabinetsARBlobUrl}\r\n});\r\n\r\nexport const setAPIErrorMessage = (apiErrorMessage) => ({\r\n type: types.SET_API_ERROR_MESSAGE,\r\n payload: {apiErrorMessage}\r\n});\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { showLoading, hideLoading } from 'react-redux-loading-bar';\r\nimport {FormattedMessage} from \"react-intl\";\r\nimport {useLocation} from \"react-router-dom\";\r\n\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\n\r\nimport LoadingBar from '../../lib/react-redux-loading-bar';\r\nimport store from '../../store';\r\nimport {toggleLoader} from \"../../actions/actionFunctions\";\r\nimport COLOR_THEMES, {COLORS} from \"../../colorThemes\";\r\nimport {IS_LIXIL_UI, IS_QKB_UI} from \"../../config\";\r\nimport {ROUTES} from \"../../routes\";\r\n\r\nconst LoaderView = (props) => {\r\n\r\n const {iframe, loaderTitle, loaderText, loaderOpened, lookOpened, loaderFullScreen, activeTheme,\r\n visualizersLoaded, lookOverlayOpened} = props;\r\n\r\n let location = useLocation();\r\n\r\n if (!loaderOpened\r\n || (IS_QKB_UI && location && (location.pathname === ROUTES.home || location.pathname === ROUTES.quoteDesign))) {\r\n return null // paint page faster\r\n }\r\n\r\n if (IS_LIXIL_UI) {\r\n const color = visualizersLoaded.length ? COLORS.white : COLOR_THEMES[activeTheme].active\r\n return (\r\n
\r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n // const {fabricatorData} = this.props;\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n

\r\n {/*{fabricatorData.received ?

: null}*/}\r\n {/*{fabricatorData.received ?

: null}*/}\r\n
\r\n
\r\n
\r\n );\r\n\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {activeTheme, visualizersLoaded} = store.serverState;\r\n const {loaderOpened, loaderTitle, loaderText, loaderFullScreen} = store.loaderState;\r\n const {lookOpened, lookOverlayOpened} = store.lookState;\r\n return {\r\n activeTheme,\r\n visualizersLoaded,\r\n loaderOpened,\r\n loaderTitle,\r\n loaderText,\r\n loaderFullScreen,\r\n lookOpened,\r\n lookOverlayOpened,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {})(LoaderView);\r\n\r\nexport function loaderEnable(loaderText = \"loader.defaultText\", loaderTitle = \"loader.defaultTitle\") {\r\n //null value is passed, and not defaulted with the above, so the below 2 lines handle if null or other falsey value is passed\r\n loaderText = loaderText || \"loader.defaultText\";\r\n loaderTitle = loaderTitle || \"loader.defaultTitle\";\r\n store.dispatch(showLoading());\r\n store.dispatch(toggleLoader(true, loaderText, loaderTitle));\r\n}\r\n\r\nexport function loaderDisable() {\r\n store.dispatch(hideLoading());\r\n store.dispatch(toggleLoader(false));\r\n}\r\n","export const LayoutType = {\r\n Small: 0,\r\n SmallWithPopout: 1,\r\n SmallWithPeninsula: 2,\r\n SmallWithIsland: 3,\r\n SmallWithPopoutWithPeninsula: 4,\r\n SmallWithPopoutWithIsland: 5,\r\n SmallWithPeninsulaWithIsland: 6,\r\n SmallWithPopoutWithPeninsulaWithIsland: 7,\r\n LShape: 8,\r\n LShapeWithPeninsula: 9,\r\n LShapeWithIsland: 10,\r\n LShapeWithPeninsulaWithIsland: 11,\r\n};\r\n\r\nexport const LayoutAbbreviation = {\r\n All: \"ALL\",\r\n Small: \"S\",\r\n SmallWithPopout: \"SP\",\r\n SmallWithPeninsula: \"SN\",\r\n SmallWithIsland: \"SI\",\r\n SmallWithPopoutWithPeninsula: \"SPN\",\r\n SmallWithPopoutWithIsland: \"SPI\",\r\n SmallWithPeninsulaWithIsland: \"SNI\",\r\n SmallWithPopoutWithPeninsulaWithIsland: \"SPNI\",\r\n LShape: \"L\",\r\n LShapeWithPeninsula: \"LN\",\r\n LShapeWithIsland: \"LI\",\r\n LShapeWithPeninsulaWithIsland: \"LNI\",\r\n};\r\n\r\nexport const LayoutAbbreviations = [\"S\",\"SP\",\"SN\",\"SI\",\"SPN\",\"SPI\",\"SNI\",\"SPNI\",\"L\",\"LN\",\"LI\",\"LNI\"];\r\nexport const LayoutAbbreviationsToRemove = [\"LSP\",\"LNI\",\"LI\",\"LN\",\"L\",\"SPNI\",\"SNI\",\"SPI\",\"SPN\",\"SI\",\"SN\",\"SP\",\"S\"];\r\n\r\nexport const PLACEMENTS = {\r\n Island: \"Island\",\r\n Countertop: \"Countertop\"\r\n};\r\n\r\nexport const MODULE_CONTEXT_MENU_TYPES = {\r\n Filters: \"Filters\",\r\n SliceButtons: \"SliceButtons\",\r\n};\r\nexport const MODULE_CONTEXT_MENU_DIRECTIONS = {\r\n Vertical: \"Vertical\",\r\n Horizontal: \"Horizontal\"\r\n};\r\n\r\nexport const CABINET_WIZARD_BUTTONS = [{\r\n text: \"All products\",\r\n buttonId: \"all_products\",\r\n},{\r\n text: \"Door style\",\r\n filtersGroupName: \"DoorStyle\",\r\n buttonId: \"door_style\",\r\n},{\r\n text: \"Wood type\",\r\n filtersGroupName: \"WoodType\",\r\n buttonId: \"wood_type\",\r\n},{\r\n text: \"Stain / color\",\r\n filtersGroupName: \"StainColor\",\r\n buttonId: \"stain_color\",\r\n},{\r\n text: \"Inlay type\",\r\n filtersGroupName: \"Inlay Type\",\r\n buttonId: \"inlay_type\",\r\n}];\r\n\r\nexport const COUNTERTOP_WIZARD_BUTTONS = [{\r\n text: \"Stone\",\r\n pluralText: \"Stones\",\r\n buttonId: \"all_products\",\r\n},{\r\n text: \"Color\",\r\n pluralText: \"Color\",\r\n filtersGroupName: \"Stone Color\",\r\n buttonId: \"color\",\r\n},{\r\n text: \"Material\",\r\n pluralText: \"Materials\",\r\n filtersGroupName: \"Stone Material\",\r\n buttonId: \"materials\",\r\n},{\r\n text: \"Edge\",\r\n pluralText: \"Edges\",\r\n filtersGroupName: \"Edge Profile\",\r\n buttonId: \"edges\",\r\n},{\r\n text: \"Backsplash\",\r\n pluralText: \"Backsplash\",\r\n buttonId: \"backsplash\",\r\n}];\r\n\r\nexport const wizardAllButton = {\r\n id: \"All\",\r\n value: \"All\",\r\n displayText: \"All\",\r\n parent_id: null,\r\n icon: \"\",\r\n lockedInWizard: false,\r\n filterGroup_id: 0,\r\n additionalImages: []\r\n};\r\n\r\nexport const BACKSPLASH_TYPES = [\"4in\", \"6in\", \"18in\"];\r\n\r\nexport const METADATA = {\r\n ALL: \"ALL\"\r\n};\r\n\r\nexport const COUNTERTOP_GROUP = [\"countertop\", \"center_island_countertop\", \"backsplash\"];\r\nexport const CABINET_GROUP = [\"top_cabinet\", \"bottom_cabinet\", \"center_island_cabinet\", \"fridge_enclosure\", \"tall_cabinet\"];\r\nexport const EDGE_GROUP = [\"edge\", \"edge_profile\", \"center_island_edge\"];\r\n","import React from \"react\";\r\n\r\nexport const SaveIcon = () => {\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\nexport const ProductsIconAnimated = () => (\r\n \r\n icon-forklift\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport const TimingIconAnimated = () => (\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\nexport const EditIcon = (props) => (\r\n \r\n \r\n \r\n);\r\n\r\nexport const EyeBallIcon = (props) => (\r\n \r\n icons/EyeEnabledOn\r\n Created with Sketch.\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 const ScreenshotIcon = (props) => (\r\n \r\n icon-screenshot@2x\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport const PlusIcon = (props) => (\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 const LookLayoutIcon = (props) => (\r\n \r\n \r\n \r\n);\r\n\r\n\r\nexport const LookExitIcon = (props) => (\r\n \r\n \r\n \r\n);\r\n\r\nexport const LookCoBrowseIcon = (props) => (\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport const LookShareIcons = {\r\n facebook: ,\r\n pinterest: (\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n // twitter: ,\r\n};\r\n\r\nexport const LookExpandIcon = () => (\r\n \r\n);\r\n\r\nexport const LookMinimizeIcon = () => (\r\n \r\n);\r\n\r\nexport const LookCartIcon = () => (\r\n \r\n);\r\n\r\nexport const LookRoomIdeasIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport const Look3DIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport const LookAugmentRealityIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport const LookIconHover = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport const LookIconNavigate = () => (\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport const LookIntroIcon = () => (\r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport const groheIcon = (\r\n \r\n {/**/}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport const AmericanStandardIcon = (\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 const GroheListIcon = () => (\r\n \r\n)\r\n\r\nexport const GroheFilterIcon = () => (\r\n \r\n \r\n \r\n)\r\n\r\nexport const GroheGridIcon = () => (\r\n \r\n)\r\n\r\nexport const GroheArchitectureIcon = () => (\r\n \r\n \r\n \r\n)\r\n\r\nexport const GroheLockIcon = () => (\r\n // \r\n \r\n // />\r\n // \r\n)\r\n\r\nexport const GroheLockIconSmall = () => (\r\n // \r\n \r\n // \r\n)\r\nexport const GroheNoteAddIcon = () => (\r\n \r\n \r\n \r\n)\r\n\r\nexport const GroheBoxIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport const GroheVehicleIcon = () => (\r\n \r\n)\r\n\r\nexport const GroheDownloadIcon = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport const GroheSQFTIcon = () => (\r\n \r\n \r\n \r\n)\r\nexport const GroheInkPenIcon = () => (\r\n \r\n \r\n \r\n)\r\n","export const COLORS = {\r\n red: \"#d0021b\",\r\n // red: \"#FF0012\",\r\n gray: \"#9b9b9b\",\r\n gray2: \"#979797\",\r\n gray3: \"#b8b8b8\",\r\n gray4: \"#5e5e5e\",\r\n light: \"#e1e1e1\",\r\n white: \"#ffffff\",\r\n grohe: \"#292929\",\r\n};\r\n\r\nconst COLOR_THEMES = {\r\n \"qc\": {\r\n primary: \"#4A90E2\",\r\n primary_hover: \"#3483de\", //darken(#4A90E2, 5%),\r\n active: \"#9FC522\",\r\n active_hover: \"#8daf1e\", //darken(#9FC522, 5%),\r\n assetsPath: \"../images\",\r\n },\r\n \"caes\": {\r\n primary: \"#58595b\",\r\n primary_hover: \"#4b4c4e\", //darken(#58595b, 5%),\r\n active: \"#f46c42\",\r\n active_hover: \"#f3592a\", //darken(#f46c42, 5%),\r\n assetsPath: \"../images-caes\",\r\n },\r\n // \"as\": {\r\n // primary: \"#36919B\",\r\n // primary_hover: \"#4CABB5\", //darken(#58595b, 5%),\r\n // active: \"#004D58\",\r\n // active_hover: \"#4CABB5\", //darken(#f46c42, 5%),\r\n // assetsPath: \"../images-caes\",\r\n // },\r\n \"moderno\": {\r\n primary: \"#343434\",\r\n primary_hover: \"#1b1b1b\", //darken(#58595b, 5%),\r\n active: \"#d0021b\",\r\n active_hover: \"#9d0214\", //darken(#f46c42, 5%),\r\n assetsPath: \"../images-moderno\",\r\n },\r\n \"look\": {\r\n primary: \"#000000\",\r\n primary_hover: \"#0b1f37\", //darken(#58595b, 5%),\r\n active: \"#3984BE\",\r\n active_hover: \"#3376aa\", //darken(#f46c42, 5%),\r\n assetsPath: \"../images\",\r\n },\r\n \"grohe\": {\r\n primary: \"#000000\", // \"#0F2B4C\",\r\n primary_hover: \"#0b1f37\", //darken(#58595b, 5%),\r\n active: \"#3984BE\",\r\n active_hover: \"#3376aa\", //darken(#f46c42, 5%),\r\n assetsPath: \"../images\",\r\n },\r\n \"as\": {\r\n primary: \"#000000\", // \"#0F2B4C\",\r\n primary_hover: \"#0b1f37\", //darken(#58595b, 5%),\r\n active: \"#E70026\",\r\n active_hover: \"#ce0022\", //darken(#f46c42, 5%),\r\n assetsPath: \"../images-as\",\r\n },\r\n \"nhance\": {\r\n primary: \"#000000\", // \"#0F2B4C\",\r\n primary_hover: \"#0b1f37\", //darken(#58595b, 5%),\r\n active: \"#ef7038\",\r\n active_hover: \"#ed5f20\", //darken(#f46c42, 5%),\r\n assetsPath: \"../images-nhance\",\r\n },\r\n}\r\n\r\nexport const GROHE_FILTER_COLORS = {\r\n \"GROHE CHROME\": \"#f4f4f3\", // R:244 G:244 B:243\r\n \"GROHE POLISHED NICKEL\": \"#e4e0cb\", // R:228 B:224 G:203\r\n \"GROHE HARD GRAPHITE\": \"#605754\", // R:96 G:87 B:84\r\n \"GROHE BRUSHED NICKEL\": \"#c8beb1\", // R:200 G:190 B:177\r\n \"GROHE BRUSHED COOL SUNRISE\": \"#bb9759\" // R:187 G:151 B:89\r\n};\r\n\r\nexport default COLOR_THEMES\r\n","import find from 'lodash/find';\r\nimport last from 'lodash/last';\r\n\r\nimport {splitFeatureName, iStartWith} from \"../../../../misc/utils\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {Part} from \"./part\";\r\nimport store from '../../../../store';\r\nimport {LayoutAbbreviation} from \"../constants\";\r\nimport {getFeatureIsLocked} from \"../../../../misc/helpers\";\r\n\r\nconst RgCabinetSize = /[0-9]+/g;\r\n\r\n/**\r\n * Used for Complex parts such as Vanity, to perform some base functionality for related items\r\n */\r\nexport class IntermediatePart extends Part {\r\n\r\n constructor(isChild) {\r\n super(false, isChild);\r\n this.disabled = false;\r\n this.defaultDisabled = false; // used after reset click\r\n this.canBeDisabled = false;\r\n }\r\n\r\n /**\r\n * This will be called by the underlying vanity feature with a concrete instance of the part\r\n * @param dbFeature\r\n * @param part {Part}\r\n * @param setParent {boolean}\r\n * @param features\r\n */\r\n load_(dbFeature, part, setParent = true, features = 'features') {\r\n\r\n const {displayName, sharedFeatureName} = dbFeature;\r\n let {featureName} = splitFeatureName(displayName);\r\n if (!featureName && dbFeature.groupName && dbFeature.displayName) {\r\n featureName = dbFeature.displayName.replace(dbFeature.groupName + \" - \", \"\")\r\n }\r\n\r\n // console.log('displayName:', displayName);\r\n\r\n if (setParent) {\r\n part.getParent = () => this;\r\n if (dbFeature.galleryImages) {\r\n const featured = dbFeature.galleryImages.find(galImage => galImage.featured);\r\n if (featured) {\r\n this.featuredImage = featured.url\r\n }\r\n dbFeature.galleryImages = dbFeature.galleryImages.sort((a, b) => b.default - a.default)\r\n }\r\n }\r\n\r\n if (iStartWith(displayName, 'Vanity -') || dbFeature.groupName === \"Vanity\") {\r\n if (displayName === \"Vanity - Placeholder D[For=Custom]\") {\r\n part.vanitySize = 72;\r\n } else {\r\n const fromName = sharedFeatureName || displayName || \"\";\r\n const lastDigit = last(fromName.match(RgCabinetSize));\r\n part.vanitySize = lastDigit ? lastDigit.slice(-2) : ''; // take two last digits from the name\r\n }\r\n\r\n }\r\n\r\n part.partName = featureName;\r\n part.metaData = dbFeature.metaData || {};\r\n part.dbFeature = dbFeature || {};\r\n if (!part.dbFeature.filterValueIDs) {\r\n part.dbFeature.filterValueIDs = {}\r\n }\r\n part.notAvailableInVisualizer = !dbFeature.s3Bindings || !dbFeature.s3Bindings.length || !dbFeature.s3Bindings.some(binding => binding.bucketName === \"brv\");\r\n\r\n let arrayOfBindings = [];\r\n if(dbFeature.s3Bindings) {\r\n dbFeature.s3Bindings.forEach((binding) => {\r\n if (!arrayOfBindings.includes(\"Small\")\r\n && (binding.layout === LayoutAbbreviation.All || binding.layout === LayoutAbbreviation.Small)) {\r\n arrayOfBindings.push(\"Small\");\r\n }\r\n if (!arrayOfBindings.includes(\"Large\") &&\r\n (binding.layout === LayoutAbbreviation.All || binding.layout === LayoutAbbreviation.Large)) {\r\n arrayOfBindings.push(\"Large\");\r\n }\r\n });\r\n }\r\n\r\n arrayOfBindings.forEach(layoutName => {\r\n this[features+\"List\"][layoutName].push(part);\r\n });\r\n\r\n if (part.notAvailableInVisualizer || !arrayOfBindings.length) { // features not in visualizer should be shown in the QuotingTool\r\n part.notAvailableInVisualizer = true;\r\n Object.keys(LayoutAbbreviation).forEach(layoutName => {\r\n if (layoutName !== \"All\") {\r\n this[features+\"List\"][layoutName].push(part);\r\n }\r\n })\r\n }\r\n\r\n this.loadFeatureCommon(part);\r\n\r\n return part\r\n }\r\n\r\n navigationSubItemsWithFilter(propName, propValue, featuresToCheck = this.features) {\r\n return featuresToCheck.filter((feature) => {\r\n return feature.matchesMetaForCondition(propName, propValue);\r\n }).map(_ => new DesignNavigationItem(_.featureName, _));\r\n }\r\n\r\n navigationSubItemsWithFilterMultipleConditions(arrayOfConditions, featuresToCheck = this.features) {\r\n // console.log('arrayOfConditions', arrayOfConditions);\r\n // console.log('featuresToCheck', featuresToCheck);\r\n return featuresToCheck.filter((feature) => {\r\n return feature.notAvailableInVisualizer || arrayOfConditions.every((conditionObject) => {\r\n const {propName, propValue} = conditionObject;\r\n\r\n let conditionPassed = feature.matchesMetaForCondition(propName, propValue);\r\n if (propName === \"EX L\" && !conditionPassed) {\r\n conditionPassed = feature.matchesMetaForCondition(\"Wall\", propValue);\r\n }\r\n return conditionPassed\r\n\r\n // let {propName, propValue} = conditionObject;\r\n // const excludeProperty = propName.includes('-exclude');\r\n // if (excludeProperty) {\r\n // propName = propName.split('-exclude')[0];\r\n // }\r\n // return excludeProperty\r\n // ? feature.matchesMetaForCondition(propName, propValue)\r\n // : feature.matchesMetaForCondition(propName, propValue)\r\n });\r\n })\r\n }\r\n\r\n // navigationSubItemsWithFilterMultipleConditionsWithInactive(arrayOfConditions, featuresToCheck = this.features) { // shows all items & sets not mathing array\r\n // const refactoredArray = featuresToCheck.map((feature) => {\r\n // feature.matchesMetaFailed = false;\r\n // feature.matchesMetaFailedArray = [];\r\n // arrayOfConditions.forEach((conditionObject) => {\r\n // const {propName, propValue} = conditionObject;\r\n // let conditionPassed = feature.matchesMetaForCondition(propName, propValue);\r\n // if (propName === \"EX L\" && !conditionPassed) {\r\n // conditionPassed = feature.matchesMetaForCondition(\"Wall\", propValue);\r\n // }\r\n // if (!conditionPassed) {\r\n // feature.matchesMetaFailed = true;\r\n // feature.matchesMetaFailedArray.push(propName);\r\n // }\r\n // });\r\n //\r\n // return feature\r\n // });\r\n // return orderBy(refactoredArray, ['matchesMetaFailed'],['asc']).map(_ => new DesignNavigationItem(_.featureName, _));\r\n // }\r\n\r\n setDefault() {\r\n if (!this.tryToSetTheSameFeature(this.features)) {\r\n this.activeFeature = this.features && this.features[0] || null;\r\n this.placeholderFeature = this.features && this.features.find((feature) => {\r\n return feature.dbFeature.displayName && feature.dbFeature.displayName.includes(\"laceholder\");\r\n });\r\n }\r\n }\r\n\r\n setLayers(layout) {\r\n if (!this.disabled) {\r\n if (!this.activeFeature) {\r\n this.setDefault(layout);\r\n }\r\n if (this.activeFeature && !this.activeFeature.notAvailableInVisualizer) {\r\n this.setFeatureLayer(this.activeFeature, layout);\r\n if (Array.isArray(this.activeFeatureParts) && this.activeFeatureParts.length) {\r\n this.activeFeatureParts.forEach((activeFeaturePart) => {\r\n this.setFeatureLayer(activeFeaturePart, layout);\r\n })\r\n }\r\n }\r\n if (this.placeholderFeature) {\r\n this.setFeatureLayer(this.placeholderFeature, layout);\r\n }\r\n if (this.shadowFeature) {\r\n this.setFeatureLayer(this.shadowFeature, layout);\r\n }\r\n } else {\r\n this.hideLayers();\r\n }\r\n }\r\n\r\n setFeatureLayer(currentFeature, layout) {\r\n // console.log('currentFeature', currentFeature);\r\n if (!currentFeature || !currentFeature.dbFeature)\r\n return; //feature no longer exists\r\n const layoutAbr = layout.getCurrentLayoutAbbreviation();\r\n\r\n let s3Binding = find(currentFeature.dbFeature.s3Bindings,\r\n {entityID: this.featureDefinitionId(currentFeature), layout: layoutAbr});\r\n if (!s3Binding) {\r\n s3Binding = find(currentFeature.dbFeature.s3Bindings,\r\n {entityID: this.featureDefinitionId(currentFeature), layout: LayoutAbbreviation.All});\r\n }\r\n // !!! we need to check, either a specific layout or ALL layout only !!!\r\n // if (!s3Binding) {\r\n // s3Binding = find(currentFeature.dbFeature.s3Bindings,\r\n // {entityID: this.featureDefinitionId(currentFeature)});\r\n // }\r\n currentFeature.layer.fromS3Binding(s3Binding);\r\n }\r\n\r\n clickFromAllWalls(ignoreLocked) {\r\n this.handleClick(ignoreLocked, \"all_walls\");\r\n }\r\n\r\n tryToSetTheSameFeature(filteredFeatures, partName, placeholderName, shadowNeeded = false) {\r\n if (this.activeFeature) {\r\n const activeName = this.activeFeature.getSplittedFeatureName();\r\n this.activeFeature = filteredFeatures.find(feature => {\r\n const featureName = feature.getSplittedFeatureName();\r\n return activeName === featureName\r\n }) || null;\r\n // console.log('AF', filteredFeatures, this.activeFeature);\r\n this.placeholderFeature = filteredFeatures.find((feature) => {\r\n return placeholderName\r\n ? feature.dbFeature.displayName && feature.dbFeature.displayName.includesCI(\"placeholder\")\r\n && feature.dbFeature.displayName.includes(placeholderName)\r\n : feature.dbFeature.displayName && feature.dbFeature.displayName.includesCI(\"placeholder\")\r\n });\r\n if (shadowNeeded) {\r\n this.setShadowFeature();\r\n }\r\n if (this.activeFeature) {\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n\r\n /**\r\n * @param ignoreLocked {boolean} // false by the default, is used by wizard ONLY\r\n */\r\n handleClick(ignoreLocked = false) {\r\n const parent = this.getParent();\r\n const {activeQuoteIndex} = store.getState().quotesState;\r\n parent.firstClick[activeQuoteIndex] = true; // allow to show active item\r\n const featureIsLocked = getFeatureIsLocked(this, ignoreLocked);\r\n if (featureIsLocked) {\r\n parent.activeLockedFeature = this;\r\n } else {\r\n if (parent.activeLockedFeature) {\r\n parent.activeLockedFeature = null;\r\n }\r\n this.featureClick();\r\n }\r\n }\r\n\r\n featureClick() {\r\n const parent = this.getParent();\r\n parent.placeholderChanged = true;\r\n if (this.notAvailableInVisualizer) {\r\n parent.activeNotInVisualizerFeature = this; // do not change the activeFeature (in order to keep the layer)\r\n } else if (parent.activeNotInVisualizerFeature) {\r\n parent.activeNotInVisualizerFeature = null; // remove it from other searches and so on\r\n parent.activeFeature = this;\r\n } else {\r\n parent.activeFeature = this;\r\n }\r\n this.featureClicked();\r\n }\r\n\r\n setShadowFeature() {\r\n const parentGroup = this.getParent();\r\n let filteredAvailableFeatures = [];\r\n if (parentGroup.shadows && parentGroup.shadows.features && parentGroup.shadows.features.length) {\r\n const layoutAbr = this.getParent().layout.getCurrentLayoutAbbreviation();\r\n const filteredFeatures = parentGroup.shadows.features.filter((shadow) => {\r\n return Array.isArray(shadow.dbFeature.s3Bindings) && shadow.dbFeature.s3Bindings.some(binding => {\r\n return binding.layout === LayoutAbbreviation.All || binding.layout === layoutAbr\r\n })\r\n });\r\n const compatibleFeatures = filteredFeatures.filter(shadowFeature => {\r\n return shadowFeature.partName && this.shadowName && shadowFeature.partName === this.shadowName\r\n });\r\n filteredAvailableFeatures = this.navigationSubItemsWithFilterMultipleConditions(this.getArrayOfConditions(), compatibleFeatures);\r\n }\r\n this.shadowFeature = filteredAvailableFeatures.length ? filteredAvailableFeatures[0] : null;\r\n }\r\n\r\n getFeatureWithMeta(featuresArray, metaName, metaValue) {\r\n return featuresArray.find((feature) => {\r\n return feature.metaData[metaName] && feature.metaData[metaName].includes(metaValue);\r\n });\r\n }\r\n\r\n getFeaturesWithMeta(featuresArray, metaName, metaValue) {\r\n return featuresArray.filter((feature) => {\r\n return feature.metaData[metaName] && feature.metaData[metaName].includes(metaValue);\r\n });\r\n }\r\n\r\n hideLayers() {\r\n if (this.activeFeature) {\r\n this.activeFeature.layer.src = '';\r\n }\r\n if (Array.isArray(this.activeFeatureParts) && this.activeFeatureParts.length) {\r\n this.activeFeatureParts.forEach((activeFeaturePart) => {\r\n if (activeFeaturePart && activeFeaturePart.layer) {\r\n activeFeaturePart.layer.src = '';\r\n }\r\n })\r\n }\r\n if (this.placeholderFeature) {\r\n this.placeholderFeature.layer.src = '';\r\n }\r\n if (this.shadowFeature) {\r\n this.shadowFeature.layer.src = '';\r\n }\r\n }\r\n\r\n /** shower door, fixture methods **/\r\n static getCurrentShowerBodyId(shower) {\r\n let currentShowerBodyId = \"\";\r\n const showerTubComboIsActive = shower.showerTubComboIsActive();\r\n if (!showerTubComboIsActive && shower.showerBody && shower.showerBody.activeFeature) {\r\n currentShowerBodyId = shower.showerBody.activeFeature.showerBodyId;\r\n } else if (showerTubComboIsActive && shower.layout.parts[\"Shower Tub Combo\"]\r\n && shower.layout.parts[\"Shower Tub Combo\"].wallConfiguration\r\n && shower.layout.parts[\"Shower Tub Combo\"].wallConfiguration.activeFeature) {\r\n currentShowerBodyId = shower.layout.parts[\"Shower Tub Combo\"].wallConfiguration.activeFeature.showerBodyId;\r\n }\r\n return currentShowerBodyId\r\n }\r\n\r\n rememberPreviousSelection(shower, currentActiveFeature) {\r\n const layoutAbbr = shower.layout.getCurrentLayoutAbbreviation();\r\n const currentShowerBodyId = IntermediatePart.getCurrentShowerBodyId(shower);\r\n const wallConfiguration = shower.layout.parts[\"Shower Tub Combo\"] && shower.layout.parts[\"Shower Tub Combo\"].wallConfiguration;\r\n if (this.currentShowerBodyId !== currentShowerBodyId && currentActiveFeature && !currentActiveFeature.partName.includes(\"laceholder\")) {\r\n this.previouslySelectedFeatures[layoutAbbr][this.currentShowerBodyId] = currentActiveFeature; // remember previous active item\r\n if (wallConfiguration\r\n && wallConfiguration.features.some(feature => feature.showerBodyId === this.currentShowerBodyId)) {\r\n wallConfiguration.features.forEach((wallConfigurationFeature) => { // remember previous active item for all wall conf\r\n this.previouslySelectedFeatures[layoutAbbr][wallConfigurationFeature.showerBodyId] = currentActiveFeature;\r\n })\r\n }\r\n }\r\n this.currentShowerBodyId = currentShowerBodyId; // set new shower type\r\n }\r\n\r\n setDefaultAccordingToPreviousSelect(shower, filteredFeatures, hardCodedDefaultName, placeholderDefaultName = \"laceholder\") {\r\n const layoutAbbr = shower.layout.getCurrentLayoutAbbreviation();\r\n const currentShowerBodyId = IntermediatePart.getCurrentShowerBodyId(shower);\r\n // console.log('currentShowerBodyId', currentShowerBodyId);\r\n // console.log('this.previouslySelectedFeatures', this.previouslySelectedFeatures);\r\n\r\n if (this.currentShowerBodyId !== currentShowerBodyId && this.previouslySelectedFeatures[layoutAbbr][currentShowerBodyId]\r\n && filteredFeatures.some(f => f.dbFeature.id === this.previouslySelectedFeatures[layoutAbbr][currentShowerBodyId].dbFeature.id)) {\r\n this.activeFeature = this.previouslySelectedFeatures[layoutAbbr][currentShowerBodyId]; // restore from previous chosen\r\n } else {\r\n const hardCodedDefault = hardCodedDefaultName && filteredFeatures.find((feature) => {\r\n return !feature.notAvailableInVisualizer && feature.dbFeature.displayName && feature.dbFeature.displayName.includes(hardCodedDefaultName);\r\n });\r\n this.activeFeature = hardCodedDefault || filteredFeatures[0];\r\n }\r\n const placeholderDefault = filteredFeatures.find((feature) => {\r\n return !feature.notAvailableInVisualizer && feature.dbFeature.displayName\r\n && feature.dbFeature.displayName.includes(placeholderDefaultName);\r\n });\r\n this.placeholderFeature = placeholderDefault || null;\r\n }\r\n\r\n /**\r\n * Returns matching feature (for example: return Mirrors with the same Color and DoorStyle as current selected Vanity)\r\n * @param feature {object} // current feature\r\n * @param activeFilterValueIDs {object} // current activeFeature filters (that needed to be matched)\r\n * @param filter1 {object} // featureGroup1\r\n * @param filter2 {object} // featureGroup2\r\n */\r\n static featureHasFilters(feature, activeFilterValueIDs, filter1, filter2) {\r\n const filterValueIDs = feature.dbFeature && feature.dbFeature.filterValueIDs;\r\n if (filterValueIDs) {\r\n const hasValues = filterValueIDs[filter1.id]\r\n && filterValueIDs[filter2.id]\r\n && activeFilterValueIDs[filter1.id]\r\n && activeFilterValueIDs[filter2.id]\r\n && filterValueIDs[filter1.id].includes(activeFilterValueIDs[filter1.id][0])\r\n && filterValueIDs[filter2.id].includes(activeFilterValueIDs[filter2.id][0]);\r\n // hasValues ? console.log('match-', feature) : null;\r\n return hasValues || false // false is needed here, because true !> undefined\r\n }\r\n return false\r\n }\r\n\r\n getSplittedFeatureName = () => {\r\n if(this._customDisplayName == null) {\r\n this._customDisplayName = this.getFeatureName()\r\n // .replace(/ 30/g, \"\") // we can't do that since room layout change is broken after that\r\n // .replace(/ 60/g, \"\")\r\n // .replace(/ LG/g, \"\")\r\n // .replace(/ SM/g, \"\");\r\n }\r\n return this._customDisplayName\r\n };\r\n\r\n getCountertopGroupsSplittedFeatureName = () => {\r\n if (this._countertopGroupsCustomDisplayName == null) {\r\n this._countertopGroupsCustomDisplayName = this.dbFeature.sharedFeatureName;\r\n }\r\n return this._countertopGroupsCustomDisplayName\r\n };\r\n\r\n getMatchingFeatureName = () => {\r\n return this.getSplittedFeatureName()\r\n };\r\n\r\n}\r\n","import flatMap from \"lodash/flatMap\";\r\nimport lastIndexOf from \"lodash/lastIndexOf\";\r\nimport trim from \"lodash/trim\";\r\n\r\nimport JsonApi from \"./jsonApi\";\r\nimport store from \"../store\";\r\nimport {\r\n capitalizeFirstLetters,\r\n getQuotePriceWithTaxes,\r\n getTotalPrice, toFixedPrice,\r\n} from \"../misc/helpers\";\r\nimport {\r\n setJobId,\r\n setDefaultInstallations,\r\n setFabricatorData,\r\n loadFilters,\r\n setStonePricing,\r\n setBathroomVisualizerPresets,\r\n setProjectDocumentsIds,\r\n loadMobileNav,\r\n setFabricatorTaxes, setLoadedPresets, toggleUseFabricatorCostPrices\r\n} from \"../actions/actionFunctions\";\r\n\r\nimport {renderErrorPopup} from \"./api-popups\";\r\nimport {loaderDisable} from \"../bvcomponents/ui/loaderView\";\r\nimport {QuoteRequestType} from \"../bvcomponents/visComponents/constants\";\r\nimport * as actionTypes from '../actions/actionTypes';\r\nimport Config, {getCommonVisualizerType, IS_DEALER_FLOW, IS_OFFLINE_MODE, IS_QKB_UI,\r\n IS_DASHBOARD_MESSAGING} from \"../config\";\r\nimport {setFabricatorSubscriptions} from \"../actions/initialFlowFunctions\";\r\nimport {setDiscountSections} from \"../actions/priceWorksheetActions\";\r\nimport {getCurrentReceipt, setReceiptUrl} from \"../actions/printFunctions\";\r\nimport {getEmployees} from \"./user-api\";\r\n// import {getParsedLookUrl} from \"../bvcomponents/look/lookNavigation/lookFunctions\";\r\nimport {setWizardList} from \"../actions/wizardFunctions\";\r\nimport {setAllFeaturesLoaded} from \"../actions/serverFunctions\";\r\nimport {updatePresetsArray} from \"../misc/presetsFunctions\";\r\nimport {getCompressedCartItem} from \"../misc/backendFunctions\";\r\nimport {updateCurrentQuote} from \"../misc/quotesFunctions\";\r\nimport {getParsedWizardList} from \"../bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardFunctions2\";\r\nimport {setMarkUpLogic} from \"../actions/shoppingCartFunctions\";\r\nimport {parseMarkUp} from \"../misc/priceFunctions\";\r\nimport {getMarkUpForFeatures} from \"./features-api\";\r\nimport {setResponseFeaturesMarkUp} from \"../misc/markUpFunctions\";\r\nimport {shouldUseContractSigning} from \"../bvcomponents/popups/contractSign/contractsFunctions\";\r\nimport {\r\n getDepositAmount,\r\n getPriceWorkSheetSaveValues,\r\n isSaveOnlyDiscount\r\n} from \"../bvcomponents/priceWorksheet/discountFunctions\";\r\nimport {getDifferentCurrencyCartItems} from \"../misc/misc2\";\r\nimport {setDealerUserFromFabricator} from \"../misc/userFunctions\";\r\n\r\n\r\nexport const getSaveQuoteFastData = async (forTempSave = false) => {\r\n const state = store.getState();\r\n const {userState, quotesState, instState, serverState, priceWorksheetState, cartState, printState,\r\n contractSigningState, fabricatorState} = state;\r\n let needToRevertBackCostPrices = fabricatorState.settings.useFabricatorCostPrices;\r\n if (needToRevertBackCostPrices && !IS_DASHBOARD_MESSAGING) {\r\n store.dispatch(toggleUseFabricatorCostPrices(false)); // always use retail prices\r\n }\r\n const updatedQuotes = await updateCurrentQuote();\r\n const totalPrice = getTotalPrice();\r\n const grandTotal = getQuotePriceWithTaxes(totalPrice);\r\n const records = updatedQuotes.map((quoteObject, quoteIndex) => {\r\n let record = Object.assign({}, quoteObject);\r\n record.bvImage = record.staticCanvasImage || record.bvImage;\r\n let recordData = Object.assign({}, quoteObject.data, {\r\n activeQuoteIndex: quotesState.activeQuoteIndex,\r\n contractSigningValues: contractSigningState.pagesCustomFieldsValue,\r\n contractsValues: contractSigningState.contractsValues,\r\n savedInvoiceNumberOfPages: contractSigningState.savedInvoiceNumberOfPages,\r\n needToUpdateContract: contractSigningState.needToUpdateContract,\r\n receiptSignature: printState.receiptSignature,\r\n priceWorkSheetLogic: getPriceWorkSheetSaveValues(priceWorksheetState),\r\n })\r\n record.data = forTempSave ? recordData : JSON.stringify(recordData);\r\n record.sqFtCalcImage = quoteObject.sqFtCalcData ? quoteObject.sqFtCalcData.canvasImage : null;\r\n record.sFtCalcDataJson = quoteObject.sqFtCalcData ? JSON.stringify(\r\n Object.assign({}, quoteObject.sqFtCalcData, {\r\n canvasImage: undefined // remove canvasImage as we don't need to pass it twice\r\n })\r\n ) : null;\r\n delete record.sqFtCalcData;\r\n delete record.quoteId;\r\n const recordCartItems = [...cartState.cartItems.filter(ci => ci.cartFeature && ci.cartFeature.dbFeature && (ci.currentQuote === quoteIndex))]\r\n // record.cartItems = recordCartItems; // why do we need it here ??? that doesnt make any sense\r\n record.features = recordCartItems.map(ci => getCompressedCartItem(ci));\r\n if (forTempSave) {\r\n delete record.bvImage\r\n }\r\n return record\r\n });\r\n const discountSections = [...priceWorksheetState.discountSections.map(discountSection => Object.assign({}, discountSection))]\r\n .filter(discountSection => {\r\n discountSection.discounts = [...discountSection.discounts]\r\n .filter(discount => discount.selected)\r\n .map(discount => Object.assign({}, discount, { oldDeleted: undefined }));\r\n return discountSection.discounts.some(discount => discount.selected);\r\n });\r\n const differentCurrencyObjects = getDifferentCurrencyCartItems(fabricatorState.settings, cartState.cartItems);\r\n const anotherCurrencies = differentCurrencyObjects.length ? JSON.stringify(differentCurrencyObjects.map(currObject => {\r\n const currentTotal = getTotalPrice(null, true, currObject.cartItems);\r\n const total = toFixedPrice(getQuotePriceWithTaxes(currentTotal, discountSections), true)\r\n return {\r\n total,\r\n currency: currObject.currency,\r\n }\r\n })) : \"\";\r\n const totalWithTaxes = getQuotePriceWithTaxes(totalPrice);\r\n const customDeposit = +getDepositAmount(priceWorksheetState.discountSections, grandTotal, fabricatorState) || 0;\r\n\r\n const total = {\r\n materialCost: totalPrice.materialPrice,\r\n installationCost: totalPrice.installationPrice,\r\n installationTaxes: totalPrice.installationTaxes, // installation tax amount\r\n materialTaxes: totalPrice.materialTaxes, // material tax amount\r\n priceTaxes: totalPrice.priceTaxes, // all tax amount\r\n totalWithTaxes,\r\n customDeposit,\r\n balance: totalWithTaxes && customDeposit ? +((grandTotal - customDeposit).toFixed(2)) : totalWithTaxes,\r\n anotherCurrencies,\r\n }\r\n if (needToRevertBackCostPrices) {\r\n store.dispatch(toggleUseFabricatorCostPrices(true)); // revert back\r\n }\r\n return {\r\n jobId: document.kvConfig.jobId || serverState.jobId,\r\n fromBV: true,\r\n fabricatorId: document.kvConfig.userId,\r\n notes: [],\r\n documents: [],\r\n employeeId: +userState.userInfo.employeeId,\r\n shareUrl: serverState.shareUrl,\r\n discountSections,\r\n installations: flatMap(instState.instList, i => i.services.filter(service => service.selected)),\r\n subId: document.subId && document.subId.toString ? document.subId.toString() : null,\r\n total,\r\n records,\r\n isDealerFlow: IS_DEALER_FLOW,\r\n };\r\n};\r\n\r\nexport const saveQuoteFast = async () => {\r\n if (document.kvConfig.canSaveQuote === false || document.kvConfig.devMode || window.postMessageIsExecuting) {\r\n return null;\r\n }\r\n const savedFastData = await getSaveQuoteFastData();\r\n //console.log(\"save quote fast request\", savedFastData);\r\n return JsonApi.saveQuoteFast(savedFastData)\r\n};\r\n\r\n/**\r\n * Saves the quote\r\n * @param submit {boolean}\r\n * @param yesNoConsultationRequest {boolean}\r\n * @param quoteRequestType {string}\r\n * @param fromCheckOutPage {boolean}\r\n * @param assignQuotePopupCustomer {object}\r\n * @param assignQuotePopupEmployee {object}\r\n * @param showContractSignOnError {boolean}\r\n * @param showReceipt {boolean}\r\n * @return {*}\r\n */\r\nexport const saveQuote = async ({\r\n submit,\r\n yesNoConsultationRequest = false,\r\n quoteRequestType = QuoteRequestType.RegularDesign,\r\n fromCheckOutPage = false,\r\n assignQuotePopupCustomer = null,\r\n assignQuotePopupEmployee = null,\r\n showContractSignOnError = false,\r\n showReceipt = true,\r\n }) => {\r\n if (document.kvConfig.canSaveQuote === false) {\r\n return null;\r\n }\r\n const formData = new FormData();\r\n const state = store.getState();\r\n const {userState, serverState, fabricatorState, cartState, contractSigningState, unlockCalculationsState} = state;\r\n const {fabricatorTaxes} = fabricatorState;\r\n const fabricatorSettings = fabricatorState.settings;\r\n let needToRevertBackCostPrices = fabricatorSettings.useFabricatorCostPrices;\r\n if (needToRevertBackCostPrices && !IS_DASHBOARD_MESSAGING) {\r\n store.dispatch(toggleUseFabricatorCostPrices(false)); // always use retail prices\r\n }\r\n const savedFastData = await getSaveQuoteFastData();\r\n if (assignQuotePopupEmployee) {\r\n savedFastData.employeeId = assignQuotePopupEmployee.id;\r\n }\r\n const sendConsumerEmail = serverState.agreeEmailCheckbox && (!fabricatorSettings.sureTax || userState.isPhoneNumberValidated);\r\n const data = {\r\n ...savedFastData,\r\n yesNoConsultationRequest,\r\n submit,\r\n fromCheckOutPage,\r\n sendConsumerEmail,\r\n customerEmail: (assignQuotePopupCustomer ? assignQuotePopupCustomer.email : null) || userState.email || userState.userInfo.email,\r\n salesPerson: assignQuotePopupEmployee ? assignQuotePopupEmployee.fullName : userState.userInfo.salesPersonFullName,\r\n salesPersonEmail: userState.userInfo.salesPersonEmail,\r\n leadOriginatorId: (window.salesPerson ? window.salesPerson.rawVal / ( Math.floor(Math.PI * 1000)) : 0),\r\n postalCode: userState.userInfo.postal,\r\n isNewUser: !(document.kvConfig.jobId || serverState.jobId),\r\n state: cartState.state,\r\n fromTool: getCommonVisualizerType() === \"kitchen\"\r\n ? document.kvConfig.toolVersion === 5 || document.kvConfig.toolVersion === 6 ? \"KV5\" : \"KV4\"\r\n : document.kvConfig.toolVersion === 5 || document.kvConfig.toolVersion === 6 ? \"BV5\" :\"BV\",\r\n toolVersion: document.kvConfig.toolVersion,\r\n visualizerType: capitalizeFirstLetters(getCommonVisualizerType()),\r\n navigationType: document.kvConfig.navigationType,\r\n quoteRequestType,\r\n currency: fabricatorSettings.currency,\r\n installationTaxesRate: (fabricatorTaxes && fabricatorTaxes.laborRate) || 0,\r\n materialTaxesRate: (fabricatorTaxes && fabricatorTaxes.materialRate) || 0,\r\n notes: [],\r\n fromDashboard: document.kvConfig.isBackend,\r\n callFabricator: document.kvConfig.callFabricatorOnSave || false,\r\n language: serverState.language,\r\n documents: serverState.documents.filter(doc => !doc.uploaded).map((d) => {\r\n return {\r\n documentId: d.documentId || 0, // database ID\r\n name: d.name,\r\n text: d.text,\r\n created: d.created,\r\n uid: d.uid,\r\n fileContent: Config.kioskStandAlone ? d.file.dataUri : null\r\n };\r\n }),\r\n markUpLogic: JSON.stringify(cartState.markUpLogic),\r\n };\r\n document.kvConfig.callFabricatorOnSave = false;\r\n\r\n if (Config.isDevMode()) {\r\n console.log(\"saveQuote request data:\", data);\r\n }\r\n\r\n serverState.documents.forEach(doc => {\r\n formData.append(\"files\", doc.file, doc.name);\r\n });\r\n\r\n formData.append('json', JSON.stringify(data));\r\n\r\n let employeeSelected = null;\r\n if (data.employeeId) {\r\n const employeesList = userState.employeesListReceived\r\n ? userState.employeesList\r\n : await getEmployees(false) || []; // just in case, we should never reach here, because requests are in both user popups\r\n employeeSelected = employeesList.find(emp => +emp.id === data.employeeId);\r\n }\r\n let receipt = null, receiptCost = null;\r\n if (!document.kvConfig.visualizerOnly) {\r\n const pdfReceipt = await getCurrentReceipt(assignQuotePopupCustomer, employeeSelected);\r\n receipt = await pdfReceipt.toBlob();\r\n formData.append(\"receipt\", receipt);\r\n }\r\n if (needToRevertBackCostPrices && !IS_DASHBOARD_MESSAGING) {\r\n store.dispatch(toggleUseFabricatorCostPrices(true)); // revert back\r\n const pdfReceipt2 = await getCurrentReceipt(assignQuotePopupCustomer, employeeSelected);\r\n receiptCost = await pdfReceipt2.toBlob();\r\n formData.append(\"receiptCost\", receiptCost);\r\n }\r\n\r\n return JsonApi.saveQuote(document.kvConfig.kioskMode ? data : formData)\r\n .then(async (response) => {\r\n const responseData = typeof response.data === 'object' ? response.data : JSON.parse(response.data);\r\n store.dispatch(setJobId(responseData.jobId));\r\n if (responseData.documents && responseData.documents.length) {\r\n store.dispatch(setProjectDocumentsIds(responseData.documents));\r\n }\r\n\r\n const showContractSignPopup = shouldUseContractSigning(fabricatorSettings, contractSigningState.contractsList);\r\n\r\n const showLeadCaptureShoppingCart = fabricatorSettings.leadCaptureShoppingCart && !unlockCalculationsState.unlockCalculationsTutorialIsFinished;\r\n const showDepositPopup = fabricatorSettings.enableDeposit && (!fabricatorSettings.leadCaptureShoppingCart || unlockCalculationsState.unlockCalculationsTutorialIsFinished)\r\n\r\n let receiptUrl = \"\";\r\n if (receipt) {\r\n const pdfReceipt = await getCurrentReceipt(assignQuotePopupCustomer, employeeSelected);\r\n receipt = await pdfReceipt.toBlob();\r\n receiptUrl = URL.createObjectURL(receipt);\r\n }\r\n\r\n if (receipt && showReceipt && !showDepositPopup && !showLeadCaptureShoppingCart\r\n && (!showContractSignPopup || contractSigningState.signedDocumentUrl) && !fabricatorSettings.hasPaymentGateway) {\r\n window.open(receiptUrl, \"_blank\");\r\n responseData.receiptPrinted = true;\r\n }\r\n store.dispatch(setReceiptUrl(receiptUrl)); // always remember the URL (in case it is needed)\r\n\r\n responseData.total = data.total;\r\n\r\n return responseData;\r\n })\r\n .catch(error => {\r\n const retryFunction = saveQuote.bind(this, {\r\n submit,\r\n yesNoConsultationRequest,\r\n quoteRequestType,\r\n fromCheckOutPage,\r\n assignQuotePopupCustomer,\r\n assignQuotePopupEmployee,\r\n });\r\n renderErrorPopup(\"Server \"+new Error(error), \"\", retryFunction, showContractSignOnError);\r\n loaderDisable();\r\n throw new Error(error);\r\n })\r\n};\r\n\r\nexport const loadFiltersOnly = async () => {\r\n const response = await JsonApi.getFilterGroups();\r\n if (response && Array.isArray(response.data)) {\r\n store.dispatch(loadFilters(response.data));\r\n }\r\n return Promise.resolve()\r\n}\r\n\r\nexport const getBathroomVisualizerData = (featuresCount = 30, loadVisualizerOnly = false, forVisualizer) => {\r\n const featuresToReceive = IS_OFFLINE_MODE ? 100000 : featuresCount;\r\n return JsonApi.getBathroomVisualizerData(featuresToReceive, forVisualizer)\r\n .then(responseData => {\r\n // console.log('responseData', responseData.data);\r\n if (!responseData.data || responseData.data.error) {\r\n const errorMessage = !responseData.data ? \"No response data received\" : responseData.data.error;\r\n renderErrorPopup(\"Server error: \"+errorMessage);\r\n loaderDisable();\r\n throw new Error(errorMessage);\r\n } else {\r\n if (!loadVisualizerOnly) {\r\n store.dispatch(loadFilters(responseData.data.filterGroups || []));\r\n // store.dispatch(setFabricatorData(responseData.data.fabricatorData)); // we set it in the subscriptions response\r\n store.dispatch(setDefaultInstallations(responseData.data.installations));\r\n }\r\n store.dispatch(setStonePricing(responseData.data.stonePricing));\r\n if (responseData.data.defaults) {\r\n responseData.data.defaults = updatePresetsArray(responseData.data.defaults, forVisualizer);\r\n // const {lookIdFromUrl} = getParsedLookUrl(); // why do we need that?? set the same lookId on each preset? really?\r\n // if (lookIdFromUrl) {\r\n // presets = presets.map(preset => {\r\n // preset.lookId = lookIdFromUrl;\r\n // return preset\r\n // })\r\n // }\r\n store.dispatch(setBathroomVisualizerPresets(responseData.data.defaults, forVisualizer));\r\n }\r\n if (responseData.data.wizardData || responseData.data.wizardDataV2) {\r\n const wizardList = getParsedWizardList(responseData.data, false, forVisualizer);\r\n store.dispatch(setWizardList(wizardList));\r\n }\r\n //store.dispatch(setBathroomVisualizerFeatures(responseData.data.features));\r\n // this causes bathroomVisualizer to be super slow.... how to store huge arrays in redux store? No answer for now\r\n // for now, features are kept in layout dataObject.... sad, but at least it works much faster\r\n\r\n if (featuresCount === 100000) {\r\n store.dispatch(setAllFeaturesLoaded(document.kvConfig.visualizerType));\r\n store.dispatch(setLoadedPresets(responseData.data.defaults.map(preset => preset.id)));\r\n }\r\n\r\n return responseData.data\r\n }\r\n })\r\n .catch((error) => {\r\n loaderDisable();\r\n console.log('getBathroomVisualizerData', error);\r\n });\r\n};\r\n\r\nexport const getBvPresets = () => {\r\n return JsonApi.getDisplayRoom()\r\n .then(responseData => {\r\n // console.log('getBvPresets:', responseData);\r\n if (!responseData.data || responseData.data.error) {\r\n store.dispatch(setBathroomVisualizerPresets([]));\r\n console.error(\"get bvPresets error: No response data received\");\r\n return [];\r\n } else {\r\n const bvPresets = JSON.parse(responseData.data);\r\n store.dispatch(setBathroomVisualizerPresets(bvPresets));\r\n return bvPresets\r\n }\r\n })\r\n .catch((error) => {\r\n loaderDisable();\r\n console.log('getDisplayRoom', error);\r\n });\r\n};\r\n\r\nexport const getJobIdPreset = (jobId, editToken) => {\r\n return JsonApi.getBVJobData(jobId, editToken);\r\n};\r\n\r\nconst skipRequestsFor = [\"Attachment\", \"Decor\", \"Decore\"];\r\n\r\nconst updateFeaturesWithMarkUp = async (featuresResponse) => {\r\n const {fabricatorState} = store.getState();\r\n if (fabricatorState.settings.useMarkUpFeaturesRequests && featuresResponse\r\n && Array.isArray(featuresResponse) && featuresResponse.length) {\r\n if (skipRequestsFor.some(groupName => {\r\n return featuresResponse.every(dbFeature => dbFeature.groupName === groupName)\r\n })) {\r\n return featuresResponse\r\n }\r\n const markUpResponse = await getMarkUpForFeatures(featuresResponse);\r\n setResponseFeaturesMarkUp(featuresResponse, markUpResponse);\r\n }\r\n return featuresResponse\r\n}\r\n\r\nexport const getBvFeatures = async (arrayOfIds, arrayOfSkus = null, requestSharedFeatureNames = false, forVisualizer) => {\r\n const featuresResponse = await JsonApi.getBathroomVisualizerFeatures(arrayOfIds, arrayOfSkus, requestSharedFeatureNames, forVisualizer);\r\n await updateFeaturesWithMarkUp(featuresResponse ? featuresResponse.data : [])\r\n return featuresResponse\r\n};\r\n\r\nexport const getBvGroups = (visualizerType) => {\r\n return JsonApi.getBathroomVisualizerGroups(visualizerType)\r\n};\r\n\r\n/**\r\n * Main request to get features for feature group\r\n * @param groupName {string}\r\n * @param page {number}\r\n * @param pageSize {number}\r\n * @param filterValues {array}\r\n * @param searchText {string}\r\n * @param layoutAbbreviation {string}\r\n * @param axiosController {object}\r\n * @param requestOldFeatures {boolean}\r\n * @param visualizerType {string}\r\n * @returns {Promise<{data: []}>}\r\n */\r\nexport const getBvGroupFeatures = async (groupName, page, pageSize, filterValues, searchText = \"\", layoutAbbreviation, axiosController, requestOldFeatures, visualizerType) => {\r\n const featuresResponse = await JsonApi.getBathroomVisualizerGroupFeatures(groupName, page, pageSize, filterValues, searchText, layoutAbbreviation, axiosController, requestOldFeatures, visualizerType)\r\n await updateFeaturesWithMarkUp(featuresResponse);\r\n return featuresResponse\r\n};\r\nexport const getBvGroupFilterValues = async (groupName, filterId, withStoneFilters) => {\r\n const filterResponse = await JsonApi.getBathroomVisualizerGroupFilterValues(groupName, filterId, withStoneFilters);\r\n console.log(\"filterResponse\", filterResponse);\r\n if (filterResponse.data.error) {\r\n const {error} = filterResponse.data;\r\n renderErrorPopup(error);\r\n return {data: []}\r\n }\r\n return filterResponse\r\n};\r\n\r\nexport const submitPayment = (paymentInfo, useNewHoc = false) => { // submit is used in the WithPaymentSubmit HOC, all info is there\r\n const state = store.getState();\r\n const {serverState} = state;\r\n return JsonApi.submitPayment(useNewHoc ? paymentInfo : {\r\n ...paymentInfo,\r\n country: paymentInfo.country.name,\r\n fabricatorId: document.kvConfig.userId,\r\n jobId: document.kvConfig.jobId || serverState.jobId\r\n })\r\n .then(response => {\r\n store.dispatch({\r\n type: actionTypes.SUBMIT_PAYMENT_RESPONSE, // why do we need it? not used at all\r\n payload: response.data\r\n });\r\n if (useNewHoc) {\r\n const res = response.data;\r\n if (res.transactionResponse && res.transactionResponse.responseCode === '1') {\r\n // showQuoteSavedNotification();\r\n window.checkoutSuccess = true;\r\n const receiptUrl = store.getState().printState.receiptUrl;\r\n if (receiptUrl) {\r\n window.open(receiptUrl, \"_blank\");\r\n }\r\n } else {\r\n let msg = '';\r\n if (res && (res.transactionResponse && res.transactionResponse.errors && res.transactionResponse.errors.length > 0) || res.error) {\r\n msg = res.transactionResponse.errors[0].errorText || res.error;\r\n } else if (res && res.message && res.message.messageDetails.length > 0) {\r\n msg = res.message.messageDetails[0].text;\r\n }\r\n\r\n let sepIdx = lastIndexOf(msg, '-');\r\n if (sepIdx >= 0) {\r\n msg = trim(msg.substr(sepIdx + 1));\r\n }\r\n\r\n renderErrorPopup(msg, \"Card Error\");\r\n }\r\n }\r\n return response.data;\r\n })\r\n .catch(error => {\r\n renderErrorPopup(\"Server \"+new Error(error));\r\n loaderDisable();\r\n throw new Error(error);\r\n })\r\n};\r\n\r\nexport const getQtCategories = (layoutName, visualizerType) => {\r\n return JsonApi.getQtCategories(layoutName, visualizerType)\r\n .then(response => {\r\n if (!response.data || response.data.error || !Array.isArray(response.data)) {\r\n // store.dispatch(setQtCategories([]));\r\n console.error(\"get bvPresets error: No response data received\");\r\n return [];\r\n } else {\r\n const qtCategories = response.data.filter(qtCategory => {\r\n if (qtCategory.useWizard && IS_QKB_UI) {\r\n return true\r\n }\r\n return (qtCategory.name !== \"All\") && Array.isArray(qtCategory.featureGroups) && qtCategory.featureGroups.length\r\n });\r\n if (Config.isDevMode()) {\r\n console.log('qtCategories-->', qtCategories);\r\n }\r\n // store.dispatch(setQtCategories(qtCategories)); // with features inside featureGroups it becomes HUUUGE\r\n return qtCategories\r\n }\r\n })\r\n .catch(error => {\r\n renderErrorPopup(\"Server \"+new Error(error));\r\n loaderDisable();\r\n throw new Error(error);\r\n })\r\n};\r\n\r\nexport const getFabricatorSubscriptions = (fabricatorId = document.kvConfig.userId) => {\r\n return JsonApi.getFabricatorSubscriptions(fabricatorId)\r\n .then(response => {\r\n if (!response || !response.data || response.data.error) {\r\n console.error(\"getFabricatorSubscriptions error: No response data received\");\r\n } else {\r\n // console.log(\"response getFabricatorSubscriptions\", response);\r\n if (Array.isArray(response.data.subscriptions)) {\r\n store.dispatch(setFabricatorSubscriptions(response.data.subscriptions));\r\n }\r\n if (response.data.fabricatorTaxes) {\r\n store.dispatch(setFabricatorTaxes(response.data.fabricatorTaxes));\r\n }\r\n if (document.kvConfig.isCaesarStone && response.data.fabricatorData\r\n && response.data.fabricatorData.fabricatorName === \"QC Master Account CAN\") {\r\n response.data.fabricatorData.wasCreatedFromFabricator = \"QC Master Account CAN\";\r\n }\r\n const globalMarkUp = response.data.fabricatorData && response.data.fabricatorData.globalMarkUp\r\n ? parseMarkUp(response.data.fabricatorData.globalMarkUp)\r\n : \"\";\r\n if (globalMarkUp) {\r\n store.dispatch(setMarkUpLogic(globalMarkUp)) // also it can be restored with the cartState on job open\r\n }\r\n store.dispatch(setFabricatorData(response.data.fabricatorData));\r\n if (IS_DEALER_FLOW) {\r\n setDealerUserFromFabricator(response.data.fabricatorData);\r\n }\r\n }\r\n })\r\n .catch(error => {\r\n // console.error(+new Error(error));\r\n renderErrorPopup(\"Server Error. Check Subscription Status\", \"\", getFabricatorSubscriptions.bind(this, fabricatorId));\r\n loaderDisable();\r\n throw new Error(error);\r\n })\r\n};\r\n\r\nexport const getDiscounts = (fabricatorId = document.kvConfig.userId) => {\r\n return JsonApi.getFabricatorDiscounts(fabricatorId)\r\n .then(response => {\r\n if (!response || !response.data || response.data.error) {\r\n console.error(\"getFabricatorDiscounts error: No response data received\");\r\n } else {\r\n console.log(\"response getFabricatorDiscounts\", response);\r\n if (Array.isArray(response.data)) {\r\n const discountSections = response.data\r\n .map(discountSection => {\r\n discountSection.discounts = Array.isArray(discountSection.discounts)\r\n ? discountSection.discounts.filter(dis => dis.enabled)\r\n : [];\r\n discountSection.discounts = discountSection.discounts.map(discount => {\r\n if (isSaveOnlyDiscount(discount)) {\r\n discount.selected = true;\r\n }\r\n return discount\r\n })\r\n return discountSection\r\n })\r\n .filter(discountSection => discountSection.discounts.length)\r\n store.dispatch(setDiscountSections(discountSections));\r\n }\r\n }\r\n });\r\n};\r\n\r\nexport const getNavigationButtons = (testConnection = false) => {\r\n let forTool = \"\";\r\n switch(document.kvConfig.visualizerType) {\r\n case \"Bathroom\":\r\n case \"BV\":\r\n case \"bvScene\":\r\n case \"bvLook\":\r\n forTool = \"bv\";\r\n break;\r\n case \"Kitchen\":\r\n case \"kvScene\":\r\n forTool = \"kv\";\r\n break;\r\n default:\r\n forTool = document.kvConfig.visualizerType;\r\n break;\r\n }\r\n return JsonApi.getMenuNavigation(forTool, testConnection)\r\n .then(menuData => {\r\n if (document.kvConfig.kioskMode || testConnection) {\r\n return false\r\n }\r\n store.dispatch(loadMobileNav(menuData.data));\r\n return menuData\r\n })\r\n .catch(error => {\r\n if (testConnection) {\r\n renderErrorPopup(error, \"\", getNavigationButtons.bind(this, true));\r\n }\r\n return error\r\n });\r\n};\r\n\r\nexport const copySqftImagesToAnotherJob = (fabricatorId = document.kvConfig.userId, postData) => {\r\n return JsonApi.copySqftImages(fabricatorId, postData)\r\n .then(response => response.data)\r\n .catch(error => {\r\n renderErrorPopup(\"Server \"+new Error(error));\r\n loaderDisable();\r\n throw new Error(error);\r\n })\r\n};\r\n","import * as types from \"./actionTypes\";\r\nimport {getCurrentLayout} from \"../bvcomponents/appLayout\";\r\nimport {getBvFeatures} from \"../api/server-api\";\r\nimport {IS_QKB_UI} from \"../config\";\r\nimport {\r\n changeWizardValuesToUseNewGroups,\r\n getConflictingWizardSteps, getNextWizardSteps,\r\n getWizardVisualizerType, isSameVisualizerWizard, switchCartItemsToNewWizardGroups\r\n} from \"../bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardFunctions2\";\r\nimport {getUpdatedAllWizardValues} from \"../reducers/wizardReducer\";\r\nimport {changeAllCartItems} from \"./shoppingCartFunctions\";\r\nimport {navItemIsExcluded} from \"../bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\n\r\nexport const setWizardIsActive = (wizardIsActive, visualizerType) => ({\r\n type: types.SET_WIZARD_IS_ACTIVE,\r\n payload: {wizardIsActive, visualizerType}\r\n});\r\n\r\nexport const setWizardConfig = (wizardConfig) => ({\r\n type: types.SET_WIZARD_CONFIG,\r\n payload: {wizardConfig}\r\n});\r\n\r\nexport const setWizardList = (wizardList) => ({\r\n type: types.SET_WIZARD_LIST,\r\n payload: {wizardList}\r\n});\r\n\r\nexport const setWizardActiveItem = (wizardActiveItem, quoteIndex = null) => {\r\n return (dispatch, getState) => {\r\n const {quotesState} = getState();\r\n\r\n dispatch({\r\n type: types.SET_WIZARD_ACTIVE_ITEM,\r\n payload: {\r\n wizardActiveItem,\r\n quoteIndex: Number.isInteger(quoteIndex) ? quoteIndex : quotesState.activeQuoteIndex,\r\n }\r\n })\r\n }\r\n};\r\n\r\nexport const setWizardShowFeatureSection = (wizardShowFeatureSection) => ({\r\n type: types.SET_WIZARD_SHOW_FEATURE_SECTION,\r\n payload: {wizardShowFeatureSection}\r\n});\r\n\r\nexport const setWizardActiveStep = (wizardActiveStep, currentWizardItem = null, currentQuoteIndex = null) => {\r\n return (dispatch, getState) => {\r\n const {quotesState, wizardState} = getState();\r\n\r\n const quoteIndex = Number.isInteger(currentQuoteIndex) ? currentQuoteIndex : quotesState.activeQuoteIndex;\r\n const wizardItem = currentWizardItem || wizardState.wizardActiveItem;\r\n\r\n let wizardConflictingSteps = wizardState.wizardConflictingSteps;\r\n let newWizValues = Object.assign({}, wizardState.wizardSelectedValues);\r\n if (!IS_QKB_UI) {\r\n Object.keys(wizardState.wizardSelectedValues).reverse().forEach(selectedKeyNumber => { // erase conflicting selected steps!\r\n if (selectedKeyNumber > wizardActiveStep) {\r\n delete newWizValues[selectedKeyNumber]\r\n }\r\n });\r\n }\r\n if (wizardState.wizardConflictingSteps.length) {\r\n wizardConflictingSteps = [];\r\n }\r\n let allWizardsValues = wizardState.allWizardsValues;\r\n if (wizardItem) {\r\n allWizardsValues = wizardState.allWizardsValues.map(wizObject => {\r\n if (wizObject.wizardItemId === wizardItem.id && wizObject.quoteIndex === quoteIndex\r\n && isSameVisualizerWizard(wizObject)) {\r\n wizObject.lastVisitedStep = wizardActiveStep // keep it up to date to be able to restore\r\n if (wizardState.wizardConflictingSteps.length) {\r\n wizObject.wizardSelectedValues = Object.assign({}, newWizValues)\r\n }\r\n }\r\n return wizObject\r\n })\r\n }\r\n\r\n dispatch({\r\n type: types.SET_WIZARD_ACTIVE_STEP,\r\n payload: {\r\n wizardActiveStep,\r\n wizardSelectedValues: newWizValues,\r\n wizardConflictingSteps,\r\n allWizardsValues,\r\n quoteIndex,\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport const clearWizardSelectedValue = (neededStep, currentWizardItem = null, currentQuoteIndex = null) => {\r\n return (dispatch, getState) => {\r\n const {quotesState, wizardState} = getState();\r\n\r\n const quoteIndex = Number.isInteger(currentQuoteIndex) ? currentQuoteIndex : quotesState.activeQuoteIndex;\r\n const wizardItem = currentWizardItem || wizardState.wizardActiveItem;\r\n\r\n let newWizValues = Object.assign({}, wizardState.wizardSelectedValues);\r\n Object.keys(wizardState.wizardSelectedValues).forEach(selectedKeyNumber => { // erase conflicting selected steps!\r\n if (+selectedKeyNumber === +neededStep) {\r\n delete newWizValues[selectedKeyNumber]\r\n }\r\n });\r\n let allWizardsValues = wizardState.allWizardsValues;\r\n if (wizardItem) {\r\n allWizardsValues = wizardState.allWizardsValues.map(wizObject => {\r\n if (wizObject.wizardItemId === wizardItem.id && wizObject.quoteIndex === quoteIndex\r\n && isSameVisualizerWizard(wizObject)) {\r\n if (wizardState.wizardConflictingSteps.length) {\r\n wizObject.wizardSelectedValues = Object.assign({}, newWizValues)\r\n }\r\n }\r\n return wizObject\r\n })\r\n }\r\n\r\n dispatch({\r\n type: types.SET_WIZARD_SELECTED_VALUES,\r\n payload: {\r\n wizardSelectedValues: newWizValues,\r\n allWizardsValues,\r\n quoteIndex,\r\n wizardConflictingSteps: wizardState.wizardConflictingSteps\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport const setWizardSelectedValues = (wizardSelectedValues, direct = false, wizardItem = null, currentQuoteIndex = null) => {\r\n return (dispatch, getState) => {\r\n const {quotesState, wizardState, cartState, fabricatorState} = getState();\r\n const {cartItems} = cartState;\r\n const wizardActiveItem = wizardItem || wizardState.wizardActiveItem;\r\n const quoteIndex = Number.isInteger(currentQuoteIndex) ? currentQuoteIndex : quotesState.activeQuoteIndex;\r\n\r\n let wizardConflictingSteps = wizardState.wizardConflictingSteps;\r\n\r\n if (!direct && Object.keys(wizardSelectedValues).length === 1) {\r\n const currentStep = Object.keys(wizardSelectedValues)[0];\r\n if (currentStep) {\r\n const wizardGroup = wizardSelectedValues[currentStep].wizardGroup;\r\n const selectedFeature = wizardSelectedValues[currentStep].selectedFeature;\r\n if (wizardGroup && wizardGroup.mergedGroups && selectedFeature) {\r\n const realWizardGroup = wizardGroup.mergedGroups.find(wizG => !navItemIsExcluded({part: selectedFeature}, wizG));\r\n if (realWizardGroup) {\r\n if ((realWizardGroup.id !== wizardSelectedValues[currentStep].wizardGroup.id)) {\r\n wizardSelectedValues[currentStep].wizardGroup = Object.assign({}, wizardGroup, {\r\n id: realWizardGroup.id\r\n });\r\n // console.log(\"accurateWizardGroup!\", wizardSelectedValues[currentStep].wizardGroup);\r\n }\r\n } else {\r\n console.log(\"how is that possible? wizardGroup.mergedGroups\", wizardGroup.mergedGroups, selectedFeature);\r\n }\r\n }\r\n }\r\n }\r\n\r\n let newWizValues = direct\r\n ? Object.assign({}, wizardSelectedValues)\r\n : Object.assign({}, wizardState.wizardSelectedValues, wizardSelectedValues);\r\n\r\n // console.log(\"newWizValues\", newWizValues);\r\n\r\n if (IS_QKB_UI && fabricatorState.settings.checkout && cartItems.length && !direct\r\n && wizardSelectedValues && Object.keys(wizardSelectedValues).length === 1) {\r\n\r\n const currentStep = +Object.keys(wizardSelectedValues)[0];\r\n const commonObject = {wizardActiveItem, quoteIndex, wizardSelectedValues};\r\n let newWizardSteps = getNextWizardSteps(wizardActiveItem, currentStep, newWizValues);\r\n\r\n // console.log(\"newWizardSteps\", newWizardSteps);\r\n // here we replace cartItems to match new selections! to prevent conflicting\r\n let {updatedWizardValues, shouldReassignValues} = changeWizardValuesToUseNewGroups(newWizValues, newWizardSteps);\r\n if (shouldReassignValues) {\r\n newWizValues = updatedWizardValues;\r\n // create new steps according to new values\r\n newWizardSteps = getNextWizardSteps(wizardActiveItem, currentStep, newWizValues);\r\n // console.log(\"newWizardSteps2!\", newWizardSteps);\r\n }\r\n // here we replace cartItems to match new selections! to prevent conflicting\r\n let {newCartItems, shouldReassign} = switchCartItemsToNewWizardGroups(\r\n newWizardSteps,\r\n commonObject,\r\n cartItems,\r\n );\r\n if (shouldReassign) {\r\n dispatch(changeAllCartItems([...newCartItems]))\r\n }\r\n\r\n wizardConflictingSteps = getConflictingWizardSteps(\r\n newWizValues,\r\n commonObject,\r\n newCartItems,\r\n newWizardSteps,\r\n );\r\n }\r\n\r\n if (wizardActiveItem) {\r\n // console.log(\"wizardConflictingSteps\", action.payload.wizardConflictingSteps);\r\n // this works for QKB UI only for now, we are not using it on lixil\r\n const allWizardsValues = wizardConflictingSteps.length // do not change them to be able to restore when wizard is closed\r\n ? wizardState.allWizardsValues\r\n : getUpdatedAllWizardValues(wizardState, quoteIndex, wizardActiveItem.id, newWizValues);\r\n\r\n dispatch({\r\n type: types.SET_WIZARD_SELECTED_VALUES,\r\n payload: {\r\n quoteIndex,\r\n wizardSelectedValues: newWizValues,\r\n allWizardsValues,\r\n wizardConflictingSteps\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n dispatch({\r\n type: types.SET_WIZARD_SELECTED_VALUES,\r\n payload: {\r\n wizardSelectedValues: newWizValues,\r\n wizardConflictingSteps,\r\n // direct,\r\n quoteIndex,\r\n // wizardActiveItem: wizardItem || wizardState.wizardActiveItem,\r\n // fabricatorState,\r\n // cartItems: cartState.cartItems\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport const setAllWizardSelectedValues = (wizardSelectedValues, quoteIndex, wizardItemId) => ({\r\n type: types.SET_ALL_WIZARD_SELECTED_VALUES,\r\n payload: {wizardSelectedValues, quoteIndex, wizardItemId}\r\n});\r\n\r\nconst getMissingWizardValuesFeatures = async (compressedAllWizardsValues) => {\r\n\r\n const missingFeatures = {};\r\n\r\n // 1) find missing features;\r\n compressedAllWizardsValues.forEach(wizardObject => {\r\n\r\n const visualizerType = getWizardVisualizerType(wizardObject, true);\r\n const layout = getCurrentLayout(visualizerType);\r\n\r\n if (!missingFeatures[visualizerType]) {\r\n missingFeatures[visualizerType] = [];\r\n }\r\n\r\n Object.keys(wizardObject.wizardSelectedValues).forEach(stepIndex => {\r\n const compressedFeature = wizardObject.wizardSelectedValues[stepIndex].selectedFeature;\r\n if (compressedFeature) {\r\n const featureGroup = layout.getFeatureGroupByPartId(compressedFeature.partId);\r\n if (!featureGroup && !missingFeatures[visualizerType].includes(compressedFeature.dbFeatureId)) {\r\n missingFeatures[visualizerType].push(compressedFeature.dbFeatureId);\r\n return\r\n }\r\n const loadedFeature = layout.getLoadedFeatureById(compressedFeature.dbFeatureId, featureGroup);\r\n if (!loadedFeature && !missingFeatures[visualizerType].includes(compressedFeature.dbFeatureId)) {\r\n missingFeatures[visualizerType].push(compressedFeature.dbFeatureId);\r\n }\r\n }\r\n });\r\n })\r\n\r\n // 2) get missing features from the backend;\r\n for (let visualizerType of Object.keys(missingFeatures)) {\r\n if (missingFeatures[visualizerType].length) {\r\n // loaderEnable();\r\n const featuresFromJob = await getBvFeatures(missingFeatures[visualizerType]);\r\n if (featuresFromJob && featuresFromJob.data) {\r\n // console.log(\"featuresFromJob\", featuresFromJob.data);\r\n const layout = getCurrentLayout(visualizerType);\r\n layout.loadNewFeatures(featuresFromJob.data);\r\n }\r\n // loaderDisable();\r\n }\r\n }\r\n return Promise.resolve()\r\n}\r\nconst getRestoredWizardValues = (compressedAllWizardsValues, wizardList) => {\r\n\r\n // 3) now we can set the values\r\n let allWizardsValues = [];\r\n compressedAllWizardsValues.forEach(wizardObject => {\r\n let wizardValues = {};\r\n const wizardItem = wizardList.find(wizItem => wizItem.id === wizardObject.wizardItemId);\r\n if (!wizardItem) {\r\n console.log(\"hmmm, it looks like the wizard was deleted, but it was active in the job\", wizardObject);\r\n return\r\n }\r\n\r\n const visualizerType = getWizardVisualizerType(wizardObject, true);\r\n const layout = getCurrentLayout(visualizerType);\r\n\r\n Object.keys(wizardObject.wizardSelectedValues).forEach(stepIndex => {\r\n\r\n const selectedWizardObject = Object.assign({}, wizardObject.wizardSelectedValues[stepIndex]);\r\n\r\n //3.1) copy all other values\r\n wizardValues[stepIndex] = selectedWizardObject.wizardGroup ? Object.assign({}, selectedWizardObject, {\r\n wizardGroup: Object.assign({}, selectedWizardObject.wizardGroup, {\r\n mergedGroups: selectedWizardObject.wizardGroup.mergedGroups ? [] : null\r\n })\r\n }) : Object.assign({}, selectedWizardObject)\r\n\r\n //3.2) update wizardGroup with all excluded features\r\n if (selectedWizardObject.wizardGroup) {\r\n const realWizardGroup = wizardItem.wizardGroups.find(wizGroup => wizGroup.id === selectedWizardObject.wizardGroup.id);\r\n if (realWizardGroup) {\r\n wizardValues[stepIndex].wizardGroup = realWizardGroup;\r\n } else {\r\n console.log(\"wizard was changed, wizard group not found\", selectedWizardObject.wizardGroup);\r\n wizardValues[stepIndex] = {};\r\n }\r\n if (selectedWizardObject.wizardGroup.mergedGroups && realWizardGroup) {\r\n selectedWizardObject.wizardGroup.mergedGroups.forEach(compressedWG => {\r\n const foundWg = wizardItem.wizardGroups.find(wizGroup => {\r\n return wizGroup.id === compressedWG.id && wizGroup.groupName === compressedWG.groupName\r\n });\r\n if (foundWg) {\r\n if (!wizardValues[stepIndex].wizardGroup.mergedGroups) {\r\n wizardValues[stepIndex].wizardGroup.mergedGroups = [];\r\n }\r\n wizardValues[stepIndex].wizardGroup.mergedGroups.push(Object.assign({}, foundWg, {mergedGroups: null})); // to prevent circular\r\n } else {\r\n console.log(\"WIZARD WAS CHANGED, merged wizard group can't be found!\", );\r\n }\r\n })\r\n }\r\n }\r\n\r\n //3.3) update selectedFeature\r\n if (selectedWizardObject.selectedFeature) {\r\n const featureGroup = layout.getFeatureGroupByPartId(selectedWizardObject.selectedFeature.partId);\r\n wizardValues[stepIndex].selectedFeature = featureGroup\r\n ? layout.getLoadedFeatureById(selectedWizardObject.selectedFeature.dbFeatureId, featureGroup)\r\n : null;\r\n }\r\n });\r\n allWizardsValues.push(Object.assign({}, wizardObject, {wizardSelectedValues: wizardValues}));\r\n })\r\n console.log(\"restoring allWizardsValues:\", allWizardsValues);\r\n return allWizardsValues\r\n}\r\n\r\nexport const updateAllWizardValues = (allWizardsValues) => ({\r\n type: types.RESTORE_ALL_WIZARD_SELECTED_VALUES,\r\n payload: {allWizardsValues}\r\n})\r\n\r\nexport const restoreAllWizardSelectedValues = (compressedAllWizardsValues) => {\r\n return async (dispatch, getState) => {\r\n const {wizardState} = getState();\r\n await getMissingWizardValuesFeatures(compressedAllWizardsValues);\r\n const valuesToRestore = getRestoredWizardValues(compressedAllWizardsValues, wizardState.wizardList);\r\n dispatch(updateAllWizardValues(valuesToRestore));\r\n }\r\n}\r\n\r\nexport const setWizardMissingFeatures = (groupName = \"\", wizardMissingFeatures = []) => ({\r\n type: types.SET_WIZARD_MISSING_FEATURES,\r\n payload: {\r\n groupName,\r\n wizardMissingFeatures\r\n }\r\n});\r\n\r\nexport const setWizardConflictPopupOpened = (wizardConflictPopupOpened) => ({\r\n type: types.SET_WIZARD_CONFLICT_POPUP_OPENED,\r\n payload: {wizardConflictPopupOpened}\r\n});\r\n\r\nexport const setWizardConflictSteps = (wizardConflictingSteps) => ({\r\n type: types.SET_WIZARD_CONFLICT_STEPS,\r\n payload: {wizardConflictingSteps}\r\n});\r\n\r\nexport const setWizardSqftCartItems = (wizardSqftCartItems) => ({\r\n type: types.SET_WIZARD_SQFT_CART_ITEMS,\r\n payload: {wizardSqftCartItems}\r\n});\r\n\r\nexport const setWizardAllowSkipDoneSteps = (wizardAllowSkipDoneSteps) => ({\r\n type: types.SET_WIZARD_ALLOW_SKIP_DONE_STEPS,\r\n payload: {wizardAllowSkipDoneSteps}\r\n});\r\n","import {useCallback, useEffect, useMemo, useRef, useState} from \"react\";\r\nimport sqftEventManager from \"../bvcomponents/sqft/components/canvas/store/sqftEventManager\";\r\nimport {checkIfLookFeaturesReceived} from \"../api/look-api\";\r\nimport store from \"../store\";\r\nimport {updateNavigationCount} from \"../actions/lookFunctions\";\r\nimport Config from \"../config\";\r\nimport {getRoomLayouts} from \"../bvcomponents/look/lookNavigation/lookFunctions\";\r\nimport {isProd} from \"./fabricatorHardcode\";\r\n\r\nexport const usePrevious = (value) => {\r\n const ref = useRef();\r\n useEffect(() => {\r\n ref.current = value;\r\n });\r\n return ref.current;\r\n}\r\n\r\nexport const useIsMounted = () => {\r\n const isMountedRef = useRef(true);\r\n const isMounted = useCallback(() => isMountedRef.current, []);\r\n\r\n useEffect(() => {\r\n return () => void (isMountedRef.current = false);\r\n }, []);\r\n\r\n return isMounted;\r\n}\r\n\r\nexport const IsMountedComponent = (props) => {\r\n const {children} = props;\r\n const isMountedComponent = useIsMounted();\r\n return typeof children === 'function' ? children(isMountedComponent) : children;\r\n}\r\n\r\nexport const useOutsideClick = (ref, callback, useSQFTCanvas = false) => {\r\n const handleClick = e => {\r\n if (ref.current && !ref.current.contains(e.target)) {\r\n callback(e);\r\n }\r\n };\r\n\r\n const handleClickThroughCanvasEvents = (mousePos, e) => {\r\n if (ref.current && !ref.current.contains(e.target)) {\r\n callback(e);\r\n }\r\n return false;\r\n };\r\n\r\n useEffect(() => {\r\n if (useSQFTCanvas) {\r\n const objectName = { name: 'helperOutsideClickHook' };\r\n\r\n document.addEventListener(sqftEventManager.events.CLICK, handleClick);\r\n //document.addEventListener(sqftEventManager.events.TOUCH_START, handleClick);\r\n sqftEventManager.addEvent(\r\n sqftEventManager.events.MOUSE_DOWN,\r\n handleClickThroughCanvasEvents,\r\n objectName,\r\n sqftEventManager.priorities.OVERALL\r\n );\r\n\r\n return () => {\r\n document.removeEventListener(sqftEventManager.events.CLICK, handleClick);\r\n //document.removeEventListener(sqftEventManager.events.TOUCH_START, handleClick);\r\n sqftEventManager.removeEvent(objectName);\r\n };\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [ref, callback, useSQFTCanvas]);\r\n};\r\n\r\nexport const useOutsideClickSimple = (ref, callback, excludedClassNames = null) => {\r\n const handleClick = event => {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n if (excludedClassNames && excludedClassNames.some(className => {\r\n return event.target.classList.contains(className) || event.target.closest(\".\"+className)\r\n })) {\r\n return\r\n }\r\n callback(event);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n document.addEventListener(\"click\", handleClick);\r\n\r\n return () => {\r\n document.removeEventListener(\"click\", handleClick);\r\n };\r\n });\r\n};\r\n\r\nexport const useProgressiveImage = (imageUrl) => {\r\n\r\n const [thumbnailLoaded, setThumbnailLoaded] = useState(false)\r\n const isMounted = useIsMounted();\r\n\r\n useEffect(() => {\r\n const image = new Image();\r\n image.onload = () => {\r\n if (isMounted()) {\r\n setThumbnailLoaded(true)\r\n }\r\n };\r\n image.onerror = () => {\r\n if (isMounted()) {\r\n setThumbnailLoaded(true)\r\n }\r\n };\r\n try {\r\n image.src = imageUrl;\r\n if (image.complete) {\r\n if (isMounted()) {\r\n setThumbnailLoaded(true)\r\n }\r\n }\r\n } catch (e) {\r\n if (isMounted()) {\r\n setThumbnailLoaded(true)\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [imageUrl])\r\n\r\n return thumbnailLoaded\r\n}\r\n\r\nlet requestInProgressTimeoutId = null;\r\n\r\nexport const useFeaturesChecker = (featureGroup, visualizersLoadedLength) => {\r\n\r\n const [featuresLoaded, setFeaturesLoaded] = useState(featureGroup ? featureGroup.allFeaturesReceived : false)\r\n const isMounted = useIsMounted();\r\n\r\n const checkFeatures = () => {\r\n if (!featureGroup.allFeaturesReceived) {\r\n if (featureGroup.requestInProgress) {\r\n const callRecursiveFeaturesCheck = () => {\r\n console.log(\"callRecursiveFeaturesCheck\", featureGroup);\r\n if (featureGroup.allFeaturesReceived) {\r\n clearTimeout(requestInProgressTimeoutId);\r\n store.dispatch(updateNavigationCount());\r\n if (isMounted()) {\r\n setFeaturesLoaded(true)\r\n }\r\n return\r\n }\r\n requestInProgressTimeoutId = setTimeout(callRecursiveFeaturesCheck, 1000); // check every second for response\r\n };\r\n setTimeout(callRecursiveFeaturesCheck, 1000); // first time\r\n } else {\r\n checkIfLookFeaturesReceived(featureGroup).then(() => {\r\n // store.dispatch(updateFeatureGroupCount());\r\n store.dispatch(updateNavigationCount());\r\n if (isMounted()) {\r\n setFeaturesLoaded(true)\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (!featureGroup || !visualizersLoadedLength) {\r\n return false\r\n }\r\n if (!featureGroup.allFeaturesReceived) {\r\n checkFeatures()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [featureGroup, visualizersLoadedLength])\r\n\r\n return featuresLoaded\r\n}\r\n\r\nexport const useShowRoomLayoutsButton = (activePreset, isMobile, visualizersLoadedLength) => {\r\n return useMemo(() => {\r\n if (!visualizersLoadedLength) {\r\n return false\r\n }\r\n if (isMobile) {\r\n return false\r\n }\r\n if (Config.isVisualizerManagement()) {\r\n return true\r\n }\r\n if (isProd()) { // hided room scenes for production URLs\r\n return false\r\n }\r\n return getRoomLayouts().length > 1\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [activePreset, visualizersLoadedLength, isMobile])\r\n};\r\n","import invert from 'lodash/invert';\r\nimport uniqBy from 'lodash/uniqBy';\r\n\r\nimport {getFilterGroupValues, splitFeatureName} from \"../../../misc/utils\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\nimport {Part} from \"./part\";\r\nimport store from '../../../store';\r\nimport {LayoutAbbreviation, LayoutType} from \"./constants\";\r\nimport {getFeatureIsLocked} from \"../../../misc/helpers\";\r\n\r\n/**\r\n * Used for Complex parts such as Vanity, to perform some base functionality for related items\r\n */\r\nexport class IntermediatePart extends Part {\r\n\r\n constructor(isChild) {\r\n super(false, isChild);\r\n this.disabled = false;\r\n this.defaultDisabled = false; // used after reset click\r\n this.canBeDisabled = false;\r\n }\r\n\r\n /**\r\n * This will be called on feature creation\r\n * @param dbFeature\r\n */\r\n load(dbFeature) {\r\n if (dbFeature.metaData[\"Part\"]) {\r\n const partNumber = +dbFeature.metaData[\"Part\"][0];\r\n return this.load_(dbFeature, new this.constructor(false, partNumber), true, partNumber === 1 ? 'features' : 'featuresParts');\r\n }\r\n return this.load_(dbFeature, new this.constructor());\r\n }\r\n\r\n /**\r\n * This will be called by the underlying vanity feature with a concrete instance of the part\r\n * @param dbFeature\r\n * @param part {Part}\r\n * @param setParent {boolean}\r\n * @param features\r\n */\r\n load_(dbFeature, part, setParent = true, features = 'features') {\r\n\r\n if (!dbFeature.s3Bindings && features === \"featuresParts\") { // keep not-in-visualizer features in the main list\r\n features = \"features\"\r\n }\r\n\r\n const featureList = features + \"List\";\r\n\r\n const {displayName} = dbFeature;\r\n let {featureName} = splitFeatureName(displayName, dbFeature.groupName);\r\n if (!featureName && dbFeature.groupName && dbFeature.displayName) {\r\n featureName = dbFeature.displayName.replace(dbFeature.groupName + \" - \", \"\")\r\n }\r\n // console.log('displayName:', displayName);\r\n\r\n if (setParent) {\r\n part.getParent = () => this;\r\n if (dbFeature.galleryImages) {\r\n const featured = dbFeature.galleryImages.find(galImage => galImage.featured);\r\n if (featured) {\r\n this.featuredImage = featured.url\r\n }\r\n dbFeature.galleryImages = dbFeature.galleryImages.sort((a, b) => b.default - a.default)\r\n }\r\n }\r\n\r\n if (!dbFeature.sharedFeatureName) {\r\n console.error(\"No sharedFeatureName property:\", dbFeature);\r\n }\r\n\r\n part.partName = featureName;\r\n part.metaData = dbFeature.metaData || {};\r\n\r\n if (dbFeature.s3Bindings && dbFeature.s3Bindings.length) {\r\n // dbFeature.s3Bindings = dbFeature.s3Bindings.filter(binding => binding.visualizer === \"KitchenV5\")\r\n if (!dbFeature.metaData[\"CropCoords\"]) {\r\n dbFeature.s3Bindings = dbFeature.s3Bindings.map(object => {\r\n object.path = object.path.replace(\"-copy\", \"\");\r\n return object\r\n })\r\n }\r\n }\r\n\r\n part.dbFeature = dbFeature || {};\r\n if (!part.dbFeature.filterValueIDs) {\r\n part.dbFeature.filterValueIDs = {}\r\n }\r\n part.notAvailableInVisualizer = !dbFeature.s3Bindings || !dbFeature.s3Bindings.length;\r\n\r\n let someLayoutFound = false;\r\n if (part.metaData.RoomLayout) {\r\n const roomLayout = part.metaData.RoomLayout;\r\n if (roomLayout.includes(LayoutAbbreviation.All)) {\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this[featureList][layoutName].push(part);\r\n })\r\n } else if (Array.isArray(roomLayout) && roomLayout.length) {\r\n roomLayout.forEach(roomLayoutAbbreviation => {\r\n const layoutName = invert(LayoutAbbreviation)[roomLayoutAbbreviation];\r\n if (layoutName) { // Prevent bad roomLayout Metadata\r\n if (!someLayoutFound) {\r\n someLayoutFound = true;\r\n }\r\n this[featureList][layoutName].push(part);\r\n }\r\n });\r\n } else { // single value\r\n const layoutName = invert(LayoutAbbreviation)[roomLayout];\r\n if (layoutName) {\r\n someLayoutFound = true;\r\n this[featureList][layoutName].push(part);\r\n }\r\n }\r\n }\r\n\r\n if (part.notAvailableInVisualizer || !part.metaData.RoomLayout || !someLayoutFound) {\r\n part.notAvailableInVisualizer = true;\r\n if (!someLayoutFound) {\r\n // remove old version layers so the feature will be as simple not-in-visualizer feature\r\n part.metaData.RoomLayout = null;\r\n part.dbFeature.metaData.RoomLayout = null;\r\n part.dbFeature.s3Bindings = null;\r\n }\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this[featureList][layoutName].push(part);\r\n })\r\n }\r\n\r\n // Object.keys(LayoutType).forEach(layoutName => {\r\n // this[features+\"List\"][layoutName].push(part);\r\n // });\r\n\r\n this.loadFeatureCommon(part);\r\n\r\n return part\r\n }\r\n\r\n getActiveFeatureConditions() {\r\n return this.getArrayOfConditions()\r\n }\r\n\r\n // navigationSubItems(filters, searchText, forFeature, filterGroups, firstOpenedFeature, firstOpenedConditions) { // to do\r\n navigationSubItems(filters, searchText, forFeature, filterGroups, restOptions = {}) {\r\n // const {firstOpenedFeature, firstOpenedConditions, returnAllFeatures} = restOptions;\r\n const {returnAllFeatures} = restOptions;\r\n const featuresList = this.getFeaturesForNavigationFrom(restOptions);\r\n\r\n // const featuresList = (forFeature && forFeature.metaData.layerPosition === SIDE_POSITIONS[1]) ? this.featuresParts : this.features;\r\n const filteredAvailableFeatures = this.getFeaturesBySearchText(this.getFilteredFeaturesByFilters(filters, featuresList), searchText);\r\n let featuresToDisplay = returnAllFeatures\r\n ? filteredAvailableFeatures\r\n : this.navigationSubItemsWithFilterMultipleConditions(this.getArrayOfConditions(true), filteredAvailableFeatures);\r\n // console.log(\"filterGroups\", filterGroups);\r\n if (returnAllFeatures) {\r\n featuresToDisplay = uniqBy(featuresToDisplay, (feature) => feature.dbFeature.sharedFeatureName);\r\n }\r\n return this.navigationItemsWithOptions(filters, forFeature, filterGroups, featuresToDisplay)\r\n }\r\n\r\n navigationSubItemsWithFilter(propName, propValue, featuresToCheck = this.features) {\r\n return featuresToCheck.filter((feature) => {\r\n return feature.matchesMetaForCondition(propName, propValue);\r\n }).map(_ => new DesignNavigationItem(_.featureName, _));\r\n }\r\n\r\n navigationSubItemsWithFilterMultipleConditions(arrayOfConditions, featuresToCheck = this.features) {\r\n // console.log('arrayOfConditions', arrayOfConditions);\r\n // console.log('featuresToCheck', featuresToCheck);\r\n return featuresToCheck.filter((feature) => {\r\n return feature.notAvailableInVisualizer || arrayOfConditions.every((conditionObject) => {\r\n const {propName, propValue} = conditionObject;\r\n return feature.matchesMetaForCondition(propName, propValue);\r\n });\r\n })\r\n }\r\n\r\n setDefault(layout, setNotInVisFeature = this.hasNoVisualizerLayers) {\r\n this.setFeatureGroupDefault(layout, setNotInVisFeature)\r\n }\r\n\r\n setLayerPositions = (activeFeature = this.activeFeature) => {\r\n if (!activeFeature) {\r\n return\r\n }\r\n const layout = this.getParent().layout;\r\n const conditions = this.getArrayOfConditions();\r\n if (layout && this.defaultLayerLayoutPositions && this.defaultLayerLayoutPositions[layout.type]) {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if (this.defaultLayerLayoutPositions[layout.type] === key\r\n && (!this.layerPositions[key] || !this.layerPositions[key].matchesMetaForArrayOfConditions(conditions))) {\r\n this.layerPositions[key] = activeFeature;\r\n } else if (activeFeature.dbFeature.metaData[\"layerPosition\"] !== key) {\r\n this.layerPositions[key] = null;\r\n }\r\n })\r\n } else {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if (layout.initialized) {\r\n if ((activeFeature.dbFeature.metaData[\"layerPosition\"] === key)\r\n && (this.layerPositions[key] && !this.layerPositions[key].matchesMetaForArrayOfConditions(conditions))) {\r\n this.layerPositions[key] = activeFeature;\r\n // } else if (this.setAllLayerPositions) {\r\n } else if (this.layerPositions[key]) { // here we have to change vanity cabinet to console for example\r\n const matchingPositionFeature = this.getMatchingPositionFeature(key);\r\n if (matchingPositionFeature) {\r\n this.layerPositions[key] = matchingPositionFeature;\r\n }\r\n }\r\n } else { // first time we should set everything by the default! // missing layers issue\r\n if ((activeFeature.dbFeature.metaData[\"layerPosition\"] === key)\r\n && (!this.layerPositions[key] || !this.layerPositions[key].matchesMetaForArrayOfConditions(conditions))) {\r\n this.layerPositions[key] = activeFeature;\r\n // } else if (this.setAllLayerPositions) {\r\n } else {\r\n const matchingPositionFeature = this.getMatchingPositionFeature(key);\r\n if (matchingPositionFeature) {\r\n this.layerPositions[key] = matchingPositionFeature;\r\n }\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n toggleLayerPositions() {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n this.layerPositions[key] = this.disabled ? null : this.getMatchingPositionFeature(key)\r\n })\r\n }\r\n\r\n getMatchingPositionFeature = (position = \"\", fromFeature = this.activeFeature, fromLayout = null) => {\r\n if (fromFeature) { //just in case\r\n const name1 = fromFeature.getSplittedFeatureName();\r\n let arrayOfConditions = this.getArrayOfConditions();\r\n if (fromFeature.metaData[\"SkuName\"]) {\r\n arrayOfConditions.push({\r\n propName: \"SkuName\",\r\n propValue: fromFeature.metaData[\"SkuName\"]\r\n })\r\n }\r\n if (fromLayout) {\r\n let roomLayoutMeta = arrayOfConditions.find(condition => condition.propName === \"RoomLayout\");\r\n let roomSceneMeta = arrayOfConditions.find(condition => condition.propName === \"RoomScene\");\r\n if (roomLayoutMeta) {\r\n roomLayoutMeta.propValue = fromLayout.getCurrentLayoutAbbreviation();\r\n }\r\n if (roomSceneMeta) {\r\n roomSceneMeta.propValue = fromLayout.scene;\r\n }\r\n }\r\n const skuNamesPartIds = [\"shower_door\", \"walk_in_tub\", \"shower_pan_combo\"];\r\n const whereToFind = (!this.layerPositions || (position === Object.keys(this.layerPositions)[0])) ? this.features : this.featuresParts;\r\n return whereToFind.find((feature) => {\r\n return (skuNamesPartIds.includes(this.partId) || name1 === feature.getSplittedFeatureName())\r\n && feature.matchesMetaForArrayOfConditions(arrayOfConditions) && feature.metaData[\"layerPosition\"] === position\r\n });\r\n }\r\n return null\r\n };\r\n\r\n getArrayOfConditions() {\r\n const layout = this.getParent().layout;\r\n return [{\r\n propName: 'RoomLayout',\r\n propValue: layout.getCurrentLayoutAbbreviation()\r\n }, {\r\n propName: 'RoomScene',\r\n propValue: layout.scene\r\n }];\r\n }\r\n\r\n setLayers(layout) {\r\n if (this.hideLayerCondition && this.hideLayerCondition()) {\r\n this.hideLayers();\r\n return;\r\n }\r\n if (this.activeFeature && (this.activeFeature.matchesMetaForArrayOfConditions(this.getArrayOfConditions()))) {\r\n if (this.hasAdditionalParts) {\r\n this.checkIfFeaturePartIsMatching();\r\n }\r\n return this._setLayers(layout);\r\n }\r\n this.setDefault(layout);\r\n return this._setLayers(layout);\r\n }\r\n\r\n showLayerPositionsModal() {\r\n return false\r\n }\r\n\r\n clickFromAllWalls(ignoreLocked) {\r\n if (this && this.dbFeature && this.dbFeature.sharedFeatureName) {\r\n console.log(`${this.partId}:`, this.dbFeature.sharedFeatureName);\r\n }\r\n this.handleClick(ignoreLocked, \"all_walls\");\r\n }\r\n\r\n /**\r\n * @param ignoreLocked {boolean} // false by the default, is used by wizard ONLY\r\n * @param clickFrom {string} // is used for countertop and cabinet switchers, and walls\r\n */\r\n handleClick(ignoreLocked = false, clickFrom = \"\") {\r\n const parent = this.getParent();\r\n if (clickFrom !== \"all_walls\") {\r\n const {activeQuoteIndex} = store.getState().quotesState;\r\n parent.firstClick[activeQuoteIndex] = true; // allow to show active item\r\n }\r\n const featureIsLocked = getFeatureIsLocked(this, ignoreLocked);\r\n if (featureIsLocked) {\r\n parent.activeLockedFeature = this;\r\n } else {\r\n if (parent.activeLockedFeature) {\r\n parent.activeLockedFeature = null;\r\n }\r\n this.featureClick();\r\n }\r\n }\r\n\r\n featureClick() {\r\n const parent = this.getParent();\r\n parent.placeholderChanged = true;\r\n if (this.notAvailableInVisualizer) {\r\n parent.activeNotInVisualizerFeature = this; // do not change the activeFeature (in order to keep the layer)\r\n } else if (parent.activeNotInVisualizerFeature) {\r\n parent.activeNotInVisualizerFeature = null; // remove it from other searches and so on\r\n parent.activeFeature = this;\r\n } else {\r\n parent.activeFeature = this;\r\n }\r\n this.featureClicked();\r\n }\r\n\r\n hideLayers() {\r\n if (this.activeFeature) {\r\n this.activeFeature.layer.src = '';\r\n }\r\n if (Array.isArray(this.activeFeatureParts) && this.activeFeatureParts.length) {\r\n this.activeFeatureParts.forEach((activeFeaturePart) => {\r\n if (activeFeaturePart && activeFeaturePart.layer) {\r\n activeFeaturePart.layer.src = '';\r\n }\r\n })\r\n }\r\n if (this.placeholderFeature) {\r\n this.placeholderFeature.layer.src = '';\r\n }\r\n if (this.layerPositions) {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if (this.layerPositions[key]) {\r\n this.layerPositions[key].layer.src = '';\r\n }\r\n })\r\n }\r\n }\r\n\r\n setZIndex(zIndexes) {\r\n\r\n const getZIndex = (feature, partId = null) => {\r\n return feature.metaData[\"ZSorting\"] ? feature.metaData[\"ZSorting\"] * 1000 : zIndexes[partId || this.partId];\r\n }\r\n\r\n if (this.layerPositions) {\r\n Object.keys(this.layerPositions).forEach((key, keyIndex) => {\r\n const feature = this.layerPositions[key];\r\n if (feature) {\r\n feature.layer.zIndex = getZIndex(feature) + keyIndex*10;\r\n }\r\n })\r\n } else if (zIndexes && this.activeFeature) {\r\n this.activeFeature.layer.zIndex = getZIndex(this.activeFeature);\r\n if (this.hasAdditionalParts && this.activeFeatureParts && this.activeFeatureParts.length) {\r\n this.activeFeatureParts.forEach((activeFeaturePart, keyIndex) => {\r\n activeFeaturePart.layer.zIndex = getZIndex(activeFeaturePart, this.additionalPartPartId);\r\n if (this.partId === \"bottom_cabinet\" || this.partId === \"bottom_handle\" || (this.activeFeatureParts.length > 3)) {\r\n activeFeaturePart.layer.zIndex = activeFeaturePart.layer.zIndex + (keyIndex + 1);\r\n return\r\n }\r\n activeFeaturePart.layer.zIndex = activeFeaturePart.layer.zIndex + ((keyIndex + 1) * 10);\r\n });\r\n }\r\n }\r\n }\r\n\r\n removeEdgeFromPartName(partName) {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n const edgeFilterGroup = filterGroups.find(group => group.name === \"Edge\" || group.name === \"Edge Profile\");\r\n if (edgeFilterGroup && edgeFilterGroup.values && edgeFilterGroup.values.length) {\r\n const edgeFilterGroupValues = edgeFilterGroup.values.sort((a,b) => {\r\n return a.value && b.value && (b.value.length - a.value.length)\r\n }); // 1st should be \"Full Bullnose\", then simple \"Bullnose\"\r\n edgeFilterGroupValues.forEach((filterGroupValue) => { // arrayOf {id: 293, value: \"Eased\", displayText: \"Eased\", parent_id: null, icon: \"\", …}\r\n partName = partName.split(\" \"+filterGroupValue.value).join(\"\");\r\n });\r\n }\r\n return partName\r\n }\r\n\r\n getCountertopGroupsSplittedFeatureName = () => {\r\n if (this._countertopGroupsCustomDisplayName == null) {\r\n this._countertopGroupsCustomDisplayName = this.dbFeature.sharedFeatureName || \"\";\r\n }\r\n return this._countertopGroupsCustomDisplayName\r\n };\r\n\r\n getSplittedFeatureName = () => {\r\n if (this._customDisplayName == null || this.dbFeature.wasUpdatedFromAnotherResponse) {\r\n this._customDisplayName = this.dbFeature.sharedFeatureName || this.partName || \"\";\r\n switch (this.partId) {\r\n case \"center_island_countertop\": {\r\n this._customDisplayName = this._customDisplayName\r\n .replace(/2 0 /g, \"\")\r\n .replace(/Center Island Countertop 1 /g, \"\");\r\n const manufacturerFilter = getFilterGroupValues(this, {id: 35});\r\n if (Array.isArray(manufacturerFilter)) {\r\n this._customDisplayName = this._customDisplayName + manufacturerFilter[0]\r\n }\r\n break;\r\n }\r\n case \"countertop\":\r\n case \"backsplash\": {\r\n const manufacturerFilter = getFilterGroupValues(this, {id: 35});\r\n if (Array.isArray(manufacturerFilter)) {\r\n this._customDisplayName = this._customDisplayName + manufacturerFilter[0]\r\n }\r\n break;\r\n }\r\n case \"sink\":\r\n case \"center_island_sink\": {\r\n this._customDisplayName = this._customDisplayName\r\n .replace(/ D/g, \"\")\r\n .replace(/ Countertop/g, \"\")\r\n .replace(/ Island/g, \"\")\r\n break;\r\n }\r\n case \"hood\": {\r\n // cases when LG LSHD3089SS and LG LSHD3089DS should match\r\n this._customDisplayName = this._customDisplayName.substring(0, this._customDisplayName.length - 2);\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n if (this.dbFeature.wasUpdatedFromAnotherResponse) {\r\n this.dbFeature.wasUpdatedFromAnotherResponse = false;\r\n }\r\n return this._customDisplayName\r\n };\r\n\r\n getMatchingFeatureName = () => {\r\n return this.getSplittedFeatureName()\r\n };\r\n\r\n getModuleFeatureName = () => {\r\n // return this.partName.split(\" M_\")[0];\r\n return this.partName.split(\" M\")[0];\r\n };\r\n\r\n featureIsMatchingFilters(currentFeature, activeFilters, filters = []) {\r\n return filters.every(filter => {\r\n return activeFilters[filter.id]\r\n && currentFeature.dbFeature.filterValueIDs[filter.id]\r\n && currentFeature.dbFeature.filterValueIDs[filter.id].includes(activeFilters[filter.id][0])\r\n })\r\n }\r\n\r\n getActiveFeaturePartsAccordingToActiveFeature(fromFeature = this.activeFeature, activeFeatureConditions = []) {\r\n let activeFeatureParts = [];\r\n if (fromFeature && Number.isInteger(fromFeature.partNumber)) {\r\n let activeFeaturePart;\r\n const name1 = fromFeature.getSplittedFeatureName();\r\n // console.log(\"name1\", name1);\r\n let arrayOfConditions = activeFeatureConditions.length\r\n ? activeFeatureConditions\r\n : this.getActiveFeatureConditions(fromFeature);\r\n // if (this.partId === \"right_wall\") {\r\n // arrayOfConditions = arrayOfConditions.filter(condition => condition.propName !== \"MirrorSize\");\r\n // }\r\n activeFeatureParts = this.featuresParts.filter((feature) => name1 === feature.getSplittedFeatureName());\r\n // console.log(\"this.featuresParts\", this.featuresParts);\r\n // console.log(\"activeFeatureParts\", activeFeatureParts);\r\n if (activeFeatureParts.length) {\r\n activeFeaturePart = activeFeatureParts.find((feature) => {\r\n return feature.matchesMetaForArrayOfConditions(arrayOfConditions)\r\n });\r\n if (!activeFeaturePart) {\r\n activeFeaturePart = activeFeatureParts[0];\r\n }\r\n }\r\n activeFeatureParts = activeFeaturePart ? [activeFeaturePart] : [];\r\n activeFeatureParts.forEach((activeFeaturePart) => {\r\n activeFeaturePart.disabled = this.disabled\r\n });\r\n }\r\n return activeFeatureParts\r\n }\r\n\r\n checkIfFeaturePartIsMatching() {\r\n if (this.activeFeatureParts && this.activeFeatureParts.length) {\r\n const activeFeatureConditions = this.getActiveFeatureConditions();\r\n const name1 = this.activeFeature.getSplittedFeatureName();\r\n const activeFeaturePart = this.activeFeatureParts[0];\r\n if (!(activeFeaturePart.matchesMetaForArrayOfConditions(activeFeatureConditions)\r\n && name1 === activeFeaturePart.getSplittedFeatureName())) {\r\n this.activeFeatureParts = this.setActiveFeatureParts(this.activeFeature, activeFeatureConditions);\r\n }\r\n } else {\r\n this.activeFeatureParts = this.setActiveFeatureParts();\r\n }\r\n }\r\n\r\n setActiveFeatureParts(fromFeature = this.activeFeature, activeFeatureConditions = []) {\r\n return this.getActiveFeaturePartsAccordingToActiveFeature(fromFeature, activeFeatureConditions);\r\n }\r\n\r\n}\r\n","export const LayoutType = {\r\n Layout1: 1,\r\n Layout4: 4,\r\n};\r\n\r\nexport const LayoutAbbreviation = {\r\n All: \"ALL\",\r\n Layout1: \"Layout1\",\r\n Layout4: \"Layout4\",\r\n};\r\n\r\nexport const LayoutAbbreviations = [\r\n \"Layout1\",\r\n \"Layout4\",\r\n];\r\nexport const LayoutAbbreviationsToRemove = [\r\n \"Layout4\",\r\n \"Layout1\",\r\n];\r\n\r\nexport const METADATA = {\r\n ALL: \"ALL\",\r\n LeftSide: \"L\", // used as side for shower grab bars\r\n RightSide: \"R\", // used as side for shower grab bars\r\n Inner: \"Inner\", // used for sinks & faucets\r\n Outer: \"Outer\", // used for sinks & faucets\r\n};\r\n\r\nexport const ShowerComboTubType = {\r\n bathtub_liner: \"bathtub_liner\",\r\n replacement_tub: \"replacement_tub\",\r\n walk_in_tub: \"walk_in_tub\",\r\n jetted_tub: \"jetted_tub\",\r\n};\r\n\r\nexport const CountsType = {\r\n allLayoutFeaturesCount: \"All\", // not used\r\n largeLayoutFeaturesCount: \"Large\",\r\n smallLayoutFeaturesCount: \"Small\",\r\n totalFeaturesCount: \"Total\" // not used\r\n};\r\n\r\nexport const BathTubType = {\r\n Custom60in: 'Custom60in',\r\n FreeStanding: 'BathTubFreeStanding'\r\n};\r\n\r\nexport const VanityTypes = {\r\n Complete: 'Complete',\r\n Custom: 'Custom'\r\n};\r\n\r\nexport const ShowerBodyType = {\r\n Glass: 0,\r\n Door: 1\r\n};\r\n\r\nexport const PartMenuType = {\r\n Simple: 0, // i.e. Toilet - doesn't have any sub-items\r\n Complex: 1, // i.e. Vanity - has sub-menu items, Sink, Faucet Mirror\r\n};\r\n\r\nexport function bathTubTypeToString(bathTypeType) {\r\n switch (bathTypeType) {\r\n case BathTubType.Custom60in:\r\n return 'Custom';\r\n case BathTubType.FreeStanding:\r\n return 'Complete';\r\n }\r\n}\r\nexport function bathTubStringToType(bathtubString) {\r\n switch (bathtubString) {\r\n case 'custom':\r\n return BathTubType.Custom60in;\r\n case 'complete':\r\n return BathTubType.FreeStanding;\r\n }\r\n}\r\n\r\nexport const vanityWizardFilters = [\"Size\", \"DoorStyle\", \"Material\", \"Color\"];\r\n\r\nexport const showerWizardFilters = [\"Material\", \"DuraBathColor\", \"SlabColor\", \"TileColor\", \"TilePattern\", \"AcrylicPattern\", \"AcrylicColor\"];\r\n\r\nexport const NotQCVanityDoorStylesFilters = [\"Centennial\", \"Hudson\", \"Northbrook\", \"Osage\", \"Quebec\", \"Riverside\", \"Villager\", \"Zurich\"];\r\n\r\nexport const COUNTERTOP_GROUP_BATHROOM = [\"vanity_countertop\", \"vanity_backsplash\"];\r\n\r\nexport const CABINET_GROUP_BATHROOM = [\"vanity_cabinet\", \"vanity_mirror\"];\r\n\r\nexport const HANDLES_GROUP_BATHROOM = [\"door_handle\", \"drawer_handle\"];\r\n\r\nexport const SHOWER_FLOOR_GROUP_BATHROOM = [\"shower_floor\", \"shower_curb\"];\r\n\r\nexport const CORNER_SHELVES_POSITIONS = [\"L1\",\"L2\",\"L3\",\"R1\",\"R2\",\"R3\"];\r\n\r\nexport const SIDE_POSITIONS = [\"L\",\"R\"];\r\n\r\nexport const PAN_POSITIONS = [\"L\",\"C\",\"R\"];\r\n","import {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {injectIntl} from \"react-intl\";\r\n\r\nimport {getStringFeatureName} from \"../../misc/helpers\";\r\nimport {truncate} from \"../sqft/helpers/sqftHelper\";\r\n\r\nconst FeatureName = (props) => {\r\n const {feature, intl, fabricatorData, maxLength, filterGroups, useCollectionName} = props;\r\n let stringFeatureName = getStringFeatureName(feature, intl.messages, intl.locale, fabricatorData, filterGroups, useCollectionName);\r\n return parseInt(maxLength) === maxLength ? truncate(stringFeatureName, maxLength) : stringFeatureName;\r\n};\r\n\r\nFeatureName.propTypes = {\r\n maxLength: PropTypes.number,\r\n feature: PropTypes.object.isRequired,\r\n useCollectionName: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {filterGroups} = store.filterState;\r\n return {\r\n fabricatorData: store.fabricatorState,\r\n filterGroups,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(FeatureName)\r\n)\r\n\r\n","import invert from 'lodash/invert';\r\n\r\nimport {splitFeatureName} from \"../../../misc/utils\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\nimport {Part} from \"./part\";\r\nimport store from '../../../store';\r\nimport {LayoutAbbreviation, LayoutType, LayoutAbbreviationsToRemove, SIDE_POSITIONS, PAN_POSITIONS} from \"./constants\";\r\nimport {getFeatureIsLocked} from \"../../../misc/helpers\";\r\nimport {IS_BATHROOM_OLD_BV_SCENE} from \"../../../config\";\r\n\r\n/**\r\n * Used for Complex parts such as Vanity, to perform some base functionality for related items\r\n */\r\nexport class IntermediatePart extends Part {\r\n\r\n constructor(isChild) {\r\n super(false, isChild);\r\n this.disabled = false;\r\n this.defaultDisabled = false; // used after reset click\r\n this.canBeDisabled = false;\r\n }\r\n\r\n load(dbFeature) {\r\n return this.load_(dbFeature, new this.constructor());\r\n }\r\n\r\n /**\r\n * This will be called by the underlying vanity feature with a concrete instance of the part\r\n * @param dbFeature\r\n * @param part {Part}\r\n * @param setParent {boolean}\r\n * @param features\r\n */\r\n load_(dbFeature, part, setParent = true, features = 'features') {\r\n\r\n const featureList = features + \"List\";\r\n\r\n const {displayName} = dbFeature;\r\n let {featureName} = splitFeatureName(displayName);\r\n if (!featureName && dbFeature.groupName && dbFeature.displayName) {\r\n featureName = dbFeature.displayName.replace(dbFeature.groupName + \" - \", \"\")\r\n }\r\n // console.log('displayName:', displayName);\r\n\r\n if (setParent) {\r\n part.getParent = () => this;\r\n if (dbFeature.galleryImages) {\r\n const featured = dbFeature.galleryImages.find(galImage => galImage.featured);\r\n if (featured) {\r\n this.featuredImage = featured.url\r\n }\r\n dbFeature.galleryImages = dbFeature.galleryImages.sort((a, b) => b.default - a.default)\r\n }\r\n }\r\n\r\n if (!dbFeature.sharedFeatureName) {\r\n console.error(\"No sharedFeatureName property:\", dbFeature);\r\n }\r\n\r\n part.partName = featureName;\r\n part.metaData = dbFeature.metaData || {};\r\n\r\n if (dbFeature.s3Bindings && dbFeature.s3Bindings.length) {\r\n // dbFeature.s3Bindings = dbFeature.s3Bindings.filter(binding => binding.visualizer === \"BathroomV5\")\r\n }\r\n\r\n part.dbFeature = dbFeature || {};\r\n if (!part.dbFeature.filterValueIDs) {\r\n part.dbFeature.filterValueIDs = {}\r\n }\r\n part.notAvailableInVisualizer = !dbFeature.s3Bindings || !dbFeature.s3Bindings.length;\r\n\r\n if (part.metaData.RoomLayout) {\r\n const roomLayout = part.metaData.RoomLayout;\r\n if (roomLayout.includes(LayoutAbbreviation.All)) {\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this[featureList][layoutName].push(part);\r\n })\r\n } else if (Array.isArray(roomLayout) && roomLayout.length) {\r\n roomLayout.forEach(roomLayoutAbbreviation => {\r\n const layoutName = invert(LayoutAbbreviation)[roomLayoutAbbreviation];\r\n if (layoutName) { // Prevent bad roomLayout Metadata\r\n this[featureList][layoutName].push(part);\r\n }\r\n });\r\n } else { // single value\r\n const layoutName = invert(LayoutAbbreviation)[roomLayout];\r\n if(layoutName) {\r\n this[featureList][layoutName].push(part);\r\n }\r\n }\r\n }\r\n\r\n if (part.notAvailableInVisualizer || !part.metaData.RoomLayout) {\r\n part.notAvailableInVisualizer = true;\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this[featureList][layoutName].push(part);\r\n })\r\n }\r\n\r\n // Object.keys(LayoutType).forEach(layoutName => {\r\n // this[features+\"List\"][layoutName].push(part);\r\n // });\r\n\r\n this.loadFeatureCommon(part);\r\n\r\n return part\r\n }\r\n\r\n getActiveFeatureConditions() {\r\n return this.getArrayOfConditions()\r\n }\r\n\r\n navigationSubItems(filters, searchText) {\r\n const filteredAvailableFeatures = this.getFeaturesBySearchText(this.getFilteredFeaturesByFilters(filters), searchText);\r\n const featuresToDisplay = this.navigationSubItemsWithFilterMultipleConditions(this.getArrayOfConditions(), filteredAvailableFeatures);\r\n return this.returnUniqueNavFeatures(featuresToDisplay)\r\n }\r\n\r\n navigationSubItemsWithSides(filters, searchText) {\r\n const filteredAvailableFeatures = this.getFeaturesBySearchText(this.getFilteredFeaturesByFilters(filters), searchText);\r\n const featuresToDisplay = this.navigationSubItemsWithFilterMultipleConditions(this.getArrayOfConditions(true), filteredAvailableFeatures);\r\n\r\n let navFeatures = [];\r\n const activePosition = this.activeFeature && this.activeFeature.dbFeature.metaData[\"layerPosition\"]\r\n ? this.activeFeature.dbFeature.metaData[\"layerPosition\"]\r\n : SIDE_POSITIONS[0];\r\n navFeatures = featuresToDisplay.filter(feature => {\r\n return feature.dbFeature.metaData[\"layerPosition\"] === activePosition\r\n })\r\n featuresToDisplay.forEach(feature => {\r\n const skuName = feature.metaData[\"SkuName\"] ? feature.metaData[\"SkuName\"][0] : null;\r\n if ((IS_BATHROOM_OLD_BV_SCENE && !skuName) || (skuName && navFeatures.every(navFeature => {\r\n const skuName2 = navFeature.metaData[\"SkuName\"] ? navFeature.metaData[\"SkuName\"][0] : null;\r\n return skuName2 && (skuName2 !== skuName)\r\n }))) {\r\n navFeatures.push(feature)\r\n }\r\n })\r\n return this.returnUniqueNavFeatures(navFeatures)\r\n }\r\n\r\n navigationSubItemsWithFilter(propName, propValue, featuresToCheck = this.features) {\r\n return featuresToCheck.filter((feature) => {\r\n return feature.matchesMetaForCondition(propName, propValue);\r\n }).map(_ => new DesignNavigationItem(_.featureName, _));\r\n }\r\n\r\n navigationSubItemsWithFilterMultipleConditions(arrayOfConditions, featuresToCheck = this.features) {\r\n // console.log('arrayOfConditions', arrayOfConditions);\r\n // console.log('featuresToCheck', featuresToCheck);\r\n return featuresToCheck.filter((feature) => {\r\n return feature.notAvailableInVisualizer || arrayOfConditions.every((conditionObject) => {\r\n const {propName, propValue} = conditionObject;\r\n return feature.matchesMetaForCondition(propName, propValue);\r\n });\r\n })\r\n }\r\n\r\n setDefault(layout, setNotInVisFeature = false) {\r\n this.setFeatureGroupDefault(layout, setNotInVisFeature)\r\n }\r\n\r\n setLayerPositions = (activeFeature = this.activeFeature) => {\r\n if (!activeFeature) {\r\n return\r\n }\r\n const layout = this.getParent().layout;\r\n const conditions = this.getArrayOfConditions();\r\n if (layout && this.defaultLayerLayoutPositions && this.defaultLayerLayoutPositions[layout.type]) {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if (this.defaultLayerLayoutPositions[layout.type] === key\r\n && (!this.layerPositions[key] || !this.layerPositions[key].matchesMetaForArrayOfConditions(conditions))) {\r\n this.layerPositions[key] = activeFeature;\r\n } else if (activeFeature.dbFeature.metaData[\"layerPosition\"] !== key) {\r\n this.layerPositions[key] = null;\r\n }\r\n })\r\n } else {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if ((activeFeature.dbFeature.metaData[\"layerPosition\"] === key)\r\n && (!this.layerPositions[key] || !this.layerPositions[key].matchesMetaForArrayOfConditions(conditions))) {\r\n this.layerPositions[key] = activeFeature;\r\n }\r\n })\r\n }\r\n }\r\n\r\n getMatchingPositionFeature = (position = \"\", fromFeature = this.activeFeature) => {\r\n if (fromFeature) { //just in case\r\n const name1 = fromFeature.getSplittedFeatureName();\r\n let arrayOfConditions = this.getArrayOfConditions();\r\n if (fromFeature.metaData[\"SkuName\"]) {\r\n arrayOfConditions.push({\r\n propName: \"SkuName\",\r\n propValue: fromFeature.metaData[\"SkuName\"]\r\n })\r\n }\r\n const skuNamesPartIds = [\"shower_door\", \"walk_in_tub\", \"shower_pan_combo\", \"replacement_tub\"];\r\n const whereToFind = (!this.layerPositions || (position === Object.keys(this.layerPositions)[0])) ? this.features : this.featuresParts;\r\n return whereToFind.find((feature) => {\r\n return (skuNamesPartIds.includes(this.partId) || name1 === feature.getSplittedFeatureName())\r\n && feature.matchesMetaForArrayOfConditions(arrayOfConditions) && feature.metaData[\"layerPosition\"] === position\r\n });\r\n }\r\n return null\r\n };\r\n\r\n getArrayOfConditions() {\r\n const layout = this.getParent().layout;\r\n const conditions = [{\r\n propName: 'RoomLayout',\r\n propValue: layout.getCurrentLayoutAbbreviation()\r\n }];\r\n if (document.kvConfig.userId === 140045) { // new_bathroom_2021.quotesflooring.com\r\n conditions.push({\r\n propName: 'RoomScene',\r\n propValue: layout.scene\r\n })\r\n }\r\n return conditions;\r\n }\r\n\r\n setLayers(layout) {\r\n if (this.activeFeature && (this.activeFeature.matchesMetaForArrayOfConditions(this.getArrayOfConditions()))) {\r\n if (this.hasAdditionalParts) {\r\n this.checkIfFeaturePartIsMatching();\r\n }\r\n return this._setLayers(layout);\r\n }\r\n this.setDefault(layout);\r\n return this._setLayers(layout);\r\n }\r\n\r\n\r\n showLayerPositionsModal(forFeature) {\r\n const checkSidesFeatureGroups = [\"shower_door\", \"shower_fixture\", \"grab_bar\", \"large_corner_seat\",\r\n \"replacement_tub\", \"shower_pan_combo\", \"corner_caddie\", \"large_corner_caddie\", \"soap_dish\", \"walk_in_tub\",\r\n \"shower_seats\"];\r\n if (checkSidesFeatureGroups.includes(this.partId)) {\r\n const positionsAvailable = PAN_POSITIONS.filter(position => {\r\n return !!this.getMatchingPositionFeature(position, forFeature);\r\n });\r\n return positionsAvailable.length > 1\r\n }\r\n return false\r\n }\r\n\r\n clickFromAllWalls(ignoreLocked) {\r\n if (this && this.dbFeature && this.dbFeature.sharedFeatureName) {\r\n console.log(`${this.partId}:`, this.dbFeature.sharedFeatureName);\r\n }\r\n this.handleClick(ignoreLocked, \"all_walls\");\r\n }\r\n\r\n /**\r\n * @param ignoreLocked {boolean} // false by the default, is used by wizard ONLY\r\n */\r\n handleClick(ignoreLocked = false) {\r\n const parent = this.getParent();\r\n const {activeQuoteIndex} = store.getState().quotesState;\r\n parent.firstClick[activeQuoteIndex] = true; // allow to show active item\r\n const featureIsLocked = getFeatureIsLocked(this, ignoreLocked);\r\n if (featureIsLocked) {\r\n parent.activeLockedFeature = this;\r\n } else {\r\n if (parent.activeLockedFeature) {\r\n parent.activeLockedFeature = null;\r\n }\r\n this.featureClick();\r\n }\r\n }\r\n\r\n featureClick() {\r\n const parent = this.getParent();\r\n parent.placeholderChanged = true;\r\n if (this.notAvailableInVisualizer) {\r\n parent.activeNotInVisualizerFeature = this; // do not change the activeFeature (in order to keep the layer)\r\n } else if (parent.activeNotInVisualizerFeature) {\r\n parent.activeNotInVisualizerFeature = null; // remove it from other searches and so on\r\n parent.activeFeature = this;\r\n } else {\r\n parent.activeFeature = this;\r\n }\r\n this.featureClicked();\r\n }\r\n\r\n hideLayers() {\r\n if (this.activeFeature) {\r\n this.activeFeature.layer.src = '';\r\n }\r\n if (Array.isArray(this.activeFeatureParts) && this.activeFeatureParts.length) {\r\n this.activeFeatureParts.forEach((activeFeaturePart) => {\r\n if (activeFeaturePart && activeFeaturePart.layer) {\r\n activeFeaturePart.layer.src = '';\r\n }\r\n })\r\n }\r\n if (this.placeholderFeature) {\r\n this.placeholderFeature.layer.src = '';\r\n }\r\n if (this.layerPositions) {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if (this.layerPositions[key]) {\r\n this.layerPositions[key].layer.src = '';\r\n }\r\n })\r\n }\r\n }\r\n\r\n removeLayoutFromPartName(partName) {\r\n LayoutAbbreviationsToRemove.forEach(abbr => {\r\n const spaceWithLayoutName = \" \"+abbr;\r\n partName = partName.replace(spaceWithLayoutName + \" \", \" \"); // 1) replace \" Agra S Some edge name\" -> \" Agra Some edge name\"\r\n if (partName.slice(-spaceWithLayoutName.length) === spaceWithLayoutName) {\r\n partName = partName.substring(0, partName.length - spaceWithLayoutName.length); // 2) replace \" Agra Some edge name S\" -> \" Agra Some edge name\"\r\n }\r\n });\r\n partName = partName.replace(\" Backsplash\", \"\");\r\n return partName\r\n }\r\n\r\n removeEdgeFromPartName(partName) {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n const edgeFilterGroup = filterGroups.find(group => group.name === \"Edge\" || group.name === \"Edge Profile\");\r\n if (edgeFilterGroup && edgeFilterGroup.values && edgeFilterGroup.values.length) {\r\n const edgeFilterGroupValues = edgeFilterGroup.values.sort((a,b) => {\r\n return a.value && b.value && (b.value.length - a.value.length)\r\n }); // 1st should be \"Full Bullnose\", then simple \"Bullnose\"\r\n edgeFilterGroupValues.forEach((filterGroupValue) => { // arrayOf {id: 293, value: \"Eased\", displayText: \"Eased\", parent_id: null, icon: \"\", …}\r\n partName = partName.split(\" \"+filterGroupValue.value).join(\"\");\r\n });\r\n }\r\n return partName\r\n }\r\n\r\n getCountertopGroupsSplittedFeatureName = () => {\r\n if (this._countertopGroupsCustomDisplayName == null) {\r\n this._countertopGroupsCustomDisplayName = this.dbFeature.sharedFeatureName;\r\n }\r\n return this._countertopGroupsCustomDisplayName\r\n };\r\n\r\n getSplittedFeatureName = () => {\r\n if (this._customDisplayName == null) {\r\n this._customDisplayName = this.dbFeature.sharedFeatureName || this.partName;\r\n if (this.partId ===\"vanity_sink\" || this.partId ===\"vanity_faucet\") {\r\n this._customDisplayName = this._customDisplayName.replace(/ D/g, \"\")\r\n } else if (this.partId === \"shower_interior_wall\") {\r\n // White Acrylic 30in 1 Moment Flat -> White Acrylic\r\n // Grey Garden 48in 1 Solid Surface -> Grey Garden\r\n this._customDisplayName = this._customDisplayName.replace(/ 60in/g, \"\").replace(/ 48in/g, \"\").replace(/ 30in/g, \"\").split(\" 1 \")[0]\r\n } else if (this.partId === \"shower_pan_combo\" && Array.isArray(this.metaData[\"SkuName\"]) && this.metaData[\"SkuName\"][0]) {\r\n this._customDisplayName = this.metaData[\"SkuName\"][0]\r\n }\r\n }\r\n return this._customDisplayName\r\n };\r\n\r\n getMatchingFeatureName = () => {\r\n return this.getSplittedFeatureName()\r\n };\r\n\r\n getModuleFeatureName = () => {\r\n // return this.partName.split(\" M_\")[0];\r\n return this.partName.split(\" M\")[0];\r\n };\r\n\r\n featureIsMatchingFilters(currentFeature, activeFilters, filters = []) {\r\n return filters.every(filter => {\r\n return activeFilters[filter.id]\r\n && currentFeature.dbFeature.filterValueIDs[filter.id]\r\n && currentFeature.dbFeature.filterValueIDs[filter.id].includes(activeFilters[filter.id][0])\r\n })\r\n }\r\n\r\n getActiveFeaturePartsAccordingToActiveFeature(fromFeature = this.activeFeature, activeFeatureConditions = []) {\r\n let activeFeatureParts = [];\r\n if (fromFeature && fromFeature.partNumber) {\r\n let activeFeaturePart;\r\n const name1 = fromFeature.getSplittedFeatureName();\r\n // console.log(\"name1\", name1);\r\n let arrayOfConditions = activeFeatureConditions.length\r\n ? activeFeatureConditions\r\n : this.getActiveFeatureConditions(fromFeature);\r\n if (this.partId === \"right_wall\") {\r\n arrayOfConditions = arrayOfConditions.filter(condition => condition.propName !== \"MirrorSize\");\r\n }\r\n activeFeatureParts = this.featuresParts.filter((feature) => name1 === feature.getSplittedFeatureName());\r\n // console.log(\"this.featuresParts\", this.featuresParts);\r\n // console.log(\"activeFeatureParts\", activeFeatureParts);\r\n if (activeFeatureParts.length) {\r\n activeFeaturePart = activeFeatureParts.find((feature) => {\r\n return feature.matchesMetaForArrayOfConditions(arrayOfConditions)\r\n });\r\n if (!activeFeaturePart) {\r\n activeFeaturePart = activeFeatureParts[0];\r\n }\r\n }\r\n activeFeatureParts = activeFeaturePart ? [activeFeaturePart] : [];\r\n activeFeatureParts.forEach((activeFeaturePart) => {\r\n activeFeaturePart.disabled = this.disabled\r\n });\r\n }\r\n return activeFeatureParts\r\n }\r\n\r\n checkIfFeaturePartIsMatching() {\r\n if (this.activeFeatureParts && this.activeFeatureParts.length) {\r\n const activeFeatureConditions = this.getActiveFeatureConditions();\r\n const name1 = this.activeFeature.getSplittedFeatureName();\r\n const activeFeaturePart = this.activeFeatureParts[0];\r\n if (!(activeFeaturePart.matchesMetaForArrayOfConditions(activeFeatureConditions)\r\n && name1 === activeFeaturePart.getSplittedFeatureName())) {\r\n this.activeFeatureParts = this.setActiveFeatureParts(this.activeFeature, activeFeatureConditions);\r\n }\r\n } else {\r\n this.activeFeatureParts = this.setActiveFeatureParts();\r\n }\r\n }\r\n\r\n\r\n // OLD SHOWER LOGIC\r\n\r\n rememberPreviousSelection(shower, currentActiveFeature) {\r\n const layoutAbbr = shower.layout.getCurrentLayoutAbbreviation();\r\n const currentShowerBodyId = IntermediatePart.getCurrentShowerBodyId(shower);\r\n const wallConfiguration = shower.layout.parts[\"Shower Tub Combo\"] && shower.layout.parts[\"Shower Tub Combo\"].wallConfiguration;\r\n if (this.currentShowerBodyId !== currentShowerBodyId && currentActiveFeature && !currentActiveFeature.partName.includes(\"laceholder\")) {\r\n if (!this.previouslySelectedFeatures[layoutAbbr]) {\r\n this.previouslySelectedFeatures[layoutAbbr] = {}\r\n }\r\n this.previouslySelectedFeatures[layoutAbbr][this.currentShowerBodyId] = currentActiveFeature; // remember previous active item\r\n if (wallConfiguration\r\n && wallConfiguration.features.some(feature => feature.showerBodyId === this.currentShowerBodyId)) {\r\n wallConfiguration.features.forEach((wallConfigurationFeature) => { // remember previous active item for all wall conf\r\n this.previouslySelectedFeatures[layoutAbbr][wallConfigurationFeature.showerBodyId] = currentActiveFeature;\r\n })\r\n }\r\n }\r\n this.currentShowerBodyId = currentShowerBodyId; // set new shower type\r\n }\r\n\r\n setDefaultAccordingToPreviousSelect(shower, filteredFeatures, hardCodedDefaultName, placeholderDefaultName = \"laceholder\") {\r\n const layoutAbbr = shower.layout.getCurrentLayoutAbbreviation();\r\n const currentShowerBodyId = IntermediatePart.getCurrentShowerBodyId(shower);\r\n // console.log('currentShowerBodyId', currentShowerBodyId);\r\n // console.log('this.previouslySelectedFeatures', this.previouslySelectedFeatures);\r\n\r\n if (this.currentShowerBodyId !== currentShowerBodyId\r\n && this.previouslySelectedFeatures[layoutAbbr]\r\n && this.previouslySelectedFeatures[layoutAbbr][currentShowerBodyId]\r\n && filteredFeatures.some(f => f.dbFeature.id === this.previouslySelectedFeatures[layoutAbbr][currentShowerBodyId].dbFeature.id)) {\r\n this.activeFeature = this.previouslySelectedFeatures[layoutAbbr][currentShowerBodyId]; // restore from previous chosen\r\n } else {\r\n const hardCodedDefault = hardCodedDefaultName && filteredFeatures.find((feature) => {\r\n return !feature.notAvailableInVisualizer && feature.dbFeature.displayName && feature.dbFeature.displayName.includes(hardCodedDefaultName);\r\n });\r\n this.activeFeature = hardCodedDefault || filteredFeatures[0];\r\n }\r\n const placeholderDefault = filteredFeatures.find((feature) => {\r\n return !feature.notAvailableInVisualizer && feature.dbFeature.displayName\r\n && feature.dbFeature.displayName.includes(placeholderDefaultName);\r\n });\r\n this.placeholderFeature = placeholderDefault || null;\r\n }\r\n\r\n /** shower door, fixture methods **/\r\n static getCurrentShowerBodyId(shower) {\r\n let currentShowerBodyId = \"\";\r\n const showerTubComboIsActive = shower.showerTubComboIsActive();\r\n if (!showerTubComboIsActive && shower.showerBody && shower.showerBody.activeFeature) {\r\n currentShowerBodyId = shower.showerBody.activeFeature.showerBodyId;\r\n } else if (showerTubComboIsActive && shower.layout.parts[\"Shower Tub Combo\"]\r\n && shower.layout.parts[\"Shower Tub Combo\"].wallConfiguration\r\n && shower.layout.parts[\"Shower Tub Combo\"].wallConfiguration.activeFeature) {\r\n currentShowerBodyId = shower.layout.parts[\"Shower Tub Combo\"].wallConfiguration.activeFeature.showerBodyId;\r\n }\r\n return currentShowerBodyId\r\n }\r\n\r\n\r\n}\r\n","import React from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport CircularProgress from \"@mui/material/CircularProgress\";\r\n\r\nimport COLOR_THEMES from \"../../colorThemes\";\r\nimport LoadingBar from '../../lib/react-redux-loading-bar';\r\n\r\nconst MaterialSpinner = (props) => {\r\n const {activeTheme, color, size, withCounter} = props;\r\n\r\n const style = {'color': color || COLOR_THEMES[activeTheme].active}\r\n\r\n if (size) { // in order not to break others with size auto\r\n return (\r\n
\r\n \r\n
\r\n )\r\n }\r\n\r\n return (\r\n
\r\n {withCounter ? : null}\r\n \r\n
\r\n )\r\n};\r\n\r\nMaterialSpinner.propTypes = {\r\n color: PropTypes.string,\r\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n withCounter: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n activeTheme: store.serverState.activeTheme,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(MaterialSpinner)\r\n","import invert from 'lodash/invert';\r\n\r\nimport {splitFeatureName} from \"../../../misc/utils\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\nimport {Part} from \"./part\";\r\nimport store from '../../../store';\r\nimport {LayoutAbbreviation, LayoutType, LayoutAbbreviationsToRemove, COUNTERTOP_GROUP} from \"./constants\";\r\nimport {getFeatureIsLocked} from \"../../../misc/helpers\";\r\n\r\n/**\r\n * Used for Complex parts such as Vanity, to perform some base functionality for related items\r\n */\r\nexport class IntermediatePart extends Part {\r\n\r\n constructor(isChild) {\r\n super(false, isChild);\r\n this.disabled = false;\r\n this.defaultDisabled = false; // used after reset click\r\n this.canBeDisabled = false;\r\n }\r\n\r\n /**\r\n * This will be called by the underlying vanity feature with a concrete instance of the part\r\n * @param dbFeature\r\n * @param part {Part}\r\n * @param setParent {boolean}\r\n * @param features\r\n */\r\n load_(dbFeature, part, setParent = true, features = 'features') {\r\n\r\n const featureList = features + \"List\";\r\n\r\n const {displayName} = dbFeature;\r\n let {featureName} = splitFeatureName(displayName);\r\n if (!featureName && dbFeature.groupName && dbFeature.displayName) {\r\n featureName = dbFeature.displayName.replace(dbFeature.groupName + \" - \", \"\")\r\n }\r\n // console.log('displayName:', displayName);\r\n\r\n if (setParent) {\r\n part.getParent = () => this;\r\n if (dbFeature.galleryImages) {\r\n const featured = dbFeature.galleryImages.find(galImage => galImage.featured);\r\n if (featured) {\r\n this.featuredImage = featured.url\r\n }\r\n dbFeature.galleryImages = dbFeature.galleryImages.sort((a, b) => b.default - a.default)\r\n }\r\n }\r\n\r\n if (!dbFeature.sharedFeatureName) {\r\n console.error(\"No sharedFeatureName property:\", dbFeature);\r\n if (!featureName) {\r\n return false\r\n }\r\n }\r\n\r\n part.partName = featureName;\r\n part.metaData = dbFeature.metaData || {};\r\n\r\n if (dbFeature.s3Bindings && dbFeature.s3Bindings.length) {\r\n dbFeature.s3Bindings = dbFeature.s3Bindings.filter(binding => binding.visualizer === \"Kitchen\")\r\n }\r\n\r\n part.dbFeature = dbFeature || {};\r\n if (!part.dbFeature.filterValueIDs) {\r\n part.dbFeature.filterValueIDs = {}\r\n }\r\n part.notAvailableInVisualizer = !dbFeature.s3Bindings || !dbFeature.s3Bindings.length;\r\n\r\n if (part.metaData.RoomLayout) {\r\n const roomLayout = part.metaData.RoomLayout;\r\n if (roomLayout.includes(LayoutAbbreviation.All)) {\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this[featureList][layoutName].push(part);\r\n })\r\n } else if (Array.isArray(roomLayout) && roomLayout.length) {\r\n roomLayout.forEach(roomLayoutAbbreviation => {\r\n const layoutName = invert(LayoutAbbreviation)[roomLayoutAbbreviation];\r\n if (layoutName) { // Prevent bad roomLayout Metadata\r\n this[featureList][layoutName].push(part);\r\n }\r\n });\r\n } else { // single value\r\n const layoutName = invert(LayoutAbbreviation)[roomLayout];\r\n if(layoutName) {\r\n this[featureList][layoutName].push(part);\r\n }\r\n }\r\n } if (part.notAvailableInVisualizer || !part.metaData.RoomLayout) {\r\n part.notAvailableInVisualizer = true;\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n if(!this[featureList][layoutName].some(t => t.dbFeature.sharedFeatureName == part.dbFeature.sharedFeatureName)) {\r\n this[featureList][layoutName].push(part);\r\n }\r\n })\r\n }\r\n\r\n // Object.keys(LayoutType).forEach(layoutName => {\r\n // this[features+\"List\"][layoutName].push(part);\r\n // });\r\n\r\n this.loadFeatureCommon(part);\r\n\r\n return part\r\n }\r\n\r\n navigationSubItemsWithFilter(propName, propValue, featuresToCheck = this.features) {\r\n return featuresToCheck.filter((feature) => {\r\n return feature.matchesMetaForCondition(propName, propValue);\r\n }).map(_ => new DesignNavigationItem(_.featureName, _));\r\n }\r\n\r\n navigationSubItemsWithFilterMultipleConditions(arrayOfConditions, featuresToCheck = this.features) {\r\n // console.log('arrayOfConditions', arrayOfConditions);\r\n // console.log('featuresToCheck', featuresToCheck);\r\n return featuresToCheck.filter((feature) => {\r\n return feature.notAvailableInVisualizer || arrayOfConditions.every((conditionObject) => {\r\n const {propName, propValue} = conditionObject;\r\n return feature.matchesMetaForCondition(propName, propValue);\r\n });\r\n })\r\n }\r\n\r\n setDefault(layout, setNotInVisFeature = false) {\r\n this.setFeatureGroupDefault(layout, setNotInVisFeature)\r\n }\r\n\r\n setLayers(layout) {\r\n if (!this.disabled) {\r\n if (!this.activeFeature) {\r\n this.setDefault(layout);\r\n }\r\n if (this.activeFeature && !this.activeFeature.notAvailableInVisualizer) {\r\n this.setFeatureLayer(this.activeFeature, layout);\r\n if (Array.isArray(this.activeFeatureParts) && this.activeFeatureParts.length) {\r\n this.activeFeatureParts.forEach((activeFeaturePart) => {\r\n this.setFeatureLayer(activeFeaturePart, layout);\r\n })\r\n }\r\n }\r\n if (this.placeholderFeature) {\r\n this.setFeatureLayer(this.placeholderFeature, layout);\r\n }\r\n if (this.shadowFeature) {\r\n this.setFeatureLayer(this.shadowFeature, layout);\r\n }\r\n } else {\r\n this.hideLayers();\r\n }\r\n }\r\n\r\n clickFromAllWalls(ignoreLocked) {\r\n if (this && this.dbFeature && this.dbFeature.sharedFeatureName) {\r\n console.log(`${this.partId}:`, this.dbFeature.sharedFeatureName);\r\n }\r\n this.handleClick(ignoreLocked, \"all_walls\");\r\n }\r\n\r\n /**\r\n * @param ignoreLocked {boolean} // false by the default, is used by wizard ONLY\r\n * @param clickFrom {string} // is used for countertop and cabinet switchers, and walls\r\n */\r\n handleClick(ignoreLocked = false, clickFrom = \"\") {\r\n const parent = this.getParent();\r\n if (clickFrom !== \"all_walls\") {\r\n const {activeQuoteIndex} = store.getState().quotesState;\r\n parent.firstClick[activeQuoteIndex] = true; // allow to show active item\r\n }\r\n const featureIsLocked = getFeatureIsLocked(this, ignoreLocked);\r\n if (featureIsLocked) {\r\n parent.activeLockedFeature = this;\r\n } else {\r\n if (parent.activeLockedFeature) {\r\n parent.activeLockedFeature = null;\r\n }\r\n this.featureClick();\r\n }\r\n }\r\n\r\n featureClick() {\r\n const parent = this.getParent();\r\n parent.placeholderChanged = true;\r\n if (this.notAvailableInVisualizer) {\r\n parent.activeNotInVisualizerFeature = this; // do not change the activeFeature (in order to keep the layer)\r\n } else if (parent.activeNotInVisualizerFeature) {\r\n parent.activeNotInVisualizerFeature = null; // remove it from other searches and so on\r\n parent.activeFeature = this;\r\n } else {\r\n parent.activeFeature = this;\r\n }\r\n this.featureClicked();\r\n }\r\n\r\n hideLayers() {\r\n if (this.activeFeature) {\r\n this.activeFeature.layer.src = '';\r\n }\r\n if (Array.isArray(this.activeFeatureParts) && this.activeFeatureParts.length) {\r\n this.activeFeatureParts.forEach((activeFeaturePart) => {\r\n if (activeFeaturePart && activeFeaturePart.layer) {\r\n activeFeaturePart.layer.src = '';\r\n }\r\n })\r\n }\r\n if (this.placeholderFeature) {\r\n this.placeholderFeature.layer.src = '';\r\n }\r\n if (this.shadowFeature) {\r\n this.shadowFeature.layer.src = '';\r\n }\r\n }\r\n\r\n removeLayoutFromPartName(partName) {\r\n LayoutAbbreviationsToRemove.forEach(abbr => {\r\n const spaceWithLayoutName = \" \"+abbr;\r\n partName = partName.replace(spaceWithLayoutName + \" \", \" \"); // 1) replace \" Agra S Some edge name\" -> \" Agra Some edge name\"\r\n if (partName.slice(-spaceWithLayoutName.length) === spaceWithLayoutName) {\r\n partName = partName.substring(0, partName.length - spaceWithLayoutName.length); // 2) replace \" Agra Some edge name S\" -> \" Agra Some edge name\"\r\n }\r\n });\r\n partName = partName.replace(\" Backsplash\", \"\");\r\n return partName\r\n }\r\n\r\n removeCountertopFromPartName(partName) {\r\n partName = partName.replace(\"Countertop - \", \"\");\r\n return partName\r\n }\r\n\r\n removeBacksplashFromPartName(partName) {\r\n partName = partName.replace(\"Backsplash - \", \"\");\r\n return partName\r\n }\r\n\r\n removeCabinetLayoutFromPartName(partName) {\r\n const possibleLayouts = [\" Layout 1\",\" Layout 2\",\" Layout 3\",\" Layout 4\",\" Layout 5\",\" Layout 6\",\" Layout 7\",\" Layout 8\",\" 1\",\" 2\",\" 3\",\" 4\",\" 5\",\" 6\",\" 7\",\" 8\"];\r\n possibleLayouts.forEach(cabinetLayout => {\r\n partName = partName.replace(cabinetLayout,\"\")\r\n });\r\n return partName\r\n }\r\n\r\n removeEdgeFromPartName(partName) {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n const edgeFilterGroup = filterGroups.find(group => group.name === \"Edge\" || group.name === \"Edge Profile\");\r\n if (edgeFilterGroup && edgeFilterGroup.values && edgeFilterGroup.values.length) {\r\n const edgeFilterGroupValues = edgeFilterGroup.values.sort((a,b) => {\r\n return a.value && b.value && (b.value.length - a.value.length)\r\n }); // 1st should be \"Full Bullnose\", then simple \"Bullnose\"\r\n edgeFilterGroupValues.forEach((filterGroupValue) => { // arrayOf {id: 293, value: \"Eased\", displayText: \"Eased\", parent_id: null, icon: \"\", …}\r\n partName = partName.split(\" \"+filterGroupValue.value).join(\"\");\r\n });\r\n }\r\n return partName\r\n }\r\n\r\n getCountertopGroupsSplittedFeatureName = () => {\r\n if (this._countertopGroupsCustomDisplayName == null) {\r\n this._countertopGroupsCustomDisplayName = this.dbFeature.sharedFeatureName;\r\n if (!this._countertopGroupsCustomDisplayName) {\r\n this._countertopGroupsCustomDisplayName = this.partName || \"\";\r\n this._countertopGroupsCustomDisplayName = this.removeCabinetLayoutFromPartName(this._countertopGroupsCustomDisplayName); // remove 1 2\r\n this._countertopGroupsCustomDisplayName = this.removeLayoutFromPartName(this._countertopGroupsCustomDisplayName); // remove SP SPNI\r\n this._countertopGroupsCustomDisplayName = this.removeEdgeFromPartName(this._countertopGroupsCustomDisplayName); // remove Bullnose\r\n } else {\r\n this._countertopGroupsCustomDisplayName = this.removeLayoutFromPartName(this._countertopGroupsCustomDisplayName); // remove SP SPNI\r\n this._countertopGroupsCustomDisplayName = this._countertopGroupsCustomDisplayName.replace(\" PartN\", \"\");\r\n this._countertopGroupsCustomDisplayName = this.removeEdgeFromPartName(this._countertopGroupsCustomDisplayName); // remove Bullnose\r\n }\r\n if (this.partId === \"backsplash\" && this.removeBacksplashTypeFromPartName) {\r\n this._countertopGroupsCustomDisplayName = this.removeBacksplashTypeFromPartName(this._countertopGroupsCustomDisplayName);\r\n // this._countertopGroupsCustomDisplayName = this.removeCabinetLayoutFromPartName(this._countertopGroupsCustomDisplayName); // remove 1 2\r\n }\r\n }\r\n return this._countertopGroupsCustomDisplayName\r\n };\r\n\r\n getSplittedFeatureName = () => {\r\n const cabinetsGroup = [\"top_cabinet\", \"bottom_cabinet\", \"center_island_cabinet\"];\r\n if(this._customDisplayName == null) {\r\n this._customDisplayName = this.dbFeature.sharedFeatureName || this.partName;\r\n if (cabinetsGroup.includes(this.partId)) {\r\n this._customDisplayName = this.removeCabinetLayoutFromPartName(this._customDisplayName)\r\n .replace(/ Microwave/g, \"\")\r\n .replace(/ Hood/g, \"\")\r\n .replace(/ Layout/g, \"\")\r\n .replace(/ Part2/g, \"\")\r\n }\r\n this._customDisplayName = this.removeLayoutFromPartName(this._customDisplayName);\r\n this._customDisplayName = this.removeEdgeFromPartName(this._customDisplayName);\r\n this._customDisplayName = this.removeCountertopFromPartName(this._customDisplayName);\r\n this._customDisplayName = this.removeBacksplashFromPartName(this._customDisplayName);\r\n }\r\n return this._customDisplayName\r\n };\r\n\r\n getMatchingFeatureName = () => {\r\n return COUNTERTOP_GROUP.includes(this.partId)\r\n ? this.getCountertopGroupsSplittedFeatureName()\r\n : this.getSplittedFeatureName()\r\n };\r\n\r\n getModuleFeatureName = () => {\r\n // return this.partName.split(\" M_\")[0];\r\n return this.partName.split(\" M\")[0];\r\n };\r\n\r\n featureIsMatchingFilters(currentFeature, activeFilters, filters = []) {\r\n return filters.every(filter => {\r\n return activeFilters[filter.id]\r\n && currentFeature.dbFeature.filterValueIDs[filter.id]\r\n && currentFeature.dbFeature.filterValueIDs[filter.id].includes(activeFilters[filter.id][0])\r\n })\r\n }\r\n\r\n getActiveFeaturePartsAccordingToActiveFeature(fromFeature = this.activeFeature, activeFeatureConditions = []) {\r\n let activeFeatureParts = [];\r\n if (fromFeature && fromFeature.partNumber) {\r\n let activeFeaturePart;\r\n const name1 = fromFeature.getSplittedFeatureName();\r\n const arrayOfConditions = activeFeatureConditions.length\r\n ? activeFeatureConditions\r\n : this.getActiveFeatureConditions(fromFeature);\r\n activeFeatureParts = this.featuresParts.filter((feature) => name1 === feature.getSplittedFeatureName());\r\n if (activeFeatureParts.length) {\r\n activeFeaturePart = activeFeatureParts.find((feature) => {\r\n return feature.matchesMetaForArrayOfConditions(arrayOfConditions)\r\n });\r\n if (!activeFeaturePart) {\r\n activeFeaturePart = activeFeatureParts[0];\r\n }\r\n }\r\n activeFeatureParts = activeFeaturePart ? [activeFeaturePart] : [];\r\n activeFeatureParts.forEach((activeFeaturePart) => {\r\n activeFeaturePart.disabled = this.disabled\r\n });\r\n }\r\n return activeFeatureParts\r\n }\r\n\r\n checkIfFeaturePartIsMatching() {\r\n if (this.activeFeatureParts && this.activeFeatureParts.length) {\r\n const activeFeatureConditions = this.getActiveFeatureConditions();\r\n const name1 = this.activeFeature.getSplittedFeatureName();\r\n const activeFeaturePart = this.activeFeatureParts[0];\r\n if (!(activeFeaturePart.matchesMetaForArrayOfConditions(activeFeatureConditions)\r\n && name1 === activeFeaturePart.getSplittedFeatureName())) {\r\n this.activeFeatureParts = this.setActiveFeatureParts(this.activeFeature, activeFeatureConditions);\r\n }\r\n } else {\r\n this.activeFeatureParts = this.setActiveFeatureParts();\r\n }\r\n }\r\n\r\n}\r\n","import {baseNewImagesPath, baseDashboardImagesPath} from \"../../assets\";\r\n\r\nexport const bathTubThumbnail = `${baseNewImagesPath}images/bv_icons_new/Icons_Bathtub.svg`;\r\nexport const ceilingThumbnail = `${baseNewImagesPath}images/bv_icons_new/Icons_Ceiling.svg`;\r\nexport const floorThumbnail = `${baseNewImagesPath}images/bv_icons_new/Icons_Floor.svg`;\r\nexport const showerThumbnail = `${baseNewImagesPath}images/bv_icons_new/shower_icon_new.svg`;\r\nexport const showerAccessoriesThumbnail = `${baseNewImagesPath}images/bv_icons_new/accesories.svg`;\r\nexport const showerOLDThumbnail = `${baseNewImagesPath}images/bv_icons_new/Icons_Shower.svg`;\r\nexport const showerTubComboThumbnail = `${baseNewImagesPath}images/bv_icons_new/shower-tub_icon.svg`;\r\nexport const custom60in30X8Shower = `${baseNewImagesPath}images/bv_icons_new/custom-a-60in-30x8.svg`;\r\nexport const custom30in30X8Shower = `${baseNewImagesPath}images/bv_icons_new/custom-a-30in-30x8.svg`;\r\nexport const custom60in15X4Shower = `${baseNewImagesPath}images/bv_icons_new/custom-b-60in-15x4.svg`;\r\nexport const custom30in15X4Shower = `${baseNewImagesPath}images/bv_icons_new/custom-b-30in-15x4.svg`;\r\nexport const custom60inPonyShower = `${baseNewImagesPath}images/bv_icons_new/custom-c-60in-pony.svg`;\r\nexport const custom30inPonyShower = `${baseNewImagesPath}images/bv_icons_new/custom-c-30in-pony.svg`;\r\nexport const toiletThumbnail = `${baseNewImagesPath}images/bv_icons_new/toilet_backend.svg`;\r\nexport const vanityThumbnail = `${baseNewImagesPath}images/bv_icons_new/Icons_Vanity-05.svg`;\r\nexport const wallsThumbnail = `${baseNewImagesPath}images/bv_icons_new/Icons_Wall.svg`;\r\nexport const windowThumbnail = `${baseNewImagesPath}images/bathroom-icons/Window_Coverings.svg`;\r\nexport const largeLayout = `${baseNewImagesPath}images/bv-assets/thumbnail-config01.png`;\r\nexport const smallLayout = `${baseNewImagesPath}images/bv-assets/thumbnail-config02.png`;\r\nexport const largeLayoutShadow = `${baseNewImagesPath}images/bv-assets/Lg-Global-Shadow.png`;\r\nexport const smallLayoutShadow = `${baseNewImagesPath}images/bv-assets/Sm-Global-Shadow.png`;\r\nexport const shower30inWallShadow = `${baseNewImagesPath}images/bv-assets/Lg-Ex R-Shadow Overlay 30X45[For=LG-Ex-R].png`;\r\nexport const floorPlaceholder = `${baseNewImagesPath}images/bv-assets/placeholders/All-Floor-Placeholder.png`;\r\nexport const ceilingPlaceholder = `${baseNewImagesPath}images/bv-assets/placeholders/All-Ceiling-Placeholder.png`;\r\n\r\nexport const showerWallSmallRoomPlaceholder = `${baseNewImagesPath}images/bv-assets/placeholders/SM-Shower Wall-Placeholder[For=Shower=(Custom_Kit1_Kit3_Steam)=ShowerSize=30in].png`;\r\nexport const showerWallSmallRoomPlaceholder60in = `${baseNewImagesPath}images/bv-assets/placeholders/SM-Shower Wall-Placeholder[For=Shower=(Custom_Kit1_Kit3_Steam)=ShowerSize=60in].png`;\r\nexport const showerFloorSmallRoomPlaceholder = `${baseNewImagesPath}images/bv-assets/placeholders/SM-ShowerFloor-Placeholder[For=Shower=(Custom)=ShowerSize=30in].png`;\r\nexport const showerFloorSmallRoomPlaceholder60in = `${baseNewImagesPath}images/bv-assets/placeholders/SM-ShowerFloor-Placeholder[For=Shower=(Custom)=ShowerSize=60in].png`;\r\nexport const showerPanSmallRoomPlaceholder = `${baseNewImagesPath}images/bv-assets/placeholders/SM-ShowerPan-Placeholder[For=Shower=(Custom)=ShowerSize=30in].png`;\r\nexport const showerPanSmallRoomPlaceholder60in = `${baseNewImagesPath}images/bv-assets/placeholders/SM-ShowerPan-Placeholder[For=Shower=(Custom)=ShowerSize=60in].png`;\r\n\r\nexport const LayoutThumbnails = {\r\n Large: largeLayout,\r\n Small: smallLayout,\r\n};\r\n\r\nexport const homePage = {\r\n vanity_cabinet: `${baseNewImagesPath}images/home/section-images/vanity-bases.jpg`,\r\n vanity: `${baseNewImagesPath}images/home/section-images/vanity-bases.jpg`,\r\n vanity_countertop: `${baseNewImagesPath}images/home/section-images/countertops.jpg`,\r\n vanity_sink: `${baseNewImagesPath}images/home/section-images/sinks.jpg`,\r\n vanity_faucet: `${baseNewImagesPath}images/home/section-images/faucets.jpg`,\r\n vanity_mirror: `${baseNewImagesPath}images/home/section-images/mirrors.jpg`,\r\n vanity_backsplash: `${baseNewImagesPath}images/home/section-images/backsplash.png`,\r\n vanity_handle: `${baseNewImagesPath}images/home/section-images/handle.png`,\r\n shower_body: `${baseNewImagesPath}images/home/section-images/shower-glass.jpg`,\r\n shower_fixture: `${baseNewImagesPath}images/home/section-images/shower-fixtures.jpg`,\r\n shower_interior_wall: `${baseNewImagesPath}images/home/section-images/shower-wall.jpg`,\r\n shower_interior_wall_accent: `${baseNewImagesPath}images/home/section-images/shower-accent.png`,\r\n shower_floor: `${baseNewImagesPath}images/home/section-images/shower-flooring.jpg`,\r\n shower_door: `${baseNewImagesPath}images/home/section-images/shower-door.png`,\r\n shower_pan: `${baseNewImagesPath}images/home/section-images/shower-pan.png`,\r\n shower_pan_combo: `${baseNewImagesPath}images/home/section-images/shower-pan.png`,\r\n shower_door_handle: `${baseNewImagesPath}images/home/section-images/shower-handles.jpg`,\r\n threshold: `${baseNewImagesPath}images/home/section-images/threshold.png`,\r\n bathtub: `${baseNewImagesPath}images/home/section-images/bathtubs.jpg`,\r\n bathtub_fixture: `${baseNewImagesPath}images/home/section-images/bathtub-fixtures.jpg`,\r\n toilet: `${baseNewImagesPath}images/home/section-images/toilets.jpg`,\r\n floor: `${baseNewImagesPath}images/home/section-images/flooring.jpg`,\r\n ceiling: `${baseNewImagesPath}images/home/section-images/ceilings.jpg`,\r\n window: `${baseNewImagesPath}images/home/section-images/window-coverings.jpg`,\r\n lighting: `${baseNewImagesPath}images/home/section-images/lighting-fixtures.jpg`,\r\n towel: `${baseNewImagesPath}images/home/section-images/towel-racks.jpg`,\r\n wall_a: `${baseNewImagesPath}images/home/section-images/walls.jpg`,\r\n wall_b: `${baseNewImagesPath}images/home/section-images/walls.jpg`,\r\n wall_c: `${baseNewImagesPath}images/home/section-images/walls.jpg`,\r\n left_shower_wall: `${baseNewImagesPath}images/home/section-images/walls.jpg`,\r\n right_shower_wall: `${baseNewImagesPath}images/home/section-images/walls.jpg`,\r\n accent_wall: `${baseNewImagesPath}images/home/section-images/walls.jpg`,\r\n pony_wall: `${baseNewImagesPath}images/home/section-images/walls.jpg`,\r\n walls: `${baseNewImagesPath}images/home/section-images/walls.jpg`,\r\n wall: `${baseNewImagesPath}images/home/section-images/walls.jpg`,\r\n jetted_tub: `${baseNewImagesPath}images/home/section-images/jetted-tub.png`,\r\n replacement_tub: `${baseNewImagesPath}images/home/section-images/replacement-tub.png`,\r\n bathtub_liner: `${baseNewImagesPath}images/home/section-images/tub-liner.png`,\r\n walk_in_tub: `${baseNewImagesPath}images/home/section-images/walk-in-tub.png`,\r\n //kitchen\r\n dishwasher: `${baseNewImagesPath}images/home/section-images/dishwasher.png`,\r\n hood: `${baseNewImagesPath}images/home/section-images/hood.png`,\r\n fridge: `${baseNewImagesPath}images/home/section-images/fridge.png`,\r\n range: `${baseNewImagesPath}images/home/section-images/range.png`,\r\n microwave: `${baseNewImagesPath}images/home/section-images/microwave.png`,\r\n crown_molding: `${baseNewImagesPath}images/home/section-images/crown-molding.png`,\r\n left_wall: `${baseNewImagesPath}images/home/section-images/walls.jpg`,\r\n right_wall: `${baseNewImagesPath}images/home/section-images/walls.jpg`,\r\n popout_wall: `${baseNewImagesPath}images/home/section-images/walls.jpg`,\r\n backsplash: `${baseNewImagesPath}images/home/section-images/backsplash.png`,\r\n sink: `${baseNewImagesPath}images/home/section-images/sinks.jpg`,\r\n faucet: `${baseNewImagesPath}images/home/section-images/faucets.jpg`,\r\n countertop: `${baseNewImagesPath}images/home/section-images/countertops.jpg`,\r\n center_island_countertop: `${baseNewImagesPath}images/home/section-images/countertops.jpg`,\r\n center_island_sink: `${baseNewImagesPath}images/home/section-images/sinks.jpg`,\r\n center_island_faucet: `${baseNewImagesPath}images/home/section-images/faucets.jpg`,\r\n center_island_cabinet: `${baseNewImagesPath}images/home/section-images/vanity-bases.jpg`,\r\n center_island_handle: `${baseNewImagesPath}images/home/section-images/handle-kitchen.png`,\r\n center_island_chairs: `${baseNewImagesPath}images/home/section-images/chairs.png`,\r\n top_handle: `${baseNewImagesPath}images/home/section-images/handle-kitchen.png`,\r\n bottom_handle: `${baseNewImagesPath}images/home/section-images/handle-kitchen.png`,\r\n top_cabinet: `${baseNewImagesPath}images/home/section-images/icon-cabinet-upper.png`,\r\n bottom_cabinet: `${baseNewImagesPath}images/home/section-images/icon-cabinet-lower.png`,\r\n cutout: `${baseNewImagesPath}images/home/section-images/cutout.png`,\r\n cutouts: `${baseNewImagesPath}images/home/section-images/cutout.png`,\r\n edge_profile: `${baseNewImagesPath}images/home/section-images/edge.png`,\r\n edge_profiles: `${baseNewImagesPath}images/home/section-images/edge.png`,\r\n edge: `${baseNewImagesPath}images/home/section-images/edge.png`,\r\n center_island_edge: `${baseNewImagesPath}images/home/section-images/edge.png`,\r\n room: `${baseNewImagesPath}images/home/section-images/room.png`,\r\n kitchen_floor: `${baseNewImagesPath}images/home/section-images/flooring.jpg`,\r\n walls_ceiling: `${baseNewImagesPath}images/home/section-images/ceilings.jpg`,\r\n};\r\n\r\nexport const shareImage = {\r\n Bathroom: \"https://qc-cdn.s3.amazonaws.com/social-networks/BathRoomVisualizer_Facebook_QC.jpeg\",\r\n bvLook: \"https://qc-cdn.s3.amazonaws.com/social-networks/BathRoomVisualizer_Facebook_Lixil.jpg\",\r\n Kitchen: \"https://s3.amazonaws.com/qc-cdn/fabricator-presets-screenshots/cd49f0acc72e40f1a912830cf0385b83.png\"\r\n};\r\nexport const shareImageRebath = \"https://qc-cdn.s3.amazonaws.com/social-networks/BathRoomVisualizer_Facebook_ReBath.jpeg\";\r\n\r\nconst normalizeIconFileName = (featureGroupName) => {\r\n return ((featureGroupName || ''))\r\n .toLowerCase()\r\n .replace(/\\s/g, '-')\r\n .replace(\".svg\", \"\") + '.svg';\r\n};\r\n\r\nconst featureGroupNameToIcon = {\r\n '10 year sealer': 'sealer.svg',\r\n 'cabinet': 'cabinets.svg',\r\n 'top mount sink cutout': 'topmount-sink-cutout.svg',\r\n 'under mount sink cutout': 'undermount-sink-cutout.svg',\r\n 'counter top removal': 'countertop-removal.svg',\r\n 'cooktop cutout': 'range-top-cutout.svg',\r\n 'cutout': 'cutouts.svg',\r\n 'faucet': 'faucets.svg',\r\n 'floor': 'flooring.svg',\r\n 'shower-walls': 'shower-wall.svg',\r\n 'shower walls': 'shower-wall.svg',\r\n 'fixture': 'shower-fixture.svg',\r\n 'range-hood-x': 'range-hood.svg',\r\n 'range-hood-z': 'range-hood.svg',\r\n 'refridgerator': 'refrigerator.svg',\r\n 'removal': 'countertop-removal.svg',\r\n 'room(s) installed': 'room.svg',\r\n 'sink': 'sinks.svg',\r\n 'backsplash-thickness': 'slabs.svg',\r\n 'backsplash thickness': 'slabs.svg',\r\n 'edge': 'edge-profile.svg',\r\n 'island countertop': 'center-island-countertop.svg',\r\n 'hook bag': 'garage-hook.svg',\r\n 'slatwall': 'slat_wall.svg',\r\n 'overhead rack': 'overhead_rack.svg',\r\n 'cabinet leg': 'cabinet_leg.svg',\r\n};\r\n\r\nexport function getFeatureGroupIconURL(featureGroupName) {\r\n const name = ((featureGroupName || '')).toLowerCase();\r\n return (name in featureGroupNameToIcon)\r\n ? baseDashboardImagesPath + featureGroupNameToIcon[name]\r\n : baseDashboardImagesPath + normalizeIconFileName(name);\r\n}\r\n\r\nexport function getFeatureGroupIconStyles(featureGroup, activeTheme) {\r\n let\r\n backgroundImage = \"\",\r\n backgroundSize = \"150%\",\r\n backgroundPosition = \"\";\r\n\r\n if (!featureGroup.customImageUrl) {\r\n backgroundImage = getFeatureGroupIconURL(featureGroup.partName, activeTheme);\r\n } else {\r\n backgroundImage = featureGroup.customImageUrl;\r\n if (featureGroup.customImageUrl.includes(\"backsplash-new\")) {\r\n backgroundSize = \"80%\";\r\n backgroundPosition = \"left 25% center\";\r\n } else if (featureGroup.customImageUrl.includes(\"enabled/countertop.svg\")) {\r\n backgroundSize = \"\" // auto\r\n }\r\n }\r\n if (activeTheme === \"caes\" || activeTheme === \"moderno\" || activeTheme === \"as\"|| activeTheme === \"nhance\") {\r\n backgroundImage = getDashboardThemeIcon(backgroundImage, activeTheme);\r\n }\r\n if (backgroundImage.includes(\"enabled/top-cabinet.svg\")) {\r\n backgroundSize = \"60%\"\r\n } else if (backgroundImage.includes(\"enabled/bottom-cabinet.svg\")) {\r\n backgroundSize = \"80%\"\r\n } else if (backgroundImage.includes(\"enabled/slabs.svg\")) {\r\n backgroundSize = \"90%\"\r\n } else if (backgroundImage.includes(\"enabled/center-island-countertop.svg\")) {\r\n backgroundSize = \"95%\"\r\n } else if (backgroundImage.includes(\"enabled/garage-hook.svg\")) {\r\n backgroundSize = \"65%\"\r\n }\r\n switch (featureGroup.partId) {\r\n case \"cabinet_leg\":\r\n case \"hook_bag\":\r\n case \"overhead_rack\":\r\n case \"slat_wall\":\r\n backgroundSize = null; // we set it in scss\r\n break;\r\n default:\r\n break;\r\n }\r\n return {\r\n backgroundImage: `url(${backgroundImage})`,\r\n backgroundSize,\r\n backgroundPosition,\r\n }\r\n}\r\n\r\nexport function getDashboardThemeIcon(backgroundImage, activeTheme) {\r\n const imageSplitted = backgroundImage.split(\"enabled/\");\r\n if (imageSplitted[1]) {\r\n backgroundImage = `${baseNewImagesPath}images-${activeTheme}/dashboard-icons/${imageSplitted[1]}`\r\n }\r\n return backgroundImage\r\n}\r\n\r\n\r\n","import * as PropTypes from \"prop-types\";\r\nimport {filterValueInterface} from \"./filterInterface\";\r\nimport {featureInterface} from \"./featureInterface\";\r\n\r\n// ITEM -> GROUP\r\n// ITEM -> GROUP -> SECTION -> STEP // not used\r\n\r\nexport const WIZARD_GROUP_TYPES = {\r\n group: \"group\",\r\n filter: \"filter\",\r\n custom: \"custom\",\r\n}\r\n\r\nexport const wizardGroupInterface = {\r\n id: PropTypes.string.isRequired,\r\n nodeType: PropTypes.oneOf(Object.keys(WIZARD_GROUP_TYPES)).isRequired,\r\n groupName: PropTypes.string.isRequired,\r\n filterGroupId: PropTypes.number,\r\n scopeImageUrl: PropTypes.string,\r\n customDisplayName: PropTypes.string,\r\n enabled: PropTypes.bool.isRequired,\r\n title: PropTypes.string,\r\n description: PropTypes.string,\r\n featuresExcluded: PropTypes.array,\r\n featuresIncluded: PropTypes.array,\r\n useIncluded: PropTypes.bool,\r\n filtersExcluded: PropTypes.array,\r\n productCartTitle: PropTypes.string,\r\n productCartDescription: PropTypes.string,\r\n uploadedImageUrl: PropTypes.string,\r\n noAvailableFilters: PropTypes.bool,\r\n notRequired: PropTypes.bool,\r\n mergedGroups: PropTypes.array, // same parent logic\r\n wizardGroupIcon: PropTypes.string,\r\n hideInCartAndReceipt: PropTypes.bool,\r\n multipleAddToCart: PropTypes.bool,\r\n inputFields: PropTypes.array, // {id: \"\", checked: bool, oneLine: bool}\r\n headerTitle: PropTypes.string, // {id: \"\", checked: bool}\r\n headerSubTitle: PropTypes.string, // {id: \"\", checked: bool}\r\n visibleInVisualizers: PropTypes.array, //[\"kitchen\", \"laundryroom\", etc]\r\n hideForCustomers: PropTypes.bool, // eyeball\r\n skipProductInfo: PropTypes.bool,\r\n hidePriceNoCart: PropTypes.bool,\r\n skipLockDontApply: PropTypes.bool,\r\n dontMatchFeaturesBySku: PropTypes.bool,\r\n};\r\n\r\nexport const wizardNodeInterface = {\r\n id: PropTypes.string.isRequired,\r\n type: PropTypes.string.isRequired,\r\n position: PropTypes.object.isRequired,\r\n style: PropTypes.object,\r\n data: PropTypes.shape({\r\n wizardGroup: PropTypes.shape(wizardGroupInterface)\r\n }),\r\n};\r\n\r\nexport const wizardEdgeInterface = {\r\n id: PropTypes.string.isRequired,\r\n source: PropTypes.string.isRequired,\r\n target: PropTypes.string.isRequired,\r\n disabled: PropTypes.bool,\r\n};\r\n\r\nexport const wizardItemInterface = {\r\n id: PropTypes.number,\r\n visualizer: PropTypes.string,\r\n name: PropTypes.string,\r\n description: PropTypes.string,\r\n customImageUrl: PropTypes.string,\r\n uploadedImageUrl: PropTypes.string,\r\n enabled: PropTypes.bool,\r\n hideItems: PropTypes.bool,\r\n selected: PropTypes.bool,\r\n // wizardSteps: PropTypes.arrayOf(PropTypes.shape(wizardStepInterface)),\r\n // wizardSections: PropTypes.arrayOf(PropTypes.shape(wizardSectionInterface)),\r\n wizardGroups: PropTypes.arrayOf(PropTypes.shape(wizardGroupInterface)),\r\n wizardNodes: PropTypes.arrayOf(PropTypes.shape(wizardNodeInterface)),\r\n wizardEdges: PropTypes.arrayOf(PropTypes.shape(wizardEdgeInterface)),\r\n disabledScenes: PropTypes.arrayOf(PropTypes.number),\r\n startTitle: PropTypes.string,\r\n startDescription: PropTypes.string,\r\n};\r\n\r\nexport const wizardSelectedValueInterface = {\r\n partId: PropTypes.string,\r\n wizardGroup: PropTypes.shape(wizardGroupInterface),\r\n selectedFilter: PropTypes.shape(filterValueInterface),\r\n selectedFeature: PropTypes.shape(featureInterface),\r\n quantity: PropTypes.number,\r\n singleFeature: PropTypes.bool,\r\n};\r\n\r\nexport const wizardAllObjectInterface = {\r\n quoteIndex: PropTypes.number.isRequired,\r\n lastVisitedStep: PropTypes.number,\r\n isLastActiveWizard: PropTypes.bool,\r\n wizardItemId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\r\n visualizer: PropTypes.string, // common name, same as in the wizard item\r\n wizardSelectedValues: PropTypes.object, // {0: wizardSelectedValueInterface, 1: wizardSelectedValueInterface}\r\n};\r\n\r\nexport const wizardConflictingObjectInterface = {\r\n stepIndex: PropTypes.number.isRequired,\r\n wizardGroupId: PropTypes.string.isRequired,\r\n cartItemId: PropTypes.string.isRequired\r\n}\r\n","import isEqual from \"lodash/isEqual\";\r\n\r\nimport {getFeatureIsActive, getFeatureParent, getSkuWithoutDot, isInStock} from \"./lookFunctions2\";\r\nimport {LOOK_NAVIGATION_LIST_TYPES, LOOK_WALLS_ONLY, METADATA} from \"../core/constants\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport {getFeatureCost, getFeatureIsLocked, isIframe} from \"../../../misc/helpers\";\r\nimport store from \"../../../store\";\r\nimport {getFilterGroupValue, getFilterGroupValues} from \"../../../misc/utils\";\r\nimport {getFeatureOptions} from \"./lookFunctions\";\r\nimport {Vanity} from \"../core/parts/vanity\";\r\nimport {setLookWallsApplyTo} from \"../../../actions/lookFunctions\";\r\nimport {CABINET_GROUP, COUNTERTOP_GROUP, EDGE_GROUP} from \"../../kvComponent/core/constants\";\r\nimport {\r\n setCabinetsApplyTo, setCabinetsApplyToBathroom,\r\n setCountertopsApplyTo,\r\n setCountertopsApplyToBathroom, setEdgesApplyTo, setApplyToCommon\r\n} from \"../../../actions/navigationFunctions\";\r\nimport CountertopSwitchers from \"../../kvComponent/navigation/countertopSwitchers\";\r\nimport CabinetSwitchers from \"../../kvComponent/navigation/cabinetSwitchers\";\r\nimport Config, {getCommonVisualizerType} from \"../../../config\";\r\nimport {\r\n CABINET_GROUP_BATHROOM,\r\n COUNTERTOP_GROUP_BATHROOM,\r\n HANDLES_GROUP_BATHROOM, SHOWER_FLOOR_GROUP_BATHROOM\r\n} from \"../../bvSceneComponent/core/constants\";\r\nimport {loaderDisable, loaderEnable} from \"../../ui/loaderView\";\r\nimport {updateCanvasCount} from \"../../../actions/actionFunctions\";\r\nimport {getBvGroupFeatures} from \"../../../api/server-api\";\r\nimport {getAdditionalFeaturesOnScroll} from \"../../../api/look-api\";\r\n\r\nconst getFeaturePropertyToSort = (navItem, property) => {\r\n if (property === \"name\") {\r\n return navItem.part.getFeatureName()\r\n }\r\n if (property === \"SortPositionNum\") {\r\n return navItem.part.metaData[property] || 99999;\r\n }\r\n return navItem.part[property];\r\n}\r\n\r\nconst getNavItemsSortedByProperty = (navItems, property, property2) => {\r\n const order = \"asc\";\r\n // console.log(\"navItems - navItems\", navItems);\r\n navItems = navItems.sort((a,b) => {\r\n let prop1 = getFeaturePropertyToSort(a, property);\r\n let prop2 = getFeaturePropertyToSort(b, property);\r\n let prop3 = getFeaturePropertyToSort(a, property2);\r\n let prop4 = getFeaturePropertyToSort(b, property2);\r\n return order === \"asc\"\r\n ? (prop1 > prop2) ? 1 : (prop1 < prop2) ? -1 : (prop3 > prop4) ? 1 : (prop3 < prop4) ? -1 : 0\r\n : (prop1 < prop2) ? 1 : (prop1 > prop2) ? -1 : (prop3 < prop4) ? 1 : (prop3 > prop4) ? -1 : 0\r\n })\r\n // console.log(\"navItems\", navItems);\r\n return navItems\r\n};\r\n\r\n/**\r\n * sorts navItems\r\n * @param navItems {[object]}\r\n * @param isQuotingTool {boolean}\r\n * @returns {[object]}\r\n */\r\nexport const getSortedNavItems = (navItems, isQuotingTool = false) => {\r\n const {fabricatorState, userState} = store.getState();\r\n const {isPhoneNumberValidated} = userState;\r\n const fabricatorSettings = fabricatorState.settings;\r\n\r\n if ((fabricatorSettings.leadCapture && !(document.kvConfig.isBackend && document.kvConfig.jobId && document.kvConfig.canSaveQuote)) && !isPhoneNumberValidated) {\r\n const unLockedFeatures = navItems\r\n .filter(navItem => !getFeatureIsLocked(navItem.part))\r\n .map(navItem => {\r\n navItem.part.featurePrice = getFeatureCost(navItem.part, 1);\r\n return navItem\r\n })\r\n const lockedFeatures = navItems\r\n .filter(navItem => getFeatureIsLocked(navItem.part))\r\n .map(navItem => {\r\n navItem.part.featurePrice = getFeatureCost(navItem.part, 1);\r\n return navItem\r\n })\r\n navItems = fabricatorSettings.showPricing ? [\r\n ...getNavItemsSortedByProperty(unLockedFeatures, \"featurePrice\", \"name\"),\r\n ...getNavItemsSortedByProperty(lockedFeatures, \"featurePrice\", \"name\")\r\n ] : [...unLockedFeatures, ...lockedFeatures];\r\n } else if (navItems[0] && navItems[0].part.partId === \"crown_molding\" && navItems[0].part.getParent().sortNavigationItems) {\r\n navItems = navItems[0].part.getParent().sortNavigationItems(navItems);\r\n } else if (fabricatorSettings.showPricing && !fabricatorState.hideCheckoutBreakdownCost && !fabricatorState.hidePricesFromUser) {\r\n navItems = navItems.map(navItem => {\r\n navItem.part.featurePrice = getFeatureCost(navItem.part, 1);\r\n return navItem\r\n })\r\n navItems = getNavItemsSortedByProperty(navItems, \"featurePrice\", \"name\")\r\n } else {\r\n const propertyToSort = navItems.some(navItem => navItem.part.metaData[\"SortPositionNum\"]) ? \"SortPositionNum\" : \"name\";\r\n navItems = getNavItemsSortedByProperty(navItems, propertyToSort, \"\");\r\n navItems = navItems.sort((a, b) => isInStock(b.part) - isInStock(a.part));\r\n if (!isQuotingTool && navItems.some(navItem => navItem.part.useMatchesFailedNavigation)) {\r\n navItems = getNavItemsSortedByProperty(navItems, \"matchesMetaFailed\");\r\n }\r\n }\r\n if (isQuotingTool) {\r\n // navItems = getNavItemsSortedByProperty(navItems, \"notAvailableInVisualizer\", \"_customDisplayName\")\r\n const inVisFeatures = navItems.filter(navFeature => !navFeature.part.notAvailableInVisualizer);\r\n const notInVisFeatures = navItems.filter(navFeature => navFeature.part.notAvailableInVisualizer);\r\n navItems = [\r\n ...inVisFeatures,\r\n // ...getNavItemsSortedByProperty(notInVisFeatures, \"featurePrice\", \"name\")\r\n ...notInVisFeatures\r\n ];\r\n }\r\n return navItems\r\n};\r\n\r\n/**\r\n * reorder features, places selected and similar walls on the beginning\r\n * @param navItems {[object]}\r\n * @param lookActiveFeature {featureInterface}\r\n * @param lookActiveCategory {string}\r\n * @param featureGroup {featureGroupInterface}\r\n * @param isQuotingTool {boolean}\r\n * @param needToReplaceActiveFeature {boolean}\r\n * @returns {[object]}\r\n */\r\nexport const getReorderedItems = (\r\n navItems,\r\n lookActiveFeature,\r\n lookActiveCategory,\r\n featureGroup,\r\n isQuotingTool,\r\n needToReplaceActiveFeature = true\r\n) => {\r\n\r\n navItems = navItems.filter(feature => feature)//todo not sure why, but we in some cases have [undefined, item, item, item, undefined, undefined] etc... //need to fix this\r\n\r\n // let activeNavItem, activeNavItemIndex;\r\n const parentFeatureGroup = featureGroup || getFeatureParent(lookActiveFeature, lookActiveCategory);\r\n if (!parentFeatureGroup) {\r\n return navItems\r\n }\r\n const navItemsToChange = [];\r\n if (needToReplaceActiveFeature) {\r\n const activeNavItem = navItems.find(navItem => {\r\n if (!navItem) {\r\n return false\r\n }\r\n return getFeatureIsActive(navItem.part, lookActiveFeature, lookActiveCategory, featureGroup)\r\n })\r\n if (activeNavItem) {\r\n navItemsToChange.push(activeNavItem);\r\n }\r\n }\r\n const isWalls = LOOK_WALLS_ONLY.includes(parentFeatureGroup.partId);\r\n if (isWalls) {\r\n const layout = getCurrentLayout();\r\n const stoneFeatures = layout.getStonesActiveFeatures();\r\n // console.log(\"stoneFeatures\", stoneFeatures);\r\n\r\n stoneFeatures.forEach(cartItem => { // yes, the getStonesActiveFeatures method returns cat item objects for some reason :facepalm:\r\n if (cartItem && cartItem.cartFeature) {\r\n const stoneName = cartItem.cartFeature.getSplittedFeatureName();\r\n if (!navItemsToChange.some(navItem => navItem.part.getSplittedFeatureName() === stoneName)) {\r\n const existingInNavItems = navItems.find(navItem => navItem.part.getSplittedFeatureName() === stoneName);\r\n if (existingInNavItems) {\r\n navItemsToChange.unshift(existingInNavItems) // push to beginning\r\n }\r\n }\r\n }\r\n })\r\n }\r\n // console.log(\"navItemsToChange\", navItemsToChange);\r\n const sorted = getSortedNavItems(navItems, isQuotingTool);\r\n navItemsToChange.forEach((nItemToChange) => {\r\n const currentIndex = sorted.findIndex(navItem => navItem.part.dbFeature.id === nItemToChange.part.dbFeature.id)\r\n if (currentIndex > -1) {\r\n sorted.splice(currentIndex, 1);\r\n sorted.splice(0, 0, nItemToChange);\r\n }\r\n });\r\n // console.log(\"sorted\", sorted);\r\n return sorted\r\n\r\n};\r\n\r\n/**\r\n * Checks if list feature is currently active\r\n * @param navItems {[navItemInterface]}\r\n // * @param filterGroups {[filterGroupInterface]}\r\n * @returns {[navItemInterface]}\r\n */\r\nexport const getReplacedNavItemsWithUnlockedFeatures = (navItems) => {\r\n const {pricingLocked} = pricingIsLocked();\r\n if (!pricingLocked) {\r\n return navItems\r\n }\r\n\r\n return navItems.map(navItem => {\r\n if (!getFeatureIsLocked(navItem.part)) {\r\n return navItem\r\n }\r\n // const colorOptions = getFeatureOptions(navItem.part, filterGroups); // removed to optimize running getNavItems function multiple times\r\n // if needed - we can pass navItems to this function\r\n if (!navItem.colorOptions) {\r\n return navItem\r\n }\r\n const unlockedOption = navItem.colorOptions.find(option => {\r\n if (!option.feature) {\r\n return false\r\n }\r\n if (option.feature.dbFeature.id === navItem.part.dbFeature.id) {\r\n return false\r\n }\r\n return !getFeatureIsLocked(option.feature)\r\n })\r\n if (unlockedOption && !navItems.some(nItem => nItem.part.dbFeature.id === navItem.part.dbFeature.id)) {\r\n return {part: unlockedOption.feature}\r\n }\r\n return navItem\r\n })\r\n}\r\n\r\n/**\r\n * Checks if list feature is currently active\r\n * @param navItems {[navItemInterface]}\r\n * @returns {array}\r\n */\r\nexport const getDesignRecommendedNavItems = (navItems) => {\r\n\r\n const {filterState, bathroomVisualizerState} = store.getState();\r\n const {filterGroups} = filterState;\r\n const {activePreset} = bathroomVisualizerState;\r\n\r\n const desRecFilterGroup = filterGroups.find(group => group.name === \"Designer Recommended\");\r\n\r\n if (!desRecFilterGroup) {\r\n return []\r\n }\r\n\r\n return navItems.filter(navItem => {\r\n // if (navItem.part.dbFeature.sharedFeatureName === \"23486BEA\") {\r\n // debugger;//eslint-disable-line\r\n // }\r\n const desRecFeature = getFilterGroupValues(navItem.part, desRecFilterGroup);\r\n const desRecColorFeatures = getFeatureOptions(navItem.part, filterGroups, false, navItem.colorOptions || []);\r\n const desRecValues = [\r\n ...(desRecFeature || []),\r\n ...(desRecColorFeatures || []).map(colorOption => {\r\n return getFilterGroupValues(colorOption.feature, desRecFilterGroup)\r\n })\r\n ];\r\n return desRecValues && desRecValues.some(desRecValue => {\r\n if (Array.isArray(desRecValue)) {\r\n return desRecValue.some(filterId => {\r\n const filterValueObject = getFilterGroupValue(filterId, desRecFilterGroup);\r\n return filterValueObject && (+filterValueObject.value === activePreset)\r\n })\r\n }\r\n const filterValueObject = getFilterGroupValue(desRecValue, desRecFilterGroup);\r\n return filterValueObject && (+filterValueObject.value === activePreset)\r\n })\r\n });\r\n}\r\n\r\n/**\r\n * reorder features, places selected and similar walls on the beginning\r\n * @param navItems {[navItemInterface]}\r\n * @param lookActiveFeature {featureInterface}\r\n * @returns {[navItemsListInterface]}\r\n */\r\nexport const getNavigationItemsLists = (navItems, lookActiveFeature) => {\r\n\r\n if (!navItems.length) {\r\n return [{\r\n type: LOOK_NAVIGATION_LIST_TYPES.regular,\r\n navItems: [],\r\n }]\r\n }\r\n\r\n let navItemsList = [];\r\n\r\n const designRecommended = getDesignRecommendedNavItems(navItems);\r\n if (designRecommended.length) {\r\n navItemsList.push({\r\n type: LOOK_NAVIGATION_LIST_TYPES.designRec,\r\n navItems: getSortedNavItems(designRecommended),\r\n })\r\n }\r\n\r\n const others = designRecommended.length ? navItems.filter(navItem => {\r\n return designRecommended.every(designNavItem => designNavItem.part.dbFeature.id !== navItem.part.dbFeature.id)\r\n }) : navItems;\r\n\r\n if (!navItems[0]) { // some unexpected case\r\n return navItemsList\r\n }\r\n\r\n const featureGroup = navItems[0].part.getParent();\r\n\r\n switch (featureGroup.partId) {\r\n case \"vanity_faucet\": {\r\n const regularFeatures = {\r\n type: LOOK_NAVIGATION_LIST_TYPES.regular,\r\n navItems: [],\r\n };\r\n const vanityParent = featureGroup.getParent();\r\n const sinkParent = vanityParent.sink;\r\n\r\n others.forEach(navItem => {\r\n if (!sinkParent || !sinkParent.activeFeature || !navItem.part.metaData.MountHoles\r\n || (lookActiveFeature && isEqual(navItem.part.metaData.MountHoles, lookActiveFeature.metaData.MountHoles))) {\r\n if (!regularFeatures.navTranslate && navItem.part.metaData.MountHoles) {\r\n regularFeatures.navTranslate = \"look.features.other.faucet.\" + navItem.part.metaData.MountHoles[0]\r\n }\r\n regularFeatures.navItems.push(navItem);\r\n } else if (navItem.part.metaData.MountHoles) {\r\n const existingNonMatchingList = navItemsList.find(navItemsObject => {\r\n return navItemsObject.type === LOOK_NAVIGATION_LIST_TYPES.notMatchingMeta && navItemsObject.notMatchingMetaName === navItem.part.metaData.MountHoles[0];\r\n });\r\n if (existingNonMatchingList) {\r\n existingNonMatchingList.navItems.push(navItem)\r\n } else {\r\n navItemsList.push({\r\n type: LOOK_NAVIGATION_LIST_TYPES.notMatchingMeta,\r\n notMatchingMetaName: navItem.part.metaData.MountHoles[0],\r\n navItems: [navItem],\r\n navTranslate: \"look.features.other.faucet.\" + navItem.part.metaData.MountHoles[0]\r\n });\r\n }\r\n }\r\n })\r\n navItemsList.push(regularFeatures);\r\n break;\r\n }\r\n default: {\r\n navItemsList.push({\r\n type: LOOK_NAVIGATION_LIST_TYPES.regular,\r\n navItems: others,\r\n });\r\n break;\r\n }\r\n }\r\n\r\n return navItemsList\r\n};\r\n\r\nconst getSinksWidth = (nextSink) => {\r\n let maxWidth = 0;\r\n let maxTotalWidth = 0;\r\n if (nextSink.metaData[\"MatchingFeature\"].includes(METADATA.NO)) {\r\n const parent = nextSink.getParent();\r\n Object.keys(parent.layerPositions).forEach(position => {\r\n const positionFeature = parent.layerPositions[position];\r\n if (positionFeature && positionFeature.metaData[\"SinkWidth\"]) {\r\n maxTotalWidth += positionFeature.metaData[\"SinkWidth\"];\r\n }\r\n });\r\n if (nextSink.metaData[\"SinkWidth\"]) {\r\n maxWidth = nextSink.metaData[\"SinkWidth\"]\r\n }\r\n }\r\n // console.log(\"maxWidth\", maxWidth, maxTotalWidth);\r\n return {maxWidth, maxTotalWidth}\r\n}\r\n\r\nexport const findNextVanityTypeFeature = (nextSink, nextFeatureGroup) => {\r\n if (!nextSink.metaData[\"MatchingFeature\"] || nextSink.notAvailableInVisualizer) {\r\n return null\r\n }\r\n const nextSinkSku = getSkuWithoutDot(nextSink.dbFeature.sharedFeatureName);\r\n if (nextFeatureGroup && nextFeatureGroup.activeFeature\r\n && nextSink.metaData[\"MatchingFeature\"].includes(getSkuWithoutDot(nextFeatureGroup.activeFeature.dbFeature.sharedFeatureName))) { // it is already matching! return it\r\n // cases when vanity MatchingFeature - ['0328001', '0328004', '0328008'] and sink - '0329008'\r\n if (!nextFeatureGroup.activeFeature.metaData[\"MatchingFeature\"]\r\n || (nextFeatureGroup.activeFeature.metaData[\"MatchingFeature\"]\r\n && nextFeatureGroup.activeFeature.metaData[\"MatchingFeature\"].includes(nextSinkSku))) {\r\n return nextFeatureGroup.activeFeature\r\n }\r\n }\r\n\r\n const isQCSink = nextSink.metaData[\"MatchingFeature\"].includes(METADATA.NO);\r\n const {maxWidth, maxTotalWidth} = getSinksWidth(nextSink);\r\n\r\n const allVanities = [...nextFeatureGroup.features, ...nextFeatureGroup.featuresParts];\r\n let matchingVanities = allVanities.filter(testFeature => {\r\n if (!testFeature.metaData[\"MatchingFeature\"]) {\r\n return false\r\n }\r\n if (isQCSink) {\r\n if (!testFeature.metaData[\"MatchingFeature\"].includes(METADATA.NO)) {\r\n return false\r\n }\r\n if (!testFeature.metaData[\"VanityWidth\"]) {\r\n return true // just in case\r\n }\r\n if (nextSink.metaData.layerPosition !== \"C\") { // L or R should be only on double vanity or two separate\r\n return testFeature.metaData[\"VanityWidth\"] === 64\r\n || (testFeature.metaData[\"VanityWidth\"] === 24 && testFeature.metaData[\"VanityWidth\"] > maxWidth\r\n && (testFeature.metaData[\"layerPosition\"] !== \"C\"))\r\n }\r\n if (!maxWidth) {\r\n return true\r\n }\r\n return testFeature.metaData[\"VanityWidth\"] > maxWidth\r\n }\r\n return nextSink.metaData[\"MatchingFeature\"].includes(getSkuWithoutDot(testFeature.dbFeature.sharedFeatureName))\r\n && testFeature.metaData[\"MatchingFeature\"].includes(nextSinkSku)\r\n });\r\n // console.log(\"matchingVanities\", matchingVanities);\r\n if (matchingVanities.length > 1 && nextFeatureGroup.activeFeature) {\r\n // console.log(\"matchingVanities\", matchingVanities);\r\n const currentActiveFeature = matchingVanities.find(feature => feature.dbFeature.id === nextFeatureGroup.activeFeature.dbFeature.id);\r\n if (currentActiveFeature) {\r\n return currentActiveFeature\r\n }\r\n const currentSkuFeature = matchingVanities.find(feature => feature.dbFeature.sharedFeatureName === nextFeatureGroup.activeFeature.dbFeature.sharedFeatureName);\r\n if (currentSkuFeature) {\r\n return currentSkuFeature // to test\r\n }\r\n let currentSideFeatures = matchingVanities.filter(feature => isEqual(feature.metaData[\"Side\"], nextSink.metaData[\"Side\"]));\r\n if (!currentSideFeatures.length) {\r\n currentSideFeatures = matchingVanities.filter(feature => isEqual(feature.metaData[\"Side\"], nextFeatureGroup.activeFeature.metaData[\"Side\"]));\r\n }\r\n if (isQCSink && !currentSideFeatures.length && nextSink.metaData[\"Side\"]) {\r\n if (nextSink.metaData[\"Side\"][0] === \"C\") {\r\n console.log(\"NO VANITY FEATURES WITH C METADATA FOUND\", );\r\n } else if (maxTotalWidth) {\r\n currentSideFeatures = matchingVanities.filter(feature => {\r\n return feature.metaData[\"VanityWidth\"] && feature.metaData[\"VanityWidth\"] > maxTotalWidth\r\n });\r\n console.log(\"currentSideFeatures\", currentSideFeatures);\r\n }\r\n }\r\n const sameColors = currentSideFeatures.filter(feature => feature.getColorName() === nextFeatureGroup.activeFeature.getColorName());\r\n return sameColors[0] || currentSideFeatures[0] || matchingVanities[0]\r\n }\r\n return matchingVanities[0];\r\n}\r\n\r\nconst updateNonCompatibleListWithVanity = (nextSink, nonCompatibleList = []) => {\r\n const layout = getCurrentLayout();\r\n const vanityParent = layout.parts[Vanity.id];\r\n const currentVanityTypeFeatureGroup = vanityParent.relatedItems.find(relItem => relItem.partId === vanityParent.vanity_type);\r\n\r\n if (nextSink.metaData[\"CustomVanityType\"] && nextSink.metaData[\"CustomVanityType\"].includes(vanityParent.vanity_type)) {\r\n // for example currently we have Studio S vanity Cabinet, but it will be changed to Townsend\r\n if (currentVanityTypeFeatureGroup && currentVanityTypeFeatureGroup.activeFeature && nextSink.metaData[\"MatchingFeature\"]\r\n && !nextSink.metaData[\"MatchingFeature\"].includes(getSkuWithoutDot(currentVanityTypeFeatureGroup.activeFeature.dbFeature.sharedFeatureName))) {\r\n const nextVanity = findNextVanityTypeFeature(nextSink, currentVanityTypeFeatureGroup)\r\n // console.log(\"nextVanity\", nextVanity);\r\n if (nextVanity && currentVanityTypeFeatureGroup.activeFeature.dbFeature.id !== nextVanity.dbFeature.id) {\r\n nonCompatibleList.push({\r\n from: currentVanityTypeFeatureGroup.activeFeature,\r\n to: nextVanity,\r\n })\r\n }\r\n }\r\n } else {\r\n // console.log(\"next sink is not compatible, pls check\");\r\n if (nextSink.metaData[\"MountType\"].includes(\"ST\")) {\r\n if (!nonCompatibleList.some(fromToObject => fromToObject.to && fromToObject.to.dbFeature.id === nextSink.dbFeature.id)) {\r\n nonCompatibleList.push({\r\n from: currentVanityTypeFeatureGroup ? currentVanityTypeFeatureGroup.activeFeature : nextSink.getParent().activeFeature,\r\n to: nextSink,\r\n })\r\n }\r\n } else if (nextSink.metaData[\"CustomVanityType\"]) {\r\n const nextFeatureGroup = vanityParent.relatedItems.find(relItem => relItem.partId === nextSink.metaData[\"CustomVanityType\"][0]);\r\n if (nextFeatureGroup) {\r\n const nextVanity = findNextVanityTypeFeature(nextSink, nextFeatureGroup)\r\n // console.log(\"nextVanity\", nextVanity);\r\n const fromFeature = currentVanityTypeFeatureGroup\r\n ? currentVanityTypeFeatureGroup.activeFeature\r\n : nextSink.getParent().activeFeature; // if no vanity_type - it means that standalone sink is selected\r\n if (nextVanity) {\r\n nonCompatibleList.push({\r\n from: fromFeature,\r\n to: nextVanity,\r\n })\r\n }\r\n }\r\n }\r\n }\r\n return nonCompatibleList\r\n}\r\n\r\n/**\r\n * * when clicked on feature - search for same MountHoles sink (to keep selected faucet)\r\n * @param feature {featureInterface}\r\n * @returns {featureInterface}\r\n */\r\nexport const getNextSinkOnWashstandOrConsoleChange = (feature) => {\r\n const layout = getCurrentLayout();\r\n const vanityParent = layout.parts[Vanity.id];\r\n const sinkParent = vanityParent.sink;\r\n const isQcSink = sinkParent && sinkParent.activeFeature && sinkParent.activeFeature.metaData[\"MatchingFeature\"].includes(METADATA.NO)\r\n const forSinkConditions = [{\r\n propName: \"MatchingFeature\",\r\n propValue: isQcSink ? METADATA.NO : getSkuWithoutDot(feature.dbFeature.sharedFeatureName)\r\n }, {\r\n propName: \"FeatureSku\",\r\n propValue: isQcSink ? METADATA.NO : feature.metaData[\"MatchingFeature\"]\r\n }];\r\n if (isQcSink && feature.metaData[\"VanityWidth\"]) {\r\n // QC sink, we should check width\r\n forSinkConditions.push({\r\n propName: \"SinkWidth\",\r\n propValue: feature.metaData[\"VanityWidth\"],\r\n // propData: {\r\n // layerPosition: feature.metaData.layerPosition\r\n // }\r\n })\r\n }\r\n if (sinkParent && sinkParent.activeFeature && !sinkParent.activeFeature.matchesMetaForArrayOfConditions(forSinkConditions)) {\r\n const layout = getCurrentLayout();\r\n const navItems = layout.designNavigationItems({part: sinkParent}, [], \"\", sinkParent.activeFeature);\r\n const nextAvailableSinks = navItems.filter(navItem => navItem.part.matchesMetaForArrayOfConditions(forSinkConditions));\r\n const conditionsToMatch = [{\r\n propName: \"MountHoles\",\r\n propValue: sinkParent.activeFeature.metaData[\"MountHoles\"]\r\n }];\r\n return nextAvailableSinks.length\r\n ? nextAvailableSinks.find(navItem => navItem.part.matchesMetaForArrayOfConditions(conditionsToMatch)) || nextAvailableSinks[0]\r\n : null;\r\n }\r\n return null\r\n}\r\n\r\n/**\r\n * when clicked on washstand or console - search for the same MountHoles sink (to keep selected faucet)\r\n * @param feature {featureInterface}\r\n */\r\nexport const updateSinkWithNewFeature = (feature) => {\r\n const layout = getCurrentLayout();\r\n const vanityParent = layout.parts[Vanity.id];\r\n const sinkParent = vanityParent.sink;\r\n\r\n if (sinkParent && sinkParent.activeFeature) {\r\n const nextSink = getNextSinkOnWashstandOrConsoleChange(feature);\r\n if (nextSink) {\r\n const sinkFeature = nextSink.part;\r\n if (sinkParent.layerPositions && nextSink.part.metaData.layerPosition) {\r\n Object.keys(sinkParent.layerPositions).forEach(position => {\r\n if (position === sinkFeature.metaData.layerPosition) {\r\n sinkParent.layerPositions[position] = sinkFeature\r\n } else if (sinkParent.layerPositions[position]) { // only replace existing\r\n const sameFeature = sinkParent.getMatchingPositionFeature(position, sinkFeature);\r\n sinkParent.layerPositions[position] = sameFeature || null; // if no feature found - erase previous\r\n }\r\n })\r\n }\r\n sinkParent.activeFeature = sinkFeature;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * checks if feature needs a compatability alert\r\n * @param feature {featureInterface}\r\n * @returns {array}\r\n */\r\nexport const checkForCompatabilityAlert = (feature) => {\r\n if (feature.notAvailableInVisualizer) {\r\n return []\r\n }\r\n if (document.kvConfig.visualizerType !== \"bvLook\") {\r\n if (getCommonVisualizerType() === \"kitchen\") {\r\n switch (feature.partId) {\r\n case \"edge_profile\":\r\n case \"center_island_edge\": {\r\n const matchCounterTopObject = feature.getParent().getMatchingCounterTop(feature);\r\n if (matchCounterTopObject.matchingFeature && !matchCounterTopObject.hasSameName) {\r\n const countertopParent = feature.getParent().getParent().countertop;\r\n return [{\r\n from: countertopParent.activeFeature,\r\n to: matchCounterTopObject.matchingFeature,\r\n }]\r\n }\r\n return []\r\n }\r\n default:\r\n return []\r\n }\r\n }\r\n return []\r\n }\r\n const layout = getCurrentLayout();\r\n const vanityParent = layout.parts[Vanity.id];\r\n const faucetParent = vanityParent.faucet;\r\n const sinkParent = vanityParent.sink;\r\n let nonCompatibleList = [];\r\n\r\n switch (feature.partId) {\r\n case \"vanity_faucet\": {\r\n if (!sinkParent.activeFeature || !sinkParent.activeFeature.matchesMetaForArrayOfConditions(faucetParent.getActiveFeatureConditions(feature))) {\r\n const nextSink = feature.getSinkToClickFromMatchingSinks(sinkParent.activeFeature);\r\n if (nextSink) {\r\n // console.log(\"sink nextSink\", nextSink);\r\n nonCompatibleList.push({\r\n from: sinkParent.activeFeature,\r\n to: nextSink,\r\n });\r\n nonCompatibleList = updateNonCompatibleListWithVanity(nextSink, nonCompatibleList);\r\n return nonCompatibleList\r\n }\r\n }\r\n return []\r\n }\r\n case \"vanity_sink\": {\r\n const clickedSinkConditions = sinkParent.getActiveFeatureConditions(feature);\r\n if (!faucetParent.activeFeature || !faucetParent.activeFeature.matchesMetaForArrayOfConditions(clickedSinkConditions)) {\r\n const navItems = layout.designNavigationItems({part: faucetParent}, [], \"\", faucetParent.activeFeature);\r\n const nextFaucet = navItems.find(navItem => {\r\n return navItem.part.matchesMetaForArrayOfConditions(clickedSinkConditions);\r\n });\r\n console.log(\"nextFaucet\", nextFaucet);\r\n if (nextFaucet) {\r\n nonCompatibleList.push({\r\n from: faucetParent.activeFeature,\r\n to: nextFaucet.part,\r\n });\r\n }\r\n }\r\n nonCompatibleList = updateNonCompatibleListWithVanity(feature, nonCompatibleList);\r\n return nonCompatibleList\r\n }\r\n case \"vanity_cabinet\":\r\n case \"vanity_console\":\r\n case \"vanity_washstand\": {\r\n const nextSink = getNextSinkOnWashstandOrConsoleChange(feature);\r\n if (!sinkParent.activeFeature || (nextSink && nextSink.part.dbFeature.id !== sinkParent.activeFeature.dbFeature.id)) {\r\n if (nextSink) {\r\n // console.log(\"sink nextSink\", nextSink);\r\n nonCompatibleList.push({\r\n from: sinkParent.activeFeature,\r\n to: nextSink.part,\r\n });\r\n const clickedSinkConditions = sinkParent.getActiveFeatureConditions(nextSink.part);\r\n if (!faucetParent.activeFeature || !faucetParent.activeFeature.matchesMetaForArrayOfConditions(clickedSinkConditions)) {\r\n const navItems = layout.designNavigationItems({part: faucetParent}, [], \"\", faucetParent.activeFeature);\r\n const nextFaucet = navItems.find(navItem => {\r\n return navItem.part.matchesMetaForArrayOfConditions(clickedSinkConditions);\r\n });\r\n console.log(\"nextFaucet\", nextFaucet);\r\n if (nextFaucet) {\r\n nonCompatibleList.push({\r\n from: faucetParent.activeFeature,\r\n to: nextFaucet.part,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return nonCompatibleList\r\n }\r\n case \"shower_arm\": {\r\n const showerArmFeatureGroup = feature.getParent();\r\n const showerParent = showerArmFeatureGroup.getParent();\r\n const showerHeadParent = showerParent.showerHead;\r\n if (!showerHeadParent || !feature.metaData[\"MountPosition\"]) {\r\n return nonCompatibleList\r\n }\r\n const clickedArmConditions = showerArmFeatureGroup.getArrayOfConditions().map(condition => {\r\n if (condition.propName === \"MountPosition\") {\r\n return {\r\n propName: \"MountPosition\",\r\n propValue: feature.metaData[\"MountPosition\"],\r\n }\r\n }\r\n return condition\r\n })\r\n if (!showerHeadParent.activeFeature || !showerHeadParent.activeFeature.matchesMetaForArrayOfConditions(clickedArmConditions)) {\r\n const navItems = layout.designNavigationItems({part: showerHeadParent}, [], \"\", showerHeadParent.activeFeature);\r\n const nextFaucet = navItems.find(navItem => {\r\n return navItem.part.matchesMetaForArrayOfConditions(clickedArmConditions);\r\n });\r\n console.log(\"next shower head\", nextFaucet);\r\n if (nextFaucet) {\r\n nonCompatibleList.push({\r\n from: showerHeadParent.activeFeature,\r\n to: nextFaucet.part,\r\n });\r\n }\r\n }\r\n return nonCompatibleList\r\n }\r\n default:\r\n return nonCompatibleList\r\n }\r\n};\r\n\r\n/**\r\n * returns fabricator settings price logic\r\n * @returns {object}\r\n */\r\nexport const pricingIsLocked = () => {\r\n const {isBackend, jobId, canSaveQuote} = document.kvConfig;\r\n const {fabricatorState, userState} = store.getState();\r\n const {isPhoneNumberValidated} = userState;\r\n const fabricatorSettings = fabricatorState.settings;\r\n\r\n return {\r\n showPrice: fabricatorSettings.showPricing && !fabricatorState.hideCheckoutBreakdownCost && !fabricatorState.hidePricesFromUser,\r\n pricingLocked: fabricatorSettings.leadCapture && !(isBackend && jobId && canSaveQuote) && !isPhoneNumberValidated,\r\n clickLeadCapture: fabricatorSettings.clickLeadCapture,\r\n isLixil: isIframe() && fabricatorState.isLixil\r\n }\r\n}\r\n\r\n\r\n\r\n/**\r\n * checks features and downloads by name if they are missing\r\n * @param missingFeatures {array}\r\n * @param updateCanvas {boolean}\r\n * @param originalPartId {string}\r\n */\r\nexport const getMissingFeaturesAndClickThem = async (missingFeatures = [], updateCanvas = false, originalPartId = \"\") => {\r\n if (!missingFeatures.length) {\r\n return Promise.resolve()\r\n }\r\n window.requestInProcess = true;\r\n loaderEnable();\r\n const layout = getCurrentLayout();\r\n const wallParent = layout.parts[\"Walls\"];\r\n\r\n const pageSize = 9999;\r\n for (let missingFeatureObject of missingFeatures) {\r\n const {relatedItem, navigationItemName, requestFromBackendName} = missingFeatureObject;\r\n const dbName = relatedItem.dbName || relatedItem.partName;\r\n if (relatedItem.additionalPartPartId && wallParent && wallParent.relatedItems.some(relItem => relItem.partId === relatedItem.partId)) {\r\n const cropResponse = await getBvGroupFeatures(dbName + \" Crop\", 0, pageSize, [], requestFromBackendName || navigationItemName);\r\n if (Array.isArray(cropResponse)) {\r\n relatedItem.setGroupFeatures(cropResponse, pageSize, false, \"\", null, true, false);\r\n }\r\n }\r\n if (relatedItem.partId !== originalPartId) { // we need to check crop for current wall! but no need to request the wall itself\r\n const response = await getBvGroupFeatures(dbName, 0, pageSize, [], requestFromBackendName || navigationItemName);\r\n relatedItem.setGroupFeatures(response, pageSize, false, \"\", null, true, false);\r\n }\r\n }\r\n for (let missingFeatureObject of missingFeatures) {\r\n const {relatedItem, navigationItemName, setCurrentFeature, requestFromBackendName} = missingFeatureObject;\r\n const featureFound = layout.designNavigationItems({part: relatedItem}).find(navItem => {\r\n return navItem.part.getSplittedFeatureName() === navigationItemName\r\n });\r\n if (featureFound) {\r\n if (setCurrentFeature) {\r\n relatedItem.activeFeatureBeforeAllWalls = relatedItem.activeFeature;\r\n }\r\n featureFound.part.clickFromAllWalls(true)\r\n }\r\n if (relatedItem.partId !== originalPartId) {\r\n if (!relatedItem.alreadyRequestedFeatureNames) {\r\n relatedItem.alreadyRequestedFeatureNames = [];\r\n }\r\n relatedItem.alreadyRequestedFeatureNames.push(requestFromBackendName || navigationItemName);\r\n }\r\n }\r\n\r\n window.requestInProcess = false;\r\n loaderDisable();\r\n if (updateCanvas) {\r\n store.dispatch(updateCanvasCount());\r\n }\r\n return Promise.resolve()\r\n}\r\n\r\nexport const getShowMatchRadio = (lookFeature) => {\r\n if (LOOK_WALLS_ONLY.includes(lookFeature.partId)) {\r\n return true\r\n }\r\n switch (getCommonVisualizerType()) {\r\n case \"kitchen\":\r\n case \"laundryroom\": {\r\n if (EDGE_GROUP.includes(lookFeature.partId)) {\r\n if (lookFeature.partId === \"edge_profile\") { // back countertop\r\n const layout = getCurrentLayout();\r\n return layout.parts[\"CenterIsland\"] && layout.parts[\"CenterIsland\"].countertop\r\n && !layout.parts[\"CenterIsland\"].countertop.disabled\r\n }\r\n return true\r\n }\r\n if (COUNTERTOP_GROUP.includes(lookFeature.partId) && !CountertopSwitchers.checkForTileBacksplash(lookFeature)) {\r\n return true\r\n }\r\n return CABINET_GROUP.includes(lookFeature.partId)\r\n }\r\n case \"bathroom\":\r\n return CABINET_GROUP_BATHROOM.includes(lookFeature.partId)\r\n || COUNTERTOP_GROUP_BATHROOM.includes(lookFeature.partId)\r\n || HANDLES_GROUP_BATHROOM.includes(lookFeature.partId)\r\n || SHOWER_FLOOR_GROUP_BATHROOM.includes(lookFeature.partId)\r\n default:\r\n return false\r\n }\r\n}\r\n\r\n/**\r\n * returns fabricator settings price logic\r\n * @param lookFeature {featureInterface}\r\n * @returns {allWallsLogicInterface} object\r\n */\r\nexport const getApplyToLogic = (lookFeature) => {\r\n if (!lookFeature) {\r\n return null\r\n }\r\n if (LOOK_WALLS_ONLY.includes(lookFeature.partId)) {\r\n const {lookState} = store.getState();\r\n return {\r\n type: \"walls\",\r\n translateId: \"look.allWalls\",\r\n setApplyToFunction: setLookWallsApplyTo,\r\n applyToArrayAll: LOOK_WALLS_ONLY,\r\n currentApplyToArray: lookState.lookWallsApplyTo,\r\n }\r\n }\r\n switch (getCommonVisualizerType()) {\r\n case \"kitchen\":\r\n case \"laundryroom\": {\r\n if (CABINET_GROUP.includes(lookFeature.partId)) {\r\n const {navigationState} = store.getState();\r\n return {\r\n type: \"cabinets\",\r\n translateId: \"look.allCabinets\",\r\n setApplyToFunction: setCabinetsApplyTo,\r\n applyToArrayAll: CABINET_GROUP,\r\n currentApplyToArray: navigationState.cabinetsApplyTo,\r\n }\r\n } else if (COUNTERTOP_GROUP.includes(lookFeature.partId)) {\r\n const {navigationState} = store.getState();\r\n return {\r\n type: \"countertops\",\r\n translateId: \"look.allCountertops\",\r\n setApplyToFunction: setCountertopsApplyTo,\r\n applyToArrayAll: COUNTERTOP_GROUP,\r\n currentApplyToArray: navigationState.countertopsApplyToArray,\r\n }\r\n } else if (EDGE_GROUP.includes(lookFeature.partId)) {\r\n const {navigationState} = store.getState();\r\n return {\r\n type: \"edges\",\r\n translateId: \"look.allCountertops\",\r\n setApplyToFunction: setEdgesApplyTo,\r\n applyToArrayAll: EDGE_GROUP,\r\n currentApplyToArray: navigationState.edgesApplyTo,\r\n }\r\n }\r\n break;\r\n }\r\n case \"bathroom\": {\r\n if (CABINET_GROUP_BATHROOM.includes(lookFeature.partId) && (document.kvConfig.visualizerType !== \"bvLook\")) {\r\n const {navigationState} = store.getState();\r\n return {\r\n type: \"cabinets\",\r\n translateId: \"look.allCabinets\",\r\n setApplyToFunction: setCabinetsApplyToBathroom,\r\n applyToArrayAll: CABINET_GROUP,\r\n currentApplyToArray: navigationState.cabinetsApplyToBathroom,\r\n }\r\n } else if (COUNTERTOP_GROUP_BATHROOM.includes(lookFeature.partId)) {\r\n const {navigationState} = store.getState();\r\n return {\r\n type: \"countertops\",\r\n translateId: \"look.allCountertops\",\r\n setApplyToFunction: setCountertopsApplyToBathroom,\r\n applyToArrayAll: COUNTERTOP_GROUP_BATHROOM,\r\n currentApplyToArray: navigationState.countertopsApplyToArrayBathroom,\r\n }\r\n } else if (HANDLES_GROUP_BATHROOM.includes(lookFeature.partId)) {\r\n const {navigationState} = store.getState();\r\n return {\r\n type: \"handles\",\r\n translateId: \"look.allCountertops\",\r\n setApplyToFunction: setApplyToCommon,\r\n applyToArrayAll: HANDLES_GROUP_BATHROOM,\r\n currentApplyToArray: navigationState.handlesApplyToBathroom,\r\n }\r\n } else if (SHOWER_FLOOR_GROUP_BATHROOM.includes(lookFeature.partId)) {\r\n const {navigationState} = store.getState();\r\n return {\r\n type: \"showerFloor\",\r\n translateId: \"look.allCountertops\",\r\n setApplyToFunction: setApplyToCommon,\r\n applyToArrayAll: SHOWER_FLOOR_GROUP_BATHROOM,\r\n currentApplyToArray: navigationState.showerFloorApplyToBathroom,\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return null\r\n}\r\n\r\n/**\r\n * returns fabricator settings price logic\r\n * @param wallFeature {featureInterface}\r\n * @param applyToLogic {allWallsLogicInterface}\r\n * @param setCurrentFeature {boolean}\r\n */\r\nexport const clickOnSimilarFeatures = async (wallFeature, applyToLogic, setCurrentFeature = false) => {\r\n const layout = getCurrentLayout();\r\n let {type, applyToArrayAll} = applyToLogic;\r\n\r\n const {navigationState, fabricatorState} = store.getState();\r\n if ((type === \"countertops\" && !navigationState.useFeaturesLightRequest.countertops)\r\n || (type === \"cabinets\" && !navigationState.useFeaturesLightRequest.cabinets)) {\r\n if (setCurrentFeature && !fabricatorState.isSolidSurface) {\r\n store.dispatch(applyToLogic.setApplyToFunction([], true, type));\r\n return Promise.resolve()\r\n }\r\n }\r\n\r\n if (type === \"countertops\") {\r\n const featureIsLocked = getFeatureIsLocked(wallFeature);\r\n return CountertopSwitchers.applyAllCountertops(wallFeature, !featureIsLocked, applyToArrayAll, setCurrentFeature);\r\n } else if (type === \"cabinets\") {\r\n const featureIsLocked = getFeatureIsLocked(wallFeature);\r\n return CabinetSwitchers.applyClickTo(wallFeature, !featureIsLocked, applyToArrayAll, setCurrentFeature)\r\n } else {\r\n const navigationItemName = wallFeature.getSplittedFeatureName();\r\n const requestFromBackendName = layout.isNewLayout ? wallFeature.getCountertopGroupsSplittedFeatureName() : wallFeature.getSplittedFeatureName();\r\n // we are looking and matching splitted feature name, because it includes filters, but we request original sharedFeatureName\r\n let missingFeatures = [];\r\n applyToArrayAll.forEach(wallPartId => {\r\n const subPart = layout.getSubPartByPartId(wallPartId);\r\n if (!subPart || (subPart.part.partId === wallFeature.partId)) {\r\n return null\r\n }\r\n const featureFound = layout.designNavigationItems(subPart).find(navItem => {\r\n return navItem.part.getSplittedFeatureName() === navigationItemName\r\n });\r\n if (featureFound) {\r\n if (setCurrentFeature) {\r\n subPart.part.activeFeatureBeforeAllWalls = subPart.part.activeFeature;\r\n }\r\n featureFound.part.clickFromAllWalls(true)\r\n } else if (!subPart.part.alreadyRequestedFeatureNames || !subPart.part.alreadyRequestedFeatureNames.includes(requestFromBackendName)) {\r\n // @param missingFeaturesArray {featureGroupInterface}\r\n // @param navigationItemName {string}\r\n // @param setCurrentFeature {boolean}\r\n missingFeatures.push({relatedItem: subPart.part, navigationItemName, setCurrentFeature, requestFromBackendName})\r\n }\r\n });\r\n if (missingFeatures.length) {\r\n missingFeatures.push({relatedItem: wallFeature.getParent(), navigationItemName, setCurrentFeature, requestFromBackendName})\r\n // we need to check crop for current wall! but no need to request the wall itself\r\n await getMissingFeaturesAndClickThem(missingFeatures, false, wallFeature.partId)\r\n }\r\n return Promise.resolve()\r\n }\r\n}\r\n\r\n/**\r\n * returns fabricator settings price logic\r\n * @param applyToArray {array}\r\n * @param onlyForOneFeatureGroup {object}\r\n */\r\nexport const setActiveFeaturesBeforeAllWalls = (applyToArray = [], onlyForOneFeatureGroup = null) => {\r\n if (onlyForOneFeatureGroup && onlyForOneFeatureGroup.activeFeature) {\r\n onlyForOneFeatureGroup.activeFeatureBeforeAllWalls = onlyForOneFeatureGroup.activeFeature;\r\n return\r\n }\r\n const layout = getCurrentLayout();\r\n applyToArray.forEach(partId => {\r\n const featureGroup = layout.getFeatureGroupByPartId(partId);\r\n if (featureGroup && featureGroup.activeFeature) {\r\n featureGroup.activeFeatureBeforeAllWalls = featureGroup.activeFeature;\r\n }\r\n })\r\n}\r\n\r\nexport const requestAfterRoomChange = async (layout) => {\r\n let promises = [];\r\n const layoutName = layout.getCurrentLayoutAbbreviation();\r\n layout.getFeatures().forEach(parent => {\r\n if (!Array.isArray(parent.relatedItems) || !parent.relatedItems.length) {\r\n return\r\n }\r\n parent.relatedItems.forEach(featureGroup => {\r\n if (featureGroup.allFeaturesReceived\r\n && featureGroup.nextFeaturesPageToLoadArray\r\n && featureGroup.nextFeaturesPageToLoadArray[layoutName]\r\n && !featureGroup.nextFeaturesPageToLoadArray[layoutName].page) {\r\n promises.push(getAdditionalFeaturesOnScroll(featureGroup))\r\n }\r\n })\r\n });\r\n return Promise.all(promises)\r\n}\r\n\r\n\r\n/**\r\n * returns fabricator settings price logic\r\n * @param roomPreset {object}\r\n * @param loadedPresets {array}\r\n */\r\nexport const applyNewPreset = async (roomPreset, loadedPresets) => {\r\n const layout = getCurrentLayout();\r\n if (loadedPresets.includes(roomPreset.id)) {\r\n layout.setActiveFeaturesFromObject(roomPreset, false, false, true, false);\r\n await requestAfterRoomChange(layout);\r\n } else {\r\n await layout.setItemsFromBvState(roomPreset); // requestAfterRoomChange inside\r\n }\r\n return Promise.resolve()\r\n}\r\n\r\nexport const isRoomLayoutsVisible = () => {\r\n return Config.isVisualizerManagement() || Config.isDevMode()\r\n}\r\n\r\n/**\r\n * returns feature group current items quantity depending on layer positions\r\n * @param lookActiveFeature {featureInterface}\r\n * @param featureGroup {featureGroupInterface}\r\n * @return number {number}\r\n */\r\nexport const getFeatureGroupFeaturesQuantity = (lookActiveFeature, featureGroup = null) => {\r\n let featureQuantity = 1;\r\n if (!featureGroup && lookActiveFeature && lookActiveFeature.getParent) {\r\n featureGroup = lookActiveFeature.getParent()\r\n }\r\n if (featureGroup) {\r\n const currentActiveFeature = lookActiveFeature || featureGroup.activeFeature || featureGroup.activeNotInVisualizerFeature\r\n if (currentActiveFeature && currentActiveFeature.dbFeature.defaultQuantity && currentActiveFeature.dbFeature.defaultQuantity !== 1) {\r\n featureQuantity = currentActiveFeature.dbFeature.defaultQuantity;\r\n } else if (featureGroup.layerPositions && (!currentActiveFeature || !currentActiveFeature.notAvailableInVisualizer)) {\r\n // if feature is not available in visualizer > set at least 1 instead of 0 (missing sink in the cart in solid surface wizard issue)\r\n featureQuantity = Object.keys(featureGroup.layerPositions)\r\n .filter(position => !!featureGroup.layerPositions[position]).length\r\n }\r\n }\r\n return featureQuantity\r\n}\r\n","import * as types from \"./actionTypes\";\r\n\r\nexport const setGroheFiltersOpened = (filtersOpened = false) => ({\r\n type: types.SET_GROHE_FILTERS_OPENED,\r\n payload: {filtersOpened}\r\n});\r\n\r\nexport const setGroheSimilarFeature = (similarFeature = false) => ({\r\n type: types.SET_GROHE_SIMILAR_FEATURE,\r\n payload: {similarFeature}\r\n});\r\n\r\nexport const setGroheSimilarProductsOpened = (similarProductsOpened = false) => ({\r\n type: types.SET_GROHE_SIMILAR_PRODUCTS_OPENED,\r\n payload: {similarProductsOpened}\r\n});\r\n\r\nexport const setGroheRequiredButNotIncludedFeature = (requiredButNotIncludedFeature= false) => ({\r\n type: types.SET_GROHE_REQUIRED_BUT_NOT_INCLUDED_FEATURE,\r\n payload: {requiredButNotIncludedFeature}\r\n});\r\n\r\nexport const setGroheFiltersSearchText = (groheFiltersSearchText = \"\") => ({\r\n type: types.SET_GROHE_FILTERS_SEARCH_TEXT,\r\n payload: {groheFiltersSearchText}\r\n});\r\n\r\nexport const setLastOpenedCategory = (lastOpenedCategory = \"\") => ({\r\n type: types.SET_GROHE_LAST_OPENED_CATEGORY,\r\n payload: {lastOpenedCategory}\r\n});\r\n\r\nexport const setGroheSubCategoryOpened = (subCategoryOpened = \"\") => ({\r\n type: types.SET_GROHE_SUB_CATEGORY_OPENED,\r\n payload: {subCategoryOpened}\r\n});\r\n\r\nexport const setShowAddedToTheCartSuccess = (showAddedToTheCartSuccess = \"\") => ({\r\n type: types.SET_GROHE_SHOW_ADDED_TO_THE_CART_SUCCESS,\r\n payload: {showAddedToTheCartSuccess}\r\n});\r\n\r\nexport const setGroheActiveFeatureQuantity = (groheActiveFeatureQuantity = \"\") => ({\r\n type: types.SET_GROHE_ACTIVE_FEATURE_QUANTITY,\r\n payload: {groheActiveFeatureQuantity}\r\n});\r\n\r\nexport const setGroheShareButtonsOpened = (groheShareButtonsOpened = \"\") => ({\r\n type: types.SET_GROHE_SHARE_BUTTONS_OPENED,\r\n payload: {groheShareButtonsOpened}\r\n});\r\n\r\nexport const setGroheSameColorActiveFeature = (groheSameColorActiveFeature = \"\") => ({\r\n type: types.SET_GROHE_SAME_COLOR_ACTIVE_FEATURE,\r\n payload: {groheSameColorActiveFeature}\r\n});\r\n\r\nexport const setGroheSameColorSectionOpened = (groheSameColorSectionOpened = \"\") => ({\r\n type: types.SET_GROHE_SAME_COLOR_SECTION_OPENED,\r\n payload: {groheSameColorSectionOpened}\r\n});\r\n\r\nexport const setGroheSameColorCheckboxApplied = (groheSameColorCheckboxApplied = \"\") => ({\r\n type: types.SET_GROHE_SAME_COLOR_CHECKBOX_APPLIED,\r\n payload: {groheSameColorCheckboxApplied}\r\n});\r\n\r\nexport const setExisingTempId = (exisingTempId = \"\") => ({\r\n type: types.SET_GROHE_EXISTING_TEMP_ID,\r\n payload: {exisingTempId}\r\n});\r\n","import PropTypes from \"prop-types\";\r\nimport {featureInterface} from \"../../interfaces/featureInterface\";\r\n\r\nexport const CART_ITEM_ADDED_BY = {\r\n user: \"user\",\r\n auto: \"auto\",\r\n}\r\n\r\nexport const cartItemInterface = {\r\n id: PropTypes.string, // unique id used on frontend\r\n isEmpty: PropTypes.bool,\r\n isMinimumCharge: PropTypes.bool, // is used for lowes, added when countertops sqft is lower than 23\r\n isMinimumChargeItems: PropTypes.bool, // is used for lowes, between 23 and 27 countertops sqft\r\n selectionGroup: PropTypes.string,\r\n partId: PropTypes.string.isRequired,\r\n currentQuote: PropTypes.number,\r\n cartFeature: PropTypes.shape(featureInterface),\r\n quantity: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), // empty input case\r\n displayFakeQuantity: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), // for slab (countertop group)\r\n sqftId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), // if feature was added from SQFT\r\n unit: PropTypes.string, // was added for SQFT,\r\n qtCatName: PropTypes.string, // was added for SQFT,\r\n relatedProductParent: PropTypes.shape(featureInterface), //\r\n addedBy: PropTypes.oneOf([CART_ITEM_ADDED_BY.auto, CART_ITEM_ADDED_BY.user]), // can be user or auto (if cart list were created by the default(see createCartList function in lookVisualizer.js))\r\n isRemoved: PropTypes.bool,\r\n keepOnLookUpdate: PropTypes.bool, // in case it was added from wizard List - we don't need to remove it on look update cart items logic\r\n shippingName: PropTypes.string,\r\n shippingTime: PropTypes.string,\r\n shippingCost: PropTypes.number,\r\n fromWizardId: PropTypes.number, // wizard item id\r\n fromWizardStep: PropTypes.number, // wizard step (index)\r\n fromWizardGroupId: PropTypes.string, // wizard group\r\n isAddedFromDisplayLogic: PropTypes.bool, // if cart item was added automatically\r\n fromVisualizerType: PropTypes.string,\r\n fromQtCategory: PropTypes.string, // category name (to proper switch)\r\n bundleParentId: PropTypes.string, // parent cart item id (hash)\r\n};\r\n","const ActionTypes = {\r\n GET_CANVAS_SCALE: \"GET_CANVAS_SCALE\",\r\n CANVAS_SCALE_CHANGED: \"CANVAS_SCALE_CHANGED\",\r\n RESET_CANVAS: \"RESET_CANVAS\",\r\n ENABLE_PINCH_ZOOM: \"ENABLE_PINCH_ZOOM\",\r\n DISABLE_PINCH_ZOOM: \"DISABLE_PINCH_ZOOM\",\r\n CHANGE_LAYOUT: \"CHANGE_LAYOUT\",\r\n UPDATE_ALL_ITEMS: \"UPDATE_ALL_ITEMS\",\r\n USER_IS_LOGGED_IN: \"USER_IS_LOGGED_IN\",\r\n USER_POPUP_CLOSED: \"USER_POPUP_CLOSED\",\r\n REMOVE_GREEN_ZONE_ON_CANVAS: \"REMOVE_GREEN_ZONE_ON_CANVAS\",\r\n FEATURE_IS_CLICKED: \"FEATURE_IS_CLICKED\",\r\n OPEN_MOBILE_NAVIGATION: \"OPEN_MOBILE_NAVIGATION\",\r\n CHANGE_MOBILE_MENU_CONTENT_TYPE: \"CHANGE_MOBILE_MENU_CONTENT_TYPE\",\r\n UPDATE_QUOTING_TOOL: \"UPDATE_QUOTING_TOOL\",\r\n /*** OLD QT ACTIONS***/\r\n SHOW_NUMERIC_KBD: \"SHOW_NUMERIC_KBD\",\r\n OVERLAY_CLICK: \"OVERLAY_CLICK\",\r\n SHOW_SUMMARY: null,\r\n SHOW_DOCUSIGN: 'SHOW_DOCUSIGN'\r\n}\r\nexport default ActionTypes;\r\n","import {getCurrentLayout} from \"../../appLayout\";\r\nimport {\r\n getDistanceFromPointToInfiniteLine,\r\n getDistanceFromPointToLine,\r\n getIntersectCords,\r\n getMidPoint,\r\n getPointDistance,\r\n getPointField, isPointInsideShape,\r\n orientation\r\n} from \"./sqftHelper\";\r\nimport workspace from \"../components/canvas/core/workspace\";\r\nimport sqftShape from \"../components/canvas/core/shapes/sqftShape\";\r\nimport sqftConfig from \"../components/canvas/store/sqftConfig\";\r\nimport store from \"../../../store\";\r\nimport {SHAPE_PART_ID, SQFT_APPLIANCES} from \"../constants\";\r\nimport {getRoomName} from \"../../../misc/helpers\";\r\nimport NumberText from \"../components/canvas/core/workspace/text/numberText\";\r\nimport SqftStore from \"../components/canvas/store/sqftStore\";\r\nimport workspaceControllers from \"../components/canvas/store/workspaceControllers\";\r\nimport Wall from \"../components/canvas/core/shapes/wall\";\r\nimport sqftImageManager from \"../components/canvas/store/sqftImageManager\";\r\nimport {getNavItemsFromTheWizard} from \"./sqftHelperUi\";\r\nimport {getIntersectionCordsV2} from \"./coordinatesHelper\";\r\nimport sqftEventManager from \"../components/canvas/store/sqftEventManager\";\r\nimport {getFontSizeFromContext} from \"../components/canvas/store/canvasHelper\";\r\nimport EventManager from \"../components/canvas/store/sqftEventManager\";\r\n\r\nexport const DIRECTIONS = {\r\n EAST: \"east\",\r\n WEST: \"west\",\r\n NORTH: \"north\",\r\n SOUTH: \"south\",\r\n NORTHEAST: \"northeast\",\r\n NORTHWEST: \"northwest\",\r\n SOUTHEAST: \"southeast\",\r\n SOUTHWEST: \"southwest\",\r\n UNDEFINED: \"undefined\"\r\n};\r\n\r\nexport default class ShapeHelper {\r\n\r\n /**\r\n * @param {sqftShape} activeShape\r\n * @return {object} {sqftShape.id: [intersectionPoints]}\r\n */\r\n static getIntersectionsWithOtherShapes(activeShape) {\r\n let activeShapeLines = activeShape.getLines();\r\n let shapes = workspace.getShapes();\r\n let intersectionPoints = {};\r\n activeShapeLines.forEach((activeShapeLine) => {\r\n shapes.forEach(function(shape) {\r\n if (shape instanceof sqftShape && !shape.isHidden && shape.id !== activeShape.id) {\r\n let testShapeLines = shape.getLines();\r\n testShapeLines.forEach((testShapeLine) => {\r\n let pointFieldActiveShapeLineFrom = getPointField(activeShapeLine.from.x, activeShapeLine.from.y, activeShapeLine);\r\n let pointFieldActiveShapeLineTo = getPointField(activeShapeLine.to.x, activeShapeLine.to.y, activeShapeLine);\r\n let pointFieldTestShapeLineFrom = getPointField(testShapeLine.from.x, testShapeLine.from.y, testShapeLine);\r\n let pointFieldTestShapeLineTo = getPointField(testShapeLine.to.x, testShapeLine.to.y, testShapeLine);\r\n\r\n let intersectionCords = getIntersectCords(\r\n pointFieldActiveShapeLineFrom.x, pointFieldActiveShapeLineFrom.y,\r\n pointFieldActiveShapeLineTo.x, pointFieldActiveShapeLineTo.y,\r\n pointFieldTestShapeLineFrom.x, pointFieldTestShapeLineFrom.y,\r\n pointFieldTestShapeLineTo.x, pointFieldTestShapeLineTo.y,\r\n false\r\n );\r\n\r\n if (intersectionCords) {\r\n // ctx.beginPath();\r\n // ctx.arc(intersectionCords.x, intersectionCords.y, 10, 0, 2 * Math.PI);\r\n // ctx.stroke();\r\n //debugger // eslint-disable-line no-debugger\r\n (intersectionPoints[shape.id] = intersectionPoints[shape.id] || []).push(intersectionCords);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n\r\n return intersectionPoints;\r\n }\r\n\r\n /**\r\n * @param {sqftShape} shape1\r\n * @param {sqftShape} shape2\r\n * @return {object} {sqftShape.id: [intersectionPoints]}\r\n */\r\n static getTwoShapesIntersections(shape1, shape2 ) {\r\n let activeShapeLines = shape1.getLines();\r\n let intersectionPoints = {};\r\n let testShapeLines = shape2.getLines();\r\n activeShapeLines.forEach((activeShapeLine) => {\r\n testShapeLines.forEach((testShapeLine) => {\r\n let pointFieldActiveShapeLineFrom = getPointField(activeShapeLine.from.x, activeShapeLine.from.y, activeShapeLine);\r\n let pointFieldActiveShapeLineTo = getPointField(activeShapeLine.to.x, activeShapeLine.to.y, activeShapeLine);\r\n let pointFieldTestShapeLineFrom = getPointField(testShapeLine.from.x, testShapeLine.from.y, testShapeLine);\r\n let pointFieldTestShapeLineTo = getPointField(testShapeLine.to.x, testShapeLine.to.y, testShapeLine);\r\n\r\n let intersectionCords = getIntersectionCordsV2(\r\n pointFieldActiveShapeLineFrom.x, pointFieldActiveShapeLineFrom.y,\r\n pointFieldActiveShapeLineTo.x, pointFieldActiveShapeLineTo.y,\r\n pointFieldTestShapeLineFrom.x, pointFieldTestShapeLineFrom.y,\r\n pointFieldTestShapeLineTo.x, pointFieldTestShapeLineTo.y,\r\n false\r\n );\r\n\r\n if (intersectionCords) {\r\n // const ctx = sqftEventManager.getCtx();\r\n // ctx.beginPath();\r\n // ctx.arc(intersectionCords.x, intersectionCords.y, 10, 0, 2 * Math.PI);\r\n // ctx.stroke();\r\n //debugger // eslint-disable-line no-debugger\r\n (intersectionPoints[shape2.id] = intersectionPoints[shape2.id] || []).push(intersectionCords);\r\n }\r\n });\r\n });\r\n\r\n return intersectionPoints;\r\n }\r\n\r\n static checkIfShapeContainsAnother(shape1, shape2) {\r\n let shape1Pos = shape1.getCenter();\r\n let shape1PosField = getPointField(shape1Pos.x, shape1Pos.y, shape1);\r\n // here will will check only shape center point\r\n for (let vertex of [shape1PosField]) {\r\n if (isPointInsideShape(vertex, shape2)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @param {sqftShape} activeShape\r\n * @return {object} {sqftShape.id: {lineDirection: [{point: point, distance: int}]}}\r\n */\r\n static getDistancesToShapes(activeShape) {\r\n let activeShapeLines = activeShape.getLines();\r\n let shapes = workspace.getShapes();\r\n let distances = {};\r\n activeShapeLines.forEach((activeShapeLine) => {\r\n let pointFieldActiveShapeLineFrom = getPointField(activeShapeLine.from.x, activeShapeLine.from.y, activeShapeLine);\r\n\r\n shapes.forEach(function(shape) {\r\n if (shape instanceof sqftShape && !shape.isHidden && shape.id !== activeShape.id) {\r\n let testShapeLines = shape.getLines();\r\n testShapeLines.forEach((testShapeLine) => {\r\n let pointFieldTestShapeLineFrom = getPointField(testShapeLine.from.x, testShapeLine.from.y, testShapeLine);\r\n let pointFieldTestShapeLineTo = getPointField(testShapeLine.to.x, testShapeLine.to.y, testShapeLine);\r\n\r\n let distance = getDistanceFromPointToLine(\r\n pointFieldActiveShapeLineFrom.x, pointFieldActiveShapeLineFrom.y,\r\n pointFieldTestShapeLineFrom.x, pointFieldTestShapeLineFrom.y,\r\n pointFieldTestShapeLineTo.x, pointFieldTestShapeLineTo.y\r\n );\r\n\r\n if (distance || distance === 0) {\r\n let lineDirection = shape.getAngleDirection(testShapeLine);\r\n let diff = Math.abs(distance);\r\n\r\n if (diff < sqftConfig.SNAP_OFFSET) {\r\n let lineMidPoint = getMidPoint(pointFieldTestShapeLineFrom, pointFieldTestShapeLineTo);\r\n let result = {\r\n shape: shape,\r\n line: activeShapeLine,\r\n point: pointFieldActiveShapeLineFrom,\r\n distance,\r\n diff,\r\n diffX: pointFieldActiveShapeLineFrom.x - lineMidPoint.x,\r\n diffY: pointFieldActiveShapeLineFrom.y - lineMidPoint.y,\r\n }\r\n distances[shape.id] = distances[shape.id] || {};\r\n (distances[shape.id][lineDirection.orientation] = distances[shape.id][lineDirection.orientation] || []).push(result);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n });\r\n\r\n return distances;\r\n }\r\n\r\n /**\r\n * @param {sqftShape} activeShape\r\n * @return {object} {sqftShape.id: {lineDirection: [{point: point, distance: int}]}}\r\n */\r\n static getDistancesToWalls(activeShape) {\r\n let activeShapeLines = activeShape.getLines();\r\n let walls = workspaceControllers.walls.getResources();\r\n let distances = {};\r\n activeShapeLines.forEach((activeShapeLine) => {\r\n let pointFieldActiveShapeLineFrom = getPointField(activeShapeLine.from.x, activeShapeLine.from.y, activeShapeLine);\r\n\r\n walls.forEach(function(wall) {\r\n if (wall instanceof Wall) {\r\n //todo\r\n let testShapeLines = wall.getBordersOfWallLines();\r\n //let testShapeLines = wall.getLines();\r\n //console.log(\"testShapeLines\", testShapeLines);\r\n activeShape.testShapeLines = testShapeLines;\r\n\r\n testShapeLines.forEach((testShapeLine) => {\r\n let pointFieldTestShapeLineFrom = testShapeLine.from.getPointField();\r\n let pointFieldTestShapeLineTo = testShapeLine.to.getPointField();\r\n\r\n let distance = getDistanceFromPointToLine(\r\n pointFieldActiveShapeLineFrom.x, pointFieldActiveShapeLineFrom.y,\r\n pointFieldTestShapeLineFrom.x, pointFieldTestShapeLineFrom.y,\r\n pointFieldTestShapeLineTo.x, pointFieldTestShapeLineTo.y\r\n );\r\n\r\n if (distance) {\r\n const lineOrientation = ShapeHelper.getLineOrientation(testShapeLine.from, testShapeLine.to, true);\r\n //console.log(\"lineOrientation\",lineOrientation);\r\n let diff = Math.abs(distance);\r\n\r\n if (diff < sqftConfig.SNAP_OFFSET) {\r\n let lineMidPoint = getMidPoint(pointFieldTestShapeLineFrom, pointFieldTestShapeLineTo);\r\n let result = {\r\n shape: wall,\r\n line: activeShapeLine,\r\n point: pointFieldActiveShapeLineFrom,\r\n distance,\r\n diff,\r\n diffX: pointFieldActiveShapeLineFrom.x - lineMidPoint.x,\r\n diffY: pointFieldActiveShapeLineFrom.y - lineMidPoint.y,\r\n }\r\n distances[wall.id] = distances[wall.id] || {};\r\n (distances[wall.id][lineOrientation] = distances[wall.id][lineOrientation] || []).push(result);\r\n //console.log(\"diff\", diff);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n });\r\n\r\n return distances;\r\n }\r\n\r\n /**\r\n * @param {object} pointFieldActivePoint {x, y}\r\n * @return {object} {sqftShape.id: {lineDirection: [{point: point, distance: int}]}}\r\n */\r\n static getDistancesToPoint(pointFieldActivePoint) {\r\n let shapes = workspace.getShapes();\r\n let distances = {};\r\n //let pointFieldActivePoint = getPointField(activePoint.x, activePoint.y);\r\n shapes.forEach(function(shape) {\r\n if (shape instanceof sqftShape && !shape.isHidden) {\r\n let testShapeLines = shape.getLines();\r\n testShapeLines.forEach((testShapeLine) => {\r\n let pointFieldTestShapeLineFrom = getPointField(testShapeLine.from.x, testShapeLine.from.y, testShapeLine);\r\n let pointFieldTestShapeLineTo = getPointField(testShapeLine.to.x, testShapeLine.to.y, testShapeLine);\r\n\r\n let distance = getDistanceFromPointToInfiniteLine(\r\n pointFieldActivePoint.x, pointFieldActivePoint.y,\r\n pointFieldTestShapeLineFrom.x, pointFieldTestShapeLineFrom.y,\r\n pointFieldTestShapeLineTo.x, pointFieldTestShapeLineTo.y\r\n );\r\n\r\n if (distance) {\r\n let lineDirection = shape.getAngleDirection(testShapeLine);\r\n let diff = distance;\r\n switch (lineDirection.orientation) {\r\n case 'vertical':\r\n diff = pointFieldActivePoint.x > pointFieldTestShapeLineFrom.x ? distance : -distance\r\n break;\r\n case 'horizontal':\r\n diff = pointFieldActivePoint.y > pointFieldTestShapeLineFrom.y ? distance : -distance\r\n break;\r\n //todo rotated - set diff distance from tested point to line(beam)\r\n default:\r\n break;\r\n }\r\n\r\n if (distance < sqftConfig.SNAP_OFFSET) {\r\n let result = {\r\n shape: shape,\r\n line: testShapeLine,\r\n point: pointFieldActivePoint,\r\n distance,\r\n diff,\r\n }\r\n distances[shape.id] = distances[shape.id] || {};\r\n (distances[shape.id][lineDirection.orientation] = distances[shape.id][lineDirection.orientation] || []).push(result);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n return distances;\r\n }\r\n\r\n /**\r\n * @param {sqftShape} activeShape\r\n * @return {object} {sqftShape.id: {lineDirection: [{point: point, distance: int}]}}\r\n */\r\n static getDistancesToSlabImages(activeShape) {\r\n let activeShapeLines = activeShape.getLines();\r\n let croppedSlabImages = store.getState().sqftSlabState.croppedSlabImages;\r\n let distances = {};\r\n activeShapeLines.forEach((activeShapeLine) => {\r\n let pointFieldActiveShapeLineFrom = getPointField(activeShapeLine.from.x, activeShapeLine.from.y, activeShapeLine);\r\n\r\n croppedSlabImages.forEach(function(movableImage) {\r\n if (!movableImage.isHidden) {\r\n let testImagePoints = movableImage.getLinePointsPointField();\r\n for (let i = 0; i <= testImagePoints.length - 1; i++) {\r\n let from = testImagePoints[i];\r\n let to = testImagePoints[i === testImagePoints.length - 1 ? 0 : i + 1] ;\r\n let distance = getDistanceFromPointToLine(\r\n pointFieldActiveShapeLineFrom.x, pointFieldActiveShapeLineFrom.y,\r\n from.x, from.y,\r\n to.x, to.y,\r\n );\r\n const lineOrientation = ShapeHelper.getLineOrientation(from, to);\r\n let diff = Math.abs(distance);\r\n\r\n if (diff < sqftConfig.SNAP_OFFSET) {\r\n let lineMidPoint = getMidPoint(from, to);\r\n let result = {\r\n shape: movableImage,\r\n line: activeShapeLine,\r\n point: pointFieldActiveShapeLineFrom,\r\n distance,\r\n diff,\r\n diffX: pointFieldActiveShapeLineFrom.x - lineMidPoint.x,\r\n diffY: pointFieldActiveShapeLineFrom.y - lineMidPoint.y,\r\n }\r\n distances[movableImage.id] = distances[movableImage.id] || {};\r\n (distances[movableImage.id][lineOrientation] = distances[movableImage.id][lineOrientation] || []).push(result);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n\r\n return distances;\r\n }\r\n\r\n /**\r\n * @param {sqftShape} activeShape\r\n * @return {object} {sqftShape.id: {lineDirection: [{point: point, distance: int}]}}\r\n */\r\n static getDistancesToImages(activeShape) {\r\n let activeShapeLines = activeShape.getLines();\r\n let appliances = sqftImageManager.getAppliances();\r\n let slabImages = sqftImageManager.getSlabImages();\r\n const images = slabImages.concat(appliances);\r\n let distances = {};\r\n activeShapeLines.forEach((activeShapeLine) => {\r\n let pointFieldActiveShapeLineFrom = getPointField(activeShapeLine.from.x, activeShapeLine.from.y, activeShapeLine);\r\n\r\n images.forEach(function(movableImage) {\r\n if (!movableImage.isHidden && movableImage.id !== activeShape.id) {\r\n let testImagePoints = movableImage.getLinePointsPointField();\r\n for (let i = 0; i <= testImagePoints.length - 1; i++) {\r\n let from = testImagePoints[i];\r\n let to = testImagePoints[i === testImagePoints.length - 1 ? 0 : i + 1] ;\r\n let distance = getDistanceFromPointToLine(\r\n pointFieldActiveShapeLineFrom.x, pointFieldActiveShapeLineFrom.y,\r\n from.x, from.y,\r\n to.x, to.y,\r\n );\r\n const lineOrientation = ShapeHelper.getLineOrientation(from, to);\r\n let diff = Math.abs(distance);\r\n\r\n if (diff < sqftConfig.SNAP_OFFSET) {\r\n let lineMidPoint = getMidPoint(from, to);\r\n let result = {\r\n shape: movableImage,\r\n line: activeShapeLine,\r\n point: pointFieldActiveShapeLineFrom,\r\n distance,\r\n diff,\r\n diffX: pointFieldActiveShapeLineFrom.x - lineMidPoint.x,\r\n diffY: pointFieldActiveShapeLineFrom.y - lineMidPoint.y,\r\n }\r\n distances[movableImage.id] = distances[movableImage.id] || {};\r\n (distances[movableImage.id][lineOrientation] = distances[movableImage.id][lineOrientation] || []).push(result);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n\r\n return distances;\r\n }\r\n\r\n static getLineOrientation(point1, point2, usePointsV2 = false) {\r\n const x1 = usePointsV2 ? point1.modelCorePoint.getPosX() : point1.x\r\n const x2 = usePointsV2 ? point2.modelCorePoint.getPosX() : point2.x\r\n const y1 = usePointsV2 ? point1.modelCorePoint.getPosY() : point1.y\r\n const y2 = usePointsV2 ? point2.modelCorePoint.getPosY() : point2.y\r\n let slope = (y1 - y2) / (x1 - x2);\r\n let xDiff = Math.round(Math.abs(x2 - x1));\r\n let yDiff = Math.round(Math.abs(y2 - y1));\r\n if (xDiff === 0) {\r\n return \"vertical\";\r\n } else if (yDiff === 0) {\r\n return \"horizontal\";\r\n } else {\r\n if (slope >= 0) { //southeast and northwest\r\n if (x2 > x1) {\r\n return \"SOUTHEAST\";\r\n } else {\r\n return \"NORTHWEST\";\r\n }\r\n } else {\r\n if (x2 > x1) {\r\n return \"NORTHEAST\";\r\n } else {\r\n return \"SOUTHWEST\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * find all snapping possibilities\r\n * @param {object} itemBounds\r\n * @return {object} {sqftShape.id: [intersectionPoints]}\r\n */\r\n static getSnappingPossibilities(itemBounds) {\r\n if (Object.keys(itemBounds).length === 0) {\r\n return []\r\n }\r\n let resultV = [], resultH = [];\r\n for (let i in itemBounds) {\r\n if (itemBounds[i].vertical) {\r\n itemBounds[i].vertical.forEach((itemBound) => {\r\n resultV.push({\r\n shape: itemBound.shape,\r\n line: itemBound.line,\r\n point: itemBound.point,\r\n offset: itemBound.distance,\r\n diff: itemBound.diffX,\r\n orientation: \"vertical\",\r\n });\r\n });\r\n }\r\n if (itemBounds[i].horizontal) {\r\n itemBounds[i].horizontal.forEach((itemBound) => {\r\n resultH.push({\r\n shape: itemBound.shape,\r\n line: itemBound.line,\r\n point: itemBound.point,\r\n offset: itemBound.distance,\r\n diff: itemBound.diffY,\r\n orientation: \"horizontal\",\r\n });\r\n });\r\n }\r\n }\r\n\r\n let guides = [];\r\n\r\n // find closest snap\r\n let minV = resultV.sort((a, b) => a.diff - b.diff)[0];\r\n let minH = resultH.sort((a, b) => a.diff - b.diff)[0];\r\n if (minV) {\r\n guides.push(minV);\r\n }\r\n if (minH) {\r\n guides.push(minH);\r\n }\r\n if (guides.length > 0) {\r\n //debugger // eslint-disable-line no-debugger\r\n }\r\n return guides;\r\n }\r\n\r\n /**\r\n * Find all snapping possibilities for the same part ID\r\n * @param {object} itemBounds\r\n * @param partId\r\n * @return {object} {sqftShape.id: [intersectionPoints]}\r\n */\r\n static getItemBoundsForTheSamePartIdIfExist(itemBounds, partId) {\r\n if (Object.keys(itemBounds).length === 0) {\r\n return {};\r\n }\r\n\r\n const newItemBounds = {};\r\n\r\n for (let key in itemBounds) {\r\n if (itemBounds.hasOwnProperty(key)) {\r\n let verticalElements = [];\r\n let horizontalElements = [];\r\n\r\n if (itemBounds[key].vertical) {\r\n verticalElements = itemBounds[key].vertical.filter(verticalElement => verticalElement.shape.partId === partId);\r\n }\r\n\r\n if (itemBounds[key].horizontal) {\r\n horizontalElements = itemBounds[key].horizontal.filter(horizontalElement => horizontalElement.shape.partId === partId);\r\n }\r\n\r\n if (verticalElements.length > 0 || horizontalElements.length > 0) {\r\n newItemBounds[key] = {\r\n vertical: verticalElements.length > 0 ? verticalElements : undefined,\r\n horizontal: horizontalElements.length > 0 ? horizontalElements : undefined\r\n };\r\n }\r\n }\r\n }\r\n\r\n return newItemBounds;\r\n }\r\n\r\n /**\r\n * find all snapping possibilities\r\n * @param {object} itemBounds\r\n * @return {object} {sqftShape.id: [intersectionPoints]}\r\n */\r\n static getSnappingPossibilitiesToLines(itemBounds) {\r\n if (Object.keys(itemBounds).length === 0) {\r\n return []\r\n }\r\n let resultV = [], resultH = [];\r\n for (let i in itemBounds) {\r\n if (itemBounds[i].vertical) {\r\n itemBounds[i].vertical.forEach((itemBound) => {\r\n resultV.push({\r\n line: itemBound.line,\r\n point: itemBound.point,\r\n distance: itemBound.distance,\r\n diff: itemBound.diff,\r\n orientation: \"vertical\",\r\n });\r\n });\r\n }\r\n if (itemBounds[i].horizontal) {\r\n itemBounds[i].horizontal.forEach((itemBound) => {\r\n resultH.push({\r\n line: itemBound.line,\r\n point: itemBound.point,\r\n diff: itemBound.diff,\r\n orientation: \"horizontal\",\r\n });\r\n });\r\n }\r\n }\r\n\r\n let guides = [];\r\n\r\n // find closest snap\r\n let minV = resultV.sort((a, b) => a.distance - b.distance)[0];\r\n let minH = resultH.sort((a, b) => a.distance - b.distance)[0];\r\n if (minV) {\r\n guides.push(minV);\r\n }\r\n if (minH) {\r\n guides.push(minH);\r\n }\r\n\r\n if (guides.length > 0) {\r\n //debugger // eslint-disable-line no-debugger\r\n }\r\n return guides;\r\n }\r\n\r\n static getMinLengthToPoints(shape, points) {\r\n let shapeLines = shape.getLines();\r\n let minLength = null;\r\n let pointDistances = [];\r\n points.forEach(function(point) {\r\n shapeLines.forEach(function(line) {\r\n let pointField = getPointField(line.from.x, line.from.y, line)\r\n let pointDistance = getPointDistance(pointField, point);\r\n\r\n pointDistances.push(pointDistance);\r\n if (minLength === null || pointDistance < minLength) {\r\n minLength = pointDistance\r\n }\r\n })\r\n })\r\n pointDistances.sort((a, b) => a - b);\r\n //console.log(\"pointDistances\", pointDistances);\r\n\r\n return pointDistances ? pointDistances : null\r\n }\r\n\r\n static getInnerCornerPoints(shape) {\r\n let lines = shape.getLines(),\r\n points = [];\r\n\r\n for (let i = 0; i < lines.length; i++) {\r\n if (lines[i].to.angle > 0 || lines[i].to.arcLength > 0) {\r\n let dir = shape.getAngleDirection(lines[i]);\r\n if (this.isAngleInner(dir)) {\r\n points.push(lines[i].to);\r\n }\r\n }\r\n }\r\n\r\n return points\r\n }\r\n\r\n static isAngleInner(dir) {\r\n let isInner = false;\r\n switch(dir.facing) {\r\n case \"nw\":\r\n if (dir.orientation === \"horizontal\") {\r\n isInner = true\r\n }\r\n break;\r\n case \"ne\":\r\n if (dir.orientation === \"vertical\") {\r\n isInner = true\r\n }\r\n break;\r\n case \"se\":\r\n if (dir.orientation === \"horizontal\") {\r\n isInner = true\r\n }\r\n break;\r\n case \"sw\":\r\n if (dir.orientation === \"vertical\") {\r\n isInner = true\r\n }\r\n\r\n break;\r\n }\r\n\r\n return isInner;\r\n }\r\n\r\n //deprecated (old rotation function) use getCenterPoint\r\n static getShapeCenter(lines, isSlabMode) {\r\n let max_x = 0, min_x = 0, max_y = 0, min_y = 0;\r\n for(let i = 0; i < lines.length; i++) {\r\n let rotatePointX = isSlabMode ? lines[i].from.posSlab.x : lines[i].from.x;\r\n let rotatePointY = isSlabMode ? lines[i].from.posSlab.y : lines[i].from.y;\r\n if (max_x < rotatePointX)\r\n max_x = rotatePointX;\r\n if (min_x > rotatePointX)\r\n min_x = rotatePointX;\r\n if (max_y < rotatePointY)\r\n max_y = rotatePointY;\r\n if (min_y > rotatePointY)\r\n min_y = rotatePointY;\r\n }\r\n\r\n return {x: ((max_x - min_x) / 2) + min_x, y: ((max_y - min_y) / 2) + min_y};\r\n }\r\n\r\n static getCenterPoint(points) {\r\n let xCords = points.map (point => point.x);\r\n let yCords = points.map (point => point.y);\r\n let cx = (Math.min (...xCords) + Math.max (...xCords)) / 2;\r\n let cy = (Math.min (...yCords) + Math.max (...yCords)) / 2;\r\n\r\n return {x: cx, y: cy};\r\n }\r\n\r\n static getAbsolutePosFromSnapPossibilities = (snapPossibilities, pos) => {\r\n if (snapPossibilities.length > 0) {\r\n let scale = sqftConfig.scale;\r\n let absolutePos = {...pos};\r\n let snapWithShape = null;\r\n snapPossibilities.forEach((snap) => {\r\n switch (snap.orientation) {\r\n case \"horizontal\":\r\n absolutePos.y -= snap.diff / scale\r\n break;\r\n case \"vertical\":\r\n absolutePos.x -= snap.diff / scale\r\n break;\r\n }\r\n snapWithShape = snap.shape;\r\n })\r\n return [absolutePos, snapWithShape]\r\n }\r\n return [null, null]\r\n }\r\n}\r\n\r\n/**\r\n * get line length number text from 2 point\r\n */\r\nexport const getLineLengthNumberText = (pointFrom, pointTo, parent, changeValueCallback) => {\r\n const midPoint = getMidPoint(pointFrom.getPosition(), pointTo.getPosition()),\r\n lineOrientation = getLineOrientation(pointFrom, pointTo),\r\n //todo line direction\r\n lineDirection = {newDirection: \"west\"},//getPointDirection(pointFrom, pointTo, nextPoint, prevPoint),\r\n distance = getPointDistance(pointFrom, pointTo);\r\n\r\n let yOffset = 0,\r\n xOffset = 0;\r\n\r\n switch (lineOrientation) {\r\n case orientation.HORIZONTAL: {\r\n yOffset = lineDirection.newDirection === \"west\" ? 36 + 10 : -36;\r\n break;\r\n }\r\n case orientation.VERTICAL: {\r\n xOffset = (lineDirection.newDirection === \"south\" ? 36 + 10 : -36 - 10);\r\n break;\r\n }\r\n //TODO rotation\r\n case orientation.NORTHWEST: { break; }\r\n case orientation.NORTHEAST: { break; }\r\n case orientation.SOUTHWEST: { break; }\r\n case orientation.SOUTHEAST: { break; }\r\n default: break;\r\n }\r\n\r\n let pos = {\r\n x: midPoint.x,\r\n y: midPoint.y,\r\n xOffset: xOffset,\r\n yOffset: yOffset,\r\n orientation: lineOrientation,\r\n betweenPoints: {\r\n pointFrom: pointFrom,\r\n pointTo: pointTo,\r\n }\r\n };\r\n\r\n let design = {\r\n shouldRenderFrameBorder: true,\r\n isLength: true\r\n };\r\n\r\n return new NumberText(distance, pos, design, parent, changeValueCallback);\r\n}\r\n\r\nexport const getPointDirection = (aP, bP, cP, lineBeforeFrom) => { // line1.from , line1.to, line2.to, lineBefore.from\r\n var\r\n mAC = getMidPoint(aP, cP),\r\n vDir,\r\n hDir,\r\n orientation = ShapeHelper.getLineOrientation(aP,bP),\r\n newDirection = '',\r\n cornerMargins = {\r\n fromTop : 0,\r\n fromLeft : 0,\r\n fromRight : 0,\r\n fromBottom : 0,\r\n },\r\n dirX = 'forward',\r\n dirY = 'forward';\r\n\r\n if (aP.x > bP.x) {\r\n dirX = 'backward';\r\n }\r\n if (aP.y < bP.y) {\r\n dirY = 'backward';\r\n }\r\n if (bP.y >= mAC.y) {\r\n vDir = \"n\";\r\n } else {\r\n vDir = \"s\";\r\n }\r\n if (bP.x >= mAC.x) { // 155 - 118\r\n hDir = \"w\";\r\n } else {\r\n hDir = \"e\";\r\n }\r\n\r\n var point1X = aP.x - (aP.x % 1),\r\n point1Y = aP.y - (aP.y % 1),\r\n point2X = bP.x - (bP.x % 1),\r\n point2Y = bP.y - (bP.y % 1),\r\n point3X = cP.x - (cP.x % 1),\r\n point3Y = cP.y - (cP.y % 1),\r\n pointBeforeX = lineBeforeFrom.x - (lineBeforeFrom.x % 1),\r\n pointBeforeY = lineBeforeFrom.y - (lineBeforeFrom.y % 1); // remove all after dot for proper compare\r\n\r\n if (orientation === \"horizontal\") {\r\n newDirection = (point1X > point2X) ? \"west\" : \"east\"\r\n }\r\n\r\n if (orientation === \"vertical\") {\r\n newDirection = (point1Y > point2Y) ? \"north\" : \"south\"\r\n }\r\n\r\n if ((point1X === point2X) && (point2Y === point3Y) && (point1X < pointBeforeX) && (newDirection === \"south\")\r\n || (point1X === point2X) && (point2Y === point3Y) && (point2X > cP.x) && (newDirection === \"north\")) {\r\n cornerMargins.fromTop = true\r\n }\r\n if ((point1Y === point2Y) && (point2X === point3X) && (point3Y > point2Y) && (point1X > point2X)\r\n ||(point1Y === point2Y) && (pointBeforeX === point1X) && (pointBeforeY < point1Y) && (point2X > point1X)) {\r\n cornerMargins.fromLeft = true\r\n }\r\n if ((point1Y === point2Y) && (point1X === pointBeforeX) && (pointBeforeY > point1Y) && (point1X > point2X)\r\n ||(point1Y === point2Y) && (point2X === point3X) && (point2Y > point3Y) && (point2X > point1X)) {\r\n cornerMargins.fromRight = true\r\n }\r\n if ((point1X === point2X) && (point2Y === point3Y) && (point1Y < point2Y) && (point3X > point2X)\r\n ||(point1X === point2X) && (point1Y === pointBeforeY) && (point1X > pointBeforeX) && (point1Y > point2Y)) {\r\n cornerMargins.fromBottom = true\r\n }\r\n\r\n return {\r\n facing: vDir + hDir,\r\n direction: {x: dirX, y: dirY},\r\n cornerMargins : cornerMargins,\r\n orientation : orientation,\r\n newDirection : newDirection\r\n }\r\n\r\n}\r\n\r\n/**\r\n * get line length number text from 2 point\r\n */\r\nexport const getLineLengthNumberTextV2 = (pointFrom, pointTo, parent, changeValueCallback) => {\r\n const midPoint = getMidPoint(pointFrom.getPosition(), pointTo.getPosition()),\r\n lineOrientation = getLineOrientation(pointFrom, pointTo),\r\n lineDirection = getLineDirection(pointFrom, pointTo),\r\n distance = getPointDistance(pointFrom, pointTo);\r\n\r\n let yOffset = 0,\r\n xOffset = 0;\r\n\r\n switch (lineOrientation) {\r\n case orientation.HORIZONTAL: {\r\n const ctx = sqftEventManager.getCtx();\r\n const fontSize = getFontSizeFromContext(ctx);\r\n yOffset = lineDirection === DIRECTIONS.WEST ? fontSize : -fontSize;\r\n\r\n break;\r\n }\r\n case orientation.VERTICAL: {\r\n xOffset = (lineDirection === DIRECTIONS.SOUTH ? + 10 : - 10);\r\n break;\r\n }\r\n //TODO rotation\r\n case orientation.NORTHWEST: { break; }\r\n case orientation.NORTHEAST: { break; }\r\n case orientation.SOUTHWEST: { break; }\r\n case orientation.SOUTHEAST: { break; }\r\n default: break;\r\n }\r\n\r\n let pos = {\r\n x: midPoint.x,\r\n y: midPoint.y,\r\n xOffset: xOffset,\r\n yOffset: yOffset,\r\n orientation: lineOrientation,\r\n betweenPoints: {\r\n pointFrom: pointFrom,\r\n pointTo: pointTo,\r\n }\r\n };\r\n\r\n let design = {\r\n shouldRenderFrameBorder: false,\r\n isLength: true,\r\n priority: EventManager.priorities.SEGMENT\r\n };\r\n\r\n return new NumberText(distance, pos, design, parent, changeValueCallback);\r\n}\r\n\r\n/**\r\n * get line length number text from 2 point\r\n */\r\nexport const getLineLengthNumberTextV2ForTheImage = (pointFrom, pointTo, parent, changeValueCallback, shouldOnlyRenderText = false) => {\r\n const midPoint = getMidPoint(pointFrom.getPosition(), pointTo.getPosition()),\r\n lineOrientation = getLineOrientation(pointFrom, pointTo),\r\n lineDirection = getLineDirection(pointFrom, pointTo),\r\n distance = getPointDistance(pointFrom, pointTo);\r\n\r\n let yOffset = 0,\r\n xOffset = 0;\r\n const ctx = sqftEventManager.getCtx();\r\n const fontSize = getFontSizeFromContext(ctx);\r\n\r\n switch (lineOrientation) {\r\n case orientation.HORIZONTAL: {\r\n yOffset = lineDirection === DIRECTIONS.WEST ? fontSize : fontSize;\r\n\r\n break;\r\n }\r\n case orientation.VERTICAL: {\r\n xOffset = (lineDirection === DIRECTIONS.SOUTH ? - 0 : 0);\r\n yOffset = lineDirection === DIRECTIONS.WEST ? fontSize : fontSize;\r\n\r\n break;\r\n }\r\n //TODO rotation\r\n case orientation.NORTHWEST: { break; }\r\n case orientation.NORTHEAST: { break; }\r\n case orientation.SOUTHWEST: { break; }\r\n case orientation.SOUTHEAST: { break; }\r\n default: break;\r\n }\r\n\r\n let pos = {\r\n x: midPoint.x,\r\n y: midPoint.y,\r\n xOffset: xOffset,\r\n yOffset: yOffset,\r\n orientation: lineOrientation,\r\n betweenPoints: {\r\n pointFrom: pointFrom,\r\n pointTo: pointTo,\r\n }\r\n };\r\n\r\n let design = {\r\n shouldOnlyRenderText: shouldOnlyRenderText,\r\n shouldRenderFrameBorder: false,\r\n isLength: true,\r\n eventsPriority: EventManager.priorities.IMAGE_LINE\r\n };\r\n\r\n return new NumberText(distance, pos, design, parent, changeValueCallback);\r\n}\r\n\r\nexport const getLineDirection = (pointA, pointB, shouldRound = false) => {\r\n let deltaX, deltaY;\r\n if (shouldRound) {\r\n deltaX = Math.round10(pointB.x, -1) - Math.round10(pointA.x, -1);\r\n deltaY = Math.round10(pointB.y, -1) - Math.round10(pointA.y, -1);\r\n } else {\r\n deltaX = pointB.x - pointA.x;\r\n deltaY = pointB.y - pointA.y;\r\n }\r\n\r\n if (deltaX > 0 && deltaY === 0) {\r\n return DIRECTIONS.EAST;\r\n } else if (deltaX < 0 && deltaY === 0) {\r\n return DIRECTIONS.WEST;\r\n } else if (deltaY > 0 && deltaX === 0) {\r\n return DIRECTIONS.SOUTH;\r\n } else if (deltaY < 0 && deltaX === 0) {\r\n return DIRECTIONS.NORTH;\r\n } else if (deltaX > 0 && deltaY < 0) {\r\n return DIRECTIONS.NORTHEAST;\r\n } else if (deltaX < 0 && deltaY < 0) {\r\n return DIRECTIONS.NORTHWEST;\r\n } else if (deltaX > 0 && deltaY > 0) {\r\n return DIRECTIONS.SOUTHEAST;\r\n } else if (deltaX < 0 && deltaY > 0) {\r\n return DIRECTIONS.SOUTHWEST;\r\n } else {\r\n return DIRECTIONS.UNDEFINED;\r\n }\r\n}\r\n\r\n/**\r\n * @Deprecated. Use getLineDirection instead\r\n */\r\nexport const getLineOrientation = (pointFrom, pointTo) => {\r\n let slope = getSlope(pointFrom, pointTo),\r\n xDiff = Math.round(Math.abs(pointTo.x - pointFrom.x)),\r\n yDiff = Math.round(Math.abs(pointTo.y - pointFrom.y));\r\n\r\n if (xDiff === 0) {\r\n return orientation.VERTICAL;\r\n } else if (yDiff === 0) {\r\n return orientation.HORIZONTAL;\r\n } else {\r\n if (slope >= 0) { //southeast and northwest\r\n if (pointTo.x > pointFrom.x) {\r\n return orientation.SOUTHEAST;\r\n } else {\r\n return orientation.NORTHWEST;\r\n }\r\n } else {\r\n if (pointTo.x > pointFrom.x) {\r\n return orientation.NORTHEAST;\r\n } else {\r\n return orientation.SOUTHWEST;\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const getSlope = (pointFrom, pointTo) => {\r\n let x1 = pointFrom.x,\r\n x2 = pointTo.x,\r\n y1 = pointFrom.y,\r\n y2 = pointTo.y;\r\n\r\n return (y1 - y2) / (x1 - x2);\r\n}\r\n\r\nexport const getSlopeV2 = (pointFrom, pointTo) => {\r\n if (pointTo.x - pointFrom.x !== 0) {\r\n return (pointTo.y - pointFrom.y) / (pointTo.x - pointFrom.x);\r\n }\r\n return Number.MAX_VALUE;\r\n}\r\n\r\n/**\r\n * @param {{from: {x:number, y: number}, to: {x:number, y: number}}} line1\r\n * @param {{from: {x:number, y: number}, to: {x:number, y: number}}} line2\r\n * get angle between two lines https://www.geeksforgeeks.org/angle-between-a-pair-of-lines/\r\n */\r\nexport const getAngleBetweenTwoLines = (line1, line2) => {\r\n const slopeLine1 = getSlopeV2(line1.from, line1.to);\r\n const slopeLine2 = getSlopeV2(line2.from, line2.to);\r\n\r\n return getAngleBetweenTwoSlopes(slopeLine1, slopeLine2);\r\n}\r\n\r\nexport const getAngleBetweenTwoSlopes = (M1, M2) => {\r\n // Store the tan value of the angle\r\n let angle = Math.abs((M2 - M1) / (1 + M1 * M2));\r\n\r\n // Calculate tan inverse of the angle\r\n let ret = Math.atan(angle);\r\n\r\n // Convert the angle from\r\n // radian to degree\r\n\r\n return (ret * 180) / Math.PI;\r\n}\r\n\r\n/**\r\n * @param {{x:number, y: number}} point1\r\n * @param {{x:number, y: number}} point2\r\n */\r\nexport const getVectorByPoints = (point1, point2) => {\r\n return {x: point2.x - point1.x, y: point2.y - point1.y}\r\n}\r\n\r\n/**\r\n * @param {{from: {x:number, y: number}, to: {x:number, y: number}}} line1\r\n * @param {{from: {x:number, y: number}, to: {x:number, y: number}}} line2\r\n */\r\nexport const getAngleBetweenTwoLinesV2 = (line1, line2) => {\r\n const vector1 = getVectorByPoints(line1.to, line1.from);\r\n const vector2 = getVectorByPoints(line2.from, line2.to);\r\n //const pointDistance = Math.sqrt(Math.pow(vectorLine2.x - vectorLine1.x, 2) + Math.pow(vectorLine2.y - vectorLine1.y, 2));\r\n const cosAngle = (vector1.x + vector2.x + vector1.y + vector2.y)\r\n / Math.sqrt(Math.pow(vector1.x, 2) + Math.pow(vector1.y, 2))\r\n * Math.sqrt(Math.pow(vector2.x, 2) + Math.pow(vector2.y, 2));\r\n\r\n //todo\r\n //console.log(\"cosAngle\", cosAngle);\r\n return Math.acos (cosAngle)\r\n}\r\n\r\n/**\r\n * Calculates the angle ABC ()\r\n *\r\n * A first point, ex: {x: 0, y: 0}\r\n * C second point\r\n * B center point\r\n **/\r\nexport const getAngleBetween3Points = (A, B, C) => {\r\n let AB = Math.sqrt(Math.pow(B.x - A.x,2)+ Math.pow(B.y - A.y,2));\r\n let BC = Math.sqrt(Math.pow(B.x - C.x,2)+ Math.pow(B.y - C.y,2));\r\n let AC = Math.sqrt(Math.pow(C.x - A.x,2)+ Math.pow(C.y - A.y,2));\r\n const angleInRadians = Math.acos((BC*BC+AB*AB-AC*AC)/(2*BC*AB));\r\n\r\n return (angleInRadians * 180) / Math.PI\r\n}\r\n\r\nexport const getEdgeFeatureGroup = () => {\r\n if (!SqftStore.edgeFeatureGroups) {\r\n SqftStore.edgeFeatureGroups = {};\r\n }\r\n\r\n const visualizerType = document.kvConfig.visualizerType;\r\n\r\n // Check if the edgeFeatureGroup for the current visualizerType is already cached\r\n if (!SqftStore.edgeFeatureGroups[visualizerType]) {\r\n const mainNeeded = \"edge_profile\";\r\n const oppositeNeeded = \"center_island_edge\";\r\n const layout = getCurrentLayout(visualizerType);\r\n\r\n let featureGroup = layout.getSubPartFromQtCategories(mainNeeded);\r\n if (!featureGroup) {\r\n featureGroup = layout.getSubPartFromQtCategories(oppositeNeeded);\r\n }\r\n if (!featureGroup) {\r\n featureGroup = layout.parts[\"Countertop\"] && layout.parts[\"Countertop\"].edge\r\n ? { part: layout.parts[\"Countertop\"].edge }\r\n : null;\r\n }\r\n if (!featureGroup) {\r\n let fg = layout.getFeatureGroupByPartId(\"edge_profile\");\r\n if (fg) {\r\n featureGroup = {part: fg};\r\n }\r\n }\r\n\r\n // Cache the result for the current visualizerType\r\n SqftStore.edgeFeatureGroups[visualizerType] = featureGroup;\r\n }\r\n\r\n return SqftStore.edgeFeatureGroups[visualizerType];\r\n};\r\n\r\nexport const getEdgeFeatures = (edgeFeatureGroup) => {\r\n if (!edgeFeatureGroup) {\r\n edgeFeatureGroup = getEdgeFeatureGroup();\r\n }\r\n if (!edgeFeatureGroup) {\r\n return []\r\n }\r\n const state = store.getState();\r\n const {wizardIsActive} = state.wizardState;\r\n\r\n if (SqftStore.edgeFeatures.length === 0) {\r\n let navItems\r\n\r\n if (wizardIsActive) {\r\n navItems = getNavItemsFromTheWizard(edgeFeatureGroup);\r\n } else {\r\n const layout = getCurrentLayout();\r\n navItems = layout.designNavigationItems(edgeFeatureGroup,\r\n {},\r\n \"\",\r\n false,\r\n \"all\",\r\n [],\r\n { firstFeature: null, firstConditions: null },\r\n )\r\n }\r\n\r\n SqftStore.edgeFeatures = edgeFeatureGroup\r\n ? navItems\r\n : [];\r\n }\r\n\r\n return SqftStore.edgeFeatures\r\n};\r\n\r\n\r\n/**\r\n * countertopPartName will be center_island_countertop if it not exists in the room or at all in qtCategories the same\r\n * for center_island_countertop, it will return countertop if center_island_countertop not exists\r\n * @returns {[string, string]} countertopPartName, centerIslandPartName\r\n */\r\nexport const getCountertopPartNames = (intl = null) => {\r\n const state = store.getState();\r\n const {quotes, activeQuoteIndex} = state.quotesState;\r\n const fabricatorData = state.fabricatorState;\r\n const activeRoomId = state.sqftMenuState.activeRoomId;\r\n const cartItems = state.cartState.cartItems;\r\n intl = intl ? intl : workspace.intl;\r\n const roomName = getRoomName(activeQuoteIndex, cartItems, quotes, intl.messages, intl.locale, fabricatorData);\r\n void roomName; //todo remove\r\n const room = activeRoomId ? activeRoomId : document.kvConfig.visualizerType\r\n const layout = getCurrentLayout();\r\n\r\n let countertopNavItem = layout.getSubPartFromQtCategories(SHAPE_PART_ID.countertop, room);\r\n let centerIslandNavItem = layout.getSubPartFromQtCategories(SHAPE_PART_ID.center_island_countertop, room);\r\n\r\n if (!countertopNavItem && !centerIslandNavItem) {\r\n countertopNavItem = layout.getSubPartFromQtCategories(SHAPE_PART_ID.countertop);\r\n centerIslandNavItem = layout.getSubPartFromQtCategories(SHAPE_PART_ID.center_island_countertop);\r\n }\r\n\r\n //try to assign vanity countertop if countertop or center_island_countertop not exist\r\n if (!countertopNavItem && !centerIslandNavItem) {\r\n countertopNavItem = centerIslandNavItem = layout.getSubPartFromQtCategories(SHAPE_PART_ID.vanity_countertop);\r\n }\r\n\r\n const countertopPartName = countertopNavItem ? countertopNavItem.part.partId : SHAPE_PART_ID.center_island_countertop;\r\n const centerIslandPartName = centerIslandNavItem ? centerIslandNavItem.part.partId : SHAPE_PART_ID.countertop;\r\n\r\n return [countertopPartName, centerIslandPartName];\r\n}\r\n\r\n/**\r\n * Test if shape part ids are equal, parentPartId is added for the spacers\r\n * @param shape\r\n * @param testShape\r\n * @return {boolean}\r\n */\r\nexport const canShapeBeAutoShifted = (shape, testShape) => {\r\n const isShapePlacedOnTheFloor = getIsShapePlacedOnTheFloor(shape);\r\n const isShapePlacedOnTheWall = getIsShapePlacedOnTheWall(shape);\r\n\r\n const isTestShapePlacedOnTheFloor = getIsShapePlacedOnTheFloor(testShape);\r\n const isTestShapePlacedOnTheWall = getIsShapePlacedOnTheWall(testShape);\r\n\r\n return (shape.id !== testShape.id &&\r\n (isShapePlacedOnTheWall && isTestShapePlacedOnTheWall)\r\n || (isShapePlacedOnTheFloor && isTestShapePlacedOnTheFloor)\r\n )\r\n}\r\n\r\nexport const getIsShapePlacedOnTheFloor = (shape) => {\r\n return (shape.partId === SHAPE_PART_ID.tall_cabinet_boxes\r\n || shape.parentPartId === SHAPE_PART_ID.tall_cabinet_boxes\r\n || shape.partId === SHAPE_PART_ID.lower_cabinet_boxes\r\n || shape.parentPartId === SHAPE_PART_ID.lower_cabinet_boxes\r\n || shape.subType === SHAPE_PART_ID.fridge\r\n || shape.subType === SHAPE_PART_ID.stove\r\n || shape.subType === SQFT_APPLIANCES.range\r\n || shape.subType === SQFT_APPLIANCES.sink\r\n || shape.subType === SQFT_APPLIANCES.doubleSink\r\n || shape.subType === SQFT_APPLIANCES.dishwasher\r\n || shape.subType === SQFT_APPLIANCES.iceMachine\r\n || shape.subType === SQFT_APPLIANCES.oven\r\n || shape.subType === SQFT_APPLIANCES.stovetop\r\n || shape.subType === SQFT_APPLIANCES.trashCompactor\r\n || shape.subType === SQFT_APPLIANCES.wineFridge\r\n)}\r\n\r\nexport const getIsShapePlacedOnTheWall = (shape) => {\r\n return (shape.partId === SHAPE_PART_ID.upper_cabinet_boxes\r\n || shape.parentPartId === SHAPE_PART_ID.upper_cabinet_boxes\r\n || shape.subType === SQFT_APPLIANCES.hood\r\n)}\r\n","import JsonApi from \"./jsonApi\";\r\nimport {getBvFeatures, getBvGroupFeatures, getSaveQuoteFastData} from \"./server-api\";\r\nimport {getCurrentLayout, getCurrentRoomType} from \"../bvcomponents/appLayout\";\r\nimport {COUNTERTOP_GROUP, CABINET_GROUP, EDGE_GROUP} from \"../bvcomponents/kvComponent/core/constants\";\r\nimport store from \"../store\";\r\nimport {updateNavigationCount} from \"../actions/lookFunctions\";\r\nimport {COUNTERTOP_GROUP_BATHROOM, LOOK_ROOM_TYPES} from \"../bvcomponents/look/core/constants\";\r\nimport {getCommonVisualizerType, IS_LIXIL_SERVERS} from \"../config\";\r\nimport {getFeatureCost} from \"../misc/helpers\";\r\nimport {showWizardInsteadOfQT} from \"../bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\n\r\nexport const LIXIL_USER_QUERY_PARAMS = [\"userid\", \"email\", \"fname\", \"lname\", \"brand\", \"region\"];\r\n\r\nexport const getPassedUserInfo = (searchParams) => {\r\n // {\r\n // userid: {userId from querystring},\r\n // email: {email from querystring},\r\n // fname: {fname from querystring},\r\n // lname: {lname from querystring},\r\n // fabricatorId: {QC Id for Fabricator (same value passed for fabricatorId for the LoginClient API call}\r\n // }\r\n const userData = {\r\n fabricatorId: +document.kvConfig.userId\r\n };\r\n LIXIL_USER_QUERY_PARAMS.forEach(property => {\r\n userData[property] = searchParams.get(property)\r\n ? property === \"userid\" || property === \"lname\"\r\n ? searchParams.get(property).split(\"?userid=\")[0].replace(/ /g, \"+\")\r\n : searchParams.get(property).replace(/ /g, \"+\")\r\n : \"\"\r\n });\r\n console.log(\"request userData\", userData);\r\n return JsonApi.getPassedUserInfo(userData)\r\n .then(response => response.data)\r\n .catch(error => {\r\n console.log(\"Server error getPassedUserInfo \"+new Error(error));\r\n })\r\n};\r\n\r\nexport const postSaveVisualizerImage = (base64Image) => {\r\n // console.log(\"request postSaveVisualizerImage\", base64Image);\r\n return JsonApi.postSaveVisualizerImage(+document.kvConfig.userId, base64Image)\r\n .then(response => response.data)\r\n .catch(error => {\r\n console.log(\"Server error postSaveVisualizerImage \"+new Error(error));\r\n })\r\n};\r\n\r\nexport const postSaveTempData = (tempData, id = \"\", expiresIn = \"\", ) => {\r\n return JsonApi.postSaveTempData(tempData, id, expiresIn)\r\n .then(response => response.data)\r\n .catch(error => {\r\n console.log(\"Server error postSaveTempData \"+new Error(error));\r\n })\r\n};\r\n\r\nexport const getSaveTempData = (id = \"\") => {\r\n return JsonApi.getSaveTempData(id)\r\n .then(response => response.data)\r\n .catch(error => {\r\n debugger;//eslint-disable-line\r\n console.log(\"Server error getSaveTempData \"+new Error(error));\r\n })\r\n};\r\n\r\nexport const getTempIdForPostMessage = async (returnAction = \"\", existingTempId = \"\") => {\r\n const savedFastData = await getSaveQuoteFastData(true);\r\n\r\n savedFastData.records[0].data[\"returnAction\"] = returnAction;\r\n console.log(\"request post temp data before stringify ->\", existingTempId, savedFastData);\r\n const stringifiedSaveData = JSON.stringify(savedFastData);\r\n let receivedTempId = await postSaveTempData(stringifiedSaveData, existingTempId);\r\n if (!receivedTempId) {\r\n receivedTempId = await postSaveTempData(stringifiedSaveData, existingTempId);\r\n }\r\n return receivedTempId\r\n};\r\n\r\nexport const postSureTax = (postData) => {\r\n return JsonApi.postSureTax(postData)\r\n .then(response => response.data)\r\n .catch(error => console.log(\"Server error postSureTax \"+new Error(error)))\r\n};\r\n\r\nexport const postVerifyAddress = (addressObject) => {\r\n return JsonApi.postVerifyAddress( {\r\n \"Address1\": \"\",\r\n \"Address2\": (addressObject.address1 || \"\").split(\",\")[0],\r\n \"City\" : addressObject.city,\r\n \"State\" : addressObject.stateShort || addressObject.state.slice(0, 2),\r\n \"Zip5\" : (addressObject.postal || \"\").split(\"-\")[0] || null,\r\n \"Zip4\" : (addressObject.postal || \"\").split(\"-\")[1] || null\r\n })\r\n .then(response => {\r\n if (response.data.error) {\r\n return {\r\n errorDescription: response.data.error\r\n }\r\n }\r\n return response.data\r\n })\r\n .catch(error => {\r\n if (error && error.response && error.response.data && error.response.data.error) {\r\n return {\r\n errorDescription: error.response.data.error\r\n }\r\n }\r\n return {\r\n errorDescription: error && error.message ? error.message : \"Server error verifyAddress \"+new Error(error)\r\n }\r\n })\r\n};\r\n\r\nexport const getTrumbleShippingOptions = (skuList, zipCode) => {\r\n return JsonApi.getTrumbleShippingOptions(skuList, zipCode)\r\n .then(response => response.data)\r\n .catch(error => console.log(\"Server error postSureTax \"+new Error(error)))\r\n};\r\nexport const postTrumbleShippingOptions = (postData, zipCode) => {\r\n return JsonApi.postTrumbleShippingOptions(postData, zipCode)\r\n .then(response => response.data)\r\n .catch(error => console.log(\"Server error postSureTax \"+new Error(error)))\r\n};\r\nexport const postTrumbleInventory = (skusArray = []) => {\r\n // https://qc-cdn.s3.amazonaws.com/lixil/image+(8).png\r\n return JsonApi.postTrumbleInventory(skusArray)\r\n .then(response => response.data)\r\n .catch(error => console.log(\"Server error postTrumbleInventory \"+new Error(error)))\r\n};\r\n\r\nexport const postShipperHQOptions = async (shippingAddress, cartItems = []) => {\r\n const {stateShort, state, city, postal} = shippingAddress;\r\n const postData = {\r\n destination: {\r\n \"country\": \"US\", // hardcode for now\r\n \"region\": stateShort || state.slice(0, 2),\r\n \"city\": city,\r\n \"zipcode\": postal,\r\n },\r\n items: cartItems.map(cartItem => ({\r\n \"itemId\": cartItem.cartFeature.dbFeature.id,\r\n \"sku\": cartItem.cartFeature.dbFeature.sku,\r\n \"storePrice\": getFeatureCost(cartItem.cartFeature, 1, cartItem.fromQtCategory),\r\n \"quantity\": cartItem.quantity\r\n }))\r\n }\r\n // https://qc-cdn.s3.amazonaws.com/lixil/image+(10).png\r\n return JsonApi.postShipperHqShipping(postData)\r\n .then(response => {\r\n console.log(\"response postShipperHqShipping\", response && response.data ? response.data : response);\r\n let availableOptions = [];\r\n if (!response.data || !Array.isArray(Object.keys(response.data))) {\r\n return availableOptions\r\n }\r\n availableOptions = Object.keys(response.data).map(dbFeatureId => {\r\n if (!Array.isArray(response.data[dbFeatureId]) || !response.data[dbFeatureId].length) {\r\n return {dbFeatureId: +dbFeatureId, options: []}\r\n }\r\n const options = response.data[dbFeatureId].flatMap(carrier => { // can be several\r\n return carrier.shippingRates.map(shippingRate => {\r\n return {\r\n cost: shippingRate.totalCharges,\r\n title: shippingRate.title,\r\n delivery: shippingRate.delivery || \"-\",\r\n code: shippingRate.code\r\n }\r\n })\r\n })\r\n return {dbFeatureId: +dbFeatureId, options}\r\n })\r\n return availableOptions\r\n })\r\n .catch(error => console.log(\"Server error postShipperHQOptions \"+new Error(error)))\r\n};\r\n\r\n/**\r\n * sets feature quantity properties\r\n * @param featuresArray {featureInterface}\r\n * @returns {promise}\r\n */\r\nexport const setTrumbleInventoryForFeatures = (featuresArray = []) => {\r\n const skusArray = featuresArray.map(feature => feature.dbFeature.sku);\r\n return postTrumbleInventory(skusArray)\r\n .then(responseData => {\r\n // console.log(\"postTrumbleInventory responseData\", responseData);\r\n if (responseData && responseData.success && responseData.inventory) {\r\n Object.keys(responseData.inventory).forEach(sku => {\r\n const featureToUpdate = featuresArray.find(feature => feature.dbFeature.sku === sku);\r\n if (featureToUpdate) {\r\n if (!featureToUpdate.quantityOptions) {\r\n featureToUpdate.quantityOptions = {};\r\n }\r\n featureToUpdate.quantityOptions.trumbleQty = responseData.inventory[sku].inventory;\r\n }\r\n })\r\n }\r\n })\r\n};\r\n\r\nconst requestMoreThanUsualPartIds = [\"vanity_faucet\", \"vanity_sink\", \"shower_head\", \"valve_trim\", \"towel\",\r\n \"towel_towel_bar\", \"towel_towel_hook\", \"towel_towel_ring\", \"shower_fixture\", \"shower_door\"];\r\n\r\n/**\r\n * common function to request features\r\n * @param featureGroup {featureGroupInterface}\r\n * @returns {number}\r\n */\r\nconst request6kFeatures = [...CABINET_GROUP, \"top_handle\", \"bottom_handle\", \"sink\", \"center_island_sink\", \"crown_molding\"];\r\nexport const getFeaturesPageSize = (featureGroup) => {\r\n let pageSize = 1000;\r\n if (document.kvConfig.visualizerType === \"kvScene\" && request6kFeatures.includes(featureGroup.partId)) {\r\n pageSize = 6000 // always for new kitchen (we need all parts)\r\n } else if (COUNTERTOP_GROUP.includes(featureGroup.partId)) {\r\n const {navigationState} = store.getState();\r\n if (document.kvConfig.visualizerType !== \"kvScene\" || navigationState.useFeaturesLightRequest.countertops) {\r\n pageSize = 6000 // always for old Kitchen\r\n }\r\n } else if (\r\n (document.kvConfig.visualizerType === \"bvLook\" && requestMoreThanUsualPartIds.includes(featureGroup.partId))\r\n || (document.kvConfig.visualizerType === \"bvScene\" && (featureGroup.partId === \"shower_wall\" || featureGroup.partId === \"shower_interior_wall\"))\r\n ) {\r\n pageSize = 6000\r\n }\r\n if (featureGroup.allFeaturesReceived && pageSize === 6000) {\r\n pageSize = 2000 // next always 2k, it works correctly on scroll\r\n }\r\n return pageSize\r\n}\r\n\r\nexport const getAdditionalFeaturesOnScroll = async (featureGroup, isCommonRequest = false) => {\r\n if (featureGroup.createdManually || featureGroup.requestInProgress) {\r\n if (featureGroup.createdManually) {\r\n featureGroup.allFeaturesReceived = true;\r\n }\r\n return false\r\n }\r\n\r\n featureGroup.requestInProgress = true;\r\n // console.log(\"propsPageSize\", propsPageSize);\r\n const pageSize = getFeaturesPageSize(featureGroup);\r\n const layout = featureGroup.getParent\r\n ? featureGroup.getParent().layout || getCurrentLayout()\r\n : getCurrentLayout();\r\n const layoutAbbr = layout.getCurrentLayoutAbbreviation();\r\n const nextFeaturesPage = featureGroup.getNextPageToLoad(layoutAbbr);\r\n\r\n if (featureGroup.additionalPartPartId) {\r\n const wallParent = layout.parts[\"Walls\"];\r\n const isWallChild = wallParent && wallParent.relatedItems.some(relItem => relItem.partId === featureGroup.partId);\r\n if (isWallChild) {\r\n const cropResponse = await getBvGroupFeatures((featureGroup.dbName || featureGroup.partName) + \" Crop\", nextFeaturesPage, pageSize * 3);\r\n if (Array.isArray(cropResponse)) {\r\n featureGroup.setGroupFeatures(cropResponse, pageSize * 2, false, layoutAbbr, nextFeaturesPage, false, !isCommonRequest);\r\n }\r\n }\r\n }\r\n\r\n const response = await getBvGroupFeatures(featureGroup.dbName || featureGroup.partName, nextFeaturesPage, pageSize);\r\n\r\n let responseArray = Array.isArray(response) ? response : [];\r\n let oldFeatures = [];\r\n if (layout.isNewLayout && featureGroup.nextFeaturesPageToLoadArray && !featureGroup.allFeaturesReceived && !IS_LIXIL_SERVERS\r\n && (CABINET_GROUP.includes(featureGroup.partId) || COUNTERTOP_GROUP.includes(featureGroup.partId)\r\n || COUNTERTOP_GROUP_BATHROOM.includes(featureGroup.partId))) { // we don't need requests for walls\r\n const {wizardList, wizardIsActive} = store.getState().wizardState;\r\n if (!showWizardInsteadOfQT(wizardList, wizardIsActive)) {\r\n const responseWithOldFeatures = await getBvGroupFeatures(featureGroup.dbName || featureGroup.partName, nextFeaturesPage, 6000, [], \"\", \"\", null, true);\r\n if (Array.isArray(responseWithOldFeatures)) {\r\n oldFeatures = responseWithOldFeatures;\r\n }\r\n }\r\n }\r\n\r\n featureGroup.setGroupFeatures(responseArray, pageSize, true, layoutAbbr, nextFeaturesPage, false, !isCommonRequest);\r\n\r\n if (oldFeatures.length) {\r\n featureGroup.setGroupFeatures(oldFeatures, pageSize, false, layoutAbbr, nextFeaturesPage, true, false);\r\n }\r\n featureGroup.requestInProgress = false;\r\n // if (applyCustomConfigurations) { //no need for it right now since we have less than 1000 sinks anf faucets\r\n // const vanityParent = layout.parts[\"Vanity\"];\r\n // const isVanityChild = vanityParent && vanityParent.relatedItems.some(relItem => relItem.partId === featureGroup.partId);\r\n // if (vanityParent) {\r\n // layout.createCustomConfigurations();\r\n // }\r\n // }\r\n return responseArray\r\n};\r\n\r\nconst allRelatedItemsCheck = (parentGroup, neededParts) => {\r\n parentGroup.relatedItems.forEach(relItem => {\r\n if (!relItem.allFeaturesReceived && !neededParts.some(featureGroup => featureGroup.partId === relItem.partId)) {\r\n neededParts.push(relItem)\r\n }\r\n })\r\n return neededParts\r\n}\r\n\r\n/**\r\n * gets all features depending on the featureGroup\r\n * @param featureGroup {featureGroupInterface}\r\n * @param shouldUpdateNavigation {boolean}\r\n */\r\nexport const checkIfLookFeaturesReceived = async (featureGroup, shouldUpdateNavigation = true) => {\r\n const layout = featureGroup.getParent\r\n ? featureGroup.getParent().layout || getCurrentLayout()\r\n : getCurrentLayout();\r\n const layoutAbbr = layout.getCurrentLayoutAbbreviation();\r\n let neededParts = [];\r\n let neededFeatureGroup = null;\r\n if (!featureGroup.allFeaturesReceived\r\n || (featureGroup.nextFeaturesPageToLoadArray && !featureGroup.nextFeaturesPageToLoadArray[layoutAbbr].page)) {\r\n neededParts.push(featureGroup);\r\n }\r\n // const wallParent = layout.parts[\"Walls\"];\r\n const vanityParent = layout.parts[\"Vanity\"];\r\n const cabinetParent = layout.parts[\"Cabinet\"];\r\n\r\n // const isWallChild = wallParent && wallParent.relatedItems.some(relItem => relItem.partId === featureGroup.partId);\r\n const isVanityChild = vanityParent && vanityParent.relatedItems.some(relItem => relItem.partId === featureGroup.partId);\r\n const isCabinetChild = cabinetParent\r\n && (cabinetParent.relatedItems.some(relItem => relItem.partId === featureGroup.partId)\r\n || featureGroup.partId === \"fridge\"\r\n || featureGroup.partId === \"dishwasher\"\r\n || featureGroup.partId === \"center_island_cabinet\"\r\n || featureGroup.partId === \"stovetop\"\r\n || featureGroup.partId === \"range\"\r\n || featureGroup.partId === \"hood\");\r\n const isCountertop = COUNTERTOP_GROUP.some(partId => partId === featureGroup.partId);\r\n const isEdge = EDGE_GROUP.some(partId => partId === featureGroup.partId);\r\n const visType = getCommonVisualizerType();\r\n const isFaucetOrSink = visType === \"kitchen\" && (featureGroup.partId.includes(\"faucet\") || featureGroup.partId.includes(\"sink\"));\r\n const isShowerHeadOrArm = visType === \"bathroom\" && (featureGroup.partId.includes(\"shower_arm\") || featureGroup.partId.includes(\"shower_head\"));\r\n const isDoorOrShowerPan = visType === \"bathroom\" && (featureGroup.partId.includes(\"shower_door\") || featureGroup.partId.includes(\"shower_pan_combo\"));\r\n // if (isWallChild) {\r\n // neededParts = allRelatedItemsCheck(wallParent, neededParts);\r\n // } else if (isVanityChild) {\r\n if (isVanityChild) {\r\n neededParts = allRelatedItemsCheck(vanityParent, neededParts);\r\n if (getCurrentRoomType() === LOOK_ROOM_TYPES.as) {\r\n const wallParent = layout.parts[\"Walls\"];\r\n const appliancesParent = layout.parts[\"Appliances\"];\r\n if (wallParent) {\r\n [\"frontWall\", \"rightWall\", \"leftWall\"].forEach(wallId => {\r\n if (wallParent[wallId] && !wallParent[wallId].allFeaturesReceived) {\r\n neededParts.push(wallParent[wallId]);\r\n }\r\n })\r\n }\r\n if (appliancesParent && appliancesParent.fridgeEnclosure && !appliancesParent.fridgeEnclosure.allFeaturesReceived) {\r\n neededParts.push(appliancesParent.fridgeEnclosure);\r\n }\r\n }\r\n } else if (isCabinetChild) {\r\n neededParts = allRelatedItemsCheck(cabinetParent, neededParts);\r\n if (featureGroup.partId !== \"center_island_cabinet\") {\r\n const centerIslandCabinet = layout.getFeatureGroupByPartId(\"center_island_cabinet\");\r\n if (centerIslandCabinet) {\r\n neededParts.push(centerIslandCabinet);\r\n }\r\n }\r\n } else if (isCountertop) {\r\n const countertop = layout.parts[\"Countertop\"] ? layout.parts[\"Countertop\"].countertop : null;\r\n const backsplash = layout.parts[\"Walls\"] ? layout.parts[\"Walls\"].backsplash : null;\r\n const centerCountertop = layout.parts[\"CenterIsland\"] ? layout.parts[\"CenterIsland\"].countertop : null;\r\n const edgeProfile = layout.parts[\"Countertop\"] ? layout.parts[\"Countertop\"].edgeProfile || layout.parts[\"Countertop\"].edge : null;\r\n [countertop, backsplash, centerCountertop, edgeProfile].forEach(relItem => {\r\n if (relItem && (relItem.partId !== featureGroup.partId) && !relItem.allFeaturesReceived) {\r\n neededParts.push(relItem)\r\n }\r\n });\r\n if (featureGroup.partId === \"center_island_countertop\" && layout.parts[\"CenterIsland\"] && layout.parts[\"CenterIsland\"].sink) {\r\n neededParts.push(layout.parts[\"CenterIsland\"].sink)\r\n }\r\n } else if (isFaucetOrSink) {\r\n const parent = featureGroup.getParent();\r\n switch (featureGroup.partId) {\r\n case \"center_island_faucet\":\r\n case \"faucet\":\r\n neededFeatureGroup = parent.sink;\r\n break;\r\n case \"center_island_sink\":\r\n case \"sink\":\r\n neededFeatureGroup = parent.faucet;\r\n break;\r\n default:\r\n break;\r\n }\r\n if ((featureGroup.partId === \"center_island_sink\") && parent.countertop) {\r\n neededParts.push(parent.countertop)\r\n }\r\n } else if (isDoorOrShowerPan) {\r\n neededFeatureGroup = featureGroup.partId.includes(\"shower_door\")\r\n ? featureGroup.getParent().showerPanCombo\r\n : featureGroup.getParent().showerDoor;\r\n } else if (isShowerHeadOrArm) {\r\n neededFeatureGroup = featureGroup.partId.includes(\"shower_arm\")\r\n ? featureGroup.getParent().showerHead\r\n : featureGroup.getParent().showerArm;\r\n } else if (isEdge) {\r\n neededFeatureGroup = featureGroup.getParent().countertop;\r\n } else if (featureGroup.partId === \"stove\" || featureGroup.partId === \"range\") {\r\n if (featureGroup.getParent().hood) {\r\n neededParts.push(featureGroup.getParent().hood);\r\n }\r\n if (featureGroup.getParent().oven) {\r\n neededParts.push(featureGroup.getParent().oven);\r\n }\r\n if (cabinetParent && cabinetParent.bottomCabinet) {\r\n neededParts.push(cabinetParent.bottomCabinet);\r\n }\r\n if (cabinetParent && cabinetParent.bottomHandle) {\r\n neededParts.push(cabinetParent.bottomHandle);\r\n }\r\n }\r\n if (neededFeatureGroup && !neededFeatureGroup.allFeaturesReceived) {\r\n neededParts.push(neededFeatureGroup)\r\n }\r\n const responses = await Promise.all([\r\n ...neededParts.map(async relatedItem => await getAdditionalFeaturesOnScroll(relatedItem, true)),\r\n ]);\r\n\r\n if (isVanityChild) {\r\n layout.createCustomConfigurations();\r\n }\r\n\r\n if (shouldUpdateNavigation) {\r\n // store.dispatch(updateFeatureGroupCount())\r\n store.dispatch(updateNavigationCount())\r\n }\r\n\r\n return responses\r\n};\r\n\r\nexport const getFeatureFromTheBackendBySku = async (skuFromUrl, featureGroupFromUrl) => {\r\n let featureFound;\r\n const requestFirstSharedFeaturenames = document.kvConfig.visualizerType !== \"bvLook\"; // for bv look skus are first\r\n const response = await getBvFeatures(null, [skuFromUrl], requestFirstSharedFeaturenames);\r\n if (response) {\r\n let featuresLoaded = response.data || [];\r\n const layout = getCurrentLayout();\r\n layout.loadNewFeatures(featuresLoaded);\r\n const featureGroupPartId = featureGroupFromUrl ? featureGroupFromUrl.replace(/-/gi, \"_\") : \"\";\r\n featureFound = layout.getFeatureBySku(skuFromUrl, featureGroupPartId, false, requestFirstSharedFeaturenames);\r\n if (!featuresLoaded.length || !featureFound) {\r\n const response2 = await getBvFeatures(null, [skuFromUrl], !requestFirstSharedFeaturenames);\r\n if (response2 && Array.isArray(response2.data) && response2.data.length) {\r\n layout.loadNewFeatures( response2.data);\r\n featureFound = layout.getFeatureBySku(skuFromUrl, featureGroupPartId, false, !requestFirstSharedFeaturenames);\r\n }\r\n }\r\n }\r\n return featureFound\r\n}\r\n","export const LayoutType = {\r\n Small: 0,\r\n Large: 1\r\n};\r\n\r\nexport const LayoutAbbreviation = {\r\n All: \"ALL\",\r\n Small: \"SM\",\r\n Large: \"LG\"\r\n};\r\n\r\nexport const CountsType = {\r\n allLayoutFeaturesCount: \"All\", // not used\r\n largeLayoutFeaturesCount: \"Large\",\r\n smallLayoutFeaturesCount: \"Small\",\r\n totalFeaturesCount: \"Total\" // not used\r\n};\r\n\r\nexport const BathTubType = {\r\n Custom60in: 'Custom60in',\r\n FreeStanding: 'BathTubFreeStanding'\r\n};\r\n\r\nexport const VanityTypes = {\r\n Complete: 'Complete',\r\n Custom: 'Custom'\r\n};\r\n\r\nexport const ShowerType = {\r\n Custom: 0,\r\n Complete: 1\r\n};\r\n\r\nexport const ShowerBodyType = {\r\n Glass: 0,\r\n Door: 1\r\n};\r\n\r\nexport const ShowerTypes = {\r\n Custom: 'Custom',\r\n Complete: 'Complete',\r\n All: 'All'\r\n};\r\n\r\nexport const PartMenuType = {\r\n Simple: 0, // i.e. Toilet - doesn't have any sub-items\r\n Complex: 1, // i.e. Vanity - has sub-menu items, Sink, Faucet Mirror\r\n};\r\n\r\nexport function bathTubTypeToString(bathTypeType) {\r\n switch (bathTypeType) {\r\n case BathTubType.Custom60in:\r\n return 'Custom';\r\n case BathTubType.FreeStanding:\r\n return 'Complete';\r\n }\r\n}\r\nexport function bathTubStringToType(bathtubString) {\r\n switch (bathtubString) {\r\n case 'custom':\r\n return BathTubType.Custom60in;\r\n case 'complete':\r\n return BathTubType.FreeStanding;\r\n }\r\n}\r\n\r\nexport const ShowerComboTubType = {\r\n bathtub_liner: \"bathtub_liner\",\r\n replacement_tub: \"replacement_tub\",\r\n walk_in_tub: \"walk_in_tub\",\r\n jetted_tub: \"jetted_tub\",\r\n};\r\n\r\nexport const vanityWizardFilters = [\"Size\", \"DoorStyle\", \"Material\", \"Color\"];\r\n\r\nexport const showerWizardFilters = [\"Material\", \"DuraBathColor\", \"SlabColor\", \"TileColor\", \"TilePattern\", \"AcrylicPattern\", \"AcrylicColor\"];\r\n\r\nexport const NotQCVanityDoorStylesFilters = [\"Centennial\", \"Hudson\", \"Northbrook\", \"Osage\", \"Quebec\", \"Riverside\", \"Villager\", \"Zurich\"];\r\n","import React from 'react';\r\nimport PropTypes from \"prop-types\";\r\nimport MaterialSpinner from \"./materialSpinner\";\r\nimport {IS_LIXIL_UI} from \"../../config\";\r\n\r\nconst LoadingSpinner = (props) => {\r\n if (IS_LIXIL_UI) {\r\n return \r\n }\r\n const size = props.size || \"small\"; //class modifier\r\n return
\r\n};\r\n\r\nLoadingSpinner.propTypes = {\r\n size: PropTypes.string\r\n}\r\n\r\nLoadingSpinner.displayName = 'LoadingSpinner';\r\n\r\nexport default LoadingSpinner;\r\n","import * as types from \"./actionTypes\";\r\n\r\nexport const setRelatedGroups = (relatedGroups) => ({\r\n type: types.SET_RELATED_GROUPS,\r\n payload: { relatedGroups }\r\n});\r\n\r\nexport const setRelatedGroupsSearch = (relatedGroupsSearch) => ({\r\n type: types.SET_RELATED_GROUPS_SEARCH,\r\n payload: { relatedGroupsSearch }\r\n});\r\n\r\nexport const toggleGalleryVisible = (galleryVisible, galleryShowActiveFeature = null) => ({\r\n type: types.TOGGLE_GALLERY_VISIBLE,\r\n payload: { galleryVisible, galleryShowActiveFeature }\r\n});\r\n\r\nexport const setGalleryActiveImageIndex = (galleryActiveImageIndex) => ({\r\n type: types.SET_GALLERY_ACTIVE_IMAGE_INDEX,\r\n payload: { galleryActiveImageIndex }\r\n});\r\n\r\nexport const setMaterialsPageSubSteps = (subSteps) => ({\r\n type: types.SET_MATERIALS_PAGE_SUB_STEPS,\r\n payload: { subSteps }\r\n});\r\n\r\nexport const setMaterialsPageActiveSubStep = (activeSubStep) => ({\r\n type: types.SET_MATERIALS_PAGE_ACTIVE_SUB_STEP,\r\n payload: { activeSubStep }\r\n});\r\n\r\nexport const toggleNotCompatibleView = (showNotCompatibleView) => ({\r\n type: types.TOGGLE_NOT_COMPATIBLE_VIEW,\r\n payload: { showNotCompatibleView }\r\n});\r\n\r\nexport const toggleProductNoteEditorVisible = (productNoteEditorVisible) => ({\r\n type: types.TOGGLE_PRODUCT_NOTE_EDITOR_VISIBLE,\r\n payload: { productNoteEditorVisible }\r\n});\r\n\r\nexport const setRowItems = (rowItems) => ({\r\n type: types.SET_ROW_ITEMS,\r\n payload: { rowItems }\r\n});\r\nexport const setMaterialsCanvasClass = (materialsCanvasClass) => ({\r\n type: types.SET_MATERIALS_PAGE_CANVAS_CLASS,\r\n payload: { materialsCanvasClass }\r\n});\r\n","import {getFeatureCost, isIE} from \"./helpers\";\r\nimport Config, {IS_LIXIL_SERVERS} from \"../config\";\r\nimport graniteTransformationUkSubDomains from \"./graniteTransformationUkSubDomains\";\r\n\r\nexport const LOWES_DISCLAIMER_EN = \"This cost includes your selection of material, edge profile, faucet cut-outs, templating, installation plus any other options you have selected. All quotes are subject to changes. No quote shall be final until the time of template. Quotes only reflect the selections, information and the amount of materials you have entered in the estimator tool. After your purchase a certified Contractor will go on site to verify all dimensions and details of your order. Price adjustments will be possible thereafter. All expenses not covered in this quote, like possible extra trip charges, 2nd story fees, oversize piece/difficult access charges,high rise installation charge which are out of program installation costs, permit fees or any other expense not captured in this quote will be added at time of template. Projects under 27 SF incur a surcharge. All quotes are valid for 30 days. ALL 3D DESIGN IMAGES ARE FOR INSPIRATIONAL PURPOSES ONLY. See a kitchen associate or Call 1-844-454-1454 to finalize your purchase.\"\r\n\r\nexport const getFabricatorLogo = (fabricatorData) => {\r\n const hardCodedLogo = `https://qc-cdn.s3.amazonaws.com/Logos/Quote-Kitchen-and-Bath.jpg`;\r\n const hardCodedLowesLogo = `https://qc-cdn.s3.amazonaws.com/Logos/lowes.png`;\r\n const hardCodedRenoDepotLogo = `https://qc-cdn.s3.amazonaws.com/Logos/reno-depot.png`;\r\n const hardCodedRonaLogo = `https://qc-cdn.s3.amazonaws.com/Logos/rona.png`;\r\n\r\n if (isIE()) {\r\n if (fabricatorData.isRenoDepot) {\r\n return hardCodedRenoDepotLogo\r\n } else if (fabricatorData.isRona) {\r\n return hardCodedRonaLogo\r\n } else if (fabricatorData.isLowes) {\r\n return hardCodedLowesLogo\r\n }\r\n return hardCodedLogo\r\n }\r\n\r\n if (Config.isDevMode() && fabricatorData.logoUrl && !fabricatorData.logoUrl.includes(\"http\") && document.kvConfig.domain) {\r\n return document.kvConfig.domain + fabricatorData.logoUrl\r\n }\r\n\r\n return fabricatorData.logoUrl || hardCodedLogo\r\n}\r\n\r\nexport const hardCodeIsLowes = () => {\r\n const subDomains = [\"mdp_surfaces\", \"lowes_\", \"/rona.\", \"rona_\", \"rnodpt\", \"reno_depot\"];\r\n if (Config.isDevMode() && (document.kvConfig.userId === 139043)) {\r\n return true;\r\n }\r\n return subDomains.some(subDomain => window.location.href.includes(subDomain))\r\n};\r\n\r\nexport const hardCodeIsAmericanImport = () => {\r\n const subDomains = ['americanimport', 'americanstandard2020'];\r\n if (Config.isDevMode() && (document.kvConfig.userId === 140460 || document.kvConfig.userId === 155479)) { //American Import //American Standard 2020\r\n return true;\r\n }\r\n return subDomains.some(subDomain => window.location.href.includes(subDomain));\r\n};\r\n\r\nexport const hardCodeIsAmericanStandard = () => {\r\n const subDomains = ['americanstandard'];\r\n if (Config.isDevMode() && (document.kvConfig.userId === 139882 || document.kvConfig.userId === 251108)) { //American Standard 2020 // Cory\r\n return true;\r\n }\r\n return subDomains.some(subDomain => window.location.href.includes(subDomain));\r\n};\r\n\r\nexport const hardCodeIsRona = () => {\r\n const subDomains = [\"/rona.\", \"rona_\"];\r\n return subDomains.some(subDomain => window.location.href.includes(subDomain))\r\n};\r\n\r\nexport const hardCodeIsRenoDepot = () => {\r\n const subDomains = [\"rnodpt\", \"reno_depot\"];\r\n return subDomains.some(subDomain => window.location.href.includes(subDomain))\r\n};\r\n\r\nexport const hardCodeIsCaesarStone = () => {\r\n const domains = [\"quotetops.com\", \"quotekitchencountertops.com\"];\r\n return document.kvConfig.isCaesarStone || domains.some(domain => window.location.href.includes(domain))\r\n};\r\n\r\nexport const hardCodeIsModerno = () => {\r\n const subDomains = [\"moderno\"];\r\n return subDomains.some(subDomain => window.location.href.toLowerCase().includes(subDomain))\r\n};\r\n\r\nexport const hardCodeIsPorcelanosa = () => {\r\n const subDomains = [\"porcelanosa\"];\r\n return subDomains.some(subDomain => window.location.href.toLowerCase().includes(subDomain))\r\n};\r\n\r\nexport const hardCodeIsMcDermott = () => {\r\n const subDomains = [\"mcdermott_\", \"mts_\"];\r\n return subDomains.some(subDomain => window.location.href.includes(subDomain))\r\n};\r\n\r\nexport const hardCodeIsFlexFinish = () => {\r\n const subDomains = [\"flexfinish\", \"flexfinish2\", \"flex_finish\"];\r\n return subDomains.some(subDomain => window.location.href.includes(subDomain))\r\n};\r\n\r\nexport const hardCodeIsGraniteTransformation = () => {\r\n const subDomains = [\"granite_transformations\", \"trend_transformations\"];\r\n return subDomains.some(subDomain => window.location.href.includes(subDomain))\r\n};\r\n\r\nexport const hardCodeIsGraniteTransformationUK = () => {\r\n return graniteTransformationUkSubDomains.some(subDomain => window.location.href.includes(subDomain))\r\n};\r\n\r\nexport const hardCodeIsLixil = () => {\r\n return [139247, 139616, 139882].some(userId => document.kvConfig.userId === userId) || [\"grohe\", \"grohe2\", \"americanstandard\"].some(subDomain => {\r\n return window.location.host && window.location.host.split && (window.location.host.split('.')[0] === subDomain)\r\n })\r\n}\r\n\r\nexport const hardCodeIsAgent = () => {\r\n return document.kvConfig.userId === 140203 || (\r\n window.location.host && window.location.host.split && (window.location.host.split('.')[0] === \"agent\")\r\n )\r\n}\r\n\r\nexport const hardCodeIsTorrco = () => {\r\n return document.kvConfig.userId === 140298 || document.kvConfig.userId === 140299 || (\r\n window.location.host && window.location.host.includes && window.location.host.includes(\"torrco\")\r\n )\r\n}\r\n\r\nexport const hardCodeIsCoburn = () => {\r\n return document.kvConfig.userId === 140590 || document.kvConfig.userId === 140558 || (\r\n window.location.host && window.location.host.includes && window.location.host.includes(\"coburns_\")\r\n )\r\n}\r\n\r\nexport const hardCodeIsSolidSurface = () => {\r\n return document.kvConfig.userId === 245802 || (\r\n window.location.host && window.location.host.includes && window.location.host.includes(\"solidsurface\")\r\n )\r\n}\r\n\r\nexport const hardCodeIsLakesideSurfaces = () => {\r\n return document.kvConfig.userId === 252014 || (\r\n window.location.host && window.location.host.includes && window.location.host.includes(\"lakeside_surfaces\")\r\n )\r\n}\r\n\r\nexport const hardCodeIsDeStefano = () => {\r\n return document.kvConfig.userId === 260280 || (\r\n window.location.host && window.location.host.includes && window.location.host.includes(\"de_stefano\")\r\n ) || window.location.href.includes(\"fab_subdomain=de_stefano\")\r\n}\r\n\r\nexport const hardCodeIsNhance = () => {\r\n return document.kvConfig.userId === 268895 || (\r\n window.location.host && window.location.host.includes && window.location.host.includes(\"nhance\")\r\n ) || window.location.href.includes(\"fab_subdomain=nhance\")\r\n}\r\n\r\nexport const hardCodeIsEncore = () => {\r\n return document.kvConfig.userId === 267710 || (\r\n window.location.host && window.location.host.includes && window.location.host.includes(\"encore\")\r\n ) || window.location.href.includes(\"fab_subdomain=encore\")\r\n}\r\n\r\nexport const isEncore = hardCodeIsEncore();\r\n\r\nexport const hardCodeIsFloform = () => {\r\n const subDomains = [\"floform\"];\r\n return subDomains.some(subDomain => window.location.href.toLowerCase().includes(subDomain))\r\n}\r\n\r\nexport const hardCodeIsDeluxegarage = () => {\r\n const subDomains = [\"deluxegarage\"];\r\n return subDomains.some(subDomain => window.location.href.includes(subDomain))\r\n}\r\n\r\nexport const hardCodeIsRenuit = () => {\r\n const subDomains = [\"renuit\"];\r\n return subDomains.some(subDomain => window.location.href.includes(subDomain))\r\n}\r\n\r\nexport const isCabinetsFabricator = () => {\r\n return [256713, 246203, 256713].some(userId => document.kvConfig.userId === userId)\r\n}\r\n\r\nexport const isProd = () => {\r\n const subDomains = [\"quotekitchenandbath\", \"quotekitchencountertops\"];\r\n return subDomains.some(subDomain => window.location.href.includes(subDomain))\r\n}\r\n\r\nexport const getHardCodedFloFormShopCartCost = (cartItems) => {\r\n let materialTotalCost = 0;\r\n cartItems\r\n .filter(cartItem => {\r\n return cartItem.partId === \"center_island_countertop\"\r\n || cartItem.partId === \"countertop\"\r\n || (cartItem.partId === \"backsplash\" && (\r\n (cartItem.fromWizardGroupId === \"18\")\r\n || (cartItem.fromWizardGroupId === \"12\")\r\n || (cartItem.fromWizardGroupId === \"11\")\r\n || (cartItem.fromWizardGroupId === \"187\")\r\n || (cartItem.fromWizardGroupId === \"196\")\r\n || (cartItem.fromWizardGroupId === \"206\")\r\n ))\r\n })\r\n .forEach(cartItem => {\r\n materialTotalCost += getFeatureCost(cartItem.cartFeature, cartItem.quantity, cartItem.fromQtCategory);\r\n });\r\n // console.log(\"materialTotalCost\", materialTotalCost);\r\n return materialTotalCost * 0.1;\r\n}\r\n\r\nexport const isCafeCountetops = document.kvConfig.userId === 264613 || (\r\n window.location.host && window.location.host.includes && window.location.host.includes(\"cafecounterops\")\r\n);\r\n\r\nexport const hardCodeIsFabricator = (subDomain = \"\", fabId = null) => {\r\n if (!subDomain && !fabId) {\r\n return false\r\n }\r\n return (fabId && (document.kvConfig.userId === fabId)) || (\r\n window.location.host && window.location.host.includes && window.location.host.includes(subDomain)\r\n ) || window.location.href.includes(\"fab_subdomain=\" + subDomain)\r\n}\r\n\r\n\r\nexport const fabricatorsHardcodeObject = {\r\n // isRebath: document.kvConfig.userId === 71520 // removed as we don't use rebath at all\r\n // || window.location.href.includes(\"rebath\")\r\n // || window.location.href.includes(\"re-bath\"),\r\n // isRebath: window.location.href.includes(\"rebath\")\r\n // || window.location.href.includes(\"re-bath\")\r\n // || (action.payload.companyName && (action.payload.companyName.toLowerCase().includes(\"rebath\")\r\n // || action.payload.companyName.toLowerCase().includes(\"re-bath\")))\r\n // || (action.payload.name && (action.payload.name.toLowerCase().includes(\"rebath\")\r\n // || action.payload.name.toLowerCase().includes(\"re-bath\"))),\r\n isLowes: hardCodeIsLowes(),\r\n isRona: hardCodeIsRona(),\r\n isRenoDepot: hardCodeIsRenoDepot(),\r\n isAmericanImport: hardCodeIsAmericanImport(),\r\n isAmericanStandard: hardCodeIsAmericanStandard(),\r\n isCaesarStone: hardCodeIsCaesarStone(),\r\n isGraniteTransformation: hardCodeIsGraniteTransformation(),\r\n isGraniteTransformationUK: hardCodeIsGraniteTransformationUK(),\r\n isModerno: hardCodeIsModerno(),\r\n isMcDermott: hardCodeIsMcDermott(),\r\n isFlexFinish: hardCodeIsFlexFinish(),\r\n isLixil: hardCodeIsLixil(),\r\n isTorrco: hardCodeIsTorrco(),\r\n isCoburn: hardCodeIsCoburn(),\r\n isSolidSurface: hardCodeIsSolidSurface(),\r\n isLakesideSurfaces: hardCodeIsLakesideSurfaces(),\r\n isDeStefano: hardCodeIsDeStefano(),\r\n isNhance: hardCodeIsNhance(),\r\n isEncore: hardCodeIsEncore(),\r\n isRenuit: hardCodeIsRenuit(),\r\n isGrohe: IS_LIXIL_SERVERS && hardCodeIsFabricator(\"grohe\", 139247),\r\n isAccentCountertops: hardCodeIsFabricator(\"accentcountertops\", 263208),\r\n}\r\n","// import $ from \"jquery\";\r\n// import sqftShape from \"./../core/shapes/sqftShape\";\r\nimport sqftConfig from \"./../store/sqftConfig\";\r\nimport sqftStore from \"./sqftStore\";\r\nimport workspace from \"../core/workspace\";\r\nimport {\r\n BACKSPLASH_LABELS, CABINET_BOXES,\r\n COUNTERTOP_LABELS,\r\n isDisabledInPopupShouldBeHidden,\r\n MOVABLE_IMAGE_TYPES,\r\n RESOURCE_ATTACHED_TO_TYPE,\r\n SHAPE_PART_ID,\r\n SIDEBAR_NAVIGATION_BUTTONS,\r\n SQFT_CHILD_FEATURE_GROUP_PART_IDS,\r\n SQFT_SHAPES_THAT_ADD_OVERHANG\r\n} from \"../../../constants\";\r\nimport sqftShape from \"../core/shapes/sqftShape\";\r\nimport MovableImage from \"../core/shapes/movableImage\";\r\nimport slabWorkspace from \"../core/slab/slabWorkspace\";\r\nimport {getPointField} from \"../../../helpers/sqftHelper\";\r\nimport ShapeRotatable from \"../core/shapes/shapeParts/shapeRotatable\";\r\nimport ChangeValuePopup from \"../../popup/models/ChangeValuePopup\";\r\nimport {\r\n addChangeValuePopup,\r\n changeValuePopup,\r\n deleteChangeValuePopup,\r\n //setSQFTActiveButton,\r\n //setSQFTMenuOpened\r\n} from \"../../../../../actions/sqftMenuFunctions\";\r\nimport store from \"../../../../../store\";\r\nimport SqftStore from \"./sqftStore\";\r\nimport {updateSQFTCalculations} from \"../../../../../actions/sqftFunctions\";\r\nimport {isSFTCabinetsGroup} from \"../../../helpers/sqftNavigationHelper\";\r\nimport Rectangle from \"../core/shapes/layouts/rectangle\";\r\nimport {initTitle} from \"../core/controls/labels/labelsHelper\";\r\nimport {SLAB_IMAGE_TYPES} from \"../../../../../reducers/sqftSlabReducer\";\r\nimport sqftShapeIntersectionsManager from \"./sqftShapeIntersectionsManager\";\r\nimport {getCurrentLayout} from \"../../../../appLayout\";\r\nimport {SHAPE_PART_IDS_VISIBLE_ONLY_IN_THE_SLAB_MODE} from \"../../../constantsFeature\";\r\nimport {\r\n areCollinearAndOverlap,\r\n convexHull, removeConsecutiveDuplicates,\r\n roundShapePoints,\r\n unifyShapePoints\r\n} from \"../../../helpers/coordinatesHelper\";\r\n\r\nconst sqftShapeManager = {\r\n shapes: [],\r\n objIds: 0,\r\n addShape: function(segments, shapeType, historyPosition, partId, fromLayout = null, shapeParams = {}) {\r\n const shapeId = workspace.addShape(segments, shapeType, historyPosition, partId, fromLayout, shapeParams);\r\n\r\n const state = store.getState();\r\n const updateCalculations = state.sqftState.updateCalculations;\r\n store.dispatch(updateSQFTCalculations(updateCalculations + 1));\r\n\r\n return shapeId\r\n },\r\n addPlaceholderShape: function(width, height) {\r\n const state = store.getState();\r\n const shouldUseSlabPricing = state.sqftSlabState.isSlabPricingEnabled;\r\n const shapeSegments = new Rectangle(width, height);\r\n const shapeId = sqftShapeManager.addShape(shapeSegments, 'square', null, SHAPE_PART_ID.slabPlaceHolder);\r\n const shape = sqftShapeManager.getShapeById(shapeId);\r\n sqftShapeIntersectionsManager.updateShapesIntersections();\r\n sqftShapeIntersectionsManager.updateSlabPlaceholderFeatureId();\r\n shape.deregisterLineEvents();\r\n shape.setSlabPricing(shouldUseSlabPricing);\r\n initTitle('PLACEHOLDER', SLAB_IMAGE_TYPES.placeholder, shape);\r\n },\r\n getShapeById: function(shapeId) {\r\n return workspace.getShapeById(shapeId);\r\n },\r\n getShapeByIds: function(ids) {\r\n return workspace.getShapes().filter(shape => ids.includes(shape.id));\r\n },\r\n hasSameFeatureId(shapes) {\r\n if (shapes.length === 0) return true;\r\n\r\n const firstFeatureId = shapes[0].featureId;\r\n for (let obj of shapes) {\r\n if (obj.featureId !== firstFeatureId) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n hasSameSharedFeatureName(shapes) {\r\n if (shapes.length === 0) return true;\r\n\r\n const firstFeatureId = shapes[0].featureId;\r\n const layout = getCurrentLayout();\r\n const currentShapeFeature = layout.getFeatureById(firstFeatureId, true);\r\n if (currentShapeFeature) {\r\n const currentShapeFeatureSharedName = currentShapeFeature.dbFeature.sharedFeatureName;\r\n for (let testShape of shapes) {\r\n const testShapeFeature = layout.getFeatureById(testShape.featureId, true);\r\n if (testShapeFeature && testShapeFeature.dbFeature.sharedFeatureName !== currentShapeFeatureSharedName) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n removeShapeById: function(shapeId) {\r\n return workspace.removeShapeById(shapeId);\r\n },\r\n setShapeFeature: function (shapeId, visualizerFeature) {\r\n if (visualizerFeature && visualizerFeature.dbFeature) {\r\n let shape = workspace.getShapeById(shapeId);\r\n\r\n if (shape instanceof sqftShape || shape instanceof MovableImage) {\r\n shape.setFeatureId(visualizerFeature.dbFeature.id);\r\n } else if (shape && shape.type === RESOURCE_ATTACHED_TO_TYPE.backsplash) {\r\n const sqftShape = workspace.getShapeById(shape.attachedToParentId);\r\n const line = sqftShape.getLineById(shape.attachedToId);\r\n if (line) {\r\n line.setBacksplashFeatureId(visualizerFeature.dbFeature.id);\r\n }\r\n }\r\n }\r\n },\r\n setShapeFeatureId: function (shapeId, featureId) {\r\n let shape = workspace.getShapeById(shapeId);\r\n\r\n if (shape instanceof sqftShape || shape instanceof MovableImage) {\r\n shape.setFeatureId(featureId);\r\n }\r\n },\r\n setShapeRelatedParentFeatureId: function (shapeId, featureId) {\r\n let shape = workspace.getShapeById(shapeId);\r\n\r\n if (shape instanceof sqftShape || shape instanceof MovableImage) {\r\n shape.relatedParentFeatureId = featureId;\r\n }\r\n },\r\n getCounterTopShapes() {\r\n const shapes = workspace.getShapes();\r\n\r\n return shapes.filter(function(shape) {\r\n const counterTopLabel = Object.keys(COUNTERTOP_LABELS).find(cLabel => cLabel === shape.type);\r\n if (counterTopLabel) {\r\n return true\r\n }\r\n return !shape.type\r\n && !SHAPE_PART_IDS_VISIBLE_ONLY_IN_THE_SLAB_MODE.includes(shape.partId)\r\n });\r\n },\r\n getBacksplashLabeledShapes() {\r\n const shapes = workspace.getShapes();\r\n\r\n return shapes.filter(shp => Object.keys(BACKSPLASH_LABELS).includes(shp.partId));\r\n },\r\n getCabinetShapes(partIds = CABINET_BOXES) {\r\n const shapes = workspace.getShapes();\r\n\r\n return shapes.filter(shp => Object.values(partIds).includes(shp.partId));\r\n },\r\n hideSeamShapes: function() {\r\n let shapes = workspace.getShapes();\r\n shapes.forEach(shape => {\r\n if (\r\n shape.isWithShapePieces !== undefined\r\n && shape.isWithShapePieces()\r\n && (isDisabledInPopupShouldBeHidden() ? !shape.isDisabledInPopup : true)\r\n ) {\r\n shape.hideShapePieces()\r\n }\r\n })\r\n },\r\n restoreSeamShapes: function() {\r\n let shapes = workspace.getShapes();\r\n shapes.forEach(shape => {\r\n if (shape.isWithShapePieces !== undefined\r\n && !shape.isWithShapePieces()\r\n && shape.isHidden\r\n && (isDisabledInPopupShouldBeHidden() ? !shape.isDisabledInPopup : true)\r\n ) {\r\n shape.reInitEvents()\r\n }\r\n })\r\n },\r\n hideSlabShapes: function() {\r\n let shapes = workspace.getShapes();\r\n shapes.forEach(shape => {\r\n if (shape.partId === SHAPE_PART_ID.slabPlaceHolder) {\r\n shape.deregisterEvents();\r\n }\r\n })\r\n },\r\n restoreSlabShapes: function() {\r\n let shapes = workspace.getShapes();\r\n shapes.forEach(shape => {\r\n if (shape.partId === SHAPE_PART_ID.slabPlaceHolder) {\r\n shape.reInitEvents();\r\n shape.deregisterLineEvents();\r\n shape.reInitLineTitleEvents();\r\n }\r\n })\r\n },\r\n hideMiteredSections: function() {\r\n const lines = workspace.getLines();\r\n for (const line of lines) {\r\n if (line.isWithMitered()) {\r\n line.miteredOverlay.deregisterEvents();\r\n }\r\n }\r\n },\r\n restoreMiteredSections: function() {\r\n const lines = workspace.getLines();\r\n for (const line of lines) {\r\n if (line.isWithMitered()) {\r\n line.miteredOverlay.reInitEvents();\r\n }\r\n }\r\n },\r\n resetShapeChangesInTheSlabMode: function (shape) {\r\n shape.updateSlabPoints();\r\n shape.removeShapePieces();\r\n shape.setShapePieces([]);\r\n shape.shapeSlab.setRotationDegreesSlab(0);\r\n slabWorkspace.slabAdditionalShapes.removeAllActiveBacksplashesAttachedToShape(shape);\r\n },\r\n checkForUpdateSlabPoints: function() {\r\n let shapes = workspace.getShapes();\r\n shapes.forEach(shape => {\r\n if (shape instanceof sqftShape\r\n && ![SHAPE_PART_ID.seamPiece, SHAPE_PART_ID.slabPlaceHolder].includes(shape.partId)\r\n ) {\r\n if (shape.isPointsChanged) {\r\n shape.isPointsChanged = false;\r\n sqftShapeManager.resetShapeChangesInTheSlabMode(shape);\r\n }\r\n }\r\n })\r\n },\r\n checkForUpdateSlabPosition: function() {\r\n let shapes = workspace.getShapes();\r\n shapes.forEach(shape => {\r\n if (shape instanceof sqftShape\r\n && ![SHAPE_PART_ID.seamPiece, SHAPE_PART_ID.slabPlaceHolder].includes(shape.partId)\r\n ) {\r\n if (shape.isPositionChanged) {\r\n shape.updateSlabPosition();\r\n shape.isPositionChanged = false;\r\n slabWorkspace.slabAdditionalShapes.removeAllActiveBacksplashesAttachedToShape(shape);\r\n }\r\n }\r\n })\r\n },\r\n hideCorePieceShapes: function() {\r\n let shapes = workspace.getShapes();\r\n shapes.forEach(shape => {\r\n if (shape.isWithShapePieces !== undefined\r\n && shape.isWithShapePieces()\r\n && !shape.isHidden\r\n && ![SHAPE_PART_ID.seamPiece, SHAPE_PART_ID.slabPlaceHolder].includes(shape.partId)\r\n && (isDisabledInPopupShouldBeHidden() ? !shape.isDisabledInPopup : true)\r\n ) {\r\n shape.deregisterEvents()\r\n }\r\n })\r\n },\r\n restoreCorePieceShapes: function() {\r\n let shapes = workspace.getShapes();\r\n shapes.forEach(shape => {\r\n if (shape.isWithShapePieces !== undefined\r\n && shape.isWithShapePieces()\r\n && shape.isHidden\r\n && ![SHAPE_PART_ID.seamPiece, SHAPE_PART_ID.slabPlaceHolder].includes(shape.partId)\r\n && (isDisabledInPopupShouldBeHidden() ? !shape.isDisabledInPopup : true)\r\n ) {\r\n shape.reInitEvents()\r\n }\r\n })\r\n },\r\n hideShapeParts: function(shouldSkipSlabPlaceHolders = true) {\r\n let shapes = workspace.getShapes();\r\n shapes.forEach(shape => {\r\n if (shape instanceof sqftShape\r\n && (isDisabledInPopupShouldBeHidden() ? !shape.isDisabledInPopup : true)\r\n && (shouldSkipSlabPlaceHolders && shape.partId !== SHAPE_PART_ID.slabPlaceHolder)\r\n ) {\r\n shape.deregisterPartEvents()\r\n }\r\n })\r\n },\r\n restoreShapeParts: function() {\r\n let shapes = workspace.getShapes();\r\n shapes.forEach(shape => {\r\n if (shape instanceof sqftShape\r\n && ![SHAPE_PART_ID.seamPiece, SHAPE_PART_ID.slabPlaceHolder].includes(shape.partId)\r\n && (isDisabledInPopupShouldBeHidden() ? !shape.isDisabledInPopup : true)\r\n ) {\r\n shape.reInitPartEvents()\r\n }\r\n })\r\n },\r\n // reInitMeasurementsInTheSlabMode: function() {\r\n // const state = store.getState();\r\n // const isMeasurementVisibleInSlabMode = state.sqftSlabState.isMeasurementVisibleInSlabMode;\r\n // if (isMeasurementVisibleInSlabMode) {\r\n // initAllLineLength()\r\n // }\r\n // },\r\n undoSeam: function() {\r\n let seamHistory = sqftStore.getSeamHistory();\r\n if (seamHistory.length <= 0) {\r\n return\r\n }\r\n let latestShape = seamHistory.pop();\r\n for (let i = latestShape.shapePieces.length - 1; i >= 0; i--) {\r\n let shp = workspace.getShapeById(latestShape.shapePieces[i]);\r\n workspace.removeShape(shp);\r\n }\r\n latestShape.setShapePieces([]);\r\n latestShape.reInitEvents();\r\n },\r\n resetAllSeams: function() {\r\n this.restoreCorePieceShapes();\r\n this.hideShapeParts();\r\n let shapes = workspace.getShapes();\r\n for (let i = shapes.length - 1; i >= 0; i--) {\r\n if (shapes[i] instanceof sqftShape) {\r\n if (shapes[i].partId === SHAPE_PART_ID.seamPiece) {\r\n workspace.removeShape(shapes[i]);\r\n } else if (shapes[i].isWithShapePieces()) {\r\n shapes[i].setShapePieces([])\r\n }\r\n }\r\n }\r\n sqftStore.setSeamHistory([])\r\n },\r\n getVisibleCenter: function () {\r\n // console.log('sqftStore.ctxCenter', sqftStore.ctxCenter);\r\n // console.log('sqftStore.canvas', sqftStore.canvas);\r\n // console.log('sqftStore.scale', sqftConfig.scale);\r\n return {\r\n x: (sqftStore.ctxCenter.x + (sqftStore.canvas.width / 2)) / sqftConfig.scale,\r\n y: (sqftStore.ctxCenter.y + (sqftStore.canvas.height / 2)) / sqftConfig.scale\r\n }\r\n },\r\n getMinMax: (segments) => {\r\n let minX = null, maxX = 0;\r\n let minY = null, maxY = 0;\r\n for (let i = 0; i < segments.length; i++) {\r\n let s = segments[i];\r\n if (minX === null || s.from.x < minX)\r\n minX = s.from.x;\r\n if (s.from.x > maxX)\r\n maxX = s.from.x;\r\n if (minY === null || s.from.y < minY)\r\n minY = s.from.y;\r\n if (s.from.y > maxY)\r\n maxY = s.from.y\r\n }\r\n return {\r\n width: maxX - minX,\r\n height: maxY - minY,\r\n x: {\r\n min: minX,\r\n max: maxX\r\n },\r\n y: {\r\n min: minY,\r\n max: maxY\r\n }\r\n };\r\n },\r\n getMinMaxWorkspacePoints: (workspace, isIncludeBumpout = true) => {\r\n let from;\r\n let to;\r\n let minX = null;\r\n let maxX = null;\r\n let minY = null;\r\n let maxY = null;\r\n let offset = workspace.getOffset();\r\n let shapes = workspace.getShapes();\r\n for (let i = 0; i < shapes.length; i++) {\r\n let shape = shapes[i];\r\n if (shape.getLines) {\r\n let lines = shape.getLines();\r\n for (let n = 0; n < lines.length; n++) {\r\n from = lines[n].from.getPointField();\r\n to = lines[n].to.getPointField();\r\n\r\n if (minX === null) {\r\n minX = from.x < to.x ? from.x : to.x;\r\n maxX = from.x > to.x ? from.x : to.x;\r\n minY = from.y < to.y ? from.y : to.y;\r\n maxY = from.y > to.y ? from.y : to.y;\r\n }\r\n\r\n if (isIncludeBumpout && lines[n].isWithBumpout && lines[n].isWithBumpout()) {\r\n [minX, maxX, minY, maxY] = sqftShapeManager.getMinMaxBumpoutPoints(lines[n], minX, maxX, minY, maxY);\r\n }\r\n\r\n minX = from.x < minX ? from.x : minX;\r\n maxX = from.x > maxX ? from.x : maxX;\r\n minX = to.x < minX ? to.x : minX;\r\n maxX = to.x > maxX ? to.x : maxX;\r\n\r\n minY = from.y < minY ? from.y : minY;\r\n maxY = from.y > maxY ? from.y : maxY;\r\n minY = to.y < minY ? to.y : minY;\r\n maxY = to.y > maxY ? to.y : maxY;\r\n }\r\n }\r\n }\r\n\r\n return {\r\n minX : minX - offset.x,\r\n maxX : maxX - offset.x,\r\n minY : minY - offset.y,\r\n maxY : maxY - offset.y\r\n }\r\n },\r\n disableRotatableStateForAllShapes: () => {\r\n const shapes = workspace.getShapes();\r\n for (const shape of shapes) {\r\n if (shape instanceof sqftShape && shape.shapeRotatable) {\r\n sqftShapeManager.disableRotatableState(shape);\r\n }\r\n }\r\n },\r\n canShapeBeRotated: (shape) => {\r\n const isShapeCanBeRotated = shape instanceof sqftShape\r\n && shape.shapePieces.length === 0\r\n && !shape.isDisabledInPopup\r\n && !(shape.isWithBumpout() || shape.isWithMitered())\r\n ;\r\n const isMovableImageCanBeRotated = shape instanceof MovableImage && shape.type !== MOVABLE_IMAGE_TYPES.slabImage;\r\n return isShapeCanBeRotated || isMovableImageCanBeRotated\r\n },\r\n closeRotatablePopups: () => {\r\n const shapes = workspace.getShapes();\r\n shapes.forEach(shape => {\r\n if (shape.getIsRotatable && shape.getIsRotatable()) {\r\n sqftShapeManager.disableRotatableState(shape);\r\n }\r\n })\r\n },\r\n disableRotatableState: (shape) => {\r\n shape.setIsRotatable(false);\r\n shape.shapeRotatable.reInitShapePoints();\r\n shape.shapeRotatable.destroy();\r\n shape.shapeRotatable = null;\r\n store.dispatch(deleteChangeValuePopup('shape' + shape.id));\r\n },\r\n setShapeAsRotatable: (shape) => {\r\n const isSlabMode = SqftStore.isSlabMode();\r\n // todo fix rotation of slab images in slab mode\r\n if (shape instanceof MovableImage && shape.type === MOVABLE_IMAGE_TYPES.slabImage && isSlabMode) {\r\n return\r\n }\r\n shape.shapeRotatable = new ShapeRotatable(shape);\r\n shape.setIsRotatable(true);\r\n const shapeOffset = shape.getOffset();\r\n const isCabinet = isSFTCabinetsGroup();\r\n let changeValuePopupPosition;\r\n if (isCabinet) {\r\n const shapeHeight = shape instanceof MovableImage ? shape.getHeight(): shape.shapeCabinet.getShapeHeight();\r\n const shapeWidth = shape instanceof MovableImage ? shape.getWidth() : shape.shapeCabinet.getShapeWidth();\r\n changeValuePopupPosition = {left: shapeOffset.x, top: shapeOffset.y - (shapeHeight + shapeWidth) * sqftConfig.scale / 2}\r\n } else {\r\n changeValuePopupPosition = {left: shapeOffset.x, top: shapeOffset.y}\r\n }\r\n\r\n const changeRotatedDegreeValuePopup = new ChangeValuePopup(\r\n 'shape' + shape.id,\r\n 0,\r\n 360,\r\n () => {\r\n sqftConfig.workspace.menuItemActive = SIDEBAR_NAVIGATION_BUTTONS.move\r\n sqftShapeManager.disableRotatableState(shape);\r\n //store.dispatch(setSQFTMenuOpened(''));\r\n //store.dispatch(setSQFTActiveButton(SIDEBAR_NAVIGATION_BUTTONS.rotate));\r\n },\r\n () => {\r\n const state = store.getState();\r\n const valuePopup = state.sqftMenuState.changeValuePopups.find(valuePopup => valuePopup.id === 'shape' + shape.id);\r\n shape.rotate(1, shape.Direction.LEFT, isSlabMode);\r\n const newValuePopup = {...valuePopup, value: isSlabMode ? shape.rotatedDegreesSlab : shape.rotatedDegrees};\r\n store.dispatch(changeValuePopup(newValuePopup));\r\n },\r\n () => {\r\n const state = store.getState();\r\n const valuePopup = state.sqftMenuState.changeValuePopups.find(valuePopup => valuePopup.id === 'shape' + shape.id);\r\n const value = (isSlabMode ? shape.rotatedDegreesSlab : shape.rotatedDegrees) - 1 < 0 ? 359 : -1 ;\r\n shape.rotate(value, shape.Direction.LEFT, isSlabMode);\r\n store.dispatch(changeValuePopup({...valuePopup, value: isSlabMode ? shape.rotatedDegreesSlab : shape.rotatedDegrees}));\r\n },\r\n (e) => {\r\n const state = store.getState();\r\n const valuePopup = state.sqftMenuState.changeValuePopups.find(valuePopup => valuePopup.id === 'shape' + shape.id);\r\n const value = parseInt(e.target.value);\r\n if (Number.isInteger(value) && 359 > value > 0) {\r\n shape.rotate(value - (isSlabMode ? shape.rotatedDegreesSlab : shape.rotatedDegrees), shape.Direction.LEFT, isSlabMode);\r\n isSlabMode ? shape.rotatedDegreesSlab = value : shape.rotatedDegrees = value;\r\n store.dispatch(changeValuePopup({...valuePopup, value: value}));\r\n }\r\n },\r\n isSlabMode ? shape.rotatedDegreesSlab : shape.rotatedDegrees,\r\n changeValuePopupPosition\r\n );\r\n store.dispatch(addChangeValuePopup(changeRotatedDegreeValuePopup));\r\n },\r\n\r\n rotateShapeTo90Deg: (shape) => {\r\n // Check if the slab mode is active\r\n const isSlabMode = SqftStore.isSlabMode();\r\n const state = store.getState();\r\n\r\n // Find the corresponding popup for changing shape values\r\n const valuePopup = state.sqftMenuState.changeValuePopups.find(valuePopup => valuePopup.id === 'shape' + shape.id);\r\n\r\n // Determine the current rotation angle\r\n const currentRotation = isSlabMode ? shape.rotatedDegreesSlab : shape.rotatedDegrees;\r\n\r\n\r\n if ([0, 90, 180, 270, 360].includes(currentRotation)) {\r\n // Calculate the new rotation angle, adding 90 degrees and ensuring it wraps around after 360\r\n const newRotation = (currentRotation + 90) % 360;\r\n\r\n // Rotate the shape by the difference between the new and current rotation angles\r\n shape.rotate(newRotation - currentRotation, shape.Direction.LEFT, isSlabMode);\r\n\r\n // Update the shape's rotation angle based on whether slab mode is active\r\n if (isSlabMode) {\r\n shape.rotatedDegreesSlab = newRotation;\r\n } else {\r\n shape.rotatedDegrees = newRotation;\r\n }\r\n\r\n store.dispatch(changeValuePopup({...valuePopup, value: newRotation}));\r\n }\r\n },\r\n\r\n getShapeCornerPoints: () => {\r\n //todo\r\n },\r\n getMinMaxBumpoutPoints: (line, minX, maxX, minY, maxY, isPointOnField) => {\r\n let bumpoutPoints = line.bumpoutOverlay.getBumpoutPoints();\r\n let pointField;\r\n if (isPointOnField) {\r\n pointField = getPointField(bumpoutPoints.dragPoint.x, bumpoutPoints.dragPoint.y, line.getParent())\r\n } else {\r\n pointField = bumpoutPoints.dragPoint\r\n }\r\n minX = pointField.x < minX ? pointField.x : minX;\r\n maxX = pointField.x > maxX ? pointField.x : maxX;\r\n minY = pointField.y < minY ? pointField.y : minY;\r\n maxY = pointField.y > maxY ? pointField.y : maxY;\r\n\r\n return [minX, maxX, minY, maxY]\r\n },\r\n\r\n getMinMaxShapesPointsOnWorkspace: (shapes, shouldGetRegularPosition = false) => {\r\n if (shapes.length > 0) {\r\n let shapesPoints = [];\r\n shapes.forEach(shp => {\r\n if (shp.getPointsPosOnWorkspace) {\r\n shapesPoints.push(...shp.getPointsPosOnWorkspace(shouldGetRegularPosition));\r\n if (shp.getBumpoutPointsPosOnWorkspace) {\r\n shapesPoints.push(...shp.getBumpoutPointsPosOnWorkspace());\r\n }\r\n }\r\n });\r\n shapesPoints.push(...workspace.textBoxManager.getTextBoxPointsOnWorkspace());\r\n let pointsMinMax = sqftShapeManager.getMinMaxPoints(shapesPoints, false);\r\n\r\n //console.log(\"shapesMinMax\", pointsMinMax);\r\n\r\n return [\r\n {x: pointsMinMax.minX, y: pointsMinMax.minY},\r\n {x: pointsMinMax.maxX, y: pointsMinMax.minY},\r\n {x: pointsMinMax.maxX, y: pointsMinMax.maxY},\r\n {x: pointsMinMax.minX, y: pointsMinMax.maxY}\r\n ];\r\n }\r\n return []\r\n },\r\n getShapesConvexHullPointsOnWorkspace: (shapes) => {\r\n if (shapes.length > 0) {\r\n let shapesPoints = [];\r\n shapes.forEach(shp => {\r\n shapesPoints.push(...shp.getPointsPosOnWorkspace());\r\n });\r\n return convexHull(shapesPoints);\r\n }\r\n return []\r\n },\r\n getShapesConvexHullPointsPointField: (shapes) => {\r\n if (shapes.length > 0) {\r\n let shapesPoints = [];\r\n shapes.forEach(shp => {\r\n shapesPoints.push(...shp.getPointsPointField());\r\n });\r\n return convexHull(shapesPoints);\r\n }\r\n return []\r\n },\r\n getShapesContourPointsOnWorkspace: (shapes, shouldRemoveRepeatingPoints = true) => {\r\n if (shapes.length > 0) {\r\n const shapesPointsOnWorkspace = shapes.map(shp => shp.getPointsPosOnWorkspace());\r\n let unifiedContours = unifyShapePoints(shapesPointsOnWorkspace);\r\n\r\n if (shouldRemoveRepeatingPoints) {\r\n unifiedContours = unifiedContours.map(contour => removeConsecutiveDuplicates(contour));\r\n }\r\n\r\n return unifiedContours;\r\n }\r\n return [];\r\n },\r\n getShapesOverhangOnWorkspace: (contourPoints, snappedShapes, minOverlap = 2) => {\r\n const shapes = workspace.getShapes();\r\n const overhangShapes = shapes.filter(shp => {\r\n const canShapeCreateOverhang = SQFT_SHAPES_THAT_ADD_OVERHANG.includes(shp.subType) || SQFT_SHAPES_THAT_ADD_OVERHANG.includes(shp.partId);\r\n const isShapeInsideSnappedShapes = snappedShapes.includes(shp);\r\n if (canShapeCreateOverhang && !isShapeInsideSnappedShapes) {\r\n void 0;\r\n }\r\n return canShapeCreateOverhang && !isShapeInsideSnappedShapes\r\n }\r\n );\r\n let results = new Array(contourPoints.length ? contourPoints.length - 1 : 0).fill(true);\r\n\r\n if (overhangShapes.length > 0) {\r\n for (const overhangShape of overhangShapes) {\r\n const pointsPosOnWorkspace = overhangShape.getPointsPosOnWorkspace();\r\n const roundedPoints = roundShapePoints(pointsPosOnWorkspace);\r\n roundedPoints.push(roundedPoints[0]); //close polygon\r\n\r\n for (let i = 0; i < contourPoints.length - 1; i++) {\r\n const cp1 = contourPoints[i];\r\n const cp2 = contourPoints[i + 1];\r\n for (let j = 0; j < roundedPoints.length - 1; j++) {\r\n const rp1 = roundedPoints[j];\r\n const rp2 = roundedPoints[j + 1];\r\n if (areCollinearAndOverlap(cp1, cp2, rp1, rp2, minOverlap)) {\r\n results[i] = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n //debugger // eslint-disable-line no-debugger\r\n return results\r\n },\r\n getShapesContourPointsPointField: (shapes) => {\r\n if (shapes.length > 0) {\r\n const shapesPointField = shapes.map(shp => {\r\n return shp.getPointsPointField();\r\n });\r\n return unifyShapePoints(shapesPointField);\r\n }\r\n return []\r\n },\r\n getMinMaxShapePoints: (shape, isIncludeBumpout = true, isPointOnField = true) => {\r\n let from;\r\n let to;\r\n let minX = null;\r\n let maxX = null;\r\n let minY = null;\r\n let maxY = null;\r\n let lines = shape.getLines();\r\n //let offset = workspace.getOffset();\r\n\r\n for (let n = 0; n < lines.length; n++) {\r\n if (isPointOnField) {\r\n from = getPointField(lines[n].from.x, lines[n].from.y, shape);\r\n to = getPointField(lines[n].to.x, lines[n].to.y, shape);\r\n } else {\r\n from = lines[n].from;\r\n to = lines[n].to;\r\n }\r\n\r\n if (minX === null) {\r\n minX = from.x < to.x ? from.x : to.x;\r\n maxX = from.x > to.x ? from.x : to.x;\r\n minY = from.y < to.y ? from.y : to.y;\r\n maxY = from.y > to.y ? from.y : to.y;\r\n }\r\n\r\n if (isIncludeBumpout && lines[n].isWithBumpout()) {\r\n [minX, maxX, minY, maxY] = sqftShapeManager.getMinMaxBumpoutPoints(lines[n], minX, maxX, minY, maxY , isPointOnField);\r\n }\r\n\r\n minX = from.x < minX ? from.x : minX;\r\n maxX = from.x > maxX ? from.x : maxX;\r\n minX = to.x < minX ? to.x : minX;\r\n maxX = to.x > maxX ? to.x : maxX;\r\n\r\n minY = from.y < minY ? from.y : minY;\r\n maxY = from.y > maxY ? from.y : maxY;\r\n minY = to.y < minY ? to.y : minY;\r\n maxY = to.y > maxY ? to.y : maxY;\r\n }\r\n\r\n return {\r\n minX : minX,\r\n maxX : maxX,\r\n minY : minY,\r\n maxY : maxY\r\n }\r\n },\r\n getMinMaxPoints: (points, isPointOnField = true) => {\r\n let point;\r\n let minX = null;\r\n let maxX = null;\r\n let minY = null;\r\n let maxY = null;\r\n\r\n for (let n = 0; n < points.length; n++) {\r\n if (isPointOnField) {\r\n point = getPointField(points[n].x, points[n].y, points[n].getGrandParent ? points[n].getGrandParent(): workspace);\r\n } else {\r\n point = points[n];\r\n }\r\n\r\n if (minX === null) {\r\n minX = point.x;\r\n maxX = point.x;\r\n minY = point.y;\r\n maxY = point.y;\r\n }\r\n\r\n minX = point.x < minX ? point.x : minX;\r\n maxX = point.x > maxX ? point.x : maxX;\r\n minY = point.y < minY ? point.y : minY;\r\n maxY = point.y > maxY ? point.y : maxY;\r\n }\r\n\r\n return {\r\n minX : minX,\r\n maxX : maxX,\r\n minY : minY,\r\n maxY : maxY\r\n }\r\n },\r\n setIsDisabledShapeInPopup: (id, isDisabledInPopup) => {\r\n let shape = sqftShapeManager.getShapeById(id);\r\n if (shape) {\r\n shape.isDisabledInPopup = isDisabledInPopup;\r\n if (isDisabledInPopupShouldBeHidden()) {\r\n if (isDisabledInPopup && shape.deregisterEvents) {\r\n shape.deregisterEvents()\r\n shape.shapeSlab.resetShapeSeams();\r\n } else if (shape.reInitEvents) {\r\n shape.reInitEvents();\r\n }\r\n }\r\n }\r\n },\r\n getSnappedShapes: (snappedShapeGroup) => {\r\n const shapes = workspace.getShapes();\r\n return shapes.filter(shp => {\r\n return !!(shp.shapeAbsolute && (shp.shapeAbsolute.getSnappedShapeGroup() === snappedShapeGroup))\r\n })\r\n },\r\n\r\n changeShapesFeatureIDIfColorWasChanged: (feature) => {\r\n if (feature && feature.partId) {\r\n const shapes = workspace.getShapes();\r\n const partId = Object.keys(SQFT_CHILD_FEATURE_GROUP_PART_IDS).includes(feature.partId)\r\n ? SQFT_CHILD_FEATURE_GROUP_PART_IDS[feature.partId]\r\n : feature.partId;\r\n\r\n //also include spacers\r\n const filteredShapes = shapes.filter(shape => shape.partId === partId || shape.parentPartId === partId );\r\n filteredShapes.forEach((shape) => {\r\n if (shape instanceof sqftShape) {\r\n shape.changeFeatureIdIfColorWasChanged(feature);\r\n }\r\n })\r\n }\r\n },\r\n updateShapeColorSet: (shapeId) => {\r\n const shape = workspace.getShapeById(shapeId);\r\n if (shape instanceof sqftShape) {\r\n shape.updateColorSet();\r\n }\r\n },\r\n updateMinMaxMiteredPoints: (shape) => {\r\n const lines = shape.getLines();\r\n for (const line of lines) {\r\n if (line.isWithMitered()) {\r\n line.miteredOverlay.updateMinMaxPoints();\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default sqftShapeManager\r\n","//********* NAVIGATION *********//\r\nimport * as types from \"./actionTypes\";\r\n\r\nexport const toggleDesktopNavigation = (desktopNavigationOpened = false) => ({\r\n type: types.TOGGLE_DESKTOP_NAVIGATION,\r\n payload: {desktopNavigationOpened}\r\n});\r\n\r\nexport const setNavigationViewType = (navigationViewType = 3) => ({\r\n type: types.SET_NAVIGATION_VIEW_TYPE,\r\n payload: {navigationViewType}\r\n});\r\n\r\nexport const setActiveNavigationNames = (activeNavigationParentName, activeNavigationChildName) => ({\r\n type: types.SET_ACTIVE_NAVIGATION_NAMES,\r\n payload: {activeNavigationParentName, activeNavigationChildName}\r\n});\r\n\r\nexport const setNavigationLoading = (navigationLoadingActive) => ({\r\n type: types.SET_NAVIGATION_LOADING,\r\n payload: {navigationLoadingActive}\r\n});\r\n\r\n// MODULE\r\nexport const setModuleContextMenuType = (moduleContextMenuType) => ({\r\n type: types.SET_MODULE_CONTEXT_MENU_TYPE,\r\n payload: {moduleContextMenuType}\r\n});\r\nexport const setModuleContextMenuDirection = (moduleContextMenuDirection) => ({\r\n type: types.SET_MODULE_CONTEXT_MENU_DIRECTION,\r\n payload: {moduleContextMenuDirection}\r\n});\r\nexport const setModuleContextMenuModule = (moduleContextMenuModule) => ({\r\n type: types.SET_MODULE_CONTEXT_MENU_MODULE,\r\n payload: {moduleContextMenuModule}\r\n});\r\nexport const setModuleContextMenuModulePart = (moduleContextMenuModulePart) => ({\r\n type: types.SET_MODULE_CONTEXT_MENU_MODULE_PART,\r\n payload: {moduleContextMenuModulePart}\r\n});\r\n\r\n// CABINET MODULE FILTERS\r\nexport const setActiveNavigationFilter = (activeNavigationFilter) => ({\r\n type: types.SET_ACTIVE_NAVIGATION_FILTER,\r\n payload: {activeNavigationFilter}\r\n});\r\nexport const setActiveNavigationFilterStepIndex = (activeNavigationFilterStepIndex) => ({\r\n type: types.SET_ACTIVE_NAVIGATION_FILTER_STEP_INDEX,\r\n payload: {activeNavigationFilterStepIndex}\r\n});\r\nexport const setCabinetNavigationFilterCompleted = (cabinetNavigationFilterCompleted) => ({\r\n type: types.SET_CABINET_NAVIGATION_FILTER_COMPLETED,\r\n payload: {cabinetNavigationFilterCompleted}\r\n});\r\n\r\n//COUNTERTOP WIZARD\r\nexport const setCountertopNavigationFilterCompleted = (countertopNavigationFilterCompleted) => ({\r\n type: types.SET_COUNTERTOP_NAVIGATION_FILTER_COMPLETED,\r\n payload: {countertopNavigationFilterCompleted}\r\n});\r\nexport const setCountertopWizard = (countertopWizard) => ({\r\n type: types.SET_COUNTERTOP_WIZARD,\r\n payload: {countertopWizard}\r\n});\r\nexport const setCabinetsApplyTo = (cabinetsApplyTo) => ({\r\n type: types.SET_CABINETS_APPLY_TO,\r\n payload: {cabinetsApplyTo}\r\n});\r\nexport const setCabinetsApplyToBathroom = (cabinetsApplyToBathroom) => ({\r\n type: types.SET_CABINETS_APPLY_TO_BATHROOM,\r\n payload: {cabinetsApplyToBathroom}\r\n});\r\nexport const setCountertopsApplyTo = (countertopsApplyTo, newArrayLogic = false) => ({\r\n type: types.SET_COUNTERTOPS_APPLY_TO,\r\n payload: {countertopsApplyTo, newArrayLogic}\r\n});\r\nexport const setCountertopsApplyToBathroom = (countertopsApplyToBathroom, newArrayLogic = false) => ({\r\n type: types.SET_COUNTERTOPS_APPLY_TO_BATHROOM,\r\n payload: {countertopsApplyToBathroom, newArrayLogic}\r\n});\r\nexport const setApplyToCommon = (arrayToChange, isNewNotUsed, type) => {\r\n let arrayPropertyToChange = \"test\";\r\n switch (type) {\r\n case \"handles\":\r\n arrayPropertyToChange = \"handlesApplyToBathroom\";\r\n break;\r\n case \"showerFloor\":\r\n arrayPropertyToChange = \"showerFloorApplyToBathroom\";\r\n break;\r\n default:\r\n console.error(\"setApplyTo function no type passed\", type);\r\n break;\r\n }\r\n return {\r\n type: types.SET_APPLY_TO_COMMON,\r\n payload: {\r\n [arrayPropertyToChange]: arrayToChange,\r\n }\r\n }\r\n};\r\nexport const setEdgesApplyTo = (edgesApplyTo) => ({\r\n type: types.SET_EDGES_APPLY_TO,\r\n payload: {edgesApplyTo}\r\n});\r\n\r\n// TOGGLE DISABLED RADIO\r\nexport const toggleUpdateDisableFeatureGroupRadio = (updateDisableFeatureGroupRadio) => ({\r\n type: types.UPDATE_DISABLE_FEATURE_GROUP_RADIO,\r\n payload: {updateDisableFeatureGroupRadio}\r\n});\r\n\r\n// TOGGLE DISABLED RADIO\r\nexport const toggleNavItemPositionModal = (navItemPositionModal) => ({\r\n type: types.TOGGLE_NAV_ITEM_POSITION_MODAL,\r\n payload: {navItemPositionModal}\r\n});\r\n\r\nexport const setUseFeaturesLightRequest = (useFeaturesLightRequest) => ({\r\n type: types.SET_USE_FEATURES_LIGHT_REQUEST,\r\n payload: {useFeaturesLightRequest}\r\n});\r\n","import {SpacersController} from \"./controllers/SpacersController\";\r\nimport {HandlesController} from \"./controllers/HandlesController\";\r\nimport {WallsController} from \"./controllers/WallsController\";\r\nimport {ShapeColorsController} from \"./controllers/ShapeColorsController\";\r\nimport {WaterfallController} from \"./controllers/line/WaterfallController\";\r\nimport {RemovedFeaturesController} from \"./controllers/RemovedFeaturesController\";\r\nimport {SnappedShapeGroupsController} from \"./controllers/SnappedShapeGroupsController\";\r\nimport {SelectedShapesController} from \"./controllers/SelectedShapesController\";\r\nimport {CrownMoldingController} from \"./controllers/line/CrownMoldingController\";\r\nimport {Images3dController} from \"./controllers/Images3dController\";\r\nimport {HingesController} from \"./controllers/HingesController\";\r\nimport {WORKSPACE_RESOURCES} from \"../../../constants\";\r\n\r\nexport const groupedDataInControllers = [\r\n WORKSPACE_RESOURCES.hinge\r\n]\r\n\r\nexport const QUANTITY_GROUP = {\r\n doors: \"doors\",\r\n drawers: \"drawers\"\r\n}\r\n\r\nexport const controllersConfig = {\r\n exportableControllers: [\r\n 'walls',\r\n 'snappedShapeGroups',\r\n 'handles',\r\n WORKSPACE_RESOURCES.hinge,\r\n ],\r\n};\r\n\r\nexport const WORKSPACE_CONTROLLERS_THAT_WILL_ADD_FEATURES = [\r\n //WORKSPACE_RESOURCES.handles\r\n WORKSPACE_RESOURCES.hinge\r\n]\r\n\r\nconst workspaceControllers = {\r\n walls: new WallsController(),\r\n crownMolding: new CrownMoldingController(),\r\n spacer: new SpacersController(),\r\n handles: new HandlesController(),\r\n hinge: new HingesController(),\r\n shapeColors: new ShapeColorsController(),\r\n waterfall: new WaterfallController(),\r\n removedFeatures: new RemovedFeaturesController(),\r\n snappedShapeGroups: new SnappedShapeGroupsController(),\r\n selectedShapes: new SelectedShapesController(),\r\n images3d: new Images3dController(),\r\n};\r\n\r\nexport const getControllersExportData = () => {\r\n const exportData = {};\r\n controllersConfig.exportableControllers.forEach(controllerName => {\r\n const controller = workspaceControllers[controllerName];\r\n if (controller && typeof controller.exportData === 'function') {\r\n exportData[controllerName] = controller.exportData();\r\n }\r\n });\r\n\r\n return exportData;\r\n};\r\n\r\nexport const importControllersData = (data) => {\r\n if (data) {\r\n Object.keys(data).forEach(controllerName => {\r\n const controller = workspaceControllers[controllerName];\r\n if (controller && typeof controller.importData === 'function') {\r\n controller.importData(data[controllerName]);\r\n }\r\n });\r\n }\r\n};\r\n\r\nexport default workspaceControllers\r\n","import {createContext} from \"react\";\r\n\r\nexport default createContext({});\r\n","import {Part} from \"./part\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {LayoutType, ShowerComboTubType} from \"../constants\";\r\nimport { showerTubComboThumbnail, custom60inPonyShower, custom60in30X8Shower } from '../assets';\r\n\r\nimport BathTubLiner from \"../subparts/showerTubCombo/bathtubLiner\";\r\nimport ReplacementTub from \"../subparts/showerTubCombo/replacementTub\";\r\nimport WalkInTub from \"../subparts/showerTubCombo/walkInTub\";\r\nimport JettedTub from \"../subparts/showerTubCombo/jettedTub\";\r\nimport WallConfiguration from \"../subparts/showerTubCombo/wallConfiguration\";\r\nimport {fixDbFeatureProperties} from \"../../../../misc/helpers\";\r\n\r\nexport class ShowerTubCombo extends Part {\r\n static id = 'Shower Tub Combo';\r\n\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.showerTubComboIsActive = false; // param needed to check if shower is still active or not\r\n this.menuType = PartMenuType.Complex;\r\n this.partThumbnail = showerTubComboThumbnail;\r\n this.partName = 'Shower Tub Combo';\r\n this.translateId = \"visualizer.bathroom.shower_tub_combo\";\r\n this.relatedItems = [];\r\n this.wallConfiguration = null;\r\n this.bathTubLiner = null;\r\n this.replacementTub = null;\r\n this.walkInTub = null;\r\n this.jettedTub = null;\r\n\r\n // Kohler hardcode, they don't have bathtub_liner\r\n this.bottomTub = (document.kvConfig && (document.kvConfig.userId === 133439))\r\n ? ShowerComboTubType.replacement_tub\r\n : ShowerComboTubType.bathtub_liner;\r\n this.leftShowerWallType = 'Pony';\r\n this.showerComboSize = '60in';\r\n\r\n }\r\n\r\n load(dbFeature) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Bathtub Liner\":\r\n relatedItemName = \"bathTubLiner\";\r\n RelatedItemClass = BathTubLiner;\r\n break;\r\n case \"Replacement Tub\":\r\n relatedItemName = \"replacementTub\";\r\n RelatedItemClass = ReplacementTub;\r\n break;\r\n case \"Walk In Tub\":\r\n relatedItemName = \"walkInTub\";\r\n RelatedItemClass = WalkInTub;\r\n break;\r\n case \"Jetted Tub\":\r\n relatedItemName = \"jettedTub\";\r\n RelatedItemClass = JettedTub;\r\n break;\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].load(dbFeature);\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n setSpecificRules() {\r\n if (!this.wallConfiguration) {\r\n this.wallConfiguration = new WallConfiguration(true);\r\n this.wallConfiguration.counts = {\r\n allLayoutFeaturesCount: 0,\r\n largeLayoutFeaturesCount: 0,\r\n smallLayoutFeaturesCount: 0\r\n };\r\n this.relatedItems.unshift(this.wallConfiguration);\r\n this.wallConfiguration.getParent = () => this;\r\n }\r\n const wallConfigurations = [\r\n ShowerTubCombo.createCustomWallConfiguration(\r\n custom60inPonyShower,\r\n \"Pony Wall 60in\",\r\n \"Pony\",\r\n \"60in\",\r\n {\r\n \"ShowerSize\": ['60in'],\r\n \"CountertopSize\": [\"20in\", \"24in\", \"30in\", \"36in\", \"48in\", \"60in\", \"72in\"],\r\n },\r\n this,\r\n 100000\r\n ),\r\n ShowerTubCombo.createCustomWallConfiguration(\r\n custom60in30X8Shower,\r\n \"Full Wall 60in\",\r\n \"30X8\",\r\n \"60in\",\r\n {\r\n \"ShowerSize\": ['60in'],\r\n \"CountertopSize\": [\"20in\", \"24in\", \"30in\", \"36in\", \"48in\", \"60in\", \"72in\"],\r\n },\r\n this,\r\n 100001\r\n ),\r\n ];\r\n Object.keys(LayoutType).forEach(layoutType => {\r\n this.wallConfiguration.featuresList[layoutType] = wallConfigurations;\r\n this.wallConfiguration.counts[layoutType.toLowerCase() + \"LayoutFeaturesCount\"]++;\r\n });\r\n }\r\n\r\n static createCustomWallConfiguration(customThumbnail, name, leftShowerWallType, showerComboSize, metaData, parent, id) {\r\n const conf = new WallConfiguration();\r\n conf.partName = name;\r\n conf.showerBodyId = name.toLowerCase().replace(/ /gi, \"-\");\r\n conf.dbFeature = {};\r\n conf.featureName = name;\r\n conf.groupName = \"Wall Configuration\";\r\n conf.showerComboSize = showerComboSize;\r\n // conf.parent = parent;\r\n conf.getParent = () => parent.wallConfiguration;\r\n conf.metaData = metaData;\r\n conf.leftShowerWallType = leftShowerWallType;\r\n conf.customThumbnail = customThumbnail;\r\n conf.dbFeature = fixDbFeatureProperties({\r\n metaData,\r\n id,\r\n unlocked: true\r\n });\r\n return conf;\r\n }\r\n\r\n setLayers(layout, placeholdersNeeded) {\r\n\r\n if (!this.showerTubComboIsActive) {\r\n return null\r\n }\r\n\r\n let res = [];\r\n this.getRelatedItems().forEach(relatedItem => {\r\n relatedItem.setLayers(layout);\r\n (placeholdersNeeded && !relatedItem.placeholderChanged && relatedItem.placeholderFeature)\r\n ? relatedItem.placeholderFeature.layer.addTo(res)\r\n : relatedItem.activeFeature ? relatedItem.activeFeature.layer.addTo(res) : null;\r\n });\r\n\r\n return res.length ? res : null;\r\n }\r\n\r\n navigationItem() {\r\n return new DesignNavigationItem('Shower Tub Combo', this)\r\n }\r\n\r\n subParts() {\r\n\r\n let subParts = [\r\n ...this.getRelatedItems().filter(item => item.visible).map(_ => new DesignNavigationItem(_.partName, _)),\r\n ...this.layout.parts.Shower.subParts().filter(subPart => {\r\n return (subPart.text === \"Fixture\")\r\n || (subPart.text === \"Shower Head\")\r\n || (subPart.text === \"Shower Walls\")\r\n || (subPart.text === \"Shower Walls Accent\")\r\n || (subPart.text === \"Shower Door\")\r\n || (subPart.text === \"Handle\")\r\n || (subPart.text === \"Pony Wall\")\r\n || (subPart.text === \"Pony Wall Cap\")\r\n || (subPart.text === \"Pony Wall Glass\")\r\n })\r\n ];\r\n\r\n if (this.bottomTub === ShowerComboTubType.walk_in_tub) {\r\n subParts = subParts.filter(subPart => {\r\n return subPart.part.partId !== \"shower_door\" && subPart.part.partId !== \"shower_door_handle\" && subPart.part.partId !== \"shower_fixture\"\r\n })\r\n }\r\n\r\n return subParts\r\n }\r\n\r\n getShowerRelatedItems() {\r\n return this.layout.parts.Shower.getRelatedItems().filter(relItem => {\r\n return (relItem.partId === \"shower_fixture\")\r\n || (relItem.partId === \"shower_head\")\r\n || (relItem.partId === \"shower_interior_wall\")\r\n || (relItem.partId === \"shower_interior_wall_accent\")\r\n || (relItem.partId === \"shower_door\")\r\n || (relItem.partId === \"shower_door_handle\")\r\n || (relItem.partId === \"pony_wall\")\r\n || (relItem.partId === \"pony_wall_cap\")\r\n || (relItem.partId === \"pony_wall_glass\")\r\n })\r\n }\r\n\r\n setShowerTubCombo() {\r\n this.showerTubComboIsActive = true;\r\n if (this.layout.type === LayoutType.Small) {\r\n const showerParent = this.layout.parts.Shower;\r\n if (showerParent.showerBody && showerParent.showerBody.disabled) { // switch on all Shower features\r\n showerParent.showerBody.disabled = false;\r\n showerParent.showerBody.disabledClick();\r\n this.showerTubComboIsActive = true;\r\n }\r\n }\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false\r\n }\r\n\r\n handleSubPartClick() {}\r\n\r\n setZIndex(zIndexes) {\r\n if (!this.showerTubComboIsActive) {\r\n return null\r\n }\r\n\r\n if(zIndexes)\r\n this.relatedItems.forEach(_ => _.setZIndex(zIndexes));\r\n }\r\n\r\n setActiveTub(bottomTub) {\r\n this.bottomTub = bottomTub;\r\n }\r\n\r\n showerSize() {\r\n return this.showerComboSize\r\n }\r\n\r\n showerDimensions() {\r\n return this.leftShowerWallType\r\n }\r\n\r\n setShowerSize(leftShowerWallType, showerComboSize) {\r\n this.leftShowerWallType = leftShowerWallType;\r\n this.showerComboSize = showerComboSize;\r\n }\r\n\r\n setDefault() {\r\n // this.relatedItems.forEach(relatedItem => relatedItem.setDefault(layout));\r\n }\r\n\r\n}\r\n","import uuid from \"uuid\";\r\n\r\nimport * as types from './actionTypes';\r\nimport {clearCart, setJobId} from \"./actionFunctions\";\r\nimport {setReceiptUrl} from \"./printFunctions\";\r\nimport {setAmazonImageUrl} from \"./serverFunctions\";\r\nimport {setWizardSelectedValues} from \"../visit/wizardLogic/wizardActions\";\r\nimport {setWizardActiveStep, updateAllWizardValues} from \"./wizardFunctions\";\r\nimport {setActiveQuoteIndex, setQuotes} from \"./roomsFunctions\";\r\n\r\nexport const showOrderCompletePopup = (orderCompletePopupVisible) => ({\r\n type: types.SHOW_ORDER_COMPLETE_POPUP,\r\n payload: {orderCompletePopupVisible}\r\n})\r\n\r\nexport const toggleShowMobileQuotes = (showMobileQuotes) => ({\r\n type: types.TOGGLE_SHOW_MOBILE_QUOTES,\r\n payload: {showMobileQuotes}\r\n})\r\n\r\nexport const toggleShowAllQuotesCartItemsList = (showAllQuotesCartItemsList) => ({\r\n type: types.TOGGLE_SHOW_ALL_QUOTES_CART_ITEMS_LIST,\r\n payload: {showAllQuotesCartItemsList}\r\n})\r\n\r\nexport const getMinimumChargeCartItem = (fromCartItem, onlyMinimum = false, quantity = 1) => {\r\n const {selectionGroup, partId, currentQuote, } = fromCartItem;\r\n const newDbFeature = Object.assign({}, fromCartItem.cartFeature.dbFeature, {\r\n id: 1,\r\n customDisplayName: \"additionalCartItem.minimumCharge\",\r\n displayName: \"additionalCartItem.minimumCharge\",\r\n sharedFeatureName: \"additionalCartItem.minimumCharge\",\r\n });\r\n if (onlyMinimum) {\r\n newDbFeature.cost = 375;\r\n newDbFeature.costplus = 375;\r\n newDbFeature.stonePricingId = null;\r\n }\r\n let minCartItem = {\r\n id: uuid.v4(),\r\n isEmpty: false,\r\n isMinimumCharge: true,\r\n isMinimumChargeItems: !onlyMinimum,\r\n selectionGroup,\r\n partId,\r\n currentQuote,\r\n quantity,\r\n cartFeature: Object.assign({}, fromCartItem.cartFeature, {\r\n fromFeatureName: fromCartItem.cartFeature.getFeatureName(),\r\n partName: \"additionalCartItem.minimumCharge\",\r\n _customDisplayName: \"additionalCartItem.minimumCharge\",\r\n _countertopGroupsCustomDisplayName: \"additionalCartItem.minimumCharge\",\r\n metaData: {},\r\n notesList: {},\r\n getCountertopGroupsSplittedFeatureName: function () {\r\n return this.partName\r\n },\r\n getSplittedFeatureName: function () {\r\n return this.partName\r\n },\r\n getFeatureName: function () {\r\n return this.partName\r\n },\r\n dbFeature: newDbFeature,\r\n })\r\n }\r\n if (fromCartItem.fromWizardId || minCartItem.fromWizardGroupId) { // just in case fromWizardId is 0\r\n minCartItem.fromWizardId = fromCartItem.fromWizardId; // this is needed to prevent showing minimum cart item ↓\r\n minCartItem.fromWizardStep = fromCartItem.fromWizardStep; // in different wizards in advanced quoting ↓\r\n minCartItem.fromWizardGroupId = fromCartItem.fromWizardGroupId; // for the same groups\r\n }\r\n return minCartItem\r\n};\r\n\r\nexport const setCartFooterActiveButtonIndex = (cartFooterActiveButtonIndex) => ({\r\n type: types.SET_CART_FOOTER_ACTIVE_BUTTON_INDEX,\r\n payload: {cartFooterActiveButtonIndex}\r\n})\r\n\r\nexport const setCartItemEditFeature = (cartItemEditFeature) => ({\r\n type: types.SET_CART_ITEM_EDIT_FEATURE,\r\n payload: {cartItemEditFeature}\r\n})\r\n\r\nexport const setLookRemovedCartItems = (lookRemovedCartItems) => ({\r\n type: types.SET_LOOK_REMOVED_CART_ITEMS,\r\n payload: {lookRemovedCartItems}\r\n})\r\n\r\nexport const setCItemsAddedToParentCart = (cartItems) => ({\r\n type: types.SET_CART_ITEMS_ADDED_TO_PARENT_CART,\r\n payload: {cartItems}\r\n})\r\n\r\nexport const changeAllCartItems = (cartItems) => ({\r\n type: types.CHANGE_ALL_CART_ITEMS,\r\n payload: {cartItems}\r\n})\r\n\r\nexport const setSureTax = (sureTax) => ({\r\n type: types.SET_SURE_TAX,\r\n payload: {sureTax}\r\n});\r\nexport const setSureTaxLoading = (sureTaxLoading) => ({\r\n type: types.SET_SURE_TAX_LOADING,\r\n payload: {sureTaxLoading}\r\n});\r\nexport const setDeliveryList = (deliveryList) => ({\r\n type: types.SET_DELIVERY_LIST,\r\n payload: {deliveryList}\r\n});\r\n\r\nexport const clearCartAndStartOver = (fullClear = false) => {\r\n return (dispatch) => {\r\n if (fullClear) {\r\n dispatch(setWizardSelectedValues({}, true));\r\n dispatch(setWizardActiveStep(0));\r\n dispatch(updateAllWizardValues([]));\r\n dispatch(setActiveQuoteIndex(0));\r\n dispatch(setQuotes([{}]));\r\n }\r\n dispatch(clearCart()); // clear cart\r\n dispatch(setReceiptUrl(\"\")); // clear receipt\r\n dispatch(setAmazonImageUrl(\"\")); // not sure if it is needed here, but let it be\r\n dispatch(setJobId(0)); // erase current job\r\n document.kvConfig.jobId = null; // erase current job\r\n }\r\n};\r\n\r\nexport const setManualTax = (manualTax) => ({\r\n type: types.SET_MANUAL_TAX,\r\n payload: {manualTax}\r\n});\r\n\r\nexport const setMarkUpLogic = (markUpLogic) => ({\r\n type: types.SET_MARK_UP_LOGIC,\r\n payload: {markUpLogic}\r\n});\r\n\r\n","import $ from 'jquery';\r\nimport Config from '../config';\r\nimport {PhoneNumberUtil} from 'google-libphonenumber';\r\n\r\nexport default {\r\n bgImageUrl: function (imageUrl) {\r\n return 'url(\"' + imageUrl + '\")';\r\n },\r\n splitFilter: function (filter) {\r\n const res = {};\r\n filter.split('&').forEach(function (pair) {\r\n const ar = pair.split('=');\r\n res[ar[0]] = ar[1];\r\n });\r\n return res;\r\n },\r\n keysAndProps: function (obj) {\r\n const res = Object.keys(obj);\r\n console.log(res);\r\n for (let key in res) {\r\n const prop = obj[key];\r\n if (Array.isArray(prop)) {\r\n res.push(prop);\r\n }\r\n }\r\n\r\n return res;\r\n },\r\n isObject: function (val) {\r\n if (val === null) {\r\n return false;\r\n }\r\n return ( (typeof val === 'function') || (typeof val === 'object') );\r\n },\r\n\r\n imagePathCache: {},\r\n imagePath: function (image) {\r\n let path = this.imagePathCache[image];\r\n if (!path) {\r\n path =(Config.kioskStandAlone || document.kvConfig.dev ? './' : '/content/Views/kv/') + image;\r\n this.imagePathCache[image] = path;\r\n }\r\n\r\n return path;\r\n },\r\n /**\r\n * return the path without last part which is supposelly the file name\r\n * @param {string} path\r\n * @param {int} [count=1]\r\n */\r\n pathPrefix: function (path, count) {\r\n count = count || 1;\r\n while (count-- > 0) {\r\n const index = path.lastIndexOf(\"/\");\r\n if (index === -1) {\r\n return path;\r\n }\r\n\r\n path = path.substr(0, index);\r\n }\r\n\r\n return path;\r\n },\r\n\r\n /**\r\n * Converts a string to a boolean value\r\n * @param value\r\n */\r\n toBoolean: function (value) {\r\n if (typeof (value) === 'string') {\r\n value = value.toLowerCase();\r\n }\r\n switch (value) {\r\n case true:\r\n case \"true\":\r\n case 1:\r\n case \"1\":\r\n case \"on\":\r\n case \"yes\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n },\r\n\r\n convertKeysToCamelCase: function (obj) {\r\n if (!obj || typeof obj !== \"object\") {\r\n return null;\r\n }\r\n\r\n if (obj instanceof Array) {\r\n return $.map(obj, function (value) {\r\n return this.convertKeysToCamelCase(value);\r\n });\r\n }\r\n\r\n const newObj = {};\r\n $.each(obj, function (key, value) {\r\n key = key.charAt(0).toLowerCase() + key.slice(1);\r\n newObj[key] = value;\r\n });\r\n\r\n return newObj;\r\n },\r\n toCamel: function (o) {\r\n let build, key, destKey, value;\r\n\r\n if (o instanceof Array) {\r\n build = [];\r\n for (key in o) {\r\n value = o[key];\r\n\r\n if (typeof value === \"object\") {\r\n value = this.toCamel(value);\r\n }\r\n build.push(value);\r\n }\r\n } else {\r\n build = {};\r\n for (key in o) {\r\n if (o.hasOwnProperty(key)) {\r\n destKey = (key.charAt(0).toLowerCase() + key.slice(1) || key).toString();\r\n value = o[key];\r\n if (value !== null && typeof value === \"object\") {\r\n value = this.toCamel(value);\r\n }\r\n\r\n build[destKey] = value;\r\n }\r\n }\r\n }\r\n return build;\r\n },\r\n ignoreDefault: function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n //e.nativeEvent.stopImmediatePropagation();\r\n },\r\n\r\n ignore: function (e, cb) {\r\n this.ignoreDefault(e);\r\n cb();\r\n },\r\n\r\n\r\n playVideo: function (id) {\r\n ///TODO: When Girl videos are updated remove \"|| true\"\r\n if (!document.kvConfig.kioskMode || Config.isQTEmbedded() || true) {\r\n return;\r\n }\r\n const $guide = $(id);\r\n if (!$guide.length) {\r\n return;\r\n }\r\n const guide = $guide[0];\r\n $guide.off('canplaythrough').on('canplaythrough', function () {\r\n $guide.show();\r\n guide.play();\r\n });\r\n guide.load();\r\n },\r\n hideVideo: function (id) {\r\n const $guide = $(id);\r\n if (!$guide.length) {\r\n return;\r\n }\r\n const guide = $guide[0];\r\n $guide.hide();\r\n guide.pause();\r\n },\r\n getIntroVideo: function (view) {\r\n const path = Config.kioskStandAlone ? \"./videos/video_guide/\" : 'https://s3.amazonaws.com/intro-videos/';\r\n switch (view) {\r\n case 'review':\r\n return path + 'Visualizer-Tools-Totals-25M.webm';\r\n case 'intro':\r\n return path + 'Kitchen-Visualizer-25M.webm';\r\n default:\r\n return '';\r\n }\r\n },\r\n exportCanvasAsPNG: function (canvasElement, fileName) {\r\n const MIME_TYPE = \"image/png\";\r\n let imgURL = canvasElement.toDataURL(MIME_TYPE);\r\n\r\n /* Change MIME type to trick the browser to download the file instead of displaying it */\r\n imgURL = imgURL.replace(/^data:image\\/[^;]*/, 'data:application/octet-stream');\r\n /* In addition to 's \"download\" attribute, you can define HTTP-style headers */\r\n //imgURL = imgURL.replace(/^data:application\\/octet-stream/, 'data:application/octet-stream;headers=Content-Disposition%3A%20attachment%3B%20filename=' + fileName);\r\n\r\n const dlLink = document.createElement('a');\r\n dlLink.download = fileName;\r\n dlLink.href = imgURL;\r\n dlLink.dataset.downloadurl = [MIME_TYPE, dlLink.download, dlLink.href].join(':');\r\n\r\n document.body.appendChild(dlLink);\r\n dlLink.click();\r\n document.body.removeChild(dlLink);\r\n },\r\n monads: {\r\n ifNotNull: function (o, notNullCallback) {\r\n if (o) {\r\n return notNullCallback(o);\r\n }\r\n\r\n return null;\r\n }\r\n },\r\n pnpoly: function( points, test ) {\r\n var i, j, c = false;\r\n for( i = 0, j = points.length-1; i < points.length; j = i++ ) {\r\n if( ( ( points[i].y > test.y ) != ( points[j].y > test.y ) ) &&\r\n ( test.x < ( points[j].x - points[i].x ) * ( test.y - points[i].y ) / ( points[j].y - points[i].y ) + points[i].x ) ) {\r\n c = !c;\r\n }\r\n }\r\n return c;\r\n },\r\n isEmail: function (email) {\r\n if (!email || email.indexOf('@') === -1) {\r\n return false;\r\n }\r\n\r\n // eslint-disable-next-line no-useless-escape\r\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/i;\r\n return re.test(email);\r\n },\r\n isZip: function (zip) {\r\n const regex = /[a-zA-Z0-9][a-zA-Z0-9\\- ]{0,10}[a-zA-Z0-9]/;\r\n // const regex = /(^\\d{5}(?:[\\s]?[-\\s][\\s]?\\d{4})?$)/; // this on can not support H3H 2H2, which is real Quebec code\r\n return regex.test(zip);\r\n },\r\n // isPhoneNumber: function (phone) {\r\n // if (!phone) {\r\n // return false;\r\n // }\r\n // const count = phone.replace(/[^0-9]/g, \"\").length;\r\n // return count === 10 || count === 11;\r\n // },\r\n isPhoneNumber: function (phone, region) {\r\n region = region || \"US\";\r\n const phoneUtil = PhoneNumberUtil.getInstance();\r\n try {\r\n if (phone) {\r\n const parsedPhone = phoneUtil.parse(phone, region);\r\n return phoneUtil.isPossibleNumber(parsedPhone) && phoneUtil.isValidNumberForRegion(parsedPhone, region); // /^\\+?\\d{10,16}$/.test(phone);\r\n }\r\n return false;\r\n } catch(ex) {\r\n return false;\r\n }\r\n },\r\n getPhoneFormatted: (phone, region) => {\r\n region = region || \"US\";\r\n const phoneUtil = PhoneNumberUtil.getInstance();\r\n try {\r\n if (phone) {\r\n const parsedPhone = phoneUtil.parse(phone, region);\r\n return phoneUtil.formatInOriginalFormat(parsedPhone, region);\r\n }\r\n } catch(ex) {\r\n console.log(ex);\r\n }\r\n return phone;\r\n },\r\n getUserPhoneSplitted: (phone, oldCountry = \"\") => {\r\n const googlePhouneUtilInstance = PhoneNumberUtil.getInstance();\r\n if (Config.isDevMode()) {\r\n console.log(\"googlePhouneUtilInstance\", googlePhouneUtilInstance);\r\n }\r\n const allRegions = googlePhouneUtilInstance.getSupportedRegions();\r\n // console.log(\"allRegions\", allRegions);\r\n try {\r\n const parsedPhone = googlePhouneUtilInstance.parse(phone);\r\n // if (Config.isDevMode()) {\r\n // console.log(\"parsedPhone\", parsedPhone);\r\n // }\r\n const phoneCountry = oldCountry && allRegions.includes(oldCountry)\r\n && googlePhouneUtilInstance.isValidNumberForRegion(parsedPhone, oldCountry)\r\n ? oldCountry\r\n : allRegions.find(regionCode => googlePhouneUtilInstance.isValidNumberForRegion(parsedPhone, regionCode)) || \"\"\r\n // console.log(\"phoneCountry\", phoneCountry);\r\n return {\r\n country: {\r\n dialCode: \"\" + parsedPhone.getCountryCode(),\r\n iso2: phoneCountry.toLowerCase()\r\n },\r\n phoneNumber: \"\" + parsedPhone.getNationalNumber() // we keep it as as string\r\n }\r\n } catch (ex) {\r\n if (Config.isDevMode()) {\r\n console.log(\"couldn't parse the phone\", phone);\r\n }\r\n }\r\n const phoneSplitted = phone ? phone.match(/(\\+(\\d.*?)\\s)?(.*)/) : [];\r\n return {\r\n phoneNumber: phoneSplitted[3] || phone || \"\"\r\n }\r\n },\r\n parseUserResponse: function(responseData, oldCountry = \"\") {\r\n const {phoneNumber, country} = this.getUserPhoneSplitted(responseData.values.phone, oldCountry || responseData.values.country || \"\");\r\n const newUserInfo = {\r\n email: responseData.email,\r\n firstName: responseData.values.firstName,\r\n lastName: responseData.values.lastName,\r\n phoneNumber,\r\n postal: responseData.values.postal,\r\n isNew: false,\r\n password: \"\"\r\n };\r\n if (country) {\r\n newUserInfo.country = country;\r\n }\r\n [\"address1\", \"address2\", \"firstName\", \"lastName\", \"postal\", \"city\", \"provence\"].forEach(key => {\r\n if (responseData.values && responseData.values[key]) {\r\n const realKey = (key === \"provence\") ? \"state\" : key;\r\n newUserInfo[realKey] = responseData.values[key] === \"N/A\" ? \"\" : responseData.values[key]\r\n }\r\n })\r\n return newUserInfo\r\n },\r\n parseShippingAndBillingResponse: function(responseData) {\r\n const {billingAddress, shippingAddress, billingSameAsShipping} = responseData;\r\n return {\r\n shippingAddress: {\r\n fullName: shippingAddress ? shippingAddress.name : \"\",\r\n address1: shippingAddress ? shippingAddress.address1 : \"\",\r\n address2: shippingAddress ? shippingAddress.address2 : \"\",\r\n city: shippingAddress ? shippingAddress.city : \"\",\r\n state: shippingAddress ? shippingAddress.state : \"\",\r\n postal: shippingAddress ? shippingAddress.zip : \"\",\r\n country: shippingAddress ? shippingAddress.country : \"\"\r\n },\r\n billingAddress: {\r\n fullName: billingAddress ? billingAddress.name : \"\",\r\n address1: billingAddress ? billingAddress.address1 : \"\",\r\n address2: billingAddress ? billingAddress.address2 : \"\",\r\n city: billingAddress ? billingAddress.city : \"\",\r\n state: billingAddress ? billingAddress.state : \"\",\r\n postal: billingAddress ? billingAddress.zip : \"\"\r\n },\r\n billingSameAsShipping: !!billingSameAsShipping, // in case it comes undefined\r\n }\r\n },\r\n isMobile: () => {\r\n return (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)\r\n // eslint-disable-next-line no-useless-escape\r\n || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(navigator.userAgent.substr(0, 4)))\r\n },\r\n getRandomInt(min, max) {\r\n return Math.floor(Math.random() * (max - min)) + min;\r\n },\r\n /**\r\n * Checks input value on errors, returns all errors array\r\n * @param currentValue {string|number}\r\n * @param property {string}\r\n * @param fabricatorData {object}\r\n * @returns {array}\r\n */\r\n getValidationErrors(currentValue, property, fabricatorData) {\r\n const errors = [];\r\n\r\n if (fabricatorData.isCaesarStone) {\r\n switch (property) {\r\n case \"lastName\": {\r\n if (!currentValue) {\r\n errors.push(\"assignPopup.errors.fieldRequired\");\r\n return errors\r\n }\r\n if (currentValue.length === 1) {\r\n errors.push(\"assignPopup.errors.shortName\");\r\n } else if (currentValue.length > 50) {\r\n errors.push(\"assignPopup.errors.longName\");\r\n }\r\n if (!/^[A-Z\\s\\'\\-\\&\\.a-z]+$/.test(currentValue)) {\r\n errors.push(\"assignPopup.errors.nameIsIncorrect\");\r\n }\r\n break;\r\n }\r\n case \"city\":\r\n case \"state\": {\r\n if (!currentValue) {\r\n errors.push(\"assignPopup.errors.fieldRequired\");\r\n return errors\r\n }\r\n break;\r\n }\r\n }\r\n return errors\r\n }\r\n\r\n switch (property) {\r\n case \"firstName\": {\r\n if (!currentValue) {\r\n errors.push(\"assignPopup.errors.fieldRequired\");\r\n return errors\r\n }\r\n if (currentValue.length === 1) {\r\n errors.push(\"assignPopup.errors.shortName\");\r\n } else if (currentValue.length > 50) {\r\n errors.push(\"assignPopup.errors.longName\");\r\n }\r\n if (!/^[A-Z\\s\\'\\-\\&\\.a-z]+$/.test(currentValue)) {\r\n errors.push(\"assignPopup.errors.nameIsIncorrect\");\r\n }\r\n break;\r\n }\r\n case \"email\": {\r\n if (!currentValue) {\r\n errors.push(\"assignPopup.errors.fieldRequired\");\r\n return errors\r\n }\r\n if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i.test(currentValue)) {\r\n errors.push(\"assignPopup.errors.invalidEmail\");\r\n }\r\n break;\r\n }\r\n case \"phoneNumber\": {\r\n if (!currentValue) {\r\n errors.push(\"assignPopup.errors.fieldRequired\");\r\n return errors\r\n }\r\n // we have another check, isPhoneNumber\r\n // if (!/^[\\+]?[(]?[0-9]{3}[)]?[-\\s\\.]?[0-9]{3}[-\\s\\.]?[0-9]{4,6}$/.test(currentValue)) {\r\n // errors.push(\"assignPopup.errors.invalidEmail\");\r\n // }\r\n break;\r\n }\r\n case \"postal\": {\r\n if (!currentValue) {\r\n errors.push(\"assignPopup.errors.fieldRequired\");\r\n return errors\r\n }\r\n if (!this.isZip(currentValue)) {\r\n errors.push(\"assignPopup.errors.incorrectPostal\");\r\n return errors\r\n }\r\n break;\r\n }\r\n case \"phone2\": {\r\n if (currentValue.length > 20) {\r\n errors.push(\"assignPopup.errors.phoneNumberIsTooLong\");\r\n }\r\n break;\r\n }\r\n }\r\n return errors\r\n },\r\n hasErrors: (errorsObject) => {\r\n return !!(Object.keys(errorsObject).length && Object.keys(errorsObject).some(key => errorsObject[key] && errorsObject[key].length))\r\n },\r\n textSubStringEllipsis: (text, length) => {\r\n if (!text || !length || (text.length < length)) {\r\n return text || \"\"\r\n }\r\n return text.substring(0, length) + \"...\"\r\n },\r\n getUrlFromString: (text) => {\r\n if (!text) {\r\n return \"\"\r\n }\r\n return text.toLowerCase().replace(/ /g, \"-\")\r\n }\r\n};\r\n\r\n","import {hashHistory} from \"react-router\";\r\n\r\nimport store from \"../store\";\r\nimport * as types from \"../actions/actionTypes\";\r\nimport {\r\n hideUserPopup,\r\n changeMessageBoxState,\r\n} from \"../actions/actionFunctions\";\r\nimport {\r\n setAfterContractSignCallback\r\n} from \"../actions/contractsActions\";\r\nimport {loaderDisable, loaderEnable} from \"../bvcomponents/ui/loaderView\";\r\nimport JsonApi from \"./jsonApi\";\r\nimport {IS_OFFLINE_MODE} from \"../config\";\r\nimport {shouldUseContractSigning} from \"../bvcomponents/popups/contractSign/contractsFunctions\";\r\nimport {ROUTES} from \"../routes\";\r\n\r\nconst _checkNetworkErrorMessage = (message) => {\r\n // includes, because it can be \"Network Error\" or \"Server Error: Error: Network Error\"\r\n return message && (message === \"Network Error\" || (message.includes && message.includes(\"Network Error\"))\r\n || (message.message && message.message.includes(\"Network Error\"))) && IS_OFFLINE_MODE\r\n}\r\n\r\n/**\r\n * renderErrorPopup can display retry connection and sign contract buttons\r\n * @param message {string}\r\n * @param title {string}\r\n * @param retryConnectionFunction {function}\r\n * @param showContractSignOnError {boolean}\r\n * @param closeButtonCallback {function}\r\n * @param afterContractSignCallback {function}\r\n */\r\nexport const renderErrorPopup = (message,\r\n title = \"messageBox.defaultTitle\",\r\n retryConnectionFunction = null,\r\n showContractSignOnError = false,\r\n closeButtonCallback = null,\r\n afterContractSignCallback = null) => {\r\n if (_checkNetworkErrorMessage(message)) {\r\n message = \"noInternetText\";\r\n title = \"noInternetTitle\";\r\n }\r\n const closeMessageBox = () => {\r\n store.dispatch(changeMessageBoxState({\r\n visible: false,\r\n }));\r\n }\r\n const buttons = [{\r\n text: message === \"noInternetText\" ? \"messageBox.closeButton\" : \"messageBox.buttonOk\",\r\n color: message === \"noInternetText\" ? \"blue\" : \"red\",\r\n click: () => {\r\n closeMessageBox();\r\n if (closeButtonCallback) {\r\n closeButtonCallback()\r\n }\r\n }\r\n }];\r\n if (message === \"noInternetText\") {\r\n if (showContractSignOnError) {\r\n const {fabricatorState, contractSigningState} = store.getState();\r\n const needContractSignDocument = IS_OFFLINE_MODE\r\n && shouldUseContractSigning(fabricatorState.settings, contractSigningState.contractsList);\r\n if (needContractSignDocument) {\r\n buttons.push({\r\n text: \"messageBox.fillContract\",\r\n color: \"green\",\r\n click: () => {\r\n closeMessageBox();\r\n // store.dispatch(showContractSigning(true, () => {}));\r\n if (afterContractSignCallback) {\r\n store.dispatch(setAfterContractSignCallback(afterContractSignCallback))\r\n }\r\n hashHistory.push(ROUTES.contract);\r\n }\r\n })\r\n }\r\n }\r\n if (retryConnectionFunction) {\r\n buttons.push({\r\n text: \"messageBox.retryConnection\",\r\n color: \"green\",\r\n click: () => {\r\n closeMessageBox();\r\n retryConnectionFunction();\r\n }\r\n })\r\n }\r\n }\r\n store.dispatch({\r\n type: types.CHANGE_MESSAGE_BOX,\r\n payload: {\r\n visible: true,\r\n title,\r\n message,\r\n error: message !== \"noInternetText\",\r\n newStyles: true,\r\n buttons\r\n }\r\n });\r\n};\r\n\r\nexport const renderMessagePopup = (message) => {\r\n let title = \"messageBox.defaultTitle\";\r\n if (_checkNetworkErrorMessage(message)) {\r\n message = \"noInternetText\";\r\n title = \"noInternetTitle\";\r\n }\r\n store.dispatch({\r\n type: types.CHANGE_MESSAGE_BOX,\r\n payload: {\r\n visible: true,\r\n title,\r\n message,\r\n error: false,\r\n inline: false,\r\n buttons: [{\r\n text: \"messageBox.buttonOk\",\r\n color: \"blue\",\r\n click: () => {\r\n store.dispatch({\r\n type: types.CHANGE_MESSAGE_BOX,\r\n payload: {\r\n visible: false,\r\n }\r\n });\r\n }\r\n }]\r\n }\r\n });\r\n};\r\n\r\nexport const renderAccountNotActivatedErrorPopup = (message, email) => {\r\n store.dispatch({\r\n type: types.CHANGE_MESSAGE_BOX,\r\n payload: {\r\n visible: true,\r\n message,\r\n error: true,\r\n inline: false,\r\n buttons: [{\r\n text: \"userPopup.messageBox.resendActivationEmailText\",\r\n color: \"green\",\r\n click: () => {\r\n store.dispatch(hideUserPopup());\r\n loaderEnable(\"loader.resendActivationLinkText\");\r\n JsonApi.resendActivationEmail(email)\r\n .then(() => {\r\n loaderDisable();\r\n renderMessagePopup(\"userPopup.messageBox.resendActivationEmailSuccess\");\r\n });\r\n }\r\n }, {\r\n text: \"messageBox.buttonOk\",\r\n color: \"red\",\r\n click: () => {\r\n store.dispatch(hideUserPopup());\r\n }\r\n }]\r\n }\r\n })\r\n};\r\n\r\nexport const renderConfirmPopup = (confirmPopupType, tag, confirmPopupOpened = true) => {\r\n store.dispatch({\r\n type: types.TOGGLE_CONFIRM_POPUP,\r\n payload: {\r\n confirmPopupOpened,\r\n confirmPopupType,\r\n confirmPopupTag: {...tag}\r\n }\r\n });\r\n};\r\n","import store from \"../../../../../store\";\r\nimport {updateSQFTCalculations} from \"../../../../../actions/sqftFunctions\";\r\nconst SqftStore = {\r\n viewGL: null,\r\n ctxCenter: {\r\n x: 0,\r\n y: 0,\r\n },\r\n canvas: {\r\n width: 0,\r\n height: 0\r\n },\r\n radius: {\r\n arcLength: 0,\r\n angle: 0,\r\n clickedEdgeButton: null,\r\n featureId: null,\r\n },\r\n edgeFeatureGroup: null,\r\n edgeFeatures: [],\r\n isSlabMode: () => {\r\n const reduxState = store.getState();\r\n return reduxState.sqftSlabState.isShowSlabTool;\r\n },\r\n isRegularMode: () => {\r\n const reduxState = store.getState();\r\n return !reduxState.sqftSlabState.isShowSlabTool;\r\n },\r\n updateCalculations: () => {\r\n const state = store.getState();\r\n const updateCalculations = state.sqftState.updateCalculations;\r\n store.dispatch(updateSQFTCalculations(updateCalculations + 1));\r\n },\r\n getShapeType: () => {\r\n //todo\r\n },\r\n seamHistory: [],\r\n setSeamHistory: function(seamHistory) {\r\n this.seamHistory = seamHistory\r\n },\r\n addSeamHistory: function(shapeId) {\r\n this.seamHistory.push(shapeId)\r\n },\r\n getSeamHistory: function() {\r\n return this.seamHistory;\r\n }\r\n};\r\n\r\nexport default SqftStore\r\n","import invert from 'lodash/invert';\r\n\r\nimport {splitFeatureName} from \"../../../misc/utils\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\nimport {Part} from \"./part\";\r\nimport store from '../../../store';\r\nimport {LayoutAbbreviation, LayoutType} from \"./constants\";\r\nimport {getFeatureIsLocked} from \"../../../misc/helpers\";\r\nimport {SIDE_POSITIONS} from \"../../look/core/constants\";\r\n\r\n/**\r\n * Used for Complex parts such as Vanity, to perform some base functionality for related items\r\n */\r\nexport class IntermediatePart extends Part {\r\n\r\n constructor(isChild) {\r\n super(false, isChild);\r\n this.disabled = false;\r\n this.defaultDisabled = false; // used after reset click\r\n this.canBeDisabled = false;\r\n }\r\n\r\n /**\r\n * This will be called on feature creation\r\n * @param dbFeature\r\n */\r\n load(dbFeature) {\r\n if (this.layerPositions) {\r\n dbFeature.metaData[\"layerPosition\"] = dbFeature.metaData[\"Side\"] && dbFeature.metaData[\"Side\"][0] !== \"0\"\r\n ? dbFeature.metaData[\"Side\"][0]\r\n : SIDE_POSITIONS[0];\r\n const partNumber = dbFeature.metaData[\"layerPosition\"] === SIDE_POSITIONS[0] ? 1 : 2;\r\n const instance = new this.constructor(false, partNumber);\r\n return this.load_(dbFeature, instance, true, partNumber === 1 ? 'features' : 'featuresParts');\r\n }\r\n return this.load_(dbFeature, new this.constructor());\r\n }\r\n\r\n /**\r\n * This will be called by the underlying vanity feature with a concrete instance of the part\r\n * @param dbFeature\r\n * @param part {Part}\r\n * @param setParent {boolean}\r\n * @param features\r\n */\r\n load_(dbFeature, part, setParent = true, features = 'features') {\r\n\r\n const featureList = features + \"List\";\r\n\r\n const {displayName} = dbFeature;\r\n let {featureName} = splitFeatureName(displayName);\r\n if (!featureName && dbFeature.groupName && dbFeature.displayName) {\r\n featureName = dbFeature.displayName.replace(dbFeature.groupName + \" - \", \"\")\r\n }\r\n // console.log('displayName:', displayName);\r\n\r\n if (setParent) {\r\n part.getParent = () => this;\r\n if (dbFeature.galleryImages) {\r\n const featured = dbFeature.galleryImages.find(galImage => galImage.featured);\r\n if (featured) {\r\n this.featuredImage = featured.url\r\n }\r\n dbFeature.galleryImages = dbFeature.galleryImages.sort((a, b) => b.default - a.default)\r\n }\r\n }\r\n\r\n if (!dbFeature.sharedFeatureName) {\r\n console.error(\"No sharedFeatureName property:\", dbFeature);\r\n }\r\n\r\n part.partName = featureName;\r\n part.metaData = dbFeature.metaData || {};\r\n\r\n if (dbFeature.s3Bindings && dbFeature.s3Bindings.length) {\r\n // dbFeature.s3Bindings = dbFeature.s3Bindings.filter(binding => binding.visualizer === \"Fireplace\")\r\n }\r\n\r\n part.dbFeature = dbFeature || {};\r\n if (!part.dbFeature.filterValueIDs) {\r\n part.dbFeature.filterValueIDs = {}\r\n }\r\n part.notAvailableInVisualizer = !dbFeature.s3Bindings || !dbFeature.s3Bindings.length;\r\n\r\n if (part.metaData.RoomLayout) {\r\n const roomLayout = part.metaData.RoomLayout;\r\n if (roomLayout.includes(LayoutAbbreviation.All)) {\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this[featureList][layoutName].push(part);\r\n })\r\n } else if (Array.isArray(roomLayout) && roomLayout.length) {\r\n roomLayout.forEach(roomLayoutAbbreviation => {\r\n const layoutName = invert(LayoutAbbreviation)[roomLayoutAbbreviation];\r\n if (layoutName) { // Prevent bad roomLayout Metadata\r\n this[featureList][layoutName].push(part);\r\n }\r\n });\r\n } else { // single value\r\n const layoutName = invert(LayoutAbbreviation)[roomLayout];\r\n if(layoutName) {\r\n this[featureList][layoutName].push(part);\r\n }\r\n }\r\n }\r\n\r\n if (part.notAvailableInVisualizer || !part.metaData.RoomLayout) {\r\n part.notAvailableInVisualizer = true;\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this[featureList][layoutName].push(part);\r\n })\r\n }\r\n\r\n // Object.keys(LayoutType).forEach(layoutName => {\r\n // this[features+\"List\"][layoutName].push(part);\r\n // });\r\n\r\n this.loadFeatureCommon(part);\r\n\r\n return part\r\n }\r\n\r\n getActiveFeatureConditions() {\r\n return this.getArrayOfConditions()\r\n }\r\n\r\n // navigationSubItems(filters, searchText, forFeature, filterGroups, firstOpenedFeature, firstOpenedConditions) { // to do\r\n navigationSubItems(filters, searchText) {\r\n // const featuresList = (forFeature && forFeature.metaData.layerPosition === SIDE_POSITIONS[1]) ? this.featuresParts : this.features;\r\n const filteredAvailableFeatures = this.getFeaturesBySearchText(this.getFilteredFeaturesByFilters(filters, this.features), searchText);\r\n let featuresToDisplay = this.navigationSubItemsWithFilterMultipleConditions(this.getArrayOfConditions(true), filteredAvailableFeatures);\r\n // console.log(\"filterGroups\", filterGroups);\r\n return this.returnUniqueNavFeatures(featuresToDisplay)\r\n }\r\n\r\n navigationSubItemsWithFilter(propName, propValue, featuresToCheck = this.features) {\r\n return featuresToCheck.filter((feature) => {\r\n return feature.matchesMetaForCondition(propName, propValue);\r\n }).map(_ => new DesignNavigationItem(_.featureName, _));\r\n }\r\n\r\n navigationSubItemsWithFilterMultipleConditions(arrayOfConditions, featuresToCheck = this.features) {\r\n // console.log('arrayOfConditions', arrayOfConditions);\r\n // console.log('featuresToCheck', featuresToCheck);\r\n return featuresToCheck.filter((feature) => {\r\n return feature.notAvailableInVisualizer || arrayOfConditions.every((conditionObject) => {\r\n const {propName, propValue} = conditionObject;\r\n return feature.matchesMetaForCondition(propName, propValue);\r\n });\r\n })\r\n }\r\n\r\n setDefault(layout, setNotInVisFeature = false) {\r\n this.setFeatureGroupDefault(layout, setNotInVisFeature)\r\n }\r\n\r\n setLayerPositions = (activeFeature = this.activeFeature) => {\r\n if (!activeFeature) {\r\n return\r\n }\r\n const layout = this.getParent().layout;\r\n const conditions = this.getArrayOfConditions();\r\n if (layout && this.defaultLayerLayoutPositions && this.defaultLayerLayoutPositions[layout.type]) {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if (this.defaultLayerLayoutPositions[layout.type] === key\r\n && (!this.layerPositions[key] || !this.layerPositions[key].matchesMetaForArrayOfConditions(conditions))) {\r\n this.layerPositions[key] = activeFeature;\r\n } else if (activeFeature.dbFeature.metaData[\"layerPosition\"] !== key) {\r\n this.layerPositions[key] = null;\r\n }\r\n })\r\n } else {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if (layout.initialized) {\r\n if ((activeFeature.dbFeature.metaData[\"layerPosition\"] === key)\r\n && (this.layerPositions[key] && !this.layerPositions[key].matchesMetaForArrayOfConditions(conditions))) {\r\n this.layerPositions[key] = activeFeature;\r\n // } else if (this.setAllLayerPositions) {\r\n } else if (this.layerPositions[key]) { // here we have to change vanity cabinet to console for example\r\n const matchingPositionFeature = this.getMatchingPositionFeature(key);\r\n if (matchingPositionFeature) {\r\n this.layerPositions[key] = matchingPositionFeature;\r\n }\r\n }\r\n } else { // first time we should set everything by the default! // missing layers issue\r\n if ((activeFeature.dbFeature.metaData[\"layerPosition\"] === key)\r\n && (!this.layerPositions[key] || !this.layerPositions[key].matchesMetaForArrayOfConditions(conditions))) {\r\n this.layerPositions[key] = activeFeature;\r\n // } else if (this.setAllLayerPositions) {\r\n } else {\r\n const matchingPositionFeature = this.getMatchingPositionFeature(key);\r\n if (matchingPositionFeature) {\r\n this.layerPositions[key] = matchingPositionFeature;\r\n }\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n toggleLayerPositions() {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n this.layerPositions[key] = this.disabled ? null : this.getMatchingPositionFeature(key)\r\n })\r\n }\r\n\r\n getMatchingPositionFeature = (position = \"\", fromFeature = this.activeFeature, fromLayout = null) => {\r\n if (fromFeature) { //just in case\r\n const name1 = fromFeature.getSplittedFeatureName();\r\n let arrayOfConditions = this.getArrayOfConditions();\r\n if (fromFeature.metaData[\"SkuName\"]) {\r\n arrayOfConditions.push({\r\n propName: \"SkuName\",\r\n propValue: fromFeature.metaData[\"SkuName\"]\r\n })\r\n }\r\n if (fromLayout) {\r\n let roomLayoutMeta = arrayOfConditions.find(condition => condition.propName === \"RoomLayout\");\r\n let roomSceneMeta = arrayOfConditions.find(condition => condition.propName === \"RoomScene\");\r\n if (roomLayoutMeta) {\r\n roomLayoutMeta.propValue = fromLayout.getCurrentLayoutAbbreviation();\r\n }\r\n if (roomSceneMeta) {\r\n roomSceneMeta.propValue = fromLayout.scene;\r\n }\r\n }\r\n const skuNamesPartIds = [\"shower_door\", \"walk_in_tub\", \"shower_pan_combo\"];\r\n const whereToFind = (!this.layerPositions || (position === Object.keys(this.layerPositions)[0])) ? this.features : this.featuresParts;\r\n return whereToFind.find((feature) => {\r\n return (skuNamesPartIds.includes(this.partId) || name1 === feature.getSplittedFeatureName())\r\n && feature.matchesMetaForArrayOfConditions(arrayOfConditions) && feature.metaData[\"layerPosition\"] === position\r\n });\r\n }\r\n return null\r\n };\r\n\r\n getArrayOfConditions() {\r\n const layout = this.getParent().layout;\r\n return [{\r\n propName: 'RoomLayout',\r\n propValue: layout.getCurrentLayoutAbbreviation()\r\n }, {\r\n propName: 'RoomScene',\r\n propValue: layout.scene\r\n }];\r\n }\r\n\r\n setLayers(layout) {\r\n if (this.activeFeature && (this.activeFeature.matchesMetaForArrayOfConditions(this.getArrayOfConditions()))) {\r\n if (this.hasAdditionalParts) {\r\n this.checkIfFeaturePartIsMatching();\r\n }\r\n return this._setLayers(layout);\r\n }\r\n this.setDefault(layout);\r\n return this._setLayers(layout);\r\n }\r\n showLayerPositionsModal() {\r\n return false\r\n }\r\n\r\n clickFromAllWalls(ignoreLocked) {\r\n if (this && this.dbFeature && this.dbFeature.sharedFeatureName) {\r\n console.log(`${this.partId}:`, this.dbFeature.sharedFeatureName);\r\n }\r\n this.handleClick(ignoreLocked, \"all_walls\");\r\n }\r\n\r\n tryToSetTheSameFeature(filteredFeatures = [], partName = \"\") {\r\n if (this.activeFeature && this.activeFeature.partName) {\r\n let splittedFromTheLayoutName = partName\r\n ? this.removeLayoutFromPartName(partName)\r\n : this.activeFeature.getMatchingFeatureName();\r\n this.activeFeature = filteredFeatures.find(feature => {\r\n return feature.getMatchingFeatureName() === splittedFromTheLayoutName\r\n });\r\n if (this.activeFeature) {\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n\r\n /**\r\n * @param ignoreLocked {boolean} // false by the default, is used by wizard ONLY\r\n */\r\n handleClick(ignoreLocked = false) {\r\n const parent = this.getParent();\r\n const {activeQuoteIndex} = store.getState().quotesState;\r\n parent.firstClick[activeQuoteIndex] = true; // allow to show active item\r\n const featureIsLocked = getFeatureIsLocked(this, ignoreLocked);\r\n if (featureIsLocked) {\r\n parent.activeLockedFeature = this;\r\n } else {\r\n if (parent.activeLockedFeature) {\r\n parent.activeLockedFeature = null;\r\n }\r\n this.featureClick();\r\n }\r\n }\r\n\r\n featureClick() {\r\n const parent = this.getParent();\r\n parent.placeholderChanged = true;\r\n if (this.notAvailableInVisualizer) {\r\n parent.activeNotInVisualizerFeature = this; // do not change the activeFeature (in order to keep the layer)\r\n } else if (parent.activeNotInVisualizerFeature) {\r\n parent.activeNotInVisualizerFeature = null; // remove it from other searches and so on\r\n parent.activeFeature = this;\r\n } else {\r\n parent.activeFeature = this;\r\n }\r\n this.featureClicked();\r\n }\r\n\r\n hideLayers() {\r\n if (this.activeFeature) {\r\n this.activeFeature.layer.src = '';\r\n }\r\n if (Array.isArray(this.activeFeatureParts) && this.activeFeatureParts.length) {\r\n this.activeFeatureParts.forEach((activeFeaturePart) => {\r\n if (activeFeaturePart && activeFeaturePart.layer) {\r\n activeFeaturePart.layer.src = '';\r\n }\r\n })\r\n }\r\n if (this.placeholderFeature) {\r\n this.placeholderFeature.layer.src = '';\r\n }\r\n if (this.layerPositions) {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if (this.layerPositions[key]) {\r\n this.layerPositions[key].layer.src = '';\r\n }\r\n })\r\n }\r\n }\r\n\r\n setZIndex(zIndexes) {\r\n\r\n const getZIndex = (feature, partId = null) => {\r\n return feature.metaData[\"ZSorting\"] ? feature.metaData[\"ZSorting\"] * 1000 : zIndexes[partId || this.partId];\r\n }\r\n\r\n if (this.layerPositions) {\r\n Object.keys(this.layerPositions).forEach((key, keyIndex) => {\r\n const feature = this.layerPositions[key];\r\n if (feature) {\r\n feature.layer.zIndex = getZIndex(feature) + keyIndex*10;\r\n }\r\n })\r\n } else if (zIndexes && this.activeFeature) {\r\n this.activeFeature.layer.zIndex = getZIndex(this.activeFeature);\r\n if (this.hasAdditionalParts && this.activeFeatureParts && this.activeFeatureParts.length) {\r\n this.activeFeatureParts.forEach((activeFeaturePart, keyIndex) => {\r\n activeFeaturePart.layer.zIndex = getZIndex(activeFeaturePart, this.additionalPartPartId) + (keyIndex + 1) * 10;\r\n });\r\n }\r\n }\r\n }\r\n\r\n removeEdgeFromPartName(partName) {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n const edgeFilterGroup = filterGroups.find(group => group.name === \"Edge\" || group.name === \"Edge Profile\");\r\n if (edgeFilterGroup && edgeFilterGroup.values && edgeFilterGroup.values.length) {\r\n const edgeFilterGroupValues = edgeFilterGroup.values.sort((a,b) => {\r\n return a.value && b.value && (b.value.length - a.value.length)\r\n }); // 1st should be \"Full Bullnose\", then simple \"Bullnose\"\r\n edgeFilterGroupValues.forEach((filterGroupValue) => { // arrayOf {id: 293, value: \"Eased\", displayText: \"Eased\", parent_id: null, icon: \"\", …}\r\n partName = partName.split(\" \"+filterGroupValue.value).join(\"\");\r\n });\r\n }\r\n return partName\r\n }\r\n\r\n getCountertopGroupsSplittedFeatureName = () => {\r\n if (this._countertopGroupsCustomDisplayName == null) {\r\n this._countertopGroupsCustomDisplayName = this.dbFeature.sharedFeatureName;\r\n }\r\n return this._countertopGroupsCustomDisplayName\r\n };\r\n\r\n getSplittedFeatureName = () => {\r\n if (this._customDisplayName == null) {\r\n this._customDisplayName = this.dbFeature.sharedFeatureName || this.partName || \"\";\r\n }\r\n return this._customDisplayName\r\n };\r\n\r\n getMatchingFeatureName = () => {\r\n return this.getSplittedFeatureName()\r\n };\r\n\r\n getModuleFeatureName = () => {\r\n // return this.partName.split(\" M_\")[0];\r\n return this.partName.split(\" M\")[0];\r\n };\r\n\r\n featureIsMatchingFilters(currentFeature, activeFilters, filters = []) {\r\n return filters.every(filter => {\r\n return activeFilters[filter.id]\r\n && currentFeature.dbFeature.filterValueIDs[filter.id]\r\n && currentFeature.dbFeature.filterValueIDs[filter.id].includes(activeFilters[filter.id][0])\r\n })\r\n }\r\n\r\n getActiveFeaturePartsAccordingToActiveFeature(fromFeature = this.activeFeature, activeFeatureConditions = []) {\r\n let activeFeatureParts = [];\r\n if (fromFeature && fromFeature.partNumber) {\r\n let activeFeaturePart;\r\n const name1 = fromFeature.getSplittedFeatureName();\r\n // console.log(\"name1\", name1);\r\n let arrayOfConditions = activeFeatureConditions.length\r\n ? activeFeatureConditions\r\n : this.getActiveFeatureConditions(fromFeature);\r\n // if (this.partId === \"right_wall\") {\r\n // arrayOfConditions = arrayOfConditions.filter(condition => condition.propName !== \"MirrorSize\");\r\n // }\r\n if (this.getAdditionalPartsConditions) {\r\n arrayOfConditions = this.getAdditionalPartsConditions(arrayOfConditions); // modify or extend parts conditions\r\n }\r\n activeFeatureParts = this.featuresParts.filter((feature) => name1 === feature.getSplittedFeatureName());\r\n // console.log(\"this.featuresParts\", this.featuresParts);\r\n // console.log(\"activeFeatureParts\", activeFeatureParts);\r\n if (activeFeatureParts.length) {\r\n activeFeaturePart = activeFeatureParts.find((feature) => {\r\n return feature.matchesMetaForArrayOfConditions(arrayOfConditions)\r\n });\r\n if (!activeFeaturePart) {\r\n activeFeaturePart = activeFeatureParts[0];\r\n }\r\n }\r\n activeFeatureParts = activeFeaturePart ? [activeFeaturePart] : [];\r\n activeFeatureParts.forEach((activeFeaturePart) => {\r\n activeFeaturePart.disabled = this.disabled\r\n });\r\n }\r\n return activeFeatureParts\r\n }\r\n\r\n checkIfFeaturePartIsMatching() {\r\n if (this.activeFeatureParts && this.activeFeatureParts.length) {\r\n const activeFeatureConditions = this.getActiveFeatureConditions();\r\n const name1 = this.activeFeature.getSplittedFeatureName();\r\n const activeFeaturePart = this.activeFeatureParts[0];\r\n if (!(activeFeaturePart.matchesMetaForArrayOfConditions(activeFeatureConditions)\r\n && name1 === activeFeaturePart.getSplittedFeatureName())) {\r\n this.activeFeatureParts = this.setActiveFeatureParts(this.activeFeature, activeFeatureConditions);\r\n }\r\n } else {\r\n this.activeFeatureParts = this.setActiveFeatureParts();\r\n }\r\n }\r\n\r\n setActiveFeatureParts(fromFeature = this.activeFeature, activeFeatureConditions = []) {\r\n return this.getActiveFeaturePartsAccordingToActiveFeature(fromFeature, activeFeatureConditions);\r\n }\r\n\r\n}\r\n","import {Part} from \"../part\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {vanityThumbnail} from \"../../../bvComponent/core/assets\";\r\nimport {METADATA, VANITY_TYPES, LOOK_ROOM_TYPES} from \"../constants\";\r\n\r\nimport VanityHandle from \"../subparts/vanity/vanityHandle\";\r\nimport VanityCabinet from \"../subparts/vanity/vanityCabinet\";\r\nimport VanityCountertop from \"../subparts/vanity/vanityCountertop\";\r\nimport VanityBacksplash from \"../subparts/vanity/vanityBacksplash\";\r\nimport Mirror from \"../subparts/vanity/mirror\";\r\nimport Sink from \"../subparts/vanity/sink\";\r\nimport VanityFaucet from \"../subparts/vanity/faucet\";\r\nimport Ptrap from \"../subparts/vanity/pTrap\";\r\nimport VanityWashstand from \"../subparts/vanity/vanityWashstand\";\r\nimport VanityMiddle from \"../subparts/vanity/vanityMiddle\";\r\nimport DrawerPull from \"../subparts/vanity/drawerPull\";\r\nimport WSTowelBar from \"../subparts/vanity/wsTowelBar\";\r\nimport VanityLegs from \"../subparts/vanity/vanityLegs\";\r\nimport VanityConsole from \"../subparts/vanity/vanityConsole\";\r\nimport {getSkuWithoutDot} from \"../../lookNavigation/lookFunctions2\";\r\nimport {getCurrentRoomType} from \"../../../appLayout\";\r\nimport DoorHandle from \"../subparts/vanity/doorHandle\";\r\nimport DrawerHandle from \"../subparts/vanity/drawerHandle\";\r\n\r\nexport class Vanity extends Part {\r\n static id = 'Vanity';\r\n\r\n static Types = {\r\n Complete: 'Complete',\r\n Custom: 'Custom'\r\n };\r\n\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'Vanity';\r\n this.translateId = \"visualizer.bathroom.vanity\";\r\n this.partThumbnail = vanityThumbnail;\r\n this.activeSubType_ = Vanity.Types.Custom;\r\n this.relatedItems = [];\r\n this.placeholdersNeeded = false; // only Vanity property\r\n\r\n // vanity parts\r\n this.vanityCabinet = null;\r\n this.completeVanity = null;\r\n this.countertop = null;\r\n this.sink = null;\r\n this.faucet = null;\r\n this.vanityBacksplash = null;\r\n this.vanityHandle = null;\r\n this.mirror = null;\r\n this.vanityPTrap = null;\r\n this.vanityWashstand = null;\r\n this.vanityMiddle = null;\r\n this.drawerPull = null;\r\n this.wsTowelBar = null;\r\n this.vanityLegs = null;\r\n this.vanityLegs = null;\r\n this.vanityConsole = null;\r\n this.doorHandle = null;\r\n this.drawerHandle = null;\r\n\r\n this.vanity_type = VANITY_TYPES.vanity_cabinet;\r\n this.relatedGroupNames = [\"Sink\", \"Mirror\", \"Countertop\", \"Faucet\", \"VanityBacksplash\", \"Vanity Handle\", \"Vanity\",\r\n \"Ptrap\", \"Washstand\", \"Vanity Middle\", \"Drawer Pull\", \"WS Towel Bar\", \"Vanity Legs\", \"Console\", \"Door Handle\",\r\n \"Drawer Handle\"];\r\n }\r\n\r\n load(dbFeature, loadFeature = true) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Sink\":\r\n relatedItemName = \"sink\";\r\n RelatedItemClass = Sink;\r\n break;\r\n case \"Mirror\":\r\n relatedItemName = \"mirror\";\r\n RelatedItemClass = Mirror;\r\n break;\r\n case \"Countertop\":\r\n case \"Vanitie Countertop\":\r\n relatedItemName = \"countertop\";\r\n RelatedItemClass = VanityCountertop;\r\n break;\r\n case \"Faucet\":\r\n relatedItemName = \"faucet\";\r\n RelatedItemClass = VanityFaucet;\r\n break;\r\n case \"VanityBacksplash\":\r\n case \"BackSplash\":\r\n case \"Backsplash\":\r\n relatedItemName = \"vanityBacksplash\";\r\n RelatedItemClass = VanityBacksplash;\r\n break;\r\n case \"Vanity Handle\":\r\n relatedItemName = \"vanityHandle\";\r\n RelatedItemClass = VanityHandle;\r\n break;\r\n case \"Door Handle\":\r\n relatedItemName = \"doorHandle\";\r\n RelatedItemClass = DoorHandle;\r\n break;\r\n case \"Drawer Handle\":\r\n relatedItemName = \"drawerHandle\";\r\n RelatedItemClass = DrawerHandle;\r\n break;\r\n case \"Vanity\":\r\n case \"Vanitie\": {\r\n relatedItemName = \"vanityCabinet\";\r\n RelatedItemClass = VanityCabinet;\r\n break;\r\n }\r\n case \"Ptrap\": {\r\n relatedItemName = \"vanityPTrap\";\r\n RelatedItemClass = Ptrap;\r\n break;\r\n }\r\n case \"Washstand\": {\r\n relatedItemName = \"vanityWashstand\";\r\n RelatedItemClass = VanityWashstand;\r\n break;\r\n }\r\n case \"Vanity Middle\": {\r\n relatedItemName = \"vanityMiddle\";\r\n RelatedItemClass = VanityMiddle;\r\n break;\r\n }\r\n case \"Drawer Pull\": {\r\n relatedItemName = \"drawerPull\";\r\n RelatedItemClass = DrawerPull;\r\n break;\r\n }\r\n case \"WS Towel Bar\": {\r\n relatedItemName = \"wsTowelBar\";\r\n RelatedItemClass = WSTowelBar;\r\n break;\r\n }\r\n case \"Vanity Legs\": {\r\n relatedItemName = \"vanityLegs\";\r\n RelatedItemClass = VanityLegs;\r\n break;\r\n }\r\n case \"Console\": {\r\n relatedItemName = \"vanityConsole\";\r\n RelatedItemClass = VanityConsole;\r\n break;\r\n }\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n if (relatedItemName === \"sink\") {\r\n const faucetIndex = this.relatedItems.findIndex(relItem => relItem.partName === 'Faucet');\r\n faucetIndex ? this.relatedItems.splice(faucetIndex, 0, this.sink) : this.relatedItems.push(this.sink);\r\n } else if (relatedItemName === \"completeVanity\") {\r\n this.relatedItems.unshift(this.completeVanity); // cabinet needs to be first in the list.\r\n } else if (relatedItemName === \"vanityCabinet\") {\r\n this.relatedItems.unshift(this.vanityCabinet); // cabinet needs to be first in the list.\r\n } else {\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n if (loadFeature) {\r\n this[relatedItemName].load(dbFeature);\r\n }\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n getRelatedItems() {\r\n return this.relatedItems.filter(item => item.visible.includes(this.activeSubType_));\r\n }\r\n\r\n subTypes() {\r\n return this.vanityCabinet && this.completeVanity ? [Vanity.Types.Custom, Vanity.Types.Complete] : [];\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return this.activeSubType_ === Vanity.Types.Complete;\r\n }\r\n\r\n activeSubType() {\r\n return this.activeSubType_;\r\n }\r\n\r\n subParts() {\r\n const relatedItems = this.getRelatedItems();\r\n const excluded = [];\r\n const vanityPart = relatedItems.find(navItem => navItem.partId === \"vanity_cabinet\");\r\n if (vanityPart && vanityPart.activeFeature\r\n && vanityPart.activeFeature.metaData[\"VanityHandle\"]\r\n && vanityPart.activeFeature.metaData[\"VanityHandle\"].includes(\"None\")) {\r\n excluded.push(\"vanity_handle\")\r\n }\r\n return relatedItems\r\n .filter(item => !excluded.includes(item.partId))\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n // subPartsWithAccentWall() {\r\n // const vanityAccent = this.layout.parts.Walls.vanityAccent;\r\n // return [new DesignNavigationItem(vanityAccent.partName, vanityAccent),\r\n // ...this.getRelatedItems().map(_ => new DesignNavigationItem(_.partName, _))];\r\n // }\r\n\r\n handleSubTypeClick(subType) {\r\n this.activeSubType_ = subType;\r\n this.getRelatedItems().forEach((relatedItem) => {\r\n if (!relatedItem.activeFeature) {\r\n relatedItem.setDefault()\r\n }\r\n });\r\n }\r\n\r\n setDefaultPartAfterSubTypeClick() {\r\n return this.subParts()[0]\r\n }\r\n\r\n setDefault(layout) {\r\n this.getRelatedItems().forEach(_ => _.setDefault(layout));\r\n }\r\n\r\n counterTopSize(forFeatureGroup) {\r\n let vanitySize = this.getCounterTopSize() || \"24\"; // we have left and right mirror for \"L\" & \"R\" or single for \"C\"\r\n if ((vanitySize === \"72\" || (Array.isArray(vanitySize) && vanitySize[0] === (\"72\")))\r\n && forFeatureGroup && !(forFeatureGroup.partId === \"vanity_backsplash\" || forFeatureGroup.partId === \"vanity_countertop\")) {\r\n return [\"64\"]; // use 64 for everything except counterop and backsplash\r\n }\r\n return vanitySize\r\n }\r\n\r\n getCounterTopSize() {\r\n const currentVanityTypeFeatureGroup = this.relatedItems.find(relItem => relItem.partId === this.vanity_type);\r\n if (currentVanityTypeFeatureGroup && !currentVanityTypeFeatureGroup.activeFeature) {\r\n this.vanityCabinet.setDefault()\r\n }\r\n return (currentVanityTypeFeatureGroup && currentVanityTypeFeatureGroup.activeFeature)\r\n ? currentVanityTypeFeatureGroup.activeFeature.dbFeature.metaData[\"VanitySize\"]\r\n : null;\r\n }\r\n\r\n isDoubleVanity(feature = null) {\r\n if (this.vanity_type !== VANITY_TYPES.vanity_cabinet || !this.vanityCabinet) {\r\n return false\r\n }\r\n const checkFeature = feature || this.vanityCabinet.activeFeature;\r\n return checkFeature && checkFeature.metaData[\"VanityWidth\"] && (checkFeature.metaData[\"VanityWidth\"] === 64)\r\n }\r\n\r\n toggleVanityParts(disabled) {\r\n this.getRelatedItems().forEach(relItem => {\r\n if (relItem.partId === \"vanity_sink\" || relItem.partId === \"vanity_faucet\"\r\n || relItem.partId === \"vanity_countertop\" || relItem.partId === \"vanity_cabinet\"\r\n || relItem.partId === \"vanity_handle\" || relItem.partId === \"vanity_backsplash\") {\r\n relItem.disabled = disabled;\r\n }\r\n });\r\n }\r\n\r\n getActiveSkuFromRelatedItem(partId) {\r\n const relatedItem = this.relatedItems.find(relItem => relItem.partId === partId);\r\n return relatedItem && relatedItem.activeFeature && relatedItem.activeFeature.dbFeature.sharedFeatureName\r\n ? getSkuWithoutDot(relatedItem.activeFeature.dbFeature.sharedFeatureName)\r\n : null\r\n }\r\n\r\n getActiveMatchingMetaFromRelatedItem(partId, metaName = \"MatchingFeature\") {\r\n const relatedItem = this.relatedItems.find(relItem => relItem.partId === partId);\r\n return relatedItem && relatedItem.activeFeature\r\n ? relatedItem.activeFeature.metaData[metaName]\r\n : null\r\n }\r\n\r\n setCustomVanitySinkMetaData = (feature) => {\r\n switch (feature.dbFeature.lixilProductSubCategory) {\r\n case \"Pedestal Bathroom Sinks\":\r\n return \"Pedestal\"\r\n case \"Above Counter Sinks with Vessel\":\r\n case \"Countertop Bathroom Sinks\":\r\n return \"Top Mount\"\r\n case \"Undermount Bathroom Sinks\":\r\n case \"Undermount Sinks\":\r\n return \"Undermount\"\r\n default:\r\n return \"\"\r\n }\r\n }\r\n\r\n setSpecificRules(isAsBathroomState = false) {\r\n console.log(\"setSpecificRules\", isAsBathroomState);\r\n if (getCurrentRoomType(this.layout) === LOOK_ROOM_TYPES.as || isAsBathroomState) {\r\n const sinkFeatureGroup = this.relatedItems.find(relItem => relItem.partId === \"vanity_sink\");\r\n this.relatedItems.forEach(relItem => {\r\n Object.keys(relItem.featuresList).forEach(layoutName => {\r\n [...relItem.featuresList[layoutName], ...relItem.featuresPartsList[layoutName]].map(feature => {\r\n feature.dbFeature.metaData[\"FeatureSku\"] = [getSkuWithoutDot(feature.dbFeature.sharedFeatureName)];\r\n if (relItem.partId === \"vanity_sink\" && Array.isArray(feature.dbFeature.metaData[\"MatchingFeature\"])) {\r\n feature.dbFeature.metaData[\"CustomSinkSubCategory\"] = this.setCustomVanitySinkMetaData(feature);\r\n feature.metaData[\"CustomSinkSubCategory\"] = this.setCustomVanitySinkMetaData(feature);\r\n let sinkTypes = [];\r\n feature.dbFeature.metaData[\"MatchingFeature\"].forEach(currentSku => {\r\n Object.keys(VANITY_TYPES).forEach(partId => {\r\n const featureGroup = this.relatedItems.find(relItem => relItem.partId === partId);\r\n if (featureGroup) {\r\n const feature = [...featureGroup.featuresList[layoutName], ...featureGroup.featuresPartsList[layoutName]].find(testFeature => {\r\n return getSkuWithoutDot(testFeature.dbFeature.sharedFeatureName) === currentSku\r\n });\r\n if (feature) {\r\n sinkTypes.push(feature.partId)\r\n }\r\n } else {\r\n console.log(\"no feature group found to apply sink metadata\", partId);\r\n }\r\n })\r\n });\r\n if (feature.dbFeature.metaData[\"MatchingFeature\"] && feature.dbFeature.metaData[\"MatchingFeature\"].includes(METADATA.NO)) {\r\n sinkTypes.push(VANITY_TYPES.vanity_cabinet);\r\n feature.dbFeature.metaData[\"FeatureSku\"] = [METADATA.ALL];\r\n feature.metaData[\"FeatureSku\"] = [METADATA.ALL];\r\n }\r\n // if (!sinkTypes.length && feature.dbFeature.metaData[\"MountType\"] && feature.dbFeature.metaData[\"MountType\"].includes('ST')) {\r\n // sinkTypes.push(METADATA.ALL)\r\n // }\r\n feature.dbFeature.metaData[\"CustomVanityType\"] = sinkTypes; // create custom metadata\r\n feature.metaData[\"CustomVanityType\"] = sinkTypes; // create custom metadata\r\n }\r\n if (relItem.partId === \"vanity_cabinet\" && Array.isArray(feature.dbFeature.metaData[\"MatchingFeature\"]) && sinkFeatureGroup) {\r\n let sinkTypes = [];\r\n feature.dbFeature.metaData[\"MatchingFeature\"].forEach(currentSku => {\r\n const sinkFeature = [...sinkFeatureGroup.featuresList[layoutName], ...sinkFeatureGroup.featuresPartsList[layoutName]].find(testFeature => {\r\n return getSkuWithoutDot(testFeature.dbFeature.sharedFeatureName) === currentSku\r\n });\r\n if (sinkFeature) {\r\n const type = this.setCustomVanitySinkMetaData(sinkFeature);\r\n if (!sinkTypes.includes(type)) {\r\n sinkTypes.push(this.setCustomVanitySinkMetaData(sinkFeature))\r\n }\r\n }\r\n });\r\n feature.dbFeature.metaData[\"CustomSinkSubCategory\"] = sinkTypes; // create custom metadata\r\n feature.metaData[\"CustomSinkSubCategory\"] = sinkTypes; // create custom metadata\r\n }\r\n // console.log(\"feature.metaData[\\\"CustomVanityType\\\"]\", feature.metaData[\"CustomVanityType\"]);\r\n // console.log(\"feature\", feature);\r\n return feature\r\n })\r\n })\r\n })\r\n }\r\n this.needToUpdateCustomMetadata = false;\r\n }\r\n\r\n updateVanityParts() {\r\n if (getCurrentRoomType(this.layout) === LOOK_ROOM_TYPES.as) {\r\n this.relatedItems.forEach(relatedItem => {\r\n if (relatedItem.hideLayerCondition) {\r\n relatedItem.disabled = relatedItem.hideLayerCondition();\r\n }\r\n });\r\n }\r\n }\r\n\r\n}\r\n\r\n","import orderBy from \"lodash/orderBy\";\r\n\r\nimport {Part} from \"./part\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {ShowerType, ShowerBodyType} from \"../constants\";\r\nimport {showerThumbnail} from '../assets';\r\n\r\n// import store from \"../../../../store\";\r\n\r\nimport {ShowerTubCombo} from \"./showerTubCombo\";\r\nimport Shadow from \"../subparts/shadow\";\r\n\r\nimport ShowerFixture from \"../subparts/shower/showerFixture\";\r\nimport ShowerGlass from \"../subparts/shower/showerGlass\";\r\n// import ShowerOverlay from \"../subparts/shower/showerOverlay\";\r\nimport ShowerBody from \"../subparts/shower/showerBody\";\r\nimport ShowerInteriorWall from \"../subparts/shower/showerInteriorWall\";\r\nimport ShowerInteriorWallAccent from \"../subparts/shower/showerInteriorWallAccent\";\r\nimport ShowerDoor from \"../subparts/shower/showerDoor\";\r\nimport ShowerPanCombo from \"../subparts/shower/showerPanCombo\";\r\nimport ShowerDoorHandle from \"../subparts/shower/showerDoorHandle\";\r\nimport PonyWallCap from \"../subparts/shower/ponyWallCap\";\r\nimport PonyWallGlass from \"../subparts/shower/ponyWallGlass\";\r\nimport ShowerFloor from \"../subparts/shower/showerFloor\";\r\nimport Threshold from \"../subparts/shower/threshold\";\r\nimport ShowerDrain from \"../subparts/shower/showerDrain\";\r\nimport ShowerHead from \"../subparts/shower/showerHead\";\r\n\r\nexport class Shower extends Part {\r\n static id = 'Shower';\r\n\r\n static Type = {\r\n Custom: 'Custom',\r\n Complete: 'Complete',\r\n Combo: 'Combo',\r\n All: 'All'\r\n };\r\n\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partThumbnail = showerThumbnail;\r\n this.partName = 'Shower';\r\n this.translateId = \"visualizer.bathroom.shower\";\r\n this.relatedItems = [];\r\n this.activeSubType_ = Shower.Type.Custom;\r\n\r\n this.customBodyType = ShowerBodyType.Glass;\r\n\r\n this.showerBody = null;\r\n this.showerGlass = null;\r\n this.showerInteriorWall = null;\r\n this.showerInteriorWallAccent = null;\r\n\r\n // old\r\n this.showerFloor = null;\r\n this.showerOverlay = null;\r\n // old\r\n\r\n this.showerPanCombo = null;\r\n this.threshold = null;\r\n this.showerFixture = null;\r\n this.showerBodySelectedByUser = false;\r\n this.showerDoor = null;\r\n this.showerDoorHandle = null;\r\n\r\n this.ponyWallCap = null;\r\n this.ponyWallGlass = null;\r\n\r\n this.shadows = null;\r\n\r\n this.showerBody = new ShowerBody(true);\r\n this.showerBody.getParent = () => this;\r\n this.showerBody.type = Shower.Type.All;\r\n this.showerBody.counts = {\r\n allLayoutFeaturesCount: 0,\r\n largeLayoutFeaturesCount: 0,\r\n smallLayoutFeaturesCount: 0\r\n };\r\n this.relatedItems.push(this.showerBody);\r\n\r\n this.showerFloorIsActive = false;\r\n\r\n }\r\n\r\n load(dbFeature) {\r\n let relatedItemName = \"\",\r\n relatedItemType = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Shower Pan\":\r\n if (!dbFeature.displayName.includes('Neo Angle')) {\r\n relatedItemName = \"showerPanCombo\";\r\n RelatedItemClass = ShowerPanCombo;\r\n relatedItemType = Shower.Type.Custom;\r\n }\r\n break;\r\n case \"Shower Wall\":\r\n case \"ShowerInteriorWall\": // OLD\r\n relatedItemName = \"showerInteriorWall\";\r\n RelatedItemClass = ShowerInteriorWall;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Wall Accent\":\r\n relatedItemName = \"showerInteriorWallAccent\";\r\n RelatedItemClass = ShowerInteriorWallAccent;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Door\":\r\n case \"Shower_Door\":\r\n if (!dbFeature.displayName.includes(\"Neo Angle\")) {\r\n relatedItemName = \"showerDoor\";\r\n RelatedItemClass = ShowerDoor;\r\n relatedItemType = Shower.Type.Custom;\r\n }\r\n break;\r\n case \"Shower Door Handle\":\r\n relatedItemName = \"showerDoorHandle\";\r\n RelatedItemClass = ShowerDoorHandle;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"ShowerPan\":\r\n relatedItemName = \"threshold\";\r\n RelatedItemClass = Threshold;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"ShowerFloor\":\r\n relatedItemName = \"showerFloor\";\r\n RelatedItemClass = ShowerFloor;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Fixture\":\r\n relatedItemName = \"showerFixture\";\r\n RelatedItemClass = ShowerFixture;\r\n relatedItemType = Shower.Type.All;\r\n break;\r\n case \"Shower Drain\":\r\n relatedItemName = \"showerDrain\";\r\n RelatedItemClass = ShowerDrain;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Head\":\r\n relatedItemName = \"showerHead\";\r\n RelatedItemClass = ShowerHead;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Shadow\":\r\n if (\r\n dbFeature.displayName.includes(\"Shower Shadow - Interior Wall\")\r\n || dbFeature.displayName.includes(\"Shower Shadow - Floor\")\r\n || dbFeature.displayName.includes(\"Shower Shadow - Pan\")\r\n || dbFeature.displayName.includes(\"Shower Shadow - Pony Wall Cap\")\r\n ) {\r\n relatedItemName = \"shadows\";\r\n RelatedItemClass = Shadow;\r\n relatedItemType = Shower.Type.All;\r\n }\r\n break;\r\n case \"Pony Wall Cap\":\r\n relatedItemName = \"ponyWallCap\";\r\n RelatedItemClass = PonyWallCap;\r\n relatedItemType = Shower.Type.All;\r\n break;\r\n case \"Pony Wall Glass\":\r\n relatedItemName = \"ponyWallGlass\";\r\n RelatedItemClass = PonyWallGlass;\r\n relatedItemType = Shower.Type.All;\r\n break;\r\n case \"Shower Glass\":\r\n if (!this.showerBody) {\r\n this.showerBody = new ShowerBody(true);\r\n this.relatedItems.push(this.showerBody);\r\n }\r\n relatedItemName = \"showerGlass\";\r\n RelatedItemClass = ShowerGlass;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n // case \"Shower Overlay\":\r\n // relatedItemName = \"showerOverlay\";\r\n // RelatedItemClass = ShowerOverlay;\r\n // relatedItemType = Shower.Type.Custom;\r\n // break;\r\n case \"Shower Body\":\r\n relatedItemName = \"showerBody\";\r\n RelatedItemClass = ShowerBody;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n if (relatedItemName !== \"shadows\") {\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].type = relatedItemType;\r\n this[relatedItemName].load(dbFeature);\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n setSpecificRules() {}\r\n\r\n setLayers(layout, placeholdersNeeded) {\r\n let res = [];\r\n const relatedItems = this.getRelatedItems();\r\n // console.log('relatedItems', relatedItems);\r\n relatedItems.forEach(relatedItem => {\r\n relatedItem.setLayers(layout);\r\n });\r\n if (this.showerDoor && !this.showerDoor.activeFeature) { // we need it cause shower door is relying on shPanCombo\r\n this.showerDoor.setLayers(layout);\r\n }\r\n if (this.showerDoorHandle && !this.showerDoorHandle.activeFeature) {\r\n this.showerDoorHandle.setLayers(layout);\r\n }\r\n relatedItems.forEach(relatedItem => {\r\n\r\n (placeholdersNeeded && !relatedItem.placeholderChanged && relatedItem.placeholderFeature)\r\n ? relatedItem.placeholderFeature.layer.addTo(res)\r\n : relatedItem.activeFeature && relatedItem.activeFeature.layer ? relatedItem.activeFeature.layer.addTo(res) : null\r\n\r\n // NN(relatedItem.activeFeature, (activeFeature) => activeFeature.layer.addTo(res));\r\n\r\n if ((relatedItem instanceof ShowerBody || relatedItem instanceof ShowerInteriorWallAccent)\r\n && relatedItem.activeFeatureParts && relatedItem.activeFeatureParts.length) {\r\n relatedItem.activeFeatureParts.forEach((activeFeaturePart) => {\r\n activeFeaturePart && !activeFeaturePart.disabled && activeFeaturePart.layer && activeFeaturePart.layer.addTo(res);\r\n })\r\n }\r\n if (relatedItem instanceof ShowerInteriorWall && relatedItem.activeFeatureParts && relatedItem.placeholderChanged && relatedItem.activeFeatureParts.length) {\r\n relatedItem.activeFeatureParts.forEach((activeFeaturePart) => {\r\n activeFeaturePart && !activeFeaturePart.disabled && activeFeaturePart.layer && activeFeaturePart.layer.addTo(res);\r\n })\r\n }\r\n\r\n if (relatedItem.shadowFeature && relatedItem.shadowFeature.layer) {\r\n relatedItem.shadowFeature.layer.addTo(res)\r\n }\r\n\r\n });\r\n\r\n return res.length ? res : null;\r\n }\r\n\r\n navigationItem() {\r\n return new DesignNavigationItem('Shower', this)\r\n }\r\n\r\n navigationSubItems(filters, searchText) {\r\n const filteredAvailableFeatures = super.getFeaturesBySearchText(super.getFilteredFeaturesByFilters(filters), searchText);\r\n return filteredAvailableFeatures.filter(f => this.activeSubType_ === Shower.Type.Complete ? f.type === ShowerType.Complete : f.type !== ShowerType.Complete)\r\n .map(_ => new DesignNavigationItem(_.featureName, _));\r\n }\r\n\r\n subTypes() {\r\n return this.showerBody && (this.showerBody.features.some(showerBodyFeature => showerBodyFeature.type === 0)\r\n && this.showerBody.features.some(showerBodyFeature => showerBodyFeature.type === 1)) ? [\r\n Shower.Type.Custom,\r\n Shower.Type.Complete,\r\n ] : []\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return true;\r\n }\r\n\r\n activeSubType() {\r\n return this.activeSubType_;\r\n }\r\n\r\n handleSubTypeClick(subType, handleNavigationItemClick) {\r\n this.activeSubType_ = subType;\r\n this.showerBody.setDefault(); // set default custom shower\r\n if (handleNavigationItemClick) {\r\n handleNavigationItemClick(this.showerBody.navigationSubItems()[0]) // set default custom shower\r\n }\r\n }\r\n\r\n getRelatedItems() {\r\n const relatedItems = orderBy(this.relatedItems, 'layerPriority');\r\n if (this.showerTubComboIsActive()) {\r\n return relatedItems\r\n }\r\n return relatedItems.filter((relatedItem) => {\r\n return relatedItem.type === this.activeSubType_ || relatedItem.type === Shower.Type.All\r\n })\r\n }\r\n\r\n subParts() {\r\n const activeShowerGroup = this.getActiveShowerGroup();\r\n const ponyWallIsActive = activeShowerGroup.showerDimensions() === \"Pony\";\r\n return this.getRelatedItems()\r\n .filter(item => {\r\n if (item.isPonyWallPart) {\r\n item.visible = ponyWallIsActive\r\n }\r\n return item.visible\r\n })\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n // return filter(this.relatedItems, {visible: true}).map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n //\r\n // toggleShowerParts(disabled, keepLeftWall) {\r\n // this.getRelatedItems().forEach((relItem) => {\r\n // console.log('relItem', relItem);\r\n // if (\r\n // relItem.partId !== \"shower_interior_wall\"\r\n // && relItem.partId !== \"shower_interior_wall_accent\"\r\n // && relItem.partId !== \"shower_fixture\"\r\n // && relItem.partId !== \"shower_door\"\r\n // && relItem.partId !== \"shower_door_handle\"\r\n // && relItem.partId !== \"pony_wall\"\r\n // && relItem.partId !== \"pony_wall_cap\"\r\n // && relItem.partId !== \"pony_wall_glass\"\r\n // ) {\r\n // relItem.disabled = disabled;\r\n // }\r\n // });\r\n // if (!keepLeftWall) {\r\n // this.layout.parts.Walls.wallExL.disabled = disabled;\r\n // }\r\n // }\r\n\r\n setDefault(layout) {\r\n const relatedItems = orderBy(this.relatedItems, 'layerPriority');\r\n relatedItems.forEach(_ => _.setDefault(layout));\r\n }\r\n\r\n setDefaultPartAfterSubTypeClick() {\r\n return this.subParts()[0]\r\n }\r\n\r\n handleSubPartClick() {\r\n\r\n }\r\n\r\n /**\r\n * Gets the current shower size from metaValues.\r\n */\r\n showerSize() {\r\n if (!this.showerBody || !this.showerBody.activeFeature) {\r\n return null;\r\n }\r\n let showerSizeValues = this.showerBody.activeFeature.metaData[\"ShowerSize\"];\r\n if (!showerSizeValues || !showerSizeValues.length) {\r\n if (this.showerBody.activeFeature.partName.includes(\"Complete\")) {\r\n showerSizeValues = ['30in'];\r\n } else {\r\n console.warn('No Shower size.');\r\n }\r\n } else if (showerSizeValues[0] === \"-\") {\r\n showerSizeValues[0] = this.showerBody.activeFeature.partName.includes(\"60in\") ? \"60in\" : \"30in\"\r\n }\r\n\r\n return showerSizeValues[0];\r\n }\r\n\r\n /**\r\n * Gets the current shower dimensions from showerBody\r\n */\r\n showerDimensions() {\r\n if (!this.showerBody)\r\n return \"Full\";\r\n return this.showerBody.activeFeature ? this.showerBody.activeFeature.showerDimensions : null;\r\n // \"Full\" : \"Half\";\r\n }\r\n\r\n isComplete() {\r\n if (!this.showerBody) {\r\n return true;\r\n } else if (this.showerTubComboIsActive()) {\r\n return false;\r\n } else {\r\n return this.showerBody.activeFeature && this.showerBody.activeFeature.showerBodyType !== Shower.Type.Custom;\r\n }\r\n }\r\n\r\n showerTubComboIsActive() {\r\n const comboPart = this.layout.parts[ShowerTubCombo.id];\r\n return comboPart && comboPart.showerTubComboIsActive\r\n }\r\n\r\n getActiveShowerGroup() { // user for taking sizes, etc...\r\n return this.showerTubComboIsActive() ? this.layout.parts[ShowerTubCombo.id] : this;\r\n }\r\n}\r\n\r\n","//********* TUTORIALS *********//\r\nimport * as types from \"./actionTypes\";\r\n\r\nexport const showMaterialsTutorial = (materialsTutorialIsOpened) => ({\r\n type: types.SHOW_MATERIALS_TUTORIAL,\r\n payload: {materialsTutorialIsOpened}\r\n});\r\n\r\nexport const setMaterialsTutorialStep = (materialsTutorialStep) => ({\r\n type: types.SET_MATERIALS_TUTORIAL_STEP,\r\n payload: {materialsTutorialStep}\r\n});\r\n\r\nexport const setMaterialsTutorialFinished = (materialsTutorialFinished) => ({\r\n type: types.SET_MATERIALS_TUTORIAL_FINISHED,\r\n payload: {materialsTutorialFinished}\r\n});\r\n\r\nexport const showMaterialsAgentTutorial = (materialsAgentTutorialIsOpened) => ({\r\n type: types.SHOW_MATERIALS_AGENT_TUTORIAL,\r\n payload: {materialsAgentTutorialIsOpened}\r\n});\r\n\r\nexport const setMaterialsAgentTutorialFinished = (materialsAgentTutorialFinished) => ({\r\n type: types.SET_MATERIALS_AGENT_TUTORIAL_FINISHED,\r\n payload: {materialsAgentTutorialFinished}\r\n});\r\n\r\nexport const showVisualizerTutorial = (visualizerTutorialIsOpened) => ({\r\n type: types.SHOW_VISUALIZER_TUTORIAL,\r\n payload: {visualizerTutorialIsOpened}\r\n});\r\n\r\nexport const setVisualizerTutorialStep = (visualizerTutorialStep) => ({\r\n type: types.SET_VISUALIZER_TUTORIAL_STEP,\r\n payload: {visualizerTutorialStep}\r\n});\r\n\r\nexport const setVisualizerTutorialFinished = (visualizerTutorialFinished) => ({\r\n type: types.SET_VISUALIZER_TUTORIAL_FINISHED,\r\n payload: {visualizerTutorialFinished}\r\n});\r\n","import {getCurrentLayout} from \"../../appLayout\";\r\nimport store from \"../../../store\";\r\nimport config from \"../components/canvas/store/sqftConfig\";\r\n//import ManualCalculate from \"../components/canvas/core/controls/manualCalculate\";\r\nimport workspace from \"../components/canvas/core/workspace\";\r\nimport history from \"../components/canvas/core/workspaceHistory\";\r\nimport {\r\n enableSquareFootage,\r\n setSQFTViewMode,\r\n setSquareFootageGroup,\r\n updateSQFTCalculations\r\n} from \"../../../actions/sqftFunctions\";\r\nimport {toggleSelectionFeatureInfo} from \"../../../actions/actionFunctions\";\r\nimport {manualCalculateImport} from \"./sqftDataMapper\";\r\nimport {getInitialManualCalcRows} from \"../../../reducers/sqftManualCalculationReducer\";\r\nimport {updateManualCalculateRows} from \"../../../actions/sqftManualCalculationFunctions\";\r\nimport {hashHistory} from \"react-router\";\r\nimport {\r\n getAvailableSteps,\r\n navItemIsExcluded\r\n} from \"../../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\nimport {getNextNotCheckedStep} from \"../../qkbPages/materialsWizard/useChangeWizardStepRoute\";\r\nimport {setMeasureUnit} from \"./sqftConfigHelper\";\r\nimport {CABINETS_TO_HANDLE, SQFT_VIEW_MODE} from \"../constants\";\r\n\r\nexport const getFeatureGroup = (mainNeeded = \"center_island_countertop\") => {\r\n const layout = getCurrentLayout();\r\n let featureGroup = layout.getSubPartFromQtCategories(mainNeeded);\r\n if (!featureGroup) {\r\n const foundGroup = layout.getFeatureGroupByPartId(mainNeeded);\r\n if (foundGroup) {\r\n featureGroup = {part: foundGroup}\r\n }\r\n }\r\n if (!featureGroup) {\r\n featureGroup = layout.parts[\"Countertop\"] && layout.parts[\"Countertop\"].countertop\r\n ? {part: layout.parts[\"Countertop\"].countertop}\r\n : null;\r\n }\r\n\r\n return featureGroup\r\n}\r\n\r\nexport const getHandleFeatureGroupFromShape = (shape) => {\r\n const layout = getCurrentLayout();\r\n const handlesPartId = CABINETS_TO_HANDLE[shape.partId];\r\n\r\n return layout.getFeatureGroupByPartId(handlesPartId);\r\n}\r\n\r\nexport const getNavItems = (featureGroup, searchText = \"\", filters= {}, withPlaceholders = true, withQuotingToolFeatures = false) => {\r\n let navItems = [];\r\n if (!featureGroup) {\r\n return navItems\r\n }\r\n let checkFeatureGroup = featureGroup.part ? featureGroup : {part: featureGroup}\r\n const state = store.getState();\r\n const {wizardIsActive} = state.wizardState;\r\n\r\n if (wizardIsActive) {\r\n navItems = getNavItemsFromTheWizard(checkFeatureGroup, searchText, filters);\r\n } else {\r\n const layout = getCurrentLayout();\r\n navItems = layout.designNavigationItems(checkFeatureGroup,\r\n filters,\r\n searchText,\r\n withPlaceholders,\r\n withQuotingToolFeatures,\r\n [],\r\n { firstFeature: null, firstConditions: null },\r\n )\r\n }\r\n\r\n return navItems;\r\n}\r\n\r\nexport const onSQFTLoadPrepareData = () => {\r\n const layout = getCurrentLayout();\r\n const state = store.getState();\r\n const quotes = state.quotesState.quotes;\r\n const activeQuoteIndex = state.quotesState.activeQuoteIndex;\r\n const filterGroups = state.filterState.filterGroups;\r\n const fabricatorData = state.fabricatorState;\r\n\r\n //if (this.iframeElement && this.iframeElement.contentWindow) {\r\n const activeQuote = quotes[activeQuoteIndex];\r\n //const {intl, fabricatorData} = this.props;\r\n const measureUnit = fabricatorData.settings.measureUnit;\r\n const payload = {\r\n loadData: (activeQuote && activeQuote.sqFtCalcData) ? activeQuote.sqFtCalcData : null,\r\n measureUnit,\r\n fabricatorId: document.kvConfig.userId,\r\n fabricatorData,\r\n currentLayout: layout.getCurrentLayoutAbbreviation(),\r\n filterGroups: filterGroups,\r\n //language: intl.locale\r\n }\r\n // if (hardCodeIsLowes()) {\r\n // let translates = {}\r\n // Object.keys(intl.messages).forEach(messageKey => {\r\n // if (messageKey.startsWith(\"transDoc.\")) {\r\n // if (!translates[intl.locale]) {\r\n // translates[intl.locale] = {};\r\n // }\r\n // translates[intl.locale][messageKey] = intl.messages[messageKey]\r\n // }\r\n // })\r\n // payload.translates = translates;\r\n // }\r\n console.log(\"sqft postMessage initial load data:\", payload);\r\n\r\n return payload;\r\n //}\r\n};\r\n\r\n//todo is this all needed?\r\nexport const onSQFTLoadImport = (payload) => {\r\n let {fabricatorId, fabricatorData, currentLayout, measureUnit, loadData, filterGroups} = payload;\r\n config.fabricatorData = fabricatorData;\r\n window.fabricatorId = fabricatorId;\r\n window.currentLayout = currentLayout;\r\n config.filterGroups = filterGroups;\r\n //TranslatesProvider.replaceHtml(language, translates);\r\n // config.fabricatorData = fabricatorData; // set if needed\r\n\r\n //todo\r\n //toolbar.setFabricatorButtons(fabricatorData); // specific fabricator rules\r\n if (measureUnit) {\r\n [].slice.call(document.querySelectorAll(\".settings-units [data-value]\")).forEach(element => {\r\n (element.dataset.value === measureUnit)\r\n ? element.classList.add(\"active\")\r\n : element.classList.remove(\"active\")\r\n });\r\n setMeasureUnit(measureUnit);\r\n history.rememberConfig({measureUnit});\r\n //todo\r\n //ManualCalculate.onMeasureUnitChange();\r\n }\r\n if (loadData) {\r\n loadData = (typeof loadData === 'string') ? JSON.parse(loadData) : loadData;\r\n if (loadData.manualCalculate === true) {\r\n manualCalculateImport(loadData);\r\n } else {\r\n workspace.import(loadData);\r\n }\r\n } else if (!config.tutorialIsRunning) {\r\n workspace.import({}); // if new room is opened - clear the previous(but not the first time if tutorial is active)\r\n store.dispatch(updateManualCalculateRows(getInitialManualCalcRows()));\r\n //todo\r\n //ManualCalculate.import({})\r\n } else {\r\n store.dispatch(updateManualCalculateRows(getInitialManualCalcRows()));\r\n }\r\n const state = store.getState();\r\n const updateCalculations = state.sqftState.updateCalculations;\r\n store.dispatch(updateSQFTCalculations(updateCalculations + 1));\r\n}\r\n\r\nexport const closeSQFTTool = (redirectToPage, shouldChangeWizardToNextStep, changeWizardStepRoute) => {\r\n const isSQFTinUrl = window.location.hash.includes(\"sqft\");\r\n store.dispatch(setSQFTViewMode(SQFT_VIEW_MODE.twoDMode));\r\n\r\n if (isSQFTinUrl) {\r\n hashHistory.push(redirectToPage);\r\n } else {\r\n store.dispatch(enableSquareFootage(false));\r\n store.dispatch(setSquareFootageGroup(null));\r\n if (shouldChangeWizardToNextStep) {\r\n changeWizardToNextStep(changeWizardStepRoute)\r\n }\r\n }\r\n}\r\n\r\nexport const changeWizardToNextStep = (changeWizardStepRoute) => {\r\n const state = store.getState();\r\n const {wizardIsActive, wizardActiveItem} = state.wizardState;\r\n const {selectionFeatureInfo} = state.selectionState;\r\n if (wizardIsActive && wizardActiveItem) {\r\n if (selectionFeatureInfo) {\r\n store.dispatch(toggleSelectionFeatureInfo(null));\r\n }\r\n const realNextStep = getNextNotCheckedStep();\r\n changeWizardStepRoute(realNextStep);\r\n }\r\n}\r\n\r\nexport const getNavItemsFromTheWizard = (subPart, searchText = \"\", filters= {}, wizardGroupId = null, visualizerType = document.kvConfig.visualizerType, withGroupIds = false) => {\r\n\r\n let groupName = subPart.part.wasCreatedFromGroupName || subPart.part.dbName || subPart.part.partName; //assign same stems as for the parent featureGroup (for the slabs)\r\n const wizardSteps = getWizardGroupsFromTheWizard(groupName, wizardGroupId);\r\n const layout = getCurrentLayout(visualizerType);\r\n const navItems = layout.designNavigationItems(subPart, filters, searchText, false, \"all\");\r\n\r\n // console.log(\"wizardSteps\", wizardSteps);\r\n let allNavItems = [];\r\n if (wizardSteps.length) {\r\n if (wizardSteps.length === 1) {\r\n const navItemsFromWizardGroup = navItems.filter(navItem => !navItemIsExcluded(navItem, wizardSteps[0].stepGroups[0]))\r\n if (navItemsFromWizardGroup.length) {\r\n allNavItems = navItemsFromWizardGroup\r\n if (!wizardGroupId && withGroupIds) {\r\n allNavItems = allNavItems.map(navItem => {\r\n return {...navItem, newWizardGroupId: wizardSteps[0].stepGroups[0].id, newWizardStep: wizardSteps[0].stepIndex}\r\n })\r\n }\r\n }\r\n } else {\r\n for (const wizardStep of wizardSteps) {\r\n const navItemsFromWizardGroup = navItems.filter(navItem => !navItemIsExcluded(navItem, wizardStep.stepGroups[0]));\r\n if (navItemsFromWizardGroup.length) {\r\n if (!allNavItems.length) {\r\n allNavItems = navItemsFromWizardGroup;\r\n if (!wizardGroupId && withGroupIds) {\r\n allNavItems = allNavItems.map(navItem => {\r\n return {...navItem, newWizardGroupId: wizardStep.stepGroups[0].id, newWizardStep: wizardStep.stepIndex}\r\n })\r\n }\r\n } else {\r\n navItemsFromWizardGroup.forEach(newNavItem => {\r\n if (!allNavItems.some(navItem => navItem.part.dbFeature.id === newNavItem.part.dbFeature.id)) {\r\n allNavItems.push(\r\n !wizardGroupId && withGroupIds\r\n ? {...newNavItem, newWizardGroupId: wizardStep.stepGroups[0].id, newWizardStep: wizardStep.stepIndex}\r\n : newNavItem\r\n )\r\n }\r\n })\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return allNavItems\r\n}\r\n\r\n/**\r\n * returns all wizardGroups with current groupName and wizard group id if provided\r\n * @param groupName {string}\r\n * @param wizardGroupId {string|number|null}\r\n * @param forFeature {featureInterface}\r\n * @returns {array}\r\n */\r\nexport const getWizardGroupsFromTheWizard = (groupName, wizardGroupId = null, forFeature = null) => {\r\n const state = store.getState();\r\n const {wizardActiveItem, wizardSelectedValues} = state.wizardState;\r\n const wizardSteps = getAvailableSteps(wizardActiveItem, wizardSelectedValues, true);\r\n\r\n return wizardSteps.filter((wizardStep) => {\r\n if (wizardStep.stepGroups.length !== 1 || (wizardStep.stepGroups[0].groupName !== groupName)) {\r\n return false\r\n }\r\n if (wizardGroupId && (wizardStep.stepGroups[0].id !== wizardGroupId)) {\r\n return false\r\n }\r\n if (forFeature) {\r\n return !navItemIsExcluded({part: forFeature}, wizardStep.stepGroups[0])\r\n }\r\n return true\r\n });\r\n}\r\n\r\nexport const getUnderlaymentFeature = () => {\r\n const underlaymentFeatureGroup = getFeatureGroup('underlayment');\r\n const state = store.getState();\r\n const {wizardIsActive} = state.wizardState;\r\n let navItems;\r\n if (wizardIsActive) {\r\n navItems = getNavItemsFromTheWizard(underlaymentFeatureGroup, \"\", {});\r\n } else {\r\n const layout = getCurrentLayout();\r\n navItems = layout.designNavigationItems(underlaymentFeatureGroup,\r\n {},\r\n \"\",\r\n false,\r\n \"all\",\r\n [],\r\n { firstFeature: null, firstConditions: null },\r\n )\r\n }\r\n\r\n const underlaymentFeaureName = 'Xtone Underlayment';\r\n const underlaymentFeaure = navItems.find(navItem => navItem.part.getFeatureName() === underlaymentFeaureName);\r\n if (underlaymentFeaure) {\r\n return underlaymentFeaure\r\n }\r\n\r\n return navItems.length ? navItems[0] : null\r\n}\r\n","export const LayoutType = {\r\n Layout1: 1,\r\n Layout2: 2,\r\n Layout3: 3,\r\n Layout4: 4,\r\n Layout5: 5,\r\n Layout6: 6,\r\n};\r\n\r\nexport const LayoutAbbreviation = {\r\n All: \"ALL\",\r\n Layout1: \"Layout1\",\r\n Layout2: \"Layout2\",\r\n Layout3: \"Layout3\",\r\n Layout4: \"Layout4\",\r\n Layout5: \"Layout5\",\r\n Layout6: \"Layout6\",\r\n};\r\n\r\nexport const LayoutAbbreviations = [\r\n \"Layout1\",\r\n \"Layout2\",\r\n \"Layout3\",\r\n \"Layout4\",\r\n \"Layout5\",\r\n \"Layout6\",\r\n];\r\nexport const LayoutAbbreviationsToRemove = [\r\n \"Layout6\",\r\n \"Layout5\",\r\n \"Layout4\",\r\n \"Layout3\",\r\n \"Layout2\",\r\n \"Layout1\",\r\n];\r\n\r\nexport const METADATA = {\r\n ALL: \"ALL\",\r\n sinkUTypes: [\"U\", \"ST\", \"FM\", \"SM\"],\r\n FloorWithIsland: \"default\",\r\n NO: \"NO\",\r\n};\r\n\r\nexport const PLACEMENTS = {\r\n Island: \"Island\",\r\n Countertop: \"Countertop\"\r\n};\r\n\r\nexport const KVSCENE_BACKSPLASH_TYPES = [\"4 inch\", \"6 inch\", \"8 inch\", \"Full\"];\r\n\r\nexport const DECORS_MAX = 25;\r\n\r\nconst oldKitchenCabinetsLogicProfiles = [\r\n \"americasdream\",\r\n \"stonely_inc\",\r\n \"215mercury\",\r\n \"sci_surfaces\",\r\n \"lakeside_surfaces_\",\r\n \"true_blue_surfaces_\",\r\n \"bellezza_surfaces\",\r\n \"premier_cabinet_paintin_llc\",\r\n \"premier_cabinet_paintin_llc_v5\",\r\n \"american_kitchen_and_stone\",\r\n \"arizona_granite\",\r\n \"a_granito_world\",\r\n \"stonecraft\",\r\n \"wallstone_cabinetry_countertops\",\r\n \"jg_countertops_llc\",\r\n \"the_granite_guys\",\r\n \"blue_line_construction\",\r\n \"blue_line_construction_2023\",\r\n \"williams_kitchen_bath\",\r\n \"xpresbathshower\",\r\n \"eastern_surfaces\",\r\n \"wallstone_cabinetry_countertops_rebuild\",\r\n \"the_granite_guys_rebuild\",\r\n \"south_florida_remodelers\",\r\n \"artemisa\",\r\n \"kitchen_doctors_kbf\",\r\n \"home_essentials\",\r\n \"amc_building_supply_v5\",\r\n \"amc_countertops_v5\",\r\n \"cafe_countertops\",\r\n \"gmd_surfaces\",\r\n \"colonial_bath\",\r\n \"carpetmart\",\r\n];\r\n\r\nexport const hasOldCabinetLogic = () => {\r\n if (!window.location.host || (typeof window.location.host !== \"string\")) {\r\n return false\r\n }\r\n if (document.kvConfig.userId === 246030) {\r\n return true\r\n }\r\n const subDomain = window.location.host.split('.')[0];\r\n if (window.location.host.includes(\"quotekandb.com\")) {\r\n return subDomain === \"moderno_demo_3011\" || subDomain === \"erpizo\" || subDomain === \"multitool\"\r\n }\r\n return subDomain.includes(\"porcelanosa_\") || window.location.href.includes(\"fab_subdomain=porcelanosa_\")\r\n || oldKitchenCabinetsLogicProfiles.some(profile => {\r\n return (profile === subDomain) || window.location.href.includes(\"fab_subdomain=\" + profile)\r\n })\r\n}\r\n\r\nexport const useOldCabinetLogic = hasOldCabinetLogic();\r\n","import React, {useEffect, useRef} from \"react\";\r\nimport $ from \"jquery\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst WithOverlay = (props) => {\r\n\r\n const {children, visible, className, onClick, popupClassName} = props;\r\n\r\n const overlayElement = useRef(null);\r\n\r\n useEffect(() => {\r\n if (overlayElement && overlayElement.current) {\r\n $(overlayElement.current).fadeIn(300)\r\n }\r\n }, [visible]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const hideOverlay = (closePopup) => {\r\n if (overlayElement && overlayElement.current) {\r\n $(overlayElement.current).fadeOut(300, () => {\r\n if (closePopup) {\r\n closePopup();\r\n }\r\n })\r\n }\r\n };\r\n\r\n const onOverlayClick = (event) => {\r\n if (!onClick) {\r\n return;\r\n }\r\n if (popupClassName && event.target.closest(\".\" + popupClassName)) {\r\n return\r\n }\r\n hideOverlay(onClick);\r\n }\r\n\r\n return (\r\n
\r\n {children(hideOverlay)}\r\n
\r\n )\r\n};\r\n\r\nWithOverlay.propTypes = {\r\n children: PropTypes.any,\r\n className: PropTypes.string,\r\n popupClassName: PropTypes.string,\r\n onClick: PropTypes.func,\r\n}\r\n\r\nexport default WithOverlay\r\n","import * as PropTypes from \"prop-types\";\r\n\r\nexport const DISCOUNT_MAIN_TYPES = {\r\n custom: \"custom\",\r\n freeFill: \"freeFill\",\r\n subTotal: \"subTotal\",\r\n nested: \"nested\",\r\n finance: \"finance\",\r\n deposit: \"deposit\",\r\n};\r\n\r\nexport const DISCOUNT_TYPES = {\r\n price: \"Price\",\r\n percent: \"Percent\"\r\n};\r\n\r\nexport const DISCOUNT_MODES = {\r\n and: \"And\",\r\n or: \"Or\"\r\n};\r\n\r\nexport const DISCOUNT_SECTION_TYPES = {\r\n default: \"default\",\r\n finance: \"finance\"\r\n};\r\n\r\nexport const DISCOUNT_FINANCE_CELLS = {\r\n financePercentage: \"Finance Percentage\",\r\n financeMonths: \"Months\",\r\n financeSalesPercentage: \"Sales Person Percentage\",\r\n}\r\n\r\nexport const discountInterFace = {\r\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\r\n order: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n enabled: PropTypes.bool.isRequired,\r\n type: PropTypes.oneOf([DISCOUNT_TYPES.price, DISCOUNT_TYPES.percent]).isRequired,\r\n mode: PropTypes.oneOf([DISCOUNT_MODES.and, DISCOUNT_MODES.or]).isRequired,\r\n amount: PropTypes.number.isRequired,\r\n isRidged: PropTypes.bool.isRequired,\r\n isSubTotal: PropTypes.bool,\r\n selected: PropTypes.bool, // it is not required, since it is not stored on the backend\r\n // specialVisible: PropTypes.bool, // it is not required, since it is not stored on the backend // we don't have it anymore\r\n oldDeleted: PropTypes.bool, // it is not required, since it is not stored on the backend\r\n uuId: PropTypes.string, // for new added nested\r\n nestedParent: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n discountType: PropTypes.oneOf(Object.keys(DISCOUNT_MAIN_TYPES)),\r\n financePercentage: PropTypes.number,\r\n financeMonths: PropTypes.number,\r\n financeSalesPercentage: PropTypes.number,\r\n financeOptions: PropTypes.string, // \"[12345, 12314, 1233]\" JSON\r\n multiSelections: PropTypes.bool,\r\n approveOptions: PropTypes.string, // \"['Some Name', 'Another Name']\"\r\n};\r\n\r\nexport const discountSectionsInterface = {\r\n id: PropTypes.number.isRequired,\r\n order: PropTypes.number.isRequired,\r\n name: PropTypes.string.isRequired,\r\n type: PropTypes.string,\r\n discounts: PropTypes.arrayOf(PropTypes.shape(discountInterFace))\r\n};\r\n","const COLOR_THEMES = {\r\n \"qc\": {\r\n primary: \"#4A90E2\",\r\n primary_hover: \"#3483de\", // darken(primary, 5%),\r\n primary_transparent8: \"rgba(74,144,226,0.8)\",\r\n primary_transparent: \"rgba(74,144,226,0.5)\", // fade_out(primary, 0.5),\r\n active: \"#9FC522\",\r\n active_hover: \"#8daf1e\", //darken(#9FC522, 5%),\r\n active_disabled: \"rgba(141,175,30,0.5)\", //#dfecb5\",\r\n active_transparent: \"rgba(159,197,34,0.5)\", // fade_out(#9FC522, 0.5),\r\n assetsPath: \"../images\",\r\n },\r\n \"caes\": {\r\n primary: \"#58595b\",\r\n primary_hover: \"#4b4c4e\", //darken(#58595b, 5%),\r\n primary_transparent8: \"rgba(74,144,226,0.8)\",\r\n primary_transparent: \"rgba(88,89,91,0.5)\", // fade_out(primary, 0.5),\r\n active: \"#f46c42\",\r\n active_hover: \"#f3592a\", //darken(#f46c42, 5%),\r\n active_disabled: \"rgba(243,89,42, 0.5)\",\r\n active_transparent: \"rgba(244,108,66,0.5)\", //fade_out(#9FC522, 0.5),\r\n assetsPath: \"../images-caes\",\r\n }\r\n};\r\n\r\nexport const COLOR = {\r\n black: '#000000',\r\n blackLight: '#4a4a4a',\r\n white: '#ffffff',\r\n blue: '#ffffff',\r\n red: '#f11515',\r\n red_transparent: \"rgba(241, 21, 21 , 0.5)\",\r\n}\r\n\r\nexport default COLOR_THEMES\r\n","//INITIAL FLOW\r\nimport * as types from \"./actionTypes\";\r\n\r\nexport const addNewQuote = () => ({\r\n type: types.ADD_NEW_QUOTE,\r\n payload: {}\r\n});\r\n\r\nexport const setQuotes = (quotes) => ({\r\n type: types.SET_QUOTES,\r\n payload: {quotes}\r\n});\r\n\r\nexport const updateQuote = (quote, updatedQuote) => ({\r\n type: types.UPDATE_QUOTE,\r\n payload: {quote, updatedQuote}\r\n});\r\n\r\nexport const setActiveQuoteIndex = (activeQuoteIndex) => ({\r\n type: types.SET_ACTIVE_QUOTE_INDEX,\r\n payload: {activeQuoteIndex}\r\n});\r\n","import workspace from \"../components/canvas/core/workspace\";\r\n//import {updateCurrentQuote} from \"../../../../../misc/quotesFunctions\";\r\nimport {\r\n getCurrentQuoteRoomCartItem,\r\n getRoomCartItemForCategoryName\r\n} from \"../../../misc/categorySwitchingFunctions\";\r\nimport store from \"../../../store\";\r\nimport {setActiveQuoteIndex, setQuotes} from \"../../../actions/roomsFunctions\";\r\nimport {addToCart, changeCartFeature, removeFromCart} from \"../../../actions/actionFunctions\";\r\nimport {prepareSQFTData} from \"../components/canvas/core/workspace/workspaceDataMapper\";\r\nimport {getFeatureGroup, getNavItems, onSQFTLoadImport, onSQFTLoadPrepareData} from \"./sqftHelperUi\";\r\nimport {ACTIVE_ROOM_TYPE} from \"../../../reducers/sqftMenuReducer\";\r\nimport {\r\n setSQFTActiveRoomId,\r\n setSQFTActiveRoomIndex,\r\n setSQFTActiveRoomType\r\n} from \"../../../actions/sqftMenuFunctions\";\r\nimport {getRoomNameInQuote} from \"../../popups/sqftFeaturesPopup/parseSqftData\";\r\nimport {getQtCategoryName} from \"../../visComponents/qtCategoryName\";\r\nimport {getStringFeatureName} from \"../../../misc/helpers\";\r\nimport {MEASURE_UNITS, PARENT_KEYS_WITH_COMBINED_FEATURES_IN_CART} from \"../constants\";\r\n\r\n/**\r\n *\r\n */\r\nexport const getQtCatName = () => {\r\n const reduxState = store.getState();\r\n const {activeRoomType} = reduxState.sqftMenuState;\r\n const {qtActiveCategory} = reduxState.qtState;\r\n const {activeRoomId} = reduxState.sqftMenuState;\r\n const {activeQuoteIndex} = reduxState.quotesState;\r\n const fabricatorData = reduxState.fabricatorState;\r\n const intl = workspace.intl;\r\n\r\n let switcherTitle;\r\n let roomNavItem;\r\n\r\n switch (activeRoomType) {\r\n case ACTIVE_ROOM_TYPE.quote:\r\n switcherTitle = getRoomNameInQuote(activeQuoteIndex);\r\n break;\r\n case ACTIVE_ROOM_TYPE.category:\r\n switcherTitle = getQtCategoryName(qtActiveCategory, intl, fabricatorData)\r\n break;\r\n case ACTIVE_ROOM_TYPE.roomGroup:\r\n roomNavItem = getRoomGroupById(activeRoomId);\r\n if (!roomNavItem) {\r\n switcherTitle = \"\"\r\n } else {\r\n switcherTitle = getStringFeatureName(roomNavItem.part, intl.messages, intl.locale, fabricatorData);\r\n }\r\n break;\r\n }\r\n\r\n return switcherTitle;\r\n}\r\n/**\r\n * @param qtCatName string\r\n */\r\nexport const isQuoteByQTCatNameEqualToCurrentQuote = (qtCatName) => {\r\n const state = store.getState();\r\n const quotes = state.quotesState.quotes;\r\n const activeQuoteIndex = state.quotesState.activeQuoteIndex;\r\n const quote = getQuoteByRoomName(qtCatName);\r\n let newQuoteIndex = quotes.indexOf(quote);\r\n newQuoteIndex = newQuoteIndex < 0 ? 0 : newQuoteIndex\r\n\r\n return activeQuoteIndex === newQuoteIndex\r\n}\r\n/**\r\n * @param qtCatName string\r\n */\r\nexport const loadQuoteByQtCatName = async (qtCatName) => {\r\n const state = store.getState();\r\n const quotes = state.quotesState.quotes;\r\n const quote = getQuoteByRoomName(qtCatName);\r\n let quoteIndex = quotes.indexOf(quote);\r\n quoteIndex = quoteIndex < 0 ? 0 : quoteIndex\r\n\r\n store.dispatch(setActiveQuoteIndex(quoteIndex));\r\n //await setNewActiveQuote(quoteIndex, quotes);\r\n loadActiveQuoteToSQFT().then();\r\n\r\n //todo fix error if quote is null\r\n store.dispatch(setSQFTActiveRoomId(qtCatName));\r\n store.dispatch(setSQFTActiveRoomIndex(null)); //todo if this is critical (set active room in qtCategory switcher)\r\n store.dispatch(setSQFTActiveRoomType(ACTIVE_ROOM_TYPE.quote));\r\n}\r\n\r\n\r\n/**\r\n * load quotes[activeQuoteIndex] to workspace\r\n */\r\nexport const getQuoteByRoomName = (roomName) => {\r\n const state = store.getState();\r\n const quotes = state.quotesState.quotes;\r\n return quotes.find((quote, index) => {\r\n const quoteByQtCatName = quote.qtCatName === roomName.trim().toLowerCase();\r\n const roomNameInQuote = getRoomNameInQuote(index);\r\n const quoteByRoomName = roomNameInQuote.trim().toLowerCase() === roomName.trim().toLowerCase();\r\n\r\n return quoteByQtCatName || quoteByRoomName\r\n });\r\n}\r\n\r\n/**\r\n * load quotes[activeQuoteIndex] to workspace\r\n */\r\nexport const loadActiveQuoteToSQFT = async () => {\r\n let payload = onSQFTLoadPrepareData();\r\n onSQFTLoadImport(payload);\r\n}\r\n\r\n/**\r\n * Checking type of current room and creates new or updating existing quote\r\n * @param sqftCalcData {object}\r\n */\r\nexport const saveSQFTDataToQuote = async (sqftCalcData = null) => {\r\n const state = store.getState();\r\n const activeRoomType = state.sqftMenuState.activeRoomType;\r\n const qtActiveCategory = state.qtState.qtActiveCategory;\r\n const activeRoomId = state.sqftMenuState.activeRoomId;\r\n const cartItems = state.cartState.cartItems;\r\n const activeRoomIndex = state.sqftMenuState.activeRoomIndex;\r\n\r\n if (activeRoomType === ACTIVE_ROOM_TYPE.category) {\r\n await createQuoteIfNotExistOrUpdateCurrent(qtActiveCategory.trim().toLowerCase());\r\n } else if (activeRoomType === ACTIVE_ROOM_TYPE.roomGroup) {\r\n //const roomNavItem = getRoomGroupById(activeRoomId);\r\n //const roomNavItemName = roomNavItem.part.partName.trim().toLowerCase();\r\n await createQuoteIfNotExistOrUpdateCurrent(activeRoomId);\r\n } else {\r\n if (!sqftCalcData) {\r\n sqftCalcData = await prepareSQFTData();\r\n console.log(\"sqft prepared data\", sqftCalcData);\r\n }\r\n updateActiveQuoteWithSQFTData(sqftCalcData);\r\n const quoteRoomCartItem = getCurrentQuoteRoomCartItem(cartItems, activeRoomIndex);\r\n if (!quoteRoomCartItem) {\r\n addRoomToCart(getQtCatName());\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Update specific quote with sqFtCalcData by given index\r\n */\r\nexport const updateQuoteWithSQFTData = (data, quoteIndex) => {\r\n const state = store.getState();\r\n const { quotes } = state.quotesState;\r\n\r\n const newQuotes = quotes.map((quote, qIndex) => {\r\n if (qIndex === quoteIndex) {\r\n return {\r\n ...quote,\r\n sqFtCalcData: { ...data }\r\n };\r\n }\r\n return quote;\r\n });\r\n\r\n store.dispatch(setQuotes(newQuotes));\r\n};\r\n\r\n/**\r\n * Update active quote with sqFtCalcData\r\n */\r\nexport const updateActiveQuoteWithSQFTData = (data) => {\r\n const state = store.getState();\r\n const { activeQuoteIndex } = state.quotesState;\r\n\r\n updateQuoteWithSQFTData(data, activeQuoteIndex);\r\n};\r\n\r\nexport const getSQFTIdsFromAllParentLists = (parentsLists) => {\r\n const SQFTIds = [];\r\n\r\n parentsLists.forEach(parentsList => {\r\n Object.keys(parentsList).forEach(parentKey => {\r\n if (!parentsList[parentKey]) {\r\n return;\r\n }\r\n\r\n if (parentsList[parentKey].features && parentsList[parentKey].features.length) {\r\n parentsList[parentKey].features.forEach(sqftFeature => {\r\n if (sqftFeature.sqftId) {\r\n SQFTIds.push(sqftFeature.sqftId);\r\n }\r\n });\r\n }\r\n\r\n if (parentsList[parentKey].featuresSubGroups) {\r\n parentsList[parentKey].featuresSubGroups.forEach(featureGroup => {\r\n if (featureGroup && featureGroup.features && featureGroup.features.length) {\r\n featureGroup.features.forEach(sqftFeature => {\r\n if (sqftFeature.sqftId) {\r\n SQFTIds.push(sqftFeature.sqftId);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n });\r\n\r\n return SQFTIds;\r\n};\r\n\r\n/**\r\n */\r\nexport const deleteCartItemsThatAreMissingInParentLists = (parentsLists, cartItems) => {\r\n const sqftIds = getSQFTIdsFromAllParentLists(parentsLists);\r\n const itemsToRemove = cartItems.filter(cItem => cItem.sqftId && !sqftIds.includes(cItem.sqftId));\r\n\r\n itemsToRemove.forEach(cItem => {\r\n store.dispatch(removeFromCart(cItem));\r\n });\r\n};\r\n\r\n/**\r\n * This will return string ids\r\n * @param SQFTCalcData\r\n * @return {[]}\r\n */\r\nexport const getSQFTIdsFromSQFTCalcData = (SQFTCalcData) => {\r\n if (SQFTCalcData) {\r\n const SQFTIds = [];\r\n SQFTCalcData.countertops.forEach(countertop => {\r\n SQFTIds.push(countertop.id.toString());\r\n })\r\n\r\n if (SQFTCalcData.controllers && SQFTCalcData.controllers.hinge) {\r\n SQFTCalcData.controllers.hinge.forEach(model => {\r\n SQFTIds.push(model.id.toString());\r\n })\r\n }\r\n\r\n if (SQFTCalcData.controllers && SQFTCalcData.controllers.handles) {\r\n SQFTCalcData.controllers.handles.forEach(model => {\r\n SQFTIds.push(model.id.toString());\r\n })\r\n }\r\n\r\n\r\n return SQFTIds\r\n }\r\n}\r\n\r\n/**\r\n */\r\nexport const deleteCartItemsThatAreMissingInSQFTCalcData = () => {\r\n const state = store.getState();\r\n const cartItems = state.cartState.cartItems;\r\n const fabricatorSettings = state.fabricatorState.settings;\r\n const quotes = state.quotesState.quotes;\r\n\r\n quotes.forEach((quote, quoteIndex) => {\r\n if (quote.sqFtCalcData) {\r\n const sqftIds = getSQFTIdsFromSQFTCalcData(quote.sqFtCalcData);\r\n\r\n cartItems\r\n .filter(cItem => cItem.currentQuote === quoteIndex)\r\n .forEach(cItem => {\r\n if (cItem.sqftQuantities) {\r\n const updatedQuantities = { ...cItem.sqftQuantities };\r\n\r\n // remove sqftIds from sqftQuantities that are not in the SQFTCalcData\r\n Object.keys(updatedQuantities).forEach(sqftId => {\r\n if (!sqftIds.includes(sqftId)) {\r\n delete updatedQuantities[sqftId];\r\n }\r\n });\r\n\r\n let newQuantity = Object.values(updatedQuantities).reduce((sum, qty) => sum + qty, 0);\r\n // The deleteCartItemsThatAreMissingInSQFTCalcData functionality is linked to this section.\r\n // If any changes are needed, ensure to update both places to maintain consistency.\r\n if (PARENT_KEYS_WITH_COMBINED_FEATURES_IN_CART.includes(cItem.partId)) {\r\n newQuantity = fabricatorSettings.measureUnit === MEASURE_UNITS.Metric\r\n ? Math.ceil10(newQuantity, -2)\r\n : Math.ceil(newQuantity);\r\n }\r\n\r\n // Update the cart item\r\n if (Object.keys(updatedQuantities).length > 0) {\r\n store.dispatch(changeCartFeature({\r\n ...cItem,\r\n sqftQuantities: updatedQuantities,\r\n quantity: newQuantity,\r\n }));\r\n } else {\r\n store.dispatch(removeFromCart(cItem));\r\n }\r\n }\r\n });\r\n }\r\n })\r\n};\r\n\r\n/**\r\n * @param qtCatName: string\r\n */\r\nexport const createQuoteIfNotExistOrUpdateCurrent = async (qtCatName) => {\r\n const currentQtCategoryInQuotes = getQuoteForCurrentQtCatName(qtCatName);\r\n const sqftCalcData = await prepareSQFTData();\r\n if (!currentQtCategoryInQuotes) {\r\n await createQuoteFromSqftCalcData(sqftCalcData, qtCatName)\r\n } else {\r\n updateActiveQuoteWithSQFTData(sqftCalcData);\r\n }\r\n}\r\n\r\n/**\r\n * @param sqftCalcData {object}\r\n * @param qtCatName {string}\r\n */\r\nexport const createQuoteFromSqftCalcData = async (sqftCalcData, qtCatName) => {\r\n if (!workspace.isEmpty() || isManualCalculateNotEmpty(sqftCalcData)) {\r\n await createNewQuoteFromCategory(sqftCalcData, qtCatName);\r\n }\r\n}\r\n\r\n/**\r\n * @param qtCatName string\r\n */\r\nexport const getQuoteForCurrentQtCatName = (qtCatName) => {\r\n const {quotes} = store.getState().quotesState;\r\n return quotes.find(quote =>\r\n quote.qtCatName === qtCatName\r\n && quote.isVisibleInSQFT === false)\r\n}\r\n\r\n/**\r\n * @param sqftCalcData {object}\r\n * @param qtActiveCategory {string}\r\n */\r\nexport const createNewQuoteFromCategory = async(sqftCalcData, qtActiveCategory) => {\r\n if (!workspace.isEmpty() || isManualCalculateNotEmpty(sqftCalcData)) {\r\n const quotes = await addNewQuote(sqftCalcData, qtActiveCategory);\r\n store.dispatch(setActiveQuoteIndex(quotes.length - 1));\r\n addRoomToCart(qtActiveCategory);\r\n }\r\n}\r\n\r\nexport const isManualCalculateNotEmpty = (sqftCalcData) => {\r\n if (sqftCalcData.manualCalculate) {\r\n return sqftCalcData.countertops.length > 0\r\n || sqftCalcData.backsplashes.length > 0\r\n || sqftCalcData.edges.length > 0\r\n }\r\n\r\n return false\r\n}\r\n/**\r\n * @param sqftCalcData {object}\r\n * @param qtActiveCategory {string}\r\n */\r\nconst addNewQuote = async (sqftCalcData, qtActiveCategory) => {\r\n //const currentQuote = await updateCurrentQuote();\r\n const {quotes} = store.getState().quotesState;\r\n const newQuotes = [...quotes, {\r\n quoteId: null,\r\n isCreatedInSQFT: true,\r\n isVisibleInSQFT: false,\r\n qtCatName: qtActiveCategory.trim().toLowerCase(),\r\n sqFtCalcData: sqftCalcData\r\n }];\r\n store.dispatch(setQuotes(newQuotes));\r\n\r\n return newQuotes\r\n};\r\n\r\n/**\r\n * @param qtCatName {string}\r\n */\r\nexport const addRoomToCart = (qtCatName) => {\r\n const roomCartItem = getRoomCartItemForCategoryName(qtCatName)\r\n if (roomCartItem) {\r\n store.dispatch(addToCart([roomCartItem]))\r\n return roomCartItem\r\n }\r\n}\r\n\r\n/**\r\n * update navItemBy roomIndex\r\n * @param roomName {string}\r\n */\r\nexport const getRoomGroupById = (roomName) => {\r\n const roomsFeatureGroup = getFeatureGroup('room');\r\n const roomsNavItems = getNavItems(roomsFeatureGroup, \"\", {}, false, true);\r\n\r\n return roomsNavItems.find(navItem => {\r\n return navItem.part.getFeatureName().toLowerCase() === roomName.toLowerCase()\r\n });\r\n}\r\n","import {Part} from \"./part\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {vanityThumbnail} from \"../assets\";\r\n\r\nimport CompleteVanity from \"../subparts/vanity/completeVanity\";\r\nimport VanityHandle from \"../subparts/vanity/vanityHandle\";\r\nimport VanityPedestal from \"../subparts/vanity/vanityPedestal\";\r\nimport VanityCountertop from \"../subparts/vanity/vanityCountertop\";\r\nimport LightingFixture from \"../subparts/vanity/lightingFixture\";\r\nimport VanityBacksplash from \"../subparts/vanity/vanityBacksplash\";\r\nimport Mirror from \"../subparts/vanity/mirror\";\r\nimport Sink from \"../subparts/vanity/sink\";\r\nimport VanityFaucet from \"../subparts/vanity/faucet\";\r\n\r\nexport class Vanity extends Part {\r\n static id = 'Vanity';\r\n\r\n static Types = {\r\n Complete: 'Complete',\r\n Custom: 'Custom'\r\n };\r\n\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'Vanity';\r\n this.translateId = \"visualizer.bathroom.vanity\";\r\n this.partThumbnail = vanityThumbnail;\r\n this.activeSubType_ = Vanity.Types.Custom;\r\n this.relatedItems = [];\r\n this.placeholdersNeeded = false; // only Vanity property\r\n\r\n // vanity parts\r\n this.pedestalSink = null;\r\n this.completeVanity = null;\r\n this.countertop = null;\r\n this.sink = null;\r\n this.faucet = null;\r\n this.vanityBacksplash = null;\r\n this.vanityHandle = null;\r\n this.mirror = null;\r\n this.lightingFixture = null;\r\n }\r\n\r\n load(dbFeature) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Sink\":\r\n relatedItemName = \"sink\";\r\n RelatedItemClass = Sink;\r\n break;\r\n case \"Mirror\":\r\n relatedItemName = \"mirror\";\r\n RelatedItemClass = Mirror;\r\n break;\r\n case \"Lighting Fixture\":\r\n relatedItemName = \"lightingFixture\";\r\n RelatedItemClass = LightingFixture;\r\n break;\r\n case \"Countertop\":\r\n relatedItemName = \"countertop\";\r\n RelatedItemClass = VanityCountertop;\r\n break;\r\n case \"Faucet\":\r\n relatedItemName = \"faucet\";\r\n RelatedItemClass = VanityFaucet;\r\n break;\r\n case \"VanityBacksplash\":\r\n case \"BackSplash\":\r\n case \"Backsplash\":\r\n relatedItemName = \"vanityBacksplash\";\r\n RelatedItemClass = VanityBacksplash;\r\n break;\r\n case \"Vanity Handle\":\r\n relatedItemName = \"vanityHandle\";\r\n RelatedItemClass = VanityHandle;\r\n break;\r\n case \"Vanity\": {\r\n const completeVanity = dbFeature.metaData && dbFeature.metaData[\"Vanity\"]\r\n && dbFeature.metaData[\"Vanity\"].includes(\"Complete\");\r\n\r\n relatedItemName = completeVanity ? \"completeVanity\" : \"pedestalSink\";\r\n RelatedItemClass = completeVanity ? CompleteVanity : VanityPedestal;\r\n break;\r\n }\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n if (relatedItemName === \"sink\") {\r\n const faucetIndex = this.relatedItems.findIndex(relItem => relItem.partName === 'Faucet');\r\n faucetIndex ? this.relatedItems.splice(faucetIndex, 0, this.sink) : this.relatedItems.push(this.sink);\r\n } else if (relatedItemName === \"completeVanity\") {\r\n this.relatedItems.unshift(this.completeVanity); // cabinet needs to be first in the list.\r\n } else if (relatedItemName === \"pedestalSink\") {\r\n this.relatedItems.unshift(this.pedestalSink); // cabinet needs to be first in the list.\r\n } else {\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].load(dbFeature);\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n setLayers(layout, placeholdersNeeded) {\r\n let res = [];\r\n this.placeholdersNeeded = true;\r\n this.getRelatedItems().forEach(relatedItem => {\r\n relatedItem.setLayers(layout);\r\n (placeholdersNeeded && !relatedItem.placeholderChanged && relatedItem.placeholderFeature)\r\n ? relatedItem.placeholderFeature.layer.addTo(res)\r\n : relatedItem.activeFeature && relatedItem.activeFeature.layer && relatedItem.activeFeature.layer.src\r\n ? relatedItem.activeFeature.layer.addTo(res)\r\n : relatedItem.placeholderFeature && relatedItem.placeholderFeature.layer && relatedItem.placeholderFeature.layer.src\r\n ? relatedItem.placeholderFeature.layer.addTo(res)\r\n : null;\r\n });\r\n return res.length ? res : null;\r\n }\r\n\r\n getRelatedItems() {\r\n return this.relatedItems.filter(item => item.visible.includes(this.activeSubType_));\r\n }\r\n\r\n navigationItem() {\r\n return new DesignNavigationItem('Vanity', this);\r\n }\r\n\r\n subTypes() {\r\n return this.pedestalSink && this.completeVanity ? [Vanity.Types.Custom, Vanity.Types.Complete] : [];\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return this.activeSubType_ === Vanity.Types.Complete;\r\n }\r\n\r\n activeSubType() {\r\n return this.activeSubType_;\r\n }\r\n\r\n subParts() {\r\n const relatedItems = this.getRelatedItems();\r\n const excluded = [];\r\n const vanityPart = relatedItems.find(navItem => navItem.partId === \"vanity_cabinet\");\r\n if (vanityPart && vanityPart.activeFeature\r\n && vanityPart.activeFeature.metaData[\"VanityHandle\"]\r\n && vanityPart.activeFeature.metaData[\"VanityHandle\"].includes(\"None\")) {\r\n excluded.push(\"vanity_handle\")\r\n }\r\n return relatedItems\r\n .filter(item => !excluded.includes(item.partId))\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n // subPartsWithAccentWall() {\r\n // const vanityAccent = this.layout.parts.Walls.vanityAccent;\r\n // return [new DesignNavigationItem(vanityAccent.partName, vanityAccent),\r\n // ...this.getRelatedItems().map(_ => new DesignNavigationItem(_.partName, _))];\r\n // }\r\n\r\n handleSubTypeClick(subType) {\r\n this.activeSubType_ = subType;\r\n this.getRelatedItems().forEach((relatedItem) => {\r\n if (!relatedItem.activeFeature) {\r\n relatedItem.setDefault()\r\n }\r\n });\r\n }\r\n\r\n setDefaultPartAfterSubTypeClick() {\r\n return this.subParts()[0]\r\n }\r\n\r\n setDefault(layout) {\r\n this.getRelatedItems().forEach(_ => _.setDefault(layout));\r\n }\r\n\r\n counterTopSize() {\r\n return this.getCounterTopSize() || '24in'; // temporary hardcode until we would have meta data finished\r\n }\r\n\r\n getCounterTopSize() {\r\n\r\n if (this.activeSubType_ === Vanity.Types.Custom && this.pedestalSink && !this.pedestalSink.placeholderChanged\r\n && this.pedestalSink.placeholderFeature && +this.pedestalSink.placeholderFeature.vanitySize === 72) {\r\n return '72in' // placeholder hardcode\r\n }\r\n\r\n if (this.activeSubType_ === Vanity.Types.Complete) {\r\n if (!this.completeVanity.activeFeature) {\r\n this.completeVanity.setDefault()\r\n }\r\n return this.completeVanity.activeFeature.vanitySize + \"in\"\r\n } else {\r\n if (this.pedestalSink && !this.pedestalSink.activeFeature) {\r\n this.pedestalSink.setDefault()\r\n }\r\n return (this.pedestalSink && this.pedestalSink.activeFeature)\r\n ? this.pedestalSink.activeFeature.vanitySize + \"in\"\r\n : null;\r\n }\r\n }\r\n\r\n toggleVanityParts(disabled) {\r\n this.getRelatedItems().forEach(relItem => {\r\n if (relItem.partId === \"vanity_sink\" || relItem.partId === \"vanity_faucet\"\r\n || relItem.partId === \"vanity_countertop\" || relItem.partId === \"vanity_cabinet\"\r\n || relItem.partId === \"vanity_handle\") {\r\n relItem.disabled = disabled;\r\n }\r\n });\r\n }\r\n}\r\n\r\n","import {connect} from \"react-redux\";\r\nimport {withRouter} from \"react-router-dom\";\r\n\r\nimport {addToCart, clearCart, removeFromCart, restoreCart, updateCanvasCount} from \"../../../actions/actionFunctions\";\r\nimport {getCartItemObject} from \"../../../misc/helpers\";\r\nimport {\r\n createCartList,\r\n getMatchingColorFeature,\r\n navFeatureCLick\r\n} from \"../lookNavigation/lookFunctions\";\r\nimport {setLookRemovedCartItems} from \"../../../actions/shoppingCartFunctions\";\r\nimport {\r\n featureIsBundle,\r\n getCartItemsArrayFromFeature, getFeatureUrl,\r\n} from \"../lookNavigation/lookFunctions2\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../config\";\r\nimport {CART_ITEM_ADDED_BY} from \"../../shoppingCart/cartItemInterface\";\r\n\r\nconst WithUpdateLookCartItem = (props) => {\r\n\r\n const {cartItems, removeFromCart, addToCart, qtActiveCategory, lookActiveFeature, history, children, updateCanvasCount,\r\n lookRemovedCartItems, setLookRemovedCartItems, filterGroups, groheActiveFeatureQuantity,\r\n clearCart, restoreCart, fabricatorSettings} = props;\r\n\r\n /**\r\n * Creates cart items list depending on quotingTool features\r\n * @param neededFeature {featureInterface} current active updated feature\r\n * @param withAddToCart {boolean} should we add it to the cart (for product journey) or just update\r\n */\r\n const updateLookCartItem = (neededFeature = lookActiveFeature, withAddToCart = false) => {\r\n // if (!checkIfFeatureCanBeAddedToTheCart(neededFeature)) {\r\n // return false\r\n // }\r\n\r\n return updateLookCartItemsNew(neededFeature, withAddToCart); // temp test, if everything is ok - remove redundant code below\r\n\r\n let itemsToAdd = [];\r\n // const urlPartId = neededFeature.partId.replace(/_/gi, \"-\");\r\n const layout = getCurrentLayout();\r\n const addedCartItems = cartItems.filter(cItem => {\r\n // if (featureGroup.layerPositions) {\r\n // return (cItem.partId === neededFeature.partId)\r\n // && (cItem.cartFeature.metaData.layerPosition === neededFeature.metaData.layerPosition)\r\n // }\r\n const parent = layout.getFeatureGroupByPartId(cItem.partId);\r\n if (!IS_PRODUCT_JOURNEY && parent && parent.disabled) { // remove these cartItems too\r\n return true\r\n }\r\n return cItem.partId === neededFeature.partId\r\n });\r\n if (addedCartItems.length && !IS_PRODUCT_JOURNEY) {\r\n addedCartItems.forEach(addedCartItem => {\r\n removeFromCart(addedCartItem);\r\n if (featureIsBundle(addedCartItem.cartFeature, cartItems)) {\r\n cartItems.forEach(cItem => {\r\n if (cItem.relatedProductParent && cItem.relatedProductParent.dbFeature.id === addedCartItem.cartFeature.dbFeature.id) {\r\n removeFromCart(cItem)\r\n }\r\n })\r\n }\r\n })\r\n }\r\n // let newQuantity = IS_PRODUCT_JOURNEY\r\n // ? groheActiveFeatureQuantity\r\n // : addedCartItems.length ? addedCartItems[0].quantity : 1;\r\n let newQuantity = groheActiveFeatureQuantity;\r\n if (neededFeature.metaData.layerPosition && !IS_PRODUCT_JOURNEY) {\r\n const featureGroup = neededFeature.getParent();\r\n Object.keys(featureGroup.layerPositions).forEach(position => {\r\n if (featureGroup.layerPositions[position]) {\r\n if (position !== neededFeature.metaData.layerPosition) {\r\n if (neededFeature.dbFeature.sharedFeatureName === featureGroup.layerPositions[position].dbFeature.sharedFeatureName) {\r\n if (newQuantity === 1) {\r\n newQuantity += 1\r\n }\r\n } else {\r\n // here we update cart with same partId, but different position (for now it should not be executed since we have all positions same)\r\n itemsToAdd.push(getCartItemObject(featureGroup.layerPositions[position], 1, qtActiveCategory));\r\n if (newQuantity > 1) {\r\n newQuantity--;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n if (neededFeature.partId === \"vanity_faucet\") {\r\n const sinkParent = featureGroup.getParent().sink;\r\n const addedSinkItem = cartItems.find(cItem => {\r\n return cItem.partId === sinkParent.partId\r\n });\r\n if (addedSinkItem && addedSinkItem.cartFeature.dbFeature.sharedFeatureName && sinkParent.activeFeature && sinkParent.activeFeature.dbFeature.sharedFeatureName\r\n && (addedSinkItem.cartFeature.dbFeature.sharedFeatureName !== sinkParent.activeFeature.dbFeature.sharedFeatureName)) {\r\n // here we update cart with automatically changed feature (via the metadata)\r\n itemsToAdd.push(getCartItemObject(sinkParent.activeFeature, addedSinkItem.quantity, qtActiveCategory));\r\n removeFromCart(addedSinkItem);\r\n }\r\n }\r\n }\r\n itemsToAdd = [...itemsToAdd, ...getCartItemsArrayFromFeature(neededFeature, newQuantity, qtActiveCategory)]; // here we update cart with clicked feature\r\n\r\n if (!IS_PRODUCT_JOURNEY) {\r\n const featureGroups = getLookList(true);\r\n if (featureGroups && featureGroups.length) {\r\n let shouldBeAdded = [];\r\n featureGroups.forEach(parentObject => {\r\n if (parentObject.featureGroup.layerPositions) {\r\n Object.keys(parentObject.featureGroup.layerPositions).forEach(position => {\r\n if (parentObject.featureGroup.layerPositions[position]) {\r\n if (position !== neededFeature.metaData.layerPosition) {\r\n if (neededFeature.dbFeature.sharedFeatureName === parentObject.featureGroup.layerPositions[position].dbFeature.sharedFeatureName) {\r\n if (newQuantity === 1) {\r\n newQuantity += 1\r\n }\r\n } else {\r\n // here we update cart with same partId, but different position (for now it should not be executed since we have all positions same)\r\n itemsToAdd.push(getCartItemObject(parentObject.featureGroup.layerPositions[position], 1, qtActiveCategory));\r\n if (newQuantity > 1) {\r\n newQuantity--;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n })\r\n itemsToAdd = [...itemsToAdd, ...shouldBeAdded]; // here we update cart with enabled but not added features\r\n }\r\n }\r\n\r\n addToCart(itemsToAdd);\r\n\r\n updateRemovedCartItems(itemsToAdd);\r\n layout.updateLocalStorage();\r\n }\r\n\r\n const updateRemovedCartItems = (itemsToAdd) => {\r\n if (lookRemovedCartItems.length) {\r\n let newRemovedCartItems = [...lookRemovedCartItems];\r\n itemsToAdd.forEach(cartItem => {\r\n const existingIndex = newRemovedCartItems.findIndex(removedCartItem => {\r\n if (cartItem.cartFeature.metaData.layerPosition) {\r\n return (removedCartItem.partId === cartItem.partId)\r\n && (cartItem.cartFeature.metaData.layerPosition === removedCartItem.cartFeature.metaData.layerPosition)\r\n }\r\n return removedCartItem.partId === cartItem.partId || (\r\n removedCartItem.relatedProductParent && removedCartItem.relatedProductParent.partId === cartItem.partId\r\n )\r\n });\r\n if (existingIndex > -1) {\r\n newRemovedCartItems.splice(existingIndex, 1);\r\n }\r\n });\r\n if (newRemovedCartItems.length !== lookRemovedCartItems.length) {\r\n setLookRemovedCartItems(newRemovedCartItems);\r\n }\r\n }\r\n }\r\n\r\n const updateLookCartItemsNew = (neededFeature, withAddToCart) => {\r\n\r\n clearCart();\r\n let itemsToAdd = createCartList(qtActiveCategory, null);\r\n itemsToAdd.forEach(currentCartItem => {\r\n const oldExistingCartItem = cartItems.find(cItem => cItem.partId === currentCartItem.partId);\r\n if (oldExistingCartItem && !IS_PRODUCT_JOURNEY) {\r\n currentCartItem.addedBy = oldExistingCartItem.addedBy; // if it was changed by user - keep it\r\n if (oldExistingCartItem.quantity > currentCartItem.quantity) {\r\n if (currentCartItem.cartFeature.getParent) {\r\n const parent = currentCartItem.cartFeature.getParent();\r\n if (parent.layerPositions) {\r\n currentCartItem.quantity = Object.keys(parent.layerPositions).filter(positionKey => parent.layerPositions[positionKey]).length\r\n } else {\r\n currentCartItem.quantity = oldExistingCartItem.quantity;\r\n }\r\n } else {\r\n currentCartItem.quantity = oldExistingCartItem.quantity;\r\n }\r\n }\r\n }\r\n if (IS_PRODUCT_JOURNEY && neededFeature && !neededFeature.notAvailableInVisualizer) {\r\n if (currentCartItem.partId === neededFeature.partId\r\n || (currentCartItem.relatedProductParent\r\n && (currentCartItem.relatedProductParent.dbFeature.id === neededFeature.dbFeature.id))) {\r\n currentCartItem.quantity = groheActiveFeatureQuantity;\r\n if (withAddToCart) {\r\n currentCartItem.addedBy = CART_ITEM_ADDED_BY.user;\r\n }\r\n }\r\n }\r\n });\r\n if (neededFeature && neededFeature.notAvailableInVisualizer) {\r\n const newCartItem = getCartItemObject(neededFeature, groheActiveFeatureQuantity, qtActiveCategory);\r\n newCartItem.addedBy = withAddToCart ? CART_ITEM_ADDED_BY.user : CART_ITEM_ADDED_BY.auto;\r\n itemsToAdd.push(newCartItem);\r\n }\r\n if (IS_PRODUCT_JOURNEY && fabricatorSettings.checkout) {\r\n itemsToAdd = [...itemsToAdd, ...cartItems.filter(cItem => cItem.addedBy === CART_ITEM_ADDED_BY.user)]; // keep old added cartItems!\r\n }\r\n if (fabricatorSettings.checkout) {\r\n cartItems.forEach(cItem => {\r\n if (!cItem.keepOnLookUpdate) {\r\n return\r\n }\r\n if (!itemsToAdd.some(itemToAdd => itemToAdd.id === cItem.id)) {\r\n itemsToAdd.push(cItem) // keep old added cartItems! that was added from wizard list for example\r\n }\r\n })\r\n }\r\n restoreCart({cartItems: itemsToAdd});\r\n updateRemovedCartItems(itemsToAdd);\r\n const layout = getCurrentLayout();\r\n layout.updateLocalStorage();\r\n }\r\n\r\n /**\r\n * updates array of features\r\n * @param notMatchingFeatures {array}\r\n * @param fromFeature {featureInterface}\r\n * @param changeUrl {boolean}\r\n * @param directChange {boolean} // if only update\r\n */\r\n const updateAllLookCartItems = (notMatchingFeatures = [],\r\n fromFeature = lookActiveFeature,\r\n changeUrl = true,\r\n directChange = false) => {\r\n let needToBeUpdated = [fromFeature];\r\n if (notMatchingFeatures.length) {\r\n const currentFeatureName = fromFeature.getSplittedFeatureName();\r\n let toiletEnabled = false;\r\n notMatchingFeatures.forEach(notMatchingFeature => {\r\n if (notMatchingFeature.dbFeature.id !== fromFeature.dbFeature.id) {\r\n const sameFeatureAsActive = directChange ? {part: notMatchingFeature} : getMatchingColorFeature(fromFeature, notMatchingFeature, filterGroups)\r\n if (sameFeatureAsActive) {\r\n navFeatureCLick(sameFeatureAsActive.part, false);\r\n needToBeUpdated.push(sameFeatureAsActive.part);\r\n switch (sameFeatureAsActive.part.partId) {\r\n case \"toilet_brush\":\r\n case \"paper_holder\": {\r\n if (!toiletEnabled) {\r\n const layout = getCurrentLayout();\r\n const relatedFeatureGroup = layout.getFeatureGroupByPartId(\"toilet\");\r\n if (relatedFeatureGroup && relatedFeatureGroup.disabled && relatedFeatureGroup.activeFeature && !toiletEnabled) {\r\n navFeatureCLick(relatedFeatureGroup.activeFeature, false);\r\n needToBeUpdated.push(relatedFeatureGroup.activeFeature);\r\n }\r\n }\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n } else {\r\n console.log(\"sameFeatureAsActive not found\", notMatchingFeature.partId, currentFeatureName);\r\n }\r\n }\r\n })\r\n }\r\n needToBeUpdated.forEach(featureToClick => {\r\n navFeatureCLick(featureToClick, false);\r\n });\r\n // console.log(\"needToBeUpdated\", needToBeUpdated);\r\n updateLookCartItem(fromFeature)\r\n updateCanvasCount();\r\n // if (IS_PRODUCT_JOURNEY) {\r\n // setLookActiveCategory(\"\");\r\n // }\r\n // if (changeUrl && IS_PRODUCT_JOURNEY) {\r\n if (changeUrl) {\r\n history.push(getFeatureUrl(fromFeature, true));\r\n }\r\n }\r\n\r\n return children(updateLookCartItem, updateAllLookCartItems)\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookActiveFeature} = store.lookState;\r\n const {cartItems, lookRemovedCartItems} = store.cartState;\r\n const {qtActiveCategory} = store.qtState;\r\n const {filterGroups} = store.filterState;\r\n const {groheActiveFeatureQuantity} = store.groheState;\r\n const {settings} = store.fabricatorState;\r\n\r\n return {\r\n lookActiveFeature,\r\n cartItems,\r\n qtActiveCategory,\r\n lookRemovedCartItems,\r\n filterGroups,\r\n groheActiveFeatureQuantity,\r\n fabricatorSettings: settings,\r\n }\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n removeFromCart,\r\n addToCart,\r\n updateCanvasCount,\r\n setLookRemovedCartItems,\r\n clearCart,\r\n restoreCart\r\n};\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(WithUpdateLookCartItem)\r\n)\r\n","import orderBy from \"lodash/orderBy\";\r\n\r\nimport {Part} from \"../part\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {showerThumbnail} from '../../../bvComponent/core/assets';\r\n\r\n// import store from \"../../../../store\";\r\n\r\nimport {ShowerTubCombo} from \"./showerTubCombo\";\r\n\r\nimport ShowerFixture from \"../subparts/shower/showerFixture\";\r\nimport ShowerGlass from \"../subparts/shower/showerGlass\";\r\n// import ShowerOverlay from \"../subparts/shower/showerOverlay\";\r\nimport ShowerBody from \"../subparts/shower/showerBody\";\r\nimport ShowerWall from \"../subparts/shower/showerWall\";\r\nimport ShowerWallAccent from \"../subparts/shower/showerWallAccent\";\r\nimport ShowerDoor from \"../subparts/shower/showerDoor\";\r\nimport ShowerPanCombo from \"../subparts/shower/showerPanCombo\";\r\nimport ShowerDoorHandle from \"../subparts/shower/showerDoorHandle\";\r\nimport PonyWallCap from \"../subparts/shower/ponyWallCap\";\r\nimport PonyWallGlass from \"../subparts/shower/ponyWallGlass\";\r\nimport ShowerFloor from \"../subparts/shower/showerFloor\";\r\nimport Threshold from \"../subparts/shower/threshold\";\r\nimport ShowerDrain from \"../subparts/shower/showerDrain\";\r\nimport ShowerHead from \"../subparts/shower/showerHead\";\r\n\r\nexport class Shower extends Part {\r\n static id = 'Shower';\r\n\r\n static Type = {\r\n Custom: 'Custom',\r\n Complete: 'Complete',\r\n Combo: 'Combo',\r\n All: 'All'\r\n };\r\n\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partThumbnail = showerThumbnail;\r\n this.partName = 'Shower';\r\n this.translateId = \"visualizer.bathroom.shower\";\r\n this.relatedItems = [];\r\n this.activeSubType_ = Shower.Type.Custom;\r\n\r\n this.customBodyType = 1; // Door\r\n\r\n this.showerBody = null;\r\n this.showerGlass = null;\r\n this.showerWall = null;\r\n this.showerWallAccent = null;\r\n\r\n // old\r\n this.showerFloor = null;\r\n this.showerOverlay = null;\r\n // old\r\n\r\n this.showerPanCombo = null;\r\n this.threshold = null;\r\n this.showerFixture = null;\r\n this.showerBodySelectedByUser = false;\r\n this.showerDoor = null;\r\n this.showerDoorHandle = null;\r\n\r\n this.ponyWallCap = null;\r\n this.ponyWallGlass = null;\r\n\r\n this.showerBody = new ShowerBody(true);\r\n this.showerBody.getParent = () => this;\r\n this.showerBody.type = Shower.Type.All;\r\n this.showerBody.counts = {\r\n allLayoutFeaturesCount: 0,\r\n largeLayoutFeaturesCount: 0,\r\n smallLayoutFeaturesCount: 0\r\n };\r\n this.relatedItems.push(this.showerBody);\r\n\r\n this.showerFloorIsActive = false;\r\n\r\n }\r\n\r\n load(dbFeature) {\r\n let relatedItemName = \"\",\r\n relatedItemType = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Shower Pan\":\r\n case \"Shower Pans\":\r\n relatedItemName = \"showerPanCombo\";\r\n RelatedItemClass = ShowerPanCombo;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Wall\":\r\n case \"Shower Walls\":\r\n case \"ShowerInteriorWall\": // OLD\r\n relatedItemName = \"showerInteriorWall\";\r\n RelatedItemClass = ShowerWall;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Wall Accent\":\r\n relatedItemName = \"showerWallAccent\";\r\n RelatedItemClass = ShowerWallAccent;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Door\":\r\n case \"Shower_Door\":\r\n if (!dbFeature.displayName.includes(\"Neo Angle\")) {\r\n relatedItemName = \"showerDoor\";\r\n RelatedItemClass = ShowerDoor;\r\n relatedItemType = Shower.Type.Custom;\r\n }\r\n break;\r\n case \"Shower Door Handle\":\r\n relatedItemName = \"showerDoorHandle\";\r\n RelatedItemClass = ShowerDoorHandle;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"ShowerPan\":\r\n relatedItemName = \"threshold\";\r\n RelatedItemClass = Threshold;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"ShowerFloor\":\r\n relatedItemName = \"showerFloor\";\r\n RelatedItemClass = ShowerFloor;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Fixture\":\r\n relatedItemName = \"showerFixture\";\r\n RelatedItemClass = ShowerFixture;\r\n relatedItemType = Shower.Type.All;\r\n break;\r\n case \"Shower Drain\":\r\n relatedItemName = \"showerDrain\";\r\n RelatedItemClass = ShowerDrain;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Head\":\r\n relatedItemName = \"showerHead\";\r\n RelatedItemClass = ShowerHead;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Pony Wall Cap\":\r\n relatedItemName = \"ponyWallCap\";\r\n RelatedItemClass = PonyWallCap;\r\n relatedItemType = Shower.Type.All;\r\n break;\r\n case \"Pony Wall Glass\":\r\n relatedItemName = \"ponyWallGlass\";\r\n RelatedItemClass = PonyWallGlass;\r\n relatedItemType = Shower.Type.All;\r\n break;\r\n case \"Shower Glass\":\r\n if (!this.showerBody) {\r\n this.showerBody = new ShowerBody(true);\r\n this.relatedItems.push(this.showerBody);\r\n }\r\n relatedItemName = \"showerGlass\";\r\n RelatedItemClass = ShowerGlass;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n // case \"Shower Overlay\":\r\n // relatedItemName = \"showerOverlay\";\r\n // RelatedItemClass = ShowerOverlay;\r\n // relatedItemType = Shower.Type.Custom;\r\n // break;\r\n case \"Shower Body\":\r\n relatedItemName = \"showerBody\";\r\n RelatedItemClass = ShowerBody;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n if (relatedItemName !== \"shadows\") {\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].type = relatedItemType;\r\n this[relatedItemName].load(dbFeature);\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n setSpecificRules() {}\r\n\r\n // setLayers(layout, placeholdersNeeded) {\r\n // let res = [];\r\n // const relatedItems = this.getRelatedItems();\r\n // // console.log('relatedItems', relatedItems);\r\n // relatedItems.forEach(relatedItem => {\r\n // relatedItem.setLayers(layout);\r\n // });\r\n // if (this.showerDoor && !this.showerDoor.activeFeature) { // we need it cause shower door is relying on shPanCombo\r\n // this.showerDoor.setLayers(layout);\r\n // }\r\n // if (this.showerDoorHandle && !this.showerDoorHandle.activeFeature) {\r\n // this.showerDoorHandle.setLayers(layout);\r\n // }\r\n // relatedItems.forEach(relatedItem => {\r\n //\r\n // (placeholdersNeeded && !relatedItem.placeholderChanged && relatedItem.placeholderFeature)\r\n // ? relatedItem.placeholderFeature.layer.addTo(res)\r\n // : relatedItem.activeFeature && relatedItem.activeFeature.layer ? relatedItem.activeFeature.layer.addTo(res) : null\r\n //\r\n // // NN(relatedItem.activeFeature, (activeFeature) => activeFeature.layer.addTo(res));\r\n //\r\n // if ((relatedItem instanceof ShowerBody || relatedItem instanceof ShowerInteriorWallAccent)\r\n // && relatedItem.activeFeatureParts && relatedItem.activeFeatureParts.length) {\r\n // relatedItem.activeFeatureParts.forEach((activeFeaturePart) => {\r\n // activeFeaturePart && !activeFeaturePart.disabled && activeFeaturePart.layer && activeFeaturePart.layer.addTo(res);\r\n // })\r\n // }\r\n // if (relatedItem instanceof ShowerWall && relatedItem.activeFeatureParts && relatedItem.placeholderChanged && relatedItem.activeFeatureParts.length) {\r\n // relatedItem.activeFeatureParts.forEach((activeFeaturePart) => {\r\n // activeFeaturePart && !activeFeaturePart.disabled && activeFeaturePart.layer && activeFeaturePart.layer.addTo(res);\r\n // })\r\n // }\r\n //\r\n // });\r\n //\r\n // return res.length ? res : null;\r\n // }\r\n\r\n subTypes() {\r\n return this.showerBody && (this.showerBody.features.some(showerBodyFeature => showerBodyFeature.type === 0)\r\n && this.showerBody.features.some(showerBodyFeature => showerBodyFeature.type === 1)) ? [\r\n Shower.Type.Custom,\r\n Shower.Type.Complete,\r\n ] : []\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return true;\r\n }\r\n\r\n activeSubType() {\r\n return this.activeSubType_;\r\n }\r\n\r\n handleSubTypeClick(subType, handleNavigationItemClick) {\r\n this.activeSubType_ = subType;\r\n this.showerBody.setDefault(); // set default custom shower\r\n if (handleNavigationItemClick) {\r\n handleNavigationItemClick(this.showerBody.navigationSubItems()[0]) // set default custom shower\r\n }\r\n }\r\n\r\n getRelatedItems() {\r\n const relatedItems = orderBy(this.relatedItems, 'layerPriority');\r\n if (this.showerTubComboIsActive()) {\r\n return relatedItems\r\n }\r\n return relatedItems.filter((relatedItem) => {\r\n return relatedItem.type === this.activeSubType_ || relatedItem.type === Shower.Type.All\r\n })\r\n }\r\n\r\n subParts() {\r\n const activeShowerGroup = this.getActiveShowerGroup();\r\n const ponyWallIsActive = activeShowerGroup.showerDimensions() === \"Pony\";\r\n return this.getRelatedItems()\r\n .filter(item => {\r\n if (item.isPonyWallPart) {\r\n item.visible = ponyWallIsActive\r\n }\r\n return item.visible\r\n })\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n // return filter(this.relatedItems, {visible: true}).map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n //\r\n // toggleShowerParts(disabled, keepLeftWall) {\r\n // this.getRelatedItems().forEach((relItem) => {\r\n // console.log('relItem', relItem);\r\n // if (\r\n // relItem.partId !== \"shower_interior_wall\"\r\n // && relItem.partId !== \"shower_wall_accent\"\r\n // && relItem.partId !== \"shower_fixture\"\r\n // && relItem.partId !== \"shower_door\"\r\n // && relItem.partId !== \"shower_door_handle\"\r\n // && relItem.partId !== \"pony_wall\"\r\n // && relItem.partId !== \"pony_wall_cap\"\r\n // && relItem.partId !== \"pony_wall_glass\"\r\n // ) {\r\n // relItem.disabled = disabled;\r\n // }\r\n // });\r\n // if (!keepLeftWall) {\r\n // this.layout.parts.Walls.wallExL.disabled = disabled;\r\n // }\r\n // }\r\n\r\n setDefault(layout) {\r\n const relatedItems = orderBy(this.relatedItems, 'layerPriority');\r\n relatedItems.forEach(_ => _.setDefault(layout));\r\n }\r\n\r\n setDefaultPartAfterSubTypeClick() {\r\n return this.subParts()[0]\r\n }\r\n\r\n handleSubPartClick() {\r\n\r\n }\r\n\r\n /**\r\n * Gets the current shower size from metaValues.\r\n */\r\n showerSize() {\r\n if (this.showerTubComboIsActive()) {\r\n const showerTubCombo = this.getActiveShowerGroup();\r\n if (showerTubCombo) {\r\n const activeRelItem = showerTubCombo.relatedItems.find(featureGroup => featureGroup.partId === showerTubCombo.bottomTub)\r\n || showerTubCombo.replacementTub;\r\n if (activeRelItem && activeRelItem.activeFeature && activeRelItem.activeFeature.metaData[\"ShowerSize\"]) {\r\n return activeRelItem.activeFeature.metaData[\"ShowerSize\"][0]\r\n }\r\n }\r\n return null\r\n }\r\n if (!this.showerBody || !this.showerBody.activeFeature) {\r\n return null;\r\n }\r\n let showerSizeValues = this.showerBody.activeFeature.metaData[\"ShowerSize\"];\r\n if (!showerSizeValues || !showerSizeValues.length) {\r\n if (this.showerBody.activeFeature.partName.includes(\"Complete\")) {\r\n showerSizeValues = ['30'];\r\n } else {\r\n console.warn('No Shower size.');\r\n }\r\n } else if (showerSizeValues[0] === \"-\") {\r\n showerSizeValues[0] = this.showerBody.activeFeature.partName.includes(\"60in\") ? \"60\" : \"30\"\r\n }\r\n\r\n return showerSizeValues[0];\r\n }\r\n\r\n /**\r\n * Gets the current shower dimensions from showerBody\r\n */\r\n showerDimensions() {\r\n if (!this.showerBody)\r\n return \"Full\";\r\n return this.showerBody.activeFeature ? this.showerBody.activeFeature.showerDimensions : null;\r\n // \"Full\" : \"Half\";\r\n }\r\n\r\n isComplete() {\r\n if (!this.showerBody) {\r\n return true;\r\n } else if (this.showerTubComboIsActive()) {\r\n return false;\r\n } else {\r\n return this.showerBody.activeFeature\r\n }\r\n }\r\n\r\n showerTubComboIsActive() {\r\n const comboPart = this.layout.parts[ShowerTubCombo.id];\r\n return comboPart && comboPart.showerTubComboIsActive\r\n }\r\n\r\n getActiveShowerGroup() { // user for taking sizes, etc...\r\n return this.showerTubComboIsActive() ? this.layout.parts[ShowerTubCombo.id] : this;\r\n }\r\n}\r\n\r\n","export const baseDashboardImagesPath = document.kvConfig.kioskMode ? './images/dashboard/images/icons/pj-scope-icons/enabled/' : ((location.port === '9007')\r\n ? 'http://quotekandb.com/content/Views/dashboard/images/icons/pj-scope-icons/enabled/'\r\n : '/content/Views/dashboard/images/icons/pj-scope-icons/enabled/');\r\n\r\n// let isHttpBNIP = baseNewImagesPath.length > 4 && baseNewImagesPath.substring(0, 4).toLowerCase() == \"http\";\r\nconst isLocal = (document.kvConfig.kioskMode || document.kvConfig.noInternetMode || location.port === '9007');\r\nexport const baseAssetsPath = isLocal\r\n ? './'\r\n : (document.querySelectorAll('link')[0].href.substring(0, document.querySelectorAll('link')[0].href.indexOf('/visualizers/') + \"/visualizers/\".length));\r\n // : '/content/Views/visualizers/';\r\n\r\nexport const baseNewImagesPath = isLocal ? baseAssetsPath : baseAssetsPath + \"styles/\"\r\n","import {getPriceWithCurrency} from \"./helpers\";\r\nimport store from \"../store\";\r\n\r\n/**\r\n *\r\n * @param price {string|number|null}\r\n * @param feature {featureInterface}\r\n * @param fabricatorData {object}\r\n * @param messages {object} intl messages object (t obe able to use in the receipt)\r\n * @return {string}\r\n */\r\nexport const getPriceWithIncluded = (price, feature, fabricatorData, messages) => {\r\n if (price) {\r\n return getPriceWithCurrency(fabricatorData.settings, price, feature, false)\r\n }\r\n if (feature && fabricatorData.isLowes && (feature.partId === \"center_island_sink\" || feature.partId === \"sink\")) {\r\n return messages[\"navItem.priceNotIncluded\"]\r\n }\r\n return messages[\"navItem.priceIncluded\"]\r\n}\r\n\r\n/**\r\n * returns actual price property\r\n * @param feature {featureInterface}\r\n * @param fabricatorSettings {object}\r\n * @return {string|number|null}\r\n */\r\nexport const getFeaturePriceProperty = (feature, fabricatorSettings = null) => {\r\n let settings = fabricatorSettings;\r\n if (!settings) {\r\n settings = store.getState().fabricatorState.settings;\r\n }\r\n if (settings.useFabricatorCostPrices) { // show fabricator prices instead of retail prices\r\n return feature.dbFeature.price\r\n }\r\n if (settings.showSalePrices && (typeof feature.dbFeature.fabricatorCost == \"number\") && (feature.dbFeature.fabricatorCost > 0)) {\r\n return feature.dbFeature.fabricatorCost\r\n }\r\n return feature.dbFeature.cost\r\n}\r\n\r\n\r\n/**\r\n *\r\n * @param fabricatorData {object}\r\n * @param forTotal {boolean}\r\n * @return {boolean}\r\n */\r\nexport const getShowPrice = (fabricatorData, forTotal = false) => {\r\n const fabricatorSettings = fabricatorData.settings;\r\n if (forTotal) {\r\n return fabricatorSettings.showPricing && !fabricatorData.hidePricesFromUser;\r\n }\r\n return fabricatorSettings.showPricing && !fabricatorData.hideCheckoutBreakdownCost && !fabricatorData.hidePricesFromUser;\r\n};\r\n\r\nexport function numberWithCommas(x) {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n}\r\n\r\n/**\r\n *\r\n * @param price {number}\r\n * @param markUpValue {number}\r\n * @param markUpType {\"mark_up\"|\"mark_down\"|undefined}\r\n * @return {number}\r\n */\r\nconst getMarkUpPrice = (price, markUpValue, markUpType) => {\r\n const percentCost = price * markUpValue / 100;\r\n return markUpType === \"mark_down\" ? price - percentCost : price + percentCost\r\n}\r\n\r\n/**\r\n *\r\n * @param price {number}\r\n * @param markUpLogic {markUpLogic}\r\n * @param fabricatorSettings {object}\r\n * @return {number}\r\n */\r\nexport const updatePriceWithMarkUp = (price, markUpLogic, fabricatorSettings) => {\r\n if (!price || !markUpLogic) {\r\n return price\r\n }\r\n if (fabricatorSettings && fabricatorSettings.useFabricatorCostPrices) {\r\n if (markUpLogic.cost && markUpLogic.cost.value) {\r\n return getMarkUpPrice(price, markUpLogic.cost.value, markUpLogic.cost.type)\r\n }\r\n } else if (fabricatorSettings && fabricatorSettings.showSalePrices) {\r\n if (markUpLogic.discounts && markUpLogic.discounts.value) {\r\n return getMarkUpPrice(price, markUpLogic.discounts.value, markUpLogic.discounts.type)\r\n }\r\n } else if (markUpLogic.retail && markUpLogic.retail.value) {\r\n return getMarkUpPrice(price, markUpLogic.retail.value, markUpLogic.retail.type)\r\n }\r\n return price\r\n}\r\n\r\nexport const parseMarkUp = (markUpString) => {\r\n if (!markUpString) {\r\n return \"\"\r\n }\r\n let globalMarkUp = JSON.parse(markUpString);\r\n if (typeof globalMarkUp === \"object\" && (globalMarkUp != null)) {\r\n // {retail: {value: \"10\", type: \"mark_up\"}} -> {retail: {value: 10, type: \"mark_up\"}}\r\n Object.keys(globalMarkUp).forEach(key => {\r\n if ((typeof globalMarkUp[key] === \"object\") && globalMarkUp[key].value) {\r\n globalMarkUp[key].value = +globalMarkUp[key].value;\r\n }\r\n });\r\n if (globalMarkUp.isUpdatedInJobBoard) {\r\n delete globalMarkUp.isUpdatedInJobBoard // we don't need this property anymore, once we save the job - it should be erased\r\n }\r\n }\r\n return globalMarkUp\r\n}\r\n","import {getAvailableSteps, getFeatureGroupFromWizardGroup, navItemIsExcluded} from \"./lookWizardFunctions\";\r\nimport Config, {getCommonVisualizerType} from \"../../../../../config\";\r\nimport {fixWizardItem} from \"./wizardFunctionsCommon\";\r\nimport {\r\n getVisualizerTypeFromSubscription,\r\n hasSubscriptionForRoom\r\n} from \"../../../../../misc/visualizerSwitchingFunctions\";\r\n\r\nexport const getWizardGroupName = (wizardGroup) => {\r\n if (!wizardGroup) {\r\n return \"\"\r\n }\r\n return wizardGroup.title || wizardGroup.customDisplayName || wizardGroup.productCartTitle || wizardGroup.groupName || \"\"\r\n // if (stepName === \"Vanitie\") { // it should be renamed on the backend so no need for that\r\n // stepName = \"Vanity\"\r\n // }\r\n}\r\n\r\n/**\r\n * this returns new wizard steps depending on the current selection\r\n * @param wizardActiveItem {wizardItemInterface}\r\n * @param currentStep {number}\r\n * @param allWizardSelectedValues {object}\r\n * @returns {object}\r\n */\r\nexport const getNextWizardSteps = (wizardActiveItem, currentStep, allWizardSelectedValues) => {\r\n// const oldWizardSteps = getAvailableSteps(wizardActiveItem, oldWizardSelectedValues, true);\r\n\r\n let newValues = {};\r\n Object.keys(allWizardSelectedValues).forEach(key => {\r\n if (+key <= currentStep) {\r\n newValues[key] = allWizardSelectedValues[key] // here we create values object just until the current selected value\r\n }\r\n });\r\n\r\n const afterCurrentSelectionWizardSteps = getAvailableSteps(wizardActiveItem, newValues, true, allWizardSelectedValues);\r\n // const allWizardSteps = getAvailableSteps(wizardActiveItem, allWizardSelectedValues, true);\r\n\r\n // const nextStep = currentStep + 1;\r\n\r\n // if (\r\n // afterCurrentSelectionWizardSteps[nextStep] && allWizardSteps[nextStep]\r\n // && afterCurrentSelectionWizardSteps[nextStep].stepGroups.every((wizardGroup, wizardGroupIndex) => {\r\n // return allWizardSteps[nextStep].stepGroups[wizardGroupIndex] && wizardGroup.id === allWizardSteps[nextStep].stepGroups[wizardGroupIndex].id\r\n // }) && (allWizardSelectedValues[nextStep] && allWizardSelectedValues[nextStep].wizardGroup\r\n // && afterCurrentSelectionWizardSteps[nextStep].stepGroups.some(wizG => allWizardSelectedValues[nextStep].wizardGroup.id === wizG.id))\r\n // ) {\r\n // return allWizardSteps // keep it, as we didn't change the flow\r\n // }\r\n\r\n return afterCurrentSelectionWizardSteps // use new ones, as the flow was changed\r\n\r\n}\r\n\r\n/**\r\n * this returns conflicting with the current selections steps\r\n * @param allWizardSelectedValues {object}\r\n * @param actionPayload {object} // {wizardActiveItem, quoteIndex}\r\n * @param cartItems {[cartItemInterface]}\r\n * @param newWizardSteps {[]}\r\n * @returns {array}\r\n */\r\nexport const getConflictingWizardSteps = (allWizardSelectedValues, actionPayload, cartItems, newWizardSteps) => {\r\n\r\n const {wizardActiveItem, quoteIndex} = actionPayload;\r\n\r\n const currentStep = +Object.keys(actionPayload.wizardSelectedValues)[0];\r\n\r\n let conflictingWizardSteps = [];\r\n\r\n cartItems.forEach(cartItem => {\r\n if (!cartItem.fromWizardGroupId || (cartItem.currentQuote !== quoteIndex) || (cartItem.fromWizardId !== wizardActiveItem.id)) {\r\n return false\r\n }\r\n if ((Object.keys(allWizardSelectedValues).length - 1) === cartItem.fromWizardStep\r\n && (cartItem.fromWizardStep === currentStep)) { // we are reselectecting the same (last selected step), it is not conflicting\r\n return false\r\n }\r\n if (conflictingWizardSteps.some(confObject => confObject.cartItemId === cartItem.id)) { // already added\r\n return false\r\n }\r\n // no more step with this cart item\r\n if (!newWizardSteps.some(step => step.stepGroups.some(wizardGroup => wizardGroup.id === cartItem.fromWizardGroupId))\r\n || !newWizardSteps[cartItem.fromWizardStep]) {\r\n conflictingWizardSteps.push({\r\n stepIndex: cartItem.fromWizardStep,\r\n wizardGroupId: cartItem.fromWizardGroupId,\r\n cartItemId: cartItem.id,\r\n });\r\n } else if (newWizardSteps[cartItem.fromWizardStep + 1] && newWizardSteps[cartItem.fromWizardStep + 1].stepGroups) {\r\n // // here we check if some cart item is added, but his next steps are not anymore in the wizard\r\n //\r\n // // we need to get steps only for before current selected item\r\n // let testValues = {};\r\n // Object.keys(allWizardSelectedValues).forEach(key => {\r\n // if (+key <= cartItem.fromWizardStep) {\r\n // testValues[key] = allWizardSelectedValues[key] // here we create values object just until the current selected value\r\n // }\r\n // });\r\n // const testWizardSteps = getNextWizardSteps(wizardActiveItem, cartItem.fromWizardStep, testValues);\r\n //\r\n // const testGroups = testWizardSteps[cartItem.fromWizardStep + 1] ? testWizardSteps[cartItem.fromWizardStep + 1].stepGroups : null;\r\n // const sameGroupsNew = newWizardSteps[cartItem.fromWizardStep + 1] ? newWizardSteps[cartItem.fromWizardStep + 1].stepGroups : null;\r\n //\r\n // if (testGroups && testGroups.length && sameGroupsNew && sameGroupsNew.length && ((sameGroupsNew.length !== testGroups.length)\r\n // || sameGroupsNew.some((wizardGroup, wizardGroupIndex) => wizardGroup.id !== testGroups[wizardGroupIndex].id))) {\r\n // conflictingWizardSteps.push({\r\n // stepIndex: cartItem.fromWizardStep,\r\n // wizardGroupId: cartItem.fromWizardGroupId,\r\n // cartItemId: cartItem.id,\r\n // });\r\n // }\r\n }\r\n });\r\n\r\n // get current selected wizard value and check if the next one is conflicting - then add the current one to, because it cases the issue\r\n const nextStepKey = currentStep + 1;\r\n if (conflictingWizardSteps.some(confObject => confObject.stepIndex === nextStepKey)) {\r\n cartItems.forEach(cartItem => {\r\n if (!cartItem.fromWizardGroupId || (cartItem.currentQuote !== quoteIndex) || (cartItem.fromWizardId !== wizardActiveItem.id)) {\r\n return false\r\n }\r\n if (conflictingWizardSteps.some(confObject => confObject.cartItemId === cartItem.id)) { // already added\r\n return false\r\n }\r\n // no more step with this cart item\r\n if (cartItem.fromWizardStep === currentStep) {\r\n conflictingWizardSteps.unshift({\r\n stepIndex: cartItem.fromWizardStep,\r\n wizardGroupId: cartItem.fromWizardGroupId,\r\n cartItemId: cartItem.id,\r\n });\r\n }\r\n });\r\n }\r\n\r\n // console.log(\"newWizardSteps\", newWizardSteps);\r\n // console.log(\"conflictingWizardSteps\", conflictingWizardSteps);\r\n\r\n return conflictingWizardSteps\r\n}\r\n\r\n/**\r\n * this changes cart items wizard groups to use new wizard group ids\r\n * @param newWizardSteps {array}\r\n * @param actionPayload {object} // {wizardActiveItem, quoteIndex}\r\n * @param cartItems {[cartItemInterface]}\r\n * @returns {object}\r\n */\r\nexport const switchCartItemsToNewWizardGroups = (newWizardSteps, actionPayload, cartItems) => {\r\n\r\n const {wizardActiveItem, quoteIndex} = actionPayload;\r\n\r\n let shouldReassign = false;\r\n\r\n const newCartItems = cartItems.map(cartItem => {\r\n if (!cartItem.fromWizardGroupId || (cartItem.currentQuote !== quoteIndex) || (cartItem.fromWizardId !== wizardActiveItem.id)) {\r\n return cartItem\r\n }\r\n // no more step with this cart item\r\n if (!newWizardSteps.some(step => step.stepGroups.some(wizardGroup => wizardGroup.id === cartItem.fromWizardGroupId))\r\n || !newWizardSteps[cartItem.fromWizardStep]) {\r\n // here we check all next steps, if there are some step with the same wizardGroup, and it has the cartFeature navItem\r\n newWizardSteps.forEach(step => {\r\n if (!step.stepGroups || !step.stepGroups[0] || (step.stepGroups.length > 1)) {\r\n return\r\n }\r\n let testWizG = step.stepGroups[0];\r\n if (testWizG.groupName !== cartItem.cartFeature.dbFeature.groupName) {\r\n return;\r\n }\r\n if (testWizG.mergedGroups) {\r\n // check only next wizardGroup selectedFeatures, not all of them (merged)\r\n testWizG = testWizG.mergedGroups.find(mergedGroup => mergedGroup.id === step.stepGroups[0].id)\r\n || testWizG.mergedGroups.find(mergedGroup => !navItemIsExcluded({part: cartItem.cartFeature}, mergedGroup))\r\n }\r\n if ((testWizG.mergedGroups && testWizG) || !navItemIsExcluded({part: cartItem.cartFeature}, testWizG)) {\r\n shouldReassign = true;\r\n cartItem.fromWizardStep = step.stepIndex;\r\n cartItem.fromWizardGroupId = testWizG.id;\r\n console.log(\"cartItem changed!\", cartItem);\r\n }\r\n })\r\n }\r\n return cartItem\r\n });\r\n\r\n return {newCartItems, shouldReassign}\r\n}\r\n\r\nexport const selectedWizardGroupIsNotInCurrentStepAnymore = (selectedWizardValue, currentStepGroups) => {\r\n const stepWizGroup = currentStepGroups[0]; // could be merged\r\n const selectedWizardGroup = selectedWizardValue ? selectedWizardValue.wizardGroup : null;\r\n if (currentStepGroups.length > 1 && stepWizGroup && currentStepGroups.some(wG => wG.id === selectedWizardGroup.id)) {\r\n return false\r\n }\r\n return selectedWizardGroup && stepWizGroup && (selectedWizardGroup.id !== stepWizGroup.id)\r\n && (!stepWizGroup.mergedGroups || !stepWizGroup.mergedGroups.length\r\n || !stepWizGroup.mergedGroups.some(mG => mG.id === selectedWizardGroup.id))\r\n}\r\n\r\n/**\r\n * this returns conflicting with the current selections steps\r\n * @param newWizValues {object}\r\n * @param newWizardSteps {array}\r\n // * @param cartItems {[cartItemInterface]}\r\n * @returns {object}\r\n */\r\nexport const changeWizardValuesToUseNewGroups = (newWizValues, newWizardSteps) => {\r\n\r\n let shouldReassignValues = false;\r\n let updatedWizardValues = Object.assign({}, newWizValues);\r\n\r\n Object.keys(updatedWizardValues).forEach(key => { // here we replace wizard values to match new selections! to prevent conflicting\r\n // if there are no wizardGroup anymore in the next flow, but it was selected earlier - set new wizardGroup\r\n if (updatedWizardValues[key].wizardGroup\r\n && updatedWizardValues[key].selectedFeature\r\n && !newWizardSteps.some(step => (step.stepGroups.length === 1) && (step.stepGroups[0].id === updatedWizardValues[key].wizardGroup.id))\r\n && (newWizardSteps[key] && newWizardSteps[key].stepGroups && (newWizardSteps[key].stepGroups.length === 1)\r\n && (updatedWizardValues[key].wizardGroup.groupName === newWizardSteps[key].stepGroups[0].groupName)\r\n && !navItemIsExcluded({part: updatedWizardValues[key].selectedFeature}, newWizardSteps[key].stepGroups[0])\r\n )) {\r\n shouldReassignValues = true;\r\n updatedWizardValues[key].wizardGroup = newWizardSteps[key].stepGroups[0];\r\n // console.log(\"wizardGroup updated!\", updatedWizardValues[key]);\r\n }\r\n });\r\n\r\n const erasedValues = {};\r\n\r\n // here we go through all new wizard steps - and check old values - if there are something selected and it is not\r\n // anymore in the flow - but there is a step - assign new wizard selected value\r\n newWizardSteps.forEach(newWizardStep => {\r\n if (newWizardStep.stepGroups.length !== 1 || newWizardStep.stepGroups[0].nodeType !== \"group\") {\r\n return\r\n }\r\n const stepWizGroup = newWizardStep.stepGroups[0]; // could be merged\r\n if (!updatedWizardValues[newWizardStep.stepIndex] ||\r\n (updatedWizardValues[newWizardStep.stepIndex]\r\n && updatedWizardValues[newWizardStep.stepIndex].wizardGroup\r\n && (updatedWizardValues[newWizardStep.stepIndex].wizardGroup.groupName !== stepWizGroup.groupName\r\n // we still need to get inside if group is not valid - to erase it as we don't need it! we will assign a new one below if needed\r\n || selectedWizardGroupIsNotInCurrentStepAnymore(updatedWizardValues[newWizardStep.stepIndex], newWizardStep.stepGroups))\r\n )) {\r\n // we have a step and the value selected is incorrect - go ahead and find something similar\r\n let updated = false;\r\n Object.keys(newWizValues).forEach(key => { // here we replace wizard values to match new selections! to prevent conflicting\r\n // if there are no wizardGroup anymore in the next flow, but it was selected earlier - set new wizardGroup\r\n if (newWizValues[key].wizardGroup\r\n && newWizValues[key].selectedFeature\r\n && newWizValues[key].wizardGroup.groupName === stepWizGroup.groupName\r\n && (!newWizardSteps[key] || (newWizardSteps[key].stepGroups.length !== 1) || newWizValues[key].wizardGroup.groupName !== newWizardSteps[key].stepGroups[0].groupName)\r\n && !navItemIsExcluded({part: newWizValues[key].selectedFeature}, stepWizGroup)) {\r\n\r\n shouldReassignValues = true;\r\n erasedValues[newWizardStep.stepIndex] = Object.assign({}, updatedWizardValues[newWizardStep.stepIndex]); // save it first, to restore below\r\n updatedWizardValues[newWizardStep.stepIndex] = Object.assign({}, newWizValues[key], {\r\n wizardGroup: stepWizGroup,\r\n });\r\n updated = true;\r\n // updatedWizardValues[key] = {}; // clear old step\r\n // console.log(\"wizardGroup updated throw all steps search!\", updatedWizardValues[key]);\r\n }\r\n });\r\n if (!updated) {\r\n erasedValues[newWizardStep.stepIndex] = Object.assign({}, updatedWizardValues[newWizardStep.stepIndex]); // save it first, to restore below\r\n updatedWizardValues[newWizardStep.stepIndex] = {};\r\n delete updatedWizardValues[newWizardStep.stepIndex];\r\n }\r\n }\r\n });\r\n\r\n // console.log(\"erasedValues\", erasedValues);\r\n\r\n // 3) here we go through again through steps and check if we erased something but it exist in the next flow\r\n newWizardSteps.forEach(newWizardStep => {\r\n if (newWizardStep.stepGroups.length !== 1 || newWizardStep.stepGroups[0].nodeType !== \"group\") {\r\n return\r\n }\r\n const stepWizGroup = newWizardStep.stepGroups[0]; // could be merged\r\n if (!updatedWizardValues[newWizardStep] || !updatedWizardValues[newWizardStep].wizardGroup) {\r\n Object.keys(erasedValues).forEach(key => {\r\n if (erasedValues[key].wizardGroup && erasedValues[key].selectedFeature\r\n && (erasedValues[key].wizardGroup.groupName === stepWizGroup.groupName)\r\n && !navItemIsExcluded({part: erasedValues[key].selectedFeature}, stepWizGroup)) {\r\n updatedWizardValues[newWizardStep.stepIndex] = Object.assign({}, newWizValues[key], {\r\n wizardGroup: stepWizGroup,\r\n });\r\n // console.log(\"USE ERASED LOGIC\", updatedWizardValues[newWizardStep.stepIndex]);\r\n erasedValues[key] = {}; // use it only once! then delete\r\n }\r\n })\r\n }\r\n });\r\n\r\n // now go again and set missing wizard groups\r\n Object.keys(updatedWizardValues).forEach(key => {\r\n if (!updatedWizardValues[key] || !updatedWizardValues[key].wizardGroup || !newWizardSteps[key]\r\n || !newWizardSteps[key].stepGroups.length || (newWizardSteps[key].stepGroups.length !== 1)) { // we set wizard group only if the next one is selected\r\n return\r\n }\r\n // const nextSelectedValue = updatedWizardValues[key + 1];\r\n // const selectedWizGroup = updatedWizardValues[key].wizardGroup;\r\n const newWizGroup = newWizardSteps[key].stepGroups[0];\r\n\r\n if (selectedWizardGroupIsNotInCurrentStepAnymore(updatedWizardValues[key], newWizardSteps[key].stepGroups)) {\r\n // set wizard group as we might have cart items added to this group, we can't have it disabled\r\n updatedWizardValues[key] = {\r\n wizardGroup: newWizGroup\r\n }\r\n }\r\n });\r\n\r\n //last update - make sure that every wizard group is selected if we have cart item in the group below\r\n // const lastSelectedStep = Object.keys(updatedWizardValues).reverse().find(lastKey => updatedWizardValues[lastKey] && updatedWizardValues[lastKey].wizardGroup);\r\n Object.keys(updatedWizardValues).forEach(key => {\r\n if (!updatedWizardValues[key].wizardGroup && newWizardSteps[key] && newWizardSteps[key].stepGroups.length\r\n && (newWizardSteps[key].stepGroups.length === 1) && updatedWizardValues[+key + 1] && updatedWizardValues[+key + 1].wizardGroup) {\r\n // we set wizard group only if the next one is selected\r\n updatedWizardValues[key] = {\r\n wizardGroup: newWizardSteps[key].stepGroups[0]\r\n }\r\n }\r\n });\r\n\r\n return {updatedWizardValues, shouldReassignValues}\r\n}\r\n\r\n/**\r\n * @param partId {string}\r\n * @param featureGroup {featureGroupInterface}\r\n * @param isBathroom {boolean}\r\n * @returns {boolean}\r\n */\r\nconst checkFeatureGroupForOpposite = (partId, featureGroup, isBathroom) => {\r\n switch (partId) {\r\n case \"backsplash\":\r\n return isBathroom && (featureGroup.partId === \"vanity_backsplash\")\r\n case \"center_island_edge\":\r\n return featureGroup.partId === \"edge_profile\"\r\n case \"edge_profile\":\r\n return featureGroup.partId === \"center_island_edge\"\r\n case \"countertop\":\r\n return (featureGroup.partId === \"center_island_countertop\") || (isBathroom && (featureGroup.partId === \"vanity_countertop\"))\r\n case \"center_island_countertop\":\r\n return (featureGroup.partId === \"countertop\") || (isBathroom && (featureGroup.partId === \"vanity_countertop\"))\r\n case \"corners\":\r\n return featureGroup.partId === \"radius\"\r\n default:\r\n return featureGroup.partId === partId\r\n }\r\n}\r\n\r\n/**\r\n * @param wizardSteps {array}\r\n * @param cartItem {cartItemInterface}\r\n * @returns foundStep {object}\r\n */\r\nexport const getWizardStepFromCartItemFeature = (wizardSteps, cartItem) => {\r\n let foundStep = wizardSteps.find(step => step.stepGroups.some(wizardGroup => {\r\n const featureGroup = getFeatureGroupFromWizardGroup(wizardGroup);\r\n return featureGroup && featureGroup.partId === cartItem.partId\r\n }));\r\n if (!foundStep) {\r\n const isBathroom = getCommonVisualizerType() === \"bathroom\";\r\n foundStep = wizardSteps.find(step => step.stepGroups.some(wizardGroup => {\r\n const featureGroup = getFeatureGroupFromWizardGroup(wizardGroup);\r\n if (!featureGroup) {\r\n return false\r\n }\r\n return checkFeatureGroupForOpposite(cartItem.partId, featureGroup, isBathroom)\r\n }));\r\n }\r\n return foundStep\r\n}\r\n\r\n/**\r\n * @param wizardSteps {array}\r\n * @param partId {string}\r\n * @returns {object}\r\n */\r\nexport const getFeatureGroupFromWizardSteps = (wizardSteps, partId) => {\r\n for (const step of wizardSteps) {\r\n for (const wizardGroup of step.stepGroups) {\r\n const featureGroup = getFeatureGroupFromWizardGroup(wizardGroup);\r\n if (featureGroup && featureGroup.partId === partId) {\r\n return {part: featureGroup}\r\n }\r\n }\r\n }\r\n const isBathroom = getCommonVisualizerType() === \"bathroom\";\r\n for (const step of wizardSteps) {\r\n for (const wizardGroup of step.stepGroups) {\r\n const featureGroup = getFeatureGroupFromWizardGroup(wizardGroup);\r\n if (featureGroup && checkFeatureGroupForOpposite(partId, featureGroup, isBathroom)) {\r\n return {part: featureGroup}\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst parseWizardData = (wizardData) => {\r\n let allItems = typeof wizardData === \"string\" ? JSON.parse(wizardData) : [];\r\n if (typeof wizardData === \"object\" && (wizardData != null)) {\r\n Object.keys(wizardData).forEach(key => {\r\n allItems = [...allItems, ...JSON.parse(wizardData[key])]\r\n });\r\n }\r\n return allItems\r\n}\r\n\r\n/**\r\n * @param mainResponse\r\n * @param parseOnly {boolean}\r\n * @param newVisualizerType {string}\r\n * @returns {array}\r\n */\r\nexport const getParsedWizardList = (mainResponse, parseOnly, newVisualizerType = \"\") => {\r\n const {wizardData, wizardDataV2} = mainResponse;\r\n const allItems = parseWizardData(wizardDataV2 || wizardData); // if we have v2 - use it, else old support\r\n if (Config.isDevMode()) {\r\n console.log(\"all wizardItems \", allItems);\r\n }\r\n if (parseOnly) {\r\n return allItems.filter(wizardItem => wizardItem.enabled)\r\n }\r\n const wizardList = allItems\r\n .filter(wizardItem => wizardItem.enabled)\r\n .map((wizardItem, wizardItemIndex) => {\r\n wizardItem = fixWizardItem(wizardItem, wizardItemIndex, false, newVisualizerType);\r\n if (wizardItem.visualizer === \"all\") {\r\n wizardItem.visualizer = getCommonVisualizerType(newVisualizerType); // we keep same wizard as different\r\n wizardItem.id = wizardItem.id + 100;\r\n }\r\n wizardItem.id = getUpdatedWizardId(wizardItem.visualizer, wizardItem.id);\r\n return wizardItem\r\n });\r\n console.log(\"wizardList\", wizardList);\r\n return wizardList\r\n}\r\n\r\n/**\r\n * same function for wizard item and cart item on parse - it returns new wizard id depending on the visualizer\r\n * @param visualizerType {string}\r\n * @param oldWizardItemId {number}\r\n * @returns {number}\r\n */\r\nexport const getUpdatedWizardId = (visualizerType, oldWizardItemId) => {\r\n switch (getCommonVisualizerType(visualizerType)) {\r\n case \"laundryroom\":\r\n if (oldWizardItemId < 3000) {\r\n return oldWizardItemId + 3000 // increase because we don't want to have same id's\r\n }\r\n break;\r\n case \"fireplace\":\r\n if (oldWizardItemId < 2000) {\r\n return oldWizardItemId + 2000 // increase because we don't want to have same id's\r\n }\r\n break;\r\n case \"bathroom\":\r\n if (oldWizardItemId < 1000) {\r\n return oldWizardItemId + 1000 // increase because we don't want to have same id's\r\n }\r\n break;\r\n default:\r\n return oldWizardItemId // keep as is for kitchen\r\n }\r\n}\r\n\r\n/**\r\n * returns lowercased visualizer (bathroom | kitchen | fireplace) same as in the wizard item depending on wizardItem id\r\n * @param wizardItem {wizardItemInterface | wizardAllObjectInterface}\r\n * @param withToolVersion {boolean}\r\n * @returns {string} bathroom | kitchen | fireplace\r\n */\r\nexport const getWizardVisualizerType = (wizardItem, withToolVersion = false) => {\r\n\r\n let commonName = wizardItem.visualizer;\r\n\r\n if (!commonName) {\r\n commonName = \"kitchen\";\r\n const wizardItemId = wizardItem.id || wizardItem.wizardItemId;\r\n if (wizardItemId > 3000) {\r\n commonName = \"laundryroom\";\r\n } if (wizardItemId > 2000) {\r\n commonName = \"fireplace\";\r\n } else if (wizardItemId > 1000) {\r\n commonName = \"bathroom\";\r\n }\r\n }\r\n\r\n if (withToolVersion) {\r\n const existingSubscription = hasSubscriptionForRoom(commonName);\r\n if (existingSubscription) {\r\n return getVisualizerTypeFromSubscription(existingSubscription);\r\n }\r\n return commonName\r\n }\r\n return commonName\r\n}\r\n\r\n/**\r\n * checks if current wizard can be used in the visualizer\r\n * @param wizardItem {wizardItemInterface | wizardAllObjectInterface}\r\n * @param visualizerType {string}\r\n * @returns {boolean}\r\n */\r\nexport const isSameVisualizerWizard = (wizardItem, visualizerType = getCommonVisualizerType()) => {\r\n if (wizardItem.visualizer === \"all\") { // should not ever be here\r\n return true\r\n }\r\n if (wizardItem.visualizer) {\r\n return wizardItem.visualizer === visualizerType\r\n }\r\n return getWizardVisualizerType(wizardItem) === visualizerType\r\n}\r\n","import polygonClipping from \"polygon-clipping\";\r\nimport sqftEventManager from \"../../store/sqftEventManager\";\r\n// import triangle from \"./layouts/triangle\";\r\nimport Line from \"./line\";\r\nimport pnpoly, {pnpolyArray} from \"../../../../lib/pnpoly\";\r\n//import earcut from \"../../../../lib/earcut\";\r\nimport workspace from \"../workspace\";\r\n//import sqftStore from \"../../store/sqftStore\";\r\nimport sqftStore from \"../workspace\";\r\nimport sqftConfig from \"../../store/sqftConfig\";\r\nimport {\r\n getAreaByShoelaceFormula,\r\n getEdgeArea, getIntersectCordsBetweenLines, getPointDistance, getPointField,\r\n getSnappedPos,\r\n inchesToLNFT,\r\n mm2ToM2,\r\n orientation,\r\n rotatePoint,\r\n sqInchesToMM2,\r\n sqInchesToSqFoot\r\n} from \"../../../../helpers/sqftHelper\";\r\nimport {getAngle, getRotationCentrePoint} from \"./rotation\";\r\nimport ShapeHelper, {\r\n getAngleBetween3Points,\r\n getPointDirection\r\n} from \"../../../../helpers/shapeHelper\";\r\nimport $ from \"jquery\";\r\nimport clone from \"lodash/clone\";\r\nimport store from \"../../../../../../store\";\r\nimport {\r\n FEATURE_QUANTITY_UNITS,\r\n SHAPE_PART_ID, SHAPE_PART_IDS_USING_SAME_COLOR,\r\n SIDEBAR_SLAB_SEAM_BUTTONS, WORKSPACE_RESOURCES,\r\n} from \"../../../../constants\";\r\nimport ShapeSlab from \"./shapeParts/shapeSlab\";\r\nimport config from \"../../store/sqftConfig\";\r\nimport SlabWorkspace from \"../slab/slabWorkspace\";\r\nimport ShapeEditable from \"./shapeParts/shapeEditable\";\r\nimport {updateSQFTCalculations} from \"../../../../../../actions/sqftFunctions\";\r\nimport sqftShapeManager from \"../../store/sqftShapeManager\";\r\nimport SqftStore from \"../../store/sqftStore\";\r\nimport ShapeCabinet from \"./shapeParts/shapeCabinet\";\r\nimport ShapeAbsolute from \"./shapeParts/shapeAbsolute\";\r\nimport ShapeSpacer from \"./shapeParts/shapeSpacer\";\r\nimport {isSFTCabinetsGroup} from \"../../../../helpers/sqftNavigationHelper\";\r\nimport {getCurrentLayout} from \"../../../../../appLayout\";\r\nimport {\r\n getFeatureNameById,\r\n shouldChangeCabinetShapePartId\r\n} from \"../../../../helpers/featureHelper\";\r\nimport {\r\n addShapeIdWithMissingFeature,\r\n setShouldShowChangeShapeFeatureMissingMessage,\r\n} from \"../../../../../../actions/sqftMenuFunctions\";\r\nimport workspaceControllers from \"../../store/workspaceControllers\";\r\nimport sqftSlabManager from \"../../store/sqftSlabManager\";\r\nimport ShapeIntersections from \"./shapeParts/shapeIntersections\";\r\nimport ShapeMemory from \"./shapeParts/shapeMemory\";\r\nimport ShapeRender from \"./shapeParts/shapeRender\";\r\nimport {SHAPE_PART_IDS_VISIBLE_ONLY_IN_THE_SLAB_MODE} from \"../../../../constantsFeature\";\r\nimport CabinetSwitchers from \"../../../../../kvComponent/navigation/cabinetSwitchers\";\r\nimport ShapeAutoShuffle from \"./shapeParts/shapeAutoShuffle\";\r\nimport {getLinesWithoutAnglePoints} from \"../../helpers/lineHelper\";\r\nimport {SHAPE_DIAMOND_LAYOUTS, SHAPE_LAYOUTS} from \"../cabinet/cabinetShapes\";\r\nimport {getCabinetSimilarFeatureFromAnotherColor} from \"../../../../helpers/sqft3dArHelper\";\r\nimport {\r\n calculatePolygonClippingPolygonArea,\r\n getPointsCoords,\r\n getRotatedPointV1\r\n} from \"../../../../helpers/coordinatesHelper\";\r\nimport {getCabinetDoorsSQFT} from \"../../../../helpers/sqftCalculations\";\r\n\r\nexport default function(id, totalShapeCount, shapeType, partId, fromLayout, shapeParams = {}) {\r\n //private variables\r\n let self = this,\r\n shape = null,\r\n // debugLineColor = \"rgba(0,255,0,0.3)\",\r\n // debugPointColor = \"rgba(0,0,255,0.3)\",\r\n // fillColor = \"rgba(255,255,255,0)\",\r\n minAngle = -90,\r\n maxAngle = 90,\r\n marginFromShape = SqftStore.isSlabMode() || isSFTCabinetsGroup() ? 0 : 30,\r\n state = {\r\n mouseDown: false,\r\n mouseDownPosition: null,\r\n hovering: false,\r\n handlerHold: null,\r\n isPointsMovable: false,\r\n isRotatable: false,//true //todo enable on menu click\r\n };\r\n this.design = {\r\n hoverShapeColor: \"rgba(159,197,34,0.47)\",\r\n redHoverShapeColor: \"rgba(208,1,27,0.5)\",\r\n fillColor: \"rgba(74,144,226,0.17)\",\r\n }\r\n this.layout270 = [\"SN\", \"SPN\", \"SNI\", \"SPNI\"];\r\n this.shapeParams = shapeParams; //{shapeCabinet: boolean, canSnap: boolean, isSpacer: boolean}\r\n //public properties\r\n this.pos = {\r\n x: 0,\r\n y: 0\r\n };\r\n this.slabPos = {\r\n x: 0,\r\n y: 0\r\n };\r\n this.staticCenterPoint = null;\r\n this.testShapeLines = null;\r\n this.linesWithoutAngle = null;\r\n this.shapeSlab = new ShapeSlab(this);\r\n this.shapeCabinet = shapeParams.shapeCabinet ? new ShapeCabinet(this) : null;\r\n //this.shapeAbsolute = shapeParams.canSnap ? new ShapeAbsolute(this) : null;\r\n this.shapeAbsolute = new ShapeAbsolute(this);\r\n this.shapeSpacer = shapeParams.isSpacer ? new ShapeSpacer(this) : null;\r\n this.shapeEditable = new ShapeEditable(this);\r\n this.shapeIntersections = new ShapeIntersections(this);\r\n this.shapeAutoShuffle = new ShapeAutoShuffle(this);\r\n this.shapeMemory = new ShapeMemory(this);\r\n this.shapeRender = new ShapeRender(this);\r\n this.shapeRotatable = null; //new ShapeRotatable(this, fillColor);\r\n this.colorSet = null; //new ColorSet\r\n this.shapePieces = []; // seam parts shape ids (see seam tool)\r\n this.seamCutPoints = [];\r\n this.shapeParent = null;\r\n this.slabModeCoreParentId = null; // shape id (additional backsplash shape parent shape id in the slab mode. See SlabAdditionalShapes)\r\n this.id = id;\r\n this.feature = null; // use getFeature\r\n this.featureId = null;\r\n this.featureName = null;\r\n this.relatedParentFeatureId = null;\r\n this.shapeType = shapeType;\r\n this.isContextMenuActive = false;\r\n this.labelsMenu = null;\r\n this.partId = partId;\r\n this.parentPartId = null; // this is shape part id that shape was created from. Used for spacer shapes\r\n this.slabParentPartId = null; // this is the shape partId that is hovered the slab. Used for slabs. Or shape part id that shape was created from in the slab mode.\r\n this.qtCatName = null;\r\n this.fromLayout = fromLayout; // layout abbreviation (S, LNI, etc.) is needed to know if to show popup\r\n this.rotatedDegrees = 0;\r\n this.rotatedDegreesSlab = 0;\r\n this.isHidden = false;\r\n this.isPointsMoved = false; // true if any shape points was moved\r\n this.isPointsChanged = true; // used to trigger update points position for the slabMode\r\n this.isPositionChanged = true; // used to trigger update slabPosition for the slabMode\r\n this.isResetSlabModePopupWasDisplayed = false; //used to display reset popup window if shape has pieces\r\n this.Direction = {\r\n RIGHT: 0,\r\n LEFT: 1\r\n };\r\n this.FlipDirection = {\r\n HORIZONTAL: 0,\r\n VERTICAL: 1\r\n };\r\n this.rotateAngleParts = getAngleRotatedParts(shapeType);\r\n this.isDisabledInPopup = false;\r\n this.slabModeWaterfallSegmentId = null;\r\n this.shouldUseSlabPricing = false;\r\n this.originalPointsCoords = [];\r\n\r\n this.getState = () => { return state };\r\n this.getFillColor = () => { return this.design.fillColor };\r\n this.getDesign = () => { return this.design };\r\n this.getColorset = () => { return this.colorSet };\r\n this.getIsPointsMovable = () => { return state.isPointsMovable };\r\n this.setType = (type) => { self.type = type };\r\n this.setProperty = (name, value) => { self[name] = value };\r\n this.setId = (id) => { this.id = id };\r\n this.setPartId = (partId) => {self.partId = partId};\r\n this.getFeatureName = () => { return this.featureName};\r\n this.setFeatureId = (featureId) => {\r\n //console.log(\"cur featureId\", this.featureId);\r\n //console.log(\"new featureId\", featureId);\r\n if (featureId !== this.featureId) {\r\n this.featureId = featureId\r\n this.featureName = getFeatureNameById(featureId);\r\n this.feature = null;\r\n if (this.shapeCabinet) {\r\n // workspaceControllers.handles.addOrChangeHandlesToTheShape();\r\n // workspaceControllers.hinge.addOrChangeHandlesToTheShape();\r\n const existingHandles = workspaceControllers.handles.getAllResourcesForTheShape(shape.id);\r\n if (existingHandles) {\r\n this.shapeCabinet.deleteAttachedFeatures();\r\n this.shapeCabinet.generateAttachedFeatures();\r\n }\r\n }\r\n const isShapeUseTheSameFeatureColor = Object.values(SHAPE_PART_IDS_USING_SAME_COLOR).includes(this.partId);\r\n const isSeamPiece = this.partId === SHAPE_PART_ID.seamPiece;\r\n if (isShapeUseTheSameFeatureColor || isSeamPiece) {\r\n this.updateColorSet();\r\n this.updateRelatedShapes();\r\n this.updateSeamShapes();\r\n }\r\n }\r\n };\r\n this.getFeature = () => {\r\n if (!this.feature) {\r\n const layout = getCurrentLayout();\r\n this.feature = layout.getFeatureById(this.featureId, true);\r\n }\r\n return this.feature\r\n }\r\n this.getRelatedParentFeature = () => {\r\n if (!this.relatedParentFeature) {\r\n const layout = getCurrentLayout();\r\n this.relatedParentFeature = layout.getFeatureById(this.relatedParentFeatureId, true);\r\n }\r\n return this.relatedParentFeature\r\n }\r\n this.setSlabParentPartId = (partId) => { this.slabParentPartId = partId }; // here we will assign shape part id that is hovered the slab\r\n this.setSlabModeCoreParentPartId = (partId) => { this.slabParentPartId = partId }; // here we will assign core shape part id\r\n this.setSlabModeCoreParentId = (id) => { this.slabModeCoreParentId = id };\r\n this.setSlabModeWaterfallSegmentId = (id) => {this.slabModeWaterfallSegmentId = id};\r\n this.setColorSet = (colorSet) => {this.colorSet = colorSet};\r\n this.getColorSet = () => { return this.colorSet};\r\n this.updateColorSet = () => {\r\n this.colorSet = workspaceControllers[WORKSPACE_RESOURCES.shapeColors]\r\n .getOrGenerateNewShapeColorByFeatureId(this.featureId);\r\n };\r\n this.updateRelatedShapes = () => {\r\n const relatedShapes = workspace.getShapesBySlabModeCoreParentId([this.id]);\r\n for (const relatedShape of relatedShapes) {\r\n relatedShape.setFeatureId(this.featureId);\r\n relatedShape.setColorSet(this.colorSet);\r\n }\r\n };\r\n this.updateSeamShapes = () => {\r\n this.shapePieces.forEach(shapePieceId => {\r\n let shapePiece = workspace.getShapeById(shapePieceId);\r\n shapePiece.setFeatureId(this.featureId);\r\n shapePiece.setColorSet(this.colorSet);\r\n });\r\n };\r\n this.updateSeamedShapesPosition = () => {\r\n this.shapePieces.forEach(shapePieceId => {\r\n let shapePiece = workspace.getShapeById(shapePieceId);\r\n shapePiece.setPositionWithoutChange(this.pos);\r\n });\r\n };\r\n this.setQtCatName = (qtCatName) => {this.qtCatName = qtCatName};\r\n this.setIsPointsChanged = (isPointsChanged) => {this.isPointsChanged = isPointsChanged};\r\n this.addCrownMolding = () => {\r\n this.shapeCabinet ? this.shapeCabinet.addCrownMolding() : null;\r\n }\r\n this.setQtCatName = (qtCatName) => { this.qtCatName = qtCatName };\r\n this.getIsRotatable = () => { return state.isRotatable };\r\n this.setIsRotatable = (isRotatable) => { state.isRotatable = isRotatable };\r\n this.setIsPointsMovable = (isPointsMovable) => { state.isPointsMovable = isPointsMovable };\r\n this.setSlabPricing = (value) => { this.shouldUseSlabPricing = value };\r\n\r\n /**\r\n * this will return size for square and rectangles in INCHES\r\n * todo maybe we need to change this and return values in mmm and inches\r\n * @return {{width: *, height: *}}\r\n */\r\n this.getSize = () => {\r\n return {\r\n width: getPointDistance(shape[0].from, shape[0].to),\r\n height: getPointDistance(shape[1].from, shape[1].to),\r\n }\r\n }\r\n this.resetMouseDown = () => {\r\n state.mouseDown = false;\r\n state.mouseDownPosition = null;\r\n }\r\n // this.getWidth = () => {\r\n // return this.getSize().width\r\n // }\r\n /**\r\n * @param isFromParams this is static initial value\r\n * @return {*}\r\n */\r\n this.getWidth = (isFromParams = false) => {\r\n if (isFromParams) {\r\n return this.shapeParams.width\r\n }\r\n const thisShapeMeasurementPoints = sqftShapeManager.getMinMaxShapesPointsOnWorkspace([this]);\r\n return getPointDistance(thisShapeMeasurementPoints[0], thisShapeMeasurementPoints[1]);\r\n }\r\n this.getHeight = (isFromParams = false) => {\r\n if (isFromParams) {\r\n return this.shapeParams.height\r\n }\r\n const thisShapeMeasurementPoints = sqftShapeManager.getMinMaxShapesPointsOnWorkspace([this]);\r\n return getPointDistance(thisShapeMeasurementPoints[1], thisShapeMeasurementPoints[2]);\r\n }\r\n this.getDepth = (isFromParams = false) => {\r\n if (isFromParams) {\r\n return this.shapeParams.depth\r\n }\r\n }\r\n\r\n //public events\r\n this.onHover = null;\r\n\r\n //private setters\r\n function getAngleRotatedParts(shapeType) {\r\n switch (shapeType) {\r\n case \"horseshoe\":\r\n return [{ // this is the right part: |‾| <- this one\r\n rotatedAngleValue: 0, // angle input value\r\n line1: 1, // right external side\r\n line2: 3, // right internal side\r\n baseConfiguration: null, // is used for keeping all the configuration after rotateAngle is over\r\n isHovered: false, // user has mouse over this part\r\n isActive: false, // user has clicked on this part\r\n isPulsing: true, // user has select angle tool\r\n shapeType, // is needed for onChange, different parts have different point changes\r\n angleDirection: \"right\" // rotate direction (is used for lines, line text, etc.)\r\n }, { // this is the left part: this one -> |‾|\r\n rotatedAngleValue: 0, // angle input value\r\n line1: 7, // left external side\r\n line2: 5, // left internal side\r\n baseConfiguration: 0, // difference between basePointX and secondaryPointX\r\n isHovered: false, // user has mouse over this part\r\n isActive: false, // user has clicked on this part\r\n isPulsing: true, // user has select angle tool\r\n shapeType, // is needed for onChange, different parts have different point changes\r\n angleDirection: \"left\" // rotate direction (is used for lines, line text, etc.)\r\n }];\r\n case \"wideangle\":\r\n return [{ // this is the top part: |‾ <- this one\r\n rotatedAngleValue: 0, // angle input value\r\n line1: 0, // top external side\r\n line2: 2, // top internal side\r\n baseConfiguration: null, // is used for keeping all the configuration after rotateAngle is over\r\n isHovered: false, // user has mouse over this part\r\n isActive: false, // user has clicked on this part\r\n shapeType, // is needed for onChange, different parts have different point changes\r\n angleDirection: \"right\" // rotate direction (is used for lines, line text, etc.)\r\n }, { // this is the left part: this one -> |‾\r\n rotatedAngleValue: 0, // angle input value\r\n line1: 5, // left external side\r\n line2: 3, // left internal side\r\n baseConfiguration: 0, // difference between basePointX and secondaryPointX\r\n isHovered: false, // user has mouse over this part\r\n isActive: false, // user has clicked on this part\r\n shapeType, // is needed for onChange, different parts have different point changes\r\n angleDirection: \"left\" // rotate direction (is used for lines, line text, etc.)\r\n }];\r\n default:\r\n return []\r\n }\r\n }\r\n\r\n const setFillColor = (red, green, blue, alpha) => {\r\n this.design.fillColor =\r\n \"rgba(\" + red + \", \" + green + \", \" + blue + \", \" + alpha + \")\";\r\n }\r\n\r\n this.setPosition = (value) => {\r\n this.pos = value;\r\n this.isPositionChanged = true;\r\n this.updateSeamedShapesPosition();\r\n }\r\n this.setPositionWithoutChange = (value) => {\r\n this.pos = value;\r\n this.updateSeamedShapesPosition();\r\n // if (this.partId !== SHAPE_PART_ID.backsplashPiece && this.partId !== SHAPE_PART_ID.seamPiece) {\r\n // this.isPositionChanged = true;\r\n // }\r\n }\r\n this.setSlabPosition = (value) => {\r\n this.slabPos = clone(value);\r\n }\r\n function setShape(segments) {\r\n shape = segments; // [line, line, line, line]\r\n for (var i = 0; i < shape.length; i++) {\r\n shape[i].init(self);\r\n }\r\n }\r\n function setHovering(value) { state.hovering = value; return value; }\r\n function setHoveringOnlyShape(value) { state.hoveringOnlyShape = value; return value; }\r\n //public getters\r\n this.getPosition = () => {\r\n const reduxState = store.getState();\r\n const isShowSlabTool = reduxState.sqftSlabState.isShowSlabTool;\r\n let pos;\r\n\r\n if (isShowSlabTool) {\r\n let slabAbsolutePos = this.getSlabAbsolutePosition()\r\n pos = slabAbsolutePos ? slabAbsolutePos : this.slabPos;\r\n } else if (this.shapeParams !== undefined && this.shapeParams.canSnap) {\r\n let absolutePos = this.shapeAbsolute.getAbsolutePosition();\r\n pos = absolutePos !== null ? absolutePos : this.pos;\r\n } else {\r\n pos = this.pos\r\n }\r\n\r\n return pos;\r\n };\r\n this.getOffset = () => {\r\n const scale = config.scale;\r\n const workspacePos = workspace.getOffset();\r\n let _pos = this.getPosition();\r\n if (config.workspace.snapToGrid) {\r\n _pos = this.getSnappedPosition();\r\n }\r\n return {\r\n x: workspacePos.x + (_pos.x * scale),\r\n y: workspacePos.y + (_pos.y * scale)\r\n }\r\n };\r\n this.getRegularPosition = () => { return this.pos; };\r\n this.getSlabPosition = () => { return this.slabPos; };\r\n this.getSlabAbsolutePosition = () => { return this.shapeSlab.getAbsolutePosition(); };\r\n this.getSnappedPosition = () => { return getSnappedPos(this.getPosition()) };\r\n //todo\r\n this.isHovering = function() {\r\n const isSlabMode = SqftStore.isSlabMode();\r\n if (!isSlabMode) {\r\n for (const line of this.getLines()) {\r\n if (line.isHovering(isSlabMode)) {\r\n return true\r\n }\r\n }\r\n }\r\n return state.hovering === true;\r\n };\r\n this.isHoveringOnlyShape = function() { return state.hoveringOnlyShape === true; };\r\n this.isWithShapePieces = () => {\r\n return this.shapePieces.length > 0;\r\n };\r\n this.setResetSlabModePopupWasDisplayed = (value) => {\r\n return this.isResetSlabModePopupWasDisplayed = value;\r\n };\r\n this.getResetSlabModePopupWasDisplayed = () => {\r\n return this.isResetSlabModePopupWasDisplayed;\r\n };\r\n this.setShapePieces = (shapePieces) => {\r\n this.shapePieces = shapePieces;\r\n };\r\n this.addShapePieceId = (shapeId) => {\r\n this.shapePieces.push(shapeId);\r\n };\r\n this.hideShapePieces = () => {\r\n this.shapePieces.forEach(shapePieceId => {\r\n let shapePiece = workspace.getShapeById(shapePieceId);\r\n if (shapePiece) {\r\n shapePiece.deregisterEvents()\r\n } else {\r\n console.error(\"shapePiece with Id not found\", shapePieceId);\r\n }\r\n });\r\n };\r\n this.restoreShapePieces = () => {\r\n this.shapePieces.forEach(shapePieceId => {\r\n let shapePiece = workspace.getShapeById(shapePieceId);\r\n shapePiece.reInitEvents();\r\n });\r\n };\r\n this.removeShapePieces = () => {\r\n this.shapePieces.forEach(shapePieceId => {\r\n workspace.removeShapeById(shapePieceId);\r\n });\r\n };\r\n\r\n this.export = () => {\r\n let lines = [];\r\n let totalArea = this.getTotalArea();\r\n let squareFeet = sqftConfig.measureUnit === \"Imperial\" ? Math.ceil10(sqInchesToSqFoot(totalArea), -2) : mm2ToM2(self.getTotalArea(totalArea));\r\n if (sqftConfig.shouldUseCabinetDoorsSQFT && FEATURE_QUANTITY_UNITS.includes(this.partId)) {\r\n squareFeet = getCabinetDoorsSQFT(this);\r\n squareFeet = config.measureUnit === \"Imperial\" ? Math.ceil10(sqInchesToSqFoot(squareFeet), -2) : mm2ToM2(squareFeet);\r\n } else if (FEATURE_QUANTITY_UNITS.includes(this.partId)) {\r\n squareFeet = 1\r\n }\r\n\r\n for (let i = 0; i < shape.length; i++) {\r\n lines.push(shape[i].export());\r\n }\r\n let isHidden = [SHAPE_PART_ID.seamPiece, SHAPE_PART_ID.slabPlaceHolder].includes(this.partId);\r\n\r\n return {\r\n pos: this.pos,\r\n slabPos: this.slabPos,\r\n id: this.id,\r\n featureId: this.featureId,\r\n colorSet: this.colorSet,\r\n type: this.type,\r\n isHidden: isHidden,\r\n shapePieces: this.shapePieces,\r\n seamCutPoints: this.seamCutPoints,\r\n shapeParent: this.shapeParent,\r\n lines: lines,\r\n shapeType: this.shapeType,\r\n rotatedDegrees: this.rotatedDegrees,\r\n rotatedDegreesSlab: this.rotatedDegreesSlab,\r\n partId: this.partId,\r\n qtCatName: this.qtCatName,\r\n fromLayout: this.fromLayout,\r\n squareFeet: squareFeet,\r\n quantity: squareFeet,\r\n isDisabledInPopup: this.isDisabledInPopup,\r\n rotateAngleParts: this.rotateAngleParts,\r\n isPointsChanged: this.isPointsChanged,\r\n isPositionChanged: this.isPositionChanged,\r\n isResetSlabModePopupWasDisplayed: this.isResetSlabModePopupWasDisplayed,\r\n shapeSlab: this.shapeSlab.export(),\r\n shapeCabinet: this.shapeCabinet ? this.shapeCabinet.export() : null,\r\n shapeAbsolute: this.shapeAbsolute ? this.shapeAbsolute.export() : null,\r\n shapeParams: this.shapeParams,\r\n relatedParentFeatureId: this.relatedParentFeatureId,\r\n fromWizardGroupId: this.fromWizardGroupId,\r\n slabModeCoreParentId: this.slabModeCoreParentId,\r\n parentPartId: this.parentPartId,\r\n slabParentPartId: this.slabParentPartId,\r\n shouldUseSlabPricing: this.shouldUseSlabPricing,\r\n originalPointsCoords: this.originalPointsCoords,\r\n };\r\n };\r\n this.import = (value) => {\r\n [\"fromLayout\", \"id\", \"partId\", \"shapeType\", \"rotatedDegrees\", \"rotatedDegreesSlab\", \"rotateAngleParts\", \"fromLayout\",\r\n \"type\", \"isHidden\", \"shapePieces\", \"pos\", \"slabPos\", \"featureId\", \"isDisabledInPopup\", \"isPointsChanged\",\r\n \"isPositionChanged\", \"qtCatName\", \"isResetSlabModePopupWasDisplayed\", \"shapeParams\", \"shapeCabinet\", \"shapeAbsolute\",\r\n \"relatedParentFeatureId\", \"colorSet\", \"fromWizardGroupId\", \"slabModeCoreParentId\", \"seamCutPoints\", \"parentPartId\",\r\n \"slabParentPartId\", \"shouldUseSlabPricing\", \"originalPointsCoords\"]\r\n .forEach(key => {\r\n self[key] = value[key]\r\n });\r\n let lines = [];\r\n for (let i = 0; i < value.lines.length; i++) {\r\n let line = new Line();\r\n line.import(value.lines[i], lines);\r\n lines.push(line);\r\n }\r\n shape = lines;\r\n for (let i = 0; i < shape.length; i++) {\r\n shape[i].init(self);\r\n }\r\n this.init();\r\n this.shapeSlab.import(value.shapeSlab);\r\n if (value.shapeCabinet) {\r\n this.shapeCabinet = new ShapeCabinet(this);\r\n this.shapeCabinet.import(value.shapeCabinet);\r\n }\r\n if (value.shapeAbsolute) {\r\n this.shapeAbsolute = new ShapeAbsolute(this);\r\n this.shapeAbsolute.import(value.shapeAbsolute);\r\n }\r\n if ([SHAPE_PART_ID.slabPlaceHolder, SHAPE_PART_ID.seamPiece].includes(value.partId)) {\r\n this.deregisterEvents();\r\n }\r\n if (isSFTCabinetsGroup) {\r\n const reduxState = store.getState();\r\n const {sqftFromFeature} = reduxState.sqftState;\r\n if (sqftFromFeature && sqftFromFeature.cartFeature) {\r\n //this.changeFeatureIdIfColorWasChanged(sqftFromFeature.cartFeature);\r\n }\r\n }\r\n if (this.shapeParams.isSpacer) {\r\n this.shapeSpacer = new ShapeSpacer(this);\r\n }\r\n\r\n // Update layout types\r\n if (this.shapeParams.layout) {\r\n switch (this.shapeParams.layout) {\r\n case SHAPE_LAYOUTS.lowerLayoutType1:\r\n this.shapeParams.layout = SHAPE_LAYOUTS.LowerLCorner;\r\n break;\r\n case SHAPE_LAYOUTS.lowerLayoutType2:\r\n this.shapeParams.layout = SHAPE_LAYOUTS.LowerDullangle;\r\n break;\r\n case SHAPE_LAYOUTS.lowerLayoutType3:\r\n this.shapeParams.layout = SHAPE_LAYOUTS.LowerIroningBoard;\r\n break;\r\n case SHAPE_LAYOUTS.lowerLayoutType4:\r\n this.shapeParams.layout = SHAPE_LAYOUTS.LowerDimondShape;\r\n break;\r\n case SHAPE_LAYOUTS.lowerLayoutType5:\r\n this.shapeParams.layout = SHAPE_LAYOUTS.LowerDimondCorner;\r\n break;\r\n case SHAPE_LAYOUTS.upperLayoutType2:\r\n this.shapeParams.layout = SHAPE_LAYOUTS.UpperLCorner;\r\n break;\r\n case SHAPE_LAYOUTS.upperLayoutType4:\r\n this.shapeParams.layout = SHAPE_LAYOUTS.UpperDimondShape;\r\n break;\r\n case SHAPE_LAYOUTS.upperLayoutType5:\r\n this.shapeParams.layout = SHAPE_LAYOUTS.UpperDimondCorner;\r\n break;\r\n default:\r\n // If no match, keep the existing layout\r\n break;\r\n }\r\n }\r\n };\r\n this.changeFeatureIdIfColorWasChanged = (newFeature= null) => {\r\n const relatedParentFeature = this.getRelatedParentFeature();\r\n const currentShapeFeature = this.getFeature();\r\n const shouldChangeShapePartId = shouldChangeCabinetShapePartId(relatedParentFeature, newFeature);\r\n if (shouldChangeShapePartId && newFeature.dbFeature && currentShapeFeature) {\r\n const newParent = CabinetSwitchers.getNeededFeatureFromNavItems(newFeature.dbFeature.sharedFeatureName, relatedParentFeature.getParent())\r\n\r\n if (newParent && newParent.dbFeature) {\r\n const featureRelatedFeatures = newParent.getFeatureRelatedFeatures();\r\n const newShapeDbFeature = getCabinetSimilarFeatureFromAnotherColor(featureRelatedFeatures, currentShapeFeature.dbFeature);\r\n\r\n if (newShapeDbFeature) {\r\n //if (newShapeDbFeature && newShapeDbFeature.sharedFeatureName !== 'SW-WBC3630') { // this line is only for debugging\r\n this.relatedParentFeatureId = newParent.dbFeature.id\r\n this.setFeatureId(newShapeDbFeature.id)\r\n } else {\r\n store.dispatch(addShapeIdWithMissingFeature(this.id));\r\n store.dispatch(setShouldShowChangeShapeFeatureMissingMessage(true));\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n this.getHoverSegment = function() {\r\n for (let i = 0; i < shape.length; i++) {\r\n if (shape[i].isHovering()) {\r\n return shape[i];\r\n }\r\n }\r\n };\r\n this.getHoverSegmentV2 = () => {\r\n for (let i = 0; i < shape.length; i++) {\r\n shape[i].updateLineHovering(sqftEventManager.getMousePos())\r\n if (shape[i].isHovering()) {\r\n return shape[i];\r\n }\r\n }\r\n };\r\n this.getHoverSegmentOutlineCorner = function() {\r\n for (let i = 0; i < shape.length; i++) {\r\n if (shape[i].isAngleHovering()) {\r\n return shape[i].lineCorner;\r\n }\r\n }\r\n };\r\n this.getHoverSegmentCorner = function() {\r\n for (let i = 0; i < shape.length; i++) {\r\n if (shape[i].isCornerLineHovering()) {\r\n return shape[i].lineCorner;\r\n }\r\n }\r\n };\r\n this.getHoverPoint = function() {\r\n for (var i = 0; i < shape.length; i++) {\r\n if (shape[i].to.isHovering()) {\r\n return shape[i].to;\r\n }\r\n }\r\n };\r\n this.getHoverMiteredPoint = function() {\r\n for (let i = 0; i < shape.length; i++) {\r\n if (shape[i].isWithMitered()) {\r\n for (let point of shape[i].miteredOverlay.getPoints()) {\r\n if (point.isHovering()) {\r\n return point;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n this.getHoverLabel = () => {\r\n for (let i = 0; i < shape.length; i++) {\r\n if (shape[i].labelOverlay && shape[i].labelOverlay.isHovered()) {\r\n return shape[i].labelOverlay\r\n }\r\n }\r\n };\r\n this.getHoverPointOnClick = function() {\r\n for (var i = 0; i < shape.length; i++) {\r\n if (shape[i].to.isOverPointField()) {\r\n return shape[i].to;\r\n }\r\n }\r\n };\r\n this.getCenter = () => {\r\n if (!this.staticCenterPoint) {\r\n let points = this.getPoints();\r\n\r\n this.staticCenterPoint = ShapeHelper.getCenterPoint(points);\r\n }\r\n return this.staticCenterPoint;\r\n }\r\n /**\r\n * Note changing this value can break display in slabMode\r\n * @param value\r\n */\r\n this.setCenter = (value) => {\r\n this.staticCenterPoint = value;\r\n }\r\n this.getLines = (shouldIncludeBumpoutLines = false) => {\r\n if (shouldIncludeBumpoutLines) {\r\n const linesWithBumpouts = [];\r\n shape.forEach(line => {\r\n if (line.isWithBumpout()) {\r\n linesWithBumpouts.push(...line.bumpoutOverlay.getBumpoutLines())\r\n } else {\r\n linesWithBumpouts.push(line);\r\n }\r\n });\r\n return linesWithBumpouts\r\n }\r\n\r\n return shape;\r\n };\r\n this.createLinesWithoutAngle = () => {\r\n this.linesWithoutAngle = getLinesWithoutAnglePoints(this.getLines());\r\n return this.linesWithoutAngle\r\n }\r\n this.getLinesWithoutAngle = () => {\r\n return this.linesWithoutAngle\r\n }\r\n this.getLineCorners = function() {\r\n const lineCorners = [];\r\n shape.forEach(line => {\r\n if (line.lineCorner !== undefined)\r\n lineCorners.push(line.lineCorner)\r\n });\r\n return lineCorners\r\n };\r\n this.getPoints = () => {\r\n return this.getLines().map(line => line.from);\r\n };\r\n this.getPointsCoords = () => {\r\n return getPointsCoords(this.getLines());\r\n };\r\n this.setOriginalPointsCoords = (value) => {\r\n this.originalPointsCoords = value;\r\n };\r\n this.getOriginalPointsCoords = () => {\r\n return this.originalPointsCoords;\r\n };\r\n this.getPointsPosOnWorkspace = (shouldGetRegularPosition = false) => {\r\n return this.getLines().map(line => { return {...line.from.getPointPosOnWorkspace(shouldGetRegularPosition), id: line.from.id}});\r\n };\r\n this.getBumpoutPointsPosOnWorkspace = () => {\r\n let bumpoutPointsOnWorkspace = [];\r\n this.getLines().forEach(line => {\r\n if (line.isWithBumpout()) {\r\n const bumpoutPoints = line.bumpoutOverlay.getBumpoutPoints();\r\n for (const pointName in bumpoutPoints) {\r\n if (bumpoutPoints.hasOwnProperty(pointName)) {\r\n bumpoutPointsOnWorkspace.push(bumpoutPoints[pointName].getPointPosOnWorkspace());\r\n }\r\n }\r\n }\r\n });\r\n return bumpoutPointsOnWorkspace\r\n };\r\n this.getPointsPointField = () => {\r\n return this.getLines().map(line => { return {...getPointField(line.from.x, line.from.y, this), id: line.from.id}});\r\n };\r\n this.getOriginPointOnWorkspace = () => {\r\n // if (shape.shapeParams && shape.shapeParams.shapeLayout !== SHAPE_LAYOUTS.rectangle) {\r\n // let realShapeDepth = shapeDepth;\r\n // if (shape.shapeParams && SHAPE_SQUARE_LAYOUTS.includes(shape.shapeParams.shapeLayout)) {\r\n // realShapeDepth = shapeWidth;\r\n // }\r\n // zeroPointPosOnWorkspace = CabinetsSet.getShapeCorrectedPos(shape.rotatedDegrees, shapePosition, shapeWidth, realShapeDepth);\r\n // }\r\n\r\n // Here we will return intersection between first and last lines\r\n if (this.shapeParams && SHAPE_DIAMOND_LAYOUTS.includes(this.shapeParams.shapeLayout)) {\r\n const pointsOnWorkspace = this.getPointsPosOnWorkspace();\r\n const intersection = getIntersectCordsBetweenLines(pointsOnWorkspace[1], pointsOnWorkspace[0], pointsOnWorkspace[pointsOnWorkspace.length - 2], pointsOnWorkspace[pointsOnWorkspace.length - 1], true ,true);\r\n if (intersection) {\r\n return intersection\r\n }\r\n }\r\n\r\n return this.getPoints()[0].getPointPosOnWorkspace();\r\n }\r\n this.getLineById = function(id) {\r\n return this.getLines().find((line) => line.id === id);\r\n };\r\n this.getTotalArea = () => {\r\n let totalArea,\r\n anglesTotalArea;\r\n\r\n //shape area\r\n totalArea = sqftConfig.measureUnit === \"Imperial\" ? this.getTotalInches() : this.getTotalMillimeters();\r\n //shape corners area\r\n totalArea += sqftConfig.measureUnit === \"Imperial\" ? this.getCornersArea() : sqInchesToMM2(this.getCornersArea());\r\n\r\n //console.log(\"countertop\", totalArea);\r\n //additional bumpout area\r\n totalArea += this.getBumpoutTotalArea();\r\n\r\n //additional angles area\r\n anglesTotalArea = this.getAnglesTotalArea();\r\n totalArea += sqftConfig.measureUnit === \"Imperial\" ? anglesTotalArea : sqInchesToMM2(anglesTotalArea);\r\n\r\n //additional edges waterfall area\r\n totalArea += this.getEdgesAdditionalArea();\r\n //console.log(\"edges\", this.getEdgesAdditionalArea());\r\n //additional edges waterfall area\r\n totalArea += this.getWaterfallToolAdditionalArea();\r\n\r\n //additional mitered area\r\n totalArea += this.getMiteredTotalArea();\r\n\r\n //console.log(\"mitered\", this.getMiteredTotalArea());\r\n //console.log(\"total\", totalArea);\r\n\r\n return totalArea;\r\n };\r\n\r\n this.getTotalVolume = () => {\r\n const totalVolume = this.getTotalInches() * this.getHeight(true);\r\n return sqftConfig.measureUnit === \"Imperial\" ? totalVolume : sqInchesToMM2(totalVolume);\r\n };\r\n\r\n this.getCornersArea = () => {\r\n const points = this.getPoints();\r\n let cornersAdditionalArea = 0;\r\n\r\n function getRectangle(basePoint1, basePoint2, width) {\r\n const direction = {\r\n x: basePoint2.x - basePoint1.x,\r\n y: basePoint2.y - basePoint1.y,\r\n };\r\n\r\n const length = Math.sqrt(direction.x ** 2 + direction.y ** 2);\r\n const norm = {\r\n x: -direction.y / length,\r\n y: direction.x / length,\r\n };\r\n\r\n const rect = [\r\n [basePoint1.x + norm.x * width / 2, basePoint1.y + norm.y * width / 2],\r\n [basePoint1.x - norm.x * width / 2, basePoint1.y - norm.y * width / 2],\r\n [basePoint2.x - norm.x * width / 2, basePoint2.y - norm.y * width / 2],\r\n [basePoint2.x + norm.x * width / 2, basePoint2.y + norm.y * width / 2],\r\n [basePoint1.x + norm.x * width / 2, basePoint1.y + norm.y * width / 2],\r\n ];\r\n\r\n return [rect];\r\n }\r\n\r\n for (let i = 0; i < points.length; i++) {\r\n const prev = points[(i - 1 + points.length) % points.length];\r\n const current = points[i];\r\n const next = points[(i + 1) % points.length];\r\n\r\n const angle = getAngleBetween3Points(prev, current, next); // Угол между точками\r\n //const distancePrev = getPointDistance(prev, current); // Длина стороны (base)\r\n //const distanceNext = getPointDistance(current, next); // Длина другой стороны\r\n\r\n if (Math.round(angle) !== 0 && (Math.round(angle) > 92 || Math.round(angle) < 88)) {\r\n const RECT_WIDTH = 52; //todo get shape width\r\n //console.log(\"distancePrev\", distancePrev);\r\n //console.log(\"distanceNext\", distanceNext);\r\n const rect1 = getRectangle(prev, current, RECT_WIDTH);\r\n const rect2 = getRectangle(current, next, RECT_WIDTH);\r\n\r\n const intersection = polygonClipping.intersection([rect1], [rect2]);\r\n\r\n if (intersection && intersection.length > 0) {\r\n let totalArea = 0;\r\n intersection.forEach((polygon) => {\r\n totalArea += calculatePolygonClippingPolygonArea(polygon);\r\n });\r\n\r\n cornersAdditionalArea += totalArea;\r\n //console.log(\"Area of intersection:\", totalArea);\r\n } else {\r\n console.log(\"No intersection found\");\r\n }\r\n }\r\n }\r\n\r\n return cornersAdditionalArea;\r\n };\r\n\r\n this.getTotalLnft = function() {\r\n return Math.ceil(inchesToLNFT(this.getTotalArea())) ;\r\n };\r\n\r\n this.getAttachedEdges = function() {\r\n const reduxState = store.getState();\r\n return reduxState.sqftResourceState.attachedToLine.filter(attachedToLine => {\r\n return shape.some(line => attachedToLine.attachedToId === line.id)\r\n });\r\n };\r\n\r\n this.getWaterfallToolAdditionalArea = () => {\r\n let totalArea = 0;\r\n const lines = this.getLines();\r\n lines.forEach(line => {\r\n if (line.isWithWaterfallToolEdge && (line.isWithWaterfallToolEdge() || line.isWithPeninsulaUnderwrapEdge())) {\r\n const waterfallOverlay = workspaceControllers.waterfall.getResourceByLineId(line.id);\r\n if (waterfallOverlay) {\r\n totalArea += waterfallOverlay.getArea();\r\n }\r\n }\r\n });\r\n\r\n return totalArea\r\n }\r\n\r\n this.getEdgesAdditionalArea = () => {\r\n let totalArea = 0;\r\n //let edges = sqftStore.getShapeType('edge');\r\n const edges = this.getAttachedEdges();\r\n edges.forEach(edge => {\r\n const line = workspace.getLineById(edge.attachedToId);\r\n const lineLength = config.measureUnit === \"Imperial\" ? line.getLineLength() : line.getLineLengthMm();\r\n totalArea += getEdgeArea(line, lineLength, edge.featureId);\r\n });\r\n\r\n return totalArea;\r\n };\r\n\r\n this.getAnglesTotalArea = () => {\r\n let totalArea = 0;\r\n let innerPoints = ShapeHelper.getInnerCornerPoints(this);\r\n innerPoints.forEach(point => {\r\n if (point.angle) {\r\n totalArea += (point.angle * point.angle / 2) * 2\r\n } else if (point.arcLength) {\r\n totalArea += (point.arcLength * point.arcLength / 2) * 2\r\n }\r\n });\r\n\r\n return totalArea\r\n };\r\n\r\n this.getBumpoutTotalArea = () => {\r\n let area = 0;\r\n shape.forEach((line) => {\r\n if (line.isWithBumpout() && line.bumpoutOverlay) {\r\n area += config.measureUnit === \"Imperial\"\r\n ? line.bumpoutOverlay.getBumpoutTotalArea().inches\r\n : line.bumpoutOverlay.getBumpoutTotalArea().millimeters;\r\n }\r\n });\r\n\r\n return area\r\n };\r\n\r\n this.getMiteredTotalArea = () => {\r\n let totalArea = 0;\r\n shape.forEach(line => {\r\n if (line.isWithMitered() && line.miteredOverlay) {\r\n totalArea += line.miteredOverlay.getMiteredTotalArea();\r\n }\r\n });\r\n\r\n return totalArea\r\n };\r\n\r\n this.getTotalInches = function() {\r\n var inchesCount = 0;\r\n // square1 = 0,\r\n // square2 = 0,\r\n // square3 = 0;\r\n // console.log('self.shapeType', self.shapeType);\r\n // console.log('shape', shape);\r\n // todo remove ifs\r\n if (self.shapeType === 'square') {\r\n // inchesCount = ((this.rotatedDegrees === 90) || (this.rotatedDegrees === 270))\r\n // ? shape[1].getLineLength() * shape[2].getLineLength()\r\n // : shape[0].getLineLength() * shape[1].getLineLength();\r\n\r\n inchesCount = this.getAreaByShoelaceFormula();\r\n } else if (self.shapeType === 'wideangle') {\r\n // square1 = (shape[0].getLineLength() - shape[4].getLineLength()) * shape[1].getLineLength();\r\n // square2 = shape[4].getLineLength() * shape[5].getLineLength();\r\n // inchesCount = square1 + square2\r\n\r\n inchesCount = this.getAreaByShoelaceFormula();\r\n } else if (self.shapeType === 'horseshoe') {\r\n // square1 = shape[4].getLineLength() * (shape[7].getLineLength() - shape[5].getLineLength());\r\n // square2 = shape[2].getLineLength() * shape[1].getLineLength();\r\n // square3 = shape[6].getLineLength() * shape[7].getLineLength();\r\n // inchesCount = square1 + square2 + square3\r\n inchesCount = this.getAreaByShoelaceFormula();\r\n } else {\r\n inchesCount = this.getAreaByShoelaceFormula();\r\n }\r\n\r\n return inchesCount;\r\n };\r\n\r\n this.getAreaByShoelaceFormula = function () {\r\n return getAreaByShoelaceFormula(shape);\r\n };\r\n\r\n this.isWithBumpout = function () {\r\n return shape.some((line) => {\r\n return line.isWithBumpout();\r\n });\r\n };\r\n\r\n this.isWithMitered = function () {\r\n return shape.some((line) => {\r\n return line.isWithMitered();\r\n });\r\n };\r\n\r\n this.getTotalMillimeters = function() {\r\n return sqInchesToMM2(this.getAreaByShoelaceFormula());\r\n };\r\n\r\n function getRotateAngleRectangle(rotateAnglePart) {\r\n //line 1\r\n const line1 = shape[rotateAnglePart.line1];\r\n let renderFrom = line1.calculateRenderPosition(line1.from);\r\n let renderTo = line1.calculateRenderPosition(line1.to);\r\n //line2\r\n const line2 = shape[rotateAnglePart.line2];\r\n let renderFrom2 = line2.calculateRenderPosition(line2.from);\r\n let renderTo2 = line2.calculateRenderPosition(line2.to);\r\n return [\r\n [renderFrom.x, renderFrom.y],\r\n [renderTo.x, renderTo.y],\r\n [renderFrom2.x, renderFrom2.y],\r\n [renderTo2.x, renderTo2.y],\r\n ]\r\n }\r\n\r\n var handleArrowInputIncrease = (isNegative, input, rotateAnglePart, basePoint, secondaryPoint, rotated90_1, rotated90_2, bottomLine) => {\r\n if (isNegative) {\r\n input.value = +input.value + 1;\r\n } else {\r\n input.value = +input.value - 1;\r\n }\r\n\r\n self.rotateAngleInputChange(input, rotateAnglePart, basePoint, secondaryPoint, rotated90_1, rotated90_2, bottomLine);\r\n };\r\n\r\n const moveShape = (mousePos) => {\r\n let scale = sqftStore.getScale();\r\n let xDiff = (state.mouseDownPosition.x - mousePos.x) / scale;\r\n let yDiff = (state.mouseDownPosition.y - mousePos.y) / scale;\r\n\r\n let isShowSlabTool = store.getState().sqftSlabState.isShowSlabTool;\r\n if (this.shapeParams.canSnap || isShowSlabTool) {\r\n const shapeAbsolute = isShowSlabTool ? this.shapeSlab.shapeAbsolute : this.shapeAbsolute;\r\n workspaceControllers.snappedShapeGroups.resetShapeSnappedGroup(shapeAbsolute);\r\n workspaceControllers.snappedShapeGroups.updateShapeSnappedGroup(this, true);\r\n }\r\n\r\n if (isShowSlabTool) {\r\n // this.shapeSlab.setAbsolutePos(null);//reset minLength for correct calculations without stacking\r\n // let distancesToShapes = ShapeHelper.getDistancesToShapes(this);\r\n // let distancesToImages = ShapeHelper.getDistancesToSlabImages(this);\r\n // //console.log(\"distancesToImages\", distancesToImages);\r\n //\r\n // snapPossibilitiesToShapes = ShapeHelper.getSnappingPossibilities(distancesToShapes);\r\n // snapPossibilitiesToImages = ShapeHelper.getSnappingPossibilities(distancesToImages);\r\n //\r\n // this.setAbsolutePosFromSnapPossibilities(snapPossibilitiesToShapes);\r\n // this.setAbsolutePosFromSnapPossibilities(snapPossibilitiesToImages);\r\n\r\n this.slabPos.x -= xDiff;\r\n this.slabPos.y -= yDiff;\r\n } else {\r\n // this.pos.x -= xDiff;\r\n // this.pos.y -= yDiff;\r\n this.setPosition({\r\n x: this.pos.x - xDiff,\r\n y: this.pos.y - yDiff,\r\n })\r\n }\r\n\r\n state.mouseDownPosition.x = mousePos.x;\r\n state.mouseDownPosition.y = mousePos.y;\r\n // console.log('self.pos', self.pos);\r\n };\r\n\r\n this.setAbsolutePosFromSnapPossibilities = (snapPossibilities) => {\r\n if (snapPossibilities.length > 0) {\r\n let scale = sqftStore.getScale();\r\n let absolutePos = {...this.slabPos};\r\n snapPossibilities.forEach((snap) => {\r\n switch (snap.orientation) {\r\n case \"horizontal\":\r\n absolutePos.y -= snap.diff / scale\r\n break;\r\n case \"vertical\":\r\n absolutePos.x -= snap.diff / scale\r\n break;\r\n }\r\n this.shapeSlab.setAbsolutePos(absolutePos)\r\n })\r\n }\r\n }\r\n\r\n const isMouseOverShape = (mousePos) => {\r\n const scale = sqftStore.getScale(),\r\n wp = sqftStore.getOffset(),\r\n pos = self.getPosition(),\r\n offset = {\r\n x: mousePos.x - (pos.x * scale) - wp.x,\r\n y: mousePos.y - (pos.y * scale) - wp.y\r\n },\r\n vertx = [],\r\n verty = [],\r\n vert2x = [],\r\n vert2y = [];\r\n\r\n for (var i = 0; i < shape.length; i++) {\r\n const isSlabMode = SqftStore.isSlabMode();\r\n if (shape[i].isHovering(isSlabMode) && !isSlabMode //exclude hovering lines in the slab mode\r\n || shape[i].isAngleHovering()\r\n || shape[i].isCornerLineHovering()\r\n ) {\r\n setHoveringOnlyShape(false);\r\n\r\n return setHovering(true);\r\n }\r\n var pointDirection = shape[i].from.getPointDirection();\r\n let pointFromX = shape[i].from.x\r\n let pointFromY = shape[i].from.y\r\n\r\n switch (pointDirection) {\r\n case \"lefttop\":\r\n vertx.push(pointFromX * scale - marginFromShape);\r\n verty.push(pointFromY * scale - marginFromShape);\r\n break;\r\n case \"righttop\":\r\n vertx.push(pointFromX * scale + marginFromShape);\r\n verty.push(pointFromY * scale - marginFromShape);\r\n break;\r\n case \"rightbottom\":\r\n vertx.push(pointFromX * scale + marginFromShape);\r\n verty.push(pointFromY * scale + marginFromShape);\r\n break;\r\n case \"leftbottom\":\r\n vertx.push(pointFromX * scale - marginFromShape);\r\n verty.push(pointFromY * scale + marginFromShape);\r\n break;\r\n default:\r\n vertx.push(pointFromX * scale);\r\n verty.push(pointFromY * scale);\r\n break;\r\n }\r\n vert2x.push(pointFromX * scale);\r\n vert2y.push(pointFromY * scale);\r\n }\r\n var prevState = self.isHovering();\r\n\r\n let isHovering = pnpoly(shape.length, vertx, verty, offset.x, offset.y);\r\n setHovering(isHovering);\r\n setHoveringOnlyShape(pnpoly(shape.length, vert2x, vert2y, offset.x, offset.y));\r\n self.rotateAngleParts.forEach((rotateAnglePart) => {\r\n if ((self.shapeType === \"wideangle\")\r\n && !rotateAnglePart.rotatedAngleValue\r\n && self.rotateAngleParts.some(rotPart => rotPart.rotatedAngleValue > 0)) {\r\n rotateAnglePart.isHovered = false; // L shape may have only 1 part rotated\r\n } else {\r\n rotateAnglePart.isHovered = pnpolyArray(getRotateAngleRectangle(rotateAnglePart), mousePos);\r\n }\r\n });\r\n if (prevState && !self.isHovering()) {\r\n sqftEventManager.resetCursor(self);\r\n }\r\n return this.isHovering();\r\n };\r\n\r\n //private event handlers\r\n const onMouseMove = (mousePos, e) => {\r\n if (e.terminate && !state.mouseDown) {\r\n setHoveringOnlyShape(false);\r\n return setHovering(false);\r\n }\r\n if (isMouseOverShape(mousePos)) {\r\n //console.log(\"shape id\", this.id);\r\n if (self.onHover) {\r\n self.onHover(self);\r\n }\r\n // todo fix bumpout rotation and remove this\r\n if (sqftConfig.workspace.menuItemActive === \"rotate-left\") {\r\n //sqftEventManager.setCursor(\"rotate-left\", self);\r\n if (self.isWithBumpout() || self.isWithMitered()) {\r\n sqftEventManager.stealCursor(true);\r\n sqftEventManager.setCursor(\"deny\", self);\r\n }\r\n } else if (state.mouseDown && !sqftStore.getAllowEdges()) {\r\n sqftEventManager.setCursor('move', self, true);\r\n //todo\r\n //console.log(\"state.mouseDown\", state.mouseDown);\r\n moveShape(mousePos);\r\n hideShapeOffsetInTheSlabMode();\r\n } else if (!sqftStore.getAllowEdges()) {\r\n sqftEventManager.setCursor('move', self)\r\n }\r\n return state.mouseDown;\r\n }\r\n //smooth scrolling\r\n if (state.mouseDown && !sqftStore.getAllowEdges()) {\r\n sqftEventManager.setCursor('move', self, true);\r\n moveShape(mousePos);\r\n }\r\n // //smooth scrolling\r\n // if (state.mouseDown && !sqftStore.getAllowEdges()) {\r\n // sqftEventManager.setCursor('move', self, true);\r\n // moveShape(mousePos);\r\n // console.log(\"333\",);\r\n // }\r\n // //smooth scrolling\r\n // if (state.mouseDown && !sqftStore.getAllowEdges()) {\r\n // sqftEventManager.setCursor('move', self, true);\r\n // moveShape(mousePos);\r\n // }\r\n sqftEventManager.resetCursor(self);\r\n return false;\r\n }\r\n const onDblClick = (mousePos, e) => {\r\n void mousePos; void e;\r\n // if (state.hovering) {\r\n // this.setIsPointsMovable(!state.isPointsMovable);\r\n // }\r\n }\r\n const onMouseUp = (mousePos, e) => {\r\n void mousePos;\r\n void e;\r\n //debugger // eslint-disable-line no-debugger\r\n sqftEventManager.releaseStealLock(this);\r\n this.setIsPointsMovable(false);\r\n this.preventNegativeArea();\r\n if (this.isHovering()) {\r\n restoreShapeOffsetInTheSlabMode();\r\n this.shapeIntersections.handleSlabPlaceholderIntersections();\r\n if (state.mouseDown) {\r\n this.shapeAutoShuffle.handlePlaceShapeOnTheLine();\r\n }\r\n }\r\n state.mouseDown = false;\r\n state.mouseDownPosition = null;\r\n }\r\n\r\n const onMouseDown = (mousePos, e) => {\r\n void e;\r\n //if not then handle event with this object\r\n if (this.isHovering()) {\r\n // remove or add shape to selection\r\n if (e.shiftKey) {\r\n if (workspaceControllers.selectedShapes.isShapeSelected(this)) {\r\n workspaceControllers.selectedShapes.removeShapeFromSelection(this);\r\n } else {\r\n workspaceControllers.selectedShapes.addShapeToSelection(this);\r\n }\r\n }\r\n this.shapeMemory.rememberShapePosition();\r\n setShapeToShapeOffset();\r\n if (sqftEventManager.getCursor().indexOf(\"move\") >= 0) {\r\n state.mouseDown = true;\r\n state.mouseDownPosition = mousePos;\r\n }\r\n if (sqftConfig.highlight.rotateAngle) {\r\n // todo fix bumpout rotation and remove this\r\n if (self.isWithBumpout() || self.isWithMitered() || this.isPointsMoved || this.rotatedDegrees !== 0) {\r\n return\r\n }\r\n /////////////////////////////////////////\r\n\r\n self.rotateAngleParts.forEach((rotateAnglePart) => {\r\n if (rotateAnglePart.isHovered) {\r\n //todo\r\n self.setRotateAnglePartActive(rotateAnglePart);\r\n } else {\r\n rotateAnglePart.isActive = false;\r\n }\r\n });\r\n if (!self.rotateAngleParts.some(rotateAnglePart => rotateAnglePart.isActive)) {\r\n self.deActivateRotateAngle();\r\n }\r\n }\r\n\r\n if (this.partId !== SHAPE_PART_ID.slabPlaceHolder) { // seam not allowed to be added on slab placeholders\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n if (activeButton === SIDEBAR_SLAB_SEAM_BUTTONS.addSeamVertical) {\r\n this.shapeSlab.addSeamPieceVertical(mousePos);\r\n this.setIsPointsChanged(false); //prevent creating new backSplash shape if it was seamed\r\n } else if (activeButton === SIDEBAR_SLAB_SEAM_BUTTONS.addSeamHorizontal) {\r\n this.shapeSlab.addSeamPieceHorizontal(mousePos);\r\n this.setIsPointsChanged(false); //prevent creating new backSplash shape if it was seamed\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n const hideShapeOffsetInTheSlabMode = () => {\r\n if (SqftStore.isSlabMode()) {\r\n const slabShapeOffset = SlabWorkspace.getShapeOffset();\r\n if (slabShapeOffset) {\r\n slabShapeOffset.hide();\r\n }\r\n }\r\n }\r\n\r\n const restoreShapeOffsetInTheSlabMode = () => {\r\n if (SqftStore.isSlabMode()) {\r\n const slabShapeOffset = SlabWorkspace.getShapeOffset();\r\n if (slabShapeOffset) {\r\n slabShapeOffset.restore();\r\n }\r\n }\r\n }\r\n\r\n const setShapeToShapeOffset = () => {\r\n const isSlabMode = SqftStore.isSlabMode();\r\n\r\n if (isSlabMode && this.partId !== SHAPE_PART_ID.slabPlaceHolder) {\r\n sqftSlabManager.initShapeOffset(this);\r\n }\r\n }\r\n\r\n function hideAngleTooltip() {\r\n const angleTooltip = document.getElementById(\"angle-tooltip\");\r\n const inputArrows = [].slice.call(document.querySelectorAll(\"#angle-tooltip [data-action]\"));\r\n // const inputSubmit = document.querySelectorAll('[data-action=\"angle-input-submit\"]');\r\n\r\n if (angleTooltip) {\r\n angleTooltip.style.display = \"none\";\r\n //remove event handlers\r\n inputArrows.forEach(function (elem) {\r\n elem.parentNode.replaceChild(elem.cloneNode(true), elem);\r\n });\r\n // inputSubmit[0].removeEventListener('click', self.deActivateRotateAngle);\r\n }\r\n }\r\n\r\n function hideAngleTooltipArrows (value) {\r\n const angleTooltip = document.getElementById(\"angle-tooltip\");\r\n const inputArrowUp = [].slice.call(angleTooltip.querySelectorAll('[data-action=\"angle-input-up\"]'));\r\n const inputArrowDown = [].slice.call(angleTooltip.querySelectorAll('[data-action=\"angle-input-down\"]'));\r\n\r\n inputArrowUp.forEach((button) => {\r\n if (value === minAngle) {\r\n button.style.display = \"none\";\r\n clearInterval(state.handlerHold);\r\n } else {\r\n button.style.display = \"block\";\r\n }\r\n });\r\n inputArrowDown.forEach((button) => {\r\n if (value === maxAngle) {\r\n button.style.display = \"none\";\r\n clearInterval(state.handlerHold);\r\n } else {\r\n button.style.display = \"block\";\r\n }\r\n });\r\n }\r\n //public functions\r\n\r\n /**\r\n * return array of getPointField for each point\r\n */\r\n this.getPointFieldArray = () => {\r\n let pointsArray = []\r\n for (const line of shape) {\r\n pointsArray.push(getPointField(line.from.x, line.from.y, line));\r\n }\r\n return pointsArray\r\n }\r\n this.preventNegativeArea = () => {\r\n if (this.getTotalArea() < 0) {\r\n this.reversePoints();\r\n const state = store.getState();\r\n const updateCalculations = state.sqftState.updateCalculations;\r\n\r\n store.dispatch(updateSQFTCalculations(updateCalculations + 1));\r\n }\r\n }\r\n this.reversePoints = () => {\r\n const reversedPoints = this.getPointCordsArray().reverse();\r\n shape.forEach((line, lineIndex) => {\r\n line.from.setPos({\r\n x: reversedPoints[lineIndex].x,\r\n y: reversedPoints[lineIndex].y\r\n });\r\n line.from.setPosSlab({\r\n x: reversedPoints[lineIndex].x,\r\n y: reversedPoints[lineIndex].y\r\n });\r\n });\r\n }\r\n this.getPointCordsArray = () => {\r\n let pointsArray = []\r\n for (const line of shape) {\r\n pointsArray.push({x: line.from.x, y: line.from.y});\r\n }\r\n return pointsArray\r\n }\r\n this.activateRotateAngle = function () {\r\n shape.forEach((line, lineIndex) => {\r\n for (const rotateAnglePart of self.rotateAngleParts) {\r\n if (this.isAngleRotatedPartsWithCorner(rotateAnglePart)) {\r\n continue;\r\n }\r\n if (lineIndex === rotateAnglePart.line1) {\r\n const parentPoint = (rotateAnglePart && rotateAnglePart.angleDirection === \"right\") ? line.from : line.to;\r\n parentPoint.renderAngleCircle = 18\r\n } else if (lineIndex === rotateAnglePart.line2) {\r\n const secondaryPoint = (rotateAnglePart && rotateAnglePart.angleDirection === \"right\") ? line.to : line.from;\r\n secondaryPoint.renderAngleCircle = 12;\r\n }\r\n // if (lineIndex === 1) { // this is rendering green arc\r\n // line.from.renderAngleArc = line.calculateRenderPosition(line.to).y - line.calculateRenderPosition(line.from).y;\r\n // }\r\n }\r\n })\r\n };\r\n this.deActivateRotateAngle = function() {\r\n self.rotateAngleParts.forEach((rotateAnglePart) => {\r\n rotateAnglePart.isActive = false;\r\n rotateAnglePart.isHovered = false;\r\n });\r\n\r\n hideAngleTooltip();\r\n };\r\n this.setRotateAnglePartActive = function (rotateAnglePart) {\r\n hideAngleTooltip(); // 1) deactivate previous anglePart\r\n rotateAnglePart.isActive = true; // 1) always highlight\r\n const angleTooltip = document.getElementById(\"angle-tooltip\");\r\n const input = document.getElementById(\"angle_input\");\r\n const inputArrowUp = [].slice.call(angleTooltip.querySelectorAll('[data-action=\"angle-input-up\"]'));\r\n const inputArrowDown = [].slice.call(angleTooltip.querySelectorAll('[data-action=\"angle-input-down\"]'));\r\n const inputArrows = inputArrowUp.concat(inputArrowDown);\r\n const inputSubmit = [].slice.call(angleTooltip.querySelectorAll(\"[data-action=\\\"angle-input-submit\\\"]\"));\r\n\r\n if (this.isAngleRotatedPartsWithCorner(rotateAnglePart)) {\r\n return;\r\n }\r\n input.setAttribute(\"min\", minAngle.toString());\r\n input.setAttribute(\"max\", maxAngle.toString());\r\n angleTooltip.style.display = \"flex\"; // 2) show input in sidebar\r\n\r\n // 3) set input value to current angle\r\n input.value = 90 - rotateAnglePart.rotatedAngleValue; // 90 - is made for displaying 90-0-90 rotation deg for input\r\n\r\n // input.value = getAngleValue(rotateAnglePart.rotatedAngleValue); // 3) set input value to current angle\r\n input.max = (rotateAnglePart && rotateAnglePart.shapeType === \"wideangle\" && rotateAnglePart && rotateAnglePart.angleDirection === \"right\") ? 90 : maxAngle; // 3.5 set input max\r\n input.min = (rotateAnglePart && rotateAnglePart.shapeType === \"wideangle\" && rotateAnglePart && rotateAnglePart.angleDirection === \"right\") ? 1 : minAngle; // 3.5 set input max\r\n hideAngleTooltipArrows(+input.value);\r\n\r\n setTimeout(() => {\r\n const expandedSidebar = document.querySelector(\".side.expanded\");\r\n if (expandedSidebar) {\r\n $(expandedSidebar).animate({scrollTop: $(expandedSidebar).height()}, 600); // 4) scroll to added input\r\n }\r\n }, 600);\r\n\r\n // 4) declare base points and bottom(moving) line\r\n const basePoint = (rotateAnglePart && rotateAnglePart.angleDirection === \"right\") ? shape[rotateAnglePart.line1].from : shape[rotateAnglePart.line1].to;\r\n const secondaryPoint = (rotateAnglePart && rotateAnglePart.angleDirection === \"right\") ? shape[rotateAnglePart.line2].to : shape[rotateAnglePart.line2].from;\r\n const bottomLine = (rotateAnglePart && rotateAnglePart.angleDirection === \"right\") ? shape[rotateAnglePart.line1 + 1] : shape[rotateAnglePart.line1 - 1];\r\n const secondaryLineLength = shape[rotateAnglePart.line2].getLineLength();\r\n //const nextLine = self.getNextLine(basePoint.getParent());\r\n var rotated90_1, rotated90_2;\r\n\r\n switch (rotateAnglePart.shapeType) {\r\n default:\r\n case \"wideangle\":\r\n case \"horseshoe\": {\r\n if (rotateAnglePart && rotateAnglePart.angleDirection === \"right\") {\r\n //console.log('RIGHT 90 Orient', bottomLine.getOrientation());\r\n //console.log('RIGHT newDirection', bottomLine.getLineDirection().newDirection);\r\n\r\n if (bottomLine.getLineDirection().newDirection === 'east') {\r\n rotated90_1 = {x: secondaryPoint.x - secondaryLineLength, y: basePoint.y};\r\n rotated90_2 = {x: secondaryPoint.x - secondaryLineLength, y: secondaryPoint.y};\r\n } else if (bottomLine.getLineDirection().newDirection === 'west') {\r\n rotated90_1 = {x: secondaryPoint.x + secondaryLineLength, y: basePoint.y};\r\n rotated90_2 = {x: secondaryPoint.x + secondaryLineLength, y: secondaryPoint.y};\r\n } else if (bottomLine.getLineDirection().newDirection === 'south') {\r\n rotated90_1 = {x: basePoint.x, y: secondaryPoint.y - secondaryLineLength};\r\n rotated90_2 = {x: secondaryPoint.x, y: secondaryPoint.y - secondaryLineLength};\r\n } else if (bottomLine.getLineDirection().newDirection === 'north') {\r\n rotated90_1 = {x: basePoint.x, y: secondaryPoint.y + secondaryLineLength};\r\n rotated90_2 = {x: secondaryPoint.x, y: secondaryPoint.y + secondaryLineLength};\r\n }\r\n\r\n } else {\r\n //console.log('LEFT 90 Orient', bottomLine.getOrientation());\r\n //console.log('LEFT newDirection', bottomLine.getLineDirection().newDirection);\r\n\r\n if (bottomLine.getLineDirection().newDirection === 'east') {\r\n rotated90_1 = {x: secondaryPoint.x + secondaryLineLength, y: secondaryPoint.y};\r\n rotated90_2 = {x: secondaryPoint.x + secondaryLineLength, y: basePoint.y};\r\n } else if (bottomLine.getLineDirection().newDirection === 'west') {\r\n rotated90_1 = {x: secondaryPoint.x - secondaryLineLength, y: secondaryPoint.y};\r\n rotated90_2 = {x: secondaryPoint.x - secondaryLineLength, y: basePoint.y};\r\n } else if (bottomLine.getLineDirection().newDirection === 'south') {\r\n rotated90_1 = {x: secondaryPoint.x, y: secondaryPoint.y + secondaryLineLength};\r\n rotated90_2 = {x: basePoint.x, y: secondaryPoint.y + secondaryLineLength};\r\n } else if (bottomLine.getLineDirection().newDirection === 'north') {\r\n rotated90_1 = {x: secondaryPoint.x, y: secondaryPoint.y - secondaryLineLength};\r\n rotated90_2 = {x: basePoint.x, y: secondaryPoint.y - secondaryLineLength};\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n angleTooltip.style.left = basePoint.getPointField().x + \"px\";\r\n angleTooltip.style.top = basePoint.getPointField().y + \"px\";\r\n const ENTER_KEY = 13;\r\n // 5) set input handlers and focus it\r\n input.oninput = () => self.rotateAngleInputChange(input, rotateAnglePart, basePoint, secondaryPoint, rotated90_1, rotated90_2, bottomLine);\r\n input.focus();\r\n input.onkeydown = function(e) {\r\n if (e.keyCode === ENTER_KEY) {\r\n e.target.blur();\r\n }\r\n };\r\n function blur(e) {\r\n if (!$(e.target).closest('.ui-input')) {\r\n input.blur();\r\n }\r\n }\r\n input.onblur = function () {\r\n // window.lineInputFocused = false;\r\n // input.parentNode.removeChild(input);\r\n // document.removeEventListener(\"click\", blur);\r\n };\r\n\r\n // 6) set input up down and submit handlers\r\n let holdStarter;// This timeout, started on mousedown, triggers the beginning of a hold\r\n let holdDelay = 300; // This is how many milliseconds to wait before recognizing a hold\r\n let holdActive = false; // This flag indicates the user is currently holding the mouse down\r\n inputArrows.forEach(function (arrow) {\r\n let arrowMousedown = (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n const isNegative = e.currentTarget.dataset.action === 'angle-input-down';\r\n\r\n holdStarter = setTimeout(function () {\r\n holdStarter = null;\r\n holdActive = true;\r\n\r\n state.handlerHold = setInterval(function () {\r\n if (holdActive) {\r\n handleArrowInputIncrease(isNegative, input, rotateAnglePart, basePoint, secondaryPoint, rotated90_1, rotated90_2, bottomLine);\r\n }\r\n }, 50);\r\n //console.log('Holding...')\r\n }, holdDelay);\r\n }\r\n let arrowMouseup = (e) => {\r\n if (holdStarter) {\r\n clearTimeout(holdStarter);\r\n\r\n const isNegative = e.currentTarget.dataset.action === 'angle-input-down';\r\n handleArrowInputIncrease(isNegative, input, rotateAnglePart, basePoint, secondaryPoint, rotated90_1, rotated90_2, bottomLine);\r\n //console.log('Clicked')\r\n }\r\n // Otherwise, if the mouse was being held, end the hold\r\n else if (holdActive) {\r\n holdActive = false;\r\n clearInterval(state.handlerHold);\r\n }\r\n };\r\n arrow.addEventListener('mousedown', arrowMousedown);\r\n arrow.addEventListener('mouseup', arrowMouseup);\r\n });\r\n inputSubmit[0].addEventListener('click', self.deActivateRotateAngle);\r\n\r\n setTimeout(() => {\r\n document.addEventListener(\"click\", blur);\r\n }, 500);\r\n };\r\n this.removeBumpouts = function () {\r\n for (var i = 0; i < shape.length; i++) {\r\n if (shape[i].bumpoutOverlay) {\r\n shape[i].deleteBumpout();\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * remember base configuration before rotation (we will need it in onchange method, and after blur)\r\n **/\r\n this.setRotateAnglePartBaseConfiguration = (rotateAnglePart, basePoint, secondaryPoint, rotated90_1, rotated90_2, bottomLine) => {\r\n rotateAnglePart.baseConfiguration = {\r\n basePointX: basePoint.x,\r\n basePointX2: secondaryPoint.x,\r\n basePointY: basePoint.y,\r\n basePointY2: secondaryPoint.y,\r\n rotated90_1: rotated90_1,\r\n rotated90_2: rotated90_2,\r\n baseOldX: bottomLine.from.x,\r\n baseOldY: bottomLine.from.y,\r\n baseOldX1: bottomLine.to.x,\r\n baseOldY1: bottomLine.to.y,\r\n widthDiff: Math.abs(basePoint.y - secondaryPoint.y), // difference between basePointX and secondaryPointX, we need it to make bottom line straight\r\n };\r\n }\r\n\r\n /**\r\n * bottomLine - far line, rotating around centerPoint\r\n * basePoint - first point where rotation starts\r\n * secondaryPoint - second point where rotation starts\r\n **/\r\n this.rotateAngleInputChange = (input, rotateAnglePart, basePoint, secondaryPoint, rotated90_1Calc, rotated90_2Calc, bottomLine) => {\r\n if (!rotateAnglePart.baseConfiguration || rotateAnglePart.rotatedAngleValue === 0) {\r\n this.setRotateAnglePartBaseConfiguration(rotateAnglePart, basePoint, secondaryPoint, rotated90_1Calc, rotated90_2Calc, bottomLine)\r\n }\r\n\r\n let {\r\n basePointX, basePointX2, basePointY, basePointY2, baseOldX, baseOldY, baseOldX1, baseOldY1, widthDiff, rotated90_1, rotated90_2\r\n } = rotateAnglePart.baseConfiguration;\r\n if (input.value > +input.max) {\r\n input.value = +input.max;\r\n }\r\n if (input.value < +input.min) {\r\n input.value = +input.min;\r\n }\r\n\r\n // 90 - is set for 90-0-90\r\n let value = 90 - +input.value;\r\n\r\n hideAngleTooltipArrows(+input.value);\r\n\r\n self.rotateAngleParts.forEach((rotateAnglePart) => {\r\n if (rotateAnglePart.isActive) {\r\n rotateAnglePart.rotatedAngleValue = value\r\n }\r\n });\r\n const anglePercentage = Math.round(value * 100 / 90 * 100) / 100; // for example, 20deg = 22.2%\r\n const diffToMinus = Math.round(widthDiff * anglePercentage / 100 * 100) / 100; // for example, 26 * 45 / 100 = 11.7\r\n\r\n const pointToRotate1 = (value < 90) ? {x:baseOldX, y: baseOldY} : rotated90_1;\r\n const pointToRotate2 = (value < 90) ? {x:baseOldX1, y: baseOldY1} : rotated90_2;\r\n const angle = getAngle(rotateAnglePart, value);\r\n\r\n let rotationCenterPoint = getRotationCentrePoint(rotateAnglePart, value, bottomLine, basePoint, secondaryPoint);\r\n\r\n //console.log(angle);\r\n //console.log(rotationCenterPoint);\r\n //console.log(pointToRotate1);\r\n let rotated = rotatePoint(pointToRotate1, rotationCenterPoint, angle);\r\n let rotated2 = rotatePoint(pointToRotate2, rotationCenterPoint, angle);\r\n\r\n bottomLine.from.x = rotated.x;\r\n bottomLine.from.y = rotated.y;\r\n bottomLine.to.x = rotated2.x;\r\n bottomLine.to.y = rotated2.y;\r\n\r\n // change base points positions\r\n // var tempPoint = new point(rotationCenterPoint.x, rotationCenterPoint.y);\r\n // tempPoint.init(bottomLine);\r\n // tempPoint.layout = 'white-circle';\r\n\r\n switch (rotateAnglePart.shapeType) {\r\n case \"wideangle\":\r\n case \"horseshoe\":\r\n default: {\r\n //console.log('diffToMinus', diffToMinus)\r\n if (diffToMinus < widthDiff) {\r\n if (rotateAnglePart && rotateAnglePart.angleDirection === \"right\") {\r\n //console.log('RIGHT bottom Orient',bottomLine.getOrientation())\r\n switch (bottomLine.getOrientation()) {\r\n case orientation.HORIZONTAL: {\r\n basePoint.x = basePointX; secondaryPoint.x = basePointX2;\r\n break;\r\n }\r\n case orientation.VERTICAL: {\r\n basePoint.y = basePointY; secondaryPoint.y = basePointY2;\r\n break;\r\n }\r\n case orientation.SOUTHEAST: { basePoint.y = basePointY + diffToMinus; secondaryPoint.y = basePointY2;\r\n break;\r\n }\r\n case orientation.NORTHWEST: { basePoint.y = basePointY - diffToMinus; secondaryPoint.y = basePointY2;\r\n break;\r\n }\r\n case orientation.NORTHEAST: { basePoint.x = basePointX + diffToMinus; secondaryPoint.x = basePointX2;\r\n break;\r\n }\r\n case orientation.SOUTHWEST: { basePoint.x = basePointX - diffToMinus; secondaryPoint.x = basePointX2;\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n } else {\r\n //console.log('LEFT bottom Orient',bottomLine.getOrientation())\r\n switch (bottomLine.getOrientation()) {\r\n case orientation.HORIZONTAL: { basePoint.x = basePointX; secondaryPoint.x = basePointX2;\r\n break;\r\n }\r\n case orientation.VERTICAL: { basePoint.y = basePointY; secondaryPoint.y = basePointY2;\r\n break;\r\n }\r\n case orientation.SOUTHEAST: { basePoint.x = basePointX - diffToMinus; secondaryPoint.x = basePointX2;\r\n break;\r\n }\r\n case orientation.NORTHWEST: { basePoint.x = basePointX + diffToMinus; secondaryPoint.x = basePointX2;\r\n break;\r\n }\r\n case orientation.NORTHEAST: { basePoint.y = basePointY + diffToMinus; secondaryPoint.y = basePointY2;\r\n break;\r\n }\r\n case orientation.SOUTHWEST: { basePoint.y = basePointY - diffToMinus; secondaryPoint.y = basePointY2;\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n //console.log('basePoint', basePoint);\r\n //console.log('secondaryPoint', secondaryPoint);\r\n } else {\r\n if (rotateAnglePart && rotateAnglePart.angleDirection === \"right\") {\r\n //console.log('RIGHT 90 Orient', bottomLine.getOrientation());\r\n switch (bottomLine.getOrientation()) {\r\n case orientation.HORIZONTAL:\r\n if (self.getNextLine(basePoint.getParent()).getLineDirection().orientation === \"vertical\"){\r\n basePoint.x = basePointX - widthDiff;\r\n secondaryPoint.x = basePointX2 - widthDiff;\r\n } else {\r\n if (bottomLine.getLineDirection().newDirection === \"east\"){\r\n if (self.getPrevLine(basePoint.getParent()).getLineDirection().orientation === \"vertical\"){\r\n basePoint.x = basePointX;\r\n secondaryPoint.x = basePointX2;\r\n } else {\r\n basePoint.x = basePointX - widthDiff;\r\n secondaryPoint.x = basePointX2 + widthDiff;\r\n }\r\n } else {\r\n if (self.getPrevLine(basePoint.getParent()).getLineDirection().orientation === \"vertical\"){\r\n basePoint.x = basePointX;\r\n secondaryPoint.x = basePointX2;\r\n } else {\r\n basePoint.x = basePointX + widthDiff;\r\n secondaryPoint.x = basePointX2 - widthDiff;\r\n }\r\n }\r\n }\r\n break;\r\n case orientation.VERTICAL:\r\n if (self.getNextLine(basePoint.getParent()).getLineDirection().orientation === \"vertical\") {\r\n if (bottomLine.getLineDirection().newDirection === \"north\") {\r\n if (self.getPrevLine(basePoint.getParent()).getLineDirection().orientation === \"horizontal\") {\r\n basePoint.y = basePointY;\r\n secondaryPoint.y = basePointY2;\r\n } else {\r\n basePoint.y = basePointY + widthDiff;\r\n secondaryPoint.y = basePointY2 - widthDiff;\r\n }\r\n } else {\r\n if (self.getPrevLine(basePoint.getParent()).getLineDirection().orientation === \"horizontal\") {\r\n basePoint.y = basePointY ;\r\n secondaryPoint.y = basePointY2 ;\r\n } else {\r\n basePoint.y = basePointY - widthDiff;\r\n secondaryPoint.y = basePointY2 + widthDiff;\r\n }\r\n }\r\n }\r\n break;\r\n case orientation.SOUTHEAST: {\r\n secondaryPoint.x = basePointX2 - widthDiff + diffToMinus;\r\n basePoint.x = basePointX - widthDiff;\r\n break;\r\n }\r\n case orientation.NORTHEAST: {\r\n secondaryPoint.y = basePointY2 + widthDiff - diffToMinus;\r\n basePoint.y = basePointY + widthDiff;\r\n break;\r\n }\r\n case orientation.SOUTHWEST: {\r\n secondaryPoint.x = basePointX2;\r\n basePoint.x = basePointX;\r\n basePoint.y = basePointY - widthDiff;\r\n secondaryPoint.y = basePointY2 - widthDiff + diffToMinus;\r\n break;\r\n }\r\n case orientation.NORTHWEST: {\r\n secondaryPoint.x = basePointX2 + widthDiff - diffToMinus;\r\n basePoint.x = basePointX + widthDiff;\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n } else {\r\n //console.log('LEFT 90 Orient', bottomLine.getOrientation());\r\n switch (bottomLine.getOrientation()) {\r\n case orientation.HORIZONTAL:\r\n if (self.getNextLine(basePoint.getParent()).getLineDirection().orientation === \"vertical\"){\r\n if (bottomLine.getLineDirection().newDirection === \"west\"){\r\n basePoint.x = basePointX - widthDiff;\r\n secondaryPoint.x = basePointX2 + widthDiff;\r\n } else {\r\n basePoint.x = basePointX + widthDiff;\r\n secondaryPoint.x = basePointX2 - widthDiff;\r\n }\r\n } else {\r\n basePoint.x = basePointX;\r\n secondaryPoint.x = basePointX2;\r\n }\r\n break;\r\n case orientation.VERTICAL:\r\n if (self.getNextLine(basePoint.getParent()).getLineDirection().orientation === \"horizontal\"){\r\n if (bottomLine.getLineDirection().newDirection === \"south\") {\r\n basePoint.y = basePointY + widthDiff;\r\n secondaryPoint.y = basePointY2 - widthDiff;\r\n } else {\r\n basePoint.y = basePointY - widthDiff;\r\n secondaryPoint.y = basePointY2 + widthDiff;\r\n }\r\n }\r\n break;\r\n case orientation.SOUTHEAST: {\r\n basePoint.y = basePointY + widthDiff;\r\n secondaryPoint.y = basePointY2 + widthDiff - diffToMinus;\r\n break;\r\n }\r\n case orientation.NORTHEAST: {\r\n secondaryPoint.x = basePointX2 + widthDiff - diffToMinus;\r\n basePoint.x = basePointX + widthDiff;\r\n break;\r\n }\r\n case orientation.SOUTHWEST: {\r\n basePoint.x = basePointX - widthDiff ;\r\n secondaryPoint.x = basePointX2 - widthDiff + diffToMinus;\r\n break;\r\n }\r\n case orientation.NORTHWEST: {\r\n basePoint.y = basePointY - widthDiff;\r\n secondaryPoint.y = basePointY2 - widthDiff+ diffToMinus;\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // const pointDiff = Math.round(15 * anglePercentage) / 100; // points margin\r\n [basePoint, secondaryPoint].forEach(point => {\r\n if (point.arcLength || point.angle) {\r\n point.arcLength = 0;\r\n point.angle = 0;\r\n }\r\n // disallow points radiuses\r\n point.angleIsChanged = !!value; // keep if false when angle is 0\r\n point.rotateAnglePart = rotateAnglePart; // each point has a link on the whole rotated part\r\n });\r\n bottomLine.from.rotateAnglePart = rotateAnglePart;\r\n bottomLine.to.rotateAnglePart = rotateAnglePart;\r\n // bottomLine.from.pointDiff = pointDiff;\r\n // bottomLine.to.pointDiff = pointDiff;\r\n };\r\n this.getNextLine = (line, index, shouldSearchAmongLinesWithoutAngles) => {\r\n const lines = shouldSearchAmongLinesWithoutAngles ? this.getLinesWithoutAngle() : shape;\r\n index = index || lines.indexOf(line);\r\n let next = index + 1;\r\n if (index === lines.length - 1) {\r\n next = 0;\r\n }\r\n return lines[next];\r\n };\r\n this.getPrevLine = function(line, index) {\r\n index = index || shape.indexOf(line);\r\n var prev = index - 1;\r\n if (index === 0) {\r\n prev = shape.length - 1;\r\n }\r\n return shape[prev];\r\n };\r\n this.getAngleDirection = function(line) {\r\n var index = shape.indexOf(line);\r\n var lines = {\r\n line1: shape[index],\r\n line2: this.getNextLine(line, index),\r\n lineBefore: this.getPrevLine(line, index)\r\n };\r\n return getPointDirection(lines.line1.from, lines.line1.to, lines.line2.to, lines.lineBefore.from);\r\n };\r\n this.flip = function(flipDirection) {\r\n let i;\r\n switch(flipDirection) {\r\n case self.FlipDirection.HORIZONTAL:\r\n var max_y = 0;\r\n for (i = 0; i < shape.length; i++) {\r\n if (max_y < shape[i].from.y) {\r\n max_y = shape[i].from.y;\r\n }\r\n }\r\n for (i = 0; i < shape.length; i++) {\r\n shape[i].from.y = max_y - shape[i].from.y;\r\n }\r\n break;\r\n case self.FlipDirection.VERTICAL:\r\n var max_x = 0;\r\n for (i = 0; i < shape.length; i++) {\r\n if (max_x < shape[i].from.x) {\r\n max_x = shape[i].from.x;\r\n }\r\n }\r\n for (i = 0; i < shape.length; i++) {\r\n shape[i].from.x = max_x - shape[i].from.x;\r\n }\r\n break;\r\n }\r\n };\r\n this.rotate = function(degrees, direction, isSlabMode = false, aroundPoint = null) {\r\n // todo fix bumpout rotation and remove this\r\n // if (self.isWithBumpout() || self.isWithMitered()) {\r\n // return\r\n // }\r\n /////////////////////////////////////////\r\n isSlabMode ? this.rotatedDegreesSlab += degrees : this.rotatedDegrees += degrees;\r\n (this.rotatedDegrees === 360) && (this.rotatedDegrees = 0);\r\n (this.rotatedDegreesSlab === 360) && (this.rotatedDegreesSlab = 0);\r\n\r\n direction = direction || self.Direction.Right;\r\n let angle = (degrees * Math.PI / 180);\r\n if (direction === self.Direction.LEFT)\r\n angle *= -1;\r\n\r\n if (!aroundPoint) {\r\n aroundPoint = this.getCenter();\r\n }\r\n //console.log('degrees', degrees);\r\n //console.log('aroundPoint', aroundPoint);\r\n for (let i = 0; i < shape.length; i++) {\r\n shape[i].from.rotate(aroundPoint, angle, isSlabMode);\r\n }\r\n for (let i = 0; i < shape.length; i++) {\r\n let line1 = this.getAngleDirection(shape[i]),\r\n count = ((i - 1) < 0) ? shape.length - 1 : i - 1,\r\n line2 = this.getAngleDirection(shape[count]);\r\n\r\n shape[i].from.changeCornerDirection(line1, line2);\r\n }\r\n this.rotateOriginalPointCords(aroundPoint, angle);\r\n this.rotateShapeBumpoutPoints(aroundPoint, angle, isSlabMode); //todo\r\n if (this.shapeRotatable) {\r\n this.shapeRotatable.rotateShapeRotatablePoints(aroundPoint, angle, isSlabMode);\r\n }\r\n if (!isSlabMode) {\r\n this.setIsPointsChanged(true);\r\n }\r\n };\r\n this.rotateOriginalPointCords = (aroundPoint, angle) => {\r\n this.originalPointsCoords = this.originalPointsCoords.map(pointCoords => {\r\n return getRotatedPointV1(pointCoords, aroundPoint, angle);\r\n })\r\n }\r\n this.rotateShapeBumpoutPoints = (aroundPoint, angle, isSlabMode) => {\r\n if (this.isWithBumpout()) {\r\n for (const line of this.getLines()) {\r\n if (line.isWithBumpout()) {\r\n const bumpoutPoints = line.bumpoutOverlay.getBumpoutPoints();\r\n for (const bumpoutPointsKey in bumpoutPoints) {\r\n if (bumpoutPoints.hasOwnProperty(bumpoutPointsKey)) {\r\n bumpoutPoints[bumpoutPointsKey].rotate(aroundPoint, angle, isSlabMode);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.setRotationDegrees = (rotationDegrees) => {\r\n this.rotatedDegrees = rotationDegrees\r\n }\r\n this.updateSlabPoints = () => {\r\n for (let i = 0; i < shape.length; i++) {\r\n shape[i].from.posSlab.x = JSON.parse(JSON.stringify(shape[i].from.pos.x));\r\n shape[i].from.posSlab.y = JSON.parse(JSON.stringify(shape[i].from.pos.y));\r\n if (shape[i].isWithBumpout()) {\r\n //this is used to reset additional bumpout shape\r\n SlabWorkspace.slabAdditionalShapes.removeActiveBacksplashByLine(shape[i]);\r\n\r\n //this is used to reset bumpoutPoints if they displayed with the line\r\n const bumpoutPoints = shape[i].bumpoutOverlay.getBumpoutPoints();\r\n for (let point in bumpoutPoints) {\r\n bumpoutPoints[point].posSlab = clone(bumpoutPoints[point].pos);\r\n }\r\n }\r\n }\r\n }\r\n this.updateSlabPosition = () => {\r\n this.setSlabPosition(this.pos);\r\n }\r\n this.init = (position, segments) => {\r\n if (position) {\r\n this.setPositionWithoutChange(position);\r\n this.setSlabPosition(position);\r\n }\r\n if (SHAPE_PART_IDS_VISIBLE_ONLY_IN_THE_SLAB_MODE.includes(this.partId)) {\r\n this.isPositionChanged = false;\r\n }\r\n\r\n if (segments)\r\n setShape(segments);\r\n\r\n // that hook is for resizing, perhaps we should rewrite resizing and remove this\r\n if (self.layout270.indexOf(this.fromLayout) !== -1) {\r\n self.rotatedDegrees = 270;\r\n }\r\n\r\n function getRandomInt(min, max) {\r\n return Math.floor(Math.random() * (max - min)) + min;\r\n }\r\n totalShapeCount && setFillColor(getRandomInt(0, 255), getRandomInt(0, 255), getRandomInt(0, 255), 0.3);\r\n this.initEvents(sqftEventManager);\r\n };\r\n this.getPriority = (eventManager) => {\r\n switch (this.partId) {\r\n case SHAPE_PART_ID.upper_cabinet_boxes: return eventManager.priorities.SHAPE_UPPER\r\n case SHAPE_PART_ID.slabPlaceHolder: return eventManager.priorities.SHAPE_SLAB_PLACEHOLDER\r\n default: return eventManager.priorities.SHAPE\r\n }\r\n }\r\n this.initEvents = (eventManager = sqftEventManager) => {\r\n eventManager.addEvent(\r\n eventManager.events.MOUSE_MOVE,\r\n onMouseMove,\r\n this,\r\n this.getPriority(eventManager)\r\n );\r\n eventManager.addEvent(\r\n eventManager.events.MOUSE_DOWN,\r\n onMouseDown,\r\n this,\r\n this.getPriority(eventManager)\r\n );\r\n eventManager.addEvent(\r\n eventManager.events.MOUSE_UP,\r\n onMouseUp,\r\n this,\r\n this.getPriority(eventManager)\r\n );\r\n eventManager.addEvent(\r\n eventManager.events.RENDER,\r\n this.render,\r\n this,\r\n this.getPriority(eventManager)\r\n );\r\n eventManager.addEvent(\r\n eventManager.events.DBLCLICK,\r\n onDblClick,\r\n this,\r\n this.getPriority(eventManager)\r\n );\r\n };\r\n this.resetState = () => {\r\n state.mouseDown = false;\r\n state.mouseDownPosition = null;\r\n state.hovering = false;\r\n state.handlerHold = null;\r\n };\r\n this.deregisterEvents = () => {\r\n sqftEventManager.removeEvent(this);\r\n this.resetState();\r\n this.isHidden = true;\r\n this.deregisterLineEvents();\r\n };\r\n this.deregisterLineEvents = () => {\r\n for (let i = 0; i < shape.length; i++) {\r\n shape[i].deregisterEvents();\r\n }\r\n };\r\n this.reInitLineTitleEvents = () => {\r\n for (let i = 0; i < shape.length; i++) {\r\n shape[i].reInitTitleEvents();\r\n }\r\n };\r\n this.reInitEvents = () => {\r\n if (this.isHidden) {\r\n this.initEvents(sqftEventManager);\r\n this.restoreState();\r\n this.isHidden = false;\r\n for (let i = 0; i < shape.length; i++) {\r\n shape[i].reInitEvents();\r\n }\r\n }\r\n };\r\n this.deregisterPartEvents = () => {\r\n for (let i = 0; i < shape.length; i++) {\r\n shape[i].deregisterPartEvents();\r\n }\r\n };\r\n this.reInitPartEvents = () => {\r\n for (let i = 0; i < shape.length; i++) {\r\n shape[i].reInitPartEvents();\r\n }\r\n };\r\n this.restoreState = () => {\r\n state = {\r\n mouseDown: false,\r\n mouseDownPosition: null,\r\n hovering: false,\r\n handlerHold: null\r\n };\r\n };\r\n this.destroy = (protect) => {\r\n if (!protect) {\r\n for (var i = 0; i < shape.length; i++) {\r\n shape[i].destroy();\r\n }\r\n if (this.shapeRotatable) {\r\n sqftShapeManager.disableRotatableState(this);\r\n }\r\n sqftEventManager.removeEvent(self);\r\n workspaceControllers.handles.deleteAllResourcesForTheShape(this.id);\r\n workspaceControllers.hinge.deleteAllResourcesForTheShape(this.id);\r\n }\r\n };\r\n this.stealCursor = function(who) {\r\n for (var i = 0; i < shape.length; i++) {\r\n if (shape[i] === who) {\r\n sqftEventManager.resetCursor(self);\r\n }\r\n }\r\n };\r\n this.resetCursor = function() {\r\n sqftEventManager.resetCursor(self);\r\n };\r\n this.isShapeHasIntersections = () => {\r\n return shape.some(line => {\r\n return line.hasIntersections();\r\n })\r\n }\r\n this.renderAnglePartActive = function(rotateAnglePart, ctx) {\r\n ctx.save();\r\n ctx.beginPath();\r\n const rotateShape1 = getRotateAngleRectangle(rotateAnglePart);\r\n ctx.moveTo(rotateShape1[0][0], rotateShape1[0][1]);\r\n ctx.lineTo(rotateShape1[1][0], rotateShape1[1][1]);\r\n ctx.lineTo(rotateShape1[2][0], rotateShape1[2][1]);\r\n ctx.lineTo(rotateShape1[3][0], rotateShape1[3][1]);\r\n ctx.closePath();\r\n ctx.fillStyle = \"rgba(159, 198, 33, 0.5)\";\r\n ctx.fill();\r\n ctx.restore();\r\n };\r\n\r\n this.isAngleRotatedPartsWithCorner = (rotateAnglePart) => {\r\n let line1 = self.getPrevLine(shape[rotateAnglePart.line1]);\r\n let line2 = shape[rotateAnglePart.line2];\r\n\r\n if ((self.shapeType === \"horseshoe\" || self.shapeType === \"wideangle\")\r\n && rotateAnglePart.line1 > rotateAnglePart.line2\r\n ) {\r\n line1 = shape[rotateAnglePart.line1];\r\n line2 = self.getPrevLine(shape[rotateAnglePart.line2]);\r\n }\r\n\r\n return [line1, line2].some((line) => {\r\n return line.to.angle > 0 || line.to.arcLength > 0\r\n });\r\n }\r\n\r\n this.render = (ctx) => {\r\n this.shapeRender.render(ctx)\r\n }\r\n\r\n}\r\n","import {getCurrentLayout} from \"../../../appLayout\";\r\nimport {getGroupDescription} from \"../../../selectionWindow/selectionDescriptionCoverTranslates\";\r\nimport {CART_ITEM_ADDED_BY} from \"../../../shoppingCart/cartItemInterface\";\r\nimport {cartItemInStock} from \"../../lookNavigation/lookFunctions2\";\r\nimport {IS_LIXIL_SERVERS, IS_PRODUCT_JOURNEY} from \"../../../../config\";\r\nimport {getFeatureUnit} from \"../../../../misc/helpers\";\r\nimport store from \"../../../../store\";\r\n// import {getBvFeatures} from \"../../../../api/server-api\";\r\n\r\n/**\r\n * Returns qtCatProperties\r\n * @param lookActiveFeature {object}\r\n * @returns {object} objects\r\n */\r\nexport const getAvailableWizardList = (lookActiveFeature) => {\r\n if (!lookActiveFeature) {\r\n return {}\r\n }\r\n const parent = lookActiveFeature.getParent();\r\n\r\n return parent.qtCatProperties ? parent.qtCatProperties : {};\r\n}\r\n\r\n/**\r\n * Returns subParts\r\n * @param qtCategoryName {string}\r\n * @returns {array} array of objects\r\n */\r\nexport const getWizardSubParts = (qtCategoryName) => {\r\n const layout = getCurrentLayout();\r\n if (layout.qtCategories) { // set default if index is not matching\r\n //console.log(\"qtCategories\", layout.qtCategories);//virtualized list //navigation subitems\r\n\r\n let qtCategory = layout.qtCategories.find(qtCat => qtCat.name === qtCategoryName);\r\n if (qtCategory && qtCategory.subParts) {\r\n return qtCategory.subParts\r\n }\r\n }\r\n return []\r\n}\r\n\r\n/**\r\n * Returns active features list for\r\n * @param subPart {object}\r\n * @param intl {object}\r\n * @param fabricatorData array\r\n * @returns {array} array of objects\r\n */\r\nexport const getFeatureGroupDescription = (subPart, intl, fabricatorData) => {\r\n const name = (subPart.customGroupDisplayName || subPart.partName || \"\").toLowerCase();\r\n if ((fabricatorData.isLowes || fabricatorData.isCaesarStone) && intl.messages) {\r\n if (intl.locale === \"fr-FR\" && intl.messages[\"transDoc.description_FR.\" + name]) {\r\n return intl.formatMessage({id: \"transDoc.description_FR.\" + name})\r\n } else if (intl.locale === \"pl-PL\" && intl.messages[\"transDoc.customTranslateDescription_PL.\" + name]) {\r\n return intl.formatMessage({id: \"transDoc.customTranslateDescription_PL.\" + name})\r\n }\r\n }\r\n return subPart.customDescription || subPart.description\r\n || intl.formatMessage({ id: getGroupDescription(subPart.partName) });\r\n};\r\n\r\n// const getMissingFeatures = (missingFeatures) => {\r\n// getBvFeatures(missingFeatures)\r\n// .then(response => {\r\n// const layout = getCurrentLayout();\r\n// layout.loadNewFeatures(response.data);\r\n// return true\r\n// })\r\n// .catch(() => false)\r\n// }\r\n\r\n/**\r\n * returns bundled features\r\n * @param feature {featureInterface}\r\n * @returns {array}\r\n */\r\nexport const getLixilRequiredNotIncludedFeatures = (feature) => {\r\n if (Array.isArray(feature.dbFeature.lixilRequiredNotIncluded) && feature.dbFeature.lixilRequiredNotIncluded.length) {\r\n // todo remove\r\n //feature.dbFeature.lixilRequiredNotIncluded.push(90068248, 90068237, 90068210, 90074461, 90068828, 90074449,\r\n // 90068281, 90068389, 90069955, 90069948, 90069950, 90071177, 90070070, 90069587 );\r\n // await getMissingFeatures(feature.dbFeature.lixilRequiredNotIncluded);\r\n\r\n const layout = getCurrentLayout();\r\n let allFeatures = layout.getAllFeatures(true);\r\n let lixilRequiredNotIncluded = allFeatures.filter((checkFeature) => {\r\n return feature.dbFeature.lixilRequiredNotIncluded.includes(checkFeature.dbFeature.id)\r\n });\r\n console.log(\"lixilRequiredNotIncluded\", lixilRequiredNotIncluded);\r\n\r\n return lixilRequiredNotIncluded\r\n }\r\n return []\r\n}\r\n\r\n/**\r\n * returns formatted string\r\n * @param str {string}\r\n * @returns {string}\r\n */\r\nexport const formatStrToUrl = (str) => {\r\n if (!str) {\r\n return \"\"\r\n }\r\n\r\n return str.replace(/\\s+/g, '-').toLowerCase();\r\n}\r\n\r\n\r\n/**\r\n * removes check collection for specific fabricator\r\n * @param feature {featureInterface}\r\n * @returns {boolean}\r\n */\r\nexport const allowCheckForCollection = (feature) => {\r\n if (!feature) {\r\n return true\r\n }\r\n // For shower fixture we have same customDisplayName, but different collection name (\"Euphoria\" and \"Shower Configuration\").\r\n // But they still should match\r\n // return feature.partId !== \"shower_fixture\"\r\n return true\r\n}\r\n\r\nconst unitsToCountQuantity = [\"unit\", \"units\", \"qty\", \"each\", \"Each\", \"no quantity\"];\r\n\r\n/**\r\n * returns current cart items length (with all quantites or only cart Items)\r\n * @param cartItems {[cartItemInterface]}\r\n * @param intl {object}\r\n * @param forceCheckAllQuantitties {boolean}\r\n * @returns {number}\r\n */\r\nexport const getCartItemsCount = (cartItems, intl = null, forceCheckAllQuantitties = IS_LIXIL_SERVERS) => {\r\n\r\n const fabricatorData = store.getState().fabricatorState;\r\n\r\n return cartItems.reduce((total, cartItem) => {\r\n const shouldBeCounted = !cartItem.relatedProductParent && !cartItem.isRemoved && cartItemInStock(cartItem);\r\n if (!shouldBeCounted || (IS_PRODUCT_JOURNEY && cartItem.addedBy !== CART_ITEM_ADDED_BY.user)) {\r\n return total\r\n }\r\n // || (featureIsBundle(cartItem.cartFeature, cartItems) && getBundledFeatures(cartItem.cartFeature).some(relFeature => relFeature.dbFeature.lixilAvailableQty > 0))\r\n if (forceCheckAllQuantitties) {\r\n return total + cartItem.quantity\r\n } else if (intl) {\r\n const unit = getFeatureUnit(cartItem.cartFeature, intl, fabricatorData, cartItem.quantity, cartItem);\r\n if (unit && unitsToCountQuantity.includes(unit.toLowerCase())) {\r\n return total + cartItem.quantity\r\n }\r\n }\r\n // Items in visualizer should equal total quantity of items minus out of stock (Shower bundle will count as 1 not 7)\r\n return total + 1 // simple return cart items count\r\n }, 0)\r\n}\r\n\r\n","import {getCurrentLayout} from \"../bvcomponents/appLayout\";\r\nimport {featureThumbnailUrl, getCartItemObject} from \"./helpers\";\r\nimport store from \"../store\";\r\nimport {setActiveQuoteIndex, setQuotes} from \"../actions/roomsFunctions\";\r\nimport {setQtActiveCategory} from \"../actions/actionFunctions\";\r\nimport {getCommonVisualizerType} from \"../config\";\r\nimport {hasSubscriptionForRoom} from \"./visualizerSwitchingFunctions\";\r\nimport {updateCurrentQuote} from \"./quotesFunctions\";\r\nimport {updateAllWizardValues} from \"../actions/wizardFunctions\";\r\nimport {showWizardInsteadOfQT} from \"../bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\nimport { getNavItems } from \"../bvcomponents/sqft/helpers/sqftHelperUi\";\r\n\r\n/**\r\n * @param qtCatName {string}\r\n * @param quoteIndex {number}\r\n * returns {string}\r\n */\r\nexport const getRoomImageFromQtCategory = (qtCatName, quoteIndex) => {\r\n const {fabricatorState, cartState} = store.getState();\r\n if (!fabricatorState.settings.useCategorySwitching) {\r\n return \"\"\r\n }\r\n const lowerCasedVisualizerType = getCommonVisualizerType().toLowerCase();\r\n if (!qtCatName && cartState.cartItems.length && Number.isInteger(quoteIndex)) {\r\n const {cartItems} = cartState;\r\n const existingAddedCartItem = cartItems.find(cItem => cItem.partId === \"room\" && (cItem.currentQuote === quoteIndex));\r\n if (existingAddedCartItem && !featureIsMatchingQtCatName(existingAddedCartItem.cartFeature, lowerCasedVisualizerType)\r\n && (!fabricatorState.settings.allowVisualizerSwitching || !hasSubscriptionForRoom(getRoomNameToCompare(existingAddedCartItem.cartFeature)))) {\r\n return featureThumbnailUrl(existingAddedCartItem.cartFeature)\r\n }\r\n return \"\"\r\n }\r\n const currentRoomName = qtCatName.trim().toLowerCase();\r\n const layout = getCurrentLayout();\r\n const roomFg = layout.getFeatureGroupByPartId(\"room\");\r\n if (roomFg) {\r\n const fgNavItems = layout.designNavigationItems({part: roomFg}, null, \"\", false, \"all\");\r\n const roomFeatureNavItem = fgNavItems.find(navItem => {\r\n return featureIsMatchingQtCatName(navItem.part, currentRoomName) && !featureIsMatchingQtCatName(navItem.part, lowerCasedVisualizerType)\r\n });\r\n if (roomFeatureNavItem) {\r\n return featureThumbnailUrl(roomFeatureNavItem.part)\r\n }\r\n }\r\n return \"\"\r\n}\r\n\r\n/**\r\n * @param cartItems {[cartItemInterface]}\r\n * @param quoteIndex {number}\r\n * returns {string}\r\n */\r\nexport const getCurrentQuoteRoomCartItem = (cartItems, quoteIndex) => {\r\n return cartItems.find(cItem => cItem.partId === \"room\" && cItem.currentQuote === quoteIndex)\r\n}\r\n\r\n/**\r\n * @param roomFeature {featureInterface}\r\n * returns {string}\r\n */\r\nexport const getRoomNameToCompare = (roomFeature) => {\r\n if (!roomFeature) {\r\n return \"\"\r\n }\r\n if (roomFeature.getLowerCasedCustomDisplayName) {\r\n return roomFeature.getLowerCasedCustomDisplayName() || roomFeature.dbFeature.sharedFeatureName || \"\"\r\n }\r\n return roomFeature.dbFeature.sharedFeatureName || \"\"\r\n}\r\n\r\n/**\r\n * @param cartItems {[cartItemInterface]}\r\n * @param quoteIndex {number}\r\n * @param withVisualizerCheck {boolean}\r\n * returns {string}\r\n */\r\nexport const getCurrentQuoteRoomName = (cartItems, quoteIndex, withVisualizerCheck = false) => {\r\n const quoteRoomCartItem = getCurrentQuoteRoomCartItem(cartItems, quoteIndex);\r\n if (quoteRoomCartItem && quoteRoomCartItem.cartFeature) {\r\n return getRoomNameToCompare(quoteRoomCartItem.cartFeature)\r\n }\r\n return withVisualizerCheck ? getCommonVisualizerType() : \"\"\r\n}\r\n\r\n/**\r\n * @param qtCategoryName {string}\r\n * @param fabricatorSettings {object}\r\n * returns {object}\r\n */\r\nexport const getRoomCartItemForCategoryName = (qtCategoryName, fabricatorSettings) => {\r\n const currentRoomName = qtCategoryName.trim().toLowerCase();\r\n const layout = getCurrentLayout();\r\n\r\n //1.) get room from qtCategories\r\n if (layout.qtCategories) {\r\n for (let i = 0; i < layout.qtCategories.length; i++) {\r\n const qtCategory = layout.qtCategories[i];\r\n if (qtCategory.subParts) {\r\n const roomFg = qtCategory.subParts.find(subPart => subPart.part.partId === \"room\");\r\n if (roomFg) {\r\n const fgNavItems = layout.designNavigationItems(roomFg, null, \"\", false, true);\r\n let roomFeatureNavItem = fgNavItems.find(navItem => featureIsMatchingQtCatName(navItem.part, currentRoomName));\r\n if (!roomFeatureNavItem) {\r\n let settings = fabricatorSettings;\r\n if (!settings) {\r\n settings = store.getState().fabricatorState.settings;\r\n }\r\n if (settings.allowVisualizerSwitching) {\r\n const visualizerRoomName = getCommonVisualizerType(document.kvConfig.visualizerType);\r\n if (visualizerRoomName !== qtCategoryName) {\r\n // QCDES-3163 cases when categories are not the same as room names, but we still need to add Room Cart Item\r\n roomFeatureNavItem = fgNavItems.find(navItem => featureIsMatchingQtCatName(navItem.part, visualizerRoomName));\r\n }\r\n }\r\n }\r\n if (roomFeatureNavItem) {\r\n return getCartItemObject(roomFeatureNavItem.part, 1, qtCategory.name)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n //2.) get room from room Groups\r\n const roomsFeatureGroup = layout.getSubPartFromQtCategories('room');\r\n const roomsNavItems = getNavItems(roomsFeatureGroup, \"\", {}, false, true);\r\n\r\n if (roomsNavItems) {\r\n const roomFeatureNavItem = roomsNavItems.find(navItem => featureIsMatchingQtCatName(navItem.part, currentRoomName));\r\n if (roomFeatureNavItem) {\r\n return getCartItemObject(roomFeatureNavItem.part, 1, qtCategoryName);\r\n }\r\n }\r\n\r\n return null\r\n}\r\n\r\n/**\r\n * @param newCartItems {[cartItemInterface]}\r\n * @param setNewRoomIndex {boolean}\r\n * @param shouldCreateNewQuotes {boolean}\r\n * returns {[cartItemInterface]}\r\n */\r\nexport const updateQuoteRoomsForCartItems = async (newCartItems, setNewRoomIndex = false, shouldCreateNewQuotes = true) => {\r\n const {fabricatorState, qtState, cartState, quotesState, wizardState} = store.getState();\r\n if (!fabricatorState.settings.useCategorySwitching) {\r\n return newCartItems\r\n }\r\n const {qtActiveCategory} = qtState;\r\n const {cartItems} = cartState;\r\n const {quotes, activeQuoteIndex} = quotesState;\r\n const {wizardList, wizardIsActive} = wizardState;\r\n\r\n const createdRoomCartItems = [];\r\n const layout = getCurrentLayout();\r\n\r\n for (const newCartItem of [...newCartItems]) { // here we are changing array to prevent looping each time we add a new cart item below\r\n\r\n const withCreated = [...cartItems, ...createdRoomCartItems];\r\n\r\n const currentRoomName = newCartItem.qtCatName ? newCartItem.qtCatName.trim().toLowerCase() : qtActiveCategory.trim().toLowerCase();\r\n const existingCartRoom = getCurrentQuoteRoomCartItem(withCreated, activeQuoteIndex);\r\n\r\n console.log(\"existingCartRoom\", existingCartRoom);\r\n\r\n if (existingCartRoom && existingCartRoom.cartFeature && (\r\n !showWizardInsteadOfQT(wizardList, wizardIsActive)\r\n && layout.qtCategories && layout.qtCategories.length > 1\r\n && !featureIsMatchingQtCatName(existingCartRoom.cartFeature, currentRoomName)) || (\r\n fabricatorState.settings.allowVisualizerSwitching && existingCartRoom && existingCartRoom.fromVisualizerType && (\r\n existingCartRoom.fromVisualizerType !== document.kvConfig.visualizerType\r\n )\r\n )) {\r\n\r\n if (!getRoomCartItemForCategoryName(currentRoomName, fabricatorState.settings)) { // this checks if room is available for current category\r\n break;\r\n }\r\n\r\n const existingAddedCartItem = withCreated.find(cItem => cItem.partId === \"room\" && featureIsMatchingQtCatName(cItem.cartFeature, currentRoomName));\r\n let newActiveQuoteIndex = 0;\r\n if (existingAddedCartItem) {\r\n newActiveQuoteIndex = existingAddedCartItem.currentQuote;\r\n } else if (shouldCreateNewQuotes) { // here we add a new room and add a new room cartItem\r\n const currentQuote = await updateCurrentQuote();\r\n const newQuotes = [...currentQuote, {}];\r\n newActiveQuoteIndex = quotes.length; // for example, if length is 2 (we are adding 2 index(0 and 1 already exist))\r\n store.dispatch(setQuotes(newQuotes));\r\n // console.log(\"newCreatedRooms\", newQuotes);\r\n const roomCartItem = getRoomCartItemForCategoryName(currentRoomName, fabricatorState.settings);\r\n if (roomCartItem && !newCartItems.some(cItem => {\r\n // QCDES-3901 if we are already adding room to the cart - no need to add another room\r\n return (cItem.currentQuote === roomCartItem.currentQuote)\r\n && (cItem.partId === roomCartItem.partId)\r\n && (cItem.cartFeature.dbFeature.id === roomCartItem.cartFeature.dbFeature.id)\r\n })) {\r\n const newRoomCartItem = Object.assign({}, roomCartItem, {\r\n currentQuote: newActiveQuoteIndex\r\n })\r\n newCartItems.push(newRoomCartItem);\r\n createdRoomCartItems.push(newRoomCartItem);\r\n }\r\n }\r\n console.log(\"newActiveQuoteIndex\", newActiveQuoteIndex);\r\n newCartItem.currentQuote = newActiveQuoteIndex;\r\n if (setNewRoomIndex) {\r\n store.dispatch(setActiveQuoteIndex(newActiveQuoteIndex));\r\n }\r\n } else if (!existingCartRoom && (newCartItem.partId !== \"room\")) { // we should add room cart item in current quote\r\n const roomCartItem = getRoomCartItemForCategoryName(currentRoomName, fabricatorState.settings);\r\n if (roomCartItem) {\r\n const newRoomCartItem = Object.assign({}, roomCartItem, {\r\n currentQuote: Number.isInteger(newCartItem.currentQuote) ? newCartItem.currentQuote : activeQuoteIndex\r\n })\r\n newCartItems.push(newRoomCartItem);\r\n createdRoomCartItems.push(newRoomCartItem);\r\n }\r\n }\r\n\r\n }\r\n\r\n return newCartItems\r\n}\r\n\r\n\r\n/**\r\n * update isVisibleInSQFT status\r\n */\r\nexport const updateSQFTCreatedStatusForQuotes = async () => {\r\n const {quotes} = store.getState().quotesState;\r\n const updatedQuotes = quotes.map(quote => {\r\n quote.isVisibleInSQFT = true\r\n return {...quote}\r\n })\r\n\r\n store.dispatch(setQuotes(updatedQuotes));\r\n}\r\n\r\n/**\r\n * @param quoteRoomName {string}\r\n * @param feature {featureInterface}\r\n */\r\nexport const getQtCategoryFromQuoteRoomName = (quoteRoomName, feature = null) => {\r\n const layout = getCurrentLayout();\r\n if (!layout.qtCategories) {\r\n return null\r\n }\r\n return layout.qtCategories.find(qtCat => {\r\n if (feature) {\r\n return featureIsMatchingQtCatName(feature, qtCat.name, true)\r\n }\r\n return qtCat.name.trim().toLowerCase() === quoteRoomName\r\n });\r\n}\r\n\r\n/**\r\n * @param feature {featureInterface}\r\n * @param qtCategoryName {string}\r\n * @param needToLowerCaseName {boolean}\r\n * @returns {boolean}\r\n */\r\nexport const featureIsMatchingQtCatName = (feature, qtCategoryName = \"\", needToLowerCaseName = false) => {\r\n if (!feature || !qtCategoryName) {\r\n return false\r\n }\r\n const checkCatName = needToLowerCaseName ? qtCategoryName.trim().toLowerCase() : qtCategoryName;\r\n\r\n // we need to have both compares here because:\r\n // bugfix/fix for comparing room names (customDisplayName is 'A - Kitchen', sharedFeatureName is 'Kitchen')\r\n // bugfix/fix for comparing room names (customDisplayName is 'Shower', sharedFeatureName is 'Bathroom', qtCat - 'Shower')\r\n const customLowerCasedName = feature.getLowerCasedCustomDisplayName ? feature.getLowerCasedCustomDisplayName() : \"\";\r\n const originalLowerCasedName = feature.getLowerCasedSharedFeatureName ? feature.getLowerCasedSharedFeatureName() : \"\";\r\n return (customLowerCasedName === checkCatName) || (originalLowerCasedName === checkCatName)\r\n}\r\n\r\n/**\r\n * update qtActiveCategory if room was selected and qtActiveCategory is not set\r\n * @param quoteIndex {number}\r\n */\r\nexport const checkIfNeedToSetNewCategory = (quoteIndex = 0) => {\r\n const {fabricatorState, cartState} = store.getState();\r\n if (fabricatorState.settings.useCategorySwitching) {\r\n const selectedQuoteRoomCartItem = getCurrentQuoteRoomCartItem(cartState.cartItems, quoteIndex);\r\n const qtCategory = getQtCategoryFromQuoteRoomName(\"\", selectedQuoteRoomCartItem ? selectedQuoteRoomCartItem.cartFeature : null);\r\n if (qtCategory) {\r\n store.dispatch(setQtActiveCategory(qtCategory.name));\r\n return true\r\n }\r\n }\r\n return false\r\n}\r\n\r\n/**\r\n * here we check if new room is needed if we are adding a new room, but there is already added another room\r\n * @param newCartItems {[cartItemInterface]}\r\n * @returns {cartItemInterface}\r\n */\r\nexport const getOtherRoomCartItemThatIsAddedToCurrentQuote = (newCartItems) => {\r\n if (newCartItems.length !== 1 || newCartItems[0].partId !== \"room\") {\r\n return null\r\n }\r\n const {cartState, quotesState} = store.getState();\r\n const addedRoom = getCurrentQuoteRoomCartItem(cartState.cartItems, quotesState.activeQuoteIndex);\r\n if (addedRoom && (addedRoom.cartFeature.partName !== newCartItems[0].cartFeature.partName)) {\r\n return addedRoom\r\n }\r\n return null\r\n}\r\n\r\n/**\r\n * here we create a new room (quote) and set new cart item quoteIndex\r\n * @param newRoomCartItem {cartItemInterface}\r\n * @param oldRoomCartItem {cartItemInterface}\r\n * @returns {cartItemInterface}\r\n */\r\nexport const addNewQuoteWithNewRoomCartItem = async (newRoomCartItem, oldRoomCartItem) => {\r\n const {quotesState, wizardState, fabricatorState} = store.getState();\r\n const {quotes, activeQuoteIndex} = quotesState;\r\n\r\n const currentQuote = await updateCurrentQuote();\r\n const newQuotes = [...currentQuote, {}];\r\n // console.log(\"newCreatedRooms\", newQuotes);\r\n const newActiveQuoteIndex = quotes.length; // for example, if length is 2 (we are adding 2 index(0 and 1 already exist))\r\n newRoomCartItem = Object.assign({}, newRoomCartItem, {\r\n currentQuote: newActiveQuoteIndex\r\n })\r\n store.dispatch(setQuotes(newQuotes));\r\n store.dispatch(setActiveQuoteIndex(newActiveQuoteIndex));\r\n if (oldRoomCartItem && wizardState && wizardState.allWizardsValues.length && wizardState.wizardActiveItem) {\r\n const newValues = wizardState.allWizardsValues.map(wizObject => {\r\n if (wizObject.quoteIndex === activeQuoteIndex\r\n && wizObject.isLastActiveWizard\r\n && wizObject.wizardItemId === wizardState.wizardActiveItem.id\r\n && wizObject.wizardSelectedValues\r\n && (Object.keys(wizObject.wizardSelectedValues).length === (wizardState.wizardActiveStep + 1))\r\n && wizObject.wizardSelectedValues[wizardState.wizardActiveStep].partId === \"room\"\r\n && wizObject.wizardSelectedValues[wizardState.wizardActiveStep].selectedFeature\r\n && wizObject.wizardSelectedValues[wizardState.wizardActiveStep].selectedFeature.dbFeature.id !== oldRoomCartItem.cartFeature.dbFeature.id) {\r\n console.log(\"changing allSelectedWizardValues, we need to make sure they are correctly updated\", );\r\n if (Object.keys(wizObject.wizardSelectedValues).length === 1 && fabricatorState.settings.allowVisualizerSwitching) {\r\n // we don't need to keep one item selected wizard in old quoteIndex\r\n return null\r\n } else {\r\n wizObject.wizardSelectedValues[wizardState.wizardActiveStep] = Object.assign(\r\n {},\r\n wizObject.wizardSelectedValues[wizardState.wizardActiveStep],\r\n {selectedFeature: oldRoomCartItem.cartFeature}\r\n )\r\n }\r\n }\r\n return wizObject\r\n }).filter(wizObject => wizObject)\r\n store.dispatch(updateAllWizardValues(newValues))\r\n }\r\n return newRoomCartItem\r\n}\r\n","import store from \"../store\";\r\nimport {getCurrentLayout} from \"../bvcomponents/appLayout\";\r\nimport {getImagePromiseFromLayout} from \"./getCanvasImageFromLayout\";\r\nimport {getQuoteVisualizerType, switchToNewVisualizerType} from \"./visualizerSwitchingFunctions\";\r\nimport {getRoomImageFromQtCategory} from \"./categorySwitchingFunctions\";\r\nimport {setQuotes} from \"../actions/roomsFunctions\";\r\nimport {loaderDisable, loaderEnable} from \"../bvcomponents/ui/loaderView\";\r\nimport {getTotalPrice} from \"./helpers\";\r\nimport {setVisualizerIsChanging} from \"../actions/serverFunctions\";\r\nimport {switchToWizardItem} from \"../bvcomponents/qkbPages/materialsWizard/useChangeWizardStepRoute\";\r\nimport workspace from \"../bvcomponents/sqft/components/canvas/core/workspace\";\r\nimport {\r\n deleteCartItemsThatAreMissingInSQFTCalcData,\r\n updateQuoteWithSQFTData\r\n} from \"../bvcomponents/sqft/helpers/sqftQuotesHelper\";\r\nimport {prepareSQFTData} from \"../bvcomponents/sqft/components/canvas/core/workspace/workspaceDataMapper\";\r\n\r\n/**\r\n * @param quoteIndex {number}\r\n * @param fakeLayout {object}\r\n * @param forLocalStorage {boolean}\r\n * @param nextVisualizerType {string}\r\n * @param bvImage {string}\r\n * returns updated quote object\r\n */\r\nexport const getQuoteInfo = async (quoteIndex, fakeLayout = null, forLocalStorage = false, nextVisualizerType, bvImage = \"\") => {\r\n const state = store.getState();\r\n const {quotes} = state.quotesState;\r\n const {settings} = state.fabricatorState;\r\n const {canvasDimensions} = state.bathroomVisualizerState;\r\n const quoteTotalPrice = getTotalPrice(quoteIndex);\r\n const quoteId = quotes[quoteIndex] && quotes[quoteIndex].quoteId ? quotes[quoteIndex].quoteId : null;\r\n const imageUrl = quotes[quoteIndex] && quotes[quoteIndex].imageUrl ? quotes[quoteIndex].imageUrl : null;\r\n\r\n const room = getQuoteVisualizerType(quoteIndex, nextVisualizerType);\r\n // keep old compatability without using different layouts\r\n const layout = fakeLayout || getCurrentLayout(settings.allowVisualizerSwitching ? room : document.kvConfig.visualizerType);\r\n\r\n // console.log(\"room\", room);\r\n if (!forLocalStorage && !bvImage) {\r\n if (document.kvConfig.visualizerType !== room && quotes[quoteIndex] && quotes[quoteIndex].bvImage) {\r\n bvImage = quotes[quoteIndex].bvImage;\r\n } else {\r\n bvImage = await new Promise((resolve) => resolve(getImagePromiseFromLayout(layout, canvasDimensions)))\r\n }\r\n }\r\n\r\n return {\r\n quoteId, // quoteId - quoteId is passed from the backend in the getBvJobData response(in dashboard edit mode)\r\n imageUrl, // amazon url\r\n // ...quotes[activeQuoteIndex], no need for it for now\r\n data: layout.getActiveFeaturesAsObject(false, true, true),\r\n leadFeatures: layout.getActiveNames(),\r\n bvImage,\r\n layoutType: layout.type,\r\n room, // prevent overwriting on save\r\n materialCost: quoteTotalPrice.materialPrice,\r\n sqFtCalcData: quotes[quoteIndex] ? quotes[quoteIndex].sqFtCalcData || null : null,\r\n installationCost: quoteTotalPrice.installationPrice,\r\n installationTaxes: quoteTotalPrice.installationTaxes, // installation tax amount\r\n materialTaxes: quoteTotalPrice.materialTaxes, // material tax amount\r\n priceTaxes: quoteTotalPrice.priceTaxes, // material tax amount\r\n staticCanvasImage: getRoomImageFromQtCategory(\"\", quoteIndex),\r\n isCreatedInSQFT: quotes[quoteIndex] ? quotes[quoteIndex].isCreatedInSQFT : false,\r\n isVisibleInSQFT: quotes[quoteIndex] ? quotes[quoteIndex].isVisibleInSQFT : true,\r\n qtCatName: quotes[quoteIndex] ? quotes[quoteIndex].qtCatName : \"\",\r\n }\r\n};\r\n\r\nexport const updateCurrentQuote = async (quoteIndex, nextVisualizerType, forLocalStorage = false) => {\r\n const {quotes, activeQuoteIndex} = store.getState().quotesState;\r\n const indexToUpdate = Number.isInteger(quoteIndex) ? quoteIndex : activeQuoteIndex;\r\n const currentQuoteObject = await getQuoteInfo(indexToUpdate, null, forLocalStorage, nextVisualizerType);\r\n const newQuotes = [...quotes.map((q, qIndex) => (qIndex === indexToUpdate) ? currentQuoteObject : q)];\r\n if (!forLocalStorage) {\r\n store.dispatch(setQuotes(newQuotes));\r\n }\r\n return newQuotes\r\n};\r\n\r\n// /**\r\n// * @param quotes {array}\r\n// * @param activeQuoteIndex {number}\r\n// * returns updated quotes array\r\n// */\r\n// export const updateAllQuotes = async (quotes, activeQuoteIndex) => {\r\n// console.log(\"quotes\", quotes);\r\n// let newQuotes = [];\r\n// for (const [quoteIndex, quoteObject] of quotes.entries()) {\r\n// let newQuote = null;\r\n// if (quoteIndex !== activeQuoteIndex && quoteObject.data) {\r\n// let fakeLayout = null;\r\n// const layout = getCurrentLayout();\r\n// fakeLayout = cloneDeep(layout);\r\n// fakeLayout.type = quoteObject.data.layout_type;\r\n// fakeLayout.scene = quoteObject.data.scene;\r\n// fakeLayout.getFeatures(true).forEach(parentGroup => {\r\n// parentGroup.layout = fakeLayout;\r\n// parentGroup.relatedItems.forEach(relItem => {\r\n// relItem.getParent = () => parentGroup;\r\n// })\r\n// });\r\n// await fakeLayout.selectLayout(layout.type, layout.type, null, layout.scene, null, true);\r\n// newQuote = await getQuoteInfo(quoteIndex, fakeLayout);\r\n// } else {\r\n// newQuote = await getQuoteInfo(quoteIndex);\r\n// }\r\n// newQuotes.push(newQuote);\r\n// }\r\n// console.log(\"newQuotes\", newQuotes);\r\n// store.dispatch(setQuotes(newQuotes));\r\n// return newQuotes\r\n// };\r\n\r\nexport const setNewActiveQuote = async (index, newQuotes) => {\r\n if (!newQuotes) {\r\n newQuotes = store.getState().quotesState.quotes;\r\n }\r\n const newQuote = newQuotes[index];\r\n if (newQuote && (newQuote.layoutType || newQuote.layoutType === 0) && newQuote.data) {\r\n loaderEnable();\r\n if (newQuote.room !== document.kvConfig.visualizerType) {\r\n await switchToNewVisualizerType(newQuote.room, false)\r\n }\r\n const layout = getCurrentLayout();\r\n const bvState = newQuote.data;\r\n const {wizardIsActive} = store.getState().wizardState;\r\n if (wizardIsActive) {\r\n // change selectedWizardValues!\r\n switchToWizardItem(null, null, null, null, false);\r\n }\r\n return layout.setItemsFromBvState(bvState)\r\n .then(() => {\r\n loaderDisable();\r\n store.dispatch(setVisualizerIsChanging(false))\r\n });\r\n }\r\n return Promise.resolve()\r\n};\r\n\r\nexport const deleteCartItemFromSQFTCalcData = async (cItem) => {\r\n if (cItem.sqftIds && cItem.sqftIds.length) {\r\n const state = store.getState();\r\n const quotes = state.quotesState.quotes;\r\n const cItemQuote = quotes[cItem.currentQuote];\r\n\r\n //create workspace and remove items as if they were removed from sqft\r\n workspace.import(cItemQuote.sqFtCalcData);\r\n [...cItem.sqftIds].forEach(sqftId => {\r\n workspace.removeFeatureBySQFTId(sqftId);\r\n })\r\n\r\n //save sqft calc data to quote\r\n const sqftCalcData = await prepareSQFTData();\r\n updateQuoteWithSQFTData(sqftCalcData, cItem.currentQuote);\r\n\r\n //remove cartItems that was attached features like edges and backsplashes\r\n deleteCartItemsThatAreMissingInSQFTCalcData();\r\n }\r\n}\r\n","//todo move out of this folder\r\nimport COLOR_THEMES from \"../../../../../colorThemes\";\r\nimport {getParallelPoints, getPointOnTheLine} from \"../../../helpers/sqftHelper\";\r\nimport sqftConfig from \"../store/sqftConfig\";\r\nimport sqftEventManager from \"../store/sqftEventManager\";\r\nimport {getMidPoint, getPointBetweenPoints, getPointDistance} from \"../../../helpers/sqftHelper\";\r\nimport workspace from \"../core/workspace\";\r\n\r\nexport default class RenderFigures {\r\n\r\n /**\r\n * Draws a rounded rectangle using the current state of the canvas.\r\n * If you omit the last three params, it will draw a rectangle\r\n * outline with a 5 pixel border radius\r\n * @param {CanvasRenderingContext2D} ctx\r\n * @param {Number} x The top left x coordinate\r\n * @param {Number} y The top left y coordinate\r\n * @param {Number} width The width of the rectangle\r\n * @param {Number} height The height of the rectangle\r\n * @param {Number} [radius = 5] The corner radius; It can also be an object\r\n * to specify different radii for corners\r\n * @param {Number} [radius.tl = 0] Top left\r\n * @param {Number} [radius.tr = 0] Top right\r\n * @param {Number} [radius.br = 0] Bottom right\r\n * @param {Number} [radius.bl = 0] Bottom left\r\n * @param {Boolean} [isFilled = false] Whether to fill the rectangle.\r\n * @param {Boolean} [stroke = true] Whether to stroke the rectangle.\r\n */\r\n static roundedRect(ctx, x, y, width, height, radius, isFilled, stroke) {\r\n if (typeof stroke === 'undefined') {\r\n stroke = true;\r\n }\r\n if (typeof radius === 'undefined') {\r\n radius = 5;\r\n }\r\n if (typeof radius === 'number') {\r\n radius = {tl: radius, tr: radius, br: radius, bl: radius};\r\n } else {\r\n let defaultRadius = {tl: 0, tr: 0, br: 0, bl: 0};\r\n for (let side in defaultRadius) {\r\n radius[side] = radius[side] || defaultRadius[side];\r\n }\r\n }\r\n ctx.beginPath();\r\n ctx.moveTo(x + radius.tl, y);\r\n ctx.lineTo(x + width - radius.tr, y);\r\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius.tr);\r\n ctx.lineTo(x + width, y + height - radius.br);\r\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius.br, y + height);\r\n ctx.lineTo(x + radius.bl, y + height);\r\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius.bl);\r\n ctx.lineTo(x, y + radius.tl);\r\n ctx.quadraticCurveTo(x, y, x + radius.tl, y);\r\n ctx.closePath();\r\n if (isFilled) {\r\n ctx.fill();\r\n }\r\n if (stroke) {\r\n ctx.stroke();\r\n }\r\n }\r\n\r\n static renderOval(ctx, w, h, x, y = 0, fullOval = false) {\r\n let lx = x - w * .5;\r\n let rx = x + w * .5;\r\n let ty = y - h * .5;\r\n let by = y + h * .5;\r\n\r\n let magic = 0.551915024494;\r\n let xMagic = magic * w * 0.5;\r\n let yMagic = h * magic * 0.5;\r\n\r\n ctx.moveTo(x, ty);\r\n ctx.bezierCurveTo(x + xMagic, ty, rx, y - yMagic, rx, y);\r\n ctx.bezierCurveTo(rx, y + yMagic, x + xMagic, by, x, by);\r\n if (fullOval) {\r\n ctx.bezierCurveTo(y - xMagic, by, lx, y + yMagic, lx, y);\r\n ctx.bezierCurveTo(lx, x - yMagic, x - xMagic, ty, x, ty);\r\n }\r\n }\r\n\r\n static drawArrow = (context, fromX, fromY, toX, toY) => {\r\n let headLen = 10, // length of head in pixels\r\n dx = toX - fromX,\r\n dy = toY - fromY,\r\n angle = Math.atan2(dy, dx);\r\n\r\n context.moveTo(fromX, fromY);\r\n context.lineTo(toX, toY);\r\n context.lineTo(toX - headLen * Math.cos(angle - Math.PI / 6), toY - headLen * Math.sin(angle - Math.PI / 6));\r\n context.moveTo(toX, toY);\r\n context.lineTo(toX - headLen * Math.cos(angle + Math.PI / 6), toY - headLen * Math.sin(angle + Math.PI / 6));\r\n\r\n context.moveTo(fromX, fromY);\r\n context.lineTo(fromX + headLen * Math.cos(angle - Math.PI / 6), fromY + headLen * Math.sin(angle - Math.PI / 6));\r\n context.moveTo(fromX, fromY);\r\n context.lineTo(fromX + headLen * Math.cos(angle + Math.PI / 6), fromY + headLen * Math.sin(angle + Math.PI / 6));\r\n };\r\n\r\n static drawRotatedArrow = (context, fromX, fromY, toX, toY, cornerPointX, cornerPointY, rotateAngle) => {\r\n const midpoint = getMidPoint({x: fromX, y: fromY}, {x: toX, y: toY});\r\n const rotateDirectionPoint = getPointBetweenPoints(midpoint, {x: cornerPointX, y: cornerPointY}, rotateAngle);\r\n let headLen = 7, // length of head in pixels\r\n dx = toX - rotateDirectionPoint.x,\r\n dy = toY - rotateDirectionPoint.y,\r\n angle = Math.atan2(dy, dx);\r\n const radius = getPointDistance({x: fromX, y: fromY}, {x: cornerPointX, y: cornerPointY});\r\n context.moveTo(fromX, fromY);\r\n context.arcTo(\r\n cornerPointX,\r\n cornerPointY,\r\n toX,\r\n toY,\r\n radius\r\n );\r\n\r\n //First arrow\r\n context.moveTo(toX, toY);\r\n context.lineTo(toX - headLen * Math.cos(angle - Math.PI / 6), toY - headLen * Math.sin(angle - Math.PI / 6));\r\n context.moveTo(toX, toY);\r\n context.lineTo(toX - headLen * Math.cos(angle + Math.PI / 6), toY - headLen * Math.sin(angle + Math.PI / 6));\r\n\r\n //Second arrow\r\n dx = rotateDirectionPoint.x - fromX;\r\n dy = rotateDirectionPoint.y - fromY;\r\n angle = Math.atan2(dy, dx);\r\n context.moveTo(fromX, fromY);\r\n context.lineTo(fromX + headLen * Math.cos(angle - Math.PI / 6), fromY + headLen * Math.sin(angle - Math.PI / 6));\r\n context.moveTo(fromX, fromY);\r\n context.lineTo(fromX + headLen * Math.cos(angle + Math.PI / 6), fromY + headLen * Math.sin(angle + Math.PI / 6));\r\n };\r\n\r\n static renderDoubleCircle(ctx, pointField, radius, lineWidth) {\r\n //outside circle\r\n ctx.arc(\r\n pointField.x,\r\n pointField.y,\r\n radius,\r\n 0,\r\n Math.PI * 2,\r\n false\r\n );\r\n ctx.strokeStyle = COLOR_THEMES[sqftConfig.activeTheme].primary;\r\n ctx.fillStyle = '#ffffff';\r\n ctx.lineWidth = lineWidth;\r\n ctx.stroke();\r\n ctx.fill();\r\n\r\n //inside circle\r\n ctx.beginPath();\r\n ctx.arc(\r\n pointField.x,\r\n pointField.y,\r\n radius - 3,\r\n 0,\r\n Math.PI * 2,\r\n false\r\n );\r\n\r\n ctx.fillStyle = COLOR_THEMES[sqftConfig.activeTheme].primary;\r\n ctx.lineWidth = lineWidth;\r\n ctx.fill();\r\n }\r\n\r\n static renderCircle(pointField,\r\n radius = 1,\r\n lineWidth = 1,\r\n strokeStyle = '#000000',\r\n fillStyle = null,\r\n ctx = sqftEventManager.getCtx()\r\n ) {\r\n ctx.save();\r\n ctx.beginPath();\r\n ctx.arc(\r\n pointField.x,\r\n pointField.y,\r\n radius,\r\n 0,\r\n Math.PI * 2,\r\n false\r\n );\r\n ctx.strokeStyle = strokeStyle;\r\n ctx.lineWidth = lineWidth;\r\n ctx.stroke();\r\n if (fillStyle) {\r\n ctx.fillStyle = fillStyle;//'#ffffff';\r\n ctx.fill();\r\n }\r\n ctx.closePath();\r\n ctx.restore();\r\n }\r\n\r\n static renderPolygon = (points,\r\n lineWidth = 2,\r\n strokeStyle = 'rgba(0, 0, 0, 0.5)',\r\n ctx = sqftEventManager.getCtx()\r\n ) => {\r\n const firstPoint = points[0];\r\n ctx.beginPath();\r\n ctx.moveTo(firstPoint.x, firstPoint.y);\r\n for (const point of points) {\r\n ctx.lineTo(point.x, point.y);\r\n }\r\n ctx.lineWidth = lineWidth;\r\n ctx.strokeStyle = strokeStyle;\r\n ctx.stroke();\r\n ctx.closePath();\r\n }\r\n\r\n static renderPolygonArray = (points,\r\n lineWidth = 2,\r\n strokeStyle = 'rgba(0, 0, 0, 0.5)',\r\n ctx = sqftEventManager.getCtx()\r\n ) => {\r\n const firstPoint = points[0];\r\n ctx.beginPath();\r\n ctx.moveTo(firstPoint[0], firstPoint[1]);\r\n for (const point of points) {\r\n ctx.lineTo(point[0], point[1]);\r\n }\r\n ctx.lineTo(firstPoint[0], firstPoint[1]);\r\n ctx.lineWidth = lineWidth;\r\n ctx.strokeStyle = strokeStyle;\r\n ctx.stroke();\r\n ctx.closePath();\r\n }\r\n\r\n static drawArrowsAround4points = (ctx, points, offset = 10) => {\r\n points.forEach((point, index) => {\r\n const prevPoint = points[index === 0 ? points.length - 1 : index - 1];\r\n const nextPoint = points[\r\n index === points.length - 1 ? 0 : index + 1\r\n ];\r\n const afterNextPoint = points[\r\n index === points.length - 1\r\n ? 1\r\n : index === points.length - 2\r\n ? 0\r\n : index + 2\r\n ];\r\n const offsetPoint1 = getPointOnTheLine(point, prevPoint, offset);\r\n const offsetPoint2 = getPointOnTheLine(nextPoint, afterNextPoint, offset);\r\n const [midPoint, midPoint2] = getParallelPoints(point, nextPoint, - offset);\r\n\r\n ctx.beginPath();\r\n RenderFigures.drawArrow( ctx,\r\n offsetPoint1.x,\r\n offsetPoint1.y,\r\n offsetPoint2.x,\r\n offsetPoint2.y,\r\n );\r\n RenderFigures.drawArrow( ctx,\r\n midPoint.x,\r\n midPoint.y,\r\n midPoint2.x,\r\n midPoint2.y,\r\n );\r\n ctx.lineWidth = 1;\r\n ctx.stroke();\r\n ctx.closePath();\r\n });\r\n };\r\n\r\n static drawArrowsAroundPoints = (ctx, points, offset = 10, minArrowLength = 2) => {\r\n points.forEach((point, index) => {\r\n const nextPoint = points[\r\n index === points.length - 1 ? 0 : index + 1\r\n ];\r\n const pointDistance = getPointDistance(point, nextPoint);\r\n const scale = workspace.getScale();\r\n\r\n if (pointDistance / scale > minArrowLength) {\r\n const [midPoint, midPoint2] = getParallelPoints(point, nextPoint, - offset);\r\n ctx.beginPath();\r\n RenderFigures.drawArrow( ctx,\r\n midPoint.x,\r\n midPoint.y,\r\n midPoint2.x,\r\n midPoint2.y,\r\n );\r\n ctx.lineWidth = 1;\r\n ctx.stroke();\r\n ctx.closePath();\r\n }\r\n });\r\n };\r\n\r\n static renderHandle = (ctx, midPoint) => {\r\n ctx.save();\r\n ctx.beginPath();\r\n ctx.fillStyle = 'white';\r\n ctx.lineWidth = 2;\r\n ctx.strokeStyle = COLOR_THEMES[sqftConfig.activeTheme].primary;\r\n ctx.arc(midPoint.x, midPoint.y, 10, 0, 2 * Math.PI, false);\r\n ctx.fill();\r\n ctx.stroke();\r\n ctx.closePath();\r\n\r\n ctx.beginPath();\r\n ctx.moveTo(midPoint.x, midPoint.y);\r\n ctx.lineTo(midPoint.x + 5 , midPoint.y);\r\n ctx.lineTo(midPoint.x + 5 , midPoint.y + 3);\r\n\r\n ctx.moveTo(midPoint.x, midPoint.y);\r\n ctx.lineTo(midPoint.x - 5 , midPoint.y);\r\n ctx.lineTo(midPoint.x - 5 , midPoint.y + 3);\r\n ctx.stroke();\r\n\r\n ctx.restore();\r\n }\r\n\r\n /**\r\n * Draws a sink\r\n * @param {CanvasRenderingContext2D} ctx\r\n * @param {Number} x The top left x coordinate\r\n * @param {Number} y The top left y coordinate\r\n * @param {Number} width The width of the rectangle\r\n * @param {Number} height The height of the rectangle\r\n * to specify different radii for corners\r\n */\r\n static sink(ctx, x, y, width, height) {\r\n // Proportions of the original SVG\r\n const originalWidth = 340;\r\n const originalHeight = 463;\r\n const innerRectWidth = 284;\r\n const innerRectHeight = 410;\r\n const innerRectX = 29;\r\n const innerRectY = 29;\r\n const circleRadiusBig = 29;\r\n const circleRadiusSmall = 20.7142857;\r\n const circleCenterX = 142 + circleRadiusBig;\r\n const circleCenterY = 203 + circleRadiusBig;\r\n\r\n // Scaling proportions\r\n const scaleX = width / originalWidth;\r\n const scaleY = height / originalHeight;\r\n\r\n const lineWidth = 1;\r\n const lineColor = COLOR_THEMES[sqftConfig.activeTheme].primary; //\"#4A90E2\";\r\n ctx.lineWidth = lineWidth * scaleX;\r\n ctx.strokeStyle = lineColor;\r\n\r\n // Fill the background with white\r\n ctx.fillStyle = \"#FFFFFF\";\r\n ctx.fillRect(x, y, width, height);\r\n\r\n // Drawing the outer rectangle\r\n ctx.beginPath();\r\n ctx.rect(x, y, width, height);\r\n ctx.stroke();\r\n\r\n // Drawing the inner rectangle\r\n const innerX = x + innerRectX * scaleX;\r\n const innerY = y + innerRectY * scaleY;\r\n const innerW = innerRectWidth * scaleX;\r\n const innerH = innerRectHeight * scaleY;\r\n ctx.beginPath();\r\n ctx.rect(innerX, innerY, innerW, innerH);\r\n ctx.stroke();\r\n\r\n // Drawing the circles\r\n const centerX = x + circleCenterX * scaleX;\r\n const centerY = y + circleCenterY * scaleY;\r\n const radiusBig = circleRadiusBig * scaleX;\r\n const radiusSmall = circleRadiusSmall * scaleX;\r\n\r\n ctx.beginPath();\r\n ctx.arc(centerX, centerY, radiusBig, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.arc(centerX, centerY, radiusSmall, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n }\r\n\r\n /**\r\n * Draws a doubleSink\r\n * @param {CanvasRenderingContext2D} ctx\r\n * @param {Number} x The top left x coordinate\r\n * @param {Number} y The top left y coordinate\r\n * @param {Number} width The width of the rectangle\r\n * @param {Number} height The height of the rectangle\r\n * to specify different radii for corners\r\n */\r\n static doubleSink(ctx, x, y, width, height) {\r\n // Proportions of the original doubleSink SVG\r\n const originalWidth = 341;\r\n const originalHeight = 511;\r\n const innerRectWidthTop = 282;\r\n const innerRectHeightTop = 153;\r\n const innerRectWidthBottom = 283;\r\n const innerRectHeightBottom = 285;\r\n const innerRectX = 29;\r\n const innerRectYTop = 26;\r\n const innerRectYBottom = 192;\r\n const circleRadiusBig = 29;\r\n const circleRadiusSmall = 20.7142857;\r\n const circleCenterX = 149; // Adjusted for double sink\r\n const circleCenterYTop = 103; // Top circle center\r\n const circleCenterYBottom = 335; // Bottom circle center\r\n\r\n // Scaling proportions based on provided width and height\r\n const scaleX = width / originalWidth;\r\n const scaleY = height / originalHeight;\r\n\r\n // Line thickness and color for doubleSink\r\n const lineWidth = 1.54 * scaleX; // Adjusted line width\r\n const lineColor = \"#4A90E2\";\r\n\r\n // Fill the background with white\r\n ctx.fillStyle = \"#FFFFFF\";\r\n ctx.fillRect(x, y, width, height);\r\n\r\n // Draw the outer rectangle\r\n ctx.lineWidth = lineWidth;\r\n ctx.strokeStyle = lineColor;\r\n ctx.beginPath();\r\n ctx.rect(x, y, width, height);\r\n ctx.stroke();\r\n\r\n // Draw the top inner rectangle\r\n const innerX = x + innerRectX * scaleX;\r\n const innerYTop = y + innerRectYTop * scaleY;\r\n const innerWTop = innerRectWidthTop * scaleX;\r\n const innerHTop = innerRectHeightTop * scaleY;\r\n ctx.beginPath();\r\n ctx.rect(innerX, innerYTop, innerWTop, innerHTop);\r\n ctx.stroke();\r\n\r\n // Draw the bottom inner rectangle\r\n const innerYBottom = y + innerRectYBottom * scaleY;\r\n const innerWBottom = innerRectWidthBottom * scaleX;\r\n const innerHBottom = innerRectHeightBottom * scaleY;\r\n ctx.beginPath();\r\n ctx.rect(innerX, innerYBottom, innerWBottom, innerHBottom);\r\n ctx.stroke();\r\n\r\n // Draw top circles\r\n const centerXTop = x + circleCenterX * scaleX;\r\n const centerYTop = y + circleCenterYTop * scaleY;\r\n const radiusBig = circleRadiusBig * scaleX;\r\n const radiusSmall = circleRadiusSmall * scaleX;\r\n\r\n ctx.beginPath();\r\n ctx.arc(centerXTop, centerYTop, radiusBig, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.arc(centerXTop, centerYTop, radiusSmall, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n\r\n // Draw bottom circles\r\n const centerYBottom = y + circleCenterYBottom * scaleY;\r\n\r\n ctx.beginPath();\r\n ctx.arc(centerXTop, centerYBottom, radiusBig, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.arc(centerXTop, centerYBottom, radiusSmall, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n }\r\n\r\n // Function to draw the background pattern\r\n static drawBackgroundWhite(ctx, startPoint, width, height) {\r\n ctx.fillStyle = \"white\";\r\n ctx.fillRect(startPoint.x, startPoint.y, width, height);\r\n }\r\n\r\n // Function to draw the border pattern\r\n static drawBorder(ctx, startPoint, width, height) {\r\n ctx.lineWidth = 1;\r\n ctx.strokeStyle = \"#4A90E2\";\r\n ctx.strokeRect(startPoint.x, startPoint.y, width, height);\r\n }\r\n}\r\n","import React, {useEffect, useState} from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport LoadingSpinner from \"../ui/loadingSpinner\";\r\nimport {featureThumbnailUrl, isIE} from \"../../misc/helpers\";\r\nimport {baseNewImagesPath} from \"../assets\";\r\nimport {THUMBNAIL_SIZES} from \"../../misc/utils\";\r\nimport Config, {IS_LIXIL_UI} from \"../../config\";\r\n\r\nconst FeatureThumbnail = (props) => {\r\n\r\n const {feature, dbFeatureId, isMobile} = props;\r\n const [isLoading, toggleLoader] = useState(true);\r\n const [thumbnailUrl, setThumbnailUrl] = useState(\"\");\r\n const [smallerSizeTried, setSmallerSizeTried] = useState(isIE() || Config.isDevMode()); // if it is ie - set smallerSizeTried to true\r\n\r\n\r\n const setBaseThumbnail = () => {\r\n const size = isMobile && IS_LIXIL_UI\r\n ? THUMBNAIL_SIZES.small\r\n : isIE() || Config.isDevMode() ? THUMBNAIL_SIZES.medium : THUMBNAIL_SIZES.large\r\n const baseThumbnail = featureThumbnailUrl(feature, size) // if it is ie - set small Thumbnails by the default\r\n setThumbnailUrl(baseThumbnail || `${baseNewImagesPath}images/image-not-found.png`);\r\n return baseThumbnail;\r\n }\r\n\r\n useEffect(() => {\r\n toggleLoader(true);\r\n setSmallerSizeTried(isIE() || Config.isDevMode());\r\n setBaseThumbnail();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dbFeatureId])\r\n\r\n const onImageLoadError = () => {\r\n if (isMobile || smallerSizeTried) {\r\n setThumbnailUrl(`${baseNewImagesPath}images/image-not-found.png`);\r\n } else if (!smallerSizeTried) {\r\n toggleLoader(true);\r\n setThumbnailUrl(featureThumbnailUrl(feature, THUMBNAIL_SIZES.medium))\r\n setSmallerSizeTried(true)\r\n }\r\n };\r\n\r\n if (!thumbnailUrl && smallerSizeTried) { // no need to load anything, show not found\r\n return (\r\n
\r\n \"\"/\r\n
\r\n )\r\n }\r\n\r\n return (\r\n
\r\n {thumbnailUrl\r\n ? {\r\n toggleLoader(false);\r\n }}\r\n onError={onImageLoadError}\r\n alt=\"\"/>\r\n : null}\r\n {isLoading ? : null}\r\n
\r\n )\r\n};\r\n\r\nFeatureThumbnail.propTypes = {\r\n feature: PropTypes.object.isRequired,\r\n isMobile: PropTypes.bool,\r\n};\r\n\r\nexport default FeatureThumbnail\r\n","import orderBy from \"lodash/orderBy\";\r\n\r\nimport {Part} from \"../part\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {showerThumbnail} from '../../../bvComponent/core/assets';\r\n\r\n// import store from \"../../../../store\";\r\n\r\nimport {ShowerTubCombo} from \"./showerTubCombo\";\r\n\r\nimport ShowerFixture from \"../subparts/shower/showerFixture\";\r\nimport ShowerScreen from \"../subparts/shower/showerScreen\";\r\nimport ShowerGlass from \"../subparts/shower/showerGlass\";\r\n// import ShowerOverlay from \"../subparts/shower/showerOverlay\";\r\nimport ShowerBody from \"../subparts/shower/showerBody\";\r\nimport ShowerWall from \"../subparts/shower/showerWall\";\r\nimport ShowerWallAccent from \"../subparts/shower/showerWallAccent\";\r\nimport ShowerDoor from \"../subparts/shower/showerDoor\";\r\nimport ShowerPanCombo from \"../subparts/shower/showerPanCombo\";\r\nimport ShowerDoorHandle from \"../subparts/shower/showerDoorHandle\";\r\nimport PonyWallCap from \"../subparts/shower/ponyWallCap\";\r\nimport PonyWallGlass from \"../subparts/shower/ponyWallGlass\";\r\nimport ShowerFloor from \"../subparts/shower/showerFloor\";\r\nimport Threshold from \"../subparts/shower/threshold\";\r\nimport ShowerDrain from \"../subparts/shower/showerDrain\";\r\nimport ShowerHead from \"../subparts/shower/showerHead\";\r\nimport ShowerArm from \"../subparts/shower/showerArm\";\r\nimport ShowerHeadBundle from \"../subparts/shower/showerHeadBundle\";\r\nimport TubSpout from \"../subparts/shower/tubSpout\";\r\nimport HandShowerKit from \"../subparts/shower/handShowerKit\";\r\n\r\nimport {ShowerHeadTypes, ShowerHandTypes} from \"../constants\";\r\nimport ShowerCurb from \"../subparts/shower/showerCurb\";\r\nimport BodySpray from \"../subparts/showerNew/bodySpray\";\r\nimport DiverterTrim from \"../subparts/showerNew/diverterTrim\";\r\nimport HandShowerHolder from \"../subparts/showerNew/handShowerHolder\";\r\nimport HandShowerOnly from \"../subparts/showerNew/handShowerOnly\";\r\nimport ShowerHose from \"../subparts/showerNew/showerHose\";\r\nimport ShowerSystem from \"../subparts/showerNew/showerSystem\";\r\nimport ShowerTrimKit from \"../subparts/showerNew/showerTrimKit\";\r\nimport ValveTrim from \"../subparts/showerNew/valveTrim\";\r\nimport WallUnion from \"../subparts/showerNew/wallUnion\";\r\n\r\nexport class Shower extends Part {\r\n static id = 'Shower';\r\n\r\n static Type = {\r\n Custom: 'Custom',\r\n Complete: 'Complete',\r\n Combo: 'Combo',\r\n All: 'All'\r\n };\r\n\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partThumbnail = showerThumbnail;\r\n this.partName = 'Shower';\r\n this.translateId = \"visualizer.bathroom.shower\";\r\n this.relatedItems = [];\r\n this.activeSubType_ = Shower.Type.Custom;\r\n\r\n this.customBodyType = 1; // Door\r\n\r\n this.showerBody = null;\r\n this.showerScreen = null;\r\n this.showerGlass = null;\r\n this.showerWall = null;\r\n this.showerWallAccent = null;\r\n\r\n // old\r\n this.showerFloor = null;\r\n this.showerOverlay = null;\r\n // old\r\n\r\n this.showerPanCombo = null;\r\n this.threshold = null;\r\n this.showerFixture = null;\r\n this.showerBodySelectedByUser = false;\r\n this.showerDoor = null;\r\n this.showerDoorHandle = null;\r\n\r\n this.ponyWallCap = null;\r\n this.ponyWallGlass = null;\r\n this.showerHead = null;\r\n this.showerArm = null;\r\n this.showerHeadBundle = null;\r\n this.handShowerKit = null;\r\n this.tubSpout = null;\r\n this.bodySpray = null;\r\n this.diverterTrim = null;\r\n this.handShowerHolder = null;\r\n this.handShowerOnly = null;\r\n this.showerHose = null;\r\n this.showerSystem = null;\r\n this.showerTrimKit = null;\r\n this.valveTrim = null;\r\n this.wallUnion = null;\r\n\r\n this.showerBody = new ShowerBody(true);\r\n this.showerBody.getParent = () => this;\r\n this.showerBody.type = Shower.Type.All;\r\n this.showerBody.counts = {\r\n allLayoutFeaturesCount: 0,\r\n largeLayoutFeaturesCount: 0,\r\n smallLayoutFeaturesCount: 0\r\n };\r\n this.relatedItems.push(this.showerBody);\r\n\r\n this.showerFloorIsActive = false;\r\n this.shower_head_type = ShowerHeadTypes.shower_fixture;\r\n this.shower_hand_type = ShowerHandTypes.hand_shower_holder;\r\n this.relatedGroupNames = [\"Shower Pan\", \"Shower Wall\", \"Shower Wall Accent\", \"Shower Door\", \"Shower Door Handle\",\r\n \"ShowerPan\", \"ShowerFloor\", \"Shower Fixture\", \"Shower Drain\", \"Shower Head\", \"Shower Arm\", \"Shower Head Bundle\",\r\n \"Pony Wall Cap\", \"Pony Wall Glass\", \"Shower Screen\", \"Shower Glass\", \"Shower Body\", \"Tub Spout\", \"Hand Shower Kit\",\r\n \"Shower Curb\", \"Body Spray\", \"Diverter Trim\", \"Hand Shower Holder\", \"Hand Shower Only\", \"Shower Hose\",\r\n \"Shower System\", \"Shower Trim Kit\", \"Valve Trim\", \"Wall Union\"];\r\n }\r\n\r\n load(dbFeature, loadFeature = true) {\r\n let relatedItemName = \"\",\r\n relatedItemType = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Shower Pan\":\r\n relatedItemName = \"showerPanCombo\";\r\n RelatedItemClass = ShowerPanCombo;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Pans\":\r\n relatedItemName = \"showerPanCombo\";\r\n RelatedItemClass = ShowerPanCombo;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Wall\":\r\n case \"Shower Walls\":\r\n case \"ShowerInteriorWall\": // OLD\r\n relatedItemName = \"showerWall\";\r\n RelatedItemClass = ShowerWall;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Wall Accent\":\r\n relatedItemName = \"showerWallAccent\";\r\n RelatedItemClass = ShowerWallAccent;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Door\":\r\n case \"Shower_Door\":\r\n relatedItemName = \"showerDoor\";\r\n RelatedItemClass = ShowerDoor;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Door Handle\":\r\n relatedItemName = \"showerDoorHandle\";\r\n RelatedItemClass = ShowerDoorHandle;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"ShowerPan\":\r\n relatedItemName = \"threshold\";\r\n RelatedItemClass = Threshold;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"ShowerFloor\":\r\n case \"Shower Floor\":\r\n relatedItemName = \"showerFloor\";\r\n RelatedItemClass = ShowerFloor;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Fixture\":\r\n relatedItemName = \"showerFixture\";\r\n RelatedItemClass = ShowerFixture;\r\n relatedItemType = Shower.Type.All;\r\n break;\r\n case \"Shower Drain\":\r\n relatedItemName = \"showerDrain\";\r\n RelatedItemClass = ShowerDrain;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Head\":\r\n relatedItemName = \"showerHead\";\r\n RelatedItemClass = ShowerHead;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Arm\":\r\n relatedItemName = \"showerArm\";\r\n RelatedItemClass = ShowerArm;\r\n relatedItemType = Shower.Type.All;\r\n break;\r\n case \"Shower Head Bundle\":\r\n relatedItemName = \"showerHeadBundle\";\r\n RelatedItemClass = ShowerHeadBundle;\r\n relatedItemType = Shower.Type.All;\r\n break;\r\n case \"Pony Wall Cap\":\r\n relatedItemName = \"ponyWallCap\";\r\n RelatedItemClass = PonyWallCap;\r\n relatedItemType = Shower.Type.All;\r\n break;\r\n case \"Pony Wall Glass\":\r\n relatedItemName = \"ponyWallGlass\";\r\n RelatedItemClass = PonyWallGlass;\r\n relatedItemType = Shower.Type.All;\r\n break;\r\n case \"Shower Screen\":\r\n relatedItemName = \"showerScreen\";\r\n RelatedItemClass = ShowerScreen;\r\n relatedItemType = Shower.Type.All;\r\n break;\r\n case \"Shower Glass\":\r\n if (!this.showerBody) {\r\n this.showerBody = new ShowerBody(true);\r\n this.relatedItems.push(this.showerBody);\r\n }\r\n relatedItemName = \"showerGlass\";\r\n RelatedItemClass = ShowerGlass;\r\n relatedItemType = Shower.Type.All;\r\n break;\r\n // case \"Shower Overlay\":\r\n // relatedItemName = \"showerOverlay\";\r\n // RelatedItemClass = ShowerOverlay;\r\n // relatedItemType = Shower.Type.Custom;\r\n // break;\r\n case \"Shower Body\":\r\n relatedItemName = \"showerBody\";\r\n RelatedItemClass = ShowerBody;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Tub Spout\":\r\n relatedItemName = \"tubSpout\";\r\n RelatedItemClass = TubSpout;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Hand Shower Kit\":\r\n relatedItemName = \"handShowerKit\";\r\n RelatedItemClass = HandShowerKit;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Curb\":\r\n relatedItemName = \"showerCurb\";\r\n RelatedItemClass = ShowerCurb;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Body Spray\":\r\n relatedItemName = \"bodySpray\";\r\n RelatedItemClass = BodySpray;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Diverter Trim\":\r\n case \"Diverter Only Trim\":\r\n relatedItemName = \"diverterTrim\";\r\n RelatedItemClass = DiverterTrim;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Hand Shower Holder\":\r\n relatedItemName = \"handShowerHolder\";\r\n RelatedItemClass = HandShowerHolder;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Hand Shower Only\":\r\n relatedItemName = \"handShowerOnly\";\r\n RelatedItemClass = HandShowerOnly;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Hose\":\r\n relatedItemName = \"showerHose\";\r\n RelatedItemClass = ShowerHose;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower System\":\r\n relatedItemName = \"showerSystem\";\r\n RelatedItemClass = ShowerSystem;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Shower Trim Kit\":\r\n relatedItemName = \"showerTrimKit\";\r\n RelatedItemClass = ShowerTrimKit;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Valve Trim\":\r\n relatedItemName = \"valveTrim\";\r\n RelatedItemClass = ValveTrim;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n case \"Wall Union\":\r\n relatedItemName = \"wallUnion\";\r\n RelatedItemClass = WallUnion;\r\n relatedItemType = Shower.Type.Custom;\r\n break;\r\n\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n if (relatedItemName !== \"shadows\") {\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].type = relatedItemType;\r\n if (loadFeature) {\r\n this[relatedItemName].load(dbFeature);\r\n }\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n setSpecificRules() {}\r\n\r\n // setLayers(layout, placeholdersNeeded) {\r\n // let res = [];\r\n // const relatedItems = this.getRelatedItems();\r\n // // console.log('relatedItems', relatedItems);\r\n // relatedItems.forEach(relatedItem => {\r\n // relatedItem.setLayers(layout);\r\n // });\r\n // if (this.showerDoor && !this.showerDoor.activeFeature) { // we need it cause shower door is relying on shPanCombo\r\n // this.showerDoor.setLayers(layout);\r\n // }\r\n // if (this.showerDoorHandle && !this.showerDoorHandle.activeFeature) {\r\n // this.showerDoorHandle.setLayers(layout);\r\n // }\r\n // relatedItems.forEach(relatedItem => {\r\n //\r\n // (placeholdersNeeded && !relatedItem.placeholderChanged && relatedItem.placeholderFeature)\r\n // ? relatedItem.placeholderFeature.layer.addTo(res)\r\n // : relatedItem.activeFeature && relatedItem.activeFeature.layer ? relatedItem.activeFeature.layer.addTo(res) : null\r\n //\r\n // // NN(relatedItem.activeFeature, (activeFeature) => activeFeature.layer.addTo(res));\r\n //\r\n // if ((relatedItem instanceof ShowerBody || relatedItem instanceof ShowerInteriorWallAccent)\r\n // && relatedItem.activeFeatureParts && relatedItem.activeFeatureParts.length) {\r\n // relatedItem.activeFeatureParts.forEach((activeFeaturePart) => {\r\n // activeFeaturePart && !activeFeaturePart.disabled && activeFeaturePart.layer && activeFeaturePart.layer.addTo(res);\r\n // })\r\n // }\r\n // if (relatedItem instanceof ShowerWall && relatedItem.activeFeatureParts && relatedItem.placeholderChanged && relatedItem.activeFeatureParts.length) {\r\n // relatedItem.activeFeatureParts.forEach((activeFeaturePart) => {\r\n // activeFeaturePart && !activeFeaturePart.disabled && activeFeaturePart.layer && activeFeaturePart.layer.addTo(res);\r\n // })\r\n // }\r\n //\r\n // });\r\n //\r\n // return res.length ? res : null;\r\n // }\r\n\r\n subTypes() {\r\n return this.showerBody && (this.showerBody.features.some(showerBodyFeature => showerBodyFeature.type === 0)\r\n && this.showerBody.features.some(showerBodyFeature => showerBodyFeature.type === 1)) ? [\r\n Shower.Type.Custom,\r\n Shower.Type.Complete,\r\n ] : []\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return true;\r\n }\r\n\r\n activeSubType() {\r\n return this.activeSubType_;\r\n }\r\n\r\n handleSubTypeClick(subType, handleNavigationItemClick) {\r\n this.activeSubType_ = subType;\r\n this.showerBody.setDefault(); // set default custom shower\r\n if (handleNavigationItemClick) {\r\n handleNavigationItemClick(this.showerBody.navigationSubItems()[0]) // set default custom shower\r\n }\r\n }\r\n\r\n getRelatedItems() {\r\n const relatedItems = orderBy(this.relatedItems, 'layerPriority');\r\n if (this.showerTubComboIsActive()) {\r\n return relatedItems\r\n }\r\n return relatedItems.filter((relatedItem) => {\r\n return relatedItem.type === this.activeSubType_ || relatedItem.type === Shower.Type.All\r\n })\r\n }\r\n\r\n subParts() {\r\n // const activeShowerGroup = this.getActiveShowerGroup();\r\n // const ponyWallIsActive = activeShowerGroup.showerDimensions() === \"Pony\";\r\n return this.getRelatedItems()\r\n .filter(item => {\r\n // if (item.isPonyWallPart) {\r\n // item.visible = ponyWallIsActive\r\n // }\r\n return item.visible\r\n })\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n // return filter(this.relatedItems, {visible: true}).map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n //\r\n // toggleShowerParts(disabled, keepLeftWall) {\r\n // this.getRelatedItems().forEach((relItem) => {\r\n // console.log('relItem', relItem);\r\n // if (\r\n // relItem.partId !== \"shower_wall\"\r\n // && relItem.partId !== \"shower_wall_accent\"\r\n // && relItem.partId !== \"shower_fixture\"\r\n // && relItem.partId !== \"shower_door\"\r\n // && relItem.partId !== \"shower_door_handle\"\r\n // && relItem.partId !== \"pony_wall\"\r\n // && relItem.partId !== \"pony_wall_cap\"\r\n // && relItem.partId !== \"pony_wall_glass\"\r\n // ) {\r\n // relItem.disabled = disabled;\r\n // }\r\n // });\r\n // if (!keepLeftWall) {\r\n // this.layout.parts.Walls.wallExL.disabled = disabled;\r\n // }\r\n // }\r\n\r\n setDefault(layout) {\r\n const relatedItems = orderBy(this.relatedItems, 'layerPriority');\r\n relatedItems.forEach(_ => _.setDefault(layout));\r\n }\r\n\r\n setDefaultPartAfterSubTypeClick() {\r\n return this.subParts()[0]\r\n }\r\n\r\n handleSubPartClick() {\r\n\r\n }\r\n\r\n /**\r\n * Gets the current shower size from metaValues.\r\n */\r\n showerSize() {\r\n if (this.showerTubComboIsActive()) {\r\n const showerTubCombo = this.getActiveShowerGroup();\r\n if (showerTubCombo) {\r\n const activeRelItem = showerTubCombo.relatedItems.find(featureGroup => featureGroup.partId === showerTubCombo.bottomTub)\r\n || showerTubCombo.replacementTub;\r\n if (activeRelItem && activeRelItem.activeFeature && activeRelItem.activeFeature.metaData[\"ShowerSize\"]) {\r\n return activeRelItem.activeFeature.metaData[\"ShowerSize\"][0]\r\n }\r\n }\r\n return null\r\n }\r\n if (this.showerPanCombo && this.showerPanCombo.activeFeature && this.showerPanCombo.activeFeature.metaData[\"ShowerSize\"]\r\n && this.showerPanCombo.activeFeature.matchesMetaForArrayOfConditions(this.showerPanCombo.getArrayOfConditions())) {\r\n return this.showerPanCombo.activeFeature.metaData[\"ShowerSize\"][0]\r\n }\r\n return null\r\n }\r\n\r\n /**\r\n * Gets the current shower dimensions from showerBody\r\n */\r\n showerDimensions() {\r\n if (!this.showerBody)\r\n return \"Full\";\r\n return this.showerBody.activeFeature ? this.showerBody.activeFeature.showerDimensions : null;\r\n // \"Full\" : \"Half\";\r\n }\r\n\r\n isComplete() {\r\n if (!this.showerBody) {\r\n return true;\r\n } else if (this.showerTubComboIsActive()) {\r\n return false;\r\n } else {\r\n return this.showerBody.activeFeature\r\n }\r\n }\r\n\r\n showerTubComboIsActive() {\r\n const comboPart = this.layout.parts[ShowerTubCombo.id];\r\n return comboPart && comboPart.showerTubComboIsActive\r\n }\r\n\r\n getActiveShowerGroup() { // user for taking sizes, etc...\r\n return this.showerTubComboIsActive() ? this.layout.parts[ShowerTubCombo.id] : this;\r\n }\r\n\r\n setShowerHeadType(showerHeadType, fromPartId = \"\") {\r\n this.shower_head_type = showerHeadType;\r\n\r\n let arrayToDisable = [];\r\n let arrayToEnable = [];\r\n switch (showerHeadType) {\r\n case ShowerHeadTypes.shower_head_bundle:\r\n arrayToDisable = [this.showerArm, this.showerHead, this.showerFixture, this.showerTrimKit, this.showerSystem];\r\n arrayToEnable = [this.showerHeadBundle];\r\n break;\r\n case ShowerHeadTypes.shower_arm:\r\n switch (fromPartId) {\r\n case \"shower_arm\":\r\n case \"shower_head\":\r\n arrayToEnable = [this.showerArm, this.showerHead, this.valveTrim];\r\n break;\r\n case \"shower_hose\":\r\n case \"wall_union\":\r\n case \"hand_shower_only\":\r\n case \"hand_shower_holder\":\r\n arrayToEnable = [this.handShowerHolder, this.handShowerOnly, this.wallUnion, this.showerHose];\r\n break;\r\n default:\r\n arrayToEnable = [this.showerArm, this.showerHead, this.wallUnion];\r\n break;\r\n }\r\n arrayToDisable = [this.showerHeadBundle, this.showerFixture, this.showerTrimKit, this.showerSystem];\r\n break;\r\n case ShowerHeadTypes.shower_trim_kit:\r\n arrayToDisable = [this.showerArm, this.showerHead, this.showerFixture, this.showerHeadBundle, this.showerSystem, this.wallUnion];\r\n arrayToEnable = [this.valveTrim, this.showerTrimKit];\r\n break;\r\n case ShowerHeadTypes.shower_system:\r\n arrayToDisable = [this.showerArm, this.showerHead, this.showerFixture, this.showerHeadBundle, this.showerTrimKit, this.wallUnion];\r\n arrayToEnable = [this.showerSystem];\r\n break;\r\n case ShowerHeadTypes.shower_fixture:\r\n arrayToDisable = [this.showerArm, this.showerHead, this.showerHeadBundle, this.showerTrimKit, this.wallUnion, this.showerHose, this.handShowerOnly, this.handShowerHolder];\r\n arrayToEnable = [this.showerFixture];\r\n break;\r\n default:\r\n break;\r\n }\r\n arrayToDisable.forEach(featureGroup => {\r\n if (featureGroup && !featureGroup.disabled) {\r\n featureGroup.disabled = true;\r\n }\r\n });\r\n arrayToEnable.forEach(featureGroup => {\r\n if (featureGroup && featureGroup.disabled && featureGroup.canBeEnabled()) {\r\n featureGroup.disabled = false;\r\n }\r\n });\r\n\r\n }\r\n\r\n setShowerHandType(showerType) {\r\n this.shower_hand_type = showerType;\r\n\r\n let arrayToDisable = [];\r\n let arrayToEnable = [];\r\n switch (showerType) {\r\n case ShowerHandTypes.hand_shower_kit:\r\n arrayToDisable = [this.handShowerHolder, this.handShowerOnly, this.showerHose];\r\n arrayToEnable = [this.handShowerKit];\r\n break;\r\n case ShowerHandTypes.hand_shower_holder:\r\n arrayToDisable = [this.handShowerKit];\r\n arrayToEnable = [this.handShowerHolder, this.handShowerOnly, this.showerHose];\r\n break;\r\n default:\r\n break;\r\n }\r\n arrayToDisable.forEach(featureGroup => {\r\n if (featureGroup && !featureGroup.disabled) {\r\n featureGroup.disabled = true;\r\n }\r\n });\r\n arrayToEnable.forEach(featureGroup => {\r\n if (featureGroup && featureGroup.disabled && featureGroup.canBeEnabled()) {\r\n featureGroup.disabled = false;\r\n }\r\n });\r\n\r\n }\r\n}\r\n\r\n","import uniq from \"lodash/uniq\";\r\nimport isEqual from \"lodash/isEqual\";\r\nimport * as uuid from \"uuid\";\r\n\r\nimport {COUNTERTOP_GROUP} from \"../bvcomponents/kvComponent/core/constants\";\r\nimport Config, {USE_FAB_FILTERS_ONLY} from \"../config\";\r\nimport {hardCodeIsAmericanImport, hardCodeIsDeStefano, hardCodeIsFloform} from \"./fabricatorHardcode\";\r\nimport {getAllFeatureFilters, getFilterGroupValue, getFilterGroupValues, mergeFilterObjects} from \"./utils\";\r\nimport {getBvGroupFeatures, getBvGroupFilterValues} from \"../api/server-api\";\r\nimport {getCurrentLayout} from \"../bvcomponents/appLayout\";\r\nimport {getHardCodedFilterGroups} from \"../bvcomponents/look/filtersHardcode\";\r\nimport store from \"../store\";\r\nimport {updateFiltersCount} from \"../actions/filtersFunctions\";\r\n\r\n\r\n/**\r\n * returns feature' color filter value object\r\n * @param lookActiveFeature {object}\r\n * @param filterGroups {array}\r\n * @param colorFilterGroup {object}\r\n * @returns {object} feature' color filter value object\r\n */\r\nexport const getColorFilterValue = (lookActiveFeature, filterGroups, colorFilterGroup = null) => {\r\n if (!lookActiveFeature || !Array.isArray(filterGroups)) {\r\n return null\r\n }\r\n\r\n if (!colorFilterGroup) {\r\n colorFilterGroup = filterGroups.find(group => group.name === \"Color\");\r\n }\r\n\r\n if (!colorFilterGroup) {\r\n return null\r\n }\r\n\r\n const activeFeatureValues = getFilterGroupValues(lookActiveFeature, colorFilterGroup);\r\n\r\n // console.log(\"activeFeatureValues\", activeFeatureValues);\r\n\r\n if (!Array.isArray(activeFeatureValues) || !activeFeatureValues.length) {\r\n return null\r\n }\r\n\r\n return getFilterGroupValue(activeFeatureValues[0], colorFilterGroup);\r\n}\r\n\r\nexport const setActivePartFilterValues = (filterValuesArray, activePart, filterGroups) => {\r\n console.log(\"filterValuesArray from backend:\", filterValuesArray);\r\n if ((COUNTERTOP_GROUP.includes(activePart.partId) || activePart.partId === \"vanity_countertop\")\r\n && filterValuesArray && !Config.isDevMode() && !USE_FAB_FILTERS_ONLY) {\r\n let availableCountertopGroupFilters = [\"color\", \"stone color\", \"collection\", \"manufacturer\", \"countertop material\", \"stone finish\", \"color group\"]\r\n if (activePart.partId === \"backsplash\") {\r\n availableCountertopGroupFilters.push(\"material\");\r\n }\r\n if (document.kvConfig.userId === 141822) { // https://asw.quotekitchenandbath.com/kitchen#/\r\n availableCountertopGroupFilters.push(\"material thickness\");\r\n availableCountertopGroupFilters.push(\"promotional discounts\");\r\n availableCountertopGroupFilters.push(\"color group\");\r\n }\r\n if (document.kvConfig.userId === 138452) { // https://cutting_edge_countertops.quotekitchenandbath.com/kitchen#/\r\n availableCountertopGroupFilters.push(\"price group\");\r\n }\r\n if (document.kvConfig.userId === 252141) { // https://solidsurface.quotekitchenandbath.com/visualizer#/\r\n availableCountertopGroupFilters.push(\"price\");\r\n }\r\n if (window.location.href.includes(\"isfa\")) { // https://isfa.quotekitchenandbath.com/kitchen?mode=dashboard&p=208659&language=en-US#/visualizer\r\n availableCountertopGroupFilters.push(\"color temperature\");\r\n }\r\n if (hardCodeIsDeStefano()) { // https://de_stefano_new.quotekitchenandbath.com/kitchen#/\r\n availableCountertopGroupFilters = availableCountertopGroupFilters.filter(f => {\r\n return f !== \"collection\" && f !== \"manufacturer\"\r\n });\r\n availableCountertopGroupFilters.push(\"material thickness\");\r\n }\r\n if (hardCodeIsFloform()) {\r\n availableCountertopGroupFilters = availableCountertopGroupFilters.filter(f => f !== \"stone color\");\r\n }\r\n const allFilterGroups = filterGroups.filter(filterGroup => {\r\n if (window.location.href.includes(\"porcelanosa\")) { // show all filters on https://porcelanosa_new.quotekitchenandbath.com/kitchen#/ except Edge\r\n return filterGroup.name && !filterGroup.name.includes(\"Edge\")\r\n }\r\n // if (USE_FAB_FILTERS_ONLY) {\r\n // if (!Array.isArray(filterGroup.values) || !filterGroup.values.length) {\r\n // return false\r\n // }\r\n // if (filterGroup.values.filter(fgValue => fgValue.isFabricatorCustomFilter)) {\r\n // return true\r\n // }\r\n // }\r\n return filterGroup && filterGroup.name && availableCountertopGroupFilters.includes(filterGroup.name.trim().toLowerCase())\r\n });\r\n filterValuesArray = filterValuesArray.filter(filterId => {\r\n return allFilterGroups.some(filterGroup => filterGroup.values && filterGroup.values.some(filterValueObject => {\r\n return filterValueObject.id === filterId\r\n }))\r\n });\r\n }\r\n if (activePart.allFeaturesReceived && hardCodeIsAmericanImport()) {\r\n activePart.features.forEach(feature => {\r\n [\"filterValueIDs\", \"fabFilterValueIDs\"].forEach(key => {\r\n if (feature.dbFeature[key]) {\r\n Object.keys(feature.dbFeature[key]).forEach(filterGroupId => {\r\n const filterValues = feature.dbFeature[key][filterGroupId];\r\n if (Array.isArray(filterValues)) {\r\n filterValues.forEach(filterValueId => {\r\n if (!filterValuesArray.includes(filterValueId)) {\r\n filterValuesArray.push(filterValueId)\r\n }\r\n })\r\n }\r\n })\r\n }\r\n })\r\n })\r\n console.log(\"filterValuesArray from features:\", filterValuesArray);\r\n }\r\n activePart.filtersReceived = filterValuesArray;\r\n};\r\n\r\n\r\n\r\n/**\r\n * returns all available filter groups with values for navItems\r\n * @param navItems {array}\r\n * @param allFilterGroups {array}\r\n * @returns {array}\r\n */\r\nexport const getAvailableFiltersForNavItems = (navItems, allFilterGroups) => {\r\n let filterGroups = [];\r\n for (let i = 0; i < navItems.length; i++) {\r\n const checkFeature = navItems[i].part;\r\n let featureFilters = getAllFeatureFilters(checkFeature);\r\n const featureOptions = navItems[i].colorOptions;\r\n if (Array.isArray(featureOptions) && featureOptions.length) {\r\n featureOptions.forEach((option) => {\r\n if (option.feature.dbFeature.id !== checkFeature.dbFeature.id) {\r\n const fOptions = getAllFeatureFilters(option.feature);\r\n featureFilters = mergeFilterObjects(featureFilters, fOptions)\r\n }\r\n });\r\n }\r\n Object.keys(featureFilters).forEach(key => {\r\n let existingFilterGroup = filterGroups.find(group => group.id === +key);\r\n const filterGroupFromAll = allFilterGroups.find(group => group.id === +key);\r\n if (!existingFilterGroup) {\r\n if (filterGroupFromAll) {\r\n existingFilterGroup = Object.assign({}, filterGroupFromAll, {values: []});\r\n filterGroups.push(existingFilterGroup);\r\n }\r\n }\r\n if (existingFilterGroup) {\r\n const currentFilterValues = featureFilters[existingFilterGroup.id];\r\n if (Array.isArray(currentFilterValues)) {\r\n currentFilterValues.forEach(filterValueId => {\r\n if (!existingFilterGroup.values.some(fValue => fValue.id === filterValueId) && filterGroupFromAll) {\r\n const fValue = getFilterGroupValue(filterValueId, filterGroupFromAll);\r\n if (fValue) {\r\n existingFilterGroup.values.push(fValue)\r\n }\r\n }\r\n })\r\n }\r\n }\r\n })\r\n }\r\n return filterGroups\r\n}\r\n\r\n/**\r\n * returns all available filter groups with values for received from backend filters\r\n * @param featureGroup {featureGroupInterface}\r\n * @param allFilterGroups {[filterGroup]}\r\n * @returns {array}\r\n */\r\nexport const getAvailableFiltersForReceivedFilters = (featureGroup, allFilterGroups) => {\r\n let filterGroups = [];\r\n for (let i = 0; i < allFilterGroups.length; i++) {\r\n const filterGroup = allFilterGroups[i];\r\n for (let k = 0; k < filterGroup.values.length; k++) {\r\n const filterValue = filterGroup.values[k];\r\n if (featureGroup.filtersReceived.includes(filterValue.id)) {\r\n let existingFilterGroup = filterGroups.find(group => group.id === filterGroup.id);\r\n if (!existingFilterGroup) {\r\n existingFilterGroup = Object.assign({}, filterGroup, {values: []});\r\n filterGroups.push(existingFilterGroup);\r\n }\r\n if (!existingFilterGroup.values.some(fValue => fValue.id === filterValue.id)) {\r\n existingFilterGroup.values.push(filterValue)\r\n }\r\n }\r\n }\r\n }\r\n return filterGroups\r\n}\r\n\r\nexport const checkIfNeedToReceiveFeaturesIfFiltersApplied = (selectedFilters, currentParent, onScroll = false) => {\r\n if (currentParent.getRealFeaturesReceivedProperty()) { // all features received, why do we need to request more?\r\n return false\r\n }\r\n let arrayOfNeededFiltersToReceive = uniq( // remove duplicates\r\n selectedFilters.map(filterObj => filterObj.filterId)\r\n );\r\n if (currentParent.filterIdsReceived) {\r\n // make one object with one filter in array (since we don't need to make request with several filters)\r\n arrayOfNeededFiltersToReceive = arrayOfNeededFiltersToReceive.filter((filterValue) => {\r\n return !currentParent.filterIdsReceived.find(filterIdsReceived => {\r\n return filterIdsReceived.filterIds.includes(filterValue)\r\n })\r\n })\r\n }\r\n if (!arrayOfNeededFiltersToReceive.length) {\r\n return false\r\n }\r\n if (!currentParent.filterIdsReceived) {\r\n currentParent.filterIdsReceived = [];\r\n return {\r\n arrayOfNeededFiltersToReceive,\r\n page: 0\r\n };\r\n } else {\r\n const existingFiltersRequest = currentParent.filterIdsReceived.find(filtersReceivedObject => {\r\n return isEqual(filtersReceivedObject.filterIds.sort(), arrayOfNeededFiltersToReceive.sort())\r\n });\r\n if (existingFiltersRequest) {\r\n if (existingFiltersRequest.allFeaturesWithFiltersReceived || !onScroll) { //!onScroll - componentWillReceiveProps request\r\n return false\r\n } else {\r\n return existingFiltersRequest\r\n }\r\n } else {\r\n return {\r\n arrayOfNeededFiltersToReceive,\r\n page: 0\r\n };\r\n }\r\n }\r\n};\r\n\r\nexport const getFeaturesFromBackendWithFilters = (featureGroup, counterTopFiltersIdsReceived, existingFilterObject = null) => {\r\n const filterObject = existingFilterObject || {\r\n uuid: uuid.v4(),\r\n filterIds: counterTopFiltersIdsReceived, // array of arrays, ex. [[56],[1122,1313]] etc.\r\n featuresReceived: 0,\r\n page: 0\r\n };\r\n if (!existingFilterObject) {\r\n featureGroup.filterIdsReceived.push(filterObject);\r\n }\r\n const featuresCountToReceive = 6000;\r\n featureGroup.requestInProgress = true;\r\n return getBvGroupFeatures(\r\n featureGroup.dbName || featureGroup.partName,\r\n filterObject.page,\r\n featuresCountToReceive,\r\n counterTopFiltersIdsReceived\r\n )\r\n .then((response) => {\r\n featureGroup.requestInProgress = false;\r\n if (response && response.length) {\r\n console.log(\"response.data with filters\", response);\r\n featureGroup.setGroupFeatures(response, featuresCountToReceive, false, \"\", null, true);\r\n featureGroup.filterIdsReceived = featureGroup.filterIdsReceived.map((filtersReceivedObject) => {\r\n if (filtersReceivedObject.uuid === filterObject.uuid) {\r\n filtersReceivedObject.featuresReceived += response.length;\r\n if (response.length < featuresCountToReceive) {\r\n filtersReceivedObject.allFeaturesWithFiltersReceived = true;\r\n } else {\r\n filtersReceivedObject.page++;\r\n }\r\n }\r\n return filtersReceivedObject\r\n });\r\n }\r\n return response\r\n });\r\n}\r\n\r\nexport const getSelectedFiltersLength = (filterGroup, selectedFilters) => {\r\n return selectedFilters.reduce((total, selectedFilter) => {\r\n return total + (filterGroup.id === selectedFilter.filterGroupId ? 1 : 0)\r\n }, 0)\r\n}\r\n\r\n\r\n/**\r\n * returns all available filter groups with values for featureGroup's part id\r\n * @param featureGroup {featureGroupInterface}\r\n * @param partId {string}\r\n * @param allFilterGroups {array}\r\n * @param shopNavItems {[navItemInterface]}\r\n * @param forceFromNavItems {boolean}\r\n * @returns {array}\r\n */\r\nexport const getAvailableFilters = (featureGroup, partId, allFilterGroups, shopNavItems = null, forceFromNavItems = false) => {\r\n const layout = getCurrentLayout();\r\n if (!featureGroup && partId) {\r\n featureGroup = layout.getFeatureGroupByPartId(partId)\r\n }\r\n if (featureGroup) {\r\n if (featureGroup.filtersReceived && !forceFromNavItems) {\r\n return getAvailableFiltersForReceivedFilters(featureGroup, allFilterGroups)\r\n }\r\n const navItems = shopNavItems || layout.designNavigationItems(\r\n {part: featureGroup},\r\n {},\r\n \"\",\r\n null,\r\n false,\r\n allFilterGroups\r\n );\r\n return getAvailableFiltersForNavItems(navItems, allFilterGroups)\r\n }\r\n return []\r\n}\r\n\r\n/**\r\n * returns all available filter groups for featureGroup\r\n * @param featureGroup {featureGroupInterface}\r\n * @param shopNavItems {[navItemInterface]}\r\n * @returns {[filterGroupInterface]}\r\n */\r\nexport const getFeatureGroupFilters = (featureGroup, shopNavItems = null) => {\r\n if (!featureGroup) {\r\n return []\r\n }\r\n const {selectedFilters, filterGroups} = store.getState().filterState;\r\n if (!featureGroup.filtersReceived && !featureGroup.realFeaturesReceived && !featureGroup.filtersRequested) {\r\n // && !featureGroup.realFeaturesReceived\r\n featureGroup.filtersRequested = true;\r\n getBvGroupFilterValues(featureGroup.dbName || featureGroup.partName, null, false)\r\n .then((featureGroupFiltersResponse) => {\r\n setActivePartFilterValues(featureGroupFiltersResponse.data, featureGroup, filterGroups);\r\n store.dispatch(updateFiltersCount());\r\n });\r\n }\r\n const availableFilters = getAvailableFilters(featureGroup, \"\", filterGroups, shopNavItems);\r\n // we are using this in sqft calc\r\n // if (!IS_LIXIL_UI) { // might need to change this, but for now we hardcode filters for all profiles\r\n // return availableFilters\r\n // }\r\n return getHardCodedFilterGroups(availableFilters, featureGroup.partId, selectedFilters)\r\n}\r\n","import * as types from './actionTypes';\r\n\r\nexport const setLanguage = (language) => ({\r\n type: types.SET_LANGUAGE,\r\n payload: {language}\r\n});\r\n\r\nexport const setActiveTheme = (activeTheme) => ({\r\n type: types.SET_ACTIVE_THEME,\r\n payload: {activeTheme}\r\n});\r\n\r\nexport const setAgreeEmailCheckbox = (agreeEmailCheckbox) => ({\r\n type: types.SET_AGREE_EMAIL_CHECKBOX,\r\n payload: {agreeEmailCheckbox}\r\n});\r\n\r\nexport const setInitialVisualizerType = (initialVisualizerType) => ({\r\n type: types.SET_INITIAL_VISUALIZER_TYPE,\r\n payload: {initialVisualizerType}\r\n});\r\n\r\nexport const setNetworkConnection = (networkConnection) => ({\r\n type: types.SET_NETWORK_CONNECTION,\r\n payload: {networkConnection}\r\n});\r\n\r\nexport const setAmazonImageUrl = (amazonImageUrl) => ({\r\n type: types.SET_AMAZON_IMAGE_URL,\r\n payload: {amazonImageUrl}\r\n});\r\n\r\nexport const setAllFeaturesLoaded = (allFeaturesWereLoaded) => ({\r\n type: types.SET_ALL_FEATURES_LOADED,\r\n payload: {allFeaturesWereLoaded}\r\n});\r\n\r\nexport const setAllowRouting = (allowRouting) => ({\r\n type: types.SET_ALLOW_ROUTING,\r\n payload: {allowRouting}\r\n});\r\n\r\nexport const setAllowMainLoading = (allowMainLoading) => ({\r\n type: types.SET_ALLOW_MAIN_LOADING,\r\n payload: {allowMainLoading}\r\n});\r\n\r\nexport const setActionAfterVisualizerTypeIsChanged = (actionAfterRoomChange) => ({\r\n type: types.SET_ACTION_AFTER_VISUALIZER_TYPE_CHANGED,\r\n payload: {actionAfterRoomChange}\r\n});\r\n\r\nexport const setVisualizerIsChanging = (visualizerIsChanging) => ({\r\n type: types.SET_VISUALIZER_TYPE_CHANGING,\r\n payload: {visualizerIsChanging}\r\n});\r\n","import EventManager from \"../../store/sqftEventManager\";\r\nimport {renderMeasurementsAroundSnappedShapes, renderSlabRightPart, renderSlabWorkspace} from \"./sqftSlabDraw\";\r\nimport workspace from \"../workspace\";\r\nimport SlabAdditionalShapes from \"./slabAdditionalShapes\";\r\nimport sqftSlabManager from \"../../store/sqftSlabManager\";\r\nimport StaticImage from \"../workspace/image/StaticImage\";\r\nimport workspaceZoom from \"../workspaceZoom\";\r\nimport sqftShape from \"../shapes/sqftShape\";\r\nimport {getClosestHigherNumber} from \"../../../../helpers/sqftHelper\";\r\nimport store from \"../../../../../../store\";\r\n\r\nconst SlabWorkspace = function() {\r\n this.eventManager = EventManager;\r\n this.objectName = {name: 'SlabWorkspace'};\r\n this.leftImagePos = {\r\n x: 0,\r\n y: 0,\r\n };\r\n this.state = {\r\n inEnabled: false,\r\n mouseDown: false,\r\n mouseDownPosition: null,\r\n isCenterButtonRightPartHovered: false,\r\n isCenterButtonLeftPartHovered: false,\r\n rightPartZoomedShapeId: 1,\r\n leftPartZoomedShapeId: 1,\r\n isSlabPlaceHolderPresent: false,\r\n }\r\n this.pos = {\r\n x: 0,\r\n y: 0,\r\n };\r\n this.slabAdditionalShapes = new SlabAdditionalShapes();\r\n this.measurementPoints = [];\r\n this.shapeOffset = null;\r\n this.centerButtonRightPart = null;\r\n this.centerButtonLeftPart = null;\r\n\r\n this.getOffset = function() {\r\n return this.getCenter()\r\n };\r\n\r\n this.getPos = () => {\r\n return this.pos\r\n };\r\n\r\n this.setPos = function(pos) {\r\n this.pos = {...pos}\r\n };\r\n\r\n this.getCenter = function() {\r\n return this.pos\r\n };\r\n\r\n this.setEnabled = (val) => {\r\n this.state.inEnabled = val\r\n };\r\n\r\n this.setSlabPlaceHolderPresent = (val) => {\r\n this.state.isSlabPlaceHolderPresent = val\r\n };\r\n\r\n this.getRightPartWidth = () => {\r\n return workspace.getCanvas().width / 2\r\n };\r\n\r\n this.getShapeOffset = () => {\r\n return this.shapeOffset\r\n };\r\n\r\n this.init = () => {\r\n this.initRightPart();\r\n this.initLeftPart();\r\n }\r\n\r\n this.initRightPart = () => {\r\n this.centerButtonRightPart = new StaticImage(\r\n 'eyeball',\r\n this.eventManager.getCtx().canvas.width - 40 - sqftSlabManager.centerButton.width,\r\n 30,\r\n sqftSlabManager.centerButton.width,\r\n sqftSlabManager.centerButton.height,\r\n false,\r\n true,\r\n this.beforeRenderCenterButtonRightPart.bind(this)\r\n );\r\n this.centerButtonLeftPart = new StaticImage(\r\n 'eyeball',\r\n this.eventManager.getCtx().canvas.width / 2 - 40 - sqftSlabManager.centerButton.width,\r\n 30,\r\n sqftSlabManager.centerButton.width,\r\n sqftSlabManager.centerButton.height,\r\n false,\r\n true,\r\n this.beforeRenderCenterButtonLeftPart.bind(this)\r\n );\r\n this.initSlabWorkspaceEvents();\r\n }\r\n\r\n this.initLeftPart = () => {\r\n this.eventManager.addEvent(\r\n this.eventManager.events.RENDER,\r\n this.renderSlabLeftPartWrapper,\r\n this.objectName,\r\n this.eventManager.priorities.SEGMENT_MEASUREMENTS\r\n );\r\n }\r\n\r\n this.initSlabWorkspaceEvents = function() {\r\n this.eventManager.addEvent(\r\n this.eventManager.events.MOUSE_MOVE,\r\n this.onMouseMove,\r\n this.objectName,\r\n this.eventManager.priorities.SLAB_RIGHT_PART_WORKSPACE\r\n );\r\n this.eventManager.addEvent(\r\n this.eventManager.events.MOUSE_DOWN,\r\n this.onMouseDown,\r\n this.objectName,\r\n EventManager.priorities.SLAB_RIGHT_PART_WORKSPACE\r\n );\r\n this.eventManager.addEvent(\r\n this.eventManager.events.MOUSE_UP,\r\n this.onMouseUp,\r\n this.objectName,\r\n EventManager.priorities.SLAB_RIGHT_PART_WORKSPACE\r\n );\r\n this.eventManager.addEvent(\r\n this.eventManager.events.WHEEL,\r\n this.onWheel,\r\n this.objectName,\r\n this.eventManager.priorities.SLAB_RIGHT_PART_WORKSPACE\r\n );\r\n this.eventManager.addEvent(\r\n this.eventManager.events.RENDER,\r\n renderSlabWorkspace,\r\n this.objectName,\r\n this.eventManager.priorities.SLAB_RIGHT_PART_WORKSPACE\r\n );\r\n this.eventManager.addEvent(\r\n this.eventManager.events.RENDER,\r\n this.renderSlabRightPartWrapper,\r\n this.objectName,\r\n this.eventManager.priorities.SLAB_RIGHT_PART_CONTENT\r\n );\r\n this.eventManager.addEvent(\r\n this.eventManager.events.RENDER,\r\n this.centerButtonRightPart.render,\r\n this.objectName,\r\n this.eventManager.priorities.SLAB_RIGHT_PART_CONTENT\r\n );\r\n this.eventManager.addEvent(\r\n this.eventManager.events.RENDER,\r\n this.centerButtonLeftPart.render,\r\n this.objectName,\r\n this.eventManager.priorities.SLAB_RIGHT_PART_CONTENT\r\n );\r\n };\r\n\r\n this.disableSlabImages = () => {\r\n this.eventManager.removeEvent(this.objectName);\r\n };\r\n\r\n this.deregisterEvents = () => {\r\n this.eventManager.removeEvent(this.objectName);\r\n };\r\n\r\n this.onMouseDown = (mousePos, e) => {\r\n void e;\r\n if (this.state.isCenterButtonLeftPartHovered) {\r\n this.eyeballButtonLeftPartClick();\r\n }\r\n if (!this.isOverRightPart(mousePos)) {\r\n return false;\r\n }\r\n if (this.state.isCenterButtonRightPartHovered) {\r\n this.eyeballButtonRightPartClick();\r\n }\r\n this.eventManager.stealCursor(true, true);\r\n this.state.mouseDown = true;\r\n this.state.mouseDownPosition = mousePos;\r\n this.eventManager.setCursor('grabbing', this, false);\r\n\r\n return true;\r\n };\r\n\r\n this.onMouseUp = (mousePos, e) => {\r\n if (!this.isOverRightPart(mousePos)) {\r\n return false;\r\n }\r\n this.state.mouseDown = false;\r\n this.state.mouseDownPosition = null;\r\n\r\n return this.onMouseMove(mousePos, e);\r\n }\r\n\r\n this.onMouseMove = (mousePos, e) => {\r\n if (e.terminate) {\r\n return false;\r\n }\r\n this.state.isCenterButtonLeftPartHovered = this.centerButtonLeftPart.isHovered(mousePos);\r\n if (!this.isOverRightPart(mousePos)) {\r\n return false;\r\n }\r\n this.state.isCenterButtonRightPartHovered = this.centerButtonRightPart.isHovered(mousePos);\r\n if (this.state.mouseDown) {\r\n this.moveSlabWorkspace(mousePos);\r\n } else {\r\n this.eventManager.resetCursor(this);\r\n }\r\n return true;\r\n }\r\n\r\n this.onWheel = (mousePos, e) => {\r\n void mousePos;\r\n void e;\r\n\r\n return true;\r\n }\r\n this.moveSlabWorkspace = (mousePos) => {\r\n if (!this.isOverRightPart(mousePos)) {\r\n return false;\r\n }\r\n let xDiff = mousePos.x - this.state.mouseDownPosition.x;\r\n let yDiff = mousePos.y - this.state.mouseDownPosition.y;\r\n\r\n this.pos.x -= xDiff;\r\n this.state.mouseDownPosition.x = mousePos.x;\r\n\r\n this.pos.y -= yDiff;\r\n this.state.mouseDownPosition.y = mousePos.y;\r\n };\r\n\r\n this.beforeRenderCenterButtonRightPart = () => {\r\n this.centerButtonRightPart.x = this.eventManager.getCtx().canvas.width - 40 - sqftSlabManager.centerButton.width;\r\n };\r\n\r\n this.beforeRenderCenterButtonLeftPart = () => {\r\n this.centerButtonLeftPart.x = this.eventManager.getCtx().canvas.width / 2 - 40 - sqftSlabManager.centerButton.width;\r\n };\r\n\r\n this.eyeballButtonRightPartClick = () => {\r\n const shapesIds = workspace.getShapeIds();\r\n const closestHigherNumber = getClosestHigherNumber(this.state.rightPartZoomedShapeId, shapesIds);\r\n const shape = workspace.getShapeById(closestHigherNumber);\r\n\r\n if (shape instanceof sqftShape) {\r\n workspaceZoom.zoomToSlabShape(shape, true);\r\n this.state.rightPartZoomedShapeId = shape.id\r\n } else {\r\n this.state.rightPartZoomedShapeId = closestHigherNumber === null ? 0 : closestHigherNumber;\r\n this.eyeballButtonRightPartClick()\r\n }\r\n return false\r\n };\r\n\r\n this.eyeballButtonLeftPartClick = () => {\r\n const shapesIds = workspace.getShapeIds();\r\n const closestHigherNumber = getClosestHigherNumber(this.state.leftPartZoomedShapeId, shapesIds);\r\n const shape = workspace.getShapeById(closestHigherNumber);\r\n\r\n if (shape instanceof sqftShape) {\r\n workspaceZoom.zoomToShape(shape, true);\r\n this.state.leftPartZoomedShapeId = shape.id\r\n } else {\r\n this.state.leftPartZoomedShapeId = closestHigherNumber === null ? 0 : closestHigherNumber;\r\n this.eyeballButtonLeftPartClick()\r\n }\r\n return false\r\n };\r\n\r\n this.isOverRightPart = (mousePos = {x: 0}) => {\r\n let rpw = this.getRightPartWidth();\r\n\r\n return mousePos.x > rpw\r\n };\r\n\r\n this.renderSlabRightPartWrapper = (ctx, isFullRender = false) => {\r\n //if (this.state.setSlabPlaceHolderPresent) {\r\n return renderSlabRightPart(ctx, isFullRender);\r\n //}\r\n };\r\n this.renderSlabLeftPartWrapper = (ctx) => {\r\n const reduxState = store.getState()\r\n let isMeasurementVisibleInSlabMode = reduxState.sqftSlabState.isMeasurementVisibleInSlabMode;\r\n if (isMeasurementVisibleInSlabMode) {\r\n renderMeasurementsAroundSnappedShapes(ctx, this.measurementPoints);\r\n }\r\n };\r\n};\r\n\r\nexport default new SlabWorkspace;\r\n","import {\r\n CABINET_COMMON_COLOR_PART_IDS,\r\n FEATUREGROUP_PART_ID,\r\n MITER_EDGE_NAMES,\r\n MITER_UNDERWRAP_EDGE_NAMES,\r\n SHAPE_PART_ID,\r\n SHAPE_TYPE,\r\n SQFT_APPLIANCES\r\n} from \"../constants\";\r\nimport store from \"./../../../store\";\r\nimport {getCountertopFeatureGroup, getCurrentLayout} from \"../../appLayout\";\r\nimport workspace from \"../components/canvas/core/workspace\";\r\nimport {getStringFeatureName} from \"../../../misc/helpers\";\r\nimport {getEdgeFeatures} from \"./shapeHelper\";\r\nimport {isSFTCabinetsGroup} from \"./sqftNavigationHelper\";\r\nimport {getFeatureGroup} from \"./sqftHelperUi\";\r\nimport sqftConfig from \"../components/canvas/store/sqftConfig\";\r\nimport {\r\n findGLBLink,\r\n getDepthFromDbFeature,\r\n getThirdPartyAR3DMetaData,\r\n getUrlMatchingByColor,\r\n getWidthFromDbFeature\r\n} from \"./sqft3dArHelper\";\r\n\r\nexport const getShapeFeatureId = (partId) => {\r\n const state = store.getState();\r\n const { sqftFromFeature } = state.sqftState;\r\n const { wizardIsActive, wizardSelectedValues } = state.wizardState;\r\n const layout = getCurrentLayout();\r\n const isCabinetsMode = isSFTCabinetsGroup();\r\n\r\n // 1) Assign feature by sqftFromFeature that was passed from visualizer quoting tool\r\n if (wizardIsActive) {\r\n for (const key in wizardSelectedValues) {\r\n if (wizardSelectedValues.hasOwnProperty(key)) {\r\n const selectedFeature = wizardSelectedValues[key] ? wizardSelectedValues[key].selectedFeature : null;\r\n if (selectedFeature && selectedFeature.partId === partId) {\r\n return selectedFeature.dbFeature.id;\r\n }\r\n }\r\n }\r\n }\r\n\r\n //1.1) For the cabinets we will assign activeFeature from featureGroup\r\n if (!isCabinetsMode && sqftFromFeature && sqftFromFeature.cartFeature.partId === partId) {\r\n console.log(\"new shape featureId from sqftFromFeature\", sqftFromFeature.cartFeature.dbFeature.id);\r\n return sqftFromFeature.cartFeature.dbFeature.id;\r\n }\r\n\r\n //2) Assign default active feature group feature for the part id\r\n const featureGroup = layout.getFeatureGroupByPartId(partId);\r\n if (featureGroup && featureGroup.activeFeature) {\r\n console.log(\"new shape featureId featureGroup activeFeature\", featureGroup.activeFeature.dbFeature.id);\r\n return featureGroup.activeFeature.dbFeature.id;\r\n }\r\n\r\n //2.5) Assign feature for slab placeholder\r\n if (partId === SHAPE_PART_ID.slabPlaceHolder) {\r\n const countertopFeatureGroup = getCountertopFeatureGroup();\r\n if (sqftFromFeature && sqftFromFeature.cartFeature.partId === countertopFeatureGroup.partId) {\r\n console.log(\"new shape featureId from sqftFromFeature for the slabPlaceHolder\", sqftFromFeature.cartFeature.dbFeature.id);\r\n return sqftFromFeature.cartFeature.dbFeature.id;\r\n }\r\n\r\n if (countertopFeatureGroup && countertopFeatureGroup.activeFeature) {\r\n console.log(\"new shape featureId featureGroup activeFeature for the slabPlaceHolder\", countertopFeatureGroup.activeFeature.dbFeature.id);\r\n return countertopFeatureGroup.activeFeature.dbFeature.id;\r\n }\r\n }\r\n\r\n //3) Assign any feature\r\n //todo\r\n console.log(\"new shape featureId\", null);\r\n return null\r\n}\r\n/**\r\n * This will return sibling feature without special shape with the same height.\r\n * @param feature\r\n * @param parentFeature\r\n * @return {*}\r\n */\r\nexport const getSpacerDbFeature = (feature, parentFeature) => {\r\n if (feature && parentFeature) {\r\n const url = getUrlMatchingByColor(feature.dbFeature, parentFeature);\r\n const metaData = getThirdPartyAR3DMetaData(feature.dbFeature, url);\r\n const shapeHeight = Array.isArray(metaData.Height) ? metaData.Height[0] : 0;\r\n\r\n const relatedFeatures = parentFeature.getFeatureRelatedFeatures();\r\n return relatedFeatures.find(siblingDbFeature => {\r\n const siblingFeatureUrl = getUrlMatchingByColor(siblingDbFeature, parentFeature);\r\n const siblingFeatureMetaData = getThirdPartyAR3DMetaData(siblingDbFeature, siblingFeatureUrl);\r\n const siblingFeatureHeight = Array.isArray(siblingFeatureMetaData.Height) ? siblingFeatureMetaData.Height[0] : 0;\r\n\r\n if (metaData\r\n && !Array.isArray(siblingFeatureMetaData.SpecialShape)\r\n && shapeHeight === siblingFeatureHeight\r\n ) {\r\n return siblingDbFeature\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport const getFeatureNameById = (featureId) => {\r\n const layout = getCurrentLayout();\r\n const feature = layout.getFeatureById(featureId);\r\n const intl = workspace.intl;\r\n const state = store.getState();\r\n const fabricatorData = state.fabricatorState;\r\n\r\n return getStringFeatureName(feature, intl.messages, intl.locale, fabricatorData);\r\n}\r\n\r\nexport const shouldChangeCabinetShapePartId = (relatedParentFeature, newFeature) => {\r\n //console.log(\"relatedParentFeature\", relatedParentFeature);\r\n //console.log(\"sqftFromFeature\", sqftFromFeature);\r\n if (!newFeature || !relatedParentFeature) {\r\n return false\r\n }\r\n\r\n const sqftFromFeatureParentGroup = newFeature.getParent();\r\n const relatedParentParentGroup = relatedParentFeature.getParent();\r\n\r\n if ((CABINET_COMMON_COLOR_PART_IDS).includes(sqftFromFeatureParentGroup.partId)\r\n && (CABINET_COMMON_COLOR_PART_IDS).includes(relatedParentParentGroup.partId)\r\n ) {\r\n const sqftFromFeatureFeatureName = newFeature.getFeatureName();\r\n const relatedParentFeatureName = relatedParentFeature.getFeatureName();\r\n //console.log(\"sqftFromFeatureFeatureName\", sqftFromFeatureFeatureName);\r\n //console.log(\"relatedParentFeatureName\", relatedParentFeatureName);\r\n\r\n if (sqftFromFeatureFeatureName !== relatedParentFeatureName) {\r\n return true\r\n }\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport const getEdgeFilterByValue = (filterValue = 'Waterfall') => {\r\n const state = store.getState();\r\n const filterGroups = state.filterState.filterGroups;\r\n const edgeFilterGroup = filterGroups.find(group => group.name === \"Edge\" || group.name === \"Edge Profile\");\r\n\r\n return edgeFilterGroup ? edgeFilterGroup.values.filter(group => group.value === filterValue) : [];\r\n};\r\n\r\nexport const isWaterfallFeature = (edgeFeatureId) => {\r\n const navItems = getEdgeFeatures();\r\n if (!navItems) {\r\n return false\r\n }\r\n let edgeFeature = navItems.find(edge => edge.part.dbFeature.id === edgeFeatureId);\r\n if (!edgeFeature) {\r\n return false\r\n }\r\n\r\n const intl = workspace.intl;\r\n const state = store.getState();\r\n const fabricatorData = state.fabricatorState;\r\n let edgeNameTranslated = getStringFeatureName(edgeFeature.part, intl.messages, intl.locale, fabricatorData);\r\n\r\n return edgeNameTranslated.toLowerCase().includes('waterfall')\r\n}\r\n\r\nexport const isMiterEdge = (featureId) => {\r\n const navItems = getEdgeFeatures();\r\n if (!navItems) {\r\n return false\r\n }\r\n\r\n let edge = navItems.find(edge => edge.part.dbFeature.id === featureId);\r\n if (!edge) {\r\n return false\r\n }\r\n\r\n const edgeName = edge.part.getFeatureName();\r\n\r\n return MITER_EDGE_NAMES.includes(edgeName);\r\n}\r\n\r\nexport const getEdgeByFeatureId = (featureId) => {\r\n const navItems = getEdgeFeatures();\r\n if (!navItems) {\r\n return null\r\n }\r\n\r\n let edge = navItems.find(edge => edge.part.dbFeature.id === featureId);\r\n if (!edge) {\r\n return null\r\n }\r\n\r\n return edge\r\n}\r\n\r\nconst parseNumberFromString = (str) => {\r\n // Convert the string \"1 1/2\" to 1.5\r\n const fractionMatch = str.match(/(\\d+)\\s+(\\d+)\\/(\\d+)/);\r\n if (fractionMatch) {\r\n const [_, whole, numerator, denominator] = fractionMatch;\r\n void _;\r\n return parseFloat(whole) + (parseFloat(numerator) / parseFloat(denominator));\r\n }\r\n\r\n // Convert a string like \"1 1/2\", \"2-3\" into separate numbers\r\n const numberMatch = str.match(/\\d+(\\.\\d+)?/g);\r\n if (numberMatch) {\r\n return Math.max(...numberMatch.map(Number));\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const getMiterEdgeHeight = (featureId = null) => {\r\n //get height from featureName\r\n if (featureId) {\r\n const miterEdgeFeature = getEdgeByFeatureId(featureId);\r\n if (miterEdgeFeature) {\r\n const edgeName = miterEdgeFeature.part.getFeatureName();\r\n\r\n const heightFromFeatureName = parseNumberFromString(edgeName);\r\n\r\n if (edgeName !== 'Rimrock - 981' // don't get height from this edge\r\n && heightFromFeatureName > 0.5\r\n ) {\r\n return heightFromFeatureName\r\n }\r\n }\r\n }\r\n\r\n return sqftConfig.measureUnit === \"Imperial\" ? sqftConfig.miteredEdgeAdditionalImperialArea : sqftConfig.miteredEdgeAdditionalMetricArea;\r\n};\r\n\r\nexport const getMiterEdgeFeature = () => {\r\n const navItems = getEdgeFeatures();\r\n if (!navItems) {\r\n return null\r\n }\r\n\r\n let edgeFeature = navItems.find(edge => {\r\n return MITER_EDGE_NAMES.includes(edge.part.partName);\r\n });\r\n\r\n if (!edgeFeature) {\r\n edgeFeature = navItems.find(edge => edge.part.partName.toLowerCase().includes('miter'));\r\n }\r\n\r\n if (edgeFeature) {\r\n return edgeFeature.part\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport const getMiterUnderwrap = () => {\r\n const navItems = getEdgeFeatures();\r\n if (!navItems) {\r\n return null\r\n }\r\n\r\n let edgeFeature = navItems.find(edge => {\r\n return MITER_UNDERWRAP_EDGE_NAMES.includes(edge.part.partName.toLowerCase());\r\n });\r\n\r\n if (edgeFeature) {\r\n return edgeFeature.part\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport const getBumpoutFeature = () => {\r\n const bumpoutFeatureGroup = getFeatureGroup(FEATUREGROUP_PART_ID.specialty_cut_and_designs);\r\n const layout = getCurrentLayout();\r\n\r\n return layout.designNavigationItems(bumpoutFeatureGroup,\r\n {},\r\n 'bumpout',\r\n true,\r\n true,\r\n [],\r\n { firstFeature: null, firstConditions: null },\r\n )\r\n}\r\n\r\nexport const isFeatureUnitUseEach = (feature) => {\r\n return feature.dbFeature.unit === \"Each\"\r\n}\r\n\r\nexport const createApplianceFromFeature = (feature) => {\r\n const dbFeature = feature.dbFeature;\r\n const partId = feature.partId;\r\n const thirdPartyAR3DUrl = findGLBLink(dbFeature.thirdPartyAR3DUrls);// assume we have only one link to the model\r\n const thirdPartyAR3DMetaData = getThirdPartyAR3DMetaData(dbFeature, thirdPartyAR3DUrl);\r\n const width = getWidthFromDbFeature(dbFeature, thirdPartyAR3DMetaData);\r\n const depth = getDepthFromDbFeature(dbFeature, thirdPartyAR3DMetaData);\r\n\r\n console.log(\"dbFeature displayName\", dbFeature.displayName);\r\n console.log(\"thirdPartyAR3DMetaData\", thirdPartyAR3DMetaData);\r\n\r\n return createApplianceOnTheWorkspace(partId,\r\n dbFeature.id,\r\n {width, height: depth},\r\n {\r\n canSnap: true,\r\n isResizable: false\r\n }\r\n );\r\n}\r\n\r\nexport const createApplianceOnTheWorkspace = (\r\n itemName,\r\n featureId = null,\r\n size = null,\r\n params = {\r\n canSnap: true,\r\n isResizable: true\r\n }) => {\r\n const getSize = (itemName) => {\r\n switch (itemName) {\r\n case SQFT_APPLIANCES.sink:\r\n return {width: 22, height: 30}\r\n case SQFT_APPLIANCES.doubleSink:\r\n return {width: 22, height: 33}\r\n default:\r\n return {width: 30, height: 26}\r\n }\r\n }\r\n if (!size) {\r\n size = getSize(itemName);\r\n }\r\n\r\n let iconFullName = 'icon-'+ itemName +'-placeholder';\r\n let svg = document.getElementById(iconFullName);\r\n if (!svg) {\r\n console.log('svg not found', 'icon-'+ itemName +'-placeholder');\r\n return\r\n }\r\n //console.log('svg', iconFullName);\r\n\r\n let img = new Image(),\r\n xml = new XMLSerializer().serializeToString(svg), // get svg data\r\n svg64 = btoa(xml); // make it base64\r\n\r\n img.src = 'data:image/svg+xml;base64,' + svg64; // set it as the source of the img element\r\n\r\n const movableImage = workspace.addImage(\r\n img,\r\n size.width,\r\n size.height,\r\n null,\r\n null,\r\n SHAPE_TYPE.appliances,\r\n itemName,\r\n function () {},\r\n undefined,\r\n null,\r\n null,\r\n null,\r\n featureId,\r\n false,\r\n params\r\n );\r\n void movableImage\r\n //movableImage.setFeatureId(featureId);\r\n\r\n return movableImage;\r\n}\r\n\r\nexport const getDbFeatureName = (dbFeature) => {\r\n return dbFeature.metaData.ActualDisplayedName\r\n ? dbFeature.customDisplayName && (dbFeature.customDisplayName !== dbFeature.sharedFeatureName)\r\n ? dbFeature.customDisplayName\r\n : metaData.ActualDisplayedName[0]\r\n : dbFeature.customDisplayName || dbFeature.displayName || dbFeature.sharedFeatureName;\r\n};\r\n\r\n/**\r\n * Sort features By Width ASC\r\n * @param features\r\n */\r\nexport const getSortedFeatures = (features) => {\r\n features.sort((a, b) => {\r\n const indexA = a.dbFeature.description.indexOf('Width');\r\n const indexB = b.dbFeature.description.indexOf('Width');\r\n\r\n // Check if 'Width' was found in descriptions\r\n if (indexA !== -1 && indexB !== -1) {\r\n const widthA = parseInt(a.dbFeature.description.substr(indexA + 6, 3), 10);\r\n const widthB = parseInt(b.dbFeature.description.substr(indexB + 6, 3), 10);\r\n\r\n return widthB - widthA;\r\n } else if (indexA !== -1) {\r\n // Place items without 'Width' in descriptions below\r\n return -1; // Move item b lower in the list\r\n } else if (indexB !== -1) {\r\n // Place items without 'Width' in descriptions below\r\n return 1; // Move item a lower in the list\r\n } else {\r\n // If neither has 'Width' in description, maintain current order\r\n return 0;\r\n }\r\n })\r\n\r\n return features\r\n}\r\n\r\n// const getSplittedDbFeatureName = (dbFeature) => {\r\n// if (dbFeature.customDisplayName == null) {\r\n// dbFeature.customDisplayName = dbFeature.sharedFeatureName || dbFeature.partName || \"\";\r\n// if (dbFeature.partId === \"center_island_countertop\") {\r\n// dbFeature.customDisplayName = dbFeature.customDisplayName\r\n// .replace(/2 0 /g, \"\")\r\n// .replace(/Center Island Countertop 1 /g, \"\");\r\n// }\r\n// }\r\n// return dbFeature.customDisplayName\r\n// };\r\n//\r\n// export const getFilteredRelatedDbFeatures = (relatedDbFeaturesToCheck) => {\r\n// // console.log(\"relatedFeaturesToCheck\", relatedFeaturesToCheck);\r\n// let relatedDbFeatures = [];\r\n// relatedDbFeaturesToCheck.forEach((relFeature) => {\r\n// const featureAlreadyExistIndex = relatedDbFeatures.findIndex(currentFeature => {\r\n// return getSplittedDbFeatureName(currentFeature) === getSplittedDbFeatureName(relFeature)\r\n// })\r\n// if (featureAlreadyExistIndex > -1) {\r\n// if (relFeature.getParent().navigationSubItems().some(navItem => {\r\n// return navItem.part.dbFeature.id === relFeature.dbFeature.id\r\n// })) {\r\n// relatedDbFeatures.splice(featureAlreadyExistIndex, 1, relFeature)\r\n// }\r\n// } else {\r\n// relatedDbFeatures.push(relFeature);\r\n// }\r\n// });\r\n// // console.log(\"relatedFeatures\", relatedFeatures);\r\n// return relatedDbFeatures\r\n// };\r\n","import store from \"../../../store\";\r\nimport {\r\n END_CAP_AREA_PART_IDS,\r\n END_CAP_CABINETS_PART_IDS,\r\n END_CAP_PART_IDS, SHAPE_PART_ID, SIDEBAR_NAVIGATION_BUTTONS,\r\n SQFT_AREA_TYPE_PART_IDS, SQFT_FEATURES,\r\n SQFT_GROUP\r\n} from \"../constants\";\r\nimport {getUrlSQFTHashParam} from \"./sqftHelper\";\r\nimport sqftConfig from \"../components/canvas/store/sqftConfig\";\r\nimport { SIDEBAR_NAVIGATION_CABINET_BUTTONS, SQFT_APPLIANCES } from \"../constants\";\r\nimport endCapCanvas from \"../components/canvas/core/controls/endCapCanvas\";\r\nimport {setSelectedFeature, setSelectedHandle} from \"../../../actions/sqftResourceFunctions\";\r\nimport {\r\n setSelectedCountertop,\r\n setSelectedWall,\r\n setSQFTPopup\r\n} from \"../../../actions/sqftMenuFunctions\";\r\nimport SqftOptionsHandlesContent\r\n from \"../components/navigation/menu/cabinet/toolMenu/toolHandles/SqftOptionsHandlesContent\";\r\nimport workspace from \"../components/canvas/core/workspace\";\r\nimport {closeSQFTPopup} from \"../components/canvas/core/controls/resourseCanas\";\r\nimport React from \"react\";\r\n\r\nexport const getSQFTGroupFromUrl = () => {\r\n return getUrlSQFTHashParam(\"group\")\r\n}\r\n\r\n/**\r\n * Is SQFT in Area Group TYPE\r\n */\r\nexport const getIsSFTAreaGroup = () => {\r\n const isSFTAreaGroupInUrl = getSQFTGroupFromUrl();\r\n const {sqftState} = store.getState();\r\n const {sqftFromFeature} = sqftState;\r\n\r\n return isSFTAreaGroupInUrl || sqftFromFeature && (Object.keys(SQFT_AREA_TYPE_PART_IDS).includes(sqftFromFeature.cartFeature.partId));\r\n}\r\n\r\n/**\r\n * Is SQFT in Cabinets Group TYPE\r\n */\r\nexport const isSFTCabinetsGroup = () => {\r\n const isCabinetGroupInURL = sqftConfig.isCabinetGroupInURL();\r\n const {sqftState} = store.getState();\r\n const {SQFTGroup} = sqftState;\r\n\r\n return isCabinetGroupInURL || SQFTGroup === SQFT_GROUP.cabinets;\r\n}\r\n\r\n/**\r\n * Is SQFT Group Type\r\n */\r\nexport const getSQFTGroup = () => {\r\n const isSFTAreaGroupInUrl = getSQFTGroupFromUrl();\r\n const {sqftState} = store.getState();\r\n const {SQFTGroup} = sqftState;\r\n\r\n if (isSFTAreaGroupInUrl) {\r\n return isSFTAreaGroupInUrl\r\n }\r\n\r\n if (SQFTGroup) {\r\n return SQFTGroup;\r\n }\r\n\r\n return SQFT_GROUP.default\r\n}\r\n\r\nexport const getPartIdsFromMenuOpened = (menuOpened) => {\r\n let partIds = menuOpened ? [menuOpened] : [];\r\n if (menuOpened === SIDEBAR_NAVIGATION_CABINET_BUTTONS.centerIsland) {\r\n partIds = ['countertop'];\r\n } else if (menuOpened === SQFT_APPLIANCES.refrigerator) {\r\n partIds = ['fridge'];\r\n } else if (menuOpened === SQFT_APPLIANCES.stovetop) {\r\n partIds = ['stove'];\r\n } else if (menuOpened === SIDEBAR_NAVIGATION_CABINET_BUTTONS.end_panel) {\r\n partIds = END_CAP_CABINETS_PART_IDS;\r\n } else if (menuOpened === SIDEBAR_NAVIGATION_BUTTONS.end_cap) {\r\n partIds = END_CAP_AREA_PART_IDS;\r\n } else if (menuOpened === SIDEBAR_NAVIGATION_CABINET_BUTTONS.wall) {\r\n partIds = [SQFT_FEATURES.front_wall];\r\n } else if (menuOpened === SIDEBAR_NAVIGATION_CABINET_BUTTONS.handles) {\r\n partIds = [SQFT_FEATURES.top_handle];\r\n }\r\n\r\n return partIds;\r\n};\r\n\r\nexport const getSearchTextFromMenuOpened = (menuOpened) => {\r\n let searchText = \"\";\r\n if (menuOpened === SIDEBAR_NAVIGATION_CABINET_BUTTONS.end_panel) {\r\n searchText = \"\";//'End Panel';\r\n }\r\n return searchText;\r\n};\r\n\r\nexport const getItemClickCallbackForPartId = (partId) => {\r\n let itemClickCallback = new Function();\r\n if (END_CAP_PART_IDS.includes(partId)) {\r\n itemClickCallback = (e, feature) => {\r\n endCapCanvas.setHighlighting(false);\r\n endCapCanvas.setCursorImage();\r\n store.dispatch(setSelectedFeature(feature));\r\n };\r\n } else if (partId === SHAPE_PART_ID.countertop) {\r\n itemClickCallback = (e, feature) => {\r\n store.dispatch(setSelectedCountertop(feature.dbFeature.id));\r\n }\r\n } else if (partId === SHAPE_PART_ID.front_wall) {\r\n itemClickCallback = (e, feature) => {\r\n store.dispatch(setSelectedWall(feature.dbFeature.id));\r\n }\r\n } else if (partId === SQFT_FEATURES.top_handle) {\r\n itemClickCallback = (e, feature) => {\r\n store.dispatch(setSelectedHandle(feature));\r\n store.dispatch(setSQFTPopup(\r\n {\r\n title: workspace.intl.formatMessage({id: \"sqft.popup.title.applyHandlesTo\"}),\r\n content: ,\r\n isOpened: true,\r\n confirmCallback: () => {\r\n const reduxState = store.getState();\r\n const selectedPartIds = reduxState.sqftResourceState.selectedPartIds\r\n const shapes = workspace.getShapesWithoutAttachedResources();\r\n const selectedShapes = shapes.filter(shape => selectedPartIds.includes(shape.partId));\r\n for (const selectedShape of selectedShapes) {\r\n selectedShape.shapeCabinet.deleteAttachedFeatures();\r\n selectedShape.shapeCabinet.generateAttachedFeatures();\r\n }\r\n closeSQFTPopup();\r\n },\r\n confirmText: workspace.intl.formatMessage({id: \"sqft.popup.button.generate\"}),\r\n cancelCallback: closeSQFTPopup,////closePopup,\r\n cancelText: workspace.intl.formatMessage({id: \"sqft.popup.button.cancel\"}),\r\n }\r\n ));\r\n }\r\n }\r\n\r\n return itemClickCallback;\r\n};\r\n","import {connect} from \"react-redux\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport $ from \"jquery\";\r\n\r\nimport {ROUTES} from \"../../../routes\";\r\nimport {getCommonCoords, getFeatureCoords, getLayerCenter, navFeatureCLick} from \"../lookNavigation/lookFunctions\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport {\r\n setLookActiveCategory,\r\n setLookActiveFeature,\r\n setLookDemoPointsClicked,\r\n setLookOpened, setLookPageOpened\r\n} from \"../../../actions/lookFunctions\";\r\nimport store from \"../../../store\";\r\nimport {LOOK_OPENED_TYPES, LOOK_WALLS} from \"../core/constants\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../config\";\r\nimport {addToCart, setCanvasScale, updateCanvasCount} from \"../../../actions/actionFunctions\";\r\nimport {getCartItemObject} from \"../../../misc/helpers\";\r\nimport {\r\n enableRelatedFeature,\r\n getCategoryOnlyUrl,\r\n getFeatureUrl,\r\n hideFeatureSection\r\n} from \"../lookNavigation/lookFunctions2\";\r\nimport {CABINET_GROUP, COUNTERTOP_GROUP, EDGE_GROUP} from \"../../kvComponent/core/constants\";\r\n\r\nexport const doNotZoomPartIds = [\"kitchen_floor\", \"left_wall\", \"right_wall\", \"front_wall\", \"back_wall\",\r\n \"split_wall\", \"left_wall_splitter\", \"bathroom_floor\", \"shower_floor\", \"shower_curb\"];\r\n\r\nexport const shouldZoomPartId = (partId, isMobile) => {\r\n if (!partId) {\r\n return false\r\n }\r\n if (!isMobile && (CABINET_GROUP.includes(partId) || COUNTERTOP_GROUP.includes(partId) || EDGE_GROUP.includes(partId))) {\r\n return false\r\n }\r\n return (!doNotZoomPartIds.includes(partId) || (\r\n partId === \"front_wall\" && document.kvConfig.visualizerType === \"Fireplace\"\r\n ))\r\n}\r\n\r\nexport const shouldZoomToTheBottom = (partId) => {\r\n if (!partId) {\r\n return false\r\n }\r\n return partId === \"kitchen_floor\" || partId === \"bathroom_floor\"\r\n}\r\n\r\nexport const getCorrectedCenter = (center, scale = 1.75, clickedFeature, imageCanvas, isMobile) => {\r\n const {activePreset} = store.getState().bathroomVisualizerState;\r\n if ((clickedFeature.partId === \"shower_fixture\" || clickedFeature.partId === \"crown_molding\")\r\n && imageCanvas.current.pinchZoom.zoomFactor === 1) {\r\n if (activePreset !== 4) {\r\n scale = 1.5;\r\n }\r\n switch (activePreset) {\r\n case 3:\r\n center.y = center.y - 40;\r\n break;\r\n case 6:\r\n center.y = center.y + 40;\r\n break;\r\n default:\r\n break;\r\n }\r\n if (!isMobile) {\r\n $(\"html, body\").animate({scrollTop: 0}, 500);\r\n }\r\n }\r\n return {scale, center}\r\n}\r\n\r\nconst WithZoomToFeature = (props) => {\r\n\r\n const {history, children, imageCanvas, isMobile, setLookActiveCategory, setLookActiveFeature, lookOpened,\r\n setLookOpened, addToCart, qtActiveCategory, setCanvasScale, updateCanvasCount, lookActiveFeature,\r\n setLookDemoPointsClicked, lookPageOpened, setLookPageOpened, lookActiveCategory, lookCompatabilityAlert} = props;\r\n\r\n /**\r\n * Checks if list feature is currently active\r\n * @param partId {string}\r\n * @param zoomToFeature {featureInterface}\r\n * @param zoomToPostion {string}\r\n * @param changeUrl {boolean}\r\n * @param setActiveFeature {boolean}\r\n * @param closeOpenedCategory {boolean}\r\n * @param clickOnFeature {boolean}\r\n * @returns {featureInterface} clickedFeature\r\n */\r\n const zoomToFeatureGroup = (partId,\r\n zoomToFeature,\r\n zoomToPostion,\r\n changeUrl = true,\r\n setActiveFeature = true,\r\n closeOpenedCategory = true,\r\n clickOnFeature = true) => {\r\n let lookUrl = ROUTES.home;\r\n let clickedFeature;\r\n if (partId) {\r\n const layout = getCurrentLayout();\r\n const featureGroup = zoomToFeature ? zoomToFeature.getParent() : layout.getFeatureGroupByPartId(partId);\r\n clickedFeature = zoomToFeature || (featureGroup ? featureGroup.activeFeature : null);\r\n if (featureGroup && featureGroup.layerPositions && !zoomToFeature) {\r\n if (zoomToPostion) {\r\n clickedFeature = featureGroup.getMatchingPositionFeature(zoomToPostion);\r\n if (clickedFeature && !featureGroup.layerPositions[zoomToPostion]) {\r\n featureGroup.layerPositions[zoomToPostion] = clickedFeature;\r\n addToCart([getCartItemObject(clickedFeature, 1, qtActiveCategory)]);\r\n } else if (!clickedFeature) {\r\n clickedFeature = featureGroup.activeFeature || featureGroup.activeNotInVisualizerFeature; // show at least something\r\n }\r\n } else {\r\n Object.keys(featureGroup.layerPositions).forEach((position) => {\r\n if (featureGroup.layerPositions[position] && document.hoveredLayer\r\n && featureGroup.layerPositions[position].layer.zIndex === document.hoveredLayer.zIndex) {\r\n clickedFeature = featureGroup.layerPositions[position];\r\n }\r\n })\r\n }\r\n } else if (featureGroup && !featureGroup.layerPositions && !clickedFeature) {\r\n clickedFeature = featureGroup.activeFeature || featureGroup.activeNotInVisualizerFeature; // show at least something\r\n }\r\n if (clickedFeature) {\r\n console.log('clickedFeature', clickedFeature);\r\n if (clickOnFeature) {\r\n enableRelatedFeature(clickedFeature, addToCart, qtActiveCategory);\r\n navFeatureCLick(clickedFeature); // is needed for context menu vanity type switch\r\n }\r\n // console.log('Coords', clickedFeature.metaData.Coords);\r\n if (setActiveFeature) {\r\n setLookActiveFeature(clickedFeature);\r\n }\r\n featureGroup.featureBeforeChange = clickedFeature;\r\n const featureExistInQuotingTool = layout.partIdExistInQtCategory(partId);\r\n const allowFeatureScreen = featureExistInQuotingTool && !hideFeatureSection(true, partId, clickedFeature, lookCompatabilityAlert);\r\n\r\n if (!IS_PRODUCT_JOURNEY && isMobile && !setActiveFeature) {\r\n lookUrl = getCategoryOnlyUrl(clickedFeature.partId);\r\n setLookActiveCategory(clickedFeature.partId);\r\n } else if (featureExistInQuotingTool && (!IS_PRODUCT_JOURNEY || !lookActiveCategory || closeOpenedCategory)\r\n && (!IS_PRODUCT_JOURNEY || allowFeatureScreen)) {\r\n lookUrl = getFeatureUrl(clickedFeature);\r\n } else {\r\n lookUrl = getFeatureUrl(clickedFeature, true);\r\n setLookActiveCategory(clickedFeature.partId);\r\n }\r\n // if (!isMobile && imageCanvas.current && imageCanvas.current.setHoveredLayer && event) {\r\n // imageCanvas.current.setHoveredLayer(event);\r\n // }\r\n const commonCoords = getFeatureCoords(clickedFeature) || getCommonCoords(featureGroup, clickedFeature, imageCanvas.current.canvas);\r\n const shouldZoomCanvas = imageCanvas.current && imageCanvas.current.pinchZoom && commonCoords && Object.keys(commonCoords).length\r\n && !clickedFeature.notAvailableInVisualizer && shouldZoomPartId(clickedFeature.partId, isMobile);\r\n if (shouldZoomCanvas) {\r\n // const moreZoomFeatureGroups = [\"bathtub_fixture\"];\r\n const {center, scale} = getCorrectedCenter(\r\n getLayerCenter(commonCoords, imageCanvas.current.canvas, isMobile),\r\n null, clickedFeature, imageCanvas, isMobile\r\n );\r\n // const zoomFactor = (moreZoomFeatureGroups.includes(clickedFeature.partId)\r\n // && imageCanvas.current.pinchZoom.zoomFactor === 1 ) ? 3 : null // if null - it will be set in zoom to center func\r\n imageCanvas.current.pinchZoom.zoomToCenter(center, scale, false, allowFeatureScreen);\r\n setCanvasScale(imageCanvas.current.pinchZoom.options.tapZoomFactor);\r\n } else if (shouldZoomToTheBottom(clickedFeature.partId)) {\r\n $(\"html, body\").animate({scrollTop: document.body.scrollHeight}, 500);\r\n }\r\n if (!lookOpened) {\r\n setLookOpened(LOOK_OPENED_TYPES.featureZoom);\r\n setLookDemoPointsClicked(true);\r\n }\r\n if (IS_PRODUCT_JOURNEY && lookPageOpened) {\r\n setLookPageOpened(\"\");\r\n }\r\n }\r\n }\r\n if (changeUrl) {\r\n history.push(lookUrl);\r\n }\r\n return clickedFeature\r\n }\r\n\r\n const zoomToFeatureGroupByFeature = (zoomFeature) => {\r\n const featureGroup = zoomFeature.getParent();\r\n const isEmpty = (!zoomFeature && position) || (featureGroup && featureGroup.disabled);\r\n if (isEmpty) {\r\n if (!lookActiveFeature && position) {\r\n zoomFeature = featureGroup.getMatchingPositionFeature(position);\r\n if (zoomFeature) {\r\n featureGroup.layerPositions[position] = zoomFeature;\r\n }\r\n }\r\n if (zoomFeature) {\r\n featureGroup.activeFeature = zoomFeature;\r\n }\r\n console.log(\"zoomFeature featureGroup\", zoomFeature, featureGroup);\r\n }\r\n const layout = getCurrentLayout();\r\n if (zoomFeature) {\r\n if (!lookActiveFeature) {\r\n const parent = zoomFeature.getParent();\r\n parent.featureBeforeChange = zoomFeature;\r\n }\r\n setLookActiveFeature(zoomFeature);\r\n navFeatureCLick(zoomFeature);\r\n enableRelatedFeature(zoomFeature, addToCart, qtActiveCategory);\r\n\r\n if (isMobile) {\r\n // const closeOnly = zoomFeature && !layout.partIdExistInQtCategory(zoomFeature.partId) && !LOOK_WALLS.includes(zoomFeature.partId);\r\n const closeOnly = zoomFeature && !layout.partIdExistInQtCategory(zoomFeature.partId);\r\n if (closeOnly) {\r\n //history.push(getFeatureUrl(zoomFeature, true));\r\n } else {\r\n setLookActiveCategory(\"\");\r\n //history.push(getFeatureUrl(zoomFeature)); // always go to feature screen on mobile\r\n }\r\n } else {\r\n // history.push(getFeatureUrl(zoomFeature, !!lookActiveCategory))\r\n }\r\n\r\n updateCanvasCount();\r\n if (imageCanvas && imageCanvas.current && imageCanvas.current.pinchZoom && !LOOK_WALLS.includes(zoomFeature.partId)) {\r\n const commonCoords = getFeatureCoords(zoomFeature) || getCommonCoords(featureGroup || zoomFeature.getParent(), zoomFeature, imageCanvas.current.canvas);\r\n const center = getLayerCenter(commonCoords, imageCanvas.current.canvas, isMobile);\r\n const scale = imageCanvas.current.pinchZoom.options.tapZoomFactor;\r\n imageCanvas.current.pinchZoom.zoomToCenter(center, scale, true, layout.partIdExistInQtCategory(zoomFeature.partId));\r\n setCanvasScale(scale)\r\n }\r\n }\r\n }\r\n\r\n return children(zoomToFeatureGroup, zoomToFeatureGroupByFeature)\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookOpened, lookActiveFeature, lookActiveCategory, lookCompatabilityAlert} = store.lookState;\r\n const {isMobile} = store.serverState;\r\n const {qtActiveCategory} = store.qtState;\r\n return {\r\n lookOpened,\r\n lookActiveFeature,\r\n isMobile,\r\n qtActiveCategory,\r\n lookActiveCategory,\r\n lookCompatabilityAlert,\r\n }\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookActiveCategory,\r\n setLookActiveFeature,\r\n setLookOpened,\r\n addToCart,\r\n setCanvasScale,\r\n updateCanvasCount,\r\n setLookDemoPointsClicked,\r\n setLookPageOpened,\r\n};\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(WithZoomToFeature)\r\n)\r\n","import {useHistory, useRouteMatch} from \"react-router-dom\";\r\nimport {hashHistory} from \"react-router\"; // omg pls don't kill me for that\r\n\r\nimport {setWizardActiveItem, setWizardActiveStep, setWizardSelectedValues} from \"../../../actions/wizardFunctions\";\r\nimport store from \"../../../store\";\r\nimport {\r\n getAvailableSteps,\r\n getCurrentGroups,\r\n getDefaultMaterialsWizardItem, getFeatureGroupFromWizardGroup, getWizardGroupFromCurrentSteps, navItemIsExcluded\r\n} from \"../../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\nimport Misc from \"../../../misc/misc\";\r\nimport {ROUTES} from \"../../../routes\";\r\nimport {IS_LIXIL_UI} from \"../../../config\";\r\nimport {\r\n getNextWizardSteps,\r\n isSameVisualizerWizard, selectedWizardGroupIsNotInCurrentStepAnymore\r\n} from \"../../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions2\";\r\nimport {showWizardStepDoneCheckMark} from \"./materialsWizardDoneCheckMark\";\r\n\r\nexport const getNextNotCheckedStep = () => {\r\n\r\n const {wizardState, cartState, quotesState} = store.getState();\r\n const {wizardActiveItem, wizardActiveStep, wizardSelectedValues, wizardAllowSkipDoneSteps} = wizardState;\r\n const {cartItems} = cartState;\r\n const {activeQuoteIndex} = quotesState;\r\n\r\n let nextStep = wizardActiveStep + 1;\r\n\r\n if (!wizardAllowSkipDoneSteps) {\r\n return nextStep // use new logic with skip only first time\r\n }\r\n\r\n // if (!wizardSelectedValues[nextStep]) { // if the next step is free - just go next, otherwise - let's find where to jump\r\n // changeWizardStepRoute(nextStep);\r\n // return\r\n // }\r\n const wizardSteps = getNextWizardSteps(wizardActiveItem, wizardActiveStep, wizardSelectedValues);\r\n while (nextStep <= wizardSteps.length - 1) {\r\n if (!wizardSteps[nextStep]) {\r\n break;\r\n }\r\n const wizardGroup = wizardSteps[nextStep].stepGroups[0];\r\n const featureGroup = getFeatureGroupFromWizardGroup(wizardGroup);\r\n const showDoneCheckMark = showWizardStepDoneCheckMark(wizardSelectedValues[nextStep], featureGroup, cartItems, activeQuoteIndex, wizardSteps[nextStep].stepGroups);\r\n // console.log(\"showDoneCheckMark\", wizardGroup, featureGroup, showDoneCheckMark);\r\n if (!showDoneCheckMark) {\r\n break;\r\n }\r\n // console.log(\"activePartRelatedItemIndex skipped\", activePartRelatedItemIndex);\r\n nextStep = nextStep + 1;\r\n }\r\n return nextStep\r\n}\r\n\r\nconst getSkippedWizardValues = (nextStep, wizardActiveStep, wizardItem, wizardSelectedValues) => {\r\n if (nextStep > wizardActiveStep) {\r\n\r\n const wizardSteps = getAvailableSteps(wizardItem, wizardSelectedValues, true);\r\n wizardSteps.forEach((step, stepIndex) => {\r\n if ((stepIndex < nextStep) && (!wizardSelectedValues[stepIndex]\r\n || selectedWizardGroupIsNotInCurrentStepAnymore(wizardSelectedValues[stepIndex], step.stepGroups))) {\r\n const wizardGroup = step.stepGroups[0];\r\n if (wizardGroup) {\r\n const skippedValue = {\r\n [stepIndex]: {\r\n wizardGroup,\r\n }\r\n }\r\n store.dispatch(setWizardSelectedValues(skippedValue));\r\n wizardSelectedValues = Object.assign(wizardSelectedValues, skippedValue); // this is needed for code below\r\n }\r\n }\r\n });\r\n }\r\n return wizardSelectedValues\r\n}\r\n\r\n/**\r\n * is used for SQFT to prevent bug when advanced quoting is missing selected value\r\n * @param cartItems {[cartItemInterface]}\r\n */\r\nexport const setWizardValuesFromCartItems = (cartItems) => {\r\n const {wizardSelectedValues, wizardActiveItem} = store.getState().wizardState;\r\n if (!wizardActiveItem || !cartItems.length) {\r\n return\r\n }\r\n let shouldUpdate = false;\r\n let wizardValues = Object.assign({}, wizardSelectedValues);\r\n const wizardSteps = getAvailableSteps(wizardActiveItem, wizardSelectedValues, true);\r\n // console.log(\"wizardSteps\", wizardSteps);\r\n // console.log(\"cartItems\", cartItems);\r\n // console.log(\"wizardValues\", wizardValues);\r\n cartItems.forEach((cartItem) => {\r\n if (!cartItem.fromWizardGroupId\r\n || !Number.isInteger(cartItem.fromWizardStep)\r\n || !cartItem.fromWizardId || (cartItem.fromWizardId !== wizardActiveItem.id)\r\n || wizardValues[cartItem.fromWizardStep]) {\r\n return\r\n }\r\n if (wizardSteps[cartItem.fromWizardStep] && wizardSteps[cartItem.fromWizardStep].stepGroups) {\r\n const wizardGroup = wizardSteps[cartItem.fromWizardStep].stepGroups.find(wG => wG.id === cartItem.fromWizardGroupId)\r\n // yes, we added a cart item from the wizard step, we should select it\r\n if (wizardGroup) {\r\n wizardValues[cartItem.fromWizardStep] = {\r\n wizardGroup,\r\n }\r\n if (!navItemIsExcluded({part: cartItem.cartFeature}, wizardGroup)) {\r\n wizardValues[cartItem.fromWizardStep].selectedFeature = cartItem.cartFeature;\r\n wizardValues[cartItem.fromWizardStep].partId = cartItem.partId;\r\n }\r\n shouldUpdate = true;\r\n }\r\n }\r\n });\r\n wizardSteps.forEach(wizardStep => { // here we are checking steps that should be skipped!\r\n // because they are already selected in another similar wizard group\r\n if (!wizardValues[wizardStep.stepIndex]\r\n && wizardStep.stepGroups.length === 1\r\n && wizardStep.stepGroups[0].hidePriceNoCart) {\r\n const similarSelectedWizardStep = Object.keys(wizardValues).find(key => {\r\n return wizardValues[key].wizardGroup\r\n && (wizardValues[key].wizardGroup.groupName === wizardStep.stepGroups[0].groupName)\r\n && (cartItems.some(cartItem => {\r\n return cartItem.fromWizardGroupId === wizardValues[key].wizardGroup.id\r\n && (wizardValues[key].selectedFeature === cartItem.cartFeature) // make 100% sure!\r\n }))\r\n });\r\n if (similarSelectedWizardStep) {\r\n wizardValues[wizardStep.stepIndex] = { // make it selected too\r\n wizardGroup: wizardStep.stepGroups[0], // with it's own wizard group\r\n partId: wizardValues[similarSelectedWizardStep].partId, // but with same values\r\n selectedFeature: wizardValues[similarSelectedWizardStep].selectedFeature, // but with same values\r\n }\r\n if (!shouldUpdate) {\r\n shouldUpdate = true;\r\n }\r\n }\r\n }\r\n })\r\n if (shouldUpdate) {\r\n // console.log(\"shouldUpdate\", wizardValues);\r\n store.dispatch(setWizardSelectedValues(wizardValues, true, wizardActiveItem));\r\n }\r\n}\r\n\r\nexport const switchToWizardItem = (wizardItem, nextStep, quoteIndex, wizardGroupId = null, changeRoute = true) => {\r\n const {quotesState, wizardState} = store.getState();\r\n const {allWizardsValues, wizardActiveStep} = wizardState;\r\n\r\n if (!wizardItem) {\r\n wizardItem = getDefaultMaterialsWizardItem();\r\n }\r\n\r\n let wizardValues = {};\r\n const foundWizardSelectedObject = allWizardsValues.find(wizSelObject => {\r\n return (wizSelObject.quoteIndex === quotesState.activeQuoteIndex) && (wizSelObject.wizardItemId === wizardItem.id)\r\n && isSameVisualizerWizard(wizSelObject)\r\n });\r\n if (foundWizardSelectedObject) {\r\n wizardValues = Object.assign({}, foundWizardSelectedObject.wizardSelectedValues);\r\n wizardValues = getSkippedWizardValues(nextStep, wizardActiveStep, wizardItem, wizardValues);\r\n }\r\n store.dispatch(setWizardActiveItem(wizardItem, quoteIndex));\r\n store.dispatch(setWizardSelectedValues(wizardValues, true, wizardItem));\r\n if (Number.isInteger(nextStep)) {\r\n if (wizardGroupId) {\r\n const {neededStep} = getWizardGroupFromCurrentSteps(wizardItem, wizardValues, wizardGroupId);\r\n if (neededStep && (neededStep.stepIndex !== nextStep)) {\r\n nextStep = neededStep.stepIndex\r\n }\r\n }\r\n store.dispatch(setWizardActiveStep(nextStep));\r\n } else {\r\n nextStep = foundWizardSelectedObject && Number.isInteger(foundWizardSelectedObject.lastVisitedStep)\r\n ? foundWizardSelectedObject.lastVisitedStep // restore last step\r\n : wizardValues ? Object.keys(wizardValues).length : 0 // restore last step (just in case lastVisitedStep is missing)\r\n if (nextStep === 0 && wizardActiveStep !== 0) {\r\n store.dispatch(setWizardActiveStep(0)); // cases when someone changes the wizard\r\n }\r\n }\r\n if (!changeRoute) {\r\n return\r\n }\r\n const urlStepNumber = nextStep + 1; // because we don't want to have 0 in the URL\r\n const nextUrl = \"/materials/\" + Misc.getUrlFromString(wizardItem.name) + \"/\" + urlStepNumber;\r\n const currentHash = window.location.hash.split(\"#\")[1];\r\n if (!currentHash || (currentHash !== nextUrl)) {\r\n hashHistory.push(nextUrl);\r\n }\r\n}\r\n\r\nexport const useChangeWizardStepRoute = () => {\r\n\r\n let history = useHistory();\r\n let routeMatch = useRouteMatch();\r\n // {\r\n // isExact: true,\r\n // params: {partName: 'kitchen-cabinets', subPartName: '1'},\r\n // path: \"/materials/:partName/:subPartName\",\r\n // url: \"/materials/kitchen-cabinets/3/upper-cabinet-boxes\"\r\n // }\r\n // let {partName, subPartName} = routeMatch.params;\r\n let {partName} = routeMatch.params;\r\n\r\n const changeWizardStepRoute = (nextStep, propsWizardItem) => {\r\n\r\n const {wizardActiveItem, wizardActiveStep, wizardList} = store.getState().wizardState;\r\n let {wizardSelectedValues} = store.getState().wizardState;\r\n\r\n const currentWizardItem = propsWizardItem || wizardActiveItem;\r\n\r\n wizardSelectedValues = getSkippedWizardValues(nextStep, wizardActiveStep, currentWizardItem, wizardSelectedValues);\r\n\r\n const currentGroups = getCurrentGroups(currentWizardItem, nextStep, wizardSelectedValues);\r\n\r\n if (wizardActiveStep > -1 && !currentGroups.length) { // wizard finished! congratulations\r\n const currentWizardIndex = wizardList.findIndex(wizardItem => wizardItem.id === currentWizardItem.id);\r\n\r\n if (nextStep === -1 && wizardActiveStep === 0) { // go to the previous wizard\r\n const prevEnabledWizard = wizardList.find((wizardItem, wizardItemIndex) => {\r\n return (wizardItem.id !== currentWizardItem.id) && (wizardItemIndex < currentWizardIndex)\r\n });\r\n if (prevEnabledWizard) {\r\n switchToWizardItem(prevEnabledWizard);\r\n } else {\r\n history.push(ROUTES.quoteDesign);\r\n }\r\n return;\r\n }\r\n\r\n const nextEnabledWizard = wizardList.find((wizardItem, wizardItemIndex) => {\r\n return (wizardItem.id !== currentWizardItem.id) && (wizardItemIndex > currentWizardIndex)\r\n });\r\n if (nextEnabledWizard) {\r\n switchToWizardItem(nextEnabledWizard);\r\n } else {\r\n history.push(ROUTES.shoppingcart);\r\n }\r\n return;\r\n }\r\n\r\n // console.log(\"nextStep\", nextStep);\r\n store.dispatch(setWizardActiveStep(nextStep));\r\n\r\n if (IS_LIXIL_UI) {\r\n return; // no need to change url\r\n }\r\n\r\n // console.log(\"subPartName\", subPartName);\r\n // console.log(\"partName\", partName);\r\n // console.log(\"history\", history);\r\n\r\n if (!partName) {\r\n partName = Misc.getUrlFromString(currentWizardItem.name)\r\n }\r\n\r\n const wizardGroup = currentGroups[0];\r\n if (!wizardGroup) {\r\n console.info(\"no wizard group found, something is wrong with the wizard\", );\r\n return\r\n }\r\n const stepUrl = Misc.getUrlFromString(wizardGroup.customDisplayName || wizardGroup.groupName || \"\");\r\n\r\n const urlStepNumber = nextStep + 1; // because we don't want to have 0 in the URL\r\n history.push(\"/materials/\" + partName + \"/\" + urlStepNumber + (stepUrl ? \"/\" + stepUrl : \"\"));\r\n }\r\n\r\n return {changeWizardStepRoute}\r\n}\r\n","import {baseNewImagesPath} from \"../assets\";\r\n\r\nexport const iconPlusGreen = `${baseNewImagesPath}images/sqft-icons/cursors/plus_green.png`;\r\nexport const iconPlusBlack = `${baseNewImagesPath}images/sqft-icons/cursors/plus_black.png`;\r\nexport const iconPlusBlue = `${baseNewImagesPath}images/sqft-icons/cursors/plus_blue.png`;\r\nexport const iconplusPurple = `${baseNewImagesPath}images/sqft-icons/cursors/plus_purple.png`;\r\nexport const objectFlipVertical = `${baseNewImagesPath}images/sqft-icons/cursors/object_flip_vertical.png`;\r\nexport const objectFlipHorizontal = `${baseNewImagesPath}images/sqft-icons/cursors/object_flip_horizontal.png`;\r\nexport const iconGreenPlus32 = `${baseNewImagesPath}images/sqft-icons/icon-green-plus-32.png`;\r\nexport const iconGreenClip = `${baseNewImagesPath}images/greenclip.svg`;\r\nexport const iconHeight = `${baseNewImagesPath}images/sqft-icons/icon-height.svg`;\r\nexport const iconLength = `${baseNewImagesPath}images/sqft-icons/icon-length.svg`;\r\nexport const iconLink = `${baseNewImagesPath}images/sqft-icons/icon-link.svg`;\r\nexport const iconThickness = `${baseNewImagesPath}images/sqft-icons/icon-thickness.svg`;\r\nexport const iconEyeball = `${baseNewImagesPath}images/sqft-icons/icon-eyeball.svg`;\r\nexport const iconCursorPointer = `${baseNewImagesPath}images/sqft-icons/cursors/pointer.svg`;\r\nexport const iconLibrary = `${baseNewImagesPath}images/sqft-icons/icon-length.svg`;\r\nexport const iconUpload = `${baseNewImagesPath}images/sqft-icons/icon-upload.svg`;\r\nexport const iconImage = `${baseNewImagesPath}images/sqft-icons/icon-image.svg`;\r\n\r\n","import * as types from \"./actionTypes\";\r\n\r\nexport const showSlabTool = (isShowSlabTool) => ({\r\n type: types.SHOW_SLAB_TOOL,\r\n payload: {isShowSlabTool}\r\n});\r\n\r\nexport const setActiveSlabId = (activeSlabId) => ({\r\n type: types.SET_ACTIVE_SLAB_ID,\r\n payload: {activeSlabId}\r\n});\r\n\r\nexport const setActiveSlabUrl = (activeSlabUrl) => ({\r\n type: types.SET_ACTIVE_SLAB_URL,\r\n payload: {activeSlabUrl}\r\n});\r\n\r\nexport const setActiveStep = (activeStep) => ({\r\n type: types.SET_SQFT_SLAB_ACTIVE_STEP,\r\n payload: {activeStep}\r\n});\r\n\r\nexport const setSlabSearchText = (searchText) => ({\r\n type: types.SET_SQFT_SLAB_SEARCH_TEXT,\r\n payload: {searchText}\r\n});\r\n\r\nexport const setSlabAspectRatio = (slabAspectRatio) => ({\r\n type: types.SET_SQFT_SLAB_ASPECT_RATIO,\r\n payload: {slabAspectRatio}\r\n});\r\n\r\nexport const setSlabImageType = (slabImageType) => ({\r\n type: types.SET_SLAB_IMAGE_TYPE,\r\n payload: {slabImageType}\r\n});\r\n\r\nexport const setSlabImageWidth = (slabImageWidth) => ({\r\n type: types.SET_SQFT_SLAB_IMAGE_WIDTH,\r\n payload: {slabImageWidth}\r\n});\r\n\r\nexport const setSlabImageHeight = (slabImageHeight) => ({\r\n type: types.SET_SQFT_SLAB_IMAGE_HEIGHT,\r\n payload: {slabImageHeight}\r\n});\r\n\r\nexport const setCropperData = (cropperData) => ({\r\n type: types.SET_SQFT_SLAB_CROPPER_DATA,\r\n payload: {cropperData}\r\n});\r\n\r\nexport const setSqftCroppedSlabImages = (croppedSlabImages) => ({\r\n type: types.SET_SQFT_CROPPED_SLAB_IMAGES,\r\n payload: {croppedSlabImages}\r\n});\r\n\r\nexport const addSqftCroppedSlabImage = (croppedSlabImage) => ({\r\n type: types.ADD_SQFT_CROPPED_SLAB_IMAGE,\r\n payload: croppedSlabImage\r\n});\r\n\r\nexport const setSqftSlabToolVisited = (isSlabToolVisited) => ({\r\n type: types.SET_SLAB_TOOL_VISITED,\r\n payload: {isSlabToolVisited}\r\n});\r\n\r\nexport const addRoomWithVisitedSlabTool = (qtCatName) => ({\r\n type: types.ADD_ROOM_WITH_VISITED_SLAB_TOOL,\r\n payload: qtCatName\r\n});\r\n\r\nexport const deleteCroppedSlabImage = (id) => ({\r\n type: types.DELETE_CROPPED_SLAB_IMAGE,\r\n payload: {id}\r\n});\r\n\r\nexport const setPricePerArea = (pricePerArea) => ({\r\n type: types.SET_PRICE_PER_AREA,\r\n payload: {pricePerArea}\r\n});\r\n\r\nexport const setMeasurementVisibleInSlabMode = (isMeasurementVisibleInSlabMode) => ({\r\n type: types.SET_IS_MEASUREMENT_VISIBLE_IN_SLAB_MODE,\r\n payload: {isMeasurementVisibleInSlabMode}\r\n});\r\n\r\nexport const setIsSizeValidationFailed = (isSizeValidationFailed) => ({\r\n type: types.SET_IS_SIZE_VALIDATION_FAILED,\r\n payload: {isSizeValidationFailed}\r\n});\r\n\r\nexport const setIsSlabPricingEnabled = (isSlabPricingEnabled) => ({\r\n type: types.SET_IS_SLAB_PRICING_ENABLED,\r\n payload: {isSlabPricingEnabled}\r\n});\r\n","import {\r\n getPriceWithCurrency,\r\n getQuotePriceWithDiscounts,\r\n getTotalPrice, sortByOrder,\r\n toFixedPrice\r\n} from \"../../misc/helpers\";\r\nimport {DISCOUNT_MAIN_TYPES, DISCOUNT_SECTION_TYPES, DISCOUNT_TYPES} from \"./discounstInterface\";\r\nimport {PMT} from \"../../misc/excelFunctions\";\r\nimport {getPercentage} from \"../../misc/misc2\";\r\n\r\nexport const getSubTotalPrice = (discountSections, discountSection, discount, withoutCurrent = false, customAddedDiscounts = []) => {\r\n const totalPrice = getTotalPrice(null, false);\r\n\r\n const allDiscounts = sortByOrder(getDiscountsForSection(discountSection, customAddedDiscounts));\r\n let ignoreDiscounts = allDiscounts.filter(currentDiscount => {\r\n if (!shouldCalculateDiscount(currentDiscount)) {\r\n return false\r\n }\r\n return withoutCurrent\r\n ? currentDiscount.order >= discount.order\r\n : currentDiscount.order > discount.order\r\n });\r\n discountSections.forEach(disSection => {\r\n if (disSection.order > discountSection.order) {\r\n ignoreDiscounts = [...ignoreDiscounts, ...disSection.discounts] // ignore other sections\r\n }\r\n });\r\n customAddedDiscounts.forEach(customDiscount => {\r\n const section = discountSections.find(sec => sec.id === customDiscount.categoryId);\r\n if (!section) {\r\n return\r\n }\r\n if (section.order > discountSection.order) {\r\n ignoreDiscounts = [...ignoreDiscounts, customDiscount] // ignore other custom discounts\r\n }\r\n });\r\n\r\n const grandTotal = getQuotePriceWithDiscounts(totalPrice, ignoreDiscounts);\r\n return toFixedPrice(grandTotal);\r\n};\r\n\r\nexport const getDiscountsForSection = (discountSection, customAddedDiscounts) => {\r\n const customDiscounts = customAddedDiscounts.filter(dis => {\r\n return dis.selected && (dis.categoryId === discountSection.id)\r\n })\r\n return [...discountSection.discounts, ...customDiscounts];\r\n}\r\n\r\nexport const calculateCellValue = ({discountSections, financePercentage, fabricatorSettings}, numberOfMonths = 0, finalPrice = 0) => {\r\n if (!numberOfMonths || !finalPrice) {\r\n return \"N/A\"\r\n }\r\n const fixedDeposit = getCustomDepositAmount(discountSections, finalPrice) || 0;\r\n const rate = financePercentage / 100 / 12; // Converts the annual interest rate into a monthly rate by dividing it by 12\r\n const nper = numberOfMonths; // The number of months in the repayment term\r\n const pv = -(finalPrice - fixedDeposit); // The present value (loan amount to be repaid). This is the negative of:\r\n // finalPrice - Today's final price of the good.\r\n // fixedDeposit - A $1000 deposit applied to the total loan amount.\r\n\r\n // const cellValue = pv * rate / (1 - Math.pow((1 + rate), -nper)); // this works fine, but the func below returns the same\r\n const cellValue = PMT(rate, nper, pv);\r\n\r\n return getPriceWithCurrency(fabricatorSettings, cellValue, null, false, true)\r\n}\r\n\r\nexport const getNextCustomDiscountOrder = (fromDiscount) => {\r\n return +(fromDiscount.order + 0.01).toFixed(2)\r\n}\r\n\r\nexport const getFilteredSections = (discountSections) => {\r\n return discountSections.filter(section => {\r\n return section.type !== DISCOUNT_SECTION_TYPES.finance\r\n })\r\n}\r\n\r\nexport const isSaveOnlyDiscount = (discount) => {\r\n return discount.discountType === DISCOUNT_MAIN_TYPES.finance || discount.discountType === DISCOUNT_MAIN_TYPES.deposit\r\n}\r\n\r\nexport const shouldDisplayDiscount = (discount) => {\r\n return discount.selected && !isSaveOnlyDiscount(discount)\r\n}\r\n\r\nexport const shouldCalculateDiscount = (discount) => {\r\n if (discount.isRidged) {\r\n const approveOptions = discount.approveOptions ? JSON.parse(discount.approveOptions) : null;\r\n if (approveOptions && approveOptions.options && approveOptions.options.length && !approveOptions.selectedOption) {\r\n return false\r\n }\r\n }\r\n return shouldDisplayDiscount(discount) && !discount.isSubTotal\r\n}\r\n\r\nexport const getDepositDiscount = (discountSections) => {\r\n let depositDiscount = null;\r\n discountSections.forEach(discountSection => {\r\n discountSection.discounts.forEach(discount => {\r\n if (discount.discountType === DISCOUNT_MAIN_TYPES.deposit) {\r\n depositDiscount = discount;\r\n }\r\n })\r\n });\r\n return depositDiscount\r\n}\r\n\r\n/**\r\n *\r\n * @param discountSections {array}\r\n * @param grandTotal {number}\r\n * @returns {string|number}\r\n */\r\nexport const getCustomDepositAmount = (discountSections, grandTotal = 0) => {\r\n const depositDiscount = getDepositDiscount(discountSections);\r\n if (!depositDiscount) {\r\n return null\r\n }\r\n if (depositDiscount.type === DISCOUNT_TYPES.price) {\r\n return depositDiscount.amount\r\n }\r\n const priceTaken = getPercentage(grandTotal, depositDiscount.amount) // for ex. 25% from 2700 = 625\r\n return toFixedPrice(Math.trunc(priceTaken * 100) / 100);\r\n}\r\n\r\nexport const getDepositAmount = (discountSections, grandTotal, fabricatorData) => {\r\n const customDeposit = getCustomDepositAmount(discountSections, grandTotal);\r\n if (customDeposit !== null) {\r\n return customDeposit\r\n }\r\n return fabricatorData.settings.deposit\r\n ? Math.floor((grandTotal * (fabricatorData.settings.deposit / 100)) * 100) / 100\r\n : 0\r\n}\r\n\r\nexport const getPriceWorkSheetSaveValues = (priceWorksheetState) => {\r\n const selectedDiscounts = [];\r\n priceWorksheetState.discountSections.forEach(disSection => {\r\n if (disSection.type === DISCOUNT_SECTION_TYPES.finance) {\r\n return\r\n }\r\n disSection.discounts.forEach(discount => {\r\n if (discount.selected) {\r\n selectedDiscounts.push(Object.assign({}, discount, {\r\n categoryId: disSection.id,\r\n }));\r\n }\r\n })\r\n })\r\n return {\r\n selectedDiscounts,\r\n financePercentage: priceWorksheetState.financePercentage,\r\n customAddedDiscounts: priceWorksheetState.customAddedDiscounts, // save as is for now\r\n }\r\n}\r\n","import orderBy from \"lodash/orderBy\";\r\nimport {Part} from \"../part\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {cabinetThumbnail} from \"../assets\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\n\r\nimport BottomCabinet from \"../subparts/cabinet/bottomCabinet\";\r\nimport TopCabinet from \"../subparts/cabinet/topCabinet\";\r\nimport CrownMolding from \"../subparts/cabinet/crownMolding\";\r\nimport TopHandle from \"../subparts/cabinet/topHandle\";\r\nimport BottomHandle from \"../subparts/cabinet/bottomHandle\";\r\nimport TopCabinetShadow from \"../subparts/cabinet/topCabinetShadow\";\r\nimport BottomCabinetShadow from \"../subparts/cabinet/bottomCabinetShadow\";\r\n\r\nexport default class Cabinet extends Part {\r\n static id = 'Cabinet';\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'Cabinet';\r\n this.partThumbnail = cabinetThumbnail;\r\n this.partThumbnailSize = \"70%\";\r\n this.translateId = \"visualizer.kitchen.cabinet\";\r\n\r\n // related items\r\n this.topCabinet = null;\r\n this.bottomCabinet = null;\r\n this.crownMolding = null;\r\n this.topHandle = null;\r\n this.bottomHandle = null;\r\n this.topCabinetShadow = null;\r\n this.bottomCabinetShadow = null;\r\n }\r\n\r\n load(dbFeature) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Bottom Cabinet\":\r\n relatedItemName = \"bottomCabinet\";\r\n RelatedItemClass = BottomCabinet;\r\n break;\r\n case \"Top Cabinet\":\r\n relatedItemName = \"topCabinet\";\r\n RelatedItemClass = TopCabinet;\r\n break;\r\n case \"Crown Molding\":\r\n relatedItemName = \"crownMolding\";\r\n RelatedItemClass = CrownMolding;\r\n // if (dbFeature.metaData && dbFeature.metaData[\"Parts\"]) {\r\n // relatedItemName = \"crownMolding\";\r\n // RelatedItemClass = CrownMolding;\r\n // }\r\n break;\r\n case \"Top Handle\":\r\n relatedItemName = \"topHandle\";\r\n RelatedItemClass = TopHandle;\r\n break;\r\n case \"Bottom Handle\":\r\n relatedItemName = \"bottomHandle\";\r\n RelatedItemClass = BottomHandle;\r\n break;\r\n case \"Top Cabinet Shadow\":\r\n relatedItemName = \"topCabinetShadow\";\r\n RelatedItemClass = TopCabinetShadow;\r\n break;\r\n case \"Bottom Cabinet Shadow\":\r\n relatedItemName = \"bottomCabinetShadow\";\r\n RelatedItemClass = BottomCabinetShadow;\r\n break;\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].load(dbFeature);\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n navigationItem() {\r\n return new DesignNavigationItem('Cabinet', this);\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false;\r\n }\r\n\r\n getRelatedItems() {\r\n return orderBy(this.relatedItems, 'layerPriority');\r\n }\r\n\r\n subParts(withHidden = true, hideWithoutFeatures = false) {\r\n return this.getRelatedItems()\r\n .filter(item => this.filterRelatedItem(item, withHidden))\r\n .filter(item => {\r\n if ((item.partId === \"crown_molding\" || item.partId === \"top_handle\") && hideWithoutFeatures && item.allFeaturesReceived) {\r\n return item.navigationSubItems({}, \"\").length\r\n }\r\n return item\r\n })\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n handleSubPartClick() {\r\n\r\n }\r\n\r\n getTopCabinetType() {\r\n if (this.topCabinet && this.topCabinet.activeFeature) {\r\n if (this.topCabinet.activeFeature.dbFeature.metaData[\"Cabinet\"]) {\r\n return this.topCabinet.activeFeature.dbFeature.metaData[\"Cabinet\"][0]\r\n } else {\r\n // console.log(\"no topCabinet metaData!\", this.topCabinet.activeFeature);\r\n return \"\"\r\n }\r\n }\r\n return \"\"\r\n }\r\n\r\n // getTopCabinetLayout() {\r\n //\r\n // if (this.topCabinet && this.topCabinet.activeFeature) {\r\n // if (this.topCabinet.activeFeature.dbFeature.metaData[\"Cabinet\"]) {\r\n // return this.topCabinet.activeFeature.dbFeature.metaData[\"Cabinet\"][0]\r\n // } else {\r\n // // console.log(\"no topCabinet metaData!\", this.topCabinet.activeFeature);\r\n // return \"\"\r\n // }\r\n // }\r\n // return \"ALL\"\r\n // }\r\n\r\n getBottomCabinetType() {\r\n if (this.bottomCabinet && this.bottomCabinet.activeFeature) {\r\n if (this.bottomCabinet.activeFeature.dbFeature.metaData[\"Cabinet\"]) {\r\n return this.bottomCabinet.activeFeature.dbFeature.metaData[\"Cabinet\"][0]\r\n } else {\r\n // console.log(\"no bottomCabinet metaData!\", this.bottomCabinet.activeFeature);\r\n return \"\"\r\n }\r\n }\r\n return \"\"\r\n }\r\n\r\n getTopCabinetApplianceType() {\r\n if (this.topCabinet && this.topCabinet.activeFeature) {\r\n if (this.topCabinet.activeFeature.dbFeature.metaData[\"Appliance\"]) {\r\n return this.topCabinet.activeFeature.dbFeature.metaData[\"Appliance\"][0]\r\n } else {\r\n // console.log(\"no Appliance metaData!\", this.topCabinet.activeFeature);\r\n return \"Hood\"\r\n }\r\n }\r\n return \"Hood\"\r\n }\r\n\r\n getTopCabinetShadowLayout() {\r\n if (this.topCabinet && this.topCabinet.activeFeature && this.topCabinet.activeFeature.dbFeature.metaData[\"CabinetLayout\"]) {\r\n return this.topCabinet.activeFeature.dbFeature.metaData[\"CabinetLayout\"][0]\r\n }\r\n return \"\"\r\n }\r\n\r\n getBottomCabinetApplianceType() {\r\n if (this.bottomCabinet && this.bottomCabinet.activeFeature) {\r\n if (this.bottomCabinet.activeFeature.dbFeature.metaData[\"Appliance\"]) {\r\n return this.bottomCabinet.activeFeature.dbFeature.metaData[\"Appliance\"][0]\r\n } else {\r\n // console.log(\"no Appliance metaData!\", this.bottomCabinet.activeFeature);\r\n return \"Range\"\r\n }\r\n }\r\n return \"Range\"\r\n }\r\n\r\n}\r\n","import $ from 'jquery';\r\nimport Config, {\r\n getCommonVisualizerType,\r\n IS_LIXIL_SERVERS, IS_OFFLINE_MODE,\r\n USE_SERVER_CACHING\r\n} from \"../config\";\r\nimport {toBoolean} from \"../misc/utils\";\r\nimport {getCurrentLayout} from '../bvcomponents/appLayout';\r\nimport store from \"../store\";\r\nimport AxiosInstance from \"./axiosInstance\";\r\nimport {renderErrorPopup} from \"./api-popups\";\r\nimport {HOST_NAME} from \"./api\";\r\nimport {fixFeaturesResponse} from \"../misc/backendFunctions\";\r\n\r\n//Axios.defaults.headers.get['Content-Type'] = 'application/json';\r\n\r\nif (!String.prototype.endsWith) {\r\n Object.defineProperty(String.prototype, 'endsWith', {\r\n value: function(searchString, position) {\r\n var subjectString = this.toString();\r\n if (position === undefined || position > subjectString.length) {\r\n position = subjectString.length;\r\n }\r\n position -= searchString.length;\r\n var lastIndex = subjectString.indexOf(searchString, position);\r\n return lastIndex !== -1 && lastIndex === position;\r\n }\r\n });\r\n}\r\n\r\nconst serverConfig = document.kvConfig;\r\nconst __hideFeatures = toBoolean(serverConfig.hide) ? 1 : 0;\r\n\r\nfunction _get(url, axiosController, headers) {\r\n return axiosController ? AxiosInstance.get(url, {\r\n signal: axiosController.signal\r\n }) : AxiosInstance.get(url, headers ? {headers} : undefined)\r\n}\r\n\r\nfunction _post(url, data, headers = null) {\r\n return AxiosInstance.post(url, data, headers ? {headers} : {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n 'x-antiforgery-token': $('input[name=__RequestVerificationToken]').val()\r\n }\r\n });\r\n}\r\n\r\nlet __urlBase = null;\r\n\r\nfunction _getUrlBase() {\r\n if (__urlBase) return __urlBase;\r\n let {subDomain} = document.kvConfig;\r\n // let {domain} = document.kvConfig;\r\n // domain = domain || 'quotesflooring.com';\r\n subDomain = subDomain ? subDomain + '.' : '';\r\n __urlBase = subDomain + HOST_NAME;\r\n return __urlBase;\r\n}\r\n\r\nfunction _urlBase() {\r\n return serverConfig.type === 'Fabricator' ? _getUrlBase() + '/Job/QuickQuote/' + serverConfig.userId : '.';\r\n}\r\n\r\nconst addUrlMode = (baseUrl, visualizerType = \"\") => {\r\n const visType = getCommonVisualizerType(visualizerType);\r\n if (IS_LIXIL_SERVERS && (document.kvConfig.visualizerType === \"bvLook\")) { // temporarily, until the backend is fixed\r\n return baseUrl\r\n }\r\n return baseUrl + (baseUrl.includes(\"?\") ? \"&\" : \"?\") + `mode=${visType}`\r\n}\r\n\r\nconst hardcodeResponsesFolder = () => {\r\n if (document.kvConfig.visualizerType === \"bvLook\") {\r\n return \"node/responses/lixil\"\r\n }\r\n return \"node/responses\"\r\n}\r\n\r\nexport default class JsonApi {\r\n static allAvailableStones(jobId, type) {\r\n jobId = jobId || 0;\r\n type = type || 'Fabricator';\r\n return _get(`${_getUrlBase()}/api/Public/${serverConfig.userId}/AvailableStones?jobId=${jobId}&type=${type}&loadStoneFilters=true`);\r\n // return _get(`${_getUrlBase()}/Job/QuickQuote/${serverConfig.userId}/AvailableStones?jobId=${jobId}&type=${type}`);\r\n }\r\n\r\n static getNewQuoteData(jobId, type) {\r\n jobId = jobId || 0;\r\n type = type || 'Fabricator';\r\n // let url = `${_getUrlBase()}/Job/QuickQuote/${serverConfig.userId}/GetNewQuoteData?jobId=${jobId}&type=${type}&hide=${__hideFeatures}`;\r\n let url = `${_getUrlBase()}/api/Public/${serverConfig.userId}/GetNewQuoteData?jobId=${jobId}&type=${type}&hide=${__hideFeatures}`;\r\n if (Config.isMobile()) {\r\n url += '&w=150';\r\n }\r\n return _get(url);\r\n }\r\n\r\n static getMenuNavigation (forTool) {\r\n if (document.kvConfig.noInternetMode) {\r\n return Promise.resolve({data: []})\r\n }\r\n const url = forTool\r\n ? `${_getUrlBase()}/api/PublicFabricatorVisualizerNavigation/List?FabricatorId=${serverConfig.userId}&forTool=${forTool}`\r\n : `${_getUrlBase()}/api/PublicFabricatorVisualizerNavigation/List?FabricatorId=${serverConfig.userId}`\r\n return _get(url);\r\n }\r\n\r\n static userLogin(data) {\r\n if(document.kvConfig.kioskMode) {\r\n var response = this.saveUserKiosk(data);\r\n return Promise.resolve(response);\r\n } else {\r\n return _post(_getUrlBase() + \"/api/Public/LoginClient\", data);\r\n }\r\n // return _post(_urlBase() + \"/LoginClient\", {email: email, password: password});\r\n }\r\n\r\n static userRegister(data) {\r\n if(document.kvConfig.kioskMode) {\r\n var response = this.saveUserKiosk(data);\r\n return Promise.resolve(response);\r\n } else {\r\n return _post(`${_getUrlBase()}/api/Public/RegisterClient`, data);\r\n }\r\n // return _post(_urlBase() + \"/RegisterClient\", data);\r\n }\r\n\r\n static saveQuote(data) {\r\n if(document.kvConfig.kioskMode) {\r\n const state = store.getState();\r\n const {serverState, userState} = state;\r\n const userInfo = userState.userInfo;\r\n return this.saveQuoteKiosk(JSON.stringify({\r\n subDomain: document.kvConfig.subDomain,\r\n encodedUserId: userInfo.encodedUserId,\r\n quoteData: JSON.stringify(data),\r\n id: serverState.jobId\r\n }));\r\n } else {\r\n return _post(_getUrlBase() + \"/api/Public/SaveQuote\", data);\r\n }\r\n // return _post(_urlBase() + \"/SaveMultiQuickQuote\", data);\r\n }\r\n\r\n static submitPayment(data) {\r\n return _post(_getUrlBase() + \"/api/Public/SubmitPayment\", data);\r\n }\r\n\r\n // email must be post-fixed by the /, see here\r\n // https://stackoverflow.com/questions/13298542/apicontroller-returns-404-when-id-contains-period\r\n // the accepted answer\r\n static resetUserPassword(email, language) {\r\n return _post(_getUrlBase() + '/api/Public/SendResetPassword', {\r\n email,\r\n language,\r\n fabricatorId: document.kvConfig.userId,\r\n });\r\n }\r\n\r\n static scheduleCustomer(data) {\r\n if(document.kvConfig.kioskMode) {\r\n return this.saveSchedule(JSON.stringify({\r\n subDomain: document.kvConfig.subDomain,\r\n json: JSON.stringify(data)\r\n }));\r\n } else {\r\n return _post(_getUrlBase() + \"/api/Public/Schedule\", data);\r\n }\r\n }\r\n\r\n static getJobData(jobId) {\r\n return _get(_urlBase() + \"/GetJobDataById?jobId=\" + jobId);\r\n }\r\n\r\n static getBVJobData(jobId, editToken) {\r\n return _get(_getUrlBase() + '/api/Public/getBvJobData/' + jobId + (editToken ? \"?editToken=\" + editToken : \"\"))\r\n }\r\n\r\n static getEmployees() {\r\n if(document.kvConfig.kioskMode) {\r\n return Promise.resolve(this.getKioskApiResponse(document.kvConfig.userId, `/api/Public/getEmployees/${+document.kvConfig.userId}`));\r\n } else {\r\n return _get(`${_getUrlBase()}/api/Public/getEmployees/${+document.kvConfig.userId}`);\r\n }\r\n }\r\n\r\n static generateAuthenticationToken() {\r\n const userState = store.getState().userState;\r\n const {userInfo} = userState;\r\n if (userInfo && userInfo.phoneNumber && userInfo.phoneNumber.indexOf(\"555-555-5555\") === -1) {\r\n return _get(_getUrlBase() + \"/api/TwoFactorAuthentication/GenerateAuthenticationRequest?encodedCustomerId=\" + encodeURIComponent(userState.encodedUserId));\r\n } else if(userInfo && userInfo.phoneNumber && userInfo.phoneNumber.indexOf('555-555-5555') !== -1) {\r\n return Promise.resolve(\"93eacff8-d2cf-488b-b10d-12c81dd806e2\");\r\n } else {\r\n return Promise.reject();\r\n }\r\n }\r\n\r\n static sendAuthenticationRequest(token, to, type) {\r\n if(token !== \"93eacff8-d2cf-488b-b10d-12c81dd806e2\")\r\n return _post(_getUrlBase() + \"/api/TwoFactorAuthentication/SendAuthenticationRequest\", {token, to, type});\r\n else\r\n return Promise.resolve(true);\r\n }\r\n\r\n static validateAuthenticationRequest(token, code, phoneNumber) {\r\n const userState = store.getState().userState;\r\n if(token === \"93eacff8-d2cf-488b-b10d-12c81dd806e2\") {\r\n return Promise.resolve({data: code === \"568127\"});\r\n } else {\r\n return _post(_getUrlBase() + \"/api/TwoFactorAuthentication/ValidateAuthenticationRequest\", {token, code, phoneNumber, encodedCustomerId: userState.encodedUserId});\r\n }\r\n }\r\n\r\n static postDisplayRoom(bvState) {\r\n return _post(`${_getUrlBase()}/api/public/saveDefaults/${+document.kvConfig.userId}/client/bathroomvisualizer`, [bvState]);\r\n }\r\n\r\n static getDisplayRoom() {\r\n return _get(`${_getUrlBase()}/api/public/getDefaults/${+document.kvConfig.userId}/client/bathroomvisualizer`);\r\n }\r\n\r\n static resendActivationEmail(email) {\r\n return _post(`${_getUrlBase()}/api/public/resendActivationEmail`,\r\n {email, fabricatorId: +document.kvConfig.userId});\r\n }\r\n\r\n static async getBathroomVisualizerData(featuresCount, forVisualizerType) {\r\n const visualizerType = forVisualizerType || document.kvConfig.visualizerType;\r\n if (document.kvConfig.noInternetMode) {\r\n const featuresResponse = await _get(hardcodeResponsesFolder() + \"/mainVisualizerResponseFeatures.json\");\r\n let allResponse = await _get(hardcodeResponsesFolder() + \"/mainVisualizerResponse.json\");\r\n allResponse.data.features = featuresResponse.data;\r\n return allResponse\r\n }\r\n let localUrl = addUrlMode(`/api/public/bvdata/${+document.kvConfig.userId}`, visualizerType);\r\n let remoteUrl = visualizerType === \"bvLook\"\r\n ? addUrlMode(`/api/public/bvdata/${+document.kvConfig.userId}${(featuresCount ? \"?featuresPerGroup=\"+featuresCount : \"\")}`, visualizerType)\r\n : addUrlMode(`/api/public/bvdata/${+document.kvConfig.userId}${(featuresCount ? \"/\"+featuresCount : \"\")}`, visualizerType)\r\n return document.kvConfig.kioskMode\r\n ? this.getKioskApiResponse(document.kvConfig.userId, localUrl)\r\n : _get(`${_getUrlBase()}${remoteUrl}`);\r\n }\r\n\r\n static getBathroomVisualizerFeatures(arrayOfIds, arrayOfSkus, requestSharedFeatureNames = false, visualizerType) {\r\n if (document.kvConfig.noInternetMode || IS_OFFLINE_MODE) { // no need to receive features, we already received 50k, all of them\r\n return Promise.resolve({data: []})\r\n }\r\n const baseUrl = addUrlMode(`${_getUrlBase()}/api/public/bvdata/${+document.kvConfig.userId}/features`, visualizerType);\r\n return _post(baseUrl, arrayOfSkus\r\n ? requestSharedFeatureNames ? {sharedFeatureNames: arrayOfSkus} : {skus: arrayOfSkus}\r\n : {Ids: arrayOfIds});\r\n }\r\n\r\n static getBathroomVisualizerGroups(visualizerType) {\r\n if (document.kvConfig.noInternetMode) {\r\n return _get(hardcodeResponsesFolder() + \"/featureGroupsCounts.json\")\r\n }\r\n const localUrl = addUrlMode(`/api/public/bvdata/${+document.kvConfig.userId}/groups`, visualizerType);\r\n return document.kvConfig.kioskMode\r\n ? this.getKioskApiResponse(document.kvConfig.userId, localUrl)\r\n : _get(`${_getUrlBase()}${localUrl}`);\r\n }\r\n\r\n static fixGroupName(groupName) {\r\n return groupName.trim().replace(/\\//g,\"%23%23\").replace(/ /g,\"%20\").replace(/&/g,\"%26\");\r\n }\r\n\r\n static async getBathroomVisualizerGroupFeatures(groupName,\r\n page = 0,\r\n pageSize = 1000,\r\n filterValues = [],\r\n searchText = \"\",\r\n layoutAbbreviation = \"\",\r\n axiosController,\r\n requestOldFeatures = false,\r\n visualizerType = document.kvConfig.visualizerType) {\r\n if (IS_OFFLINE_MODE) {\r\n return Promise.resolve({data: []})\r\n }\r\n pageSize = (groupName === \"EX L\") ? 1500 : pageSize;\r\n const fixedGroupName = JsonApi.fixGroupName(groupName);\r\n const layout = getCurrentLayout();\r\n\r\n let localUrl = layout.isNewLayout && (visualizerType === \"kvScene\" && !IS_LIXIL_SERVERS)\r\n ? `/api/public/bvdataR/${+document.kvConfig.userId}/features/${fixedGroupName}`\r\n : `/api/public/bvdata/${+document.kvConfig.userId}/features/${fixedGroupName}`;\r\n\r\n let requestUrl = `${_getUrlBase()}${localUrl}/${page}/${pageSize}/`;\r\n\r\n const searchGroupName = layout.isNewLayout && groupName.includes(\" Crop\") ? groupName.replace(\" Crop\", \"\") : groupName;\r\n const featureGroup = layout.getFeatureGroupByGroupName(searchGroupName);\r\n\r\n if (USE_SERVER_CACHING && (visualizerType === \"KV\" || visualizerType === \"Kitchen\")\r\n || (!requestOldFeatures && featureGroup && featureGroup.nextFeaturesPageToLoadArray)) {\r\n let layoutName = layoutAbbreviation || `${layout.getCurrentLayoutAbbreviation()}/`;\r\n if (layout.isNewLayout) {\r\n layoutName = layoutName.replace(\"Layout\", \"\");\r\n }\r\n requestUrl += layoutName; // should go before filters\r\n }\r\n\r\n requestUrl = addUrlMode(requestUrl, visualizerType);\r\n\r\n if (filterValues.length) {\r\n filterValues.forEach((filterValue) => {\r\n requestUrl += (requestUrl.includes(\"?\") ? \"&\" : \"?\") + \"filterId=\" + filterValue;\r\n });\r\n }\r\n if (searchText) {\r\n requestUrl += (requestUrl.includes(\"?\") ? \"&\" : \"?\") + \"filter=\" + searchText\r\n }\r\n\r\n const fabricatorSettings = store.getState().fabricatorState.settings;\r\n if (fabricatorSettings.leadCapture) {\r\n requestUrl += (requestUrl.includes(\"?\") ? \"&\" : \"?\") + \"sortBy=unlocked\";\r\n }\r\n if (requestOldFeatures) {\r\n const oldVersion = getCommonVisualizerType(visualizerType) === \"kitchen\" ? \"kv4\" : \"bv4\";\r\n requestUrl += (requestUrl.includes(\"?\") ? \"&\" : \"?\") + \"toolVersion=\" + oldVersion; // should go before filters\r\n }\r\n\r\n const response = document.kvConfig.kioskMode\r\n ? await this.getKioskApiResponse(document.kvConfig.userId, localUrl, {filterValues, searchText, page, pageSize, type: \"features\" })\r\n : await _get(requestUrl, axiosController)\r\n if (Config.isDevMode()) {\r\n console.log(requestUrl + \" response\", response);\r\n }\r\n if (!response || !response.data || response.data.error) {\r\n renderErrorPopup(response.data.error);\r\n return []\r\n }\r\n return fixFeaturesResponse(response.data)\r\n }\r\n\r\n static getBathroomVisualizerGroupFilterValues(groupName = \"\", filterId = null, withStoneFilters = true) {\r\n if (document.kvConfig.noInternetMode) { // no need to receive features, we already received 50k, all of them\r\n return Promise.resolve({data: []})\r\n }\r\n const fixedGroupName = JsonApi.fixGroupName(groupName);\r\n var localUrl = `/api/public/bvdata/${+document.kvConfig.userId}/filters/${fixedGroupName}/`;\r\n var featureLocal = `/api/public/bvdata/${+document.kvConfig.userId}/features/${fixedGroupName}`;\r\n // const layout = getCurrentLayout();\r\n if (USE_SERVER_CACHING) {\r\n localUrl += `ALL/`;\r\n }\r\n localUrl = addUrlMode(localUrl);\r\n featureLocal = addUrlMode(featureLocal);\r\n let requestUrl = `${_getUrlBase()}${localUrl}`;\r\n if (filterId) {\r\n requestUrl = requestUrl + filterId\r\n }\r\n if (!withStoneFilters) {\r\n requestUrl = requestUrl + (requestUrl.includes(\"?\") ? \"&\" : \"?\") + \"stoneFilters=false\";\r\n }\r\n\r\n if(document.kvConfig.kioskMode) {\r\n return this.getKioskApiResponse(document.kvConfig.userId, localUrl, {type: 'filters', filterId, featureLocal});\r\n } else {\r\n return _get(requestUrl);\r\n }\r\n }\r\n\r\n static getQtCategories(layoutName, forVisualizerType) {\r\n if (document.kvConfig.noInternetMode) {\r\n return _get(hardcodeResponsesFolder() + \"/featureGroupCategories.json\")\r\n }\r\n const featuresPerGroupAmount = window.location.href.includes(\"cutting_edge_countertops\")\r\n || (document.kvConfig.userId === 138452) ? 200 : 50;\r\n const visualizerType = getCommonVisualizerType(forVisualizerType);\r\n // return _get(`${_getUrlBase()}/api/public/featureGroupCategories/${+document.kvConfig.userId}/${visualizerType}/?featuresPerGroup=${featuresPerGroupAmount}&mode=${visualizerType}&layout=${layoutName}`);\r\n\r\n const layout = getCurrentLayout(forVisualizerType);\r\n const localUrl = layout.isNewLayout\r\n ? `/api/public/featureGroupCategoriesLite/${+document.kvConfig.userId}/${visualizerType}/`\r\n : `/api/public/featureGroupCategories/${+document.kvConfig.userId}/${visualizerType}/?featuresPerGroup=${featuresPerGroupAmount}&mode=${visualizerType}&layout=${layoutName}`;\r\n return document.kvConfig.kioskMode\r\n ? this.getKioskApiResponse(document.kvConfig.userId, localUrl)\r\n : _get(`${_getUrlBase()}${localUrl}`);\r\n }\r\n\r\n static saveQuoteFast(data) {\r\n if(document.kvConfig.kioskMode) {\r\n return Promise.resolve(this.getKioskData(\"quickSave\", JSON.stringify({\r\n id: data.jobId,\r\n saveData: data.data\r\n })));\r\n }\r\n else {\r\n return _post(`${_getUrlBase()}/api/public/SaveQuoteFast`, data);\r\n }\r\n }\r\n\r\n static contractSign(data) {\r\n return _post(`${_getUrlBase()}/api/public/replace-and-sign`, data);\r\n }\r\n\r\n static getDocumentForJob(jobId, forceNew = false) {\r\n return _post(`${_getUrlBase()}/api/public/document-for-job/${jobId}/${forceNew}`, {});\r\n }\r\n\r\n static getContractDocuments(fabricatorId = document.kvConfig.userId) {\r\n return _get(`${_getUrlBase()}/api/document-signing/documents/${fabricatorId}`);\r\n }\r\n\r\n static getDocumentForFabricator(fabricatorId = document.kvConfig.userId) {\r\n if (document.kvConfig.noInternetMode) {\r\n return _get(hardcodeResponsesFolder() + \"/documentsForFabricator.json\")\r\n }\r\n return _post(`${_getUrlBase()}/api/public/document-for-fab/${fabricatorId}/`);\r\n }\r\n\r\n static getFabricatorSubscriptions(fabricatorId) {\r\n if (document.kvConfig.noInternetMode) {\r\n return _get(hardcodeResponsesFolder() + \"/fabricatorSubscriptions.json\")\r\n }\r\n const localUrl = `/api/public/GetFabricatorSubscriptionInfo/${fabricatorId}`;\r\n return document.kvConfig.kioskMode\r\n ? this.getKioskApiResponse(fabricatorId, localUrl)\r\n : _get(`${_getUrlBase()}${localUrl}`);\r\n }\r\n\r\n static getFabricatorDiscounts(fabricatorId) {\r\n if (document.kvConfig.noInternetMode) {\r\n return _get(hardcodeResponsesFolder() + \"/fabricatorDiscounts.json\")\r\n }\r\n return _get(`${_getUrlBase()}/api/public/fabricator-discounts/${fabricatorId}`);\r\n }\r\n\r\n static async getKioskApiResponse(fabricatorId, localUrl, otherData = null) {\r\n let data = {\r\n fabricatorId,\r\n localUrl,\r\n additionalInfo: {...otherData}\r\n };\r\n return this.getKioskData(\"getJson\", data);\r\n }\r\n\r\n static async getKioskData(type, data) {\r\n var kioskData = await this.getRawKioskData(type, data);\r\n if(typeof(kioskData) == \"string\") {\r\n kioskData = JSON.parse(kioskData);\r\n }\r\n return {data: kioskData};\r\n }\r\n\r\n static getRawKioskData(type, data) {\r\n var kioskData = KioskApp.PostMessage({\r\n type,\r\n data\r\n });\r\n return kioskData;\r\n }\r\n\r\n static saveQuoteKiosk(data) { return this.getKioskData('saveQuote', data); }\r\n static saveUserKiosk(data) { return this.getKioskData('saveUser', data); }\r\n static saveSchedule(data) { return this.getKioskData('schedule', data); }\r\n\r\n static getCustomersAndEmployees(fabricatorId = document.kvConfig.userId) {\r\n if (document.kvConfig.noInternetMode) {\r\n return _get(hardcodeResponsesFolder() + \"/customersAndEmployees.json\")\r\n }\r\n return _get(`${_getUrlBase()}/api/public/fabricator-customer-employees/${fabricatorId}/`);\r\n }\r\n\r\n static getCustomerById(customerId) {\r\n return _get(`${_getUrlBase()}/api/public/getCustomerData/${customerId}?format=json`);\r\n }\r\n static copySqftImages(fabricatorId, postData) {\r\n return _post(`${_getUrlBase()}/api/public/copySqftImages/${fabricatorId}/`, postData);\r\n }\r\n static getPassedUserInfo(userData) {\r\n return _post(`${_getUrlBase()}/api/public/EncSSOLoginClient/`, userData);\r\n }\r\n static postSaveVisualizerImage(fabricatorId, postData) {\r\n return _post(`${_getUrlBase()}/api/public/saveVisualizerImage/${fabricatorId}`, postData);\r\n }\r\n static postSaveTempData(postData, id = \"\", expiresIn = \"\") {\r\n let postString = `${_getUrlBase()}/api/public/saveTempData`;\r\n if (id) {\r\n postString+= `/${id}`;\r\n }\r\n if (expiresIn) {\r\n postString+= `/${expiresIn}`;\r\n }\r\n return _post(postString, {\"data\": postData});\r\n }\r\n static getSaveTempData(id = \"\") {\r\n return _get(`${_getUrlBase()}/api/public/getTempData/${id}`);\r\n }\r\n static postSureTax(postData, fabricatorId = document.kvConfig.userId) {\r\n return _post(`${_getUrlBase()}/api/public/postSureTaxRequest/${fabricatorId}`, postData);\r\n }\r\n static postVerifyAddress(postData) {\r\n return _post(`${_getUrlBase()}/api/public/verifyAddress`, postData);\r\n }\r\n static getTrumbleShippingOptions(skuList, zipCode) {\r\n return _get(`${_getUrlBase()}/api/public/getTrumbleShippingOptions/${skuList}/${zipCode}`);\r\n }\r\n static postTrumbleShippingOptions(postData, zipCode) {\r\n return _post(`${_getUrlBase()}/api/public/trumbleShippingOptions/${zipCode}`, postData);\r\n }\r\n static postTrumbleInventory(postData) {\r\n return _post(`${_getUrlBase()}/api/public/trumbullInventory`, postData);\r\n }\r\n static postShipperHqShipping(postData) {\r\n return _post(`${_getUrlBase()}/api/public/shipperHqShipping`, postData);\r\n }\r\n static getFilterGroups(fabricatorId = document.kvConfig.userId) {\r\n return _get(`${_getUrlBase()}/api/public/filterGroups/${fabricatorId}`);\r\n }\r\n static getMarkUpForFeatures(featuresArray) {\r\n return _post(`${_getUrlBase()}/api/markup/get-features/`, featuresArray);\r\n }\r\n static loginAdmin(data) {\r\n return _post(`${_getUrlBase()}/api/admin-edit/token`, data);\r\n }\r\n static postEditFeatures(data, headers) {\r\n return _post(`${_getUrlBase()}/api/admin-edit/${document.kvConfig.userId}/update-features`, data, headers);\r\n }\r\n static setShipToAddress(data, headers) {\r\n return _post(`${_getUrlBase()}/api/public/setShipToAddress`, data, headers);\r\n }\r\n static getShipToAddress(headers) {\r\n return _get(`${_getUrlBase()}/api/public/getShipToAddress/${document.kvConfig.jobId}`, null, headers);\r\n }\r\n}\r\n","//INITIAL FLOW\r\nimport * as types from \"./actionTypes\";\r\n\r\nexport const setEmployeesList = (employeesList) => ({\r\n type: types.SET_EMPLOYEES_LIST,\r\n payload: {employeesList}\r\n});\r\n\r\nexport const setAlreadyRegisteredUserInfo = (alreadyRegisteredUserInfo) => ({\r\n type: types.SET_ALREADY_REGISTERED_USER,\r\n payload: {alreadyRegisteredUserInfo}\r\n});\r\n\r\nexport const setLeadCaptureClickCount = (leadCaptureClickCount) => ({\r\n type: types.SET_LEAD_CAPTURE_CLICK_COUNT,\r\n payload: {leadCaptureClickCount}\r\n});\r\n\r\nexport const setUserPopupContent = (userPopupContent) => ({\r\n type: types.SET_USER_POPUP_CONTENT,\r\n payload: {userPopupContent}\r\n});\r\n\r\nexport const setUserTwoFa = (userTwoFa) => ({\r\n type: types.SET_USER_TWO_FA,\r\n payload: {userTwoFa}\r\n});\r\n\r\nexport const setUserOptIn = (optIn) => ({\r\n type: types.SET_USER_OPT_IN,\r\n payload: {optIn}\r\n});\r\n","import {PartMenuType} from \"../../visComponents/constants\";\r\nimport {iCmp} from \"../../../misc/utils\";\r\nimport Layer from \"../../visComponents/layer\";\r\nimport {LayoutType, METADATA} from \"./constants\";\r\nimport PartCommon from \"../../visComponents/partCommon\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\n\r\nexport class Part extends PartCommon {\r\n\r\n constructor(isParent, isChild, menuType) {\r\n super();\r\n if (isChild || (isParent && menuType === PartMenuType.Simple)) {\r\n this.featuresList = {};\r\n this.featuresPartsList = {};\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this.featuresList[layoutName] = [];\r\n this.featuresPartsList[layoutName] = [];\r\n });\r\n this.allFeaturesReceived = false;\r\n this.realFeaturesReceived = false; // this prop is need on Scroll (if features count more that 1000)\r\n this.nextFeaturesPageToLoad = 0;\r\n this.activeFeature = null;\r\n this.placeholderFeature = null;\r\n this.placeholderChanged = false;\r\n this.firstClick = {\r\n \"0\": false\r\n };\r\n this.activeLockedFeature = null;\r\n this.activeNotInVisualizerFeature = null; // is needed to display in the QT selected activeNotInVisualizerFeature, but render proper activeFeature layer(for example, countertop)\r\n // name = \"\";\r\n this.visible = true;\r\n this.categoryEnabled = false;\r\n this.layout = null;\r\n this.featureGroupVisible = true; // dashboard's feature group eye ball logic\r\n this.featureGroupEnabled = true; // dashboard's feature group checkbox logic\r\n this.selectedFeaturesHistory = []; // array of strings(names). updated every time item is selected\r\n this.filtersReceived = null; // array of filters values, comes from BE, for ex [1221, 347, 1124]\r\n this.confirmedChange = false; // same as firstClick, but fires after someone changes feature and confirms changes\r\n this.featureBeforeChange = null; // feature that sets when menu is opened (to revert it back if user didn't confirm change)\r\n }\r\n if (isParent) {\r\n this.partThumbnail = '';\r\n this.relatedItems = [];\r\n }\r\n if (!isChild && !isParent) {\r\n this.dbFeature = null;\r\n this.layer = new Layer(\"bv\");\r\n this._customDisplayName = null;\r\n this.notesList = {};\r\n }\r\n this.partName = \"\";\r\n }\r\n\r\n set features(featuresList) {\r\n // features can't be set directly, we need to change featuresList array\r\n }\r\n get features() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.featuresList[layout.getCurrentLayoutName()]\r\n }\r\n set featuresParts(featuresList) {\r\n // featuresParts can't be set directly, we need to change featuresPartsList array\r\n }\r\n get featuresParts() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.featuresPartsList[layout.getCurrentLayoutName()]\r\n }\r\n\r\n /**\r\n * Checks whether a given for condition matches the needed value (or array of values)\r\n * @param name {string}\r\n * @param value {string || array}\r\n * @returns {boolean}\r\n */\r\n matchesMetaForCondition(name, value) {\r\n if (name === \"WaterLevel\" && this.partId === \"vanity_faucet\") {\r\n return this.metaData[\"Height\"] && this.metaData[\"Height\"] > value\r\n }\r\n if (name === \"SinkWidth\" && this.partId === \"vanity_sink\") {\r\n // if no metadata - return true! back compatability\r\n return !this.metaData[\"SinkWidth\"] || (this.metaData[\"SinkWidth\"] < value)// current sink should be smaller than Vanity\r\n }\r\n if (name === \"MountLevel\" && this.partId === \"vanity_sink\"\r\n && (!Array.isArray(this.metaData[\"MountType\"]) || !this.metaData[\"MountType\"].includes(\"V\"))) {\r\n // sinks without the MountType V should ignore MountLevel metaData, they should be checked my MountType only\r\n return true\r\n }\r\n if (!this.metaData[name]) {\r\n return false\r\n }\r\n if (Array.isArray(this.metaData[name])) {\r\n return this.metaData[name].some(condValue => {\r\n return condValue === METADATA.ALL || (Array.isArray(value) ? value.some(val => iCmp(condValue, val)) : iCmp(condValue, value))\r\n });\r\n }\r\n return this.metaData[name] === METADATA.ALL\r\n || (Array.isArray(value) ? value.some(val => iCmp(this.metaData[name], val)) : iCmp(this.metaData[name], value))\r\n }\r\n\r\n matchesMetaForArrayOfConditions(arrayOfConditions) {\r\n return arrayOfConditions.every((condition) => {\r\n return this.matchesMetaForCondition(condition.propName, condition.propValue);\r\n })\r\n }\r\n\r\n navigationItem() {\r\n return new DesignNavigationItem(this.partName, this)\r\n }\r\n}\r\n\r\n\r\n","import {baseNewImagesPath} from \"../../assets\";\r\n\r\nexport const applianceThumbnail = `${baseNewImagesPath}images/kv-icons/kv-filter-icons-stove.svg`;\r\nexport const cabinetThumbnail = `${baseNewImagesPath}images/kv-icons/top_cabinet.svg`;\r\nexport const centerIslandThumbnail = `${baseNewImagesPath}images/kv-icons/center_island_countertop.svg`;\r\nexport const countertopGroupThumbnail = `${baseNewImagesPath}images/kv-icons/vanity-countertop.svg`;\r\nexport const wallsThumbnail = `${baseNewImagesPath}images/bv_icons_new/Icons_Wall.svg`;\r\nexport const floorThumbnail = `${baseNewImagesPath}images/bv_icons_new/Icons_Floor.svg`;\r\n\r\nexport const largeLayoutShadow = `${baseNewImagesPath}images/bv-assets/KV-All-Global-Shadow-Placeholder_L_1620x1080.png`;\r\nexport const SmallLayoutShadow = `${baseNewImagesPath}images/bv-assets/KV-All-Global-Shadow-Placeholder_S_1620x1080.png`;\r\n\r\n/*layouts*/\r\nexport const LayoutThumbnails = {\r\n Small: `${baseNewImagesPath}images/kv-layout-thumbnails/S.png`,\r\n SmallWithPopout: `${baseNewImagesPath}images/kv-layout-thumbnails/SP.png`,\r\n SmallWithPeninsula: `${baseNewImagesPath}images/kv-layout-thumbnails/SN.png`,\r\n SmallWithIsland: `${baseNewImagesPath}images/kv-layout-thumbnails/SI.png`,\r\n SmallWithPopoutWithPeninsula: `${baseNewImagesPath}images/kv-layout-thumbnails/SPN.png`,\r\n SmallWithPopoutWithIsland: `${baseNewImagesPath}images/kv-layout-thumbnails/SPI.png`,\r\n SmallWithPeninsulaWithIsland: `${baseNewImagesPath}images/kv-layout-thumbnails/SNI.png`,\r\n SmallWithPopoutWithPeninsulaWithIsland: `${baseNewImagesPath}images/kv-layout-thumbnails/SPNI.png`,\r\n LShape: `${baseNewImagesPath}images/kv-layout-thumbnails/L.png`,\r\n LShapeWithPeninsula: `${baseNewImagesPath}images/kv-layout-thumbnails/LN.png`,\r\n LShapeWithIsland: `${baseNewImagesPath}images/kv-layout-thumbnails/LI.png`,\r\n LShapeWithPeninsulaWithIsland: `${baseNewImagesPath}images/kv-layout-thumbnails/LNI.png`,\r\n};\r\n","import EventManager from \"../../store/sqftEventManager\";\r\nimport workspace from \"../workspace\";\r\nimport config from \"../../store/sqftConfig\";\r\nimport store from \"./../../../../../../store\";\r\nimport {\r\n deleteChangeValuePopup,\r\n setSQFTActiveButton, setSQFTActiveLevel3Button, setSQFTActiveSubMenuButton, setSQFTContextMenu,\r\n setSQFTMenuOpened,\r\n setSQFTMenuOpenedLock, setSQFTSystemDeleteMessage\r\n} from \"../../../../../../actions/sqftMenuFunctions\";\r\nimport {\r\n SIDEBAR_SHAPE_BUTTONS,\r\n SIDEBAR_NAVIGATION_BUTTONS,\r\n SIDEBAR_NAVIGATION_CABINET_BUTTONS,\r\n SIDEBAR_SLAB_BUTTONS, SHAPE_PART_ID, FREE_FORM_THICKNESS_POPUP_ID,\r\n} from \"../../../../constants\";\r\nimport {getMousePositionOnField} from \"../../../../helpers/sqftHelper\";\r\nimport TextBox from \"./textBox\";\r\nimport sqftEventManager from \"../../store/sqftEventManager\";\r\nimport sqftConfig from \"../../store/sqftConfig\";\r\nimport {clearRotateAngles} from \"../../store/canvasHelper\";\r\nimport {updateSQFTCalculations} from \"../../../../../../actions/sqftFunctions\";\r\nimport FreeDraw from \"../controls/freeDraw\";\r\nimport Duplicate from \"../controls/duplicate\";\r\nimport sqftShape from \"../shapes/sqftShape\";\r\nimport MovableImage from \"../shapes/movableImage\";\r\nimport sqftShapeManager from \"../../store/sqftShapeManager\";\r\nimport workspaceControllers from \"../../store/workspaceControllers\";\r\nimport MiteredController from \"../controls/mitered\";\r\nimport {showFilters} from \"../../../../../../actions/actionFunctions\";\r\nimport {setGroheFiltersSearchText} from \"../../../../../../actions/groheFunctions\";\r\nimport toolsControllers from \"../../store/toolsControllers\";\r\n\r\nconst WorkspaceEvents = function() {\r\n let self = this;\r\n this.workspace_onClick = (mousePos) => {\r\n let tookAction = false;\r\n const state = store.getState();\r\n const activeButton = state.sqftMenuState.activeButton;\r\n const isShowSlabTool = state.sqftSlabState.isShowSlabTool;\r\n const isWallsLockMode = state.sqftMenuState.isWallsLockMode;\r\n const isITextEditing = state.sqftMenuState.isITextEditing;\r\n //const shapes = workspace.getShapes();\r\n const shape = workspace.getHoverShape();\r\n const bumpoutLine = workspace.getHoverBumpout();\r\n const textBoxes = workspace.textBoxManager.getTextBoxes();\r\n let cursor = EventManager.getCursor();\r\n\r\n if (activeButton === SIDEBAR_SHAPE_BUTTONS.freeDraw\r\n && !workspace.getHoverPoint()\r\n ) {\r\n FreeDraw.initDraw(isWallsLockMode);\r\n FreeDraw.drawShape(mousePos);\r\n return false;\r\n } else if (activeButton === SIDEBAR_SHAPE_BUTTONS.shapeFreeForm\r\n && !workspace.getHoverPoint()\r\n ) {\r\n toolsControllers.shapeFreeForm.initDraw(isWallsLockMode);\r\n toolsControllers.shapeFreeForm.drawShape(mousePos);\r\n return false;\r\n }\r\n\r\n if (workspaceControllers.spacer.isJustCreated) {\r\n workspaceControllers.spacer.setIsJustCreated(false);\r\n return false;\r\n }\r\n\r\n if (shape || workspace.getLineWithMovingBumpout()) {\r\n const sideOpened = state.sqftMenuState.menuOpened;\r\n\r\n if (!sideOpened\r\n && !isShowSlabTool\r\n && activeButton !== \"move\"\r\n && activeButton !== \"label\"\r\n && activeButton !== \"rotate\"\r\n && activeButton !== \"angle\"\r\n && activeButton !== \"freeDraw\"\r\n && activeButton !== \"resize\"\r\n && activeButton !== \"waterfall\"\r\n && cursor && (cursor[0] === \"move\" || cursor[0] === \"grab\")\r\n ) {\r\n store.dispatch(setSQFTMenuOpened(\"move\"));\r\n store.dispatch(setSQFTActiveButton(\"move\"));\r\n resetEvents();\r\n config.workspace.menuItemActive = \"move\";\r\n //this.sideBarButtonClick(nodes.sidebar.mainNavButton, !config.highlight.rotateAngle);\r\n }\r\n store.dispatch(setSQFTMenuOpenedLock(true));\r\n } else {\r\n //1) close opened menus\r\n // todo sqft-react\r\n // this.hideSidebarSide();\r\n // this.hideSideBarContent();\r\n this.hideAngleTooltip();\r\n //2) remove active class from main button\r\n\r\n // todo sqft-react\r\n //this.removeActiveClassFromMainButton()\r\n //nodes.sidebar.mainNavButton.classList.remove(classes.buttonActiveClass);\r\n }\r\n\r\n if (activeButton) { //if (config.workspace.menuItemActive) {\r\n //tookAction = true;\r\n let resetCursor = false;\r\n if (shape) {\r\n let line;\r\n switch(activeButton) { // switch(config.workspace.menuItemActive) {\r\n case \"delete\":\r\n //todo priority\r\n if (textBoxes.length > 0) {\r\n for (let textBox of textBoxes) {\r\n if (textBox.box.mixin.movable.state.hovering) {\r\n //box.delete();\r\n return;\r\n }\r\n }\r\n }\r\n if (shape.type === \"appliances\") {\r\n workspace.removeShape(shape);\r\n } else if (shape.type === \"slabImage\" || shape.partId === SHAPE_PART_ID.slabPlaceHolder) {\r\n workspace.updateRemovedFeatures(shape);\r\n workspace.removeSlabImage(shape);\r\n } else {\r\n const line = shape.getHoverSegment() || shape.getHoverSegmentOutlineCorner();\r\n const point = shape.getHoverPointOnClick(mousePos);\r\n const cornerLine = shape.getHoverSegmentCorner();\r\n const miteredPoint = shape.getHoverMiteredPoint();\r\n const label = shape.getHoverLabel();\r\n\r\n if (cornerLine) {\r\n if (cornerLine.getAttachedItems()) {\r\n cornerLine.deleteAttachedItem();\r\n } else {\r\n cornerLine.line.to.removeAttachedItem();\r\n }\r\n } else if (point && (point.getArcLength() || point.getAngle() || point.getMiteredFeatureId())) {\r\n point.removeAttachedItem();\r\n tookAction = false;\r\n } else if (miteredPoint && line) {\r\n line.miteredOverlay.deletePoint(miteredPoint);\r\n line.miteredOverlay.resetHoveredPoint();\r\n } else if (line && line.getAttachedItems()) {\r\n //workspace.removeShape(line.getAttachedShape());\r\n line.deleteAttachedItem();\r\n } else if (label) {\r\n const lineWithTheLabel = label.getParent();\r\n lineWithTheLabel.labelOverlay.destroy();\r\n lineWithTheLabel.labelOverlay = null;\r\n } else if (!isShowSlabTool) {\r\n // shapeToDelete = shape;\r\n // self.callConfirmPopup(mousePos);\r\n store.dispatch(setSQFTSystemDeleteMessage({isOpened: true, shape: shape}));\r\n tookAction = false;\r\n } else {\r\n tookAction = false;\r\n }\r\n }\r\n //config.controls.delete.removeClass(config.activeClass);\r\n //nodes.designPatterns.delete.removeClass(config.activeClass);\r\n break;\r\n case \"flip-h\":\r\n shape.flip(shape.FlipDirection.HORIZONTAL);\r\n config.controls.flipH.removeClass(config.activeClass);\r\n resetCursor = true;\r\n break;\r\n case \"flip-v\":\r\n shape.flip(shape.FlipDirection.VERTICAL);\r\n config.controls.flipV.removeClass(config.activeClass);\r\n resetCursor = true;\r\n break;\r\n case \"rotate-right\":\r\n // rotate v1 disabled\r\n // shape.rotate(90, shape.Direction.RIGHT);\r\n //config.controls.rotateRight.removeClass(config.activeClass);\r\n //nodes.designPatterns.rotateRight.removeClass(config.activeClass);\r\n break;\r\n case \"rotate-left\":\r\n // activated from activeButton\r\n //shape.rotate(90, shape.Direction.LEFT);\r\n\r\n //config.controls.rotateLeft.removeClass(config.activeClass);\r\n //nodes.designPatterns.rotateLeft.removeClass(config.activeClass);\r\n break;\r\n case SIDEBAR_NAVIGATION_BUTTONS.label:\r\n EventManager.stealCursor(true);\r\n EventManager.resetCursor(self);\r\n\r\n if (store.getState().sqftMenuState.contextMenu.isOpened) {\r\n store.dispatch(setSQFTContextMenu({isOpened: false}));\r\n }\r\n store.dispatch(setSQFTContextMenu({isOpened: true, activeMenu: \"labels\", pos: mousePos, parent: shape}));\r\n tookAction = false;\r\n\r\n break;\r\n default:\r\n tookAction = false;\r\n break;\r\n }\r\n switch(activeButton) {\r\n case SIDEBAR_SLAB_BUTTONS.rotate:\r\n //rotate in slab and regular mode\r\n //rotate v2\r\n //shape.rotate(90, shape.Direction.LEFT, isShowSlabTool);\r\n //todo shape rotation with bumpout disabled\r\n if (sqftShapeManager.canShapeBeRotated(shape)) {\r\n if (!shape.getIsRotatable()) {\r\n sqftShapeManager.closeRotatablePopups(shape);\r\n sqftShapeManager.setShapeAsRotatable(shape);\r\n sqftShapeManager.rotateShapeTo90Deg(shape);\r\n } else {\r\n sqftShapeManager.disableRotatableState(shape);\r\n }\r\n }\r\n tookAction = false;\r\n break;\r\n case SIDEBAR_NAVIGATION_BUTTONS.duplicate:\r\n if (shape instanceof sqftShape && !isShowSlabTool\r\n || shape instanceof sqftShape && shape.partId === SHAPE_PART_ID.slabPlaceHolder\r\n ) {\r\n Duplicate.cloneShape(shape);\r\n } else if (shape instanceof MovableImage) {\r\n Duplicate.cloneMovableImage(shape);\r\n }\r\n\r\n tookAction = false;\r\n\r\n break;\r\n case SIDEBAR_NAVIGATION_CABINET_BUTTONS.crown:\r\n //crown molding displayed as edges and backsplashes\r\n //shape.addCrownMolding();\r\n break\r\n case SIDEBAR_NAVIGATION_CABINET_BUTTONS.end_panel:\r\n case SIDEBAR_NAVIGATION_BUTTONS.end_cap:\r\n //crown molding displayed as edges and backsplashes\r\n //shape.addCrownMolding();\r\n break;\r\n case SIDEBAR_NAVIGATION_CABINET_BUTTONS.spacer:\r\n //line = shape.getHoverSegment(true);\r\n line = workspace.getHoveredLine();\r\n if (line) {\r\n workspaceControllers.spacer.createSpacer(line.from, line.to, shape.getPosition());\r\n line.resetState();\r\n shape.resetState();\r\n tookAction = false // see QCDES-4731 we need to call mouseUp on each shape\r\n }\r\n //store.dispatch(setSQFTActiveButton(SIDEBAR_NAVIGATION_CABINET_BUTTONS.spacer));\r\n //store.dispatch(setSQFTMenuOpened(false));\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n } else if (bumpoutLine) {\r\n switch(activeButton) {\r\n case \"delete\":\r\n //workspace.removeShape(bumpoutLine.getAttachedShape());\r\n bumpoutLine.deleteAttachedItem();\r\n tookAction = false;\r\n break;\r\n default:\r\n break;\r\n }\r\n } else {\r\n if (activeButton === \"rotate-left\") {\r\n //EventManager.stealCursor(true);\r\n //EventManager.setCursor(\"rotate-left\", self, true);\r\n } else if (activeButton === \"delete\") {\r\n EventManager.stealCursor(true);\r\n EventManager.setCursor(\"delete\", self, true);\r\n } else if (activeButton === SIDEBAR_NAVIGATION_BUTTONS.text) {\r\n if (!workspace.textBoxManager.isBoxActive()\r\n && !isITextEditing\r\n ) {\r\n let pos = getMousePositionOnField(mousePos.x, mousePos.y);\r\n let textBox = new TextBox(pos);\r\n textBox.init();\r\n\r\n console.log(config.workspace.menuItemActive);\r\n\r\n //this.navButtonClick(nodes.sidebar.navButtons[0]); // change icon\r\n config.workspace.menuItemActive = null; // reset action\r\n }\r\n }\r\n tookAction = false;\r\n resetCursor = false;\r\n //$('#design-default').click();\r\n }\r\n const state = store.getState();\r\n const updateCalculations = state.sqftState.updateCalculations;\r\n store.dispatch(updateSQFTCalculations(updateCalculations + 1));\r\n if (resetCursor) {\r\n EventManager.resetCursor(self);\r\n config.workspace.menuItemActive = null;\r\n }\r\n }\r\n\r\n return tookAction;\r\n };\r\n\r\n this.init = () => {\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_UP,\r\n self.workspace_onClick,\r\n self,\r\n EventManager.priorities.OVERALL\r\n );\r\n };\r\n\r\n this.hideAngleTooltip = () => {\r\n // const input = document.getElementById(\"angle_input\");\r\n const angleTooltip = document.getElementById(\"angle-tooltip\");\r\n const inputArrows = [].slice.call(document.querySelectorAll(\"#angle-tooltip [data-action]\"));\r\n const inputSubmit = [].slice.call(document.querySelectorAll('[data-action=\"angle-input-submit\"]'));\r\n\r\n if (angleTooltip) {\r\n angleTooltip.style.display = \"none\";\r\n inputArrows.forEach(function (elem) {\r\n elem.parentNode.replaceChild(elem.cloneNode(true), elem);\r\n });\r\n inputSubmit[0].removeEventListener('click', self.deActivateRotateAngle);\r\n }\r\n }\r\n};\r\n\r\n//todo\r\nconst resetEvents = function () {\r\n EventManager.stealCursor(true);\r\n EventManager.resetCursor(self);\r\n workspace.setAllowEdges(false);\r\n workspace.setAllowBumpoutEdges(false);\r\n config.workspace.menuItemActive = null\r\n};\r\n\r\nexport const clearAllMenusEvents = () => {\r\n sqftEventManager.stealCursor(true); // making cursor default\r\n sqftEventManager.resetCursor(sqftEventManager.currentCursorOwner); // ??\r\n sqftConfig.workspace.menuItemActive = null; // out of resize, rotate, delete\r\n // let zz= sqftEventManager;\r\n // console.log(zz)\r\n // debugger // eslint-disable-line no-debugger\r\n\r\n workspace.setAllowEdges(false); // removing sizing lines\r\n workspace.setAllowBumpoutEdges(false); // removing sizing lines\r\n workspace.setAllowMiteredEdges(false); // removing mitered lines\r\n\r\n if (workspace.miteredController instanceof MiteredController) {\r\n workspace.miteredController.deregisterEvents();\r\n }\r\n clearRotateAngles();\t// remove rotateAngle\r\n sqftConfig.highlight.points = false;\t// remove radiuses\r\n sqftConfig.highlight.lines = false; // disable lines highlighting\r\n sqftConfig.highlight.type = ''; // disable lines highlighting\r\n sqftConfig.highlight.id = null; // disable lines highlighting\r\n sqftEventManager.removeStuckCursorEvents();\r\n\r\n store.dispatch(setSQFTContextMenu({isOpened: false}));\r\n store.dispatch(setSQFTActiveButton(\"\"));\r\n store.dispatch(setSQFTActiveSubMenuButton(\"\"));\r\n store.dispatch(setSQFTActiveLevel3Button(null));\r\n store.dispatch(setGroheFiltersSearchText(\"\"));\r\n store.dispatch(showFilters(false));\r\n FreeDraw.drawFinish();\r\n FreeDraw.destroy();\r\n toolsControllers.shapeFreeForm.drawFinish();\r\n toolsControllers.shapeFreeForm.closeThicknessPopup();\r\n sqftShapeManager.disableRotatableStateForAllShapes();\r\n store.dispatch(deleteChangeValuePopup(FREE_FORM_THICKNESS_POPUP_ID));\r\n};\r\n\r\n\r\n\r\nexport default new WorkspaceEvents();\r\n","import React from \"react\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport Analytics from './../../analytics';\r\nimport store from \"../../store\";\r\nimport {UserPopupTypes} from \"../visComponents/constants\";\r\n\r\nconst LockedView = (props) => {\r\n const fabricatorSettings = store.getState().fabricatorState.settings;\r\n const getQuoteEnabled = fabricatorSettings.enableQuote;\r\n return (\r\n
\r\n \r\n
\r\n
\r\n )\r\n};\r\n\r\nLockedView.displayName = 'LockedView';\r\n\r\nexport default LockedView;\r\n\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport $ from \"jquery\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport Analytics from \"../../../../analytics\";\r\nimport {getCurrentLayout} from \"../../../appLayout\";\r\n\r\nexport default class MobileMenuSelect extends Component {\r\n\r\n static propTypes = {\r\n // relatedItems: PropTypes.array,\r\n // relatedItemClick: PropTypes.func.isRequired,\r\n onSubPartClick: PropTypes.func.isRequired,\r\n onParentItemClick: PropTypes.func.isRequired,\r\n parentItems: PropTypes.arrayOf(PropTypes.instanceOf(DesignNavigationItem)),\r\n activePart: PropTypes.object,\r\n activeSubPart: PropTypes.object,\r\n desktop: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n desktop: false,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n toggle: false,\r\n showRelatedItems: true,\r\n translateId: this.props.activeSubPart ? this.props.activeSubPart.translateId : ''\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (!this.props.desktop) {\r\n this.setShowName(this.props);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('click', this.handleWrapperBlur)\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.setShowName(nextProps);\r\n }\r\n\r\n setShowName(props) {\r\n if (props.activeSubPart && (props.activeSubPart.translateId !== this.state.translateId)) {\r\n this.setState({\r\n translateId: props.activeSubPart.translateId\r\n })\r\n }\r\n if (!props.activeSubPart && props.activePart && (props.activePart.partName !== this.state.translateId)) {\r\n this.setState({\r\n translateId: props.activePart.translateId\r\n })\r\n }\r\n }\r\n\r\n handleParentItemClick = (parentItem) => {\r\n Analytics.sendClickEvent(\"parent-item-clicked\");\r\n Analytics.sendClickEvent(\"parent-item-clicked: \" + parentItem.text);\r\n console.log('click parentItem', parentItem);\r\n this.props.onParentItemClick(parentItem);\r\n let showRelatedItems = true;\r\n if ((parentItem.text === \"Ceiling\" &&\r\n (document.kvConfig.visualizerType === \"Bathroom\" || document.kvConfig.visualizerType === \"BV\"))\r\n || parentItem.text === \"Floor\" || parentItem.text === \"Window\" || parentItem.text === \"Toilet\") {\r\n showRelatedItems = false;\r\n this.handleToggleDropdown();\r\n }\r\n\r\n this.setState({\r\n showRelatedItems,\r\n translateId: parentItem.part.translateId\r\n });\r\n if (parentItem.text === \"Floor\") {\r\n $('html, body').animate({scrollTop: document.body.scrollHeight}, 800);\r\n } else if (parentItem.text === \"Ceiling\") {\r\n $('html, body').animate({scrollTop: 0}, 800);\r\n }\r\n };\r\n\r\n handleBackClick = () => {\r\n this.setState({\r\n showRelatedItems: false,\r\n translateId: this.props.activePart.translateId\r\n });\r\n };\r\n\r\n handleRelatedItemClick = (relatedItem) => {\r\n Analytics.sendClickEvent(\"related-item-clicked\");\r\n Analytics.sendClickEvent(\"related-item-clicked: \" + relatedItem.part.partName);\r\n console.log('relatedItem', relatedItem);\r\n this.props.onSubPartClick(relatedItem);\r\n this.handleToggleDropdown();\r\n this.setState({\r\n translateId: relatedItem.part.translateId\r\n });\r\n if (relatedItem.text === \"Ceiling\") {\r\n $('html, body').animate({scrollTop: 0}, 800);\r\n }\r\n };\r\n\r\n handleToggleDropdown = () => {\r\n Analytics.sendClickEvent(this.state.toggle\r\n ? \"mobile-menu-select-dropdown-toggle-closed\"\r\n : \"mobile-menu-select-dropdown-toggle-open\"\r\n );\r\n\r\n this.setState({\r\n toggle: !this.state.toggle\r\n }, () => {\r\n if (this.state.toggle) {\r\n this.setState({\r\n subParts: this.props.activePart.subParts(),\r\n showRelatedItems: this.props.activePart.partName === \"Toilet\" ? false : !!this.props.activeSubPart\r\n });\r\n setTimeout(() => {\r\n window.addEventListener('click', this.handleWrapperBlur);\r\n }, 0)\r\n } else {\r\n window.removeEventListener('click', this.handleWrapperBlur)\r\n }\r\n })\r\n };\r\n\r\n handleWrapperBlur = (e) => {\r\n if (!e.target.closest('.menu-select__dropdown-list-item')\r\n && !e.target.closest('.menu-select__dropdown-back') && !e.target.closest('.menu-select__dropdown')) {\r\n this.handleToggleDropdown();\r\n }\r\n };\r\n\r\n handlePrevClick = () => {\r\n Analytics.sendClickEvent('mobile-menu-select-previous');\r\n // console.log('this.state.subParts', this.props.parentItems);\r\n // console.log('this.state.translateId', this.state.translateId);\r\n // console.log('this.state.subParts', this.state.subParts);\r\n // console.log('this.props.activePart', this.props.activePart);\r\n // console.log('this.props.activeSubPart', this.props.activeSubPart);\r\n\r\n let prevItem = null;\r\n if (this.props.activeSubPart) {\r\n const subParts = this.props.activePart.subParts();\r\n const currentChildIndex = subParts.findIndex(childItem => {\r\n return this.props.activeSubPart.partId === childItem.part.partId\r\n });\r\n prevItem = subParts[currentChildIndex - 1];\r\n // console.log('currentChildIndex', currentChildIndex);\r\n // console.log('prevItem', prevItem);\r\n }\r\n if (prevItem) {\r\n this.props.onSubPartClick(prevItem);\r\n this.setState({\r\n translateId: prevItem.part.translateId\r\n });\r\n } else {\r\n const currentParentIndex = this.props.parentItems.findIndex(parentItem => {\r\n const partName = this.props.activePart.partName;\r\n return parentItem.text === partName\r\n });\r\n const prevParentItem = this.props.parentItems[currentParentIndex - 1];\r\n\r\n // console.log('currentParentIndex', currentParentIndex);\r\n // console.log('prevParentItem', prevParentItem);\r\n if (prevParentItem) {\r\n this.props.onParentItemClick(prevParentItem);\r\n const subParts = prevParentItem.part.subParts();\r\n const lastSubPart = subParts[subParts.length - 1];\r\n // console.log('lastSubPart',lastSubPart);\r\n if (prevParentItem.part.menuType === 1) {\r\n setTimeout(() => {\r\n this.props.onSubPartClick(lastSubPart);\r\n this.setState({\r\n translateId: lastSubPart.part.translateId,\r\n });\r\n }, 0)\r\n }\r\n }\r\n }\r\n\r\n };\r\n\r\n handleNextClick = () => {\r\n Analytics.sendClickEvent('mobile-menu-select-next');\r\n let nextItem = null;\r\n if (this.props.activeSubPart) {\r\n const subParts = this.props.activePart.subParts();\r\n const currentChildIndex = subParts.findIndex(childItem => {\r\n return this.props.activeSubPart.partId === childItem.part.partId\r\n });\r\n nextItem = subParts[currentChildIndex + 1];\r\n }\r\n if (nextItem) {\r\n this.props.onSubPartClick(nextItem);\r\n this.setState({\r\n translateId: nextItem.part.translateId\r\n });\r\n } else {\r\n const currentParentIndex = this.props.parentItems.findIndex(parentItem => {\r\n const partName = this.props.activePart.partName;\r\n return parentItem.text === partName\r\n });\r\n const nextParentItem = this.props.parentItems[currentParentIndex + 1];\r\n if (nextParentItem) {\r\n this.props.onParentItemClick(nextParentItem);\r\n const subParts = nextParentItem.part.subParts();\r\n const lastSubPart = subParts[0];\r\n if (nextParentItem.part.menuType === 1) {\r\n setTimeout(() => {\r\n this.props.onSubPartClick(lastSubPart);\r\n this.setState({\r\n translateId: lastSubPart.part.translateId,\r\n });\r\n }, 0)\r\n }\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n\r\n const dropDownStyles = this.state.toggle ? { height: this.props.desktop ? 320 : window.innerHeight - 42 } : {};\r\n\r\n return (\r\n
\r\n {/*
*/}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n {this.state.translateId ? : null}\r\n \r\n
\r\n
\r\n {this.state.showRelatedItems\r\n ? \r\n : null}\r\n
    \r\n {this.state.showRelatedItems && this.props.activePart ? this.props.activePart.subParts(true, true).map((subPart, index) => {\r\n if (!subPart.part.translateId) {\r\n console.info(\"Feature Group Translate is missing!\", subPart.part.partId);\r\n }\r\n const layout = getCurrentLayout();\r\n if (!layout.hasNavItemsLength(subPart)) {\r\n return null\r\n }\r\n return (\r\n
  • this.handleRelatedItemClick(subPart)}\r\n className={\"menu-select__dropdown-list-item\"\r\n + (this.props.activeSubPart && (this.props.activeSubPart.partName === subPart.text)\r\n ? \" menu-select__dropdown-list-item--active\" : \"\")\r\n + ` menu-select__dropdown-list-item--${subPart.part.partId}`}>\r\n {subPart.part.translateId ? : null}\r\n
  • \r\n )\r\n }) : this.props.parentItems.map((parentItem, index) => {\r\n if (!parentItem.part.translateId) {\r\n console.info(\"Feature Parent Group translate is missing!\", parentItem.text);\r\n }\r\n return (\r\n
  • this.handleParentItemClick(parentItem)}\r\n className={\"menu-select__dropdown-list-item\"\r\n + (this.props.activePart && (this.props.activePart.partName === parentItem.text)\r\n ? \" menu-select__dropdown-list-item--active\" : \"\")\r\n + ` menu-select__dropdown-list-item--${parentItem.text.toLowerCase().replace(/ /g,\"_\")}`}>\r\n {parentItem.part.translateId ? : null}\r\n
  • \r\n )\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import {Part} from \"../part\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {LayoutType, ShowerComboTubType} from \"../constants\";\r\nimport { showerTubComboThumbnail, custom60in30X8Shower } from '../../../bvComponent/core/assets';\r\n\r\nimport BathTubLiner from \"../subparts/showerTubCombo/bathtubLiner\";\r\nimport ReplacementTub from \"../subparts/showerTubCombo/replacementTub\";\r\nimport WalkInTub from \"../subparts/showerTubCombo/walkInTub\";\r\nimport JettedTub from \"../subparts/showerTubCombo/jettedTub\";\r\nimport WallConfiguration from \"../subparts/showerTubCombo/wallConfiguration\";\r\nimport {fixDbFeatureProperties} from \"../../../../misc/helpers\";\r\n\r\nexport class ShowerTubCombo extends Part {\r\n static id = 'Shower Tub Combo';\r\n\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.showerTubComboIsActive = false; // param needed to check if shower is still active or not\r\n this.menuType = PartMenuType.Complex;\r\n this.partThumbnail = showerTubComboThumbnail;\r\n this.partName = 'Shower Tub Combo';\r\n this.translateId = \"visualizer.bathroom.shower_tub_combo\";\r\n this.relatedItems = [];\r\n this.wallConfiguration = null;\r\n this.bathTubLiner = null;\r\n this.replacementTub = null;\r\n this.walkInTub = null;\r\n this.jettedTub = null;\r\n\r\n // Kohler hardcode, they don't have bathtub_liner\r\n this.bottomTub = ShowerComboTubType.replacement_tub;\r\n this.leftShowerWallType = 'Pony';\r\n this.showerComboSize = '60in';\r\n\r\n }\r\n\r\n load(dbFeature) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Bathtub Liner\":\r\n relatedItemName = \"bathTubLiner\";\r\n RelatedItemClass = BathTubLiner;\r\n break;\r\n case \"Replacement Tub\":\r\n relatedItemName = \"replacementTub\";\r\n RelatedItemClass = ReplacementTub;\r\n break;\r\n case \"Walk In Tub\":\r\n relatedItemName = \"walkInTub\";\r\n RelatedItemClass = WalkInTub;\r\n break;\r\n case \"Jetted Tub\":\r\n relatedItemName = \"jettedTub\";\r\n RelatedItemClass = JettedTub;\r\n break;\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].load(dbFeature);\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n setSpecificRules() {\r\n if (!this.wallConfiguration) {\r\n this.wallConfiguration = new WallConfiguration(true);\r\n this.wallConfiguration.counts = {\r\n allLayoutFeaturesCount: 0,\r\n largeLayoutFeaturesCount: 0,\r\n smallLayoutFeaturesCount: 0\r\n };\r\n this.relatedItems.unshift(this.wallConfiguration);\r\n this.wallConfiguration.getParent = () => this;\r\n }\r\n Object.keys(LayoutType).forEach(layoutType => {\r\n this.wallConfiguration.featuresList[layoutType] = [\r\n ShowerTubCombo.createCustomWallConfiguration(\r\n custom60in30X8Shower,\r\n \"Full Wall 60in\",\r\n \"30X8\",\r\n \"60in\",\r\n {\r\n \"RoomLayout\": [layoutType],\r\n \"ShowerSize\": ['60in'],\r\n \"CountertopSize\": [\"20in\", \"24in\", \"30in\", \"36in\", \"48in\", \"60in\", \"72in\"],\r\n },\r\n this,\r\n 100001\r\n ),\r\n ];\r\n this.wallConfiguration.counts[layoutType.toLowerCase() + \"LayoutFeaturesCount\"]++;\r\n });\r\n }\r\n\r\n static createCustomWallConfiguration(customThumbnail, name, leftShowerWallType, showerComboSize, metaData, parent, id) {\r\n const conf = new WallConfiguration();\r\n conf.partName = name;\r\n conf.showerBodyId = name.toLowerCase().replace(/ /gi, \"-\");\r\n conf.dbFeature = {};\r\n conf.featureName = name;\r\n conf.groupName = \"Wall Configuration\";\r\n conf.showerComboSize = showerComboSize;\r\n // conf.parent = parent;\r\n conf.getParent = () => parent.wallConfiguration;\r\n conf.metaData = metaData;\r\n conf.leftShowerWallType = leftShowerWallType;\r\n conf.customThumbnail = customThumbnail;\r\n conf.dbFeature = fixDbFeatureProperties({\r\n metaData,\r\n id,\r\n unlocked: true\r\n });\r\n return conf;\r\n }\r\n\r\n setLayers(layout, placeholdersNeeded) {\r\n\r\n if (!this.showerTubComboIsActive) {\r\n return null\r\n }\r\n\r\n let res = [];\r\n this.getRelatedItems().forEach(relatedItem => {\r\n relatedItem.setLayers(layout);\r\n (placeholdersNeeded && !relatedItem.placeholderChanged && relatedItem.placeholderFeature)\r\n ? relatedItem.placeholderFeature.layer.addTo(res)\r\n : relatedItem.activeFeature ? relatedItem.activeFeature.layer.addTo(res) : null;\r\n });\r\n\r\n return res.length ? res : null;\r\n }\r\n\r\n subParts() {\r\n\r\n let subParts = [\r\n ...this.getRelatedItems().filter(item => item.visible).map(_ => new DesignNavigationItem(_.partName, _)),\r\n ...this.layout.parts.Shower.subParts().filter(subPart => {\r\n return (subPart.text === \"Fixture\")\r\n || (subPart.text === \"Shower Head\")\r\n || (subPart.text === \"Shower Walls\")\r\n || (subPart.text === \"Shower Walls Accent\")\r\n || (subPart.text === \"Shower Door\")\r\n || (subPart.text === \"Handle\")\r\n || (subPart.text === \"Pony Wall\")\r\n || (subPart.text === \"Pony Wall Cap\")\r\n || (subPart.text === \"Pony Wall Glass\")\r\n })\r\n ];\r\n\r\n if (this.bottomTub === ShowerComboTubType.walk_in_tub) {\r\n subParts = subParts.filter(subPart => {\r\n return subPart.part.partId !== \"shower_door\" && subPart.part.partId !== \"shower_door_handle\" && subPart.part.partId !== \"shower_fixture\"\r\n })\r\n }\r\n\r\n return subParts\r\n }\r\n\r\n getShowerRelatedItems() {\r\n return this.layout.parts.Shower.getRelatedItems().filter(relItem => {\r\n return (relItem.partId === \"shower_fixture\")\r\n || (relItem.partId === \"shower_head\")\r\n || (relItem.partId === \"shower_interior_wall\")\r\n || (relItem.partId === \"shower_wall_accent\")\r\n || (relItem.partId === \"shower_door\")\r\n || (relItem.partId === \"shower_door_handle\")\r\n || (relItem.partId === \"pony_wall\")\r\n || (relItem.partId === \"pony_wall_cap\")\r\n || (relItem.partId === \"pony_wall_glass\")\r\n })\r\n }\r\n\r\n setShowerTubCombo() {\r\n this.showerTubComboIsActive = true;\r\n if (this.layout.type === LayoutType.Small) {\r\n const showerParent = this.layout.parts.Shower;\r\n if (showerParent.showerBody && showerParent.showerBody.disabled) { // switch on all Shower features\r\n showerParent.showerBody.disabled = false;\r\n showerParent.showerBody.disabledClick();\r\n this.showerTubComboIsActive = true;\r\n }\r\n }\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false\r\n }\r\n\r\n handleSubPartClick() {}\r\n\r\n setZIndex(zIndexes) {\r\n if (!this.showerTubComboIsActive) {\r\n return null\r\n }\r\n\r\n if(zIndexes)\r\n this.relatedItems.forEach(_ => _.setZIndex(zIndexes));\r\n }\r\n\r\n setActiveTub(bottomTub) {\r\n this.bottomTub = bottomTub;\r\n }\r\n\r\n showerSize() {\r\n return this.showerComboSize\r\n }\r\n\r\n showerDimensions() {\r\n return this.leftShowerWallType\r\n }\r\n\r\n setShowerSize(leftShowerWallType, showerComboSize) {\r\n this.leftShowerWallType = leftShowerWallType;\r\n this.showerComboSize = showerComboSize;\r\n }\r\n\r\n setDefault() {\r\n // this.relatedItems.forEach(relatedItem => relatedItem.setDefault(layout));\r\n }\r\n\r\n}\r\n","import uuid from \"uuid\";\r\nimport clone from 'lodash/clone';\r\n\r\nimport EventManager from \"../../store/sqftEventManager\";\r\nimport point from \"./point\";\r\nimport lineLength from \"./overlays/lineLength\";\r\nimport pnpoly, {isPointInsidePolygon} from \"../../../../lib/pnpoly\";\r\nimport workspace from \"../workspace\";\r\nimport config from \"../../store/sqftConfig\";\r\nimport {\r\n addDecimalToLength,\r\n get45CornerLegDistanceByHypotenuse,\r\n getClosestPoint,\r\n getIntersectCords,\r\n getIntersectCordsBetweenLines,\r\n getMousePositionOnShape,\r\n getParallelPoints,\r\n getPointBetweenPoints,\r\n getPointDistance, getPointField,\r\n getPointOnTheLine, getTanDeg,\r\n isInnerCorner,\r\n measureDistanceToInches,\r\n orientation\r\n} from \"../../../../helpers/sqftHelper\";\r\n//todo sqft-react\r\nimport moveDiagonalLine from \"../../../../lib/moveDiagonalLine\";\r\nimport bumpout from \"./overlays/bumpout\";\r\nimport label from \"./overlays/label\";\r\nimport LineCorner from \"./lineHooks/lineCorner\";\r\n// import Color from \"./core/draw/color\";\r\nimport COLOR_THEMES, {COLOR} from \"../../store/colorThemes\";\r\nimport Color from \"../workspace/textBox/draw/color\";\r\nimport store from \"../../../../../../store\";\r\nimport {\r\n RESOURCE_ATTACHED_TO_NAME,\r\n RESOURCE_ATTACHED_TO_TYPE,\r\n RESOURCE_TYPE, SHAPE_PART_ID,\r\n SIDEBAR_SLAB_SEAM_BUTTONS,\r\n SQFT_MODE\r\n} from \"../../../../constants\";\r\nimport {updateSQFTCalculations} from \"../../../../../../actions/sqftFunctions\";\r\nimport sqftSlabManager from \"../../store/sqftSlabManager\";\r\nimport {addMiteredSection} from \"../../../../../../actions/sqftMiteredFunctions\";\r\nimport {addResource, deleteResourceAttachedTo} from \"../../../../../../actions/sqftResourceFunctions\";\r\nimport SqftStore from \"../../store/sqftStore\";\r\nimport {getAngleBetween3Points, getLineDirection, getLineOrientation} from \"../../../../helpers/shapeHelper\";\r\nimport RenderFigures from \"../../helpers/renderFigures\";\r\nimport {\r\n getLineBordersArrayV2,\r\n updateMiteredLength,\r\n updateShapeWaterfallLength,\r\n updateUnderlaymentLength\r\n} from \"../../helpers/lineHelper\";\r\nimport {isSFTCabinetsGroup} from \"../../../../helpers/sqftNavigationHelper\";\r\nimport MiteredController from \"../controls/mitered\";\r\nimport SlabWorkspace from \"../slab/slabWorkspace\";\r\nimport sqftResourcesManager from \"../../store/sqftResoursesManager\";\r\nimport BlinkingHighlight from \"../../helpers/commonParts/blink\";\r\nimport workspaceControllers from \"../../store/workspaceControllers\";\r\nimport {createSlabModeWaterfallShapes} from \"../../store/canvasHelper\";\r\nimport {isMiterEdge, isWaterfallFeature} from \"../../../../helpers/featureHelper\";\r\nimport {getCurrentLayout} from \"../../../../../appLayout\";\r\nimport LineAttachmentsComposite from \"./lineHooks/lineAttachmentsComposite\";\r\nimport UnderlaymentController from \"../controls/underlayment\";\r\nimport sqftEventManager from \"../../store/sqftEventManager\";\r\nimport {getClosestPointOnLine} from \"../../../../helpers/coordinatesHelper\";\r\n// import Menu from \"../controls/menu\";\r\n// import MiteredController from \"../controls/mitered\";\r\n\r\nexport default function (from, to, parent = null) {\r\n //private variables\r\n var self = this,\r\n //parent = null,\r\n state = {\r\n mousePos: {},\r\n mouseDown: false,\r\n mouseDownPosition: null,\r\n isHovering: false,\r\n withEdge: false,\r\n withBacksplash: false,\r\n withWall: false,\r\n withBumpout: false,\r\n isWithMitered: false, // mitered tool\r\n isWithUnderlayment: false,\r\n isWithWaterfallEdge: false, // waterfallTool edges\r\n isWithPeninsulaUnderwrapEdge: false, // Peninsula Underwrap Edge edges\r\n isWithFakeEdge: false,\r\n withId: null,\r\n attachedHandleId: null,\r\n attachedHandleUrl: null,\r\n attachedCrownMoldingFeatureId: null,\r\n attachedCrownMoldingUrl: null,\r\n backsplashFeatureId: null,\r\n backsplashHeight: 0, //this is backsplash size\r\n backsplashName: \"\", //this is backsplash size\r\n backsplashType: \"\", //this is backsplash size\r\n attachedItems: {\r\n isWithCrownMolding: false,\r\n isWithEndCap: false,\r\n },\r\n movePointDistance: 0, // is needed for diagonal lines\r\n angleLinePoints: {},\r\n slabModeSkipMiteredEdgeCreation: false,\r\n isHiddenForever: false,\r\n seamCutPoint: null,\r\n },\r\n design = {\r\n aroundLineColor: '#E3E1E3',\r\n cornerGutterSize: 0.1,\r\n outlineWidth: 8,\r\n outlineMargin: 9,\r\n horizontalOutlineMargin: 5,\r\n lineThickness: 4\r\n },\r\n overlayImportData = null,\r\n lineCornerImportData = null,\r\n overlayMiteredData = null,\r\n overlayUnderlaymentData = null,\r\n waterfallImportData = null,\r\n lineDirection = {};\r\n //public properties\r\n this.id = uuid();\r\n this.from = from;\r\n this.to = to;\r\n this.ctx = null;\r\n this.attachedShape = null;\r\n this.overlay = null;\r\n this.lineCorner = null;\r\n this.bumpoutOverlay = null;\r\n this.miteredOverlay = null;\r\n this.waterfallOverlay = null;\r\n this.labelOverlay = null;\r\n this.titleOverlay = null;\r\n this.staticOffset = null;\r\n this.isLine = true;\r\n this.blink = new BlinkingHighlight();\r\n //todo\r\n this.lineAttachmentsComposite = new LineAttachmentsComposite();\r\n\r\n //private property setters\r\n function setParent(value) { parent = value; }\r\n //public property getters\r\n this.getParent = function() { return parent; };\r\n this.getAttachedShape = () => { return this.attachedShape; };\r\n this.getPosition = () => parent.getPosition();\r\n this.isWithBumpout = function() { return state.withBumpout; };\r\n this.isWithEdge = function() { return state.withEdge; };\r\n this.isWithWaterfallToolEdge = () => { return state.isWithWaterfallEdge; };\r\n this.isWithPeninsulaUnderwrapEdge = () => { return state.isWithPeninsulaUnderwrapEdge; };\r\n this.isWithBacksplash = () => { return state.withBacksplash; };\r\n this.isWithMitered = function() { return state.isWithMitered; };\r\n this.isWithUnderlayment = function() { return state.isWithUnderlayment; };\r\n this.isWithHandle = function() { return state.attachedHandleId; };\r\n this.isWithMiteredPrev = function() {\r\n const prevLine = parent.getPrevLine(self);\r\n return prevLine.isWithMitered();\r\n };\r\n this.isWithMiterEdge = () => {\r\n const attachedResource = workspace.getAttachedTo(this);\r\n if (attachedResource) {\r\n return isMiterEdge(attachedResource.featureId);\r\n }\r\n };\r\n /** this will return if green edge is waterfall (not waterfall tool) */\r\n this.isWithWaterfallEdgeFeature = () => {\r\n const attachedResource = workspace.getAttachedTo(this);\r\n if (attachedResource) {\r\n return isWaterfallFeature(attachedResource.featureId);\r\n }\r\n };\r\n this.isWithCrownMolding = () => {\r\n return state.attachedItems.isWithCrownMolding\r\n }\r\n\r\n this.getAttachedFeature = () => {\r\n const attachedResource = workspace.getAttachedTo(this);\r\n const layout = getCurrentLayout();\r\n\r\n return layout.getFeatureById(attachedResource.featureId, true);\r\n }\r\n this.isHovering = (shouldExcludePoints = false) => {\r\n if (!shouldExcludePoints && this.from.isHovering()) {\r\n return true\r\n }\r\n return state.isHovering;\r\n };\r\n this.isAngleHovering = function() { return this.lineCorner.state.isHovering; };\r\n this.isCornerLineHovering = function() { return this.lineCorner.state.isCornerLineHovering; };\r\n this.getDesign = function() { return design };\r\n this.getWithId = () => { return state.withId };\r\n this.setWithId = (value) => { state.withId = value };\r\n this.getBacksplashHeight = () => { return state.backsplashHeight };\r\n this.setBacksplashHeight = (value) => {\r\n //update resource height\r\n const attachedToResource = {...sqftResourcesManager.getAttachedToLineResource(this)};\r\n attachedToResource.height = value;\r\n sqftResourcesManager.updateAttachedToLineResource(attachedToResource);\r\n\r\n state.backsplashHeight = value\r\n this.overlay.renderBacksplashText(state.backsplashName, state.backsplashType);\r\n };\r\n this.getHandleId = () => { return state.attachedHandleId};\r\n this.setHandleId = (featureId) => { state.attachedHandleId = featureId};\r\n this.getHandle3dURL = () => { return state.attachedHandleUrl};\r\n this.setHandle3dURL = (url) => { state.attachedHandleUrl = url};\r\n this.getCrownMolding3dURL = () => { return state.attachedCrownMoldingUrl};\r\n this.setCrownMolding3dURL = (url) => { state.attachedCrownMoldingUrl = url};\r\n this.getCrownMoldingFeatureId = () => { return state.attachedCrownMoldingFeatureId};\r\n this.setCrownMoldingFeatureId = (url) => { state.attachedCrownMoldingFeatureId = url};\r\n this.getBacksplashFeatureId = () => { return sqftResourcesManager.getAttachedToLineResource(this).backsplashFeatureId };\r\n this.setBacksplashFeatureId = (featureId) => {\r\n state.backsplashFeatureId = featureId\r\n\r\n //update resource feature id\r\n const attachedToResource = {...sqftResourcesManager.getAttachedToLineResource(this)};\r\n attachedToResource.backsplashFeatureId = featureId;\r\n sqftResourcesManager.updateAttachedToLineResource(attachedToResource);\r\n\r\n //update slab shapes feature\r\n SlabWorkspace.slabAdditionalShapes.updateAdditionalShapeFeature(this, featureId);\r\n };\r\n\r\n this.getState = () => { return state };\r\n this.setStateParams = (params) => {\r\n state = {...state, ...params};\r\n };\r\n this.getPointsFeatures = function () {\r\n return {\r\n from: {\r\n arcLength: self.from.arcLength,\r\n angle: self.from.angle,\r\n x: self.from.x,\r\n y: self.from.y,\r\n pointDirection: self.from.pointDirection,\r\n corner: self.from.corner\r\n },\r\n to: {\r\n arcLength: self.to.arcLength,\r\n angle: self.to.angle,\r\n x: self.to.x,\r\n y: self.to.y,\r\n pointDirection: self.to.pointDirection,\r\n corner: self.to.corner\r\n },\r\n }\r\n };\r\n this.getOrientation = () => {\r\n return getLineOrientation(this.from, this.to);\r\n };\r\n this.getAttachedItems = function () {\r\n let isAnyItemsAttached = false;\r\n for (const attachedItemKey in state.attachedItems) {\r\n if (state.attachedItems[attachedItemKey]) {\r\n isAnyItemsAttached = true\r\n }\r\n }\r\n return state.withEdge\r\n || state.withBacksplash\r\n || state.withWall\r\n || state.withBumpout\r\n || state.isWithMitered\r\n || state.isWithUnderlayment\r\n || this.isWithWaterfallToolEdge()\r\n || this.isWithPeninsulaUnderwrapEdge()\r\n || state.withId\r\n || isAnyItemsAttached\r\n };\r\n this.setTutotialImage = function (image) {\r\n self.tutorialImage = image\r\n };\r\n this.isWithFakeEdge = () => { return state.isWithFakeEdge }\r\n this.setFakeEdge = (value) => { state.isWithFakeEdge = value };\r\n this.setHiddenForever = (value) => { state.isHiddenForever = value }; // this is for slab placeholder\r\n\r\n //private functions\r\n this.calculateRenderPosition = (point, sqftMode) => {\r\n const state = store.getState();\r\n const isShowSlabTool = state.sqftSlabState.isShowSlabTool;\r\n let offset = this.staticOffset ? this.staticOffset : this.getOffset();\r\n let scale = config.scale;\r\n let xCord = 0;\r\n let yCord = 0;\r\n if (!isShowSlabTool || sqftMode === SQFT_MODE.regular) {\r\n xCord = point.pos.x;\r\n yCord = point.pos.y;\r\n } else {\r\n if (point.posSlab) {\r\n xCord = point.posSlab.x;\r\n yCord = point.posSlab.y;\r\n } else {\r\n console.error(\"point.posSlab was not set\");\r\n }\r\n }\r\n\r\n return {\r\n x: (xCord * scale) + offset.x,\r\n y: (yCord * scale) + offset.y\r\n };\r\n };\r\n // function calculatePointPosition(renderPoint) {\r\n // var offset = self.getOffset();\r\n // var scale = config.scale;\r\n // return {\r\n // x: (renderPoint.x - offset.x) / scale,\r\n // y: (renderPoint.y - offset.y) / scale\r\n // };\r\n // }\r\n\r\n const getLineField = () => {\r\n var fieldSquares = {\r\n from: null,\r\n to: null,\r\n points: [],\r\n isHovering: state.isHovering,\r\n };\r\n\r\n fieldSquares.from = self.from.getPointField();\r\n fieldSquares.to = self.to.getPointField();\r\n var lineOrientation = getLineOrientation(this.from, this.to);\r\n if (lineOrientation == orientation.HORIZONTAL || lineOrientation == orientation.VERTICAL) {\r\n if (self.from.x > self.to.x) {\r\n var x = fieldSquares.from.x;\r\n fieldSquares.from.x = fieldSquares.to.x;\r\n fieldSquares.to.x = x;\r\n }\r\n if (self.from.y > self.to.y) {\r\n var y = fieldSquares.from.y;\r\n fieldSquares.from.y = fieldSquares.to.y;\r\n fieldSquares.to.y = y;\r\n }\r\n }\r\n\r\n var f = fieldSquares.from;\r\n var t = fieldSquares.to;\r\n var fieldSquareResizeRatio = 2,\r\n squeezeRatio = 0,\r\n marginFromCenter = 10;\r\n\r\n // var windowWidth = $(window).width(),\r\n // fieldSquareResizeRatio = 0;\r\n // if (windowWidth <= 1024) {\r\n // fieldSquareResizeRatio = 10;\r\n // }\r\n // if (windowWidth <= 768) {\r\n // fieldSquareResizeRatio = 15;\r\n // }\r\n\r\n switch(lineDirection.orientation) {\r\n case \"horizontal\": {\r\n if (lineDirection.newDirection === \"east\") {\r\n squeezeRatio =((t.x + f.width/2) - (f.x + f.width/2)) > 80 ? 15 : 0;\r\n fieldSquares.points.push({x: f.x + f.width/2 + squeezeRatio, y: f.y + fieldSquareResizeRatio - marginFromCenter});\r\n fieldSquares.points.push({x: t.x + f.width/2 - squeezeRatio, y: t.y + fieldSquareResizeRatio - marginFromCenter});\r\n fieldSquares.points.push({x: t.x + f.width/2 - squeezeRatio, y: t.y + t.height - fieldSquareResizeRatio - marginFromCenter});\r\n fieldSquares.points.push({x: f.x + f.width/2 + squeezeRatio, y: f.y + f.height - fieldSquareResizeRatio - marginFromCenter});\r\n } else if (lineDirection.newDirection === \"west\") {\r\n squeezeRatio =((t.x + f.width/2) - (f.x + f.width/2)) > 80 ? 15 : 0;\r\n fieldSquares.points.push({x: f.x + f.width/2 + squeezeRatio, y: f.y + fieldSquareResizeRatio + marginFromCenter});\r\n fieldSquares.points.push({x: t.x + f.width/2 - squeezeRatio, y: t.y + fieldSquareResizeRatio + marginFromCenter});\r\n fieldSquares.points.push({x: t.x + f.width/2 - squeezeRatio, y: t.y + t.height - fieldSquareResizeRatio + marginFromCenter});\r\n fieldSquares.points.push({x: f.x + f.width/2 + squeezeRatio, y: f.y + f.height - fieldSquareResizeRatio + marginFromCenter});\r\n }\r\n break;\r\n }\r\n case \"vertical\": {\r\n if (lineDirection.newDirection === \"south\") {\r\n squeezeRatio =((t.y + t.height/2) - (f.y + t.height/2)) > 80 ? 15 : 0;\r\n fieldSquares.points.push({x: f.x + fieldSquareResizeRatio + marginFromCenter, y: f.y + t.height/2 + squeezeRatio});\r\n fieldSquares.points.push({x: f.x + f.width - fieldSquareResizeRatio + marginFromCenter, y: f.y + t.height/2 + squeezeRatio});\r\n fieldSquares.points.push({x: t.x + t.width - fieldSquareResizeRatio + marginFromCenter, y: t.y + t.height/2 - squeezeRatio});\r\n fieldSquares.points.push({x: t.x + fieldSquareResizeRatio + marginFromCenter, y: t.y + t.height/2 - squeezeRatio });\r\n } else if (lineDirection.newDirection === \"north\") {\r\n squeezeRatio =((t.y + t.height/2) - (f.y + t.height/2)) > 80 ? 15 : 0;\r\n fieldSquares.points.push({x: f.x + fieldSquareResizeRatio - marginFromCenter, y: f.y + t.height/2 + squeezeRatio});\r\n fieldSquares.points.push({x: f.x + f.width - fieldSquareResizeRatio - marginFromCenter, y: f.y + t.height/2 + squeezeRatio});\r\n fieldSquares.points.push({x: t.x + t.width - fieldSquareResizeRatio - marginFromCenter, y: t.y + t.height/2 - squeezeRatio});\r\n fieldSquares.points.push({x: t.x + fieldSquareResizeRatio - marginFromCenter, y: t.y + t.height/2 - squeezeRatio });\r\n }\r\n break;\r\n }\r\n case \"SOUTHWEST\":\r\n case \"NORTHEAST\":\r\n fieldSquares.points.push({x: f.x, y: f.y });\r\n fieldSquares.points.push({x: t.x, y: t.y });\r\n fieldSquares.points.push({x: t.x + t.width, y: t.y + t.height });\r\n fieldSquares.points.push({x: f.x + f.width, y: f.y + f.height });\r\n break;\r\n case \"NORTHWEST\":\r\n case \"SOUTHEAST\":\r\n fieldSquares.points.push({x: f.x + f.width, y: f.y });\r\n fieldSquares.points.push({x: t.x + t.width, y: t.y });\r\n fieldSquares.points.push({x: t.x, y: t.y + t.height });\r\n fieldSquares.points.push({x: f.x, y: f.y + f.height });\r\n break;\r\n }\r\n return fieldSquares;\r\n }\r\n // function getDistance(point1, point2) {\r\n // var scale = workspace.getScale(),\r\n // xDiff = (point2.x - point1.x),\r\n // yDiff = (point2.y - point1.y),\r\n // distance = Math.sqrt(Math.pow(xDiff, 2) + Math.pow(yDiff, 2));\r\n // distance *= (xDiff + yDiff > 0 ? -1 : 1) / scale;\r\n // return distance;\r\n // }\r\n // function isLeft(a, b, c){\r\n // return ((b.x - a.x)*(c.y - a.y) - (b.y - a.y)*(c.x - a.x)) > 0;\r\n // }\r\n // function getDistanceToLine(p1, p2, p3) {\r\n // var scale = workspace.getScale(),\r\n // x0 = p3.x, y0 = p3.y,\r\n // x1 = p1.x, y1 = p1.y,\r\n // x2 = p2.x, y2 = p2.y,\r\n // distanceToLine = Math.abs(\r\n // ((y2 - y1) * x0) - ((x2 - x1) * y0) + (x2 * y1) - (y2 * x1)\r\n // ) / Math.sqrt(\r\n // Math.pow(y2 - y1, 2) + Math.pow(x2 - x1, 2)\r\n // ),\r\n // xDiff = (x2 - x1),\r\n // yDiff = (y2 - y1);\r\n // distanceToLine *= (isLeft(p1, p2, p3) ? -1 : 1) / scale;\r\n // return distanceToLine;\r\n // }\r\n // function getCanvasDimensions() {\r\n // var canvas = workspace.getCanvas(),\r\n // canvasWidth = canvas.width,\r\n // canvasHeight = canvas.height,\r\n // scale = config.scale,\r\n // gridSize = config.workspace.gridSize * scale,\r\n // adjustedSize = (gridSize / 3),\r\n // rulerSize = adjustedSize + 6;\r\n // return {\r\n // rulerSize: rulerSize,\r\n // canvasWidth: canvasWidth,\r\n // canvasHeight: canvasHeight\r\n // }\r\n // }\r\n // function lockPointToCanvas(point) {\r\n // var dim = getCanvasDimensions(),\r\n // pos = self.calculateRenderPosition(point),\r\n // rulerSize = calculatePointPosition({x: dim.rulerSize, y: dim.rulerSize}),\r\n // heightWidth = calculatePointPosition({x: dim.canvasWidth, y: dim.canvasHeight}),\r\n // drop = false;\r\n //\r\n //\r\n // console.log('dim', dim);\r\n // console.log('pos', pos);\r\n // console.log('rulerSize', rulerSize);\r\n // console.log('heightWidth', heightWidth);\r\n //\r\n // if (pos.x < dim.rulerSize) {\r\n // point.x = rulerSize.x + 1;\r\n // drop = true;\r\n // } else if (pos.x >= dim.canvasWidth) {\r\n // point.x = heightWidth.x - 1;\r\n // drop = true;\r\n // }\r\n // if (pos.y < dim.rulerSize) {\r\n // point.y = rulerSize.y + 1;\r\n // drop = true;\r\n // } else if (pos.y >= dim.canvasHeight) {\r\n // point.y = heightWidth.y - 1;\r\n // drop = true;\r\n // }\r\n // if (drop) {\r\n // state.isHovering = false;\r\n // state.mouseDown = false;\r\n // }\r\n // return point;\r\n // }\r\n\r\n function setMouseOverLine(mousePos) {\r\n var field = getLineField();\r\n var vertx = [];\r\n var verty = [];\r\n for(var i = 0; i < field.points.length; i++) {\r\n vertx.push(field.points[i].x);\r\n verty.push(field.points[i].y);\r\n }\r\n state.isHovering = pnpoly(field.points.length, vertx, verty, mousePos.x, mousePos.y);\r\n\r\n return state.isHovering || state.mouseDown;\r\n }\r\n\r\n /*\r\n * This is more accurate hover area used for cabinets\r\n */\r\n this.getMouseOverLineV2 = (mousePos) => {\r\n this.updateLineHovering(mousePos)\r\n return state.isHovering || state.mouseDown;\r\n }\r\n this.updateLineHovering = (mousePos = sqftEventManager.getMousePos()) => {\r\n state.isHovering = isPointInsidePolygon(mousePos, getLineBordersArrayV2(this.from, this.to, design.lineThickness + design.lineThickness * 0.2));\r\n }\r\n this.getLineHovering = () => {\r\n return state.isHovering\r\n }\r\n\r\n function onMouseUp(mousePos, e) {\r\n void mousePos;\r\n void e;\r\n if (state.mouseDown) {\r\n state.mouseDown = false;\r\n state.mouseDownPosition = null;\r\n self.from.snapToGrid();\r\n self.to.snapToGrid();\r\n }\r\n }\r\n const onMouseDown = (mousePos, e) => {\r\n void e;\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n\r\n if (( EventManager.getCursor().indexOf(\"n-resize\") >= 0\r\n || EventManager.getCursor().indexOf(\"e-resize\") >= 0\r\n || EventManager.getCursor().indexOf(\"ne-resize\") >= 0\r\n || EventManager.getCursor().indexOf(\"nw-resize\") >= 0\r\n ) && state.isHovering\r\n ){\r\n state.mouseDown = true;\r\n state.movePointDistance = getPointDistance(self.from, self.to);\r\n state.mouseDownPosition = mousePos;\r\n return true;\r\n }\r\n\r\n //Add free seam cut point in the slabMode\r\n if (activeButton === SIDEBAR_SLAB_SEAM_BUTTONS.addFreeSeam && state.isHovering) {\r\n const mousePosOnShape = getMousePositionOnShape(mousePos.x, mousePos.y, this.getParent());\r\n const lineStart = self.from;\r\n const lineEnd = self.to;\r\n const seamCutPoint = getClosestPointOnLine(lineStart, lineEnd, mousePosOnShape);\r\n\r\n const shape = this.getParent();\r\n if (shape.seamCutPoints.length >= 2) {\r\n shape.seamCutPoints.shift(); // Удаляем самую старую точку\r\n }\r\n shape.seamCutPoints.push(seamCutPoint);\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n const onMouseMove = (mousePos, e) => {\r\n void e;\r\n // if (e.terminate && !parent.isHovering()) {\r\n // state.isHovering = false;\r\n // return false;\r\n // }\r\n const isCabinet = isSFTCabinetsGroup();\r\n const isSlabMode = SqftStore.isSlabMode();\r\n const isMouseOverLine = isCabinet || isSlabMode ? this.getMouseOverLineV2(mousePos) : setMouseOverLine(mousePos);\r\n if (isMouseOverLine) {\r\n if (workspace.getAllowEdges() && !self.from.angleIsChanged && !self.to.angleIsChanged) {\r\n if (state.mouseDown) {\r\n this.moveLine(mousePos);\r\n }\r\n EventManager.releaseStealLock(parent);\r\n EventManager.stealCursor();\r\n switch(getLineOrientation(this.from, this.to)) {\r\n case orientation.HORIZONTAL:\r\n EventManager.setCursor(\"n-resize\", self);\r\n break;\r\n case orientation.VERTICAL:\r\n EventManager.setCursor(\"e-resize\", self);\r\n break;\r\n case orientation.NORTHWEST:\r\n case orientation.SOUTHEAST:\r\n EventManager.setCursor(\"ne-resize\", self);\r\n break;\r\n case orientation.NORTHEAST:\r\n case orientation.SOUTHWEST:\r\n EventManager.setCursor(\"nw-resize\", self);\r\n break;\r\n }\r\n return state.mouseDown;\r\n }\r\n\r\n if (config.highlight.lines && state.isHovering) {\r\n EventManager.releaseStealLock(parent);\r\n EventManager.stealCursor();\r\n return false;\r\n }\r\n // prevent all other mouseover's\r\n if (this.getAttachedItems()) {\r\n return true\r\n }\r\n }\r\n\r\n this.lineCorner.updateCornerHoverState(mousePos);\r\n\r\n if (workspace.getHoverShape() !== parent) {\r\n //state.isHovering = false; // allow hovering multiple shapes\r\n }\r\n EventManager.resetCursor(self);\r\n return false;\r\n }\r\n function onMouseLeave() {\r\n state.isHovering = false;\r\n state.mouseDown = false;\r\n }\r\n\r\n //public functions\r\n this.export = () => {\r\n return {\r\n id: this.id,\r\n from: this.from.export(),\r\n to: this.to.export(),\r\n bumpout: this.bumpoutOverlay ? this.bumpoutOverlay.export() : null,\r\n //todo\r\n mitered: this.miteredOverlay ? this.miteredOverlay.export() : null,\r\n underlayment: this.underlaymentOverlay ? this.underlaymentOverlay.export() : null,\r\n waterfallData: this.waterfallOverlay ? this.waterfallOverlay.export() : null,\r\n label: this.labelOverlay ? this.labelOverlay.export() : null,\r\n titleOverlay: this.titleOverlay ? this.titleOverlay.export() : null,\r\n overlay: this.overlay ? this.overlay.export() : null,\r\n lineCorner: this.lineCorner ? this.lineCorner.export() : null,\r\n state: clone(state),\r\n }\r\n };\r\n\r\n this.import = (value, existing) => {\r\n state = value.state;\r\n overlayImportData = value.overlay;\r\n lineCornerImportData = value.lineCorner;\r\n var foundFrom = null, foundTo = null;\r\n for (var i = 0; i < existing.length && !(foundFrom && foundTo); i++) {\r\n if (!foundFrom && existing[i].from.id == value.from.id) {\r\n foundFrom = existing[i].from;\r\n } else if (!foundFrom && existing[i].to.id == value.from.id) {\r\n foundFrom = existing[i].to;\r\n } else if (!foundTo && existing[i].to.id == value.to.id) {\r\n foundTo = existing[i].to;\r\n } else if (!foundTo && existing[i].from.id == value.to.id) {\r\n foundTo = existing[i].from;\r\n }\r\n }\r\n self.id = value.id;\r\n if (foundFrom) {\r\n self.from = foundFrom;\r\n } else {\r\n self.from = new point();\r\n self.from.import(value.from);\r\n }\r\n if (foundTo) {\r\n self.to = foundTo;\r\n } else {\r\n self.to = new point();\r\n self.to.import(value.to);\r\n }\r\n if (value.bumpout) {\r\n // self.overlay.setMidpointOffset(value.overlay.midpoint.xOffset, value.overlay.midpoint.yOffset);\r\n self.bumpoutOverlay = new bumpout();\r\n self.bumpoutOverlay.import(self, value.bumpout);\r\n state.withBumpout = true;\r\n }\r\n if (value.mitered) {\r\n //addMiteredToLine\r\n if (workspace.miteredController === null) {\r\n workspace.miteredController = new MiteredController();\r\n }\r\n this.miteredOverlay = workspace.miteredController.createMiteredOverlay(this);\r\n this.miteredOverlay.import(self, value.mitered);\r\n overlayMiteredData = value.mitered;\r\n state.isWithMitered = true;\r\n store.dispatch(addMiteredSection(this.miteredOverlay));\r\n }\r\n if (value.underlayment) {\r\n //addMiteredToLine isWithUnderlayment\r\n if (workspace.underlaymentController === null) {\r\n workspace.underlaymentController = new UnderlaymentController();\r\n }\r\n this.underlaymentOverlay = workspace.underlaymentController.createUnderlaymentOverlay(this);\r\n this.underlaymentOverlay.import(this, value.underlayment);\r\n overlayUnderlaymentData = value.underlayment;\r\n state.isWithUnderlayment = true;\r\n store.dispatch(addResource(RESOURCE_TYPE.underlaymentSections, this.underlaymentOverlay));\r\n }\r\n if (value.label) {\r\n // self.overlay.setMidpointOffset(value.overlay.midpoint.xOffset, value.overlay.midpoint.yOffset);\r\n self.labelOverlay = new label();\r\n self.labelOverlay.init(self, value.label.labelText, value.label.partId);\r\n self.labelOverlay.import(value.label);\r\n }\r\n if (value.titleOverlay) {\r\n // self.overlay.setMidpointOffset(value.overlay.midpoint.xOffset, value.overlay.midpoint.yOffset);\r\n self.titleOverlay = new label();\r\n self.titleOverlay.init(self, value.titleOverlay.state.labelText, value.titleOverlay.state.partId);\r\n self.titleOverlay.import(value.titleOverlay);\r\n }\r\n if (value.waterfallData) {\r\n waterfallImportData = value.waterfallData\r\n //this.waterfallOverlay = workspaceControllers.waterfall.createWaterfallOverlay(this, value.waterfallData);\r\n }\r\n };\r\n this.init = (parent, temp) => {\r\n temp = temp || false;\r\n setParent(parent);\r\n this.lineCorner = new LineCorner(this);\r\n if (lineCornerImportData) {\r\n this.lineCorner.import(lineCornerImportData);\r\n }\r\n if (!temp) {\r\n this.initEvents();\r\n self.from.init(self);\r\n }\r\n if (!temp && !parent.shapeCabinet && parent.partId !== SHAPE_PART_ID.spacer) {\r\n self.overlay = new lineLength();\r\n self.overlay.init(self);\r\n if (overlayImportData) {\r\n self.overlay.import(overlayImportData);\r\n }\r\n }\r\n if (this.miteredOverlay) {\r\n this.miteredOverlay.init(overlayMiteredData); // init after import\r\n //store.dispatch(addMiteredSection(this.miteredOverlay));\r\n //Menu.miteredController.updateInfo();\r\n //this.miteredOverlay.afterImport(overlayMiteredData);\r\n }\r\n if (this.underlaymentOverlay) {\r\n this.underlaymentOverlay.init(overlayUnderlaymentData);\r\n }\r\n if (waterfallImportData) {\r\n this.addWaterfallToLine(RESOURCE_ATTACHED_TO_NAME.waterfall, waterfallImportData);\r\n }\r\n if (this.isWithWaterfallToolEdge()) {\r\n this.overlay.renderWaterfallText(RESOURCE_ATTACHED_TO_NAME.waterfall, RESOURCE_ATTACHED_TO_TYPE.waterfall);\r\n }\r\n\r\n lineDirection = parent.getAngleDirection(self); // {direction:{x: \"forward\", y: \"forward\"},facing:\"sw\"}, cornerMargins, orientation. newDirection\r\n\r\n if (self.historyPointFeatures) {\r\n self.from.angle = self.historyPointFeatures.from.angle;\r\n self.from.arcLength = self.historyPointFeatures.from.arcLength;\r\n self.from.x = self.historyPointFeatures.from.x;\r\n self.from.y = self.historyPointFeatures.from.y;\r\n self.from.pointDirection = self.historyPointFeatures.from.pointDirection;\r\n self.from.corner = self.historyPointFeatures.from.corner;\r\n\r\n self.to.angle = self.historyPointFeatures.to.angle;\r\n self.to.arcLength = self.historyPointFeatures.to.arcLength;\r\n self.to.x = self.historyPointFeatures.to.x;\r\n self.to.y = self.historyPointFeatures.to.y;\r\n self.to.pointDirection = self.historyPointFeatures.to.pointDirection;\r\n self.to.corner = self.historyPointFeatures.to.corner;\r\n\r\n self.historyPointFeatures = null;\r\n }\r\n\r\n // console.log('lineDirection', lineDirection);\r\n };\r\n this.initEvents = () => {\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_MOVE,\r\n onMouseMove,\r\n this,\r\n EventManager.priorities.SEGMENT\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_DOWN,\r\n onMouseDown,\r\n this,\r\n EventManager.priorities.SEGMENT\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_UP,\r\n onMouseUp,\r\n this,\r\n EventManager.priorities.SEGMENT\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_LEAVE,\r\n onMouseLeave,\r\n this,\r\n EventManager.priorities.OVERALL\r\n );\r\n };\r\n this.deregisterEvents = () => {\r\n EventManager.removeEvent(this);\r\n this.from.deregisterEvents();\r\n this.overlay.deregisterEvents();\r\n if (this.bumpoutOverlay) {\r\n this.bumpoutOverlay.deregisterEvents();\r\n }\r\n if (this.miteredOverlay) {\r\n this.miteredOverlay.deregisterEvents();\r\n }\r\n if (this.titleOverlay) {\r\n this.titleOverlay.deregisterEvents();\r\n }\r\n if (this.overlay) {\r\n this.overlay.deregisterEvents();\r\n }\r\n };\r\n this.reInitEvents = () => {\r\n if (state.isHiddenForever) {\r\n return\r\n }\r\n this.initEvents();\r\n this.from.reInitEvents();\r\n if (!this.miteredOverlay) {\r\n this.overlay.reInitEvents();\r\n }\r\n if (this.bumpoutOverlay) {\r\n this.bumpoutOverlay.deregisterEvents();\r\n }\r\n if (this.miteredOverlay) {\r\n this.miteredOverlay.reInitEvents();\r\n }\r\n if (this.titleOverlay) {\r\n this.titleOverlay.reInitEvents();\r\n }\r\n if (this.overlay) {\r\n this.overlay.reInitEvents();\r\n }\r\n };\r\n this.deregisterPartEvents = () => {\r\n if (this.bumpoutOverlay) {\r\n this.bumpoutOverlay.deregisterEvents();\r\n }\r\n if (this.miteredOverlay) {\r\n this.miteredOverlay.deregisterEvents();\r\n }\r\n if (this.underlaymentOverlay) {\r\n this.underlaymentOverlay.deregisterEvents();\r\n }\r\n if (this.labelOverlay) {\r\n this.labelOverlay.deregisterPartEvents();\r\n }\r\n if (this.titleOverlay) {\r\n this.titleOverlay.deregisterPartEvents();\r\n }\r\n if (this.overlay) {\r\n this.overlay.deregisterEvents();\r\n }\r\n this.from.deregisterPartEvents();\r\n };\r\n this.reInitPartEvents = () => {\r\n if (this.bumpoutOverlay) {\r\n this.bumpoutOverlay.reInitEvents();\r\n }\r\n if (this.miteredOverlay) {\r\n this.miteredOverlay.reInitEvents();\r\n }\r\n if (this.underlaymentOverlay) {\r\n this.underlaymentOverlay.deregisterEvents();\r\n }\r\n if (this.labelOverlay) {\r\n this.labelOverlay.reInitPartEvents();\r\n }\r\n if (this.titleOverlay) {\r\n this.titleOverlay.reInitPartEvents();\r\n }\r\n if (this.overlay && !this.miteredOverlay) {\r\n this.overlay.reInitEvents();\r\n }\r\n this.from.reInitPartEvents();\r\n };\r\n this.reInitTitleEvents = () => {\r\n if (this.titleOverlay) {\r\n this.titleOverlay.reInitPartEvents();\r\n }\r\n };\r\n this.destroy = function(protect) {\r\n if (!protect) {\r\n var image = workspace.getImagesAttachedTo(self);\r\n if (image) {\r\n image.destroy();\r\n }\r\n EventManager.removeEvent(self);\r\n self.from.destroy();\r\n if (self.overlay)\r\n self.overlay.destroy();\r\n if (self.miteredOverlay) {\r\n self.miteredOverlay.destroy();\r\n }\r\n }\r\n };\r\n this.moveLine = (mousePos) => {\r\n\r\n // console.log(\"mousePos\", mousePos);\r\n // console.log(\"self.from.x\", self.from.x);\r\n // console.log(\"self.from.x\", self.to.x);\r\n\r\n var scale = workspace.getScale();\r\n\r\n var xDiff = (state.mouseDownPosition.x - mousePos.x) / scale;\r\n var yDiff = (state.mouseDownPosition.y - mousePos.y) / scale;\r\n // var slope = -getSlope(); // OLD LOGIC, let's keep it in case we found an issue with this moveDiagonalLine(see git diff)\r\n\r\n var o = getLineOrientation(this.from, this.to);\r\n if (o === orientation.VERTICAL) {\r\n self.from.x -= xDiff;\r\n self.to.x -= xDiff;\r\n if (self.isWithBumpout()) {\r\n self.bumpoutOverlay.moveBumpout(xDiff, 0);\r\n } else if (self.isWithMitered()) {\r\n self.miteredOverlay.moveMitered(xDiff, 0);\r\n } else if (this.isWithUnderlayment()) {\r\n this.underlaymentOverlay.moveMitered(xDiff, 0);\r\n }\r\n state.mouseDownPosition.x = mousePos.x;\r\n } else if (o === orientation.HORIZONTAL) {\r\n self.from.y -= yDiff;\r\n self.to.y -= yDiff;\r\n if (self.isWithBumpout()) {\r\n self.bumpoutOverlay.moveBumpout(0, yDiff);\r\n } else if (self.isWithMitered()) {\r\n self.miteredOverlay.moveMitered(0, yDiff);\r\n } else if (this.isWithUnderlayment()) {\r\n this.underlaymentOverlay.moveMitered(0, yDiff);\r\n }\r\n state.mouseDownPosition.y = mousePos.y;\r\n } else {\r\n const nextLine = parent.getNextLine(self);\r\n const prevLine = parent.getPrevLine(self);\r\n moveDiagonalLine(self, nextLine, prevLine, state.movePointDistance, yDiff, o);\r\n state.mouseDownPosition = mousePos;\r\n }\r\n // self.from = lockPointToCanvas(self.from); // removed locking because of this issue http://jira.mozidev.com/browse/QC-802\r\n // self.to = lockPointToCanvas(self.to);\r\n\r\n updateShapeWaterfallLength(this);\r\n updateMiteredLength(this);\r\n updateUnderlaymentLength(this);\r\n\r\n const reduxState = store.getState();\r\n const updateCalculations = reduxState.sqftState.updateCalculations;\r\n store.dispatch(updateSQFTCalculations(updateCalculations + 1));\r\n };\r\n this.getLineDirection = function() {\r\n return parent.getAngleDirection(self); // line text direction\r\n };\r\n this.getLineDirectionV2 = function() {\r\n return getLineDirection(this.from, this.to); // line text direction\r\n };\r\n this.getPairedLines = function() {\r\n let pairedLines = [];\r\n switch (parent.shapeType) {\r\n case \"horseshoe\": {\r\n const prevLine = parent.getPrevLine(self);\r\n const nextLine = parent.getNextLine(self);\r\n const prevLineStep2 = parent.getPrevLine(prevLine);\r\n const nextLineStep2 = parent.getNextLine(nextLine);\r\n const prevLineStep3 = parent.getPrevLine(prevLineStep2);\r\n const nextLineStep3 = parent.getNextLine(nextLineStep2);\r\n\r\n pairedLines = [nextLineStep3, prevLineStep3];\r\n break;\r\n }\r\n default:\r\n pairedLines = [parent.getPrevLine(self), parent.getNextLine(self)];\r\n break;\r\n }\r\n\r\n return pairedLines;\r\n };\r\n this.getLineLength = function () {\r\n let distance = getPointDistance(self.from, self.to);\r\n\r\n return self.addDecimalToLength(measureDistanceToInches(distance))\r\n };\r\n\r\n this.getLineLengthMm = function () {\r\n let distance = getPointDistance(self.from, self.to);\r\n\r\n return measureDistanceToInches(distance).millimeters\r\n };\r\n\r\n this.getLineDistance = function () {\r\n return getPointDistance(self.from, self.to);\r\n };\r\n\r\n this.getLineBumpoutTotalHeight = function () {\r\n return self.addDecimalToLength(self.bumpoutOverlay.getBumpoutTotalHeight())\r\n };\r\n\r\n this.addDecimalToLength = function(lineLength) {\r\n return addDecimalToLength(lineLength);\r\n };\r\n this.getBiggestXPoint = function() {\r\n return self.from.x > self.to.x ? self.from : self.to\r\n };\r\n this.getBiggestYPoint = function() {\r\n return self.from.y > self.to.y ? self.from : self.to\r\n };\r\n this.getSmallestXPoint = function() {\r\n return self.from.x < self.to.x ? self.from : self.to\r\n };\r\n this.getSmallestYPoint = function() {\r\n return self.from.y < self.to.y ? self.from : self.to\r\n };\r\n /**\r\n * @deprecated use getLinePointsWithoutCorners\r\n * @return {[null, null, (\"default\"|*), (\"default\"|*)]}\r\n */\r\n this.getSmallestAndBiggestPointWithCorners = () => {\r\n let o = getLineOrientation(this.from, this.to),\r\n lineDirection = this.getLineDirection(),\r\n //nextLine = parent.getNextLine(self),\r\n prevLine = parent.getPrevLine(self),\r\n toCornerLength = self.to.getArcLength() || self.get45CornerLegDistance(),\r\n fromCornerLength = prevLine.to.getArcLength() || prevLine.get45CornerLegDistance(),\r\n toLinePoint = Object.assign({}, self.to),\r\n fromLinePoint = Object.assign({}, self.from),\r\n biggestLinePoint = null,\r\n smallestLinePoint = null,\r\n toCornerMargin = null,\r\n fromCornerMargin = null;\r\n\r\n if (o === orientation.VERTICAL) {\r\n //line biggest and smallest points\r\n biggestLinePoint = Object.assign({}, this.getBiggestYPoint());\r\n smallestLinePoint = Object.assign({}, this.getSmallestYPoint());\r\n if (lineDirection.newDirection === \"north\" ) {\r\n toCornerMargin = -fromCornerLength;\r\n fromCornerMargin = +toCornerLength;\r\n toLinePoint.y += fromCornerMargin;\r\n fromLinePoint.y += toCornerMargin;\r\n } else {\r\n toCornerMargin = -toCornerLength;\r\n fromCornerMargin = +fromCornerLength;\r\n toLinePoint.y += toCornerMargin;\r\n fromLinePoint.y += fromCornerMargin;\r\n }\r\n biggestLinePoint.y += toCornerMargin;\r\n smallestLinePoint.y += fromCornerMargin;\r\n } else if (o === orientation.HORIZONTAL) {\r\n //line biggest and smallest points\r\n biggestLinePoint = Object.assign({}, this.getBiggestXPoint());\r\n smallestLinePoint = Object.assign({}, this.getSmallestXPoint());\r\n if (lineDirection.newDirection === \"east\" ) {\r\n toCornerMargin = -toCornerLength;\r\n fromCornerMargin = +fromCornerLength;\r\n toLinePoint.x += toCornerMargin;\r\n fromLinePoint.x += fromCornerMargin;\r\n } else {\r\n toCornerMargin = -fromCornerLength;\r\n fromCornerMargin = +toCornerLength;\r\n toLinePoint.x += fromCornerMargin;\r\n fromLinePoint.x += toCornerMargin;\r\n }\r\n biggestLinePoint.x += toCornerMargin;\r\n smallestLinePoint.x += fromCornerMargin;\r\n }\r\n\r\n return [smallestLinePoint, biggestLinePoint, toLinePoint, fromLinePoint]\r\n };\r\n this.getLinePointsWithoutCorners = () => {\r\n let toCornerLength = this.to.getArcLength(),\r\n toAngleLength = this.to.getAngle(),\r\n fromCornerLength = this.from.getArcLength(),\r\n fromAngleLength = this.from.getAngle();\r\n\r\n const toPoint = getPointOnTheLine(this.to, this.from, -toCornerLength || -toAngleLength);\r\n const fromPoint = getPointOnTheLine(this.from, this.to, -fromCornerLength || -fromAngleLength);\r\n\r\n return [fromPoint, toPoint]\r\n }\r\n this.getOffset = function() {\r\n var scale = config.scale;\r\n var workspacePos = workspace.getOffset();\r\n if (parent) {\r\n var _pos = parent.getPosition();\r\n if (config.workspace.snapToGrid) {\r\n _pos = parent.getSnappedPosition();\r\n }\r\n var offset = {\r\n x: workspacePos.x + (_pos.x * scale),\r\n y: workspacePos.y + (_pos.y * scale)\r\n }\r\n } else {\r\n return {x: 0, y: 0};\r\n }\r\n return offset;\r\n };\r\n this.stealCursor = function(who) {\r\n if (self.from === who) {\r\n EventManager.resetCursor(self);\r\n }\r\n };\r\n this.resetState = () => {\r\n state.mouseDown = false;\r\n state.mouseDownPosition = null;\r\n state.isHovering = false;\r\n };\r\n this.hasIntersections = () => {\r\n const lines = parent.getLines();\r\n const fromPosition = getPointField(this.from.x, this.from.y);\r\n const toPosition = getPointField(this.to.x, this.to.y);\r\n\r\n return lines.some(testLine => {\r\n const prevLine = parent.getPrevLine(this);\r\n const nextLine = parent.getNextLine(this);\r\n // skip closest lines\r\n if (testLine.id === this.id || testLine.id === prevLine.id || testLine.id === nextLine.id) {\r\n return false\r\n }\r\n const testLineFromPosition = getPointField(testLine.from.x, testLine.from.y);\r\n const testLineToPosition = getPointField(testLine.to.x, testLine.to.y);\r\n const intersections = getIntersectCordsBetweenLines(\r\n fromPosition, toPosition, testLineFromPosition, testLineToPosition\r\n )\r\n void intersections;\r\n // console.log(\"intersections\", intersections);\r\n // if (intersections) {\r\n // console.log(\"fromPosition\", fromPosition);\r\n // console.log(\"toPosition\", toPosition);\r\n // console.log(\"testLineFromPosition\", testLineFromPosition);\r\n // console.log(\"testLineToPosition\", testLineToPosition);\r\n // }\r\n return intersections\r\n })\r\n }\r\n\r\n /**\r\n * This will render blue shape\r\n * @param ctx\r\n * @param toOnly\r\n * @param sqftMode\r\n */\r\n this.render = (ctx, toOnly, sqftMode) => {\r\n this.renderLineBorder(ctx, toOnly, sqftMode);\r\n }\r\n\r\n /**\r\n * This will render blue shape\r\n * @param ctx\r\n * @param toOnly\r\n * @param sqftMode\r\n */\r\n this.renderLineBorder = (ctx, toOnly, sqftMode) => {\r\n if (workspace && workspace.getState().loading) return;\r\n this.ctx = ctx;\r\n toOnly = toOnly || false;\r\n const renderTo = self.calculateRenderPosition(self.to, sqftMode);\r\n const renderFrom = self.calculateRenderPosition(self.from, sqftMode);\r\n // if (!toOnly) {\r\n // let x = renderFrom.x;\r\n // let y = renderFrom.y;\r\n // if (self.from.arcLength > 0 || self.from.angle > 0) {\r\n // const radius = Math.sqrt(Math.pow(self.from.arcLength || self.from.angle, 2) / 2) * config.scale;\r\n // const o = getLineOrientation(this.from, this.to);\r\n // switch(o) {\r\n // case orientation.HORIZONTAL:\r\n // if (self.from.x < self.to.x)\r\n // x += radius;\r\n // else\r\n // x -= radius;\r\n // break;\r\n // case orientation.VERTICAL:\r\n // if (self.from.y < self.to.y)\r\n // y += radius;\r\n // else\r\n // y -= radius;\r\n // break;\r\n // case orientation.NORTHWEST:\r\n // case orientation.SOUTHEAST:\r\n // case orientation.NORTHEAST:\r\n // case orientation.SOUTHWEST:\r\n // //todo\r\n // break;\r\n // }\r\n // }\r\n // ctx.moveTo(x, y);\r\n // }\r\n\r\n if (state.withBumpout && !SqftStore.isSlabMode() && !this.isDisabledInPopup) {\r\n drawBumpoutLine(ctx);\r\n }\r\n // don't render arc Length and angle in the slab mode\r\n if (self.to.arcLength > 0 && !SqftStore.isSlabMode()) { // changes blue corner if radius or angle exists\r\n this.renderArcLength(ctx, renderFrom, renderTo);\r\n } else if (self.to.angle > 0) {\r\n this.renderAngle(ctx, renderFrom, renderTo);\r\n } else {\r\n ctx.lineTo(renderTo.x, renderTo.y);\r\n }\r\n }\r\n\r\n this.renderArcLength = (ctx, renderFrom, renderTo) => {\r\n let radiusMultiplier = this.to.arcLength;\r\n let radius = radiusMultiplier * config.scale;\r\n let dir = parent.getAngleDirection(this);\r\n\r\n switch (dir.orientation) {\r\n case \"horizontal\":\r\n case \"vertical\":\r\n case \"NORTHWEST\":\r\n case \"NORTHEAST\":\r\n case \"SOUTHWEST\":\r\n case \"SOUTHEAST\":\r\n default: {\r\n const nextLine = parent.getNextLine(this);\r\n const nextLineRenderTo = nextLine.calculateRenderPosition(nextLine.to);\r\n const angle = getAngleBetween3Points(renderFrom, renderTo, nextLineRenderTo);\r\n const radiusMultiplier = this.to.arcLength * config.scale;\r\n const marginFrom = Math.abs(radiusMultiplier / getTanDeg(Math.round(angle / 2)));\r\n const pointA = getPointBetweenPoints(renderTo, renderFrom, marginFrom); // *2 is made to fit arcTo\r\n const pointB = getPointBetweenPoints(renderTo, self.calculateRenderPosition(nextLine.to), radius);\r\n\r\n ctx.lineTo(pointA.x, pointA.y);\r\n //ctx.lineTo(renderFrom.x, renderFrom.y)\r\n ctx.arcTo(renderTo.x, renderTo.y, pointB.x, pointB.y, radius);\r\n break;\r\n }\r\n }\r\n };\r\n this.renderAngle = (ctx, renderFrom, renderTo) => {\r\n let radiusMultiplier = Math.sqrt( Math.pow(this.to.angle, 2) * 2); //todo\r\n let radius = radiusMultiplier * config.scale;\r\n let dir = parent.getAngleDirection(this);\r\n\r\n switch (dir.orientation) {\r\n case \"horizontal\":\r\n case \"vertical\":\r\n case \"NORTHWEST\":\r\n case \"NORTHEAST\":\r\n case \"SOUTHWEST\":\r\n case \"SOUTHEAST\": {\r\n const nextLine = parent.getNextLine(this);\r\n const nextLineRenderTo = this.calculateRenderPosition(nextLine.to);\r\n const pointA = getPointBetweenPoints(renderTo, renderFrom, radius / 2);\r\n const pointB = getPointBetweenPoints(renderTo, nextLineRenderTo, radius / 2);\r\n ctx.lineTo(pointA.x, pointA.y);\r\n ctx.lineTo(pointB.x, pointB.y);\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n this.renderLineOverlay = function(ctx) {\r\n lineLength.render(ctx, self);\r\n };\r\n\r\n const highLightBorder = (color) => {\r\n if (!self.from.angleIsChanged && !self.to.angleIsChanged) {\r\n let [fromPointWithIndent, toPointWithIndent] = this.getLinePointsWithoutCorners(),\r\n renderFrom = getPointField(fromPointWithIndent.x, fromPointWithIndent.y, this),\r\n renderTo = getPointField(toPointWithIndent.x, toPointWithIndent.y, this);\r\n //\r\n // let [smallestLinePoint, biggestLinePoint, to, from] = self.getSmallestAndBiggestPointWithCorners(),\r\n // renderFrom1 = self.calculateRenderPosition(from),\r\n // renderTo1 = self.calculateRenderPosition(to);\r\n //\r\n // void smallestLinePoint;\r\n // void biggestLinePoint;\r\n // console.log(\"renderFrom\", renderFrom);\r\n // console.log(\"renderFrom1\", renderFrom1);\r\n //\r\n // console.log(\"renderTo\", renderTo);\r\n // console.log(\"renderTo1\", renderTo1);\r\n //\r\n // debugger // eslint-disable-line no-debugger\r\n self.ctx.beginPath();\r\n self.ctx.moveTo(renderFrom.x, renderFrom.y);\r\n if (state.withBumpout) {\r\n drawBumpoutLine(self.ctx);\r\n }\r\n self.ctx.lineTo(renderTo.x, renderTo.y);\r\n self.ctx.lineWidth = 4;\r\n self.ctx.strokeStyle = color;\r\n self.ctx.stroke();\r\n self.ctx.closePath();\r\n\r\n /*var lineField = getLineField();\r\n var field = lineField.points;\r\n self.from.render(self.ctx);\r\n\r\n self.ctx.save();\r\n self.ctx.beginPath();\r\n self.ctx.moveTo(field[0].x, field[0].y);\r\n for(var i = 1; i < field.length; i++) {\r\n var p = field[i];\r\n var x = p.x, y = p.y;\r\n self.ctx.lineTo(x, y);\r\n }\r\n self.ctx.closePath();\r\n self.ctx.fillStyle = 'rgba(159,197,34,0.47)';\r\n self.ctx.fill();\r\n self.ctx.restore();*/ // this is old hovering, m.b. would be needed for tests\r\n }\r\n }\r\n\r\n function drawBumpoutLine(ctx) {\r\n var bumpoutPoints = self.bumpoutOverlay.getBumpoutPoints(),\r\n point1 = self.calculateRenderPosition(bumpoutPoints.point1),\r\n point2 = self.calculateRenderPosition(bumpoutPoints.point2),\r\n point3 = self.calculateRenderPosition(bumpoutPoints.point3),\r\n point4 = self.calculateRenderPosition(bumpoutPoints.point4);\r\n\r\n ctx.lineTo(point1.x, point1.y);\r\n ctx.lineTo(point2.x, point2.y);\r\n ctx.lineTo(point3.x, point3.y);\r\n ctx.lineTo(point4.x, point4.y);\r\n }\r\n\r\n const drawResizeCursor = () => {\r\n var\r\n renderFrom = self.calculateRenderPosition(self.from),\r\n renderTo = self.calculateRenderPosition(self.to);\r\n var o = getLineOrientation(this.from, this.to);\r\n const size = +self.tutorialImage.dataset.size;\r\n if (o === orientation.VERTICAL) {\r\n self.ctx.drawImage(self.tutorialImage, 0, 0, size, size, renderFrom.x - size/2, renderFrom.y - (renderFrom.y - renderTo.y)/2 - size/2, size, size);\r\n } else if (o === orientation.HORIZONTAL) {\r\n self.ctx.drawImage(self.tutorialImage, 0, 0, size, size, renderFrom.x - (renderFrom.x - renderTo.x)/2 - size/2, renderFrom.y - size/2, size, size);\r\n }\r\n }\r\n\r\n this.setLinePoints = () => {\r\n let renderFrom = self.calculateRenderPosition(self.from),\r\n renderTo = self.calculateRenderPosition(self.to),\r\n marginFrom = 0,\r\n marginTo = 0,\r\n //len = 0,\r\n afterIntersectionMargin = 9;\r\n const prevLine = parent.getPrevLine(self);\r\n const nextLine = parent.getNextLine(self);\r\n lineDirection = parent.getAngleDirection(self);\r\n\r\n if (this.from.arcLength > 0) {\r\n const prevLineRenderFrom = prevLine.calculateRenderPosition(prevLine.from);\r\n const angle = getAngleBetween3Points(prevLineRenderFrom, renderFrom, renderTo);\r\n const radiusMultiplier = self.from.arcLength * config.scale;\r\n marginFrom = Math.abs(radiusMultiplier / getTanDeg(Math.round(angle / 2))) ;\r\n\r\n // console.clear();\r\n // console.log(\"self.from.arcLength\", self.from.arcLength);\r\n // console.log(\"radiusMultiplier\", radiusMultiplier);\r\n // console.log(\"marginFrom\", marginFrom);\r\n // console.log(\"angle\", angle);\r\n // console.log(\"getTanDeg(Math.round(angle / 2))\", getTanDeg(Math.round(angle / 2)));\r\n // console.log(\"marginFrom < radiusMultiplier\", marginFrom < radiusMultiplier);\r\n } else if (this.from.angle > 0) {\r\n marginFrom = self.from.angle * config.scale / 1.48 + design.outlineMargin; // +design.outlineMargin is to prevent overlapping\r\n }\r\n\r\n if (this.to.arcLength > 0) {\r\n const nextLineRenderTo = nextLine.calculateRenderPosition(nextLine.to);\r\n const angle = getAngleBetween3Points(renderFrom, renderTo, nextLineRenderTo);\r\n const radiusMultiplier = this.to.arcLength * config.scale;\r\n marginTo = Math.abs(radiusMultiplier / getTanDeg(Math.round(angle / 2)));\r\n // console.clear();\r\n // console.log(\"self.to.arcLength\", self.to.arcLength);\r\n // console.log(\"radiusMultiplier\", radiusMultiplier);\r\n // console.log(\"marginTo\", marginTo);\r\n // console.log(\"angle\", angle);\r\n // console.log(\"getTanDeg(Math.round(angle / 2))\", getTanDeg(Math.round(angle / 2)));\r\n // console.log(\"marginFrom < radiusMultiplier\", marginTo < radiusMultiplier);\r\n } else if (this.to.angle > 0) {\r\n marginTo = self.to.angle * config.scale / 1.48; // not sure why 1.48\r\n }\r\n\r\n self.drawLineFrom = self.drawLineFrom || null;\r\n self.drawLineTo = self.drawLineTo || null;\r\n if (state.withBumpout) {\r\n var bumpoutPoints = self.bumpoutOverlay.getBumpoutPoints(),\r\n point1 = self.calculateRenderPosition(bumpoutPoints.point1),\r\n point2 = self.calculateRenderPosition(bumpoutPoints.point2),\r\n point3 = self.calculateRenderPosition(bumpoutPoints.point3),\r\n point4 = self.calculateRenderPosition(bumpoutPoints.point4);\r\n\r\n self.drawLineBumpoutPoints = self.drawLineBumpoutPoints || null;\r\n }\r\n\r\n //let prevParallelLine, nextParallelLine, rotateAnglePart, rotatedAngleValue;\r\n\r\n\r\n if (lineDirection.orientation !== \"horizontal\" && lineDirection.orientation !== \"vertical\") {\r\n //nextLineDirection = parent.getAngleDirection(nextLine);\r\n //prevLineDirection = parent.getAngleDirection(prevLine);\r\n // prevParallelLine = parent.getPrevLine(prevLine);\r\n // nextParallelLine = parent.getNextLine(nextLine);\r\n // rotateAnglePart = self.from.rotateAnglePart;\r\n // rotatedAngleValue = self.from.rotateAnglePart ? self.from.rotateAnglePart.rotatedAngleValue : 0;\r\n }\r\n\r\n switch (lineDirection.orientation) {\r\n case \"horizontal\":\r\n if (lineDirection.newDirection === 'east') {\r\n marginFrom = (prevLine.getLineDirection().newDirection === 'south') ? marginFrom + 18 : marginFrom;\r\n marginTo = (nextLine.getLineDirection().newDirection === 'north') ? marginTo + 18 : marginTo;\r\n self.drawLineFrom = {x: renderFrom.x + marginFrom, y: renderFrom.y - 9};\r\n self.drawLineTo = {x: renderTo.x - marginTo, y: renderTo.y - 9};\r\n if (state.withBumpout) {\r\n self.drawLineBumpoutPoints = this.bumpoutOverlay.bumpoutInOrOut() === 'out' ?\r\n {\r\n point1: {x: point1.x - 9, y: renderTo.y - 9},\r\n point2: {x: point2.x - 9, y: point2.y - 9},\r\n point3: {x: point3.x + 9, y: point3.y - 9},\r\n point4: {x: point4.x + 9, y: point4.y - 9},\r\n } : {\r\n point1: {x: point1.x + 9, y: renderTo.y - 9},\r\n point2: {x: point2.x + 9, y: point2.y - 9},\r\n point3: {x: point3.x - 9, y: point3.y - 9},\r\n point4: {x: point4.x - 9, y: point4.y - 9},\r\n }\r\n }\r\n setPointsOutlineIntersection(prevLine, nextLine);\r\n self.drawLineFrom = {x: self.drawLineFrom.x + afterIntersectionMargin, y: self.drawLineFrom.y};\r\n self.drawLineTo = {x: self.drawLineTo.x - afterIntersectionMargin, y: self.drawLineTo.y};\r\n } else if (lineDirection.newDirection === \"west\") {\r\n marginFrom = (prevLine.getLineDirection().newDirection === 'north') ? marginFrom + 18 : marginFrom;\r\n marginTo = (nextLine.getLineDirection().newDirection === 'south') ? marginTo + 18 : marginTo;\r\n self.drawLineFrom = {x: renderFrom.x - marginFrom, y: renderFrom.y + 9};\r\n self.drawLineTo = {x: renderTo.x + 1 + marginTo, y: renderTo.y + 9};\r\n\r\n if (state.withBumpout) {\r\n self.drawLineBumpoutPoints = this.bumpoutOverlay.bumpoutInOrOut() === 'out' ?\r\n {\r\n point1: {x: point1.x + 9, y: renderTo.y + 9},\r\n point2: {x: point2.x + 9, y: point2.y + 9},\r\n point3: {x: point3.x - 9, y: point3.y + 9},\r\n point4: {x: point4.x - 9, y: point4.y + 9},\r\n } : {\r\n point1: {x: point1.x - 9, y: renderTo.y + 9},\r\n point2: {x: point2.x - 9, y: point2.y + 9},\r\n point3: {x: point3.x + 9, y: point3.y + 9},\r\n point4: {x: point4.x + 9, y: point4.y + 9},\r\n }\r\n }\r\n setPointsOutlineIntersection(prevLine, nextLine);\r\n self.drawLineFrom = {x: self.drawLineFrom.x - afterIntersectionMargin, y: self.drawLineFrom.y};\r\n self.drawLineTo = {x: self.drawLineTo.x + afterIntersectionMargin, y: self.drawLineTo.y};\r\n }\r\n break;\r\n case \"vertical\":\r\n if (lineDirection.newDirection === 'south') {\r\n marginFrom = (prevLine.getLineDirection().newDirection === 'west') ? marginFrom + 18 : marginFrom;\r\n marginTo = (nextLine.getLineDirection().newDirection === 'east') ? marginTo + 18 : marginTo;\r\n self.drawLineFrom = {x: renderFrom.x + 9, y: renderFrom.y + marginFrom};\r\n self.drawLineTo = {x: renderTo.x + 9, y: renderTo.y - marginTo};\r\n if (state.withBumpout) {\r\n self.drawLineBumpoutPoints = this.bumpoutOverlay.bumpoutInOrOut() === 'out' ?\r\n {\r\n point1: {x: point1.x + 9, y: point1.y - 9},\r\n point2: {x: point2.x + 9, y: point2.y - 9},\r\n point3: {x: point3.x + 9, y: point3.y + 9},\r\n point4: {x: point4.x + 9, y: point4.y + 9},\r\n } : {\r\n point1: {x: point1.x + 9, y: point1.y + 9},\r\n point2: {x: point2.x + 9, y: point2.y + 9},\r\n point3: {x: point3.x + 9, y: point3.y - 9},\r\n point4: {x: point4.x + 9, y: point4.y - 9},\r\n }\r\n }\r\n setPointsOutlineIntersection(prevLine, nextLine);\r\n self.drawLineFrom = {x: self.drawLineFrom.x, y: self.drawLineFrom.y + afterIntersectionMargin};\r\n self.drawLineTo = {x: self.drawLineTo.x, y: self.drawLineTo.y - afterIntersectionMargin};\r\n } else if (lineDirection.newDirection === 'north') {\r\n marginTo = (nextLine.getLineDirection().newDirection === 'west') ? marginTo + 18 : marginTo;\r\n marginFrom = (prevLine.getLineDirection().newDirection === 'east') ? marginFrom + 18 : marginFrom;\r\n self.drawLineFrom = {x: renderFrom.x - 9, y: renderFrom.y - marginFrom};\r\n self.drawLineTo = {x: renderTo.x - 9, y: renderTo.y + marginTo};\r\n if (state.withBumpout) {\r\n self.drawLineBumpoutPoints = this.bumpoutOverlay.bumpoutInOrOut() === 'out' ?\r\n {\r\n point1: {x: point1.x - 9, y: point1.y + 9},\r\n point2: {x: point2.x - 9, y: point2.y + 9},\r\n point3: {x: point3.x - 9, y: point3.y - 9},\r\n point4: {x: point4.x - 9, y: point4.y - 9},\r\n } : {\r\n point1: {x: point1.x - 9, y: point1.y - 9},\r\n point2: {x: point2.x - 9, y: point2.y - 9},\r\n point3: {x: point3.x - 9, y: point3.y + 9},\r\n point4: {x: point4.x - 9, y: point4.y + 9},\r\n }\r\n }\r\n setPointsOutlineIntersection(prevLine, nextLine);\r\n self.drawLineFrom = {x: self.drawLineFrom.x, y: self.drawLineFrom.y - afterIntersectionMargin};\r\n self.drawLineTo = {x: self.drawLineTo.x, y: self.drawLineTo.y + afterIntersectionMargin};\r\n }\r\n break;\r\n case \"NORTHWEST\":\r\n case \"NORTHEAST\":\r\n case \"SOUTHWEST\":\r\n case \"SOUTHEAST\":\r\n default: {\r\n let distanceFromLine = 9;\r\n if (marginFrom) {\r\n const prevLineFrom = this.calculateRenderPosition(prevLine.from);\r\n if (isInnerCorner(parent, renderFrom, renderTo, prevLineFrom)) {\r\n marginFrom = marginFrom + 8;\r\n }\r\n renderFrom = getPointOnTheLine(renderFrom, renderTo, -marginFrom);\r\n }\r\n if (marginTo) {\r\n const nextLineTo = this.calculateRenderPosition(nextLine.to);\r\n if (isInnerCorner(parent, renderFrom, renderTo, nextLineTo)) {\r\n marginTo = marginTo + 8;\r\n }\r\n renderTo = getPointOnTheLine(renderTo, renderFrom, -marginTo);\r\n }\r\n\r\n [this.drawLineFrom, this.drawLineTo] = getParallelPoints(renderTo, renderFrom, distanceFromLine);\r\n setPointsOutlineIntersection(prevLine, nextLine);\r\n }\r\n break;\r\n// case \"SOUTHEAST\": {\r\n// if (rotateAnglePart && rotateAnglePart.angleDirection === \"right\") {\r\n// if (rotatedAngleValue < 90) {\r\n// self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(nextParallelLine.to));\r\n// self.drawLineTo = getParralelPoint(self.calculateRenderPosition(nextLine.from), self.calculateRenderPosition(nextLine.to));\r\n// } else {\r\n// self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(prevLine.from));\r\n// self.drawLineTo = getParralelPoint(renderTo, self.calculateRenderPosition(nextLine.to));\r\n// }\r\n// } else if (rotateAnglePart && rotateAnglePart.angleDirection === \"left\") {\r\n// self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(prevLine.from));\r\n// self.drawLineTo = getParralelPoint(renderTo, self.calculateRenderPosition(prevParallelLine.from))\r\n// } else {\r\n// [this.drawLineFrom, this.drawLineTo] = getParallelPoints(renderTo, renderFrom, 9);\r\n//\r\n// RenderFigures.renderCircle(this.drawLineFrom, 12,1, '#63b141');\r\n// RenderFigures.renderCircle(this.drawLineTo, 10, 1);\r\n//\r\n// debugger // eslint-disable-line no-debugger\r\n//\r\n// // self.drawLineFrom = {x: renderFrom.x + 9, y: renderFrom.y - 9};\r\n// // self.drawLineTo = {x: renderTo.x + 9, y: renderTo.y - 9};\r\n// setPointsOutlineIntersection(prevLine, nextLine);\r\n// }\r\n// if (marginFrom) {\r\n// self.drawLineFrom = getPointBetweenPoints(self.drawLineFrom, self.drawLineTo, marginFrom)\r\n// }\r\n// if (marginTo) {\r\n// self.drawLineTo = getPointBetweenPoints(self.drawLineTo, self.drawLineFrom, marginTo)\r\n// }\r\n// break;\r\n// }\r\n// case \"NORTHEAST\": {\r\n// if (rotateAnglePart && rotateAnglePart.angleDirection === \"right\") {\r\n// self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(nextParallelLine.to));\r\n// self.drawLineTo = getParralelPoint(renderTo, self.calculateRenderPosition(nextLine.to));\r\n// } else if (rotateAnglePart && rotateAnglePart.angleDirection === \"left\") {\r\n// if (rotatedAngleValue < 90) {\r\n// self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(prevLine.from));\r\n// self.drawLineTo = getParralelPoint(renderTo, self.calculateRenderPosition(prevParallelLine.from));\r\n// } else {\r\n// // self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(prevLine.from));\r\n// self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(nextParallelLine.to));\r\n// self.drawLineTo = getParralelPoint(renderTo, self.calculateRenderPosition(nextLine.to));\r\n// }\r\n// } else {\r\n// // self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(nextParallelLine.to));\r\n// // self.drawLineTo = getParralelPoint(renderTo, self.calculateRenderPosition(nextLine.to));\r\n// self.drawLineFrom = {x: renderFrom.x - 9, y: renderFrom.y - 9};\r\n// self.drawLineTo = {x: renderTo.x - 9, y: renderTo.y - 9};\r\n// setPointsOutlineIntersection(prevLine, nextLine);\r\n// }\r\n// if (marginFrom) {\r\n// self.drawLineFrom = getPointBetweenPoints(self.drawLineFrom, self.drawLineTo, marginFrom)\r\n// }\r\n// if (marginTo) {\r\n// self.drawLineTo = getPointBetweenPoints(self.drawLineTo, self.drawLineFrom, marginTo)\r\n// }\r\n// break;\r\n// }\r\n// case \"SOUTHWEST\": {\r\n// if (rotateAnglePart && rotateAnglePart.angleDirection === \"right\") {\r\n// if (rotatedAngleValue < 90 && rotateAnglePart && rotateAnglePart.shapeType !== \"wideangle\") {\r\n// self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(prevLine.from));\r\n// self.drawLineTo = getParralelPoint(renderTo, self.calculateRenderPosition(nextLine.to));\r\n// } else {\r\n// self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(prevLine.from));\r\n// self.drawLineTo = getParralelPoint(renderTo, self.calculateRenderPosition(prevParallelLine.from));\r\n// }\r\n// } else if (rotateAnglePart && rotateAnglePart.angleDirection === \"left\") {\r\n// if (rotatedAngleValue < 90) {\r\n// self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(nextParallelLine.to));\r\n// self.drawLineTo = getParralelPoint(renderTo, self.calculateRenderPosition(nextLine.to));\r\n// } else {\r\n// self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(prevLine.from));\r\n// self.drawLineTo = getParralelPoint(renderTo, self.calculateRenderPosition(prevParallelLine.from));\r\n// }\r\n// } else {\r\n// // self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(nextParallelLine.to));\r\n// // self.drawLineTo = getParralelPoint(renderTo, self.calculateRenderPosition(nextLine.to));\r\n// self.drawLineFrom = {x: renderFrom.x + 9, y: renderFrom.y + 9};\r\n// self.drawLineTo = {x: renderTo.x + 9, y: renderTo.y + 9};\r\n// setPointsOutlineIntersection(prevLine, nextLine);\r\n// }\r\n// if (marginFrom) {\r\n// self.drawLineFrom = getPointBetweenPoints(self.drawLineFrom, self.drawLineTo, marginFrom)\r\n// }\r\n// if (marginTo) {\r\n// self.drawLineTo = getPointBetweenPoints(self.drawLineTo, self.drawLineFrom, marginTo)\r\n// }\r\n// break;\r\n// }\r\n// case \"NORTHWEST\": {\r\n// if (rotateAnglePart && rotateAnglePart.angleDirection === \"right\") {\r\n// self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(prevLine.from));\r\n// self.drawLineTo = getParralelPoint(renderTo, self.calculateRenderPosition(prevParallelLine.from));\r\n// } else if (rotateAnglePart && rotateAnglePart.angleDirection === \"left\") {\r\n// if (rotatedAngleValue < 90) {\r\n// // self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(prevLine.from));\r\n// self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(nextParallelLine.to));\r\n// self.drawLineTo = getParralelPoint(renderTo, self.calculateRenderPosition(nextLine.to));\r\n// } else {\r\n// self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(nextParallelLine.to));\r\n// self.drawLineTo = getParralelPoint(renderTo, self.calculateRenderPosition(nextLine.to));\r\n// }\r\n// } else {\r\n// // self.drawLineFrom = getParralelPoint(renderFrom, self.calculateRenderPosition(prevLine.from));\r\n// // self.drawLineTo = getParralelPoint(renderTo, self.calculateRenderPosition(nextLine.to));\r\n//\r\n// self.drawLineFrom = {x: renderFrom.x - 9, y: renderFrom.y + 9};\r\n// self.drawLineTo = {x: renderTo.x - 9, y: renderTo.y + 9};\r\n// setPointsOutlineIntersection(prevLine, nextLine);\r\n// }\r\n// if (marginFrom) {\r\n// self.drawLineFrom = getPointBetweenPoints(self.drawLineFrom, self.drawLineTo, marginFrom)\r\n// }\r\n// if (marginTo) {\r\n// self.drawLineTo = getPointBetweenPoints(self.drawLineTo, self.drawLineFrom, marginTo)\r\n// }\r\n// break;\r\n// }\r\n //default:\r\n }\r\n };\r\n const setPointsOutlineIntersection = (prevLine, nextLine) => {\r\n const fromBorderIntersectionPoint = getBorderFromIntersection(prevLine);\r\n const fromOutlineIntersectionPoint = getOutlineFromIntersection(prevLine);\r\n if ((fromBorderIntersectionPoint || fromOutlineIntersectionPoint)\r\n && !(this.from.isWithAngle())\r\n && !(this.from.isWithCorner())\r\n ) {\r\n let intersectionPoints = [];\r\n if (fromBorderIntersectionPoint) intersectionPoints.push(fromBorderIntersectionPoint);\r\n if (fromOutlineIntersectionPoint) intersectionPoints.push(fromOutlineIntersectionPoint);\r\n const closestIntersectionPoint = getClosestPoint(self.drawLineTo, intersectionPoints);\r\n\r\n // render dev circles intersection\r\n // if (lineDirection.orientation === \"NORTHWEST\") {\r\n // if (fromBorderIntersectionPoint) RenderFigures.renderCircle(fromBorderIntersectionPoint, 10,1, '#e5bf37')\r\n // if (fromOutlineIntersectionPoint) RenderFigures.renderCircle(fromOutlineIntersectionPoint, 10,1, '#de5f5f')\r\n // RenderFigures.renderCircle(closestIntersectionPoint, 20,1, '#63b141');\r\n // RenderFigures.renderCircle(self.drawLineTo, 25, 1);\r\n // debugger // eslint-disable-line no-debugger\r\n // }\r\n if (closestIntersectionPoint.x && closestIntersectionPoint.y) {\r\n this.drawLineFrom = {x: closestIntersectionPoint.x, y: closestIntersectionPoint.y};\r\n }\r\n }\r\n\r\n const toBorderIntersectionPoint = getBorderToIntersection(nextLine);\r\n const toOutlineIntersectionPoint = getOutlineToIntersection(nextLine);\r\n\r\n if ((toBorderIntersectionPoint || toOutlineIntersectionPoint)\r\n && !(this.to.isWithAngle())\r\n && !(this.to.isWithCorner())\r\n ) {\r\n let intersectionPoints = [];\r\n if (toBorderIntersectionPoint) { intersectionPoints.push(toBorderIntersectionPoint)}\r\n if (toOutlineIntersectionPoint) { intersectionPoints.push(toOutlineIntersectionPoint)}\r\n const closestIntersectionPoint = getClosestPoint(self.drawLineFrom, intersectionPoints);\r\n void RenderFigures.renderCircle;\r\n // if (lineDirection.orientation === \"SOUTHWEST\") {\r\n // if (toBorderIntersectionPoint) RenderFigures.renderCircle(toBorderIntersectionPoint, 10,1, '#e5bf37')\r\n // if (toOutlineIntersectionPoint) RenderFigures.renderCircle(toOutlineIntersectionPoint, 15,1, '#de5f5f')\r\n // RenderFigures.renderCircle(closestIntersectionPoint, 20, 1, '#63b141');\r\n // RenderFigures.renderCircle(self.drawLineFrom, 25);\r\n // debugger // eslint-disable-line no-debugger\r\n // }\r\n if (closestIntersectionPoint.x && closestIntersectionPoint.y) {\r\n this.drawLineTo = {x: closestIntersectionPoint.x, y: closestIntersectionPoint.y};\r\n }\r\n }\r\n\r\n // todo bumpout\r\n // self.drawLineBumpoutPoints = state.withBumpout ?\r\n // {\r\n // point1: {x: point1.x + 9, y: point1.y - 9},\r\n // point2: {x: point2.x + 9, y: point2.y - 9},\r\n // point3: {x: point3.x + 9, y: point3.y + 9},\r\n // point4: {x: point4.x + 9, y: point4.y + 9},\r\n // } : null;\r\n }\r\n // const getOutlineIntersectionPointWithPrevLine = () => {\r\n // const prevLine = parent.getPrevLine(this);\r\n // if (!prevLine.drawLineTo) {\r\n // debugger // eslint-disable-line no-debugger\r\n // prevLine.setLinePoints();\r\n // }\r\n //\r\n // const pointOnTheLine = getPointOnTheLine(this.drawLineTo, this.drawLineFrom, 300);\r\n // const pointOnThePrevLine = getPointOnTheLine(prevLine.drawLineFrom, prevLine.drawLineTo, 300);\r\n // console.log(\"this\", this);\r\n // debugger // eslint-disable-line no-debugger\r\n // return getIntersectCords(\r\n // this.drawLineFrom.x,\r\n // this.drawLineFrom.y,\r\n // pointOnTheLine.x,\r\n // pointOnTheLine.y,\r\n // pointOnThePrevLine.x,\r\n // pointOnThePrevLine.y,\r\n // prevLine.drawLineFrom.x,\r\n // prevLine.drawLineFrom.y,\r\n // );\r\n // }\r\n\r\n const getOutlineIntersectionPointWithNextTLine = () => {\r\n const nextLine = parent.getNextLine(this);\r\n nextLine.setLinePoints();\r\n const pointOnTheLine = getPointOnTheLine(this.drawLineTo, this.drawLineFrom, 1000);\r\n const pointOnTheNextLine = getPointOnTheLine(nextLine.drawLineFrom, nextLine.drawLineTo, 1000);\r\n return getIntersectCords(\r\n this.drawLineFrom.x,\r\n this.drawLineFrom.y,\r\n pointOnTheLine.x,\r\n pointOnTheLine.y,\r\n pointOnTheNextLine.x,\r\n pointOnTheNextLine.y,\r\n nextLine.drawLineFrom.x,\r\n nextLine.drawLineFrom.y,\r\n );\r\n }\r\n const getBorderToIntersection = (nextLine) => {\r\n let intersectionCords = false\r\n if (nextLine.drawLineTo) {\r\n const nextLineToPointField = nextLine.to.getPointField(false);\r\n const nextLineFromPointField = nextLine.from.getPointField(false);\r\n const pointOnTheLine = getPointOnTheLine(self.drawLineTo, self.drawLineFrom,25);\r\n const pointOnTheNextLine = getPointOnTheLine(nextLineFromPointField, nextLineToPointField, 25);\r\n\r\n intersectionCords = getIntersectCords(\r\n self.drawLineFrom.x,\r\n self.drawLineFrom.y,\r\n pointOnTheLine.x,\r\n pointOnTheLine.y,\r\n pointOnTheNextLine.x,\r\n pointOnTheNextLine.y,\r\n nextLineToPointField.x,\r\n nextLineToPointField.y,\r\n );\r\n // if (lineDirection.orientation === \"SOUTHWEST\") {\r\n // console.log(\"--------\");\r\n // console.log(\"pointOnTheLine\", pointOnTheLine);\r\n // console.log(\" self.drawLineFrom\", self.drawLineFrom);\r\n // console.log(\" self.drawLineTo\", self.drawLineTo);\r\n // console.log(\"--\");\r\n // console.log(\"pointOnTheNextLine\", pointOnTheNextLine);\r\n // console.log(\"nextLine.drawLineFrom\", nextLineFromPointField);\r\n // console.log(\" nextLine.drawLineTo\", nextLineToPointField);\r\n // console.log(\"intersectionCords\", intersectionCords);\r\n // debugger // eslint-disable-line no-debugger\r\n // }\r\n }\r\n\r\n return intersectionCords\r\n }\r\n\r\n const getBorderFromIntersection = (prevLine) => {\r\n let intersectionCords = false\r\n\r\n if (prevLine.drawLineFrom) {\r\n const prevLineToPointField = prevLine.to.getPointField(false);\r\n const prevLineFromPointField = prevLine.from.getPointField(false);\r\n const pointOnTheLineBeforeFrom = getPointOnTheLine(this.drawLineFrom, this.drawLineTo,25);\r\n const pointOnThePrevLine = getPointOnTheLine(prevLineToPointField, prevLineFromPointField, 25);\r\n intersectionCords = getIntersectCords(\r\n pointOnTheLineBeforeFrom.x,\r\n pointOnTheLineBeforeFrom.y,\r\n this.drawLineTo.x,\r\n this.drawLineTo.y,\r\n prevLineFromPointField.x,\r\n prevLineFromPointField.y,\r\n pointOnThePrevLine.x,\r\n pointOnThePrevLine.y,\r\n );\r\n // if (lineDirection.orientation === \"SOUTHWEST\") {\r\n // console.log(\"--------\");\r\n // console.log(\"pointOnTheLineBeforeFrom\", pointOnTheLineBeforeFrom);\r\n // console.log(\"self.drawLineFrom\", self.drawLineFrom);\r\n // console.log(\"self.drawLineTo\", self.drawLineTo);\r\n // console.log(\"--\");\r\n // console.log(\"pointOnThePrevLine\", pointOnThePrevLine);\r\n // console.log(\"prevLine.drawLineFrom\", prevLine.drawLineFrom);\r\n // console.log(\"prevLine.drawLineTo\", prevLine.drawLineTo);\r\n // console.log(\"intersectionCords\", intersectionCords);\r\n // debugger // eslint-disable-line no-debugger\r\n // }\r\n }\r\n\r\n return intersectionCords\r\n }\r\n\r\n function getOutlineFromIntersection (prevLine) {\r\n let intersectionCords = false\r\n\r\n if (prevLine.drawLineFrom) {\r\n const pointOnTheLineBeforeFrom = getPointOnTheLine(self.drawLineFrom, self.drawLineTo,15);\r\n const pointOnThePrevLine = getPointOnTheLine(prevLine.drawLineTo, prevLine.drawLineFrom, 15);\r\n intersectionCords = getIntersectCords(\r\n pointOnTheLineBeforeFrom.x,\r\n pointOnTheLineBeforeFrom.y,\r\n self.drawLineTo.x,\r\n self.drawLineTo.y,\r\n prevLine.drawLineFrom.x,\r\n prevLine.drawLineFrom.y,\r\n pointOnThePrevLine.x,\r\n pointOnThePrevLine.y,\r\n );\r\n // if (lineDirection.orientation === \"SOUTHWEST\") {\r\n // console.log(\"--------\");\r\n // console.log(\"pointOnTheLineBeforeFrom\", pointOnTheLineBeforeFrom);\r\n // console.log(\"self.drawLineFrom\", self.drawLineFrom);\r\n // console.log(\"self.drawLineTo\", self.drawLineTo);\r\n // console.log(\"--\");\r\n // console.log(\"pointOnThePrevLine\", pointOnThePrevLine);\r\n // console.log(\"prevLine.drawLineFrom\", prevLine.drawLineFrom);\r\n // console.log(\"prevLine.drawLineTo\", prevLine.drawLineTo);\r\n // console.log(\"intersectionCords\", intersectionCords);\r\n // debugger // eslint-disable-line no-debugger\r\n // }\r\n }\r\n return intersectionCords\r\n }\r\n\r\n function getOutlineToIntersection (nextLine) {\r\n let intersectionCords = false\r\n if (nextLine.drawLineTo) {\r\n const pointOnTheLine = getPointOnTheLine(self.drawLineTo, self.drawLineFrom,12);\r\n const pointOnTheNextLine = getPointOnTheLine(nextLine.drawLineFrom, nextLine.drawLineTo, 12);\r\n intersectionCords = getIntersectCords(\r\n self.drawLineFrom.x,\r\n self.drawLineFrom.y,\r\n pointOnTheLine.x,\r\n pointOnTheLine.y,\r\n pointOnTheNextLine.x,\r\n pointOnTheNextLine.y,\r\n nextLine.drawLineTo.x,\r\n nextLine.drawLineTo.y,\r\n );\r\n\r\n // if (lineDirection.orientation === \"SOUTHWEST\") {\r\n // console.log(\"--------\");\r\n // console.log(\"pointOnTheLine\", pointOnTheLine);\r\n // console.log(\" self.drawLineFrom\", self.drawLineFrom);\r\n // console.log(\" self.drawLineTo\", self.drawLineTo);\r\n // console.log(\"--\");\r\n // console.log(\"pointOnTheNextLine\", pointOnTheNextLine);\r\n // console.log(\"nextLine.drawLineFrom\", nextLine.drawLineFrom);\r\n // console.log(\"nextLine.drawLineTo\", nextLine.drawLineTo);\r\n // console.log(\"intersectionCords\", intersectionCords);\r\n // debugger // eslint-disable-line no-debugger\r\n // }\r\n }\r\n return intersectionCords\r\n }\r\n\r\n /**\r\n * Draw grey outline\r\n */\r\n const drawLine = (color, border) => {\r\n void border;\r\n self.setLinePoints();// dev remove to hide gray outline border\r\n self.ctx.beginPath();\r\n if (self.drawLineFrom && self.drawLineTo) {\r\n if (state.withBumpout) {\r\n self.ctx.moveTo(self.drawLineFrom.x, self.drawLineFrom.y);\r\n self.ctx.lineTo(self.drawLineBumpoutPoints.point1.x, self.drawLineBumpoutPoints.point1.y);\r\n\r\n self.ctx.moveTo(self.drawLineBumpoutPoints.point1.x, self.drawLineBumpoutPoints.point1.y);\r\n self.ctx.lineTo(self.drawLineBumpoutPoints.point2.x, self.drawLineBumpoutPoints.point2.y);\r\n\r\n self.ctx.moveTo(self.drawLineBumpoutPoints.point2.x, self.drawLineBumpoutPoints.point2.y);\r\n self.ctx.lineTo(self.drawLineBumpoutPoints.point3.x, self.drawLineBumpoutPoints.point3.y);\r\n\r\n self.ctx.moveTo(self.drawLineBumpoutPoints.point3.x, self.drawLineBumpoutPoints.point3.y);\r\n self.ctx.lineTo(self.drawLineBumpoutPoints.point4.x, self.drawLineBumpoutPoints.point4.y);\r\n\r\n self.ctx.lineTo(self.drawLineBumpoutPoints.point4.x, self.drawLineBumpoutPoints.point4.y);\r\n self.ctx.lineTo(self.drawLineTo.x, self.drawLineTo.y);\r\n } else {\r\n self.ctx.moveTo(self.drawLineFrom.x, self.drawLineFrom.y);\r\n self.ctx.lineTo(self.drawLineTo.x, self.drawLineTo.y);\r\n }\r\n }\r\n self.ctx.lineWidth = 8;\r\n self.ctx.strokeStyle = color;\r\n self.ctx.stroke();\r\n self.ctx.closePath();\r\n }\r\n\r\n const drawCorner = (color) => {\r\n self.ctx.beginPath();\r\n self.ctx.lineWidth = 8;\r\n self.ctx.strokeStyle = color;\r\n\r\n let\r\n renderTo = self.calculateRenderPosition(self.to),\r\n renderFrom = self.calculateRenderPosition(self.from),\r\n //radius = Math.sqrt(Math.pow(self.to.arcLength, 2) / 2) * config.scale + 18,\r\n radius = self.to.arcLength * config.scale,\r\n nextLine = parent.getNextLine(self);\r\n\r\n lineDirection = parent.getAngleDirection(self);\r\n // var midHyp = getMidPoint(ap.line1, ap.line2);\r\n if (lineDirection.orientation !== \"horizontal\" && lineDirection.orientation !== \"vertical\") {\r\n //prevLine = parent.getPrevLine(self);\r\n //nextLine = parent.getNextLine(self);\r\n //prevParallelLine = parent.getPrevLine(prevLine);\r\n }\r\n\r\n switch (lineDirection.orientation) {\r\n case \"horizontal\":\r\n case \"vertical\":\r\n case \"NORTHWEST\":\r\n case \"NORTHEAST\":\r\n case \"SOUTHWEST\":\r\n case \"SOUTHEAST\": {\r\n const interSectionPoint = getOutlineIntersectionPointWithNextTLine();\r\n //v1\r\n const nextLineTo = this.calculateRenderPosition(nextLine.to);\r\n if (isInnerCorner(parent, renderFrom, renderTo, nextLineTo)) {\r\n radius = radius - 18\r\n if (radius < -8) { // set minimum radius to display\r\n radius = -8\r\n }\r\n }\r\n this.ctx.moveTo(this.drawLineTo.x, this.drawLineTo.y);\r\n this.ctx.arcTo(interSectionPoint.x, interSectionPoint.y, nextLine.drawLineFrom.x, nextLine.drawLineFrom.y, radius + 9);\r\n\r\n this.ctx.moveTo(nextLine.drawLineFrom.x, nextLine.drawLineFrom.y);\r\n this.ctx.arcTo(interSectionPoint.x, interSectionPoint.y, this.drawLineTo.x, this.drawLineTo.y, radius + 9);\r\n //v2\r\n // this.ctx.moveTo(this.drawLineFrom.x, this.drawLineFrom.y);\r\n // this.ctx.arcTo(interSectionPoint.x, interSectionPoint.y, nextLine.drawLineFrom.x, nextLine.drawLineFrom.y, radius + 9);\r\n // this.ctx.stroke();\r\n // this.ctx.closePath();\r\n //\r\n // this.ctx.beginPath();\r\n // this.ctx.strokeStyle = design.aroundLineColor;\r\n // this.ctx.moveTo(this.drawLineFrom.x, this.drawLineFrom.y);\r\n // this.ctx.lineTo(this.drawLineTo.x, this.drawLineTo.y);\r\n\r\n //v3\r\n //this.ctx.moveTo(this.drawLineTo.x, this.drawLineTo.y);\r\n //this.ctx.quadraticCurveTo(renderTo.x, renderTo.y, nextLine.drawLineFrom.x, nextLine.drawLineFrom.y);\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n\r\n self.ctx.stroke();\r\n self.ctx.closePath();\r\n }\r\n\r\n const drawAngle = (color) => {\r\n let strokeStyle;\r\n\r\n this.ctx.beginPath();\r\n this.ctx.lineWidth = 8;\r\n\r\n this.ctx.strokeStyle = design.aroundLineColor;\r\n this.ctx.lineCap = 'square';\r\n //this.ctx.lineCap = 'round';\r\n\r\n if (this.lineCorner.state.isHovering && EventManager.getCursor().indexOf(\"delete\") >= 0\r\n && (this.lineCorner.state.withEdge || this.lineCorner.state.withBacksplash || this.lineCorner.state.withWall || (this.lineCorner.state.attachedItems && this.lineCorner.state.attachedItems.isWithEndCap))) {\r\n strokeStyle = 'rgba(208,1,27,0.5)';\r\n } else if (this.lineCorner.state.withEdge) {\r\n strokeStyle = Color.getOutlineStrokeStyle('edge');\r\n } else if (this.lineCorner.state.withBacksplash) {\r\n strokeStyle = Color.getOutlineStrokeStyle('backsplash');\r\n } else if (this.lineCorner.state.attachedItems && this.lineCorner.state.attachedItems.isWithEndCap) {\r\n strokeStyle = Color.getOutlineStrokeStyle(RESOURCE_ATTACHED_TO_TYPE.end_cap);\r\n } else if (this.lineCorner.state.withWall) {\r\n strokeStyle = Color.getOutlineStrokeStyle('wall');\r\n } else if (config.highlight.lines && this.lineCorner.state.isHovering) {\r\n strokeStyle = Color.getOutlineHoverStrokeStyle();\r\n this.ctx.strokeStyle = strokeStyle;\r\n } else if (config.highlight.lines && config.highlight.demoShow && (config.highlight.id !== state.withId)) {\r\n strokeStyle = Color.getOutlineHoverStrokeStyle();\r\n }\r\n\r\n let angleLinePoints = this.lineCorner.getAnglePoints();\r\n\r\n this.ctx.strokeStyle = strokeStyle ? strokeStyle : color;\r\n this.ctx.moveTo(angleLinePoints.cord1.x, angleLinePoints.cord1.y);\r\n this.ctx.lineTo(angleLinePoints.cord2.x, angleLinePoints.cord2.y);\r\n this.ctx.lineTo(angleLinePoints.cord3.x, angleLinePoints.cord3.y);\r\n this.ctx.lineTo(angleLinePoints.cord4.x, angleLinePoints.cord4.y);\r\n\r\n this.ctx.moveTo(angleLinePoints.cord4.x, angleLinePoints.cord4.y);\r\n\r\n //this.ctx.moveTo(angleLinePoints.cord2.x, angleLinePoints.cord2.y);\r\n //this.ctx.lineTo(angleLinePoints.cord3.x, angleLinePoints.cord3.y);\r\n this.ctx.stroke();\r\n this.ctx.closePath();\r\n\r\n //purple line v2\r\n // this.ctx.beginPath();\r\n // this.ctx.strokeStyle = strokeStyle ? strokeStyle : color;\r\n // this.ctx.moveTo(angleLinePoints.cordCornerFrom.x, angleLinePoints.cordCornerFrom.y);\r\n // this.ctx.lineTo(angleLinePoints.cordCornerTo.x, angleLinePoints.cordCornerTo.y);\r\n\r\n //purple line v3\r\n // this.ctx.beginPath();\r\n // this.ctx.strokeStyle = color;\r\n // this.ctx.moveTo(angleLinePoints.cordCornerFrom.x, angleLinePoints.cordCornerFrom.y);\r\n // this.ctx.lineTo(angleLinePoints.cordCornerTo.x, angleLinePoints.cordCornerTo.y);\r\n\r\n this.ctx.stroke();\r\n this.ctx.closePath();\r\n }\r\n\r\n this.get45CornerLegDistanceScaled = () => {\r\n return get45CornerLegDistanceByHypotenuse(this.to.angle || this.to.arcLength) * config.scale\r\n };\r\n\r\n this.get45CornerLegDistance = () => {\r\n return get45CornerLegDistanceByHypotenuse(this.to.angle || this.to.arcLength)\r\n };\r\n\r\n this.deleteBumpout = () => {\r\n state.withBumpout = false;\r\n this.bumpoutOverlay.destroy();\r\n this.overlay.setMidpointOffset(0, 0);\r\n let bumpoutPoints = this.bumpoutOverlay.getBumpoutPoints();\r\n for (const pointName in bumpoutPoints) {\r\n if (bumpoutPoints.hasOwnProperty(pointName)) {\r\n bumpoutPoints[pointName].destroy();\r\n }\r\n }\r\n this.bumpoutOverlay = null;\r\n };\r\n\r\n this.deleteMitered = () => {\r\n state.isWithMitered = false;\r\n this.miteredOverlay.destroy();\r\n this.miteredOverlay = null;\r\n this.overlay.setMidpointOffset(0, 0);\r\n this.createLineLength();\r\n };\r\n\r\n this.deleteUnderlayment = () => {\r\n state.isWithUnderlayment = false;\r\n this.underlaymentOverlay.destroy();\r\n this.underlaymentOverlay = null;\r\n this.overlay.setMidpointOffset(0, 0);\r\n this.createLineLength();\r\n };\r\n\r\n this.deleteWaterfallTool = () => {\r\n this.waterfallOverlay.destroy();\r\n workspaceControllers.waterfall.destroy(this.waterfallOverlay);\r\n this.waterfallOverlay = null;\r\n };\r\n\r\n this.createLineLength = () => {\r\n this.overlay = new lineLength();\r\n this.overlay.init(self);\r\n };\r\n\r\n this.deleteAttachedItem = () => {\r\n state.withEdge = false;\r\n state.isWithWaterfallEdge = false;\r\n state.isWithPeninsulaUnderwrapEdge = false;\r\n state.withBacksplash = false;\r\n state.withWall = false;\r\n state.withBumpout = false;\r\n state.withId = null;\r\n for (const attachedItemsKey in state.attachedItems) {\r\n state.attachedItems[attachedItemsKey] = false\r\n }\r\n this.attachedShape = null;\r\n if (this.overlay) {\r\n this.overlay.removeLineText();\r\n }\r\n\r\n if (this.bumpoutOverlay) {\r\n this.deleteBumpout();\r\n }\r\n if (this.labelOverlay) {\r\n this.labelOverlay.destroy();\r\n }\r\n if (this.titleOverlay) {\r\n this.titleOverlay.destroy();\r\n }\r\n if (this.miteredOverlay) {\r\n this.deleteMitered();\r\n }\r\n if (this.underlaymentOverlay) {\r\n this.deleteUnderlayment();\r\n }\r\n if (this.waterfallOverlay) {\r\n this.deleteWaterfallTool();\r\n }\r\n sqftSlabManager.deleteSlabBacksplashByLine(this);\r\n store.dispatch(deleteResourceAttachedTo(RESOURCE_TYPE.attachedToLine, this));\r\n };\r\n\r\n this.addEdgeToLine = function(edgeName, id) {\r\n state.withEdge = true;\r\n state.withBacksplash = false;\r\n state.withWall = false;\r\n state.isWithWaterfallEdge = false;\r\n state.isWithPeninsulaUnderwrapEdge = false;\r\n state.withId = id;\r\n for (const attachedItemKey in state.attachedItems) {\r\n state.attachedItems[attachedItemKey] = false\r\n }\r\n self.overlay.renderEdgeText(edgeName);\r\n };\r\n\r\n this.addBacksplashToLine = (backsplashName, type, featureId, backsplashHeight) => {\r\n if (type === \"wall\") {\r\n state.withWall = true;\r\n state.withBacksplash = false;\r\n } else {\r\n state.withBacksplash = true;\r\n state.withWall = false;\r\n }\r\n state.withEdge = false;\r\n state.backsplashName = backsplashName;\r\n state.backsplashType = type;\r\n state.isWithWaterfallEdge = false;\r\n state.isWithPeninsulaUnderwrapEdge = false;\r\n state.withId = featureId;\r\n this.setBacksplashHeight(backsplashHeight);\r\n for (const attachedItemKey in state.attachedItems) {\r\n state.attachedItems[attachedItemKey] = false\r\n }\r\n self.overlay.renderBacksplashText(backsplashName, type);\r\n };\r\n\r\n this.addCrownMoldingToLine = (crownMoldingName, type, id) => {\r\n state.withBacksplash = false;\r\n state.withWall = false;\r\n state.withEdge = false;\r\n state.isWithWaterfallEdge = false;\r\n state.isWithPeninsulaUnderwrapEdge = false;\r\n state.attachedItems.isWithCrownMolding = true;\r\n state.withId = id;\r\n //this.overlay.renderBacksplashText(crownMoldingName, type);\r\n };\r\n\r\n this.addEndCapToLine = (endCapName, type, id) => {\r\n state.withBacksplash = false;\r\n state.withWall = false;\r\n state.withEdge = false;\r\n state.isWithWaterfallEdge = false;\r\n state.isWithPeninsulaUnderwrapEdge = false;\r\n state.attachedItems.isWithEndCap = true;\r\n state.attachedItems.isWithCrownMolding = false;\r\n state.withId = id;\r\n //this.overlay.renderBacksplashText(crownMoldingName, type);\r\n };\r\n\r\n this.addBumpoutToLine = function(mousePos, pointName, id) {\r\n void mousePos;\r\n void pointName;\r\n void id;\r\n //todo allow add multiple bumpout\r\n if (!state.withBumpout) {\r\n //todo fix rotation\r\n if (self.getOrientation() === orientation.VERTICAL || self.getOrientation() === orientation.HORIZONTAL) {\r\n state.withBumpout = true;\r\n self.bumpoutOverlay = new bumpout();\r\n self.bumpoutOverlay.init(self);\r\n }\r\n }\r\n };\r\n\r\n this.addMiteredToLine = () => {\r\n for (const attachedItemKey in state.attachedItems) {\r\n state.attachedItems[attachedItemKey] = false\r\n }\r\n if (!state.isWithMitered) {\r\n this.deleteAttachedItem();\r\n state.isWithMitered = true;\r\n if (workspace.miteredController === null) {\r\n workspace.miteredController = new MiteredController();\r\n }\r\n this.miteredOverlay = workspace.miteredController.createMiteredOverlay(this);\r\n this.miteredOverlay.init();\r\n\r\n return this.miteredOverlay;\r\n }\r\n\r\n return this.miteredOverlay\r\n };\r\n\r\n this.addUnderlaymentToLine = () => {\r\n for (const attachedItemKey in state.attachedItems) {\r\n state.attachedItems[attachedItemKey] = false\r\n }\r\n if (!state.isWithUnderlayment) {\r\n //todo fix rotation\r\n this.deleteAttachedItem();\r\n if (this.getOrientation() === orientation.VERTICAL || this.getOrientation() === orientation.HORIZONTAL) {\r\n state.isWithUnderlayment = true;\r\n if (workspace.underlaymentController === null) {\r\n workspace.underlaymentController = new UnderlaymentController();\r\n }\r\n this.underlaymentOverlay = workspace.underlaymentController.createUnderlaymentOverlay(this);\r\n this.underlaymentOverlay.init();\r\n\r\n return this.underlaymentOverlay;\r\n }\r\n }\r\n\r\n return this.underlaymentOverlay\r\n };\r\n\r\n this.addWaterfallToLine = (name = RESOURCE_ATTACHED_TO_NAME.waterfall, waterfallImportData) => {\r\n for (const attachedItemKey in state.attachedItems) {\r\n state.attachedItems[attachedItemKey] = false\r\n }\r\n if (!this.isWithWaterfallToolEdge()) {\r\n this.deleteAttachedItem();\r\n if (this.getOrientation() === orientation.VERTICAL || this.getOrientation() === orientation.HORIZONTAL) {\r\n state.isWithWaterfallEdge = true;\r\n state.isWithPeninsulaUnderwrapEdge = false;\r\n state.withBacksplash = false;\r\n state.withWall = false;\r\n state.withEdge = false;\r\n this.waterfallOverlay = workspaceControllers.waterfall.createWaterfallOverlay(this, waterfallImportData);\r\n createSlabModeWaterfallShapes();\r\n this.overlay.renderWaterfallText(name, RESOURCE_ATTACHED_TO_TYPE.waterfall);\r\n\r\n return this.waterfallOverlay;\r\n }\r\n }\r\n return this.waterfallOverlay\r\n };\r\n\r\n this.addPeninsulaUnderwrapToLine = () => {\r\n for (const attachedItemKey in state.attachedItems) {\r\n state.attachedItems[attachedItemKey] = false\r\n }\r\n if (!this.isWithPeninsulaUnderwrapEdge()) {\r\n if (this.getOrientation() === orientation.VERTICAL || this.getOrientation() === orientation.HORIZONTAL) {\r\n state.isWithPeninsulaUnderwrapEdge = true;\r\n state.isWithWaterfallEdge = false;\r\n state.withBacksplash = false;\r\n state.withWall = false;\r\n state.withEdge = false;\r\n this.waterfallOverlay = workspaceControllers.waterfall.createPeninsulaUnderwrapOverlay(this);\r\n createSlabModeWaterfallShapes();\r\n\r\n return this.waterfallOverlay;\r\n }\r\n }\r\n return this.waterfallOverlay\r\n };\r\n\r\n this.renderLineField = (ctx) => {\r\n\r\n this.ctx = ctx;\r\n\r\n if (config.highlight.tutorial && self.highLightedByTutorial) {\r\n drawLine('#E3E1E3');\r\n highLightBorder('#b263a8');\r\n if (self.tutorialImage) {\r\n drawResizeCursor();\r\n }\r\n } else if (config.highlight.lines && state.isHovering) {\r\n\r\n switch (config.highlight.type) {\r\n case 'edge':\r\n if (config.highlight.id !== state.withId) {\r\n drawLine(COLOR_THEMES[config.activeTheme].active_transparent);\r\n } else {\r\n drawLine(COLOR_THEMES[config.activeTheme].active);\r\n }\r\n break;\r\n case RESOURCE_ATTACHED_TO_TYPE.backsplash:\r\n case RESOURCE_ATTACHED_TO_TYPE.waterfall:\r\n if (config.highlight.id !== state.withId) {\r\n drawLine(COLOR_THEMES[config.activeTheme].primary_transparent);\r\n } else {\r\n drawLine(COLOR_THEMES[config.activeTheme].primary);\r\n }\r\n break;\r\n case 'wall':\r\n if (config.highlight.id !== state.withId) {\r\n drawLine('rgba(0,0,0,0.5)');\r\n } else {\r\n drawLine(COLOR_THEMES[config.activeTheme].primary);\r\n }\r\n break;\r\n case RESOURCE_ATTACHED_TO_TYPE.end_cap:\r\n if (config.highlight.id !== state.withId) {\r\n drawLine(COLOR.red_transparent);\r\n } else {\r\n drawLine(COLOR.red);\r\n }\r\n break;\r\n default:\r\n drawLine(COLOR_THEMES[config.activeTheme].active_transparent);\r\n break;\r\n }\r\n\r\n } else if (config.highlight.lines && config.highlight.demoShow && (config.highlight.id !== state.withId)) {\r\n switch (config.highlight.type) {\r\n case 'edge':\r\n default:\r\n drawLine(COLOR_THEMES[config.activeTheme].active_transparent);\r\n break;\r\n case RESOURCE_ATTACHED_TO_TYPE.backsplash:\r\n case RESOURCE_ATTACHED_TO_TYPE.end_cap:\r\n case RESOURCE_ATTACHED_TO_TYPE.waterfall:\r\n drawLine(COLOR_THEMES[config.activeTheme].primary_transparent);\r\n break;\r\n case 'wall':\r\n drawLine('rgba(0,0,0,0.5)');\r\n break;\r\n }\r\n } else if (this.blink.isHighlightedLightOn) {\r\n if (state.withEdge || this.isWithPeninsulaUnderwrapEdge()) {\r\n drawLine(COLOR_THEMES[config.activeTheme].active_transparent);\r\n } else if (state.withBacksplash || state.withBumpout || this.isWithWaterfallToolEdge()) {\r\n drawLine(COLOR_THEMES[config.activeTheme].primary_transparent);\r\n } else if (state.withWall) {\r\n drawLine('rgba(0,0,0,0.5)');\r\n } else if (state.attachedItems && state.attachedItems.isWithEndCap) {\r\n drawLine(COLOR.red_transparent);\r\n }\r\n } else {\r\n if (workspace.getAllowEdges() && workspace.getAllowLineHighlight()) {\r\n highLightBorder('#b263a8');\r\n }\r\n\r\n if (config.workspace.debug || state.isHovering && !config.highlight.lines && workspace.getAllowEdges()) {\r\n highLightBorder('#b263a8');\r\n }\r\n\r\n const orientation = this.getLineDirection().orientation;\r\n const isBumpoutHighlighted = workspace.getAllowBumpoutEdges() && workspace.getAllowLineHighlight();\r\n const isMiteredHighlighted = workspace.getAllowMiteredEdges() && workspace.getAllowLineHighlight();\r\n if ((isBumpoutHighlighted || isMiteredHighlighted)\r\n && (orientation === \"vertical\" || orientation === \"horizontal\")\r\n ) {\r\n highLightBorder(COLOR_THEMES[config.activeTheme].primary);\r\n }\r\n\r\n if (config.workspace.debug\r\n || state.isHovering && !config.highlight.lines\r\n && (\r\n (workspace.getAllowBumpoutEdges() || workspace.getAllowMiteredEdges())\r\n && (orientation === \"vertical\" || orientation === \"horizontal\")\r\n )\r\n ) {\r\n highLightBorder(COLOR_THEMES[config.activeTheme].primary);\r\n }\r\n\r\n if (state.isHovering && EventManager.getCursor().indexOf(\"delete\") >= 0\r\n && (state.withEdge\r\n || state.withBacksplash\r\n || (state.attachedItems && state.attachedItems.isWithEndCap)\r\n || state.withWall\r\n || this.isWithPeninsulaUnderwrapEdge()\r\n || this.isWithWaterfallToolEdge())\r\n ) {\r\n drawLine('rgba(208,1,27,0.5)');\r\n } else if (state.withEdge || this.isWithPeninsulaUnderwrapEdge()) {\r\n drawLine(COLOR_THEMES[config.activeTheme].active);\r\n if (self.tutorialImage) {\r\n drawResizeCursor();\r\n }\r\n } else if (state.withBacksplash) {\r\n drawLine(COLOR_THEMES[config.activeTheme].primary);\r\n } else if (this.isWithWaterfallToolEdge()) {\r\n drawLine(COLOR_THEMES[config.activeTheme].primary);\r\n } else if (state.withWall) {\r\n drawLine('#000000');\r\n } else if (state.withBumpout) {\r\n drawLine('#E3E1E3'); //todo enable border\r\n } else if (state.attachedItems && state.attachedItems.isWithEndCap) {\r\n drawLine(COLOR.red);\r\n } else {\r\n drawLine('#E3E1E3');\r\n }\r\n\r\n }\r\n\r\n if (self.to.arcLength > 0) {\r\n if (EventManager.getCursor().indexOf(\"delete\") >= 0 && !state.isHovering && self.to.isOverPointField()) {\r\n drawCorner('rgba(208,1,27,0.5)');\r\n } else {\r\n drawCorner(\"#b263a8\")\r\n }\r\n }\r\n\r\n //todo move this to lineCorner\r\n if (self.to.angle > 0) {\r\n if (EventManager.getCursor().indexOf(\"delete\") >= 0\r\n && !state.isHovering\r\n && (self.to.isOverPointField() || self.lineCorner.state.isCornerLineHovering) // todo perhaps hover over Point should be removed?\r\n ) {\r\n drawAngle('rgba(208,1,27,0.5)');\r\n } else {\r\n drawAngle(\"#b263a8\")\r\n }\r\n }\r\n ctx.restore();\r\n\r\n }\r\n}\r\n","import uuid from \"uuid\";\r\nimport clone from 'lodash/clone';\r\n\r\n//todo sqft-react\r\nimport EventManager from \"./../../store/sqftEventManager\";\r\nimport PointRadius from \"./overlays/pointRadius\";\r\nimport workspace from \"../workspace\";\r\nimport sqftConfig from \"../../store/sqftConfig\";\r\nimport COLOR_THEMES, {COLOR} from \"../../store/colorThemes\";\r\n// import Radius from \"../controls/radius\";\r\nimport FitSize from \"../../../../helpers/sqftFitSize\";\r\nimport SqftStore from \"../../store/sqftStore\";\r\nimport store from \"../../../../../../store\";\r\nimport sqftShape from \"./sqftShape\";\r\nimport line from \"./line\";\r\nimport {\r\n getMidPoint,\r\n getPointOnTheLine,\r\n isDisabledInPopupWithParents\r\n} from \"../../../../helpers/sqftHelper\";\r\nimport config from \"../../store/sqftConfig\";\r\nimport {isDisabledInPopupShouldBeHidden, SIDEBAR_NAVIGATION_BUTTONS} from \"../../../../constants\";\r\nimport MiteredOverlay from \"./overlays/mitered\";\r\nimport {getAngleBetween3Points} from \"../../../../helpers/shapeHelper\";\r\n//import MiteredOverlay from \"../overlays/mitered\";\r\nimport {updateSQFTCalculations} from \"../../../../../../actions/sqftFunctions\";\r\nimport {isSFTCabinetsGroup} from \"../../../../helpers/sqftNavigationHelper\";\r\nimport {renderResetSeamPopup, shouldResetSlabModePopupOnPointMoveBeDisplayed} from \"../../canvasPopup/resetSeam\";\r\nimport sqftShapeManager from \"../../store/sqftShapeManager\";\r\n\r\nexport const allowedNavItemsForMovingPoint = [\r\n SIDEBAR_NAVIGATION_BUTTONS.freeDraw,\r\n SIDEBAR_NAVIGATION_BUTTONS.resize\r\n];\r\n\r\nexport default function (x, y, direction, corner, canBeMoved = true) {\r\n //private variables\r\n let self = this,\r\n parent = null,\r\n state = {\r\n isMovable: false,\r\n mouseDown: false,\r\n mouseDownPosition: {},\r\n selected: false,\r\n isHovering: false,\r\n mousePos: {},\r\n pointWasMoved: false,\r\n canBeMoved,\r\n miteredFeatureId: null,\r\n },\r\n fillStyle = \"#E3E1E3\",\r\n fillStyleEdge = COLOR_THEMES[sqftConfig.activeTheme].active,\r\n fillStyleWhite = \"#FFFFFF\",\r\n fillStyleBlack = \"#4a4a4a\",\r\n fillStyleDelete = \"#e77f8d\", //\"rgba(253,2,33, 0.5)\",\r\n fillStyleBlue = COLOR_THEMES[sqftConfig.activeTheme].primary,\r\n //highlightFillStyle = \"rgba(0,255,0,0.5)\",\r\n //hoverFillStyle = \"#D0011B\",\r\n radiusFillStyle = \"#b263a8\",\r\n translateX,\r\n translateY,\r\n pointRadiusOverlay = null;\r\n //public properties\r\n this.id = uuid();\r\n this.pos = {x, y};\r\n this.posSlab = {\r\n x: x ? JSON.parse(JSON.stringify(x)) : 0,\r\n y: y ? JSON.parse(JSON.stringify(y)) : 0\r\n };\r\n Object.defineProperty(this, \"x\", {\r\n set: (value) => {\r\n setPointWasChangedInRegularMode();\r\n if (SqftStore.isRegularMode() && shouldResetSlabModePopupOnPointMoveBeDisplayed(this.getGrandParent())) {\r\n renderResetSeamPopup(this.getGrandParent())\r\n }\r\n return SqftStore.isSlabMode() ? this.posSlab.x = parseFloat(value) : this.pos.x = parseFloat(value);\r\n },\r\n get: () => {\r\n if (this.pos === undefined) {\r\n console.log(\"point pos not defined\");\r\n return 0;\r\n }\r\n return SqftStore.isSlabMode() ? this.posSlab.x : this.pos.x;\r\n }\r\n });\r\n Object.defineProperty(this, \"y\", {\r\n set: (value) => {\r\n setPointWasChangedInRegularMode();\r\n if (SqftStore.isRegularMode() && shouldResetSlabModePopupOnPointMoveBeDisplayed(this.getGrandParent())) {\r\n renderResetSeamPopup(this.getGrandParent())\r\n }\r\n return SqftStore.isSlabMode() ? this.posSlab.y = value : this.pos.y = value;\r\n },\r\n get: () => {\r\n if (this.pos === undefined) {\r\n console.log(\"point pos not defined\");\r\n return 0;\r\n }\r\n return SqftStore.isSlabMode() ? this.posSlab.y : this.pos.y;\r\n }\r\n });\r\n this.arcLength = 0;\r\n this.angle = 0;\r\n this.featureId = null;\r\n this.pointDirection = direction;\r\n this.corner = corner;\r\n this.renderAngleCircle = false;\r\n this.renderAngleArc = false;\r\n this.angleIsChanged = false;\r\n this.layout = null;\r\n this.rotateAnglePart = null; // link to the whole rotation part\r\n this.exportAndImportProperties = [\r\n \"id\", \"x\", \"y\", \"pos\", \"posSlab\", \"arcLength\", \"angle\", \"pointDirection\", \"corner\", \"rotateAnglePart\", \"angleIsChanged\",\r\n \"renderAngleCircle\", \"renderAngleArc\", \"featureId\"\r\n ];\r\n this.isHidden = () => {\r\n const reduxState = store.getState();\r\n let isShowSlabTool = reduxState.sqftSlabState.isShowSlabTool;\r\n\r\n const shape = this.getGrandParent();\r\n\r\n return !!(\r\n isShowSlabTool\r\n || (shape && shape.shapeCabinet)\r\n || (shape && shape.shapeSpacer)\r\n );\r\n }\r\n this.setPos = (value) => {\r\n this.pos = value\r\n }\r\n this.setPosSlab = (value) => {\r\n this.posSlab = value\r\n }\r\n this.isWithAngle = () => {\r\n return this.angle > 0\r\n }\r\n this.isWithCorner = () => {\r\n return this.arcLength > 0\r\n }\r\n //private functions\r\n // var snappedPos = function(pos) {\r\n // var scaledGridSize = sqftConfig.workspace.getScaledGridSize(),\r\n // newX = Math.round(self.x / scaledGridSize) * scaledGridSize,\r\n // newY = Math.round(self.y / scaledGridSize) * scaledGridSize;\r\n //\r\n // return {\r\n // x: newX,\r\n // y: newY\r\n // };\r\n // };\r\n this.getMiteredFeatureId = () => {\r\n return state.miteredFeatureId\r\n }\r\n this.setMiteredFeatureId = (id) => {\r\n state.miteredFeatureId = id\r\n }\r\n const setPointWasChangedInRegularMode = () => {\r\n const regularMode = SqftStore.isRegularMode();\r\n regularMode ? setPointWasChanged() : null;\r\n }\r\n const setPointWasChanged = () => {\r\n let parent = this.getParent();\r\n if (parent && parent.hasOwnProperty('getParent')) {\r\n let shape = parent.getParent();\r\n if (shape instanceof line) {\r\n shape.getParent().setIsPointsChanged(true);\r\n } else if (shape instanceof sqftShape) {\r\n shape.setIsPointsChanged(true);\r\n }\r\n }\r\n }\r\n const setPointWasMoved = () => {\r\n let parent = this.getParent();\r\n if (parent && parent.hasOwnProperty('getParent')) {\r\n let shape = parent.getParent();\r\n if (shape instanceof line) {\r\n shape.getParent().isPointsMoved = true;\r\n } else if (shape instanceof sqftShape) {\r\n shape.isPointsMoved = true;\r\n }\r\n }\r\n }\r\n const isMovable = () => {\r\n let shape = parent.getParent();\r\n\r\n return (state.isMovable || shape.getState().isPointsMovable);\r\n }\r\n\r\n function setTranslates() {\r\n switch (self.pointDirection) {\r\n case \"lefttop\":\r\n translateX = -10;\r\n translateY = -9;\r\n break;\r\n case \"righttop\":\r\n translateX = 9;\r\n translateY = -9;\r\n break;\r\n case \"rightbottom\":\r\n translateX = 9;\r\n translateY = 10;\r\n break;\r\n case \"leftbottom\":\r\n translateX = -10;\r\n translateY = 10;\r\n break;\r\n default:\r\n translateX = 0;\r\n translateY = 0;\r\n break;\r\n }\r\n }\r\n\r\n const onMouseMove = (mousePos, e) => {\r\n state.mousePos = mousePos;\r\n state.isHovering = this.isOverPointField();\r\n if (e.terminate) {\r\n state.isHovering = false;\r\n return false;\r\n }\r\n\r\n if (state.mouseDown) {\r\n EventManager.setCursor('move', this, true);\r\n if (isMovable()) {\r\n if (shouldResetSlabModePopupOnPointMoveBeDisplayed(this.getGrandParent())) {\r\n renderResetSeamPopup(this.getGrandParent());\r\n } else {\r\n this.movePosition(mousePos);\r\n }\r\n }\r\n }\r\n\r\n if (sqftConfig.highlight.points && state.isHovering) {\r\n EventManager.stealCursor();\r\n EventManager.setCursor('pointer', self);\r\n return true;\r\n } else {\r\n EventManager.resetCursor(self);\r\n }\r\n return false;\r\n }\r\n\r\n const onMouseUp = (mousePos, e) => {\r\n void mousePos;\r\n void e;\r\n state.mouseDown = false;\r\n state.mouseDownPosition = null;\r\n // if (state.isHovering) {\r\n // let shape = parent.getParent();\r\n // if (shape instanceof sqftShape) {\r\n // shape.setIsPointsMovable(false);\r\n // }\r\n // }\r\n }\r\n const canPointBeMoved = () => {\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n const isShowSlabTool = reduxState.sqftSlabState.isShowSlabTool;\r\n\r\n // const disallowedNavItems = [\r\n // SIDEBAR_NAVIGATION_BUTTONS.edge,\r\n // SIDEBAR_NAVIGATION_BUTTONS.rotate,\r\n // SIDEBAR_NAVIGATION_BUTTONS.text,\r\n // SIDEBAR_NAVIGATION_BUTTONS.angle,\r\n // SIDEBAR_NAVIGATION_BUTTONS.backsplash,\r\n // SIDEBAR_NAVIGATION_BUTTONS.bumpout,\r\n // SIDEBAR_NAVIGATION_BUTTONS.corners,\r\n // SIDEBAR_NAVIGATION_BUTTONS.radius,\r\n // SIDEBAR_NAVIGATION_BUTTONS.resize,\r\n // SIDEBAR_NAVIGATION_BUTTONS.label,\r\n // SIDEBAR_NAVIGATION_BUTTONS.appliances,\r\n // SIDEBAR_NAVIGATION_BUTTONS.mitered,\r\n // SIDEBAR_BUTTONS_MENU.delete\r\n // ];\r\n\r\n const allowedNavItems = allowedNavItemsForMovingPoint;\r\n\r\n const shape = parent.getParent();\r\n let isLineWithBumpout = false;\r\n let isPrevLineWithBumpout = false;\r\n if (shape instanceof sqftShape) {\r\n const prevLine = shape.getPrevLine(parent);\r\n isLineWithBumpout = this.getParent().isWithBumpout();\r\n isPrevLineWithBumpout = prevLine.isWithBumpout();\r\n }\r\n\r\n return state.canBeMoved\r\n //&& !disallowedNavItems.includes(activeButton) // allow move points only when this button is not active\r\n && allowedNavItems.includes(activeButton) // allow move points only when button is active\r\n && !isShowSlabTool\r\n && !isLineWithBumpout\r\n && !isPrevLineWithBumpout\r\n && !this.isWithAngle()\r\n && !this.isWithCorner()\r\n ;\r\n }\r\n\r\n const onMouseDown = (mousePos, e) => {\r\n void mousePos;\r\n void e;\r\n if (state.isHovering && canPointBeMoved()) {\r\n let shape = parent.getParent();\r\n if (shape instanceof sqftShape) {\r\n shape.setIsPointsMovable(true);\r\n }\r\n state.mouseDown = true;\r\n state.mouseDownPosition = mousePos;\r\n //console.log(\"state.mouseDown\", state.mouseDown);\r\n return true;\r\n }\r\n\r\n if (state.isHovering) {\r\n // Set shape point with mitered edge id\r\n if (parent instanceof MiteredOverlay) {\r\n const miteredPoints = parent.getPoints();\r\n if (this.id === miteredPoints[miteredPoints.length - 1].id || this.id === miteredPoints[0].id) {\r\n const hoveredPoint = workspace.getHoverPoint();\r\n hoveredPoint.addEdgeToPoint();\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n this.addEdgeToPoint = () => {\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n if (activeButton === SIDEBAR_NAVIGATION_BUTTONS.edge) {\r\n const featureId = reduxState.sqftMenuState.activeSubMenuButton;\r\n this.setMiteredFeatureId(featureId);\r\n }\r\n const updateCalculations = reduxState.sqftState.updateCalculations;\r\n store.dispatch(updateSQFTCalculations(updateCalculations + 1));\r\n }\r\n\r\n this.movePosition = (mousePos) => {\r\n let scale = workspace.getScale();\r\n let xDiff = (state.mouseDownPosition.x - mousePos.x) / scale;\r\n let yDiff = (state.mouseDownPosition.y - mousePos.y) / scale;\r\n\r\n state.mouseDownPosition.x = mousePos.x;\r\n state.mouseDownPosition.y = mousePos.y;\r\n this.pos.x -= xDiff;\r\n this.pos.y -= yDiff;\r\n this.revertPositionIfHasIntersections(xDiff, yDiff);\r\n setPointWasChangedInRegularMode();\r\n setPointWasMoved();\r\n state.pointWasMoved = true;\r\n }\r\n this.revertPositionIfHasIntersections = (xDiff, yDiff) => {\r\n let shape = parent.getParent();\r\n let isShapeHasIntersections = false;\r\n if (shape instanceof sqftShape) {\r\n isShapeHasIntersections = shape.isShapeHasIntersections();\r\n //console.log(\"isShapeHasIntersections\", isShapeHasIntersections);\r\n if (isShapeHasIntersections) {\r\n this.pos.x += xDiff;\r\n this.pos.y += yDiff;\r\n }\r\n }\r\n }\r\n //private property setters\r\n function setParent(value) { parent = value; }\r\n\r\n //private functions\r\n\r\n //public functions\r\n this.export = () => {\r\n let exportPoint = {};\r\n this.exportAndImportProperties.forEach((property) => {\r\n exportPoint[property] = clone(this[property]);\r\n });\r\n return exportPoint;\r\n };\r\n this.import = (importPoint) => {\r\n this.exportAndImportProperties.forEach((property) => {\r\n this[property] = clone(importPoint[property]);\r\n });\r\n //compatibility with old visualizer\r\n if (!importPoint[\"pos\"] && importPoint[\"x\"] !== undefined && importPoint[\"y\"] !== undefined ) {\r\n this.pos = { x: clone(importPoint[\"x\"]), y: clone(importPoint[\"y\"])}\r\n }\r\n };\r\n this.isHovering = function() { return state.isHovering; };\r\n this.getParent = function() { return parent };\r\n this.getGrandParent = () => {\r\n const parent = this.getParent();\r\n if (parent && parent.getParent) {\r\n return parent.getParent();\r\n }\r\n return null\r\n };\r\n this.isOverPointField = () => {\r\n let field = this.getPointField();\r\n\r\n state.isHovering = (\r\n state.mousePos.x >= field.x - this.arcLength - this.angle &&\r\n state.mousePos.x <= field.x + field.width + this.arcLength + this.angle &&\r\n state.mousePos.y >= field.y - this.arcLength - this.angle &&\r\n state.mousePos.y <= field.y + field.height + this.arcLength + this.angle\r\n );\r\n\r\n return state.isHovering;\r\n };\r\n this.getAngle = function () {\r\n return this.angle;\r\n };\r\n this.getArcLength = function () {\r\n return this.arcLength;\r\n };\r\n this.removeAttachedItem = function () {\r\n this.arcLength = 0;\r\n this.angle = 0;\r\n this.setMiteredFeatureId(null);\r\n sqftShapeManager.updateMinMaxMiteredPoints(this.getGrandParent());\r\n //reset seam shape changes in the slab mode\r\n sqftShapeManager.resetShapeChangesInTheSlabMode(this.getGrandParent());\r\n };\r\n this.rotate = (origin, angle, isSlabMode) => {\r\n let ret = {x: 0, y: 0};\r\n let tr = {x: this.x - origin.x, y: this.y - origin.y};\r\n\r\n ret.x = tr.x * Math.cos(angle) - tr.y * Math.sin(angle);\r\n ret.y = tr.x * Math.sin(angle) + tr.y * Math.cos(angle);\r\n\r\n //console.log(\"isSlabMode in point rotation\", isSlabMode)\r\n const xPos = Math.round10(Math.round10(ret.x, -5) + Math.round10(origin.x, -5), -5);\r\n const yPos = Math.round10(Math.round10(ret.y, -5) + Math.round10(origin.y, -5), -5);\r\n isSlabMode ? this.setPosSlab({x: xPos, y: yPos}) : this.setPos({x: xPos, y: yPos});\r\n };\r\n this.getPointDirection =function () {\r\n return this.pointDirection\r\n };\r\n this.changeCornerDirection = function(line1, line2) {\r\n\r\n // console.log('line1', line1);\r\n // console.log('line2', line2);\r\n\r\n if (line1.orientation === \"vertical\" && line1.newDirection === \"north\"\r\n && line2.orientation === \"horizontal\" && line2.newDirection === \"west\") {\r\n this.pointDirection = \"leftbottom\";\r\n }\r\n if (line1.orientation === \"horizontal\" && line1.newDirection === \"east\"\r\n && line2.orientation === \"vertical\" && line2.newDirection === \"north\") {\r\n this.pointDirection = \"lefttop\";\r\n }\r\n if (line1.orientation === \"vertical\" && line1.newDirection === \"south\"\r\n && line2.orientation === \"horizontal\" && line2.newDirection === \"east\") {\r\n this.pointDirection = \"righttop\";\r\n }\r\n if (line1.orientation === \"horizontal\" && line1.newDirection === \"west\"\r\n && line2.orientation === \"vertical\" && line2.newDirection === \"south\") {\r\n this.pointDirection = \"rightbottom\";\r\n }\r\n\r\n if (line1.orientation === \"vertical\" && line1.newDirection === \"north\"\r\n && line2.orientation === \"horizontal\" && line2.newDirection === \"east\") {\r\n this.pointDirection = \"lefttop\";\r\n }\r\n if (line1.orientation === \"horizontal\" && line1.newDirection === \"east\"\r\n && line2.orientation === \"vertical\" && line2.newDirection === \"south\") {\r\n this.pointDirection = \"righttop\";\r\n }\r\n if (line1.orientation === \"vertical\" && line1.newDirection === \"south\"\r\n && line2.orientation === \"horizontal\" && line2.newDirection === \"west\") {\r\n this.pointDirection = \"rightbottom\";\r\n }\r\n if (line1.orientation === \"horizontal\" && line1.newDirection === \"west\"\r\n && line2.orientation === \"vertical\" && line2.newDirection === \"north\") {\r\n this.pointDirection = \"leftbottom\";\r\n }\r\n\r\n };\r\n this.getPointField = (useFieldWidth = true) => {\r\n const isCabinet = isSFTCabinetsGroup();\r\n let fieldWidth = isCabinet ? sqftConfig.fieldWidthCabinet : sqftConfig.fieldWidth,\r\n center = fieldWidth / 2,\r\n scale = workspace.getScale(),\r\n offset = parent.getOffset();\r\n\r\n return {\r\n x: (this.x * scale) + offset.x - (useFieldWidth ? center : 0),\r\n y: (this.y * scale) + offset.y - (useFieldWidth ? center : 0),\r\n height: fieldWidth,\r\n width: fieldWidth\r\n };\r\n };\r\n\r\n this.getPointPosOnWorkspace = (shouldGetRegularPosition) => {\r\n const shp = this.getGrandParent();\r\n let position;\r\n if (shp) {\r\n position = shouldGetRegularPosition && shp.pos ? shp.pos : shp.getPosition();\r\n } else {\r\n position = shouldGetRegularPosition && parent.pos ? parent.pos : parent.getPosition();\r\n }\r\n const x = shouldGetRegularPosition ? +this.pos.x : +this.x;\r\n const y = shouldGetRegularPosition ? +this.pos.y : +this.y;\r\n\r\n return {\r\n x: x + position.x,\r\n y: y + position.y,\r\n };\r\n };\r\n\r\n this.getPointCords = () => {\r\n let pointField = this.getPointField();\r\n\r\n return {\r\n x: pointField.x + pointField.width / 2,\r\n y: pointField.y + pointField.width / 2\r\n }\r\n };\r\n\r\n this.snapToGrid = () => {\r\n /*var pos = snappedPos();\r\n this.x = pos.x;\r\n this.y = pos.y;*/\r\n };\r\n\r\n this.destroy = function(protect) {\r\n if (!protect) {\r\n EventManager.removeEvent(self);\r\n pointRadiusOverlay.destroy();\r\n }\r\n };\r\n\r\n this.init = function(parent) {\r\n setParent(parent);\r\n this.initEvents();\r\n pointRadiusOverlay = new PointRadius();\r\n pointRadiusOverlay.init(self);\r\n };\r\n this.initEvents = () => {\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_MOVE,\r\n onMouseMove,\r\n self,\r\n EventManager.priorities.POINT\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_DOWN,\r\n onMouseDown,\r\n self,\r\n EventManager.priorities.POINT\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_UP,\r\n onMouseUp,\r\n self,\r\n EventManager.priorities.POINT\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.RENDER,\r\n this.render,\r\n self,\r\n EventManager.priorities.POINT\r\n );\r\n };\r\n this.deregisterEvents = () => {\r\n EventManager.removeEvent(this);\r\n };\r\n this.reInitEvents = () => {\r\n this.initEvents();\r\n };\r\n this.deregisterPartEvents = () => {\r\n if (pointRadiusOverlay) {\r\n pointRadiusOverlay.deregisterPartEvents();\r\n }\r\n };\r\n this.reInitPartEvents = () => {\r\n if (pointRadiusOverlay) {\r\n pointRadiusOverlay.reInitPartEvents();\r\n }\r\n };\r\n // check if corner can be applied to another side of the line\r\n this.isFitSize = function () {\r\n if (parent.isLine) {\r\n let fitSize = new FitSize(parent);\r\n\r\n return fitSize.isFitSize(SqftStore.radius.angle || SqftStore.radius.arcLength);\r\n }\r\n return true\r\n };\r\n\r\n this.isWithoutMitered = function () {\r\n return !(this.getParent() ? this.getParent().isWithMitered() : false)\r\n && !(this.getParent() ? this.getParent().isWithMiteredPrev() : false)\r\n };\r\n this.rememberPos = () => {\r\n this.backupX = this.x;\r\n this.backupY = this.y;\r\n }\r\n this.restorePos = () => {\r\n this.x = this.backupX;\r\n this.y = this.backupY;\r\n }\r\n\r\n this.render = (ctx) => {\r\n if (workspace && workspace.getState().loading) {\r\n return\r\n }\r\n\r\n if (isDisabledInPopupShouldBeHidden() && isDisabledInPopupWithParents(this)) {\r\n return\r\n }\r\n\r\n if (this.isHidden()) { return; }\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n const o = parent.getOffset();\r\n let\r\n pointField = self.getPointField(),\r\n scale = sqftConfig.scale,\r\n marginX,\r\n marginY;\r\n\r\n switch (this.pointDirection) {\r\n case \"lefttop\":\r\n marginX = -13;\r\n marginY = -13;\r\n break;\r\n case \"righttop\":\r\n marginX = 5;\r\n marginY = -13;\r\n break;\r\n case \"rightbottom\":\r\n marginX = 5;\r\n marginY = self.pointDiff ? 5 - self.pointDiff : 5;\r\n break;\r\n case \"leftbottom\":\r\n marginX = self.pointDiff ? -13 + self.pointDiff : -13;\r\n marginY = 5;\r\n break;\r\n default:\r\n marginX = 0;\r\n marginY = 0;\r\n break;\r\n }\r\n\r\n let pos = {\r\n x: o.x + (this.x * scale) + marginX,\r\n y: o.y + (this.y * scale) + marginY\r\n };\r\n\r\n let pos2 = {\r\n x: o.x + (this.x * scale),\r\n y: o.y + (this.y * scale)\r\n };\r\n void pos2;\r\n\r\n const shouldHighLightRadius = sqftConfig.highlight.points\r\n && !(this.arcLength > 0 || this.angle > 0)\r\n && !self.angleIsChanged\r\n && this.isFitSize();\r\n\r\n const isNotHighlighted = !(sqftConfig.highlight.points && !(this.arcLength > 0 || this.angle > 0))\r\n || sqftConfig.highlight.points && !this.isFitSize();\r\n\r\n ctx.save();\r\n ctx.beginPath();\r\n\r\n if (this.layout === 'white-circle') {\r\n this.renderCircleLayout(ctx, pointField);\r\n\r\n if (EventManager.getCursor().indexOf(\"delete\") >= 0 && state.isHovering && parent instanceof MiteredOverlay) {\r\n ctx.fillStyle = fillStyleDelete;\r\n } else {\r\n ctx.fillStyle = fillStyleWhite;\r\n }\r\n ctx.fill();\r\n\r\n } else if (this.layout === 'small-white-circle' || state.isHovering && canPointBeMoved()) {\r\n this.renderSmallCircleLayout(ctx, pointField);\r\n\r\n } else if (this.layout === 'black-circle') {\r\n this.renderCircleLayout(ctx, pointField);\r\n ctx.fillStyle = fillStyleBlack;\r\n ctx.fill();\r\n\r\n } else if (this.layout === 'arrow-circle') {\r\n this.renderArrowCircleLayout(ctx, pointField);\r\n\r\n } else if (this.layout === 'blank') {\r\n this.renderBlankLayout(ctx, pos);\r\n\r\n } else if (shouldHighLightRadius) {\r\n this.renderHighlightRadiusLayout(ctx, pointField);\r\n\r\n } else if (sqftConfig.highlight.rotateAngle && this.renderAngleCircle) {\r\n this.renderRotateAngleLayout(ctx, pointField);\r\n\r\n } else {\r\n if (this.getMiteredFeatureId()) {\r\n ctx.fillStyle = fillStyleEdge\r\n } else {\r\n ctx.fillStyle = fillStyle;\r\n }\r\n\r\n if (this.arcLength > 0 || this.angle > 0) {\r\n //this.renderArcLayoutOld(ctx, pointField, pos);\r\n\r\n } else if (isNotHighlighted) {\r\n if (allowedNavItemsForMovingPoint.includes(activeButton)) {\r\n this.renderWhitePointLayout(ctx, pos2);\r\n } else {\r\n // old gray rectangle\r\n //this.renderGrayPointLayoutV2(ctx, pos);\r\n\r\n // gray rectangle version 2\r\n this.renderGrayPointLayoutV2(ctx);\r\n }\r\n }\r\n }\r\n\r\n ctx.closePath();\r\n ctx.restore();\r\n };\r\n\r\n this.renderRotateAngleLayout = (ctx, pointField) => {\r\n //todo fix bumpout rotation and remove this\r\n ////////////////////////////////////////////////\r\n if (!parent.getParent().isWithBumpout()\r\n && !parent.getParent().isWithMitered()\r\n && !parent.getParent().isPointsMoved\r\n && parent.getParent().rotatedDegrees === 0\r\n ) {\r\n ///////////////////////////////////\r\n setTranslates();\r\n ctx.arc(\r\n pointField.x + translateX + pointField.width / 2,\r\n pointField.y + translateY - 2 + pointField.width / 2,\r\n this.renderAngleCircle,\r\n 0,\r\n 2 * Math.PI\r\n );\r\n ctx.closePath();\r\n ctx.lineWidth = 2;\r\n ctx.strokeStyle = COLOR_THEMES[sqftConfig.activeTheme].active;\r\n ctx.fillStyle = \"rgba(159, 197, 34, 0.25)\";\r\n ctx.fill();\r\n ctx.stroke();\r\n ctx.beginPath();\r\n ctx.arc(pointField.x + 45 / 2 + translateX + 2, pointField.y + 45 / 2 + translateY, this.renderAngleCircle / 2, 0, 2 * Math.PI);\r\n ctx.fillStyle = COLOR_THEMES[sqftConfig.activeTheme].active;\r\n ctx.fill();\r\n ctx.closePath();\r\n\r\n if (this.renderAngleArc) {\r\n ctx.beginPath();\r\n ctx.strokeStyle = COLOR_THEMES[sqftConfig.activeTheme].active;\r\n ctx.arc(\r\n pointField.x + translateX + 4 + pointField.width / 2,\r\n pointField.y + pointField.width / 2,\r\n this.renderAngleArc,\r\n 0,\r\n Math.PI / 2\r\n );\r\n ctx.stroke();\r\n }\r\n }\r\n }\r\n\r\n this.renderHighlightRadiusLayout = (ctx, pointField) => {\r\n //todo hide if override\r\n\r\n setTranslates();\r\n ctx.arc(\r\n pointField.x + translateX + pointField.width / 2,\r\n pointField.y + translateY + pointField.width / 2,\r\n pointField.width / 2,\r\n 0,\r\n 2 * Math.PI\r\n );\r\n ctx.closePath();\r\n ctx.lineWidth = 2;\r\n ctx.strokeStyle = radiusFillStyle;\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.arc(pointField.x + 45/2 + translateX + 2, pointField.y + 45/2 + translateY, 8, 0, 2 * Math.PI, false);\r\n ctx.fillStyle = radiusFillStyle;\r\n ctx.fill();\r\n }\r\n\r\n this.renderCircleLayout = (ctx, pointField) => {\r\n setTranslates();\r\n ctx.arc(\r\n pointField.x + translateX + pointField.width / 2,\r\n pointField.y + translateY + pointField.width / 2,\r\n 9,\r\n 0,\r\n 2 * Math.PI\r\n );\r\n ctx.closePath();\r\n ctx.lineWidth = 2;\r\n ctx.strokeStyle = fillStyleBlack;\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.arc(\r\n pointField.x + translateX + pointField.width / 2,\r\n pointField.y + translateY + pointField.width / 2,\r\n 8,\r\n 0,\r\n 2 * Math.PI,\r\n false\r\n );\r\n }\r\n\r\n this.renderSmallCircleLayout = (ctx, pointField) => {\r\n let arcRadius;\r\n ctx.lineWidth = 2;\r\n if (state.isHovering) {\r\n arcRadius = 6\r\n ctx.fillStyle = COLOR.blackLight;\r\n } else {\r\n arcRadius = 5\r\n ctx.fillStyle = COLOR.white;\r\n }\r\n\r\n ctx.arc(\r\n pointField.x + pointField.width / 2,\r\n pointField.y + pointField.width / 2,\r\n arcRadius,\r\n 0,\r\n 2 * Math.PI,\r\n false\r\n );\r\n\r\n ctx.strokeStyle = COLOR_THEMES[config.activeTheme].primary;\r\n\r\n ctx.stroke();\r\n ctx.fill();\r\n }\r\n\r\n this.renderBlankLayout = (ctx, pos) => {\r\n ctx.rect(pos.x, pos.y, 1, 1); // draw simple rectangle\r\n ctx.fill();\r\n }\r\n\r\n this.renderArrowCircleLayout = (ctx, pointField) => {\r\n setTranslates();\r\n\r\n ctx.beginPath();\r\n ctx.arc(\r\n pointField.x + translateX + pointField.width / 2,\r\n pointField.y + translateY + pointField.width / 2,\r\n 10,\r\n 0,\r\n 2 * Math.PI,\r\n false\r\n );\r\n ctx.fillStyle = fillStyleBlue;\r\n ctx.fill();\r\n }\r\n\r\n this.renderGrayPointLayout = (ctx, pos) => {\r\n ctx.rect(pos.x, pos.y, 8, 8); // draw simple rectangle\r\n ctx.fillStyle = 'rgba(205,202,202,0.5)';\r\n ctx.fill();\r\n ctx.closePath();\r\n }\r\n\r\n this.renderArcLayoutOld = (ctx, pointField, pos) => {\r\n console.log('pointField.x', pointField.x);\r\n console.log('pointField.y', pointField.y);\r\n console.log('radius', this.arcLength);\r\n\r\n ctx.beginPath();\r\n ctx.lineWidth = 8;\r\n ctx.strokeStyle = radiusFillStyle;\r\n ctx.strokeStyle = \"#b263a8\";\r\n ctx.moveTo(pointField.x + 15, pointField.y + 45); // P0\r\n ctx.arcTo(pointField.x + 15, pointField.y + 15, pointField.x + 45, pointField.y + 15, 30); // P1, P2 and the radius\r\n ctx.stroke();\r\n console.log('stroked2!');\r\n\r\n ctx.moveTo(pos.x, pos.y);\r\n ctx.arcTo(pos.x, pos.y, pos.x + 15, pos.y + 15, this.arcLength); // draw arc radius\r\n ctx.stroke();\r\n console.log('stroked!');\r\n }\r\n\r\n this.renderGrayPointLayoutV2 = (ctx) => {\r\n ctx.beginPath();\r\n const shape = parent.getParent();\r\n const nextLine = shape.getNextLine(parent);\r\n //const prevLine = shape.getPrevLine(parent);\r\n const angleBetweenTwoLines = getAngleBetween3Points(parent.from, parent.to, nextLine.to);\r\n //console.log(\"angleBetweenTwoLines\", angleBetweenTwoLines);\r\n\r\n void angleBetweenTwoLines;\r\n\r\n const pointOnTheLine = getPointOnTheLine(\r\n parent.to.getPointField(false),\r\n parent.from.getPointField(false),\r\n 15\r\n );\r\n const pointOnTheNextLine = getPointOnTheLine(\r\n nextLine.from.getPointField(false),\r\n nextLine.to.getPointField(false),\r\n 15\r\n );\r\n const midpoint = getMidPoint(pointOnTheLine, pointOnTheNextLine);\r\n let posX = midpoint.x; //o.x + (midpoint.x * scale);\r\n let posY = midpoint.y; //o.y + (midpoint.y * scale);\r\n void posX;\r\n void posY;\r\n\r\n ctx.rect(\r\n posX - 4,\r\n posY - 4,\r\n 8, 8\r\n ); // draw simple rectangle\r\n ctx.fillStyle = 'rgba(205,202,202,0.5)';\r\n ctx.fill();\r\n }\r\n\r\n this.renderWhitePointLayout = (ctx, pos2) => {\r\n ctx.arc(\r\n pos2.x,\r\n pos2.y,\r\n 5,\r\n 0,\r\n 2 * Math.PI\r\n );\r\n ctx.fillStyle = 'rgb(255,255,255)';\r\n ctx.fill();\r\n ctx.lineWidth = 2;\r\n ctx.strokeStyle = fillStyleBlue;\r\n ctx.stroke();\r\n }\r\n}\r\n","import workspace from \"../workspace\";\r\nimport {v4 as uuidv4} from \"uuid\";\r\nimport store from \"../../../../../../store\";\r\nimport {addResource, changeResource} from \"../../../../../../actions/sqftResourceFunctions\";\r\nimport {getEdgeFeatures} from \"../../../../helpers/shapeHelper\";\r\nimport {getBacksplashArea, getEdgeArea, getEdgeLength} from \"../../../../helpers/sqftHelper\";\r\nimport {RESOURCE_ATTACHED_TO_TYPE, RESOURCE_TYPE} from \"../../../../constants\";\r\nimport {setSQFTPopup} from \"../../../../../../actions/sqftMenuFunctions\";\r\nimport {getQtCatName} from \"../../../../helpers/sqftQuotesHelper\";\r\nimport sqftConfig from \"../../store/sqftConfig\";\r\n\r\n/**\r\n * Prepare and attach resourceType(edge, backsplash, bumpout, mitered) to the line or lineCorner\r\n * @param {*} seg\r\n * @param {*} segCorner\r\n * @param {*} resourceType\r\n * @param {number} featureId\r\n * @param {string} partId\r\n * @param {*} featureName\r\n * @param height\r\n * @param {string} resourceId\r\n * @param qtCatName\r\n * @param {boolean} addResourceToStore\r\n * @param {boolean} shouldShowEyeBall\r\n */\r\nexport const attachResource = (\r\n seg,\r\n segCorner,\r\n resourceType,\r\n featureId,\r\n partId,\r\n featureName,\r\n height = 0,\r\n resourceId = null,\r\n qtCatName = null,\r\n addResourceToStore = true,\r\n shouldShowEyeBall = true,\r\n) => {\r\n const attachedToHovered = segCorner || seg;\r\n const attachedToExisting = workspace.getAttachedTo(attachedToHovered);\r\n const attachedToResource = prepareResource(seg, segCorner, resourceType, featureId, partId, featureName, resourceId, qtCatName, height, shouldShowEyeBall);\r\n\r\n attachResourceToLine(seg, segCorner, resourceType, featureId, partId, featureName, height, shouldShowEyeBall);\r\n\r\n if (addResourceToStore) {\r\n createAttachedResourceInStore(attachedToExisting, attachedToResource);\r\n }\r\n\r\n closeSQFTPopup();\r\n}\r\n\r\nconst createAttachedResourceInStore = (shouldChangeExisting, attachedToResource) => {\r\n const action = shouldChangeExisting ? changeResource : addResource;\r\n store.dispatch(action(RESOURCE_TYPE.attachedToLine, attachedToResource));\r\n}\r\n\r\nconst attachResourceToLine = (seg, segCorner, resourceType, featureId, partId, featureName, height) => {\r\n let historyCallBack = () => {};\r\n let newSection;\r\n\r\n const resourceActionMap = {\r\n 'edge': (segCorner) ? segCorner.addEdgeToCornerLine.bind(this, featureName, featureId) : seg.addEdgeToLine.bind(this, featureName, featureId),\r\n 'backsplash': (segCorner) ? segCorner.addBacksplashToCornerLine.bind(this, featureName, resourceType, featureId, height) : seg.addBacksplashToLine.bind(this, featureName, resourceType, featureId, height),\r\n [RESOURCE_ATTACHED_TO_TYPE.bumpout]: () => {\r\n if (seg && !seg.isWithBumpout()) seg.addBumpoutToLine();\r\n },\r\n [RESOURCE_ATTACHED_TO_TYPE.mitered]: () => {\r\n if (seg && !seg.isWithMitered()) {\r\n newSection = seg.addMiteredToLine();\r\n if (newSection) workspace.miteredController.addSection(newSection);\r\n }\r\n if (segCorner && !segCorner.isWithMitered()) {\r\n newSection = segCorner.addMiteredToCornerLine();\r\n if (newSection) workspace.miteredController.addSection(newSection);\r\n }\r\n },\r\n [RESOURCE_ATTACHED_TO_TYPE.underlayment]: () => {\r\n if (seg && !seg.isWithMitered()) {\r\n newSection = seg.addUnderlaymentToLine();\r\n if (newSection) workspace.underlaymentController.addSection(newSection);\r\n }\r\n },\r\n [RESOURCE_ATTACHED_TO_TYPE.crown_molding]: () => seg.addCrownMoldingToLine(featureName, featureId),\r\n [RESOURCE_ATTACHED_TO_TYPE.end_cap]: () => seg.addEndCapToLine(featureName, featureId),\r\n };\r\n\r\n if (resourceActionMap[resourceType]) {\r\n historyCallBack = resourceActionMap[resourceType];\r\n }\r\n\r\n historyCallBack();\r\n}\r\n\r\nexport const closeSQFTPopup = () => {\r\n const state = store.getState();\r\n const isSQFTPopupOpened = state.sqftMenuState.sqftPopup.isOpened;\r\n\r\n if (isSQFTPopupOpened) {\r\n store.dispatch(setSQFTPopup({\r\n title: workspace.intl.formatMessage({ id: \"sqft.popup.title.systemMessage\" }),\r\n content: '',\r\n isOpened: false,\r\n confirmCallback: () => {},\r\n confirmText: '',\r\n cancelCallback: () => {},\r\n cancelText: ''\r\n }));\r\n }\r\n}\r\n\r\nconst prepareResource = (seg, segCorner, resourceType, featureId, partId, featureName, resourceId, qtCatName, height, shouldShowEyeBall = true) => {\r\n const attachedToHovered = segCorner || seg;\r\n const id = resourceId || (attachedToHovered && attachedToHovered.id) || uuidv4();\r\n\r\n let attachedToParentId = null;\r\n if (attachedToHovered && attachedToHovered.getParent) {\r\n const parent = attachedToHovered.getParent();\r\n attachedToParentId = parent ? parent.id : null;\r\n }\r\n\r\n return {\r\n id,\r\n type: resourceType,\r\n featureId,\r\n name: featureName,\r\n attachedToId: attachedToHovered ? attachedToHovered.id : null,\r\n partId,\r\n part: segCorner ? 'lineCorner' : 'line',\r\n attachedToParentId,\r\n isDisabledInPopup: attachedToHovered ? attachedToHovered.isDisabledInPopup : null,\r\n qtCatName: qtCatName || getQtCatName(),\r\n shouldShowEyeBall,\r\n height,\r\n\r\n export() {\r\n let length = 0, realLength = 0, lineLength = 0, area = 0;\r\n const line = workspace.getLineOrCornerLineById(this.attachedToId);\r\n\r\n if (line) {\r\n switch (resourceType) {\r\n case RESOURCE_ATTACHED_TO_TYPE.edge: {\r\n const navItems = getEdgeFeatures();\r\n const navItem = navItems.find(edge => edge.part.dbFeature.id === this.featureId);\r\n const feature = navItem ? navItem.part : null;\r\n const unit = feature ? feature.dbFeature.unit : null;\r\n length = (unit && unit.toLowerCase() === \"each\") ? 1 : getEdgeLength(line);\r\n realLength = getEdgeLength(line);\r\n lineLength = sqftConfig.measureUnit === \"Imperial\" ? line.getLineLength() : line.getLineLengthMm();\r\n area = getEdgeArea(line, lineLength, featureId);\r\n break;\r\n }\r\n case RESOURCE_ATTACHED_TO_TYPE.backsplash:\r\n length = getBacksplashArea(line.getBacksplashHeight(), line);\r\n break;\r\n default:\r\n length = realLength = getEdgeLength(line);\r\n break;\r\n }\r\n return { ...this, length, realLength, lineLength, area };\r\n }\r\n\r\n return {};\r\n }\r\n };\r\n};\r\n\r\n","import invert from \"lodash/invert\";\r\nimport {CountsType} from \"../../bvComponent/core/constants\";\r\nimport {LayoutAbbreviation} from \"../../kvComponent/core/constants\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport Config from \"../../../config\";\r\n\r\nexport const getActivePartsCounts = (activePart, layoutName) => {\r\n let counts = 0;\r\n switch (document.kvConfig.visualizerType) {\r\n case \"Bathroom\":\r\n case \"BV\": {\r\n if (activePart.counts) {\r\n counts = activePart.counts.allLayoutFeaturesCount + activePart.counts[invert(CountsType)[layoutName]];\r\n }\r\n break;\r\n }\r\n case \"Kitchen\":\r\n case \"KV\": {\r\n const excluded = [\r\n \"range\", \"center_island_range\", \"stovetop\", \"center_island_stovetop\", \"faucet\", \"sink\", \"bottom_cabinet\",\r\n \"countertop\", \"center_island_faucet\", \"center_island_sink\", \"center_island_countertop\", \"top_cabinet\",\r\n \"center_island_edge\", \"edge_profile\"\r\n ];\r\n if (!excluded.includes(activePart.partId) && activePart.counts) {\r\n const layoutAbbr = LayoutAbbreviation[layoutName].toLowerCase();\r\n counts = activePart.counts[layoutAbbr];\r\n }\r\n break;\r\n }\r\n }\r\n return counts\r\n};\r\n\r\nexport const getAvailableLayouts = () => {\r\n const layout = getCurrentLayout();\r\n const parents = layout.getFeatures();\r\n\r\n if (document.kvConfig.visualizerType === \"bvScene\") { // removed Layout4 from bvScene as it is really buggy on some profiles (\"userId\": 224022)\r\n return [\"Layout1\"]\r\n }\r\n\r\n return Object.keys(layout.layoutNames)\r\n .filter(key => key !== \"All\" && parents.some(parent => {\r\n const exisitngRelItemWithFeatures = parent.relatedItems && parent.relatedItems.find(relItem => {\r\n return relItem.featuresList[key] && relItem.featuresList[key].length && relItem.featuresList[key].some(feature => {\r\n return feature.dbFeature.s3Bindings\r\n })\r\n })\r\n // console.log(\"exisitngRelItemWithFeatures\", exisitngRelItemWithFeatures);\r\n return exisitngRelItemWithFeatures\r\n }))\r\n}\r\n\r\nexport const getShowOtherLayouts = (fabricatorSettings) => {\r\n if (document.kvConfig.toolVersion >= 5 && !Config.isVisualizerManagement()) {\r\n return false\r\n }\r\n let showOtherLayouts =\r\n (document.kvConfig.visualizerType === \"Bathroom\" || document.kvConfig.visualizerType === \"BV\")\r\n ? fabricatorSettings && (fabricatorSettings.showSmallDesignForClients\r\n || (fabricatorSettings.showSmallDesignFromDashboard && document.kvConfig.isBackend))\r\n : true;\r\n if (showOtherLayouts) {\r\n showOtherLayouts = getAvailableLayouts().length > 1\r\n }\r\n return showOtherLayouts\r\n};\r\n\r\nexport const getAvailableRoomScenes = () => {\r\n let availableRoomScenes = [];\r\n const layout = getCurrentLayout();\r\n const allFeatures = layout.getAllFeatures();\r\n for (let i = 0; i < allFeatures.length; i++) {\r\n const feature = allFeatures[i];\r\n if (feature.dbFeature.metaData && Array.isArray(feature.dbFeature.metaData[\"RoomScene\"])) {\r\n feature.dbFeature.metaData[\"RoomScene\"].forEach(scene => {\r\n if (!availableRoomScenes.includes(scene)) {\r\n availableRoomScenes.push(scene)\r\n }\r\n })\r\n }\r\n }\r\n return availableRoomScenes.sort()\r\n}\r\n\r\nexport const scrolledVerticalToTheEnd = ({clientHeight, scrollHeight, scrollTop}) => {\r\n const ceilScrollHeight = Math.ceil(scrollHeight);\r\n const floorScrollHeight = Math.floor(scrollHeight);\r\n const ceilScrollTop = Math.ceil(scrollTop);\r\n const floorScrollTop = Math.floor(scrollTop);\r\n const ceilClientHeight = Math.ceil(clientHeight);\r\n const floorClientHeight = Math.floor(clientHeight);\r\n\r\n return (ceilScrollHeight - ceilScrollTop === ceilClientHeight)\r\n || (ceilScrollHeight - floorScrollTop === ceilClientHeight)\r\n || (ceilScrollHeight - ceilScrollTop === floorClientHeight)\r\n || (ceilScrollHeight - floorScrollTop === floorClientHeight)\r\n || (floorScrollHeight - ceilScrollTop === ceilClientHeight)\r\n || (floorScrollHeight - floorScrollTop === ceilClientHeight)\r\n || (floorScrollHeight - floorScrollTop === floorClientHeight)\r\n || (floorScrollHeight - floorScrollTop === floorClientHeight)\r\n}\r\n\r\n/**\r\n * when the new customer is created - the system creates a job for him with only one userState property\r\n * @param parentGroup {object}\r\n // * @param fabricatorData {object}\r\n * @returns {array}\r\n */\r\nexport const getSideBarSubParts = (parentGroup) => {\r\n if (!parentGroup || !parentGroup.subParts || !parentGroup.layout) {\r\n return []\r\n }\r\n let subParts = parentGroup.subParts(true, true) || [];\r\n const layout = parentGroup.layout;\r\n if (!Config.showAllVisualizerGroups()) {\r\n subParts = subParts.filter(subPart => {\r\n return layout.hasNavItemsLength(subPart)\r\n // && !(fabricatorData && fabricatorData.isEncore && Array.isArray(layout.disabledClickablePartIds)\r\n // && layout.disabledClickablePartIds.includes(subPart.part.partId)) // hide if it's not clickable (for encore)\r\n })\r\n }\r\n return subParts\r\n}\r\n","import {getQuotePriceWithTaxes, getTotalPrice, toFixedFeatureCost} from \"./misc/helpers\";\r\nimport store from \"./store\";\r\nimport {getAllFeatureFilters, getFilterGroupValue} from \"./misc/utils\";\r\nimport {filterCartItems} from \"./bvcomponents/look/lookNavigation/lookFunctions2\";\r\n\r\n\r\nexport const getAnalyticsEcommerceItem = (feature, quantity = 1, index = 0) => {\r\n if (!feature) {\r\n return false\r\n }\r\n const {fabricatorState, filterState} = store.getState();\r\n const {filterGroups} = filterState;\r\n\r\n let item_brand = \"\";\r\n const manufacturerFilterGroup = filterGroups.find(filterGroup => filterGroup.name.trim() === \"Manufacturer\");\r\n if (manufacturerFilterGroup) {\r\n const featureFilters = getAllFeatureFilters(feature);\r\n if (featureFilters && Array.isArray(featureFilters[manufacturerFilterGroup.id]) && featureFilters[manufacturerFilterGroup.id].length) {\r\n const filterValueObject = getFilterGroupValue(featureFilters[manufacturerFilterGroup.id][0], manufacturerFilterGroup)\r\n if (filterValueObject) {\r\n item_brand = filterValueObject.displayText;\r\n }\r\n }\r\n }\r\n\r\n const featureGroup = feature.getParent();\r\n const itemQuantity = Number.isInteger(quantity) ? quantity : 1;\r\n\r\n return {\r\n item_id: feature.dbFeature.sku, // \"SKU_12345\"\r\n item_name: feature.getCustomFullDisplayName(), // \"Stan and Friends Tee\",\r\n affiliation: fabricatorState.companyName || \"\", // \"Google Merchandise Store\",\r\n coupon: \"\", // \"SUMMER_FUN\", // we never have any\r\n discount: 0.00, // 2.22 // we are not using them yet\r\n index,\r\n item_brand, // \"Google\", // Manufacturer filter\r\n item_category: feature.dbFeature.lixilProductCategory || \"\", // \"Apparel\",\r\n item_category2: feature.dbFeature.lixilProductSubCategory || \"\", // \"Adult\",\r\n item_category3: feature.getCollectionName(filterGroups), // \"Shirts\",\r\n item_category4: \"\", // \"Crew\",\r\n item_category5: \"\", // \"Short sleeve\",\r\n item_list_id: feature.partId, // \"related_products\",\r\n item_list_name: featureGroup.dbName || featureGroup.partName || \"\", //\"Related Products\",\r\n item_variant: feature.getColorName(filterGroups), // \"green\",\r\n location_id: \"\", // \"ChIJIQBpAG2ahYAR_6128GcTUEo\",\r\n price: +toFixedFeatureCost(feature, itemQuantity),\r\n quantity: itemQuantity\r\n }\r\n}\r\n\r\nexport const getAnalyticsEcommerceValues = (cartItemsToCount) => {\r\n const {cartState, fabricatorState} = store.getState();\r\n const cartItems = cartItemsToCount || cartState.cartItems;\r\n const fabricatorSettings = fabricatorState.settings;\r\n\r\n const cartItemsToInclude = filterCartItems(cartItems);\r\n const totalPrice = getTotalPrice(null, false, cartItemsToInclude);\r\n\r\n const tax = totalPrice.priceTaxes.length\r\n ? totalPrice.priceTaxes.reduce((acc, tax) => acc + tax.materialTax, 0)\r\n : totalPrice.materialTaxes\r\n\r\n return {\r\n currency: fabricatorSettings.currency,\r\n value: getQuotePriceWithTaxes(totalPrice),\r\n items: cartItemsToInclude.map((cartItem, cartItemIndex) => {\r\n return getAnalyticsEcommerceItem(cartItem.cartFeature, cartItem.quantity, cartItemIndex)\r\n }),\r\n tax: tax || 0,\r\n shipping: totalPrice.totalDeliveryCost || 0,\r\n }\r\n}\r\n","import {iCmp} from \"../../../../misc/utils\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport Layer from \"../../../visComponents/layer\";\r\nimport PartCommon from \"../../../visComponents/partCommon\";\r\n\r\nexport class Part extends PartCommon {\r\n\r\n constructor(isParent, isChild, menuType) {\r\n super();\r\n if (isChild || (isParent && menuType === PartMenuType.Simple)) {\r\n this.featuresList = {\r\n Large: [],\r\n Small: []\r\n };\r\n this.featuresPartsList = {\r\n Large: [],\r\n Small: []\r\n };\r\n this.allFeaturesReceived = false;\r\n this.realFeaturesReceived = false; // this prop is need on Scroll (if features count more that 1000)\r\n this.nextFeaturesPageToLoad = 0;\r\n this.activeFeature = null;\r\n this.placeholderFeature = null;\r\n this.shadowFeature = null;\r\n this.placeholderChanged = false;\r\n this.firstClick = {\r\n \"0\": false // first quote\r\n };\r\n this.activeLockedFeature = null;\r\n this.activeNotInVisualizerFeature = null; // is needed to display in the QT selected activeNotInVisualizerFeature, but render proper activeFeature layer(for example, countertop)\r\n // name = \"\";\r\n this.visible = true;\r\n this.categoryEnabled = false;\r\n this.layout = null;\r\n this.featureGroupVisible = true; // dashboard's feature group eye ball logic\r\n this.featureGroupEnabled = true; // dashboard's feature group checkbox logic\r\n this.filtersReceived = null; // array of filters values, comes from BE, for ex [1221, 347, 1124]\r\n }\r\n if (isParent) {\r\n this.partThumbnail = '';\r\n this.relatedItems = [];\r\n }\r\n if (!isChild && !isParent) {\r\n this.dbFeature = null;\r\n this.layer = new Layer(\"bv\");\r\n this._customDisplayName = null;\r\n this.notesList = {};\r\n }\r\n this.partName = \"\";\r\n }\r\n\r\n set features(featuresList) {\r\n // features can't be set directly, we need to change featuresList array\r\n }\r\n get features() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.featuresList[layout.getCurrentLayoutName()]\r\n }\r\n set featuresParts(featuresList) {\r\n // featuresParts can't be set directly, we need to change featuresPartsList array\r\n }\r\n get featuresParts() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.featuresPartsList[layout.getCurrentLayoutName()]\r\n }\r\n\r\n featureClicked() {\r\n this.updateLocalStorage();\r\n // other specific events, for ex. Google Analytics, etc.\r\n }\r\n\r\n /**\r\n * Checks whether a given for condition matches the needed value (or array of values)\r\n * @param name {string}\r\n * @param value {string || array}\r\n * @returns {int} -1 - no such for condition, 0 - no match, 1 - matches\r\n */\r\n matchesMetaForCondition(name, value) {\r\n return this.metaData[name] && this.metaData[name].some(condValue => {\r\n return Array.isArray(value) ? value.some(val => iCmp(condValue, val, true)) : iCmp(condValue, value, true)\r\n });\r\n }\r\n\r\n matchesMetaForArrayOfConditions(arrayOfConditions) {\r\n return arrayOfConditions.every((condition) => {\r\n let conditionPassed = this.matchesMetaForCondition(condition.propName, condition.propValue);\r\n if (condition.propName === \"EX L\" && !conditionPassed) {\r\n conditionPassed = this.matchesMetaForCondition( \"Wall\", condition.propValue);\r\n } else if (condition.propName === \"Size\" && condition.propValue === \"60in\" && Array.isArray(this.metaData[\"Size\"])\r\n && this.metaData[\"Size\"].includes(\"30in\")) {\r\n conditionPassed = false\r\n }\r\n return conditionPassed\r\n })\r\n }\r\n}\r\n\r\n\r\n","import {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport {setLeadCaptureClickCount} from \"../../../actions/userFunctions\";\r\nimport {LOOK_OVERLAYS} from \"../core/constants\";\r\nimport {setLookOverlayOpened} from \"../../../actions/lookFunctions\";\r\n\r\n\r\nconst WithClickCount = (props) => {\r\n\r\n const {fabricatorSettings, isPhoneNumberValidated, leadCaptureClickCount, setLeadCaptureClickCount, children,\r\n setLookOverlayOpened} = props;\r\n\r\n const maxClickCountReached = () => {\r\n if (!isPhoneNumberValidated && fabricatorSettings.clickLeadCapture) {\r\n const newLeadCount = leadCaptureClickCount + 1;\r\n if (newLeadCount >= fabricatorSettings.clickLeadCount) {\r\n setLookOverlayOpened(LOOK_OVERLAYS.leadCapture);\r\n return true;\r\n } else {\r\n setLeadCaptureClickCount(newLeadCount);\r\n }\r\n }\r\n return false\r\n }\r\n\r\n\r\n return children(maxClickCountReached)\r\n};\r\n\r\nWithClickCount.propTypes = {\r\n children: PropTypes.any.isRequired\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {settings} = store.fabricatorState;\r\n const {isPhoneNumberValidated, leadCaptureClickCount} = store.userState;\r\n return {\r\n fabricatorSettings: settings,\r\n isPhoneNumberValidated,\r\n leadCaptureClickCount,\r\n }\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLeadCaptureClickCount,\r\n setLookOverlayOpened,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(WithClickCount)\r\n","//********* TUTORIALS *********//\r\nimport * as types from \"./actionTypes\";\r\n\r\nexport const toggleShowAssignQuotePopup = (showAssignQuotePopup, assignQuotePopupSaveButtons = \"all\") => ({\r\n type: types.TOGGLE_SHOW_ASSIGN_QUOTE_POPUP,\r\n payload: {showAssignQuotePopup, assignQuotePopupSaveButtons}\r\n});\r\n\r\nexport const setAssignQuotePopupSearchText = (assignQuotePopupSearchText) => ({\r\n type: types.SET_ASSIGN_QUOTE_POPUP_SEARCH_TEXT,\r\n payload: {assignQuotePopupSearchText}\r\n});\r\n\r\nexport const setAssignQuotePopupEmployee = (assignQuotePopupEmployee) => ({\r\n type: types.SET_ASSIGN_QUOTE_POPUP_EMPLOYEE,\r\n payload: {assignQuotePopupEmployee}\r\n});\r\n\r\nexport const setAssignQuotePopupCustomer = (assignQuotePopupCustomer) => ({\r\n type: types.SET_ASSIGN_QUOTE_POPUP_CUSTOMER,\r\n payload: {assignQuotePopupCustomer}\r\n});\r\n\r\nexport const setAssignQuotePopupSuccessText = (assignQuotePopupSuccessText) => ({\r\n type: types.SET_ASSIGN_QUOTE_POPUP_SUCCESS_TEXT,\r\n payload: {assignQuotePopupSuccessText}\r\n});\r\n\r\nexport const setAssignQuoteCloneMode = (assignQuoteCloneMode) => ({\r\n type: types.SET_ASSIGN_QUOTE_CLONE_MODE,\r\n payload: {assignQuoteCloneMode}\r\n});\r\n\r\nexport const setAssignQuoteOfflineData = (offlineData) => ({\r\n type: types.SET_ASSIGN_QUOTE_OFFLINE_DATA,\r\n payload: offlineData\r\n});\r\n","import {hashHistory} from \"react-router\";\r\nimport {changeQTRoutePath} from \"../../misc/changeRoutePath\";\r\nimport {getCurrentLayout} from \"../appLayout\";\r\nimport store from \"./../../store\";\r\nimport {\r\n changeActivePartRelatedItemIndex, setCameFromPage,\r\n setQtActiveCategory,\r\n toggleBathroomVisualizerOpen,\r\n toggleSelectionWindow\r\n} from \"../../actions/actionFunctions\";\r\nimport Config from \"../../config\";\r\nimport {switchToWizardItem} from \"../qkbPages/materialsWizard/useChangeWizardStepRoute\";\r\n\r\nexport default (cameFromPage, firstCat = false, subPart = null, qtCategoryName = \"\", wizardAllObject = null, stepIndex = 0) => {\r\n const layout = getCurrentLayout();\r\n const state = store.getState();\r\n const {selectionGroup, activePartRelatedItemIndex} = state.selectionState;\r\n const layoutParts = state.stepsState.layoutParts;\r\n const qtActiveCategory = qtCategoryName || (subPart && subPart.part ? subPart.part.qtCategoryName : state.qtState.qtActiveCategory);\r\n\r\n store.dispatch(toggleSelectionWindow(true, selectionGroup || layoutParts[0]));\r\n store.dispatch(toggleBathroomVisualizerOpen(false));\r\n store.dispatch(setCameFromPage(cameFromPage));\r\n\r\n const {wizardList, wizardIsActive} = state.wizardState;\r\n if (wizardAllObject) {\r\n const {wizardItemId, quoteIndex} = wizardAllObject;\r\n const wizardItem = wizardList.find(wizItem => wizItem.id === wizardItemId); // if not found - set default\r\n switchToWizardItem(wizardItem, stepIndex, quoteIndex);\r\n return\r\n } else if (wizardIsActive) {\r\n switchToWizardItem();\r\n return\r\n }\r\n\r\n if (layout.qtCategories) { // set default if index is not matching\r\n let currentActiveCategory = layout.qtCategories.find(qtCat => qtCat.name === qtActiveCategory);\r\n if (subPart) {\r\n if (!currentActiveCategory) { // edge profile cases\r\n currentActiveCategory = layout.qtCategories.find(qtCat => qtCat.subParts.some(sPart => sPart.part.partId === subPart.part.partId));\r\n }\r\n if (!currentActiveCategory) { // edge profile cases\r\n if (Config.isDevMode()) {\r\n console.log(\"NO CATEGORY for feature\", );\r\n }\r\n if (layout.qtCategories.length) {\r\n store.dispatch(setQtActiveCategory(layout.qtCategories[0].name));\r\n store.dispatch(changeActivePartRelatedItemIndex(0));\r\n changeQTRoutePath(layout.qtCategories[0].name, 0);\r\n } else {\r\n if (!window.location.href.includes('materials')) {\r\n hashHistory.push('materials');\r\n }\r\n }\r\n return;\r\n }\r\n const relatedItemIndex = currentActiveCategory.subParts.findIndex(subPartItem => {\r\n return subPartItem.part.partId === subPart.part.partId\r\n });\r\n store.dispatch(setQtActiveCategory(currentActiveCategory.name));\r\n store.dispatch(changeActivePartRelatedItemIndex(relatedItemIndex > -1 ? relatedItemIndex : 0));\r\n changeQTRoutePath(currentActiveCategory.name, relatedItemIndex);\r\n } else if (!currentActiveCategory || !currentActiveCategory.subParts[activePartRelatedItemIndex] || firstCat) {\r\n const qtCategory = layout.qtCategories[0];\r\n store.dispatch(setQtActiveCategory(qtCategory.name));\r\n store.dispatch(changeActivePartRelatedItemIndex(0));\r\n changeQTRoutePath(qtCategory.name, 0);\r\n }\r\n }\r\n\r\n if (!window.location.href.includes('materials')) {\r\n hashHistory.push('materials');\r\n }\r\n\r\n};\r\n","import {Part} from \"../part\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {vanityThumbnail} from \"../../../bvComponent/core/assets\";\r\n\r\nimport CompleteVanity from \"../subparts/vanity/completeVanity\";\r\nimport VanityHandle from \"../subparts/vanity/vanityHandle\";\r\nimport VanityCabinet from \"../subparts/vanity/vanityCabinet\";\r\nimport VanityCountertop from \"../subparts/vanity/vanityCountertop\";\r\nimport VanityBacksplash from \"../subparts/vanity/vanityBacksplash\";\r\nimport Mirror from \"../subparts/vanity/mirror\";\r\nimport Sink from \"../subparts/vanity/sink\";\r\nimport VanityFaucet from \"../subparts/vanity/faucet\";\r\n\r\nexport class Vanity extends Part {\r\n static id = 'Vanity';\r\n\r\n static Types = {\r\n Complete: 'Complete',\r\n Custom: 'Custom'\r\n };\r\n\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'Vanity';\r\n this.translateId = \"visualizer.bathroom.vanity\";\r\n this.partThumbnail = vanityThumbnail;\r\n this.activeSubType_ = Vanity.Types.Custom;\r\n this.relatedItems = [];\r\n this.placeholdersNeeded = false; // only Vanity property\r\n\r\n // vanity parts\r\n this.vanityCabinet = null;\r\n this.completeVanity = null;\r\n this.countertop = null;\r\n this.sink = null;\r\n this.faucet = null;\r\n this.vanityBacksplash = null;\r\n this.vanityHandle = null;\r\n this.mirror = null;\r\n }\r\n\r\n load(dbFeature) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Sink\":\r\n relatedItemName = \"sink\";\r\n RelatedItemClass = Sink;\r\n break;\r\n case \"Mirror\":\r\n relatedItemName = \"mirror\";\r\n RelatedItemClass = Mirror;\r\n break;\r\n case \"Countertop\":\r\n relatedItemName = \"countertop\";\r\n RelatedItemClass = VanityCountertop;\r\n break;\r\n case \"Faucet\":\r\n relatedItemName = \"faucet\";\r\n RelatedItemClass = VanityFaucet;\r\n break;\r\n case \"VanityBacksplash\":\r\n case \"BackSplash\":\r\n case \"Backsplash\":\r\n relatedItemName = \"vanityBacksplash\";\r\n RelatedItemClass = VanityBacksplash;\r\n break;\r\n case \"Vanity Handle\":\r\n relatedItemName = \"vanityHandle\";\r\n RelatedItemClass = VanityHandle;\r\n break;\r\n case \"Vanity\": {\r\n const completeVanity = dbFeature.metaData && dbFeature.metaData[\"Vanity\"]\r\n && dbFeature.metaData[\"Vanity\"].includes(\"Complete\");\r\n\r\n relatedItemName = completeVanity ? \"completeVanity\" : \"vanityCabinet\";\r\n RelatedItemClass = completeVanity ? CompleteVanity : VanityCabinet;\r\n break;\r\n }\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n if (relatedItemName === \"sink\") {\r\n const faucetIndex = this.relatedItems.findIndex(relItem => relItem.partName === 'Faucet');\r\n faucetIndex ? this.relatedItems.splice(faucetIndex, 0, this.sink) : this.relatedItems.push(this.sink);\r\n } else if (relatedItemName === \"completeVanity\") {\r\n this.relatedItems.unshift(this.completeVanity); // cabinet needs to be first in the list.\r\n } else if (relatedItemName === \"vanityCabinet\") {\r\n this.relatedItems.unshift(this.vanityCabinet); // cabinet needs to be first in the list.\r\n } else {\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].load(dbFeature);\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n getRelatedItems() {\r\n return this.relatedItems.filter(item => item.visible.includes(this.activeSubType_));\r\n }\r\n\r\n subTypes() {\r\n return this.vanityCabinet && this.completeVanity ? [Vanity.Types.Custom, Vanity.Types.Complete] : [];\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return this.activeSubType_ === Vanity.Types.Complete;\r\n }\r\n\r\n activeSubType() {\r\n return this.activeSubType_;\r\n }\r\n\r\n subParts() {\r\n const relatedItems = this.getRelatedItems();\r\n const excluded = [];\r\n const vanityPart = relatedItems.find(navItem => navItem.partId === \"vanity_cabinet\");\r\n if (vanityPart && vanityPart.activeFeature\r\n && vanityPart.activeFeature.metaData[\"VanityHandle\"]\r\n && vanityPart.activeFeature.metaData[\"VanityHandle\"].includes(\"None\")) {\r\n excluded.push(\"vanity_handle\")\r\n }\r\n return relatedItems\r\n .filter(item => !excluded.includes(item.partId))\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n // subPartsWithAccentWall() {\r\n // const vanityAccent = this.layout.parts.Walls.vanityAccent;\r\n // return [new DesignNavigationItem(vanityAccent.partName, vanityAccent),\r\n // ...this.getRelatedItems().map(_ => new DesignNavigationItem(_.partName, _))];\r\n // }\r\n\r\n handleSubTypeClick(subType) {\r\n this.activeSubType_ = subType;\r\n this.getRelatedItems().forEach((relatedItem) => {\r\n if (!relatedItem.activeFeature) {\r\n relatedItem.setDefault()\r\n }\r\n });\r\n }\r\n\r\n setDefaultPartAfterSubTypeClick() {\r\n return this.subParts()[0]\r\n }\r\n\r\n setDefault(layout) {\r\n this.getRelatedItems().forEach(_ => _.setDefault(layout));\r\n }\r\n\r\n counterTopSize() {\r\n return this.getCounterTopSize() || \"24\"; // temporary hardcode until we would have meta data finished\r\n }\r\n\r\n getCounterTopSize() {\r\n if (this.vanityCabinet && !this.vanityCabinet.activeFeature) {\r\n this.vanityCabinet.setDefault()\r\n }\r\n return (this.vanityCabinet && this.vanityCabinet.activeFeature)\r\n ? this.vanityCabinet.activeFeature.dbFeature.metaData[\"VanitySize\"]\r\n : null;\r\n }\r\n\r\n toggleVanityParts(disabled) {\r\n this.getRelatedItems().forEach(relItem => {\r\n if (relItem.partId === \"vanity_sink\" || relItem.partId === \"vanity_faucet\"\r\n || relItem.partId === \"vanity_countertop\" || relItem.partId === \"vanity_cabinet\"\r\n || relItem.partId === \"vanity_handle\" || relItem.partId === \"vanity_backsplash\") {\r\n relItem.disabled = disabled;\r\n }\r\n });\r\n }\r\n}\r\n\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl, FormattedHTMLMessage} from \"react-intl\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\n\r\nimport LookListContentHeaderRightSide from \"../../list/lookListContentHeaderRightSide\";\r\nimport {setLookOpened, setLookPageOpened} from \"../../../../actions/lookFunctions\";\r\nimport {ROUTES} from \"../../../../routes\";\r\nimport GroheCartStepper from \"./groheCartStepper\";\r\n\r\nconst GroheCartHeaderCommon = (props) => {\r\n\r\n const {title, subTitle, afterTitle, withSave, intl, history, location, isMobile, setLookPageOpened, setLookOpened,\r\n className, subTitleValues} = props;\r\n\r\n const closeCartClick = () => {\r\n setLookPageOpened(\"\");\r\n setLookOpened(null);\r\n history.push(ROUTES.home);\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {isMobile ? (\r\n
\r\n \r\n \r\n \r\n
\r\n ) : null}\r\n
\r\n
\r\n

\r\n {afterTitle}\r\n

\r\n {subTitle ? (\r\n

\r\n \r\n

\r\n ) : null}\r\n
\r\n {location && (location.pathname !== ROUTES.cartSuccess) ? (\r\n
\r\n \r\n {withSave ? null : }\r\n
\r\n ) : null}\r\n
\r\n )\r\n};\r\n\r\nGroheCartHeaderCommon.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n subTitle: PropTypes.string,\r\n className: PropTypes.string,\r\n afterTitle: PropTypes.any,\r\n withSave: PropTypes.bool,\r\n subTitleValues: PropTypes.object,\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {isMobile} = store.serverState;\r\n return {\r\n isMobile,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookPageOpened,\r\n setLookOpened,\r\n};\r\n\r\nexport default injectIntl(\r\n withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(GroheCartHeaderCommon)\r\n )\r\n)\r\n","import * as types from \"./actionTypes\";\r\n\r\n//********** CONTRACT SIGNING *************/\r\nexport const showContractSigning = (show, callback = null) => ({\r\n type: types.SHOW_CONTRACT_SIGNING,\r\n payload: {show, callback}\r\n});\r\n\r\nexport const setAfterContractSignCallback = (afterContractSignCallback) => ({\r\n type: types.SET_AFTER_CONTRACT_SIGN_CALLBACK,\r\n payload: {afterContractSignCallback}\r\n});\r\n\r\nexport const contractSignPostSignature = (contractSignData) => ({\r\n type: types.CONTRACT_SIGNING_POST_SIGNATURE,\r\n payload: contractSignData\r\n});\r\n\r\nexport const showSignaturePad = (show, tag) => ({\r\n type: types.CONTRACT_SIGNING_SHOW_SIGNATURE_PAD,\r\n payload: {show, tag}\r\n});\r\n\r\nexport const setContractsValues = ({contractId, pageIndex, fieldIndex, name, value}) => {\r\n return (dispatch, getState) => {\r\n let {contractsValues} = getState().contractSigningState;\r\n if (!contractId) {\r\n return\r\n }\r\n if (!contractsValues[contractId]) {\r\n contractsValues[contractId] = {}\r\n }\r\n if (!contractsValues[contractId][pageIndex]) {\r\n contractsValues[contractId][pageIndex] = {}\r\n }\r\n contractsValues[contractId][pageIndex][fieldIndex] = {name, value};\r\n dispatch({\r\n type: types.CONTRACT_SIGNING_SET_CONTRACTS_VALUES,\r\n payload: {\r\n contractsValues: {...contractsValues}\r\n }\r\n })\r\n }\r\n};\r\n\r\nexport const setContractSigningStep = step => ({\r\n type: types.CONTRACT_SIGNING_SET_STEP,\r\n payload: {step}\r\n});\r\n\r\nexport const setContractDocumentForJob = (documentData) => ({\r\n type: types.CONTRACT_SIGNING_JOB_DOCUMENT,\r\n payload: {...documentData}\r\n});\r\n\r\nexport const setContractBlob = (contractBlob) => ({\r\n type: types.SET_CONTRACT_BLOB,\r\n payload: {contractBlob}\r\n});\r\n\r\nexport const restoreContractValues = (pagesCustomFieldsValue, savedInvoiceNumberOfPages, needToUpdateContract, contractsValues = {}) => ({\r\n type: types.CONTRACT_SIGNING_RESTORE_VALUES,\r\n payload: {pagesCustomFieldsValue, savedInvoiceNumberOfPages, needToUpdateContract, contractsValues}\r\n});\r\n\r\nexport const setContractsList = (contractsList) => ({\r\n type: types.CONTRACT_SIGNING_SET_CONTRACTS_LIST,\r\n payload: {contractsList}\r\n});\r\n","/**\r\n * @param key {string} key\r\n * @param value {any}\r\n */\r\nexport const setLocalStorageItem = (key, value) => {\r\n try {\r\n window.localStorage.setItem(key, value);\r\n } catch (ex) { console.log(\"localStorage exception\", ex); }\r\n}\r\n\r\n/**\r\n * @param key {string} key\r\n */\r\nexport const getLocalStorageItem = (key) => {\r\n let item = null;\r\n try {\r\n const value = window.localStorage.getItem(key);\r\n if (value) {\r\n item = JSON.parse(value);\r\n }\r\n } catch (ex) { console.log(\"localStorage exception\", ex); }\r\n return item\r\n}\r\n\r\n/**\r\n * @param key {string} key\r\n * @param value {any}\r\n */\r\nexport const setSessionStorageItem = (key, value) => {\r\n try {\r\n window.sessionStorage.setItem(key, value);\r\n } catch (ex) { console.log(\"sessionStorage exception\", ex); }\r\n}\r\n/**\r\n * @param key {string} key\r\n */\r\nexport const removeSessionStorageItem = (key) => {\r\n try {\r\n window.sessionStorage.removeItem(key);\r\n } catch (ex) { console.log(\"sessionStorage removeItem exception\", ex); }\r\n}\r\n\r\n/**\r\n * @param key {string} key\r\n * @param withParse {boolean}\r\n */\r\nexport const getSessionStorageItem = (key, withParse = true) => {\r\n let item = null;\r\n try {\r\n const value = window.sessionStorage.getItem(key);\r\n item = (value && withParse) ? JSON.parse(value) : value;\r\n } catch (ex) { console.log(\"sessionStorage exception\", ex); }\r\n return item\r\n}\r\n","import * as types from \"./actionTypes\";\r\n\r\nexport const togglePriceWorksheetOpened = (priceWorksheetOpened) => ({\r\n type: types.TOGGLE_PRICE_WORKSHEET_OPENED,\r\n payload: {\r\n priceWorksheetOpened\r\n }\r\n});\r\n\r\n// export const setDiscountSections = (discountSections) => {\r\n// return (dispatch, getState) => {\r\n// const {financeCellsVisible} = getState().priceWorksheetState;\r\n// // if (currentSection) {\r\n// // const discounts = sortByOrder(currentSection.discounts).filter((disc) => !disc.nestedParent);\r\n// // }\r\n// const payload = {\r\n// discountSections,\r\n// }\r\n// if (financeCellsVisible.length !== Object.keys(DISCOUNT_FINANCE_CELLS).length) {\r\n// const sectionWithFinance = discountSections.find(sec => {\r\n// return sec.type !== DISCOUNT_SECTION_TYPES.finance && sec.discounts.some(discount => {\r\n// return discount.discountType === DISCOUNT_SECTION_TYPES.finance\r\n// })\r\n// });\r\n// if (sectionWithFinance) {\r\n// sectionWithFinance.discounts\r\n// }\r\n// }\r\n// dispatch({\r\n// type: types.SET_DISCOUNT_SECTIONS,\r\n// payload\r\n// })\r\n// }\r\n// };\r\nexport const setDiscountSections = (discountSections) => ({\r\n type: types.SET_DISCOUNT_SECTIONS,\r\n payload: {\r\n discountSections,\r\n }\r\n});\r\n\r\nexport const setCustomAddedDiscounts = (customAddedDiscounts) => ({\r\n type: types.SET_CUSTOM_ADDED_DISCOUNTS,\r\n payload: {customAddedDiscounts}\r\n})\r\n\r\nexport const setFinancePercentage = (financePercentage) => ({\r\n type: types.SET_FINANCE_PERCENTAGE,\r\n payload: {financePercentage}\r\n});\r\n\r\nexport const setAllFinanceOptionsPopupVisible = (allFinanceOptionsPopupVisible) => ({\r\n type: types.SET_ALL_FINANCE_OPTIONS_POPUP_VISIBLE,\r\n payload: {allFinanceOptionsPopupVisible}\r\n});\r\n\r\nexport const setFinanceCellsVisible = (financeCellsVisible) => ({\r\n type: types.SET_DISCOUNT_FINANCE_CELLS_VISIBLE,\r\n payload: {financeCellsVisible}\r\n});\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport store from \"../../store\";\r\nimport {showSuccessNotification} from \"../../actions/actionFunctions\";\r\n\r\nclass SuccessNotification extends React.Component {\r\n\r\n state = {\r\n opened: false,\r\n isHiding: false\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.successNotification.show && !this.props.successNotification.show) {\r\n setTimeout(() => { // let it render first\r\n this.setState({\r\n opened: true\r\n })\r\n }, 0)\r\n } else if (!nextProps.successNotification.show && this.props.successNotification.show) {\r\n this.setState({\r\n isHiding: true,\r\n opened: false\r\n }, () => {\r\n setTimeout(() => {\r\n this.setState({\r\n isHiding: false\r\n })\r\n }, 500)\r\n })\r\n }\r\n }\r\n\r\n render() {\r\n const {show, icon, title, message} = this.props.successNotification;\r\n\r\n return show || this.state.isHiding ? (\r\n
\r\n
\r\n
\r\n
\r\n

\r\n

\r\n \r\n

\r\n
\r\n
\r\n
\r\n ) : null;\r\n }\r\n\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n successNotification: store.serverState.successNotification,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {})(SuccessNotification);\r\n\r\nexport const showQuoteSavedNotification = (title = \"successNotification.titleQuoteSaved\") => {\r\n if (document.kvConfig.visualizerOnly && (title === \"successNotification.titleQuoteSaved\")) {\r\n title = \"successNotification.titleDesignSaved\";\r\n }\r\n if (store.getState().serverState.successNotification) {\r\n window.clearTimeout(window.saveQuoteTimeoutId);\r\n store.dispatch(showSuccessNotification({\r\n show: false\r\n }));\r\n }\r\n store.dispatch(showSuccessNotification({\r\n show: true,\r\n icon: \"calculate\",\r\n title,\r\n message: \"successNotification.messageQuoteSaved\"\r\n }));\r\n window.saveQuoteTimeoutId = setTimeout(() => {\r\n store.dispatch(showSuccessNotification({\r\n show: false\r\n }));\r\n }, 3000)\r\n}\r\n","import $ from \"jquery\";\r\n\r\nimport store from \"../store\";\r\nimport {getCurrentLayout} from \"../bvcomponents/appLayout\";\r\nimport {\r\n addToCart, removeFromCart,\r\n setCanvasDimensions,\r\n setDefaultSelectionGroup,\r\n setLayoutDataParts,\r\n updateFabricatorSettings\r\n} from \"../actions/actionFunctions\";\r\nimport ActionTypes from \"./actionTypes\";\r\nimport {AVAILABLE_VISUALIZER_TYPES, getCommonVisualizerType, IS_BATHROOM_OLD_BV_SCENE} from \"../config\";\r\nimport {setVisualizerIsChanging} from \"../actions/serverFunctions\";\r\nimport {\r\n getCurrentQuoteRoomCartItem,\r\n getRoomCartItemForCategoryName,\r\n getRoomNameToCompare\r\n} from \"./categorySwitchingFunctions\";\r\nimport {updateCurrentQuote} from \"./quotesFunctions\";\r\nimport loadVisualizer from \"./loadVisualizer\";\r\nimport {loaderDisable, loaderEnable} from \"../bvcomponents/ui/loaderView\";\r\nimport {\r\n getCorrectedWizardGroupForFeature,\r\n getCurrentGroups,\r\n getDefaultMaterialsWizardItem, getFeatureGroupFromWizardGroup,\r\n showWizardInsteadOfQT\r\n} from \"../bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\nimport {setWizardActiveItem, setWizardIsActive, setWizardSelectedValues} from \"../actions/wizardFunctions\";\r\nimport {setActiveQuoteIndex, setQuotes} from \"../actions/roomsFunctions\";\r\nimport {getCartItemObject} from \"./helpers\";\r\n\r\nexport const fixVisualizerType = () => {\r\n if (document.kvConfig.toolVersion > 4 || IS_BATHROOM_OLD_BV_SCENE || (document.kvConfig.visualizerType === \"Fireplace\")) {\r\n document.kvConfig.layersSize = \"full_hd\";\r\n switch (document.kvConfig.visualizerType) {\r\n case \"Bathroom\":\r\n document.kvConfig.visualizerType = document.kvConfig.toolVersion === 6 ? \"bvLook\" : \"bvScene\";\r\n break;\r\n case \"Kitchen\":\r\n document.kvConfig.visualizerType = \"kvScene\";\r\n break;\r\n default:\r\n break;\r\n }\r\n } else {\r\n document.kvConfig.layersSize = \"normal\";\r\n }\r\n}\r\n\r\nexport const hasSubscriptionForRoom = (room) => {\r\n const {fabricatorState} = store.getState();\r\n const neededSubscriptionName = getCommonVisualizerType(room);\r\n return fabricatorState.fabricatorSubscriptions\r\n && fabricatorState.fabricatorSubscriptions.find(subscription => subscription && subscription.service.toLowerCase() === neededSubscriptionName);\r\n}\r\n\r\n/**\r\n * @param newVisualizerType {string}\r\n * @param subscription {object} // subscriptionInterface\r\n * @returns number {number}\r\n */\r\nexport const getToolVersionByVisualizerType = (newVisualizerType, subscription = null) => {\r\n if (newVisualizerType === AVAILABLE_VISUALIZER_TYPES.Fireplace) {\r\n return 5\r\n }\r\n if (subscription && Number.isInteger(subscription.toolVersion)) {\r\n return subscription.toolVersion\r\n }\r\n switch (newVisualizerType) {\r\n case AVAILABLE_VISUALIZER_TYPES.Bathroom:\r\n case AVAILABLE_VISUALIZER_TYPES.Kitchen: {\r\n return 4\r\n }\r\n case AVAILABLE_VISUALIZER_TYPES.bvScene:\r\n case AVAILABLE_VISUALIZER_TYPES.kvScene: {\r\n return 5\r\n }\r\n case AVAILABLE_VISUALIZER_TYPES.bvLook: {\r\n return 6\r\n }\r\n default:\r\n return 4\r\n }\r\n}\r\n\r\n\r\n/**\r\n * @param room {string} roomName\r\n * @param disableLoader {boolean} whether to remove loader or wait on anything else\r\n */\r\nexport const switchToNewVisualizerType = async (room, disableLoader = true) => {\r\n const {fabricatorState, serverState, quotesState, wizardState} = store.getState();\r\n if (!fabricatorState.settings.allowVisualizerSwitching) {\r\n return false\r\n }\r\n const {visualizersLoaded} = serverState;\r\n\r\n const existingSubscription = hasSubscriptionForRoom(room);\r\n if (!existingSubscription) {\r\n return false\r\n }\r\n let oldLayout = getCurrentLayout();\r\n oldLayout.initialized = false; // stop updating old canvas!\r\n loaderEnable();\r\n\r\n const newVisualizerType = getVisualizerTypeFromSubscription(existingSubscription);\r\n\r\n store.dispatch(setVisualizerIsChanging(true));\r\n\r\n await updateCurrentQuote(quotesState.activeQuoteIndex, newVisualizerType, false); // create quote with correct room before switching\r\n\r\n console.log(\"newVisualizerType\", newVisualizerType);\r\n\r\n if (!visualizersLoaded.includes(newVisualizerType)) {\r\n const loaded = await loadVisualizer(newVisualizerType, true);\r\n if (!loaded) {\r\n return false\r\n }\r\n }\r\n if (wizardState.wizardIsActiveObject.hasOwnProperty(newVisualizerType)\r\n && (wizardState.wizardIsActiveObject[newVisualizerType] !== wizardState.wizardIsActive)) {\r\n store.dispatch(setWizardIsActive(wizardState.wizardIsActiveObject[newVisualizerType]));\r\n }\r\n\r\n document.kvConfig.visualizerType = newVisualizerType;\r\n document.kvConfig.toolVersion = getToolVersionByVisualizerType(newVisualizerType, existingSubscription);\r\n fixVisualizerType(); // set new bathroom or kitchen\r\n store.dispatch(setCanvasDimensions()); // update canvas height and width (version 4 <> 5 switch)\r\n\r\n const layout = getCurrentLayout();\r\n if (!layout.initialized) {\r\n layout.initialized = true; // start updating the canvas in if was stopped earlier\r\n }\r\n const layoutParts = layout.getFeatures()\r\n .filter(parentGroup => parentGroup.categoryEnabled)\r\n .map((parentGroup) => parentGroup.partName);\r\n\r\n const roomFeatureGroup = layout.getFeatureGroupByPartId(\"room\");\r\n if (roomFeatureGroup) {\r\n const newActiveFeature = roomFeatureGroup.features.find(feature => getRoomNameToCompare(feature).toLowerCase() === existingSubscription.service);\r\n if (newActiveFeature) {\r\n roomFeatureGroup.activeFeature = newActiveFeature; // set it because it will be set in the materials page after switch\r\n\r\n const {quotesState, wizardState, advancedQuotingState, cartState} = store.getState();\r\n const {wizardList, wizardIsActive, allWizardsValues, wizardActiveItem} = wizardState;\r\n const {showAdvancedQuoting} = advancedQuotingState;\r\n const {cartItems} = cartState;\r\n\r\n if (showWizardInsteadOfQT(wizardList, wizardIsActive)) {\r\n const nextWizard = getDefaultMaterialsWizardItem();\r\n if (nextWizard) {\r\n if (!wizardActiveItem || (wizardActiveItem.id !== nextWizard.id)) {\r\n store.dispatch(setWizardActiveItem(nextWizard, quotesState.activeQuoteIndex));\r\n }\r\n const lastSelectedWizardInThisQuote = allWizardsValues.find(wizObject => {\r\n return wizObject.quoteIndex === quotesState.activeQuoteIndex && wizObject.isLastActiveWizard\r\n && nextWizard.id === wizObject.wizardItemId\r\n });\r\n if (!lastSelectedWizardInThisQuote || (Object.keys(lastSelectedWizardInThisQuote.wizardSelectedValues).length <= 1)) {\r\n const wizardActiveStep = 0;\r\n const currentGroups = getCurrentGroups(nextWizard, wizardActiveStep, {});\r\n if (currentGroups[0]) {\r\n const featureGroup = getFeatureGroupFromWizardGroup(currentGroups[0]);\r\n if (featureGroup && (featureGroup.partId === \"room\")) {\r\n store.dispatch(setWizardSelectedValues({\r\n [wizardActiveStep]: {\r\n wizardGroup: getCorrectedWizardGroupForFeature(currentGroups[0], newActiveFeature),\r\n selectedFeature: newActiveFeature,\r\n partId: \"room\",\r\n }\r\n }, quotesState.activeQuoteIndex, nextWizard.id));\r\n if (showAdvancedQuoting) {\r\n const selectedQuoteRoomCartItem = getCurrentQuoteRoomCartItem(cartItems, quotesState.activeQuoteIndex);\r\n if (selectedQuoteRoomCartItem) {\r\n store.dispatch(removeFromCart(selectedQuoteRoomCartItem));\r\n }\r\n const roomCartItem = getCartItemObject(newActiveFeature, 1, \"\");\r\n roomCartItem.currentQuote = quotesState.activeQuoteIndex;\r\n roomCartItem.fromWizardId = nextWizard.id;\r\n roomCartItem.fromWizardStep = wizardActiveStep;\r\n roomCartItem.fromWizardGroupId = currentGroups[0].id;\r\n store.dispatch(addToCart([roomCartItem]));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n store.dispatch(setLayoutDataParts(layoutParts));\r\n store.dispatch(setDefaultSelectionGroup(layoutParts[0]));\r\n store.dispatch(updateFabricatorSettings());\r\n\r\n $(window).trigger(ActionTypes.UPDATE_ALL_ITEMS);\r\n\r\n console.log(\"finish visualizer change\", document.kvConfig.visualizerType);\r\n\r\n setTimeout(() => {\r\n store.dispatch(setVisualizerIsChanging(false));\r\n }, 300) // prevent materials page canvas jumping\r\n\r\n if (disableLoader) {\r\n loaderDisable();\r\n } // else we wait in server reducer, when it is added to loaded\r\n return true\r\n}\r\n\r\nexport const getVisualizerTypeFromSubscription = (subscription) => {\r\n const toolVersionToCheck = subscription.toolVersion || 4;\r\n switch (subscription.service) {\r\n case \"Bathroom\":\r\n case \"bathroom\":\r\n return toolVersionToCheck === 6\r\n ? \"bvLook\"\r\n : toolVersionToCheck === 5 ? \"bvScene\" : \"Bathroom\"\r\n case \"Kitchen\":\r\n case \"kitchen\":\r\n return toolVersionToCheck === 5 ? \"kvScene\" : \"Kitchen\"\r\n case \"Fireplace\":\r\n case \"fireplace\":\r\n return \"Fireplace\"\r\n default:\r\n return subscription.service\r\n }\r\n}\r\n\r\n/**\r\n * @param quoteIndex {number}\r\n * @param nextVisualizerType {string}\r\n * @returns {string}\r\n */\r\nexport const getQuoteVisualizerType = (quoteIndex, nextVisualizerType) => {\r\n const {quotesState, cartState, fabricatorState, serverState} = store.getState();\r\n const {cartItems} = cartState;\r\n const {quotes, activeQuoteIndex} = quotesState;\r\n\r\n if (fabricatorState.settings.allowVisualizerSwitching) {\r\n const roomCartItem = getCurrentQuoteRoomCartItem(cartItems, quoteIndex);\r\n if (roomCartItem) {\r\n const existingSubscription = hasSubscriptionForRoom(getRoomNameToCompare(roomCartItem.cartFeature));\r\n if (existingSubscription) {\r\n return getVisualizerTypeFromSubscription(existingSubscription);\r\n }\r\n }\r\n const quoteCartItems = cartItems.filter(cartItem => {\r\n return (cartItem.currentQuote === quoteIndex) && !(cartItem.cartFeature && cartItem.cartFeature.dbFeature.autoAddToCart)\r\n && !(cartItem.cartFeature\r\n && cartItem.cartFeature.dbFeature.displayLogic\r\n && Array.isArray(cartItem.cartFeature.dbFeature.displayRules)\r\n && cartItem.cartFeature.dbFeature.displayRules.some(rule => rule))\r\n });\r\n if (quoteCartItems.length && quoteCartItems[0].fromVisualizerType\r\n && quoteCartItems.every(cartItem => cartItem.fromVisualizerType === quoteCartItems[0].fromVisualizerType)) {\r\n return quoteCartItems[0].fromVisualizerType\r\n }\r\n if (nextVisualizerType) { // if we don't have any cart items or room cart item and we are switching visualizer -> set it's type\r\n return nextVisualizerType\r\n }\r\n if (quoteIndex === activeQuoteIndex && !serverState.visualizerIsChanging) {\r\n return document.kvConfig.visualizerType\r\n }\r\n }\r\n if (quotes && quotes[quoteIndex] && quotes[quoteIndex].room) {\r\n return quotes[quoteIndex].room\r\n }\r\n return document.kvConfig.visualizerType\r\n}\r\n\r\n\r\n/**\r\n * @param featureClicked {featureInterface}\r\n * @param roomName {string}\r\n * @param fabricatorSettings {object}\r\n * @param visualizerIsChanging {boolean}\r\n * @returns {string|boolean}\r\n */\r\nexport const shouldSwitchVisualizer = (featureClicked, roomName, fabricatorSettings, visualizerIsChanging) => {\r\n if (!fabricatorSettings.allowVisualizerSwitching || visualizerIsChanging) {\r\n return false\r\n }\r\n\r\n let room = roomName || getRoomNameToCompare(featureClicked);\r\n\r\n // 2) if user clicked on unavailable visualizer -> go and set initial visualizer!\r\n const hasSubscription = hasSubscriptionForRoom(room);\r\n\r\n // 3) set main config visualizer type\r\n const newVisualizerType = hasSubscription ? getVisualizerTypeFromSubscription(hasSubscription) : null;\r\n if (newVisualizerType && (document.kvConfig.visualizerType !== newVisualizerType)) {\r\n return newVisualizerType\r\n }\r\n return false\r\n}\r\n\r\n\r\n/**\r\n * not used for now! but let it be\r\n * @param newRoomName {string}\r\n * @param needToAddRoomToCart {boolean}\r\n * @returns {Promise}\r\n */\r\nexport const createNewQuoteAfterVisualizerChange = async (newRoomName = \"\", needToAddRoomToCart = true) => {\r\n const {fabricatorState, quotesState} = store.getState();\r\n const {quotes, activeQuoteIndex} = quotesState;\r\n\r\n const currentQuote = await updateCurrentQuote(activeQuoteIndex);\r\n const newQuotes = [...currentQuote, {}];\r\n const newActiveQuoteIndex = quotes.length; // for example, if length is 2 (we are adding 2 index(0 and 1 already exist))\r\n store.dispatch(setQuotes(newQuotes));\r\n store.dispatch(setActiveQuoteIndex(newActiveQuoteIndex));\r\n if (needToAddRoomToCart) {\r\n const roomCartItem = getRoomCartItemForCategoryName(newRoomName, fabricatorState.settings);\r\n if (roomCartItem) {\r\n const newRoomCartItem = Object.assign({}, roomCartItem, {\r\n currentQuote: newActiveQuoteIndex\r\n })\r\n store.dispatch(addToCart([newRoomCartItem]));\r\n }\r\n }\r\n return Promise.resolve(true)\r\n}\r\n","export default function ( nvert, vertx, verty, testx, testy ) {\r\n var i, j, c = false;\r\n for( i = 0, j = nvert-1; i < nvert; j = i++ ) {\r\n if( ( ( verty[i] > testy ) != ( verty[j] > testy ) ) &&\r\n ( testx < ( vertx[j] - vertx[i] ) * ( testy - verty[i] ) / ( verty[j] - verty[i] ) + vertx[i] ) ) {\r\n c = !c;\r\n }\r\n }\r\n return c;\r\n}\r\nexport function pnpolyArray(points, test) { // receives pointsArray & mousePos, ex. [[50,100],[70, 100],[70, 200],[50,200]], {x:60, y: 80}\r\n let i, j, c = false;\r\n for (i = 0, j = points.length - 1; i < points.length; j = i++) {\r\n if (((points[i][1] > test.y) !== (points[j][1] > test.y)) &&\r\n (test.x < (points[j][0] - points[i][0]) * (test.y - points[i][1])\r\n / (points[j][1] - points[i][1]) + points[i][0])) {\r\n c = !c;\r\n }\r\n }\r\n return c;\r\n}\r\n\r\n/**\r\n* array of coordinates of each vertex of the polygon\r\n* var polygon = [ [ 1, 1 ], [ 1, 2 ], [ 2, 2 ], [ 2, 1 ] ];\r\n* isPointInsidePolygon([ 1.5, 1.5 ], polygon); // true\r\n*/\r\nexport function isPointInsidePolygon(point, polygon) {\r\n // ray-casting algorithm based on\r\n // https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html/pnpoly.html\r\n\r\n let x = point.x, y = point.y;\r\n let inside = false;\r\n\r\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\r\n let xi = polygon[i].x, yi = polygon[i].y;\r\n let xj = polygon[j].x, yj = polygon[j].y;\r\n let intersect = ((yi > y) !== (yj > y))\r\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\r\n\r\n if (intersect) inside = !inside;\r\n }\r\n\r\n return inside;\r\n}\r\n\r\n/**\r\n* array of coordinates of each vertex of the polygon\r\n* var polygon = [ [ 1, 1 ], [ 1, 2 ], [ 2, 2 ], [ 2, 1 ] ];\r\n* isPointInsidePolygon([ 1.5, 1.5 ], polygon); // true\r\n*/\r\nexport function isPointInsidePolygonArray(point, polygon) {\r\n var x = point[0], y = point[1];\r\n\r\n var inside = false;\r\n for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\r\n var xi = polygon[i][0], yi = polygon[i][1];\r\n var xj = polygon[j][0], yj = polygon[j][1];\r\n\r\n var intersect = ((yi > y) != (yj > y))\r\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\r\n if (intersect) inside = !inside;\r\n }\r\n\r\n return inside;\r\n}\r\n","import {IntermediatePart} from \"../../intermediatePart\";\r\nimport {ShowerHeadTypes} from \"../../constants\";\r\n\r\nexport default class ShowerCommon extends IntermediatePart {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.isShowerCommonGroup = true;\r\n }\r\n\r\n setArmHeadType() { // for feature\r\n const parent = this.getParent();\r\n const showerParent = parent.getParent();\r\n showerParent.setShowerHeadType(ShowerHeadTypes.shower_arm, parent.partId);\r\n if (showerParent.showerFixture && showerParent.showerFixture.activeFeature && showerParent.showerFixture.activeFeature.metaData[\"MountType\"]\r\n && !showerParent.showerFixture.activeFeature.metaData[\"MountType\"].includes(\"0\") && !showerParent.showerFixture.disabled) {\r\n // store.dispatch(setLookOverlayOpened(LOOK_OVERLAYS.notCompatiblePopup));\r\n // return;\r\n // this.applyFeatureIfNotCompatible();\r\n showerParent.showerFixture.disabled = true;\r\n }\r\n }\r\n\r\n getArrayOfConditions() {\r\n const showerParent = this.getParent();\r\n let conditions = super.getArrayOfConditions(); // roomLayout && roomScene\r\n const showerSize = showerParent.showerSize();\r\n if (showerSize) {\r\n conditions.push({\r\n propName: \"ShowerSize\",\r\n propValue: showerSize\r\n })\r\n }\r\n return conditions\r\n }\r\n\r\n isActiveFeatureGroup(featureGroupId = \"\") {\r\n const showerParent = this.getParent();\r\n const featureGroup = showerParent[featureGroupId];\r\n return !!(featureGroup && featureGroup.activeFeature && !featureGroup.disabled)\r\n }\r\n\r\n togglePosition(position, partId) {\r\n const showerArm = this.getParent().relatedItems.find(featureGroup => featureGroup.partId === partId);\r\n if (showerArm && showerArm.layerPositions) {\r\n if (this.layerPositions[position]) {\r\n // if (!showerArm.layerPositions[position]) {\r\n // showerArm.layerPositions[position] = showerArm.getMatchingPositionFeature(position);\r\n // if (showerArm.disabled) {\r\n // showerArm.disabled = false;\r\n // }\r\n // }\r\n // we need always set here in the next line, because we might have another conditions. so update needed\r\n showerArm.layerPositions[position] = showerArm.getMatchingPositionFeature(position);\r\n if (showerArm.disabled) {\r\n showerArm.disabled = false;\r\n }\r\n } else {\r\n showerArm.layerPositions[position] = null;\r\n }\r\n }\r\n }\r\n\r\n showLayerPositionsModal() {\r\n return true\r\n }\r\n\r\n}\r\n","import React, {Component} from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport store from \"../../store\";\r\nimport {toggleUserPopup} from \"../../actions/actionFunctions\";\r\nimport Analytics from './../../analytics';\r\nimport {UserPopupTypes} from \"../visComponents/constants\";\r\nimport {toggleShowAssignQuotePopup} from \"../../actions/assignPopupFunctions\";\r\n\r\nclass UserLoginButton extends Component {\r\n\r\n static propTypes = {\r\n className: PropTypes.string\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n userLogoutActive: false\r\n }\r\n }\r\n\r\n static handleLoginClick = ({\r\n toggleUserPopup, toggleMobileButton = null,\r\n saveQuoteAfterLogin = false, userPopupType = UserPopupTypes.Unlock,\r\n checkout = false\r\n }) => {\r\n const state = store.getState();\r\n const fabricatorSettings = state.fabricatorState.settings;\r\n // console.log(\"state.userState.userIsLoggedIn\", state.userState.userIsLoggedIn);\r\n // console.log(\"state.userState.isPhoneNumberValidated:\", state.userState.isPhoneNumberValidated);\r\n // console.log(\"fabricatorSettings.twoFA:\", fabricatorSettings.twoFA);\r\n if (state.userState.userIsLoggedIn) {\r\n if (fabricatorSettings.twoFA) {\r\n if (!state.userState.isPhoneNumberValidated) {\r\n toggleUserPopup({userPopupOpened: true, saveQuoteAfterLogin, userPopupType, checkout});\r\n return false;\r\n } else {\r\n if (toggleMobileButton) {\r\n toggleMobileButton();\r\n return false;\r\n }\r\n }\r\n } else {\r\n if (toggleMobileButton) {\r\n toggleMobileButton();\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n } else {\r\n if (document.kvConfig.isBackend) {\r\n store.dispatch(toggleShowAssignQuotePopup(true));\r\n return false;\r\n }\r\n toggleUserPopup({userPopupOpened: true, saveQuoteAfterLogin, userPopupType, checkout});\r\n if (userPopupType !== UserPopupTypes.NewDesign) {\r\n window.allowClickLeadCapturePopup = false;\r\n }\r\n return false;\r\n }\r\n };\r\n\r\n handleUserLoginClick = (userPopupType = UserPopupTypes.Unlock) => {\r\n Analytics.sendClickEvent('user-login');\r\n UserLoginButton.handleLoginClick({...this.props, toggleMobileButton: this.toggleMobileButton, userPopupType})\r\n };\r\n\r\n toggleMobileButton = () => {\r\n this.setState({\r\n userLogoutActive: !this.state.userLogoutActive\r\n }, () => {\r\n setTimeout(() => {\r\n this.state.userLogoutActive\r\n ? window.addEventListener('click', this.handleDropdownWrapperBlur)\r\n : window.removeEventListener('click', this.handleDropdownWrapperBlur)\r\n }, 0)\r\n })\r\n };\r\n\r\n handleDropdownWrapperBlur = (e) => {\r\n const questionLogout = e.target.closest('[class*=\"scart-content__question\"]');\r\n if (!questionLogout) {\r\n this.toggleMobileButton();\r\n }\r\n };\r\n\r\n handleLogOutButtonClick = (logout) => {\r\n Analytics.sendClickEvent('user-logout');\r\n if (logout) {\r\n this.props.toggleUserPopup({\r\n userPopupOpened: false,\r\n userIsLoggedIn: false,\r\n isPhoneNumberValidated: false\r\n });\r\n }\r\n this.toggleMobileButton()\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n this.handleUserLoginClick()}>\r\n \r\n {this.props.userIsLoggedIn\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 = (store) => {\r\n return {\r\n userIsLoggedIn: store.userState.userIsLoggedIn,\r\n isPhoneNumberValidated: store.userState.isPhoneNumberValidated,\r\n fabricatorSettings: store.fabricatorState.settings,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n toggleUserPopup,\r\n toggleShowAssignQuotePopup\r\n})(UserLoginButton);\r\n","import {PartMenuType} from \"../../visComponents/constants\";\r\nimport {iCmp} from \"../../../misc/utils\";\r\nimport Layer from \"../../visComponents/layer\";\r\nimport {LayoutType, METADATA} from \"./constants\";\r\nimport PartCommon from \"../../visComponents/partCommon\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\n\r\nexport class Part extends PartCommon {\r\n\r\n constructor(isParent, isChild, menuType) {\r\n super();\r\n if (isChild || (isParent && menuType === PartMenuType.Simple)) {\r\n this.featuresList = {};\r\n this.featuresPartsList = {};\r\n this.modulePartsList = {};\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this.featuresList[layoutName] = [];\r\n this.featuresPartsList[layoutName] = [];\r\n this.modulePartsList[layoutName] = [];\r\n });\r\n this.allFeaturesReceived = false;\r\n this.realFeaturesReceived = false; // this prop is need on Scroll (if features count more that 1000)\r\n this.nextFeaturesPageToLoad = 0;\r\n this.activeFeature = null;\r\n this.placeholderFeature = null;\r\n this.placeholderChanged = false;\r\n this.firstClick = {\r\n \"0\": false\r\n };\r\n this.activeLockedFeature = null;\r\n this.activeNotInVisualizerFeature = null; // is needed to display in the QT selected activeNotInVisualizerFeature, but render proper activeFeature layer(for example, countertop)\r\n // name = \"\";\r\n this.visible = true;\r\n this.categoryEnabled = false;\r\n this.layout = null;\r\n this.featureGroupVisible = true; // dashboard's feature group eye ball logic\r\n this.featureGroupEnabled = true; // dashboard's feature group checkbox logic\r\n this.selectedFeaturesHistory = []; // array of strings(names). updated every time item is selected\r\n this.filtersReceived = null; // array of filters values, comes from BE, for ex [1221, 347, 1124]\r\n }\r\n if (isParent) {\r\n this.partThumbnail = '';\r\n this.relatedItems = [];\r\n }\r\n if (!isChild && !isParent) {\r\n this.dbFeature = null;\r\n this.layer = new Layer(\"bv\");\r\n this._customDisplayName = null;\r\n this.notesList = {};\r\n }\r\n this.partName = \"\";\r\n }\r\n\r\n set features(featuresList) {\r\n // features can't be set directly, we need to change featuresList array\r\n }\r\n get features() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.featuresList[layout.getCurrentLayoutName()]\r\n }\r\n set featuresParts(featuresList) {\r\n // featuresParts can't be set directly, we need to change featuresPartsList array\r\n }\r\n get featuresParts() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.featuresPartsList[layout.getCurrentLayoutName()]\r\n }\r\n get moduleParts() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.modulePartsList[layout.getCurrentLayoutName()]\r\n }\r\n\r\n /**\r\n * Checks whether a given for condition matches the needed value (or array of values)\r\n * @param name {string}\r\n * @param value {string || array}\r\n * @returns {int} -1 - no such for condition, 0 - no match, 1 - matches\r\n */\r\n matchesMetaForCondition(name, value) {\r\n return this.metaData[name] && this.metaData[name].some(condValue => {\r\n return condValue === METADATA.ALL || (Array.isArray(value) ? value.some(val => iCmp(condValue, val)) : iCmp(condValue, value))\r\n });\r\n }\r\n\r\n matchesMetaForArrayOfConditions(arrayOfConditions) {\r\n return arrayOfConditions.every((condition) => {\r\n return this.matchesMetaForCondition(condition.propName, condition.propValue);\r\n })\r\n }\r\n\r\n navigationItem() {\r\n return new DesignNavigationItem(this.partName, this)\r\n }\r\n}\r\n\r\n\r\n","import invert from 'lodash/invert';\r\n\r\nimport {splitFeatureName} from \"../../../misc/utils\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\nimport {Part} from \"./part\";\r\nimport store from '../../../store';\r\nimport {LayoutAbbreviation, LayoutType} from \"./constants\";\r\nimport {getFeatureIsLocked} from \"../../../misc/helpers\";\r\n\r\n/**\r\n * Used for Complex parts such as Vanity, to perform some base functionality for related items\r\n */\r\nexport class IntermediatePart extends Part {\r\n\r\n constructor(isChild) {\r\n super(false, isChild);\r\n this.disabled = false;\r\n this.defaultDisabled = false; // used after reset click\r\n this.canBeDisabled = false;\r\n }\r\n\r\n /**\r\n * This will be called on feature creation\r\n * @param dbFeature\r\n */\r\n load(dbFeature) {\r\n return this.load_(dbFeature, new this.constructor());\r\n }\r\n\r\n /**\r\n * This will be called by the underlying vanity feature with a concrete instance of the part\r\n * @param dbFeature\r\n * @param part {Part}\r\n * @param setParent {boolean}\r\n * @param features\r\n */\r\n load_(dbFeature, part, setParent = true, features = 'features') {\r\n\r\n const featureList = features + \"List\";\r\n\r\n const {displayName} = dbFeature;\r\n let {featureName} = splitFeatureName(displayName);\r\n if (!featureName && dbFeature.groupName && dbFeature.displayName) {\r\n featureName = dbFeature.displayName.replace(dbFeature.groupName + \" - \", \"\")\r\n }\r\n // console.log('displayName:', displayName);\r\n\r\n if (setParent) {\r\n part.getParent = () => this;\r\n if (dbFeature.galleryImages) {\r\n const featured = dbFeature.galleryImages.find(galImage => galImage.featured);\r\n if (featured) {\r\n this.featuredImage = featured.url\r\n }\r\n dbFeature.galleryImages = dbFeature.galleryImages.sort((a, b) => b.default - a.default)\r\n }\r\n }\r\n\r\n if (!dbFeature.sharedFeatureName) {\r\n console.error(\"No sharedFeatureName property:\", dbFeature);\r\n }\r\n\r\n part.partName = featureName;\r\n part.metaData = dbFeature.metaData || {};\r\n\r\n if (dbFeature.s3Bindings && dbFeature.s3Bindings.length) {\r\n // dbFeature.s3Bindings = dbFeature.s3Bindings.filter(binding => binding.visualizer === \"Fireplace\")\r\n }\r\n\r\n part.dbFeature = dbFeature || {};\r\n if (!part.dbFeature.filterValueIDs) {\r\n part.dbFeature.filterValueIDs = {}\r\n }\r\n part.notAvailableInVisualizer = !dbFeature.s3Bindings || !dbFeature.s3Bindings.length;\r\n\r\n if (part.metaData.RoomLayout) {\r\n const roomLayout = part.metaData.RoomLayout;\r\n if (roomLayout.includes(LayoutAbbreviation.All)) {\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this[featureList][layoutName].push(part);\r\n })\r\n } else if (Array.isArray(roomLayout) && roomLayout.length) {\r\n roomLayout.forEach(roomLayoutAbbreviation => {\r\n const layoutName = invert(LayoutAbbreviation)[roomLayoutAbbreviation];\r\n if (layoutName) { // Prevent bad roomLayout Metadata\r\n this[featureList][layoutName].push(part);\r\n }\r\n });\r\n } else { // single value\r\n const layoutName = invert(LayoutAbbreviation)[roomLayout];\r\n if(layoutName) {\r\n this[featureList][layoutName].push(part);\r\n }\r\n }\r\n }\r\n\r\n if (part.notAvailableInVisualizer || !part.metaData.RoomLayout) {\r\n part.notAvailableInVisualizer = true;\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this[featureList][layoutName].push(part);\r\n })\r\n }\r\n\r\n // Object.keys(LayoutType).forEach(layoutName => {\r\n // this[features+\"List\"][layoutName].push(part);\r\n // });\r\n\r\n this.loadFeatureCommon(part);\r\n\r\n return part\r\n }\r\n\r\n getActiveFeatureConditions() {\r\n return this.getArrayOfConditions()\r\n }\r\n\r\n // navigationSubItems(filters, searchText, forFeature, filterGroups, firstOpenedFeature, firstOpenedConditions) { // to do\r\n navigationSubItems(filters, searchText) {\r\n // const featuresList = (forFeature && forFeature.metaData.layerPosition === SIDE_POSITIONS[1]) ? this.featuresParts : this.features;\r\n const filteredAvailableFeatures = this.getFeaturesBySearchText(this.getFilteredFeaturesByFilters(filters, this.features), searchText);\r\n let featuresToDisplay = this.navigationSubItemsWithFilterMultipleConditions(this.getArrayOfConditions(true), filteredAvailableFeatures);\r\n // console.log(\"filterGroups\", filterGroups);\r\n return this.returnUniqueNavFeatures(featuresToDisplay)\r\n }\r\n\r\n navigationSubItemsWithFilter(propName, propValue, featuresToCheck = this.features) {\r\n return featuresToCheck.filter((feature) => {\r\n return feature.matchesMetaForCondition(propName, propValue);\r\n }).map(_ => new DesignNavigationItem(_.featureName, _));\r\n }\r\n\r\n navigationSubItemsWithFilterMultipleConditions(arrayOfConditions, featuresToCheck = this.features) {\r\n // console.log('arrayOfConditions', arrayOfConditions);\r\n // console.log('featuresToCheck', featuresToCheck);\r\n return featuresToCheck.filter((feature) => {\r\n return feature.notAvailableInVisualizer || arrayOfConditions.every((conditionObject) => {\r\n const {propName, propValue} = conditionObject;\r\n return feature.matchesMetaForCondition(propName, propValue);\r\n });\r\n })\r\n }\r\n\r\n setDefault(layout, setNotInVisFeature = false) {\r\n this.setFeatureGroupDefault(layout, setNotInVisFeature)\r\n }\r\n\r\n setLayerPositions = (activeFeature = this.activeFeature) => {\r\n if (!activeFeature) {\r\n return\r\n }\r\n const layout = this.getParent().layout;\r\n const conditions = this.getArrayOfConditions();\r\n if (layout && this.defaultLayerLayoutPositions && this.defaultLayerLayoutPositions[layout.type]) {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if (this.defaultLayerLayoutPositions[layout.type] === key\r\n && (!this.layerPositions[key] || !this.layerPositions[key].matchesMetaForArrayOfConditions(conditions))) {\r\n this.layerPositions[key] = activeFeature;\r\n } else if (activeFeature.dbFeature.metaData[\"layerPosition\"] !== key) {\r\n this.layerPositions[key] = null;\r\n }\r\n })\r\n } else {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if (layout.initialized) {\r\n if ((activeFeature.dbFeature.metaData[\"layerPosition\"] === key)\r\n && (this.layerPositions[key] && !this.layerPositions[key].matchesMetaForArrayOfConditions(conditions))) {\r\n this.layerPositions[key] = activeFeature;\r\n // } else if (this.setAllLayerPositions) {\r\n } else if (this.layerPositions[key]) { // here we have to change vanity cabinet to console for example\r\n const matchingPositionFeature = this.getMatchingPositionFeature(key);\r\n if (matchingPositionFeature) {\r\n this.layerPositions[key] = matchingPositionFeature;\r\n }\r\n }\r\n } else { // first time we should set everything by the default! // missing layers issue\r\n if ((activeFeature.dbFeature.metaData[\"layerPosition\"] === key)\r\n && (!this.layerPositions[key] || !this.layerPositions[key].matchesMetaForArrayOfConditions(conditions))) {\r\n this.layerPositions[key] = activeFeature;\r\n // } else if (this.setAllLayerPositions) {\r\n } else {\r\n const matchingPositionFeature = this.getMatchingPositionFeature(key);\r\n if (matchingPositionFeature) {\r\n this.layerPositions[key] = matchingPositionFeature;\r\n }\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n toggleLayerPositions() {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n this.layerPositions[key] = this.disabled ? null : this.getMatchingPositionFeature(key)\r\n })\r\n }\r\n\r\n getMatchingPositionFeature = (position = \"\", fromFeature = this.activeFeature, fromLayout = null) => {\r\n if (fromFeature) { //just in case\r\n const name1 = fromFeature.getSplittedFeatureName();\r\n let arrayOfConditions = this.getArrayOfConditions();\r\n if (fromFeature.metaData[\"SkuName\"]) {\r\n arrayOfConditions.push({\r\n propName: \"SkuName\",\r\n propValue: fromFeature.metaData[\"SkuName\"]\r\n })\r\n }\r\n if (fromLayout) {\r\n let roomLayoutMeta = arrayOfConditions.find(condition => condition.propName === \"RoomLayout\");\r\n let roomSceneMeta = arrayOfConditions.find(condition => condition.propName === \"RoomScene\");\r\n if (roomLayoutMeta) {\r\n roomLayoutMeta.propValue = fromLayout.getCurrentLayoutAbbreviation();\r\n }\r\n if (roomSceneMeta) {\r\n roomSceneMeta.propValue = fromLayout.scene;\r\n }\r\n }\r\n const skuNamesPartIds = [\"shower_door\", \"walk_in_tub\", \"shower_pan_combo\"];\r\n const whereToFind = (!this.layerPositions || (position === Object.keys(this.layerPositions)[0])) ? this.features : this.featuresParts;\r\n return whereToFind.find((feature) => {\r\n return (skuNamesPartIds.includes(this.partId) || name1 === feature.getSplittedFeatureName())\r\n && feature.matchesMetaForArrayOfConditions(arrayOfConditions) && feature.metaData[\"layerPosition\"] === position\r\n });\r\n }\r\n return null\r\n };\r\n\r\n getArrayOfConditions() {\r\n const layout = this.getParent().layout;\r\n return [{\r\n propName: 'RoomLayout',\r\n propValue: layout.getCurrentLayoutAbbreviation()\r\n }, {\r\n propName: 'RoomScene',\r\n propValue: layout.scene\r\n }];\r\n }\r\n\r\n setLayers(layout) {\r\n if (this.activeFeature && (this.activeFeature.matchesMetaForArrayOfConditions(this.getArrayOfConditions()))) {\r\n if (this.hasAdditionalParts) {\r\n this.checkIfFeaturePartIsMatching();\r\n }\r\n return this._setLayers(layout);\r\n }\r\n this.setDefault(layout);\r\n return this._setLayers(layout);\r\n }\r\n showLayerPositionsModal() {\r\n return false\r\n }\r\n\r\n clickFromAllWalls(ignoreLocked) {\r\n if (this && this.dbFeature && this.dbFeature.sharedFeatureName) {\r\n console.log(`${this.partId}:`, this.dbFeature.sharedFeatureName);\r\n }\r\n this.handleClick(ignoreLocked, \"all_walls\");\r\n }\r\n\r\n tryToSetTheSameFeature(filteredFeatures = [], partName = \"\") {\r\n if (this.activeFeature && this.activeFeature.partName) {\r\n let splittedFromTheLayoutName = partName\r\n ? this.removeLayoutFromPartName(partName)\r\n : this.activeFeature.getMatchingFeatureName();\r\n this.activeFeature = filteredFeatures.find(feature => {\r\n return feature.getMatchingFeatureName() === splittedFromTheLayoutName\r\n });\r\n if (this.activeFeature) {\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n\r\n /**\r\n * @param ignoreLocked {boolean} // false by the default, is used by wizard ONLY\r\n */\r\n handleClick(ignoreLocked = false) {\r\n const parent = this.getParent();\r\n const {activeQuoteIndex} = store.getState().quotesState;\r\n parent.firstClick[activeQuoteIndex] = true; // allow to show active item\r\n const featureIsLocked = getFeatureIsLocked(this, ignoreLocked);\r\n if (featureIsLocked) {\r\n parent.activeLockedFeature = this;\r\n } else {\r\n if (parent.activeLockedFeature) {\r\n parent.activeLockedFeature = null;\r\n }\r\n this.featureClick();\r\n }\r\n }\r\n\r\n featureClick() {\r\n const parent = this.getParent();\r\n parent.placeholderChanged = true;\r\n if (this.notAvailableInVisualizer) {\r\n parent.activeNotInVisualizerFeature = this; // do not change the activeFeature (in order to keep the layer)\r\n } else if (parent.activeNotInVisualizerFeature) {\r\n parent.activeNotInVisualizerFeature = null; // remove it from other searches and so on\r\n parent.activeFeature = this;\r\n } else {\r\n parent.activeFeature = this;\r\n }\r\n this.featureClicked();\r\n }\r\n\r\n hideLayers() {\r\n if (this.activeFeature) {\r\n this.activeFeature.layer.src = '';\r\n }\r\n if (Array.isArray(this.activeFeatureParts) && this.activeFeatureParts.length) {\r\n this.activeFeatureParts.forEach((activeFeaturePart) => {\r\n if (activeFeaturePart && activeFeaturePart.layer) {\r\n activeFeaturePart.layer.src = '';\r\n }\r\n })\r\n }\r\n if (this.placeholderFeature) {\r\n this.placeholderFeature.layer.src = '';\r\n }\r\n if (this.layerPositions) {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if (this.layerPositions[key]) {\r\n this.layerPositions[key].layer.src = '';\r\n }\r\n })\r\n }\r\n }\r\n\r\n setZIndex(zIndexes) {\r\n\r\n const getZIndex = (feature, partId = null) => {\r\n return feature.metaData[\"ZSorting\"] ? feature.metaData[\"ZSorting\"] * 1000 : zIndexes[partId || this.partId];\r\n }\r\n\r\n if (this.layerPositions) {\r\n Object.keys(this.layerPositions).forEach((key, keyIndex) => {\r\n const feature = this.layerPositions[key];\r\n if (feature) {\r\n feature.layer.zIndex = getZIndex(feature) + keyIndex*10;\r\n }\r\n })\r\n } else if (zIndexes && this.activeFeature) {\r\n this.activeFeature.layer.zIndex = getZIndex(this.activeFeature);\r\n if (this.hasAdditionalParts && this.activeFeatureParts && this.activeFeatureParts.length) {\r\n this.activeFeatureParts.forEach((activeFeaturePart, keyIndex) => {\r\n activeFeaturePart.layer.zIndex = getZIndex(activeFeaturePart, this.additionalPartPartId) + (keyIndex + 1) * 10;\r\n });\r\n }\r\n }\r\n }\r\n\r\n removeEdgeFromPartName(partName) {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n const edgeFilterGroup = filterGroups.find(group => group.name === \"Edge\" || group.name === \"Edge Profile\");\r\n if (edgeFilterGroup && edgeFilterGroup.values && edgeFilterGroup.values.length) {\r\n const edgeFilterGroupValues = edgeFilterGroup.values.sort((a,b) => {\r\n return a.value && b.value && (b.value.length - a.value.length)\r\n }); // 1st should be \"Full Bullnose\", then simple \"Bullnose\"\r\n edgeFilterGroupValues.forEach((filterGroupValue) => { // arrayOf {id: 293, value: \"Eased\", displayText: \"Eased\", parent_id: null, icon: \"\", …}\r\n partName = partName.split(\" \"+filterGroupValue.value).join(\"\");\r\n });\r\n }\r\n return partName\r\n }\r\n\r\n getCountertopGroupsSplittedFeatureName = () => {\r\n if (this._countertopGroupsCustomDisplayName == null) {\r\n this._countertopGroupsCustomDisplayName = this.dbFeature.sharedFeatureName;\r\n }\r\n return this._countertopGroupsCustomDisplayName\r\n };\r\n\r\n getSplittedFeatureName = () => {\r\n if (this._customDisplayName == null) {\r\n this._customDisplayName = this.dbFeature.sharedFeatureName || this.partName || \"\";\r\n if (this.partId === \"center_island_countertop\") {\r\n this._customDisplayName = this._customDisplayName\r\n .replace(/2 0 /g, \"\")\r\n .replace(/Center Island Countertop 1 /g, \"\");\r\n }\r\n }\r\n return this._customDisplayName\r\n };\r\n\r\n getMatchingFeatureName = () => {\r\n return this.getSplittedFeatureName()\r\n };\r\n\r\n getModuleFeatureName = () => {\r\n // return this.partName.split(\" M_\")[0];\r\n return this.partName.split(\" M\")[0];\r\n };\r\n\r\n featureIsMatchingFilters(currentFeature, activeFilters, filters = []) {\r\n return filters.every(filter => {\r\n return activeFilters[filter.id]\r\n && currentFeature.dbFeature.filterValueIDs[filter.id]\r\n && currentFeature.dbFeature.filterValueIDs[filter.id].includes(activeFilters[filter.id][0])\r\n })\r\n }\r\n\r\n getActiveFeaturePartsAccordingToActiveFeature(fromFeature = this.activeFeature, activeFeatureConditions = []) {\r\n let activeFeatureParts = [];\r\n if (fromFeature && fromFeature.partNumber) {\r\n let activeFeaturePart;\r\n const name1 = fromFeature.getSplittedFeatureName();\r\n // console.log(\"name1\", name1);\r\n let arrayOfConditions = activeFeatureConditions.length\r\n ? activeFeatureConditions\r\n : this.getActiveFeatureConditions(fromFeature);\r\n // if (this.partId === \"right_wall\") {\r\n // arrayOfConditions = arrayOfConditions.filter(condition => condition.propName !== \"MirrorSize\");\r\n // }\r\n activeFeatureParts = this.featuresParts.filter((feature) => name1 === feature.getSplittedFeatureName());\r\n // console.log(\"this.featuresParts\", this.featuresParts);\r\n // console.log(\"activeFeatureParts\", activeFeatureParts);\r\n if (activeFeatureParts.length) {\r\n activeFeaturePart = activeFeatureParts.find((feature) => {\r\n return feature.matchesMetaForArrayOfConditions(arrayOfConditions)\r\n });\r\n if (!activeFeaturePart) {\r\n activeFeaturePart = activeFeatureParts[0];\r\n }\r\n }\r\n activeFeatureParts = activeFeaturePart ? [activeFeaturePart] : [];\r\n activeFeatureParts.forEach((activeFeaturePart) => {\r\n activeFeaturePart.disabled = this.disabled\r\n });\r\n }\r\n return activeFeatureParts\r\n }\r\n\r\n checkIfFeaturePartIsMatching() {\r\n if (this.activeFeatureParts && this.activeFeatureParts.length) {\r\n const activeFeatureConditions = this.getActiveFeatureConditions();\r\n const name1 = this.activeFeature.getSplittedFeatureName();\r\n const activeFeaturePart = this.activeFeatureParts[0];\r\n if (!(activeFeaturePart.matchesMetaForArrayOfConditions(activeFeatureConditions)\r\n && name1 === activeFeaturePart.getSplittedFeatureName())) {\r\n this.activeFeatureParts = this.setActiveFeatureParts(this.activeFeature, activeFeatureConditions);\r\n }\r\n } else {\r\n this.activeFeatureParts = this.setActiveFeatureParts();\r\n }\r\n }\r\n\r\n setActiveFeatureParts(fromFeature = this.activeFeature, activeFeatureConditions = []) {\r\n return this.getActiveFeaturePartsAccordingToActiveFeature(fromFeature, activeFeatureConditions);\r\n }\r\n\r\n}\r\n","import React from \"react\";\r\n\r\nimport Button from \"@mui/material/Button\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nconst GroheCartStickyFooter = (props) => {\r\n\r\n const {stickyFooterButtons} = props;\r\n\r\n return (\r\n
\r\n {stickyFooterButtons.map(button => (\r\n \r\n ))}\r\n
\r\n )\r\n};\r\n\r\nexport default GroheCartStickyFooter\r\n","import JsonApi from \"../../../api/jsonApi\";\r\nimport {getLocalStorageItem} from \"../../../misc/storageFunctions\";\r\nimport store from \"../../../store\";\r\nimport {setContractsList} from \"../../../actions/contractsActions\";\r\n\r\nexport const getContracts = async () => {\r\n const {contractSigningState, fabricatorState} = store.getState();\r\n if (contractSigningState.contractsReceived || !fabricatorState.settings.useContractSigning) {\r\n if (!contractSigningState.contractsReceived) {\r\n store.dispatch(setContractsList([])); // set received property true\r\n }\r\n return\r\n }\r\n try {\r\n const response = await JsonApi.getContractDocuments();\r\n console.log(\"response\", response);\r\n if (response && Array.isArray(response.data)) {\r\n const savedContracts = getLocalStorageItem(\"activeContracts\");\r\n let newOrderedList = response.data\r\n .sort((a, b) => (a.order > b.order) ? 1 : -1)\r\n .map((contract, contractIndex) => {\r\n contract.selected = false; // this is used in the checkbox\r\n contract.order = contractIndex;\r\n if (document.kvConfig.isBackend) {\r\n const fabId = document.kvConfig.userId || \"noFabUser\";\r\n if (savedContracts && savedContracts[fabId] && Array.isArray(savedContracts[fabId])\r\n && savedContracts[fabId].length > 0 && savedContracts[fabId].includes(contract.id)) {\r\n contract.selected = true;\r\n }\r\n } else if (contract.isDefault) { // default is for customer, if it is unchecked - then do not use contract at all\r\n contract.selected = true;\r\n }\r\n if (response.data.length === 1 || (fabricatorState.isAmericanStandard && contractIndex === 0)) {\r\n // We need to always have the spec sheet loading for American standard as the first doc without selecting it\r\n // If there is only one contract - it should be selected by the default\r\n contract.selected = true;\r\n }\r\n return contract;\r\n });\r\n store.dispatch(setContractsList(newOrderedList))\r\n return newOrderedList\r\n } else {\r\n store.dispatch(setContractsList([])); // set received property true\r\n return []\r\n }\r\n } catch (error) {\r\n console.log(\"error\", error);\r\n store.dispatch(setContractsList([])); // set received property true\r\n return []\r\n }\r\n};\r\n\r\nexport const getSelectedContracts = (contractsList) => {\r\n if (!Array.isArray(contractsList) || !contractsList.length) {\r\n return []\r\n }\r\n return contractsList.filter(contract => contract.selected)\r\n}\r\n\r\nexport const shouldUseContractSigning = (fabricatorSettings, allContractsList, withoutContractsCheck = false) => {\r\n if (!fabricatorSettings.useContractSigning) {\r\n return false;\r\n }\r\n if (withoutContractsCheck) {\r\n return true\r\n }\r\n if (!allContractsList) {\r\n const {contractsList} = store.getState().contractSigningState;\r\n allContractsList = contractsList;\r\n }\r\n return getSelectedContracts(allContractsList).length\r\n}\r\n\r\nexport const setContractBlobs = async (contractsList, receiptPagesLength = 0, isOfflineFirstLoad = false) => {\r\n let pagesCount = receiptPagesLength || 1; // start from 1 if receipt is broken\r\n let updatedContractsList = contractsList;\r\n for (const contract of updatedContractsList) {\r\n contract.pagesFrom = 0;\r\n contract.pagesTo = 0;\r\n if (contract.selected || isOfflineFirstLoad) {\r\n const useDocument = contract.documentWithoutTagsUrl || contract.documentUrl; // use without tags! but if not at least something\r\n if (useDocument && !contract.blobUrl) {\r\n const responseFetch = await fetch(useDocument);\r\n const blob = await responseFetch.blob();\r\n contract.blobUrl = URL.createObjectURL(blob);\r\n }\r\n contract.pagesFrom = pagesCount + (receiptPagesLength ? 1 : 0);\r\n pagesCount = pagesCount + contract.pagesCount;\r\n contract.pagesTo = pagesCount + (receiptPagesLength ? 1 : 0);\r\n }\r\n }\r\n if (isOfflineFirstLoad) {\r\n store.dispatch(setContractsList(updatedContractsList))\r\n }\r\n // console.log(\"contractsList\", contractsList);\r\n return {updatedContractsList, totalPages: pagesCount}\r\n}\r\n\r\nexport const getActiveContract = (contractsList, globalContractPage) => {\r\n return contractsList.find(contract => {\r\n return globalContractPage >=contract.pagesFrom && globalContractPage < contract.pagesTo\r\n })\r\n}\r\n\r\nexport const getAllContractsValues = (contractsList, context) => {\r\n const selectedContracts = getSelectedContracts(contractsList);\r\n const activeContract = getActiveContract(selectedContracts, context.globalContractPage);\r\n const activeContractPage = activeContract\r\n ? context.globalContractPage + 1 - activeContract.pagesFrom\r\n : 1;\r\n return {\r\n ...context,\r\n selectedContracts,\r\n activeContract,\r\n activeContractPage\r\n }\r\n}\r\n\r\nexport const changeContractsPage = (newPage, contractsList, context, changeContext) => {\r\n const {receiptPages, activeContract, globalContractPage} = context;\r\n const allValues = getAllContractsValues(contractsList, {...context, globalContractPage: newPage});\r\n // here we set false to show loader while the blob is reloading\r\n const showPage = (allValues.activeContract && activeContract && (allValues.activeContract.blobUrl === activeContract.blobUrl))\r\n || (receiptPages && (newPage <= receiptPages) && (globalContractPage <= receiptPages));\r\n\r\n changeContext({...context, globalContractPage: newPage, showPage});\r\n}\r\n","//INITIAL FLOW\r\nimport * as types from \"./actionTypes\";\r\n\r\nexport const setPaymentInfo = (name, value) => ({\r\n type: types.SET_PAYMENT_INFO,\r\n payload: {name, value}\r\n});\r\n\r\nexport const setCardInfo = (name, value) => ({\r\n type: types.SET_CARD_INFO,\r\n payload: {name, value}\r\n});\r\n\r\nexport const setCardErrors = (cardErrors) => ({\r\n type: types.SET_CARD_ERRORS,\r\n payload: {cardErrors}\r\n});\r\n\r\nexport const setShippingErrors = (shippingErrors) => ({\r\n type: types.SET_SHIPPING_ERRORS,\r\n payload: {shippingErrors}\r\n});\r\n\r\nexport const setShippingInfo = (name, value) => ({\r\n type: types.SET_SHIPPING_INFO,\r\n payload: {name, value}\r\n});\r\n\r\nexport const setBillingInfo = (name, value) => ({\r\n type: types.SET_BILLING_INFO,\r\n payload: {name, value}\r\n});\r\n\r\nexport const restorePaymentInfo = (someValues) => ({\r\n type: types.RESTORE_PAYMENT_INFO,\r\n payload: someValues\r\n});\r\n","import store from \"../store\";\r\nimport enhanceCanvas from \"../bvcomponents/visComponents/canvasEnhancements\";\r\nimport Misc from \"./misc\";\r\nimport {IS_DASHBOARD_MESSAGING, IS_LIXIL_UI} from \"../config\";\r\n\r\nconst createCanvas = (width, height) => {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = width;\r\n canvas.height = height;\r\n let backCtx = canvas.getContext('2d');\r\n // backCtx.fillStyle = \"#FFFFFF\";\r\n // backCtx.fillRect(0, 0, canvas.width, canvas.height);\r\n return {canvas, backCtx}\r\n}\r\n\r\nconst finishDraw = async (images, errorImages, layers, size = null, backgroundLayers = [], quality, useNewEnhance = false) => {\r\n\r\n //0) delete images that couldn't be loaded\r\n if (errorImages && errorImages.length) {\r\n images = images.filter(image => image && image.src && !errorImages.includes(image.src));\r\n }\r\n\r\n const width = size ? size.width : 720; // 1920\r\n const height = size ? size.height : 405; // 1080\r\n const maxWidth = 1920;\r\n const maxHeight = 1080;\r\n\r\n // 1) create canvas\r\n const canvasObject1 = createCanvas(width, height);\r\n canvasObject1.backCtx.fillStyle = \"#FFFFFF\";\r\n canvasObject1.backCtx.fillRect(0, 0, canvasObject1.canvas.width, canvasObject1.canvas.height);\r\n const canvasObject3 = createCanvas(maxWidth, maxHeight); // for crops\r\n\r\n // 2) put all background layout layers\r\n if (backgroundLayers.length) {\r\n const canvasObject2 = createCanvas(width, height);\r\n canvasObject2.backCtx.globalCompositeOperation = \"lighten\";\r\n images.forEach((imageObject) => {\r\n const layer = backgroundLayers.find(layer => layer.image === imageObject.src);\r\n if (layer) {\r\n if (layer.cropCoords && (document.kvConfig.visualizerType !== \"kvScene\")) {\r\n canvasObject3.backCtx.clearRect(0, 0, maxWidth, maxHeight);\r\n let layerWidth = layer.cropCoords[2] - layer.cropCoords[0];\r\n let layerHeight = layer.cropCoords[3] - layer.cropCoords[1];\r\n canvasObject3.backCtx.drawImage(imageObject, 0, 0, layerWidth, layerHeight, layer.cropCoords[0], layer.cropCoords[1], layerWidth, layerHeight);\r\n canvasObject3.backCtx.drawImage(canvasObject3.canvas, 0, 0, maxWidth, maxHeight,0, 0, width, height);\r\n } else if (layer.layerDimensions) {\r\n const dim = layer.layerDimensions;\r\n // console.log('yep', dim.width, dim.height, dim.polygonArray[0][0], dim.polygonArray[0][1], dim.width, dim.height);\r\n canvasObject2.backCtx.drawImage(imageObject, 0, 0, dim.width, dim.height, dim.polygonArray[0][0], dim.polygonArray[0][1], dim.width, dim.height);\r\n } else {\r\n imageObject.width = width;\r\n imageObject.height = height;\r\n canvasObject2.backCtx.drawImage(imageObject, 0, 0, width, height);\r\n }\r\n }\r\n });\r\n enhanceCanvas(canvasObject2.canvas, useNewEnhance);\r\n canvasObject1.backCtx.drawImage(canvasObject2.canvas, 0, 0, width, height, 0, 0, width, height);\r\n }\r\n\r\n // 3) put all layout layers\r\n for (const loadedImage of images) {\r\n const layer = layers.find(layers => layers.image === loadedImage.src);\r\n if (layer && backgroundLayers.every(layer => layer.image !== loadedImage.src)) {\r\n if (layer.cropCoords) {\r\n canvasObject3.backCtx.clearRect(0, 0, maxWidth, maxHeight);\r\n let layerWidth = layer.cropCoords[2] - layer.cropCoords[0];\r\n let layerHeight = layer.cropCoords[3] - layer.cropCoords[1];\r\n canvasObject3.backCtx.drawImage(loadedImage, 0, 0, layerWidth, layerHeight, layer.cropCoords[0], layer.cropCoords[1], layerWidth, layerHeight);\r\n await canvasObject1.backCtx.drawImage(canvasObject3.canvas, 0, 0, maxWidth, maxHeight,0, 0, width, height);\r\n // } else if (loadedImage.layerDimensions) {\r\n // console.log(\"loadedImage layerDimensions\", loadedImage.layerDimensions, loadedImage.src);\r\n // const dim = loadedImage.layerDimensions;\r\n // // console.log('yep', dim.width, dim.height, dim.polygonArray[0][0], dim.polygonArray[0][1], dim.width, dim.height);\r\n // canvasObject1.backCtx.drawImage(loadedImage, 0, 0, dim.width, dim.height, dim.polygonArray[0][0], dim.polygonArray[0][1], dim.width, dim.height);\r\n // } else if (loadedImage.coords) {\r\n // const min_x = width*loadedImage.coords.min_x;\r\n // const min_y = height*loadedImage.coords.min_y;\r\n // canvasObject1.backCtx.drawImage(loadedImage, 0, 0, loadedImage.width, loadedImage.height, min_x, min_y, loadedImage.width, loadedImage.height);\r\n } else {\r\n loadedImage.width = width;\r\n loadedImage.height = height;\r\n await canvasObject1.backCtx.drawImage(loadedImage, 0, 0, width, height);\r\n }\r\n if (Misc.isMobile() && IS_LIXIL_UI) { // we have to add some time for mobile safari, because of the process stuck\r\n await new Promise(resolve => setTimeout(resolve, 100));\r\n }\r\n }\r\n }\r\n // return canvas.toDataURL('image/png') // the size is 5.8Mb -- too much, let's use jpeg - it's only 600Kb\r\n return canvasObject1.canvas.toDataURL(\"image/jpeg\", quality)\r\n};\r\n\r\nconst getSubscriptionThumbnail = () => {\r\n const fabricatorState = store.getState().fabricatorState;\r\n if (fabricatorState.fabricatorSubscriptions) {\r\n let thumbnail = \"\";\r\n fabricatorState.fabricatorSubscriptions.forEach((subscription) => {\r\n if (subscription.thumbnail) {\r\n thumbnail = subscription.thumbnail\r\n }\r\n });\r\n return thumbnail\r\n }\r\n return \"\"\r\n}\r\n\r\n/**\r\n * A PROMISE! Returns the whole canvas image\r\n * @param layout\r\n * @param size\r\n * @param quality {number}\r\n * @param useNewEnhance {boolean}\r\n */\r\nexport const getImagePromiseFromLayout = (layout, size = null, quality = 0.7, useNewEnhance = false) => {\r\n if (!layout || IS_DASHBOARD_MESSAGING) {\r\n return Promise.resolve(getSubscriptionThumbnail())\r\n }\r\n const showPlaceHolders = document.bvConfig ? document.bvConfig.showPlaceholders : false;\r\n\r\n const layers = layout.getLayers(showPlaceHolders, true);\r\n if (!layers.length) {\r\n return Promise.resolve(getSubscriptionThumbnail())\r\n }\r\n\r\n const backGroundLayers = getBackgroundLayers(layers, layout);\r\n let imagesPromise = new Promise((resolve) => {\r\n let cnt = 0;\r\n const images = [];\r\n const errorImages = [];\r\n layers.forEach((layer) => {\r\n const image = new Image();\r\n image.crossOrigin = 'Anonymous';\r\n image.layerDimensions = layer.layerDimensions || null;\r\n image.coords = layer.coords || null;\r\n images.push(image);\r\n image.onload = () => {\r\n cnt++;\r\n if (cnt === layers.length) {\r\n resolve(finishDraw(images, errorImages, layers, size, backGroundLayers, quality, useNewEnhance))\r\n }\r\n };\r\n image.onerror = () => {\r\n //display error\r\n console.error('Coudn\\'t load image:', image.src);\r\n cnt++;\r\n errorImages.push(image.src);\r\n if (cnt === layers.length) {\r\n resolve(finishDraw(images, errorImages, layers, size, backGroundLayers, quality, useNewEnhance))\r\n }\r\n };\r\n try {\r\n image.src = layer.image;\r\n } catch (e) {\r\n console.log(e, 'Can\\'t apply image src', layer.image);\r\n }\r\n });\r\n });\r\n return imagesPromise.then(response => response)\r\n};\r\n\r\n/**\r\n * @param layers {array}\r\n * @param layout {object}\r\n * @param newLayoutType {boolean}\r\n * @returns layersArray {array}\r\n */\r\nexport const getBackgroundLayers = (layers, layout, newLayoutType = false) => {\r\n if ((layout && layout.isNewLayout) || newLayoutType) {\r\n return layers.filter((layer) => layer.zIndex >= 50000)\r\n }\r\n if (!layout) { // just in case\r\n return []\r\n }\r\n const name = layout.getCurrentLayoutName();\r\n return layers.filter((layer) => {\r\n return layout.zIndexes[name] && layout.zIndexes[name].Background &&\r\n Object.values(layout.zIndexes[name].Background).some(zIndex => zIndex === layer.zIndex);\r\n })\r\n};\r\n","import * as types from \"./actionTypes\";\r\n\r\nexport const setResources = (resourceType, resources) => ({\r\n type: types.SET_RESOURCES,\r\n payload: {resourceType, resources}\r\n});\r\n\r\nexport const addResource = (resourceType, resource) => ({\r\n type: types.ADD_RESOURCE,\r\n payload: {resourceType, resource}\r\n});\r\n\r\nexport const changeResource = (resourceType, resource) => ({\r\n type: types.CHANGE_RESOURCE,\r\n payload: {resourceType, resource}\r\n});\r\n\r\nexport const deleteResource = (resourceType, id) => ({\r\n type: types.DELETE_RESOURCE,\r\n payload: {resourceType, id}\r\n});\r\n\r\nexport const deleteResourceAttachedTo = (resourceType, attachedTo) => ({\r\n type: types.DELETE_RESOURCE_ATTACHED_TO,\r\n payload: {resourceType, attachedTo}\r\n});\r\n\r\nexport const deleteAllResources = () => ({\r\n type: types.DELETE_ALL_RESOURCES,\r\n payload: {}\r\n});\r\n\r\nexport const setSelectedFeature = (selectedFeature) => ({\r\n type: types.SET_SELECTED_FEATURE,\r\n payload: {selectedFeature}\r\n});\r\n\r\nexport const setSelectedPartIds = (selectedPartIds) => ({\r\n type: types.SET_SELECTED_PART_IDS,\r\n payload: {selectedPartIds}\r\n});\r\n\r\nexport const setSelectedHandle = (selectedHandle) => ({\r\n type: types.SET_SELECTED_HANDLE,\r\n payload: {selectedHandle}\r\n});\r\n","import SlabWorkspace from \"../core/slab/slabWorkspace\";\r\nimport workspace from \"../core/workspace\";\r\nimport {SHAPE_PART_ID} from \"../../../constants\";\r\nimport SQFTShapeOffset from \"../core/shapes/sqftShapeOffset\";\r\nimport sqftShape from \"../core/shapes/sqftShape\";\r\nimport createEventManager from \"./subscriptionEventManager\";\r\n\r\nconst eventManager = createEventManager();\r\n\r\nconst sqftSlabManager = {\r\n ...eventManager,\r\n\r\n centerButton: {\r\n width: 10,\r\n height: 9,\r\n },\r\n\r\n importSlabBacksplashes: (values) => {\r\n SlabWorkspace.slabAdditionalShapes.resetBacksplashes();\r\n SlabWorkspace.slabAdditionalShapes.importData(values);\r\n },\r\n removeAllSlabBacksplashes: (values) => {\r\n SlabWorkspace.slabAdditionalShapes.resetBacksplashes(values);\r\n },\r\n deleteSlabBacksplashByLine: (line) => {\r\n SlabWorkspace.slabAdditionalShapes.removeActiveBacksplashByLine(line);\r\n },\r\n getSlabPlaceHolderShapes: () => {\r\n return workspace.getShapes().filter(shp => shp.partId === SHAPE_PART_ID.slabPlaceHolder);\r\n },\r\n deleteShapeOffset: () => {\r\n if (SlabWorkspace.shapeOffset) {\r\n SlabWorkspace.shapeOffset.delete()\r\n }\r\n SlabWorkspace.shapeOffset = null\r\n },\r\n hideShapeOffset: () => {\r\n if (SlabWorkspace.shapeOffset) {\r\n SlabWorkspace.shapeOffset.deregisterEvents();\r\n }\r\n },\r\n reInitShapeOffset: () => {\r\n if (SlabWorkspace.shapeOffset) {\r\n SlabWorkspace.shapeOffset.reInitEvents();\r\n }\r\n },\r\n initShapeOffset: function (shape) {\r\n const shapes = workspace.getShapes();\r\n if (shape instanceof sqftShape) {\r\n if (SlabWorkspace.shapeOffset === null) {\r\n SlabWorkspace.shapeOffset = new SQFTShapeOffset(shapes[0]);\r\n SlabWorkspace.shapeOffset.init();\r\n SlabWorkspace.shapeOffset.setParent(shape);\r\n this.emit('shapeOffsetChanged', SlabWorkspace.shapeOffset);\r\n } else {\r\n SlabWorkspace.shapeOffset.animateShapeTransition(\r\n shape,\r\n () => {this.emit('shapeOffsetChanged', SlabWorkspace.shapeOffset)}\r\n );\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\nexport default sqftSlabManager\r\n","import QRCode from 'qrcode';\r\nimport store from \"../../../store\";\r\nimport {CabinetsSet} from \"./sqftCabinetsDataMapper\";\r\nimport SqftJsonApi from \"../api/sqftJsonApi\";\r\nimport {setAPIErrorMessage, setSqftCabinetsGlb} from \"../../../actions/sqftFunctions\";\r\nimport {setAbortController} from \"../../../actions/sqftMenuFunctions\";\r\nimport {groupUrlsByVersion, similarityByWords} from \"./dataHelper\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport sqftConfig from \"../components/canvas/store/sqftConfig\";\r\nimport {SQFT_AR3D_GLB_VIEWER} from \"../constants\";\r\n\r\nexport const generateQRCode = async (url) => {\r\n // Generate the QR code data as a string\r\n const qrData = await QRCode.toDataURL(url);\r\n\r\n // Create a canvas element to draw the QR code image on\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.width = 300;\r\n canvas.height = 300;\r\n const ctx = canvas.getContext(\"2d\");\r\n\r\n // Load the QR code image data into an Image object\r\n const img = new Image();\r\n\r\n return new Promise((resolve, reject) => {\r\n img.onload = () => {\r\n // Draw the QR code image onto the canvas after it loads\r\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\r\n\r\n // Resolve the promise with the canvas image data URL\r\n resolve(canvas.toDataURL());\r\n };\r\n\r\n img.onerror = reject; // Reject if there is an error loading the image\r\n img.src = qrData; // Start loading the QR code image\r\n });\r\n}\r\n\r\nexport const getThirdPartyAR3DMetaData = (dbFeature, thirdPartyAR3DUrl) => {\r\n if (dbFeature && dbFeature.thirdPartyAR3DMetaData && thirdPartyAR3DUrl) {\r\n const metadataString = dbFeature.thirdPartyAR3DMetaData[thirdPartyAR3DUrl];\r\n\r\n // Check if the metadata string is present\r\n if (metadataString) {\r\n try {\r\n // Parse the metadata string as JSON\r\n return JSON.parse(metadataString);\r\n } catch (error) {\r\n // Handle JSON parsing error\r\n console.log(\"JSON parsing error:\", error.message);\r\n console.log(\"JSON metadataString\", metadataString);\r\n console.log(\"dbFeature\", dbFeature.sharedFeatureName);\r\n return null;\r\n }\r\n } else {\r\n console.log(\"dbFeature missing metadata\", dbFeature.id);\r\n }\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport const getDepthFromAR3DMetaData = (thirdPartyAR3DMetaData) => {\r\n if (thirdPartyAR3DMetaData && Array.isArray(thirdPartyAR3DMetaData.Depth) && thirdPartyAR3DMetaData.Depth.length) {\r\n return parseFloat(thirdPartyAR3DMetaData.Depth[0]);\r\n }\r\n return null;\r\n};\r\n\r\nexport const getWidthFromAR3DMetaData = (thirdPartyAR3DMetaData) => {\r\n if (thirdPartyAR3DMetaData && Array.isArray(thirdPartyAR3DMetaData.Width) && thirdPartyAR3DMetaData.Width.length) {\r\n return parseFloat(thirdPartyAR3DMetaData.Width[0]);\r\n }\r\n return null;\r\n};\r\n\r\nexport const getHeightFromAR3DMetaData = (thirdPartyAR3DMetaData) => {\r\n if (thirdPartyAR3DMetaData && Array.isArray(thirdPartyAR3DMetaData.Height) && thirdPartyAR3DMetaData.Height.length) {\r\n return parseFloat(thirdPartyAR3DMetaData.Height[0]);\r\n }\r\n return null;\r\n};\r\n\r\nexport const getSpecialShape = (thirdPartyAR3DMetaData) => {\r\n if (thirdPartyAR3DMetaData && Array.isArray(thirdPartyAR3DMetaData.SpecialShape) && thirdPartyAR3DMetaData.SpecialShape.length) {\r\n return thirdPartyAR3DMetaData.SpecialShape[0];\r\n }\r\n return null;\r\n};\r\n\r\nexport const getCategoryFromMetadata = (thirdPartyAR3DMetaData) => {\r\n if (thirdPartyAR3DMetaData && Array.isArray(thirdPartyAR3DMetaData.Category) && thirdPartyAR3DMetaData.Category.length) {\r\n return thirdPartyAR3DMetaData.Category[0];\r\n }\r\n return null;\r\n};\r\n\r\nexport const getDepthFromDescription = (dbFeature) => {\r\n if (dbFeature.description) {\r\n const extractDimension = (dim) => parseInt(dbFeature.description.substr(dbFeature.description.indexOf(dim) + dim.length + 1, 3), 10);\r\n return extractDimension('Depth');\r\n }\r\n return null;\r\n};\r\n\r\nexport const getWidthFromDescription = (dbFeature) => {\r\n if (dbFeature.description) {\r\n const extractDimension = (dim) => parseInt(dbFeature.description.substr(dbFeature.description.indexOf(dim) + dim.length + 1, 3), 10);\r\n return extractDimension('Width');\r\n }\r\n return null;\r\n};\r\n\r\nexport const getHeightFromDescription = (dbFeature) => {\r\n if (dbFeature.description) {\r\n const extractDimension = (dim) => parseInt(dbFeature.description.substr(dbFeature.description.indexOf(dim) + dim.length + 1, 3), 10);\r\n return extractDimension('Height');\r\n }\r\n return null;\r\n};\r\n\r\nexport const getWidthFromDbFeature = (dbFeature, thirdPartyAR3DMetaData) => {\r\n let width = getWidthFromAR3DMetaData(thirdPartyAR3DMetaData);\r\n if (!width) {\r\n width = getWidthFromDescription(dbFeature);\r\n }\r\n return width\r\n};\r\n\r\nexport const getDepthFromDbFeature = (dbFeature, thirdPartyAR3DMetaData) => {\r\n let depth = getDepthFromAR3DMetaData(thirdPartyAR3DMetaData);\r\n if (!depth) {\r\n depth = getDepthFromDescription(dbFeature);\r\n }\r\n return depth\r\n};\r\n\r\nexport const getHeightFromDbFeature = (dbFeature, thirdPartyAR3DMetaData) => {\r\n let height = getHeightFromAR3DMetaData(thirdPartyAR3DMetaData);\r\n if (!height) {\r\n height = getHeightFromDescription(dbFeature);\r\n }\r\n return height\r\n};\r\n\r\nexport const findGLBLink = (links) => {\r\n const glbLink = links.find(link => link.endsWith('.glb'));\r\n return glbLink || null;\r\n};\r\n\r\n// Function to normalize strings for comparison\r\nexport const normalizeString = (str) => {\r\n return str.toLowerCase().replace(/[\\W_]+/g, ''); // Remove non-alphanumeric characters and convert to lowercase\r\n}\r\n\r\n// Function to split and normalize feature name or URL part for comparison\r\nexport const splitAndNormalize = (str) => {\r\n // Split by spaces and dashes, then normalize each part\r\n return str.split(/[\\s\\-]+/).map(normalizeString);\r\n}\r\n\r\n// Function to split and normalize feature name or URL part for comparison\r\nexport const getUrlByName = (nameSearch, thirdPartyAR3DUrls) => {\r\n const featureNameParts = splitAndNormalize(nameSearch);\r\n\r\n // 1.urlBySharedFeatureName - Enhanced Matching\r\n return thirdPartyAR3DUrls.find(url => {\r\n const urlParts = splitAndNormalize(url.toLowerCase().split('/').pop().split('.')[0]);\r\n return featureNameParts.every(part => urlParts.includes(part));\r\n });\r\n}\r\n\r\n// Function to get 3D URLs for a feature\r\nexport const get3dURLsForFeature = (feature) => {\r\n // Check if feature, feature.getFeatureName, and feature.dbFeature are defined\r\n if (!feature || !feature.getFeatureName || typeof feature.getFeatureName !== 'function' || !feature.dbFeature) {\r\n console.log('Invalid feature or feature properties');\r\n return null;\r\n }\r\n\r\n const featureNameParts = splitAndNormalize(feature.getFeatureName());\r\n\r\n // Check if thirdPartyAR3DUrls is defined and is an array\r\n if (!Array.isArray(feature.dbFeature.thirdPartyAR3DUrls)) {\r\n console.log('thirdPartyAR3DUrls is not defined or not an array. Id:', feature.dbFeature.id);\r\n return null;\r\n }\r\n\r\n const thirdPartyAR3DUrls = feature.dbFeature.thirdPartyAR3DUrls.filter(url => url.endsWith('.glb'));\r\n\r\n // Enhanced Matching\r\n const urlByFeatureName = thirdPartyAR3DUrls.find(url => {\r\n const urlParts = splitAndNormalize(url.toLowerCase().split('/').pop().split('.')[0]);\r\n // Check if all parts of the feature name are present in the URL segment\r\n return featureNameParts.every(part => urlParts.includes(part));\r\n });\r\n\r\n console.log(\"urlByFeatureName\", urlByFeatureName);\r\n if (urlByFeatureName) {\r\n return urlByFeatureName;\r\n }\r\n\r\n return null;\r\n};\r\n\r\n// Function to check if a URL contains \"-HE\" right before the file extension\r\nexport const containsHEBeforeExtension = (url) => {\r\n // Regular expression to match \"-HE\" right before the file extension\r\n const pattern = /-HE\\.[^/.]+$/;\r\n return pattern.test(url);\r\n}\r\n\r\n// Function to check if a URL contains \"-HE\" right before the file extension\r\nexport const startsFromH = (str) => {\r\n return str.charAt(0) === 'H';\r\n}\r\n\r\n// Function to check if a URL contains \"-HE\" right before the file extension\r\nexport const isHoodShape = (shape) => {\r\n const layout = getCurrentLayout();\r\n const relatedParentFeature = layout.getFeatureById(shape.relatedParentFeatureId, true);\r\n if (relatedParentFeature) {\r\n let shapeDbFeature = relatedParentFeature.dbFeature.relatedFeatures.find(relatedFeature => relatedFeature.id === shape.featureId);\r\n if (!shapeDbFeature) {\r\n const shapeFeature = layout.getFeatureById(shape.featureId, true);\r\n if (shapeFeature) {\r\n shapeDbFeature = shapeFeature.dbFeature\r\n }\r\n }\r\n const url = getUrlMatchingByColor(shapeDbFeature, relatedParentFeature).replace(/\\s+\\.glb$/, '.glb');\r\n\r\n const metaData = getThirdPartyAR3DMetaData(shapeDbFeature, url);\r\n const category = getCategoryFromMetadata(metaData);\r\n const shapeHeight = shape.shapeCabinet ? shape.shapeCabinet.getShapeHeight() : shape.getHeight();\r\n\r\n return category === \"Hood\" || containsHEBeforeExtension(url) || shapeHeight <= 18;\r\n }\r\n}\r\n\r\nexport const setCabinetGLBFromCabinetsSet = async(displayDoorsOnly = false, shouldDisplayFramedDoors = false) => {\r\n const cabinetsData = CabinetsSet.prepareCabinetsSet(displayDoorsOnly, shouldDisplayFramedDoors);\r\n console.log(\"prepared cabinetsData\", cabinetsData);\r\n\r\n if (sqftConfig.threeD.glbViewer === SQFT_AR3D_GLB_VIEWER.singleModel) {\r\n const cabinetsUrl = await getUrlToCabinetGLB(cabinetsData);\r\n setUrlToCabinetGLB(cabinetsUrl);\r\n } else {\r\n await setCabinetsSetToCabinetGLB(cabinetsData);\r\n }\r\n}\r\n\r\nexport const setCabinetsSetToCabinetGLB = async(cabinetsData) => {\r\n store.dispatch(setSqftCabinetsGlb(cabinetsData));\r\n}\r\n\r\nexport const getUrlToCabinetGLB = async(cabinetsData) => {\r\n const state = store.getState();\r\n if (state.sqftState.abortRequestController) {\r\n state.sqftState.abortRequestController.abort();\r\n }\r\n\r\n let cabinetSet;\r\n try {\r\n store.dispatch(setAPIErrorMessage(null));\r\n const abortController = new AbortController();\r\n store.dispatch(setAbortController(abortController));\r\n cabinetSet = await SqftJsonApi.postCabinetSet(cabinetsData, { signal: abortController.signal });\r\n } catch (e) {\r\n if (e.name !== 'AbortError') {\r\n store.dispatch(setAPIErrorMessage(e));\r\n }\r\n }\r\n console.log(\"response cabinetSet from api\", cabinetSet );\r\n\r\n return cabinetSet\r\n}\r\n\r\nexport const setUrlToCabinetGLB = (cabinetSet) => {\r\n //URL needs to be here to display it in AR https://s3.amazonaws.com/qc-3dfiles/composed/ to override it check SquareFootageToolAR\r\n //glbUrl = \"https://qc-3dfiles.s3.amazonaws.com/ar-composer/W3030.glb\"\r\n //glbUrl = \"/images/sqft-icons/3d/Chair.glb\"\r\n //store.dispatch(setSqftCabinetsGlb(\"/video/3d/cabinet.glb\"));\r\n //store.dispatch(setSqftCabinetsGlb(\"https://quoteremodel.com/video/sqft/cabinets/cabinet.glb\"));\r\n //glbUrl = \"/images/sqft-icons/3d/DCW2430 Summer Flame.glb\"\r\n //glbUrl = \"/images/sqft-icons/3d/hood/Hood Oven GLB/Appliances/Hood_0_0_0_30_0_0_Collection/All-Hood ZLINE 8654SNZ CB-30-25.6.glb\"\r\n //glbUrl = \"https://discoverthreejs.com/examples/assets/models/Parrot.glb\"\r\n //glbUrl = \"https://threejs.org/examples/models/gltf/AnisotropyBarnLamp.glb\"\r\n //setSqftCabinetsGlb(\"https://threejs.org/examples/models/gltf/AnisotropyBarnLamp.glb\");\r\n //store.dispatch(setSqftCabinetsGlb(\"https://master_new_1512.quoteremodel.com/content/Views/visualizers/images/sqft-icons/3d/cabinet.glb\"));\r\n //store.dispatch(setSqftCabinetsGlb(\"https://d1mb1i73swc8dz.cloudfront.net/ar-composer/All-Bottom Cabinet-Light Italian Walnut-Bryant-30-34.5-SB.glb\"));\r\n //store.dispatch(setSqftCabinetsGlb(\"https://s3.amazonaws.com/qc-3dfiles/composed/5dd7954e-ed43-4489-8260-93eeaade08c5.glb\"));\r\n store.dispatch(setSqftCabinetsGlb(cabinetSet ? cabinetSet.s3Url : null));\r\n}\r\n\r\nexport function getUrlMatchingByColor(dbFeature, relatedParentFeature) {\r\n //console.log(\"relatedParentFeature.getFeatureName()\", relatedParentFeature.getFeatureName());\r\n //console.log(\"relatedParentFeature.sharedFeatureName\", relatedParentFeature.dbFeature.sharedFeatureName);\r\n\r\n if (!dbFeature || !relatedParentFeature) {\r\n console.log('Invalid feature or feature properties');\r\n return null;\r\n }\r\n\r\n if (!Array.isArray(dbFeature.thirdPartyAR3DUrls)) {\r\n console.log('thirdPartyAR3DUrls is not defined or not an array. Id:', dbFeature.id);\r\n return null;\r\n }\r\n\r\n const relatedParentFeatureName = relatedParentFeature.getFeatureName();\r\n\r\n // Sort URLs by version in descending order\r\n const sortedUrls = groupUrlsByVersion(dbFeature.thirdPartyAR3DUrls);\r\n\r\n // Try to find a URL by the shared feature name\r\n const urlBySharedFeatureName = getUrlByName(relatedParentFeature.dbFeature.sharedFeatureName, sortedUrls);\r\n if (urlBySharedFeatureName) {\r\n return urlBySharedFeatureName;\r\n }\r\n\r\n // Try to find a URL by the parent feature name\r\n const urlByFeatureName = getUrlByName(relatedParentFeatureName, sortedUrls);\r\n if (urlByFeatureName) {\r\n return urlByFeatureName;\r\n }\r\n\r\n // Try to find a URL by similarity based on the shared feature name\r\n const urlBySimilarity = similarityByWords(sortedUrls, relatedParentFeature.dbFeature.sharedFeatureName);\r\n if (urlBySimilarity) {\r\n return urlBySimilarity;\r\n }\r\n\r\n // Try to find a URL by similarity based on the parent feature name\r\n const urlBySimilarityFromFeatureName = similarityByWords(sortedUrls, relatedParentFeatureName);\r\n if (urlBySimilarityFromFeatureName) {\r\n return urlBySimilarityFromFeatureName;\r\n }\r\n\r\n // Check if URL contains the feature name\r\n let matchingUrl = sortedUrls.find(url => url.includes(relatedParentFeatureName));\r\n if (matchingUrl) {\r\n return matchingUrl;\r\n }\r\n\r\n // Check if URL contains the color name\r\n const color = relatedParentFeature.getColorName();\r\n if (color && color.length > 3) {\r\n matchingUrl = sortedUrls.find(url => url.includes(color));\r\n if (matchingUrl) {\r\n return matchingUrl;\r\n }\r\n }\r\n\r\n // If no specific color, fallback to checking for 'black' in URL\r\n matchingUrl = sortedUrls.find(url => url.toLowerCase().includes('black'));\r\n if (matchingUrl) {\r\n return matchingUrl;\r\n }\r\n\r\n // If no match was found, return the first URL as a fallback\r\n return sortedUrls[0] || null;\r\n}\r\n\r\nexport function getRelatedFeatureMetadata (relatedFeature, parentFeature) {\r\n const url = getUrlMatchingByColor(relatedFeature.dbFeature, parentFeature);\r\n return getThirdPartyAR3DMetaData(relatedFeature.dbFeature, url);\r\n}\r\n\r\nexport function getCabinetDimensions (relatedFeature, parentFeature) {\r\n const thirdPartyAR3DMetaData = getRelatedFeatureMetadata(relatedFeature, parentFeature);\r\n const width = getWidthFromDbFeature(relatedFeature.dbFeature, thirdPartyAR3DMetaData);\r\n const depth = getDepthFromDbFeature(relatedFeature.dbFeature, thirdPartyAR3DMetaData);\r\n const height = getHeightFromDbFeature(relatedFeature.dbFeature, thirdPartyAR3DMetaData);\r\n const diamondLength = thirdPartyAR3DMetaData && thirdPartyAR3DMetaData.DiamondLength ? parseFloat(thirdPartyAR3DMetaData.DiamondLength[0]) : 0;\r\n\r\n return { width: width, height: height, depth: depth, diamondLength: diamondLength, thirdPartyAR3DMetaData };\r\n}\r\n\r\nexport function getCabinetSimilarFeatureFromAnotherColor (featuresListToSearchForNewFeature, currentShapeDbFeature) {\r\n const getCabinetBoxName = (str) => {\r\n if (str.includes('/')) {\r\n const parts = str.split('/');\r\n return parts[0].trim();\r\n } else {\r\n return str.trim();\r\n }\r\n }\r\n const cabinetBoxName = getCabinetBoxName(currentShapeDbFeature.sharedFeatureName);\r\n let newShapeDbFeature = featuresListToSearchForNewFeature.find(relatedFeature =>\r\n relatedFeature.sharedFeatureName === cabinetBoxName\r\n );\r\n\r\n // If no exact match found, search for an 'includes' match\r\n if (!newShapeDbFeature) {\r\n newShapeDbFeature = featuresListToSearchForNewFeature.find(relatedFeature =>\r\n relatedFeature.sharedFeatureName.includes(cabinetBoxName)\r\n );\r\n }\r\n\r\n return newShapeDbFeature\r\n}\r\n","import {loadScriptPromise} from \"./misc/loadScript\";\r\n\r\nexport const ASYNC_SCRIPTS = {\r\n html2canvas: \"https://d3d4bzhtpt24up.cloudfront.net/shared/js/html2canvas.min.js\",\r\n bundleReactPdf: \"https://d3d4bzhtpt24up.cloudfront.net/custom-scripts/bundle-react-pdf.min.js\",\r\n bundleReactPdfRenderer: \"https://d3d4bzhtpt24up.cloudfront.net/custom-scripts/bundle-react-pdf-renderer.min.js\",\r\n three: \"https://d3d4bzhtpt24up.cloudfront.net/custom-scripts/bundle-three.min.js\",\r\n}\r\n\r\nexport const loadAllAsyncScripts = async () => {\r\n return await Promise.all([\r\n ...Object.keys(ASYNC_SCRIPTS).map(scriptName => {\r\n return loadScriptPromise(ASYNC_SCRIPTS[scriptName], scriptName)\r\n }),\r\n ])\r\n}\r\n\r\nconst _removeElements = (elements) => {\r\n for (let i = 0; i < elements.length; i++) {\r\n console.log(\"removed\", elements[i]);\r\n elements[i].remove();\r\n }\r\n}\r\n\r\nexport const removeLoadingElements = (page) => {\r\n // Get all elements with the specified class \"removeOnLoad\" which are elements to be removed once the tool is loaded to a point where it can display the tool, and remove them\r\n const elements = document.getElementsByClassName(\"removeOnLoad\");\r\n console.log('remove .removeOnLoad classed elements from ' + page, elements);\r\n\r\n if (page !== \"Visualizer\") {\r\n _removeElements(elements);\r\n return\r\n }\r\n\r\n window.setTimeout(() => {\r\n _removeElements(elements);\r\n }, 5000); //delay 5 seconds to allow time for the canvas to render first layer\r\n\r\n}\r\n\r\nexport const runSalesForceLogic = () => {\r\n if(window.Sfdc && window.Sfdc.canvas && typeof(sr) != 'undefined') {\r\n console.log(\"Sfdc available and sr is defined\");\r\n try {\r\n // Subscribe to a custom event.\r\n window.Sfdc.canvas(function() {\r\n window.Sfdc.canvas.client.subscribe(sr.client,\r\n {name : \"quoteCountertops.canvasLoadEvent\",\r\n onData: () => {\r\n console.log('QC Visualizer received quoteCountertops.canvasLoadEvent');\r\n window.salesForceLoaded = true;\r\n window.Sfdc.canvas.client.publish(sr.client, {\r\n name: \"quoteCountertops.canvasOn\",\r\n payload: true\r\n });\r\n }});\r\n\r\n window.Sfdc.canvas.client.publish(sr.client, {\r\n name: \"quoteCountertops.canvasReady\",\r\n payload: true\r\n });\r\n\r\n console.log('sending fake canvasLoadEvent');\r\n window.Sfdc.canvas.client.publish(sr.client, {\r\n name: \"quoteCountertops.canvasLoadEvent\",\r\n payload: true\r\n });\r\n });\r\n } catch(ex) {\r\n console.log('SalesForce capable, but not running in salesforce', ex);\r\n }\r\n }\r\n\r\n window.addEventListener(\"message\", (event) => {\r\n // console.log(event);\r\n if (event.data && event.data.name === \"quoteCountertops.canvasLoadEvent\") {\r\n console.log('Message received', event);\r\n window.sfdcMessage = event.source;\r\n window.salesForceLoaded = true;\r\n }\r\n });\r\n}\r\n","import {Part} from \"../part\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {applianceThumbnail} from \"../assets\";\r\n\r\nimport Dishwasher from \"../subparts/appliances/dishwasher\";\r\nimport Fridge from \"../subparts/appliances/fridge\";\r\nimport Hood from \"../subparts/appliances/hood\";\r\nimport Microwave from \"../subparts/appliances/microwave\";\r\nimport Range from \"../subparts/appliances/range\";\r\nimport Oven from \"../subparts/appliances/oven\";\r\nimport Stove from \"../subparts/appliances/stove\";\r\nimport FridgeEnclosure from \"../subparts/appliances/fridgeEnclosure\";\r\nimport FridgeEnclosureHandle from \"../subparts/appliances/fridgeEnclosureHandle\";\r\nimport Stovetop from \"../subparts/appliances/stovetop\";\r\n\r\nexport default class Appliance extends Part {\r\n static id = 'Appliances';\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'Appliances';\r\n this.partThumbnail = applianceThumbnail;\r\n this.partThumbnailSize = \"70%\";\r\n this.translateId = \"visualizer.kitchen.appliance\";\r\n\r\n // related items\r\n this.dishwasher = null;\r\n this.fridge = null;\r\n this.hood = null;\r\n this.microwave = null;\r\n this.range = null;\r\n this.stove = null;\r\n this.stovetop = null;\r\n this.fridgeEnclosure = null;\r\n this.fridgeEnclosureHandle = null;\r\n this.oven = null;\r\n this.relatedGroupNames = [\"Dishwasher\", \"Fridge\", \"Fridge Enclosure\", \"Hood\", \"Microwave\", \"Range\", \"Stove\",\r\n \"Stovetop\", \"Oven\"];\r\n }\r\n\r\n load(dbFeature, loadFeature = true) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Dishwasher\":\r\n relatedItemName = \"dishwasher\";\r\n RelatedItemClass = Dishwasher;\r\n break;\r\n case \"Fridge\":\r\n relatedItemName = \"fridge\";\r\n RelatedItemClass = Fridge;\r\n break;\r\n case \"Fridge Enclosure Handle\":\r\n relatedItemName = \"fridgeEnclosureHandle\";\r\n RelatedItemClass = FridgeEnclosureHandle;\r\n break;\r\n case \"Fridge Enclosure\":\r\n relatedItemName = \"fridgeEnclosure\";\r\n RelatedItemClass = FridgeEnclosure;\r\n break;\r\n case \"Hood\":\r\n relatedItemName = \"hood\";\r\n RelatedItemClass = Hood;\r\n break;\r\n case \"Microwave\":\r\n relatedItemName = \"microwave\";\r\n RelatedItemClass = Microwave;\r\n break;\r\n case \"Range\":\r\n relatedItemName = \"range\";\r\n RelatedItemClass = Range;\r\n break;\r\n case \"Stove\":\r\n relatedItemName = \"stove\";\r\n RelatedItemClass = Stove;\r\n break;\r\n case \"StoveTop\":\r\n case \"Stovetop\":\r\n relatedItemName = \"stovetop\";\r\n RelatedItemClass = Stovetop;\r\n break;\r\n case \"Oven\":\r\n relatedItemName = \"oven\";\r\n RelatedItemClass = Oven;\r\n break;\r\n }\r\n return this.loadCommon(relatedItemName, RelatedItemClass, dbFeature, loadFeature)\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false;\r\n }\r\n\r\n handleSubPartClick() {\r\n\r\n }\r\n\r\n}\r\n","import {Shower} from \"../../parts/shower\";\r\nimport {IntermediatePart} from \"../../intermediatePart\";\r\nimport {ShowerComboTubType, SIDE_POSITIONS} from \"../../constants\";\r\nimport {ShowerTubCombo} from \"../../parts/showerTubCombo\";\r\n\r\nexport default class AccessoryCommon extends IntermediatePart {\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n getArrayOfConditions() {\r\n let conditions = super.getArrayOfConditions(); //roomLayout\r\n const layout = this.getParent().layout;\r\n const showerParent = layout.parts[Shower.id];\r\n const showerSize = showerParent.showerSize();\r\n if (showerParent && showerSize) {\r\n conditions.push({\r\n propName: \"ShowerSize\",\r\n propValue: showerSize\r\n });\r\n }\r\n if (this.partId === \"grab_bar\") {\r\n const showerCondition = showerParent.showerTubComboIsActive() && layout.parts[ShowerTubCombo.id]\r\n && (layout.parts[ShowerTubCombo.id].bottomTub === ShowerComboTubType.walk_in_tub)\r\n ? \"Tub\"\r\n : \"Shower\";\r\n conditions.push({\r\n propName: \"Shower\",\r\n propValue: showerCondition\r\n });\r\n }\r\n return conditions\r\n }\r\n\r\n checkRelatedFeatureGroupPositions(position) {\r\n const accessoriesParent = this.getParent();\r\n const showerParent = accessoriesParent.layout.parts[Shower.id]; // no need for another check\r\n const showerSize = showerParent.showerSize();\r\n let otherFeatureGroup = null;\r\n switch (this.partId) {\r\n case \"grab_bar\":\r\n otherFeatureGroup = accessoriesParent.soapDish;\r\n break;\r\n case \"soap_dish\":\r\n otherFeatureGroup = accessoriesParent.grabBar;\r\n break;\r\n case \"shower_seats\":\r\n otherFeatureGroup = accessoriesParent.largeCornerSeat;\r\n break;\r\n case \"large_corner_seat\":\r\n otherFeatureGroup = accessoriesParent.seats;\r\n break;\r\n default:\r\n break;\r\n }\r\n if (showerSize === \"30\") {\r\n if (otherFeatureGroup && otherFeatureGroup.layerPositions && !this.disabled && Object.keys(this.layerPositions).some(key => this.layerPositions[key])) {\r\n Object.keys(otherFeatureGroup.layerPositions).forEach(key => {\r\n otherFeatureGroup.layerPositions[key] = null\r\n });\r\n }\r\n if (this.layerPositions) {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if (key !== position) {\r\n this.layerPositions[key] = null; // it can be only on one side on small shower size\r\n }\r\n })\r\n }\r\n } else {\r\n if (this.layerPositions[position] && otherFeatureGroup && otherFeatureGroup.layerPositions[position] && !otherFeatureGroup.disabled) {\r\n const newPosition = position === SIDE_POSITIONS[0] ? SIDE_POSITIONS[1] : SIDE_POSITIONS[0];\r\n if (!this.layerPositions[newPosition]) {\r\n const matchingPositionFeature = otherFeatureGroup.getMatchingPositionFeature(newPosition, otherFeatureGroup.layerPositions[position]);\r\n if (matchingPositionFeature) {\r\n otherFeatureGroup.layerPositions[newPosition] = matchingPositionFeature;\r\n }\r\n }\r\n otherFeatureGroup.layerPositions[position] = null; //2) remove old soap dish position\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import React, {useEffect, useState} from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport {injectIntl} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\r\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\r\n\r\nimport MaterialSpinner from \"../../../../ui/materialSpinner\";\r\nimport {THUMBNAIL_SIZES} from \"../../../../../misc/utils\";\r\nimport {featureThumbnailUrl} from \"../../../../../misc/helpers\";\r\nimport {baseNewImagesPath} from \"../../../../assets\";\r\nimport {featureInterface} from \"../../../../../interfaces/featureInterface\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS, PRODUCT_JOURNEY_ANALYTIC_EVENTS} from \"../../../../../analytics\";\r\nimport {LOOK_OVERLAYS} from \"../../../core/constants\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\nimport {setLookOverlayOpened} from \"../../../../../actions/lookFunctions\";\r\n\r\nconst LookFeatureImage = (props) => {\r\n\r\n const {lookActiveFeature, intl, withoutGallery, featureIsLocked, setLookOverlayOpened} = props;\r\n const [isLoading, toggleLoader] = useState(true);\r\n const [galleryImages, setGalleryImages] = useState([]);\r\n const [activeImageIndex, setActiveImageIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n let featureGalleryImages = (lookActiveFeature.dbFeature.galleryEnabled && Array.isArray(lookActiveFeature.dbFeature.galleryImages)\r\n && lookActiveFeature.dbFeature.galleryImages.length) ? lookActiveFeature.dbFeature.galleryImages : [];\r\n setGalleryImages([{\r\n url: featureThumbnailUrl(lookActiveFeature) || `${baseNewImagesPath}images/image-not-found.png`,\r\n preview: featureThumbnailUrl(lookActiveFeature, THUMBNAIL_SIZES.medium)\r\n }, // main image thumbnail\r\n ...featureGalleryImages\r\n ]);\r\n setActiveImageIndex(0);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [lookActiveFeature]);\r\n\r\n const arrowClick = (analyticsLabel, nextIndex) => {\r\n Analytics.sendClickEvent(analyticsLabel);\r\n if (featureIsLocked) {\r\n setLookOverlayOpened(LOOK_OVERLAYS.leadCapture);\r\n return false\r\n }\r\n if (nextIndex !== activeImageIndex) {\r\n toggleLoader(true);\r\n setActiveImageIndex(nextIndex)\r\n }\r\n }\r\n\r\n const backButtonClick = () => {\r\n const analyticsLabel = IS_PRODUCT_JOURNEY\r\n ? PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeatureImageChangeLeft\r\n : LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeatureImageChangeLeft;\r\n const nextIndex = galleryImages[activeImageIndex - 1] ? activeImageIndex - 1 : galleryImages.length - 1\r\n arrowClick(analyticsLabel, nextIndex)\r\n };\r\n\r\n const nextButtonClick = () => {\r\n const analyticsLabel = IS_PRODUCT_JOURNEY\r\n ? PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeatureImageChangeRight\r\n : LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeatureImageChangeRight;\r\n const nextIndex = galleryImages[activeImageIndex + 1] ? activeImageIndex + 1 : 0\r\n arrowClick(analyticsLabel, nextIndex)\r\n };\r\n //\r\n // const thumbnailClick = (index) => {\r\n // props.toggleGalleryVisible(true);\r\n // props.setGalleryActiveImageIndex(index);\r\n // };\r\n\r\n // console.log(\"galleryImages\", galleryImages);\r\n const mainImageUrl = galleryImages[activeImageIndex];\r\n\r\n return (\r\n
\r\n {withoutGallery ? null : (\r\n \r\n \r\n \r\n )}\r\n
\r\n {isLoading || !mainImageUrl ? : null}\r\n
\r\n {mainImageUrl ? thumbnailClick(activeImageIndex)}\r\n src={mainImageUrl.url} onLoad={() => toggleLoader(false)} alt=\"\"/> : null}\r\n
\r\n
\r\n {withoutGallery ? null : (\r\n \r\n \r\n \r\n )}\r\n
\r\n )\r\n};\r\n\r\nLookFeatureImage.propTypes = {\r\n withoutGallery: PropTypes.bool,\r\n forFeature: PropTypes.shape(featureInterface),\r\n featureIsLocked: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n const {lookActiveFeature} = store.lookState;\r\n return {\r\n lookActiveFeature: ownProps.forFeature || lookActiveFeature,\r\n windowWidth: store.serverState.windowWidth,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookOverlayOpened\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookFeatureImage)\r\n);\r\n","import store from \"../store\";\r\nimport {getCommonVisualizerType} from \"../config\";\r\n\r\n/**\r\n *\r\n * @param feature {featureInterface} (object which has dbFeature property)\r\n * @param cartItems {[cartItemInterface]}\r\n * @param currentQuote {number}\r\n * @param allWizardsValues {array}\r\n * @return {object} // {quantity, isMatching}\r\n */\r\nexport default function featureIsMatchingDisplayLogic(feature, cartItems = [], currentQuote = 0, allWizardsValues) {\r\n\r\n let visible = feature.dbFeature.displayLogic.action === \"show\";\r\n let quantity = 0;\r\n const displayRules = feature.dbFeature.displayRules;\r\n\r\n if (Array.isArray(displayRules) && displayRules.length) {\r\n\r\n const currentQuoteCartItems = cartItems.filter(cItem => cItem.currentQuote === currentQuote);\r\n let visibleUpdated = false; // we need to rewrite this, when we have time\r\n\r\n for (let i = 0; i < displayRules.length; i++) {\r\n const rule = displayRules[i];\r\n let entityVal = 0;\r\n // if (!rule) {\r\n // console.log(\"feature\", feature);\r\n // }\r\n if (rule && rule.entityId) {\r\n if (rule.entityId === -1) { // Material (should look for added Countertops value)\r\n let countertopCount = 0;\r\n currentQuoteCartItems.forEach((cartItem) => {\r\n if (cartItem.partId.includes(\"countertop\")) {\r\n countertopCount += cartItem.quantity;\r\n }\r\n });\r\n entityVal = countertopCount\r\n } else {\r\n const matchingCartItem = currentQuoteCartItems.find((cartItem) => {\r\n return rule.entityId === cartItem.cartFeature.dbFeature.id\r\n });\r\n if (matchingCartItem) {\r\n entityVal = matchingCartItem.quantity\r\n }\r\n }\r\n let result = true;\r\n const\r\n entVal = parseInt(entityVal),\r\n ruleVal = parseInt(rule.value);\r\n switch (rule.comparison) {\r\n case \"<\":\r\n result = (entVal === 0 && ruleVal === 0 ) ? true : entVal < ruleVal;\r\n break;\r\n case \"<=\":\r\n result = entVal <= ruleVal;\r\n break;\r\n case \"=\":\r\n result = entVal === ruleVal;\r\n break;\r\n case \">\":\r\n result = entVal > ruleVal;\r\n break;\r\n case \">=\":\r\n result = entVal >= ruleVal;\r\n break;\r\n case \"wizard\":\r\n result = allWizardsValues && allWizardsValues.some(wizObject => {\r\n return wizObject.quoteIndex === currentQuote && wizObject.wizardSelectedValues\r\n && Object.keys(wizObject.wizardSelectedValues).some(key => {\r\n return wizObject.wizardSelectedValues[key].selectedFeature\r\n && wizObject.wizardSelectedValues[key].selectedFeature.dbFeature.id === rule.entityId\r\n })\r\n });\r\n break;\r\n }\r\n if (!result) {\r\n if (!visibleUpdated) {\r\n visible = !visible;\r\n visibleUpdated = true;\r\n }\r\n quantity = quantity + entityVal;\r\n }\r\n }\r\n }\r\n }\r\n if (visible && !quantity) {\r\n quantity = 1;\r\n }\r\n return {quantity, isMatching: visible};\r\n}\r\n\r\n/**\r\n *\r\n * @param feature {object} (object which has dbFeature property)\r\n * @param propertyName {string}\r\n * @param originalValue {any}\r\n * @param fromQtCategory {string} (cart feature should be calculated from the category it was added)\r\n * @return {number}\r\n */\r\nexport const checkIfInCatProperty = (feature, propertyName, originalValue, fromQtCategory) => {\r\n const finalValue = (typeof originalValue !== \"undefined\") ? originalValue : feature.dbFeature[propertyName];\r\n if (feature.inCatProperties && fromQtCategory && feature.inCatProperties.hasOwnProperty(fromQtCategory)\r\n && feature.inCatProperties[fromQtCategory].hasOwnProperty(propertyName)) {\r\n if (propertyName === \"inCatPrice\") {\r\n const {settings} = store.getState().fabricatorState;\r\n if (settings.showSalePrices && (typeof feature.inCatProperties[fromQtCategory].inCatFabCost == \"number\")) {\r\n return feature.inCatProperties[fromQtCategory].inCatFabCost\r\n }\r\n return (typeof feature.inCatProperties[fromQtCategory].inCatCost === \"number\")\r\n ? feature.inCatProperties[fromQtCategory].inCatCost\r\n : (typeof feature.inCatProperties[fromQtCategory].inCatPrice === \"number\")\r\n ? feature.inCatProperties[fromQtCategory].inCatPrice\r\n : finalValue\r\n }\r\n return feature.inCatProperties[fromQtCategory][propertyName] // inCatValue\r\n }\r\n return finalValue;\r\n}\r\n\r\n/**\r\n * returns old dbFeature property name for displaying/hiding the feature\r\n * @param forPage {string} quotingTool || visualizer\r\n * @param visualizerType {string}\r\n * @return {string}\r\n */\r\nexport const getOldHidePropertyName = (forPage = \"quotingTool\", visualizerType = getCommonVisualizerType()) => {\r\n let hidePropertyName = \"\";\r\n switch (visualizerType) {\r\n case \"kitchen\":\r\n hidePropertyName = (forPage === \"quotingTool\") ? \"hideFromFrontEnd\" : \"hideFromKitchenVisualizer\";\r\n break;\r\n case \"bathroom\":\r\n hidePropertyName = (forPage === \"quotingTool\") ? \"hideFromBVQT\" : \"hideFromBathroomVisualizer\";\r\n break;\r\n default:\r\n break;\r\n }\r\n return hidePropertyName\r\n}\r\n\r\n/**\r\n * common function for displaying/hiding the feature\r\n * @param feature {featureInterface}\r\n * @param forPage {string} quotingTool || visualizer\r\n * @param fromQtCategory {string} for specific category\r\n * @param visualizerType {string} for specific visualizerType\r\n * @return {boolean}\r\n */\r\nexport const isFeatureEnabled = (feature, forPage = \"quotingTool\", fromQtCategory = \"\", visualizerType = getCommonVisualizerType()) => {\r\n\r\n // if (feature.dbFeature.sharedFeatureName === \"53010 1 American Standard Ceramic\") { // for testing\r\n // debugger;//eslint-disable-line\r\n // }\r\n\r\n const hidePropertyName = getOldHidePropertyName(forPage, visualizerType);\r\n\r\n if (feature.inCatProperties && fromQtCategory && feature.inCatProperties.hasOwnProperty(fromQtCategory)\r\n && feature.inCatProperties[fromQtCategory].hasOwnProperty(hidePropertyName)) {\r\n return !feature.inCatProperties[fromQtCategory][hidePropertyName]\r\n }\r\n\r\n const toolSettings = feature.dbFeature.toolSettings;\r\n if (Array.isArray(toolSettings) && toolSettings.length) {\r\n const checkProperty = forPage === \"quotingTool\" ? \"enableQuotingTool\" : \"enableVisualizer\";\r\n return toolSettings.some(toolSettingsObject => toolSettingsObject.tool === visualizerType && toolSettingsObject[checkProperty])\r\n }\r\n\r\n return !feature.dbFeature[hidePropertyName]\r\n}\r\n\r\nconst setFabricatorFeatureCategoriesProperties = (feature) => {\r\n if (Array.isArray(feature.dbFeature.fabricatorFeatureCategories) && feature.dbFeature.fabricatorFeatureCategories.length && !feature.fabricatorFeatureCategoriesPropertiesAreSet) {\r\n const parent = feature.getParent();\r\n const layout = parent.layout || parent.getParent().layout; // Floor & ceiling doesn't have getParent() function\r\n if (layout.qtCategoriesList && parent.qtCategoryName) { // do not change to qtCategory since there will be a Maximum call stack\r\n if (!feature.inCatProperties) {\r\n feature.inCatProperties = {};\r\n }\r\n Object.keys(parent.qtCatProperties).forEach(qtCatName => {\r\n const inCat = layout.qtCategoriesList.find(qtCat => qtCat.name === qtCatName);\r\n if (!inCat) {\r\n return\r\n }\r\n for (let i = 0; i < feature.dbFeature.fabricatorFeatureCategories.length; i++) {\r\n const currentFabricatorFeatureCategory = feature.dbFeature.fabricatorFeatureCategories[i];\r\n if (currentFabricatorFeatureCategory.fabricatorFeatureCategoryId === inCat.id) {\r\n if (!feature.inCatProperties[qtCatName]) {\r\n feature.inCatProperties[qtCatName] = {};\r\n }\r\n if (currentFabricatorFeatureCategory.price !== null) {\r\n feature.inCatProperties[qtCatName].inCatPrice = currentFabricatorFeatureCategory.price;\r\n }\r\n if (currentFabricatorFeatureCategory.cost !== null) {\r\n feature.inCatProperties[qtCatName].inCatCost = currentFabricatorFeatureCategory.cost;\r\n }\r\n if (currentFabricatorFeatureCategory.fabricatorCost !== null) {\r\n feature.inCatProperties[qtCatName].inCatFabCost = currentFabricatorFeatureCategory.fabricatorCost; // not used for now\r\n }\r\n if (currentFabricatorFeatureCategory.displayName !== null) {\r\n feature.inCatProperties[qtCatName].inCatName = currentFabricatorFeatureCategory.displayName;\r\n }\r\n if (currentFabricatorFeatureCategory.complexLogic) {\r\n feature.inCatProperties[qtCatName].complexLogic = currentFabricatorFeatureCategory.complexLogic;\r\n }\r\n if (Array.isArray(currentFabricatorFeatureCategory.toolSettings) && currentFabricatorFeatureCategory.toolSettings.length) {\r\n const bvSetting = currentFabricatorFeatureCategory.toolSettings.find(setting => setting.tool === \"bathroom\");\r\n const kvSetting = currentFabricatorFeatureCategory.toolSettings.find(setting => setting.tool === \"kitchen\");\r\n if (bvSetting) {\r\n feature.inCatProperties[qtCatName].hideFromBathroomVisualizer = !bvSetting.enableVisualizer;\r\n feature.inCatProperties[qtCatName].hideFromBVQT = !bvSetting.enableQuotingTool;\r\n }\r\n if (kvSetting) {\r\n feature.inCatProperties[qtCatName].hideFromKitchenVisualizer = !kvSetting.enableVisualizer;\r\n feature.inCatProperties[qtCatName].hideFromFrontEnd = !kvSetting.enableQuotingTool;\r\n }\r\n } else { // old logic\r\n // feature.inCatProperties[qtCatName].hideFromBathroomVisualizer = currentFabricatorFeatureCategory.hideFromBV;\r\n feature.inCatProperties[qtCatName].hideFromBathroomVisualizer\r\n = feature.dbFeature.fabricatorFeatureCategories.every(fCat => fCat.hideFromBV) && feature.dbFeature.hideFromBV; // hide feature from visualizer only if it is disabeld everywhere\r\n feature.inCatProperties[qtCatName].hideFromBVQT = currentFabricatorFeatureCategory.hideFromBVQT;\r\n // feature.inCatProperties[qtCatName].hideFromKitchenVisualizer = currentFabricatorFeatureCategory.hideFromKV;\r\n feature.inCatProperties[qtCatName].hideFromKitchenVisualizer =\r\n feature.dbFeature.fabricatorFeatureCategories.every(fCat => fCat.hideFromKV) && feature.dbFeature.hideFromKV; // hide feature from visualizer only if it is disabeld everywhere\r\n feature.inCatProperties[qtCatName].hideFromFrontEnd = currentFabricatorFeatureCategory.hideFromKVQT;\r\n }\r\n break;\r\n }\r\n }\r\n });\r\n feature.fabricatorFeatureCategoriesPropertiesAreSet = true;\r\n }\r\n }\r\n return feature\r\n}\r\n\r\nexport const isVisibleForNavigation = (feature, withQuotingToolFeatures, forActiveQTCategory = \"\") => {\r\n\r\n if (!feature || !feature.dbFeature) { // 1) check for something unexpected (just in case)\r\n return false\r\n }\r\n\r\n feature = setFabricatorFeatureCategoriesProperties(feature); // 2) set properties from fabricatorFeatureCategories\r\n\r\n if (feature.dbFeature.autoAddToCart) {\r\n return document.kvConfig.userId === 157678 //hardcode https://tshopinc.quotekitchenandbath.com/kitchen?mode=dashboard they should have labor feature displayed\r\n } else if (withQuotingToolFeatures && (withQuotingToolFeatures !== \"all\") // for look and product journey - we show all features\r\n && !isFeatureEnabled(feature, \"quotingTool\", forActiveQTCategory)) {\r\n return false\r\n } else if (withQuotingToolFeatures && (withQuotingToolFeatures === \"all\") // for look and product journey - we show all features (enabled)\r\n && !isFeatureEnabled(feature, \"quotingTool\", forActiveQTCategory)\r\n && !isFeatureEnabled(feature, \"visualizer\", forActiveQTCategory)) {\r\n return false\r\n } else if (feature.dbFeature.displayLogic) {\r\n const storeState = store.getState();\r\n return featureIsMatchingDisplayLogic(\r\n feature,\r\n storeState.cartState.cartItems,\r\n storeState.quotesState.activeQuoteIndex,\r\n storeState.wizardState.allWizardsValues,\r\n )\r\n }\r\n return true\r\n};\r\n","import workspace from \"../../core/workspace\";\r\n\r\nexport class SQFTResourceController {\r\n resourceName = null\r\n\r\n constructor(resourceName) {\r\n this.resourceName = resourceName\r\n }\r\n\r\n getResources() {\r\n return workspace[this.resourceName];\r\n }\r\n\r\n addResource(resource) {\r\n workspace[this.resourceName].push(resource);\r\n\r\n return workspace[this.resourceName];\r\n }\r\n\r\n destroyResource(resource) {\r\n const index = workspace[this.resourceName].indexOf(resource);\r\n if (index > -1) {\r\n resource.destroy();\r\n workspace[this.resourceName].splice(index, 1);\r\n }\r\n\r\n return workspace[this.resourceName];\r\n }\r\n\r\n removeResource = (resource) => {\r\n const index = workspace[this.resourceName].indexOf(resource);\r\n if (index > -1) {\r\n workspace[this.resourceName].splice(index, 1);\r\n }\r\n\r\n return workspace[this.resourceName];\r\n };\r\n\r\n getResourceById(searchedId) {\r\n return workspace[this.resourceName].find(resource => resource.id === searchedId);\r\n }\r\n\r\n removeAllResources() {\r\n for (let resource of workspace[this.resourceName]) {\r\n resource.destroy()\r\n }\r\n workspace[this.resourceName] = [];\r\n }\r\n\r\n exportData() {\r\n const exportedData = [];\r\n for (let resource of workspace[this.resourceName]) {\r\n exportedData.push(resource.export ? resource.export() : resource);\r\n }\r\n return exportedData\r\n }\r\n\r\n importData(data) {\r\n workspace[this.resourceName] = [];\r\n for (let resource of data) {\r\n workspace[this.resourceName].push(resource.import ? resource.import() : resource);\r\n }\r\n }\r\n}\r\n\r\n","export const replaceIncorrectSymbols = (string) => {\r\n return string.replace(/â€\\x9D/, \"\").replace(/\\//, \"\").replace(\"”\", \"\")\r\n}\r\n\r\n/**\r\n * @param value {number}\r\n * @param percent {number}\r\n * @returns {number}\r\n */\r\nexport const getPercentage = (value, percent) => {\r\n return (value / 100) * percent;\r\n}\r\n\r\n/**\r\n * @param value {number}\r\n * @param fromTotal {number}\r\n * @returns {number} %\r\n */\r\nexport const getPercentAmount = (value, fromTotal) => {\r\n if (!value) {\r\n return 0\r\n }\r\n return (fromTotal / value) * 100;\r\n}\r\n\r\n/**\r\n * common func for checking if need to show\r\n * @param fabricatorSettings {object}\r\n * @param forCartItems {array}\r\n * @return {array} // {currency: \"USD\", cartItems: []}\r\n */\r\nexport const getDifferentCurrencyCartItems = (fabricatorSettings, forCartItems = []) => {\r\n let totalArray = [];\r\n if (!fabricatorSettings.useDifferentCurrencies || !forCartItems.length) {\r\n return totalArray\r\n }\r\n forCartItems.forEach(cartItem => {\r\n if (cartItem.cartFeature && cartItem.cartFeature.getFeatureCurrency) {\r\n const featureCurrency = cartItem.cartFeature.getFeatureCurrency();\r\n if (featureCurrency && (featureCurrency !== fabricatorSettings.currency)) {\r\n const existingGroup = totalArray.find(filterGroupObject => {\r\n return filterGroupObject.currency === featureCurrency\r\n });\r\n if (existingGroup) {\r\n existingGroup.cartItems.push(cartItem);\r\n } else {\r\n totalArray.push({\r\n currency: featureCurrency,\r\n cartItems: [cartItem]\r\n })\r\n }\r\n }\r\n }\r\n });\r\n // console.log(\"totalArray\", totalArray);\r\n return totalArray\r\n}\r\n","import {Part} from \"../part\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {LayoutType, ShowerComboTubType} from \"../constants\";\r\nimport { showerTubComboThumbnail, custom60in30X8Shower } from '../../../bvComponent/core/assets';\r\n\r\nimport BathTubLiner from \"../subparts/showerTubCombo/bathtubLiner\";\r\nimport ReplacementTub from \"../subparts/showerTubCombo/replacementTub\";\r\nimport WalkInTub from \"../subparts/showerTubCombo/walkInTub\";\r\nimport JettedTub from \"../subparts/showerTubCombo/jettedTub\";\r\nimport WallConfiguration from \"../subparts/showerTubCombo/wallConfiguration\";\r\nimport {fixDbFeatureProperties} from \"../../../../misc/helpers\";\r\nimport WalkInTubFixture from \"../subparts/showerTubCombo/walkInTubFixture\";\r\nimport ReplacementTubFixture from \"../subparts/showerTubCombo/replacementTubFixture\";\r\n\r\nexport class ShowerTubCombo extends Part {\r\n static id = 'Shower Tub Combo';\r\n\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.showerTubComboIsActive = false; // param needed to check if shower is still active or not\r\n this.menuType = PartMenuType.Complex;\r\n this.partThumbnail = showerTubComboThumbnail;\r\n this.partName = 'Shower Tub Combo';\r\n this.translateId = \"visualizer.bathroom.shower_tub_combo\";\r\n this.relatedItems = [];\r\n this.wallConfiguration = null;\r\n this.bathTubLiner = null;\r\n this.replacementTub = null;\r\n this.replacementTubFixture = null;\r\n this.walkInTub = null;\r\n this.jettedTub = null;\r\n\r\n // Kohler hardcode, they don't have bathtub_liner\r\n this.bottomTub = ShowerComboTubType.replacement_tub;\r\n this.leftShowerWallType = 'Pony';\r\n this.showerComboSize = '60in';\r\n this.relatedGroupNames = [\"Bathtub Liner\", \"Replacement Tub\", \"Walk In Tub\", \"Jetted Tub\", \"Replacement tub Fixture\"];\r\n }\r\n\r\n load(dbFeature, loadFeature = true) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Bathtub Liner\":\r\n relatedItemName = \"bathTubLiner\";\r\n RelatedItemClass = BathTubLiner;\r\n break;\r\n case \"Replacement Tub\":\r\n relatedItemName = \"replacementTub\";\r\n RelatedItemClass = ReplacementTub;\r\n break;\r\n case \"Walk In Tub Fixture\":\r\n relatedItemName = \"walkInTubFixture\";\r\n RelatedItemClass = WalkInTubFixture;\r\n break;\r\n case \"Replacement tub Fixture\":\r\n case \"Replacement Tub Fixture\":\r\n relatedItemName = \"replacementTubFixture\";\r\n RelatedItemClass = ReplacementTubFixture;\r\n break;\r\n case \"Walk In Tub\":\r\n case \"Walk in Tub\":\r\n relatedItemName = \"walkInTub\";\r\n RelatedItemClass = WalkInTub;\r\n break;\r\n case \"Jetted Tub\":\r\n relatedItemName = \"jettedTub\";\r\n RelatedItemClass = JettedTub;\r\n break;\r\n }\r\n return this.loadCommon(relatedItemName, RelatedItemClass, dbFeature, loadFeature)\r\n }\r\n\r\n setSpecificRules() {\r\n if (!this.wallConfiguration) {\r\n this.wallConfiguration = new WallConfiguration(true);\r\n this.wallConfiguration.counts = {\r\n allLayoutFeaturesCount: 0,\r\n largeLayoutFeaturesCount: 0,\r\n smallLayoutFeaturesCount: 0\r\n };\r\n this.relatedItems.unshift(this.wallConfiguration);\r\n this.wallConfiguration.getParent = () => this;\r\n }\r\n const wallConfigurations = [\r\n // ShowerTubCombo.createCustomWallConfiguration(\r\n // custom60inPonyShower,\r\n // \"Pony Wall 60in\",\r\n // \"Pony\",\r\n // \"60in\",\r\n // {\r\n // \"ShowerSize\": ['60in'],\r\n // \"CountertopSize\": [\"20in\", \"24in\", \"30in\", \"36in\", \"48in\", \"60in\", \"72in\"],\r\n // },\r\n // this,\r\n // 100000\r\n // ),\r\n ShowerTubCombo.createCustomWallConfiguration(\r\n custom60in30X8Shower,\r\n \"Full Wall 60in\",\r\n \"30X8\",\r\n \"60in\",\r\n {\r\n \"ShowerSize\": ['60in'],\r\n \"CountertopSize\": [\"20in\", \"24in\", \"30in\", \"36in\", \"48in\", \"60in\", \"72in\"],\r\n },\r\n this,\r\n 100001\r\n ),\r\n ];\r\n Object.keys(LayoutType).forEach(layoutType => {\r\n this.wallConfiguration.featuresList[layoutType] = wallConfigurations;\r\n if (this.wallConfiguration.counts) {\r\n this.wallConfiguration.counts[layoutType.toLowerCase() + \"LayoutFeaturesCount\"]++;\r\n }\r\n });\r\n }\r\n\r\n static createCustomWallConfiguration(customThumbnail, name, leftShowerWallType, showerComboSize, metaData, parent, id) {\r\n const conf = new WallConfiguration();\r\n conf.partName = name;\r\n conf.showerBodyId = name.toLowerCase().replace(/ /gi, \"-\");\r\n conf.dbFeature = {};\r\n conf.featureName = name;\r\n conf.groupName = \"Wall Configuration\";\r\n conf.showerComboSize = showerComboSize;\r\n // conf.parent = parent;\r\n conf.getParent = () => parent.wallConfiguration;\r\n conf.metaData = metaData;\r\n conf.leftShowerWallType = leftShowerWallType;\r\n conf.customThumbnail = customThumbnail;\r\n conf.dbFeature = fixDbFeatureProperties({\r\n metaData,\r\n id,\r\n unlocked: true\r\n });\r\n return conf;\r\n }\r\n\r\n setLayers(layout, placeholdersNeeded) {\r\n\r\n if (!this.showerTubComboIsActive) {\r\n return null\r\n }\r\n\r\n return super.setLayers(layout, placeholdersNeeded)\r\n }\r\n\r\n subParts() {\r\n\r\n let subParts = [\r\n ...this.getRelatedItems().filter(item => item.visible).map(_ => new DesignNavigationItem(_.partName, _)),\r\n ...this.layout.parts.Shower.subParts().filter(subPart => {\r\n return (subPart.text === \"Fixture\")\r\n || (subPart.text === \"Shower Head\")\r\n || (subPart.text === \"Shower Walls\")\r\n || (subPart.text === \"Shower Walls Accent\")\r\n || (subPart.text === \"Shower Door\")\r\n || (subPart.text === \"Handle\")\r\n || (subPart.text === \"Pony Wall\")\r\n || (subPart.text === \"Pony Wall Cap\")\r\n || (subPart.text === \"Pony Wall Glass\")\r\n })\r\n ];\r\n\r\n if (this.bottomTub === ShowerComboTubType.walk_in_tub) {\r\n subParts = subParts.filter(subPart => {\r\n return subPart.part.partId !== \"shower_door\" && subPart.part.partId !== \"shower_door_handle\" && subPart.part.partId !== \"shower_fixture\"\r\n })\r\n }\r\n\r\n return subParts\r\n }\r\n\r\n getShowerRelatedItems() {\r\n return this.layout.parts.Shower.getRelatedItems().filter(relItem => {\r\n return (relItem.partId === \"shower_fixture\")\r\n || (relItem.partId === \"shower_head\")\r\n || (relItem.partId === \"shower_wall\")\r\n || (relItem.partId === \"shower_wall_accent\")\r\n || (relItem.partId === \"shower_door\")\r\n || (relItem.partId === \"shower_door_handle\")\r\n || (relItem.partId === \"pony_wall\")\r\n || (relItem.partId === \"pony_wall_cap\")\r\n || (relItem.partId === \"pony_wall_glass\")\r\n })\r\n }\r\n\r\n setShowerTubCombo() {\r\n this.showerTubComboIsActive = true;\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false\r\n }\r\n\r\n handleSubPartClick() {}\r\n\r\n setZIndex(zIndexes) {\r\n if (!this.showerTubComboIsActive) {\r\n return null\r\n }\r\n\r\n if(zIndexes)\r\n this.relatedItems.forEach(_ => _.setZIndex(zIndexes));\r\n }\r\n\r\n setActiveTub(bottomTub) {\r\n this.bottomTub = bottomTub;\r\n }\r\n\r\n showerSize() {\r\n return this.showerComboSize\r\n }\r\n\r\n showerDimensions() {\r\n return this.leftShowerWallType\r\n }\r\n\r\n setShowerSize(leftShowerWallType, showerComboSize) {\r\n this.leftShowerWallType = leftShowerWallType;\r\n this.showerComboSize = showerComboSize;\r\n }\r\n\r\n}\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from 'react-redux';\r\nimport $ from \"jquery\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport {setCountertopsApplyTo, setCountertopsApplyToBathroom} from \"../../../actions/navigationFunctions\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport {loaderDisable, loaderEnable} from \"../../ui/loaderView\";\r\nimport Navigation from \"../../visComponents/navigation/navigation\";\r\nimport ActionTypes from \"../../../misc/actionTypes\";\r\nimport store from \"../../../store\";\r\nimport {COUNTERTOP_GROUP} from \"../core/constants\";\r\nimport UiSelect from \"../../ui/select\";\r\nimport Analytics from '../../../analytics';\r\nimport {COUNTERTOP_GROUP_BATHROOM} from \"../../bvSceneComponent/core/constants\";\r\nimport {getFeatureGroupName} from \"../../../misc/helpers\";\r\nimport {updateCanvasCount} from \"../../../actions/actionFunctions\";\r\nimport {getCommonVisualizerType} from \"../../../config\";\r\nimport {featureHasSelectedFilters, getAllFeatureFilters, getFilterGroupValues} from \"../../../misc/utils\";\r\n\r\nconst getIsBathroom = () => {\r\n return getCommonVisualizerType() === \"bathroom\"\r\n};\r\n\r\nclass CountertopSwitchers extends Component {\r\n\r\n static propTypes = {\r\n activeSubPart: PropTypes.object.isRequired,\r\n isMobile: PropTypes.bool,\r\n isMaterials: PropTypes.bool,\r\n showAsDropdown: PropTypes.bool,\r\n };\r\n\r\n componentDidMount() {\r\n this.setToggledByUserProperty(this.props);\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.activeSubPart.partId !== this.props.activeSubPart.partId) {\r\n this.setToggledByUserProperty(nextProps);\r\n }\r\n }\r\n\r\n setToggledByUserProperty = (props) => {\r\n const currentCategoryPartId = props.activeSubPart.partId;\r\n\r\n const isBathroom = getIsBathroom();\r\n\r\n const COUNTERTOPGROUPS = isBathroom ? COUNTERTOP_GROUP_BATHROOM : COUNTERTOP_GROUP;\r\n const applyTo = isBathroom ? this.props.countertopsApplyToBathroom : this.props.countertopsApplyTo;\r\n\r\n COUNTERTOPGROUPS.forEach(partId => {\r\n if (partId === currentCategoryPartId) {\r\n if (COUNTERTOPGROUPS.some(newPartId => {\r\n return (newPartId !== currentCategoryPartId) && !applyTo[newPartId].includes(currentCategoryPartId)\r\n })) {\r\n props.activeSubPart.toggleSwitchedOffByUser = true;\r\n }\r\n } else {\r\n if (!applyTo[partId].includes(currentCategoryPartId)) {\r\n const neededSubPart = getCurrentLayout().getSubPartByPartId(partId);\r\n if (neededSubPart) {\r\n neededSubPart.part.toggleSwitchedOffByUser = true;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n getUpdatedCountertopSwitcherButtons = (partId) => {\r\n const applyTo = getIsBathroom() ? this.props.countertopsApplyToBathroom : this.props.countertopsApplyTo;\r\n let countertopsApplyTo = applyTo[this.props.activeSubPart.partId];\r\n const existingIndex = countertopsApplyTo.findIndex(countertopsApplyToPartId => countertopsApplyToPartId === partId);\r\n if (existingIndex > -1) {\r\n countertopsApplyTo.splice(existingIndex, 1)\r\n } else {\r\n countertopsApplyTo.push(partId)\r\n }\r\n let countertopsApplyTo2 = applyTo[partId];\r\n const existingIndex2 = countertopsApplyTo2.findIndex(countertopsApplyToPartId => countertopsApplyToPartId === this.props.activeSubPart.partId);\r\n if (existingIndex > -1) {\r\n countertopsApplyTo2.splice(existingIndex2, 1)\r\n } else {\r\n countertopsApplyTo2.push(this.props.activeSubPart.partId)\r\n }\r\n this.setToggleOffProperies(partId, countertopsApplyTo, countertopsApplyTo2);\r\n return {\r\n [this.props.activeSubPart.partId]: countertopsApplyTo,\r\n [partId]: countertopsApplyTo2\r\n }\r\n };\r\n\r\n static updateCountertopSwitcherButtons = (partId, currentGroupPartId, propsCountertopsApplyTo = {}) => {\r\n let countertopsApplyTo = propsCountertopsApplyTo[currentGroupPartId];\r\n const existingIndex = countertopsApplyTo.findIndex(countertopsApplyToPartId => countertopsApplyToPartId === partId);\r\n if (existingIndex > -1) {\r\n countertopsApplyTo.splice(existingIndex, 1)\r\n } else {\r\n countertopsApplyTo.push(partId)\r\n }\r\n let countertopsApplyTo2 = propsCountertopsApplyTo[partId];\r\n const existingIndex2 = countertopsApplyTo2.findIndex(countertopsApplyToPartId => countertopsApplyToPartId === currentGroupPartId);\r\n if (existingIndex > -1) {\r\n countertopsApplyTo2.splice(existingIndex2, 1)\r\n } else {\r\n countertopsApplyTo2.push(currentGroupPartId)\r\n }\r\n const setApplyTo = getIsBathroom() ? setCountertopsApplyToBathroom : setCountertopsApplyTo;\r\n store.dispatch(setApplyTo({\r\n [currentGroupPartId]: countertopsApplyTo,\r\n [partId]: countertopsApplyTo2\r\n }));\r\n };\r\n\r\n setToggleOffProperies = (partId, countertopsApplyTo, countertopsApplyTo2) => {\r\n this.props.activeSubPart.toggleSwitchedOffByUser = !countertopsApplyTo.includes(partId);\r\n const neededSubPart = getCurrentLayout().getSubPartByPartId(partId);\r\n if (neededSubPart) {\r\n neededSubPart.part.toggleSwitchedOffByUser = !countertopsApplyTo2.includes(this.props.activeSubPart.partId);\r\n }\r\n };\r\n\r\n toggleCountertopsApplyTo = (partId) => {\r\n Analytics.sendClickEvent('countertop-apply-to-' + partId);\r\n const setApplyTo = getIsBathroom() ? this.props.setCountertopsApplyToBathroom : this.props.setCountertopsApplyTo;\r\n setApplyTo(this.getUpdatedCountertopSwitcherButtons(partId));\r\n };\r\n\r\n getButtonName = (partId, layout) => {\r\n const {intl, fabricatorData} = this.props;\r\n if (intl.locale !== \"en-EN\") {\r\n const featureGroup = layout.getFeatureGroupByPartId(partId);\r\n if (featureGroup) {\r\n return getFeatureGroupName(featureGroup, intl, fabricatorData)\r\n }\r\n }\r\n switch (partId) {\r\n case \"countertop\":\r\n case \"vanity_countertop\":\r\n return \"countertop\";\r\n case \"backsplash\":\r\n case \"vanity_backsplash\":\r\n return \"backsplash\";\r\n case \"center_island_countertop\":\r\n return \"center island\";\r\n default:\r\n return \"\"\r\n }\r\n };\r\n\r\n static checkForTileBacksplash = (clickedFeature) => {\r\n if (getIsBathroom() || (clickedFeature.partId !== \"backsplash\")) {\r\n return false\r\n }\r\n const {filterState} = store.getState();\r\n if (!filterState || !Array.isArray(filterState.filterGroups)) {\r\n return false\r\n }\r\n const typeGroup = filterState.filterGroups.find(group => group.name === \"Type\");\r\n if (!typeGroup || !typeGroup.id || !typeGroup.values) {\r\n return false\r\n }\r\n const featureFilters = getAllFeatureFilters(clickedFeature);\r\n if (!featureFilters || !Array.isArray(featureFilters[typeGroup.id])) {\r\n return false\r\n }\r\n return [\"Tile\", \"Mosaic\", \"Linear Mosaic\", \"Mosaic Tiles\"].some(filterName => {\r\n const tileFilterValue = typeGroup.values.find(val => val.value === filterName);\r\n return tileFilterValue && featureFilters[typeGroup.id].includes(tileFilterValue.id)\r\n })\r\n }\r\n\r\n static applyAllCountertops = (navigationItemPart, ignoreLocked, passedArrayApplyTo = null, setCurrentFeature = false) => {\r\n const isBathroom = getIsBathroom();\r\n const COUNTERTOPGROUPS = isBathroom ? COUNTERTOP_GROUP_BATHROOM : COUNTERTOP_GROUP;\r\n const propsCountertopsApplyTo = store.getState().navigationState[\r\n isBathroom ? \"countertopsApplyToBathroom\" : \"countertopsApplyTo\"\r\n ];\r\n const clickedPartId = navigationItemPart.partId;\r\n const layout = getCurrentLayout();\r\n const countertopsApplyTo = passedArrayApplyTo\r\n || propsCountertopsApplyTo[clickedPartId] ? [...propsCountertopsApplyTo[clickedPartId]] : [];\r\n const existingIndex = countertopsApplyTo.findIndex(countertopsApplyToPartId => countertopsApplyToPartId === clickedPartId);\r\n if (existingIndex > -1) {\r\n countertopsApplyTo.splice(existingIndex, 1); // remove already clicked partId\r\n }\r\n const missingFeatures = [];\r\n layout.getFeatures().forEach(parentGroup => {\r\n let relatedItems = parentGroup.relatedItems;\r\n relatedItems.forEach((relatedItem) => {\r\n const currentPartId = relatedItem.partId;\r\n if (COUNTERTOPGROUPS.includes(currentPartId) && (currentPartId !== clickedPartId)\r\n && (countertopsApplyTo.includes(relatedItem.partId) || !relatedItem.toggleSwitchedOffByUser)) {\r\n const navigationItemName = navigationItemPart.getCountertopGroupsSplittedFeatureName();\r\n if (document.kvConfig.toolVersion !== 4) {\r\n const {navigationState} = store.getState();\r\n if (!navigationState.useFeaturesLightRequest.countertops\r\n && (!Array.isArray(relatedItem.alreadyRequestedFeatureNames) || !relatedItem.alreadyRequestedFeatureNames.includes(navigationItemName))) {\r\n // we should request every time! yes, because they have different manufacturers, and the same name\r\n missingFeatures.push({relatedItem, navigationItemName, ignoreLocked, fromFeature: navigationItemPart});\r\n return false\r\n }\r\n }\r\n let neededFeature = CountertopSwitchers.getNeededFeatureFromNavItems(navigationItemPart, relatedItem);\r\n if (!neededFeature && (document.kvConfig.visualizerType === \"Kitchen\")\r\n && !layout.getCurrentLayoutAbbreviation().includes(\"I\") && (currentPartId === \"center_island_countertop\")) {\r\n neededFeature = relatedItem.featuresList[\"LShapeWithPeninsulaWithIsland\"]\r\n && relatedItem.featuresList[\"LShapeWithPeninsulaWithIsland\"].find((feature) => {\r\n const featureName = feature.getCountertopGroupsSplittedFeatureName();\r\n return featureName === navigationItemName\r\n });\r\n if (neededFeature) {\r\n neededFeature = {part: neededFeature}\r\n }\r\n }\r\n if (neededFeature && !neededFeature.part.notAvailableInVisualizer) {\r\n if (setCurrentFeature) {\r\n relatedItem.activeFeatureBeforeAllWalls = relatedItem.activeFeature;\r\n }\r\n neededFeature.part.clickFromAllWalls(ignoreLocked);\r\n if (!relatedItem.toggleSwitchedOffByUser && !countertopsApplyTo.includes(currentPartId)) {\r\n CountertopSwitchers.updateCountertopSwitcherButtons(currentPartId, clickedPartId, propsCountertopsApplyTo);\r\n }\r\n } else {\r\n if (CountertopSwitchers.checkForTileBacksplash(navigationItemPart)) {\r\n return false\r\n }\r\n missingFeatures.push({relatedItem, navigationItemName, ignoreLocked, fromFeature: navigationItemPart})\r\n }\r\n }\r\n })\r\n });\r\n return CountertopSwitchers.getMissingFeaturesAndClickThem(missingFeatures, navigationItemPart, setCurrentFeature);\r\n };\r\n\r\n static getNeededFeatureFromNavItems = (fromFeature, featureGroup) => {\r\n let navItems;\r\n const isNewKitchen = (document.kvConfig.toolVersion !== 4);\r\n const isNewKitchenBacksplash = featureGroup.partId === \"backsplash\" && isNewKitchen;\r\n navItems = featureGroup.navigationSubItems();\r\n const navigationItemName = fromFeature.getCountertopGroupsSplittedFeatureName();\r\n let matchingFeatures = navItems.filter(navFeature => {\r\n if (navFeature.part.notAvailableInVisualizer) {\r\n return false\r\n }\r\n const featureName = navFeature.part.getSplittedFeatureName();\r\n const featureName2 = navFeature.part.getCountertopGroupsSplittedFeatureName();\r\n return featureName && (featureName === navigationItemName || featureName2 === navigationItemName)\r\n });\r\n if (matchingFeatures.length > 1 && isNewKitchen) {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n const manufacturerFilterGroup = filterGroups.find(group => (group.name || \"\").trim() === \"Manufacturer\");\r\n if (manufacturerFilterGroup) {\r\n const featureManValues = getFilterGroupValues(fromFeature, manufacturerFilterGroup);\r\n if (featureManValues && featureManValues.length) {\r\n const withSameManufacturerFeatures = matchingFeatures.filter(navItem => featureHasSelectedFilters(navItem.part, [{\r\n filterGroupId: manufacturerFilterGroup.id,\r\n filterId: featureManValues[0],\r\n }]));\r\n if (withSameManufacturerFeatures.length) {\r\n console.log(\"withSameManufacturerFeatures FOUBD!!\", withSameManufacturerFeatures);\r\n matchingFeatures = withSameManufacturerFeatures;\r\n }\r\n }\r\n }\r\n }\r\n if (isNewKitchenBacksplash) {\r\n const currentHeight = featureGroup.getCurrentActiveFeatureType();\r\n if (currentHeight) {\r\n const sameHeight = matchingFeatures.filter(navItem => featureGroup.getFeatureBacksplashType(navItem.part) === currentHeight);\r\n if (sameHeight.length) {\r\n console.log(\"Same Height Found\", sameHeight);\r\n return sameHeight[0]\r\n }\r\n }\r\n }\r\n return matchingFeatures[0] || null\r\n }\r\n\r\n static getMissingFeaturesAndClickThem = (missingFeatures, navigationItemPart, setCurrentFeature = false) => {\r\n if (missingFeatures.length) {\r\n const isBathroom = getIsBathroom();\r\n window.requestInProcess = true;\r\n loaderEnable();\r\n const promises = missingFeatures.map((missingFeatureObject) => {\r\n const relatedItem = missingFeatureObject.relatedItem;\r\n return Navigation.searchFeaturesByName(relatedItem, missingFeatureObject.navigationItemName)\r\n .then(response => {\r\n function turnOffToggles() { // turn off the toggles if feature isn't found\r\n const navItemParent = navigationItemPart.getParent();\r\n if (!navItemParent.toggleSwitchedOffByUser) { // current category\r\n let countertopsApplyTo = store.getState().navigationState[\r\n isBathroom ? \"countertopsApplyToBathroom\" : \"countertopsApplyTo\"\r\n ];\r\n const existingIndex = countertopsApplyTo[navigationItemPart.partId].findIndex(countertopsApplyToPartId => countertopsApplyToPartId === relatedItem.partId);\r\n if (existingIndex > -1) {\r\n countertopsApplyTo[navigationItemPart.partId].splice(existingIndex, 1);\r\n }\r\n if (!relatedItem.toggleSwitchedOffByUser) { // turn off the toggles if feature isn't found (mirrored category)\r\n const existingIndex = countertopsApplyTo[relatedItem.partId].findIndex(countertopsApplyToPartId => countertopsApplyToPartId === navigationItemPart.partId);\r\n if (existingIndex > -1) {\r\n countertopsApplyTo[relatedItem.partId].splice(existingIndex, 1);\r\n }\r\n }\r\n const setApplyTo = isBathroom ? setCountertopsApplyToBathroom : setCountertopsApplyTo;\r\n store.dispatch(setApplyTo(countertopsApplyTo));\r\n }\r\n }\r\n if (response && response.length) {\r\n let neededFeature = CountertopSwitchers.getNeededFeatureFromNavItems(missingFeatureObject.fromFeature, relatedItem);\r\n if (neededFeature) {\r\n let countertopsApplyTo = store.getState().navigationState[\r\n isBathroom ? \"countertopsApplyToBathroom\" : \"countertopsApplyTo\"\r\n ];\r\n if (setCurrentFeature) {\r\n relatedItem.activeFeatureBeforeAllWalls = relatedItem.activeFeature;\r\n }\r\n neededFeature.part.clickFromAllWalls(missingFeatureObject.ignoreLocked);\r\n if (!relatedItem.toggleSwitchedOffByUser && !countertopsApplyTo[navigationItemPart.partId].includes(relatedItem.partId)) {\r\n CountertopSwitchers.updateCountertopSwitcherButtons(relatedItem.partId, navigationItemPart.partId, countertopsApplyTo, false);\r\n }\r\n } else {\r\n turnOffToggles()\r\n }\r\n } else {\r\n turnOffToggles()\r\n }\r\n if (!relatedItem.alreadyRequestedFeatureNames) {\r\n relatedItem.alreadyRequestedFeatureNames = [];\r\n }\r\n relatedItem.alreadyRequestedFeatureNames.push(missingFeatureObject.navigationItemName);\r\n return response\r\n });\r\n });\r\n return Promise.all(promises)\r\n .then(() => {\r\n window.requestInProcess = false;\r\n if (document.kvConfig.toolVersion !== 4) {\r\n loaderDisable();\r\n return\r\n }\r\n $(window).trigger(ActionTypes.CHANGE_LAYOUT); // update canvas\r\n store.dispatch(updateCanvasCount());\r\n setTimeout(() => {\r\n $(window).trigger(ActionTypes.CHANGE_LAYOUT); // update canvas\r\n loaderDisable();\r\n }, 0)\r\n // forceUpdate if needed\r\n });\r\n }\r\n };\r\n\r\n getValueText = () => {\r\n if (this.props.activeSubPart.partId === \"backsplash\") {\r\n if (this.props.windowWidth < 900) {\r\n return \r\n } else {\r\n return \r\n }\r\n } else {\r\n if (this.props.windowWidth < 620) {\r\n return \r\n } else if (this.props.windowWidth < 680) {\r\n return \r\n } else {\r\n return \r\n }\r\n }\r\n };\r\n\r\n buttonIsDisabled = (partId) => {\r\n const layout = getCurrentLayout();\r\n return this.props.activeSubPart.partId === partId\r\n || (document.kvConfig.visualizerType === \"Kitchen\" && partId === \"center_island_countertop\"\r\n && !layout.getCurrentLayoutAbbreviation().includes(\"I\"));\r\n }\r\n\r\n renderDropDown = () => {\r\n const isBathroom = getIsBathroom();\r\n const COUNTERTOPGROUPS = isBathroom ? COUNTERTOP_GROUP_BATHROOM : COUNTERTOP_GROUP;\r\n const applyTo = isBathroom ? this.props.countertopsApplyToBathroom : this.props.countertopsApplyTo;\r\n const countertopsApplyTo = applyTo[this.props.activeSubPart.partId];\r\n\r\n if (!countertopsApplyTo) {\r\n return null\r\n }\r\n\r\n const layout = getCurrentLayout();\r\n\r\n return (\r\n \r\n {COUNTERTOPGROUPS.map(partId => {\r\n const disabledButton = this.buttonIsDisabled(partId);\r\n return (\r\n
  • \r\n disabledButton ? false : this.toggleCountertopsApplyTo(partId)}/>\r\n disabledButton ? false : this.toggleCountertopsApplyTo(partId)}>\r\n {this.getButtonName(partId, layout)}\r\n \r\n
  • \r\n )\r\n })}\r\n
    \r\n )\r\n };\r\n\r\n render() {\r\n\r\n if (this.props.showAsDropdown) {\r\n return this.renderDropDown()\r\n }\r\n\r\n const isBathroom = getIsBathroom();\r\n const COUNTERTOPGROUPS = isBathroom ? COUNTERTOP_GROUP_BATHROOM : COUNTERTOP_GROUP;\r\n const applyTo = isBathroom ? this.props.countertopsApplyToBathroom : this.props.countertopsApplyTo;\r\n const countertopsApplyTo = applyTo[this.props.activeSubPart.partId];\r\n const layout = getCurrentLayout();\r\n\r\n return (\r\n
    \r\n
    Apply to
    \r\n
      \r\n {COUNTERTOPGROUPS.map(partId => {\r\n const hideButton = this.buttonIsDisabled(partId);\r\n return hideButton ? null : (\r\n
    • this.toggleCountertopsApplyTo(partId)}>\r\n \r\n {this.getButtonName(partId, layout)}\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 = (store) => ({\r\n countertopsApplyTo: store.navigationState.countertopsApplyTo,\r\n countertopsApplyToBathroom: store.navigationState.countertopsApplyToBathroom,\r\n windowWidth: store.serverState.windowWidth,\r\n fabricatorData: store.fabricatorState,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n setCountertopsApplyTo,\r\n setCountertopsApplyToBathroom\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(CountertopSwitchers)\r\n)\r\n","import {Component} from 'react';\r\nimport invert from \"lodash/invert\";\r\n\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport {getBvGroupFeatures, getBvGroupFilterValues} from \"../../../api/server-api\";\r\nimport {loaderDisable, loaderEnable} from \"../../ui/loaderView\";\r\nimport {IS_OFFLINE_MODE, USE_SERVER_CACHING} from \"../../../config\";\r\nimport {\r\n COUNTERTOP_GROUP,\r\n LayoutAbbreviations,\r\n LayoutType as LayoutTypes\r\n} from \"../../kvComponent/core/constants\";\r\nimport {setActivePartFilterValues} from \"../../../misc/filtersFunctions\";\r\nimport {checkIfLookFeaturesReceived, getAdditionalFeaturesOnScroll, getFeaturesPageSize} from \"../../../api/look-api\";\r\nimport store from \"../../../store\";\r\nimport {updateCanvasCount} from \"../../../actions/actionFunctions\";\r\n\r\nexport default class NavigationRequests extends Component {\r\n\r\n getBvPartFeatures = async (item, navigationItem, callBack = null) => {\r\n if (!item.part.createdManually && !item.part.requestInProgress) {\r\n const itemPart = item.part;\r\n const layout = itemPart && itemPart.getParent\r\n ? itemPart.getParent().layout || getCurrentLayout()\r\n : getCurrentLayout();\r\n let responseArray;\r\n if (layout.isNewLayout) {\r\n responseArray = await getAdditionalFeaturesOnScroll(itemPart, false);\r\n } else {\r\n const pageSize = getFeaturesPageSize(itemPart);\r\n const layoutAbbr = layout.getCurrentLayoutAbbreviation();\r\n const nextFeaturesPage = itemPart.getNextPageToLoad(layoutAbbr);\r\n itemPart.requestInProgress = true;\r\n const response = await getBvGroupFeatures(itemPart.dbName || itemPart.partName, nextFeaturesPage, pageSize);\r\n\r\n responseArray = Array.isArray(response) ? response : [];\r\n\r\n itemPart.requestInProgress = false;\r\n // if (location.port === '9007' || document.kvConfig.kioskMode) {\r\n // console.log('response', response.data);\r\n // }\r\n itemPart.setGroupFeatures(responseArray, pageSize, true, layoutAbbr, nextFeaturesPage);\r\n }\r\n if (navigationItem) {\r\n this.setState({\r\n [navigationItem]: item,\r\n render: false,\r\n showFilterSelection: true\r\n }, () => {\r\n this.setState({\r\n render: true,\r\n });\r\n this.forceUpdate()\r\n });\r\n }\r\n if (callBack) {\r\n callBack()\r\n }\r\n if (this._isMounted) {\r\n this.forceUpdate()\r\n }\r\n\r\n return responseArray\r\n }\r\n };\r\n\r\n getRelatedItemFeatures = (relatedItem) => {\r\n return this.getBvPartFeatures({\r\n part: relatedItem,\r\n text: relatedItem.partName\r\n }, \"\");\r\n };\r\n\r\n checkIfAllFeaturesReceived = (item, navigationItem, callBack, materialsPage) => {\r\n if (IS_OFFLINE_MODE) {\r\n return false\r\n }\r\n const itemPart = item.part;\r\n const layout = itemPart && itemPart.getParent\r\n ? itemPart.getParent().layout || getCurrentLayout()\r\n : getCurrentLayout();\r\n const layoutAbbr = layout.getCurrentLayoutAbbreviation();\r\n if (!(layout.isNewLayout && (itemPart && (itemPart.partId === \"range\" || itemPart.partId === \"stove\")))\r\n && (!itemPart.allFeaturesReceived || (itemPart.nextFeaturesPageToLoadArray && !itemPart.nextFeaturesPageToLoadArray[layoutAbbr].page))) {\r\n this.getBvPartFeatures(item, navigationItem, callBack);\r\n }\r\n if (layout.isNewLayout) {\r\n checkIfLookFeaturesReceived(itemPart, true).then(() => {\r\n if (materialsPage) {\r\n if (this._isMounted) {\r\n this.forceUpdate()\r\n }\r\n } else {\r\n callBack ? callBack() : this.forceUpdate();\r\n }\r\n }); // it has all needed feature groups already there\r\n }\r\n const showerParent = layout.parts[\"Shower\"];\r\n const wallParent = layout.parts[\"Walls\"];\r\n const showerComboParent = layout.parts[\"Shower Tub Combo\"];\r\n const cabinetParent = layout.parts[\"Cabinet\"];\r\n const centerIslandParent = layout.parts[\"CenterIsland\"];\r\n const countertopParent = layout.parts[\"Countertop\"];\r\n const applianceParent = layout.parts[\"Appliances\"];\r\n\r\n if (this.isWallItem(itemPart)) {\r\n wallParent.relatedItems.forEach(relatedItem => {\r\n if (relatedItem.partId !== itemPart.partId && !relatedItem.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(relatedItem);\r\n }\r\n });\r\n } else if (itemPart.partId === \"vanity_cabinet\") {\r\n const vanityParent = itemPart.getParent();\r\n vanityParent.relatedItems.forEach(relatedItem => {\r\n if (relatedItem.partId !== itemPart.partId && !relatedItem.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(relatedItem);\r\n }\r\n });\r\n if (!layout.isNewLayout) {\r\n const navItem = {\r\n part: showerParent.showerBody,\r\n text: showerParent.showerBody.partName\r\n };\r\n this.checkIfAllFeaturesReceived(navItem, \"\");\r\n if (wallParent.vanityAccent && !wallParent.vanityAccent.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(wallParent.vanityAccent);\r\n }\r\n }\r\n } else if (itemPart.partId === \"shower_door\") {\r\n if (showerParent && showerParent.showerDoorHandle && !showerParent.showerDoorHandle.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(showerParent.showerDoorHandle);\r\n }\r\n } else if (itemPart.partId === \"top_cabinet\") { /*** KITCHEN TOP CABINETS REQUIRE CROWN_MOLDING AND HOOD AND HANDLES AND CABINETS***/\r\n if (cabinetParent && cabinetParent.crownMolding && !cabinetParent.crownMolding.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(cabinetParent.crownMolding);\r\n }\r\n if (cabinetParent && cabinetParent.topHandle && !cabinetParent.topHandle.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(cabinetParent.topHandle);\r\n }\r\n if (cabinetParent && cabinetParent.bottomCabinet && !cabinetParent.bottomCabinet.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(cabinetParent.bottomCabinet);\r\n }\r\n if (centerIslandParent && centerIslandParent.cabinet && !centerIslandParent.cabinet.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(centerIslandParent.cabinet);\r\n }\r\n if (applianceParent && applianceParent.hood && !applianceParent.hood.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(applianceParent.hood);\r\n }\r\n } else if (itemPart.partId === \"bottom_cabinet\") { /*** KITCHEN BOTTOM CABINETS REQUIRE TOP CABINETS & CENTER ISLAND ***/\r\n if (cabinetParent && cabinetParent.topCabinet && !cabinetParent.topCabinet.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(cabinetParent.topCabinet);\r\n }\r\n if (centerIslandParent && centerIslandParent.cabinet && !centerIslandParent.cabinet.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(centerIslandParent.cabinet);\r\n }\r\n if (cabinetParent && cabinetParent.bottomHandle && !cabinetParent.bottomHandle.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(cabinetParent.bottomHandle);\r\n }\r\n } else if (itemPart.partId === \"center_island_cabinet\") { /*** KITCHEN CENTER ISLAND CABINETS REQUIRE TOP CABINETS & BOTTOM CABINETS***/\r\n if (cabinetParent && cabinetParent.topCabinet && !cabinetParent.topCabinet.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(cabinetParent.topCabinet);\r\n }\r\n if (cabinetParent && cabinetParent.bottomCabinet && !cabinetParent.bottomCabinet.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(cabinetParent.bottomCabinet);\r\n }\r\n } else if (itemPart.partId === \"countertop\") {\r\n if (centerIslandParent && centerIslandParent.countertop && !centerIslandParent.countertop.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(centerIslandParent.countertop);\r\n }\r\n if (wallParent && wallParent.backsplash && !wallParent.backsplash.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(wallParent.backsplash);\r\n }\r\n } else if (itemPart.partId === \"center_island_countertop\") {\r\n if (countertopParent && countertopParent.countertop && (!countertopParent.countertop.allFeaturesReceived\r\n || !(centerIslandParent.countertop && !centerIslandParent.countertop.allFeaturesReceived))) {\r\n this.getRelatedItemFeatures(countertopParent.countertop);\r\n }\r\n if (wallParent && wallParent.backsplash && !wallParent.backsplash.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(wallParent.backsplash);\r\n }\r\n } else if (itemPart.partId === \"backsplash\") {\r\n if (countertopParent && countertopParent.countertop && !countertopParent.countertop.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(countertopParent.countertop);\r\n }\r\n if (centerIslandParent && centerIslandParent.countertop && !centerIslandParent.countertop.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(centerIslandParent.countertop);\r\n }\r\n } else if (itemPart.partId === \"edge_profile\") {\r\n if (countertopParent && countertopParent.countertop && !countertopParent.countertop.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(countertopParent.countertop);\r\n }\r\n } else if (itemPart.partId === \"center_island_edge\") {\r\n if (centerIslandParent && centerIslandParent.countertop && !centerIslandParent.countertop.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(centerIslandParent.countertop);\r\n }\r\n } else if (itemPart.partId === \"microwave\" || itemPart.partId === \"hood\") { /*** KITCHEN APPLIANCE REQUIRE TOP CABINETS ***/\r\n if (cabinetParent && cabinetParent.topCabinet && !cabinetParent.topCabinet.allFeaturesReceived) {\r\n this.getRelatedItemFeatures(cabinetParent.topCabinet);\r\n }\r\n } else if (itemPart.createdManually) { // shower_body || wall_configuration\r\n const neededParts = [\"pony_wall\", \"left_shower_wall\", \"right_shower_wall\"];\r\n if (callBack) {\r\n neededParts.push(\"wall_c\");\r\n }\r\n const getData = async () => {\r\n return await Promise.all([...showerParent.relatedItems.map(async relatedItem => {\r\n if (relatedItem.partId !== itemPart.partId && !relatedItem.allFeaturesReceived) {\r\n return await this.getRelatedItemFeatures(relatedItem)\r\n }\r\n }), ...wallParent.relatedItems.map(async relatedItem => {\r\n if (neededParts.includes(relatedItem.partId) && !relatedItem.allFeaturesReceived) {\r\n return await this.getRelatedItemFeatures(relatedItem);\r\n }\r\n })])\r\n };\r\n getData() // after we receive all shower related items we can switch shower body\r\n .then(() => {\r\n showerParent.showerBody.allFeaturesReceived = true;\r\n showerComboParent.wallConfiguration.allFeaturesReceived = true;\r\n if (materialsPage) {\r\n if (this._isMounted) {\r\n this.forceUpdate()\r\n }\r\n } else {\r\n callBack ? callBack() : this.forceUpdate();\r\n }\r\n });\r\n }\r\n };\r\n\r\n checkIfAllFiltersReceived = (activeSubPart, allFilterGroups) => {\r\n return getBvGroupFilterValues(activeSubPart.dbName || activeSubPart.partName)\r\n .then((response) => {\r\n setActivePartFilterValues(response.data, activeSubPart, allFilterGroups);\r\n return true\r\n });\r\n };\r\n\r\n isWallItem = (itemPart) => {\r\n let wallsPartIds = [];\r\n switch(document.kvConfig.visualizerType) {\r\n case \"Bathroom\":\r\n case \"BV\":\r\n wallsPartIds = [\"wall_a\", \"wall_b\", \"wall_c\", \"right_shower_wall\", \"left_shower_wall\",\"pony_wall\"];\r\n break;\r\n case \"Kitchen\":\r\n wallsPartIds = [\"left_wall\", \"right_wall\", \"popout_wall\"];\r\n break;\r\n case \"kvScene\":\r\n wallsPartIds = [\"left_wall\", \"right_wall\", \"center_wall\", \"front_wall\", \"popout_wall\"];\r\n break;\r\n case \"bvScene\":\r\n case \"bvLook\":\r\n wallsPartIds = [\"left_wall\", \"right_wall\", \"center_wall\", \"shower_interior_wall\"];\r\n break;\r\n default:\r\n wallsPartIds = [\"left_wall\", \"right_wall\", \"center_wall\"];\r\n }\r\n return wallsPartIds.includes(itemPart.partId);\r\n };\r\n\r\n static searchFeaturesByName = (relatedItem, searchName, pageSize = 9999) => {\r\n if (Array.isArray(relatedItem.alreadyRequestedFeatureNames)\r\n && relatedItem.alreadyRequestedFeatureNames.includes(searchName)) {\r\n return Promise.resolve()\r\n }\r\n const dbName = relatedItem.dbName || relatedItem.partName;\r\n return getBvGroupFeatures(dbName, 0, pageSize, [], searchName)\r\n .then(response => {\r\n if (response && response.length) {\r\n relatedItem.setGroupFeatures(response, 0, false);\r\n if (!relatedItem.alreadyRequestedFeatureNames) {\r\n relatedItem.alreadyRequestedFeatureNames = [];\r\n }\r\n if (searchName) {\r\n relatedItem.alreadyRequestedFeatureNames.push(searchName);\r\n }\r\n }\r\n return response\r\n })\r\n };\r\n\r\n changeLayout = (layoutType, firstChange = false) => {\r\n if (!firstChange) {\r\n loaderEnable();\r\n }\r\n window.requestInProcess = true;\r\n const layout = getCurrentLayout();\r\n switch (document.kvConfig.visualizerType) {\r\n case \"Kitchen\":\r\n case \"KV\": {\r\n const cabinetParent = layout.parts[\"Cabinet\"];\r\n const applianceParent = layout.parts[\"Appliances\"];\r\n const wallsParent = layout.parts[\"Walls\"];\r\n const countertopParent = layout.parts[\"Countertop\"];\r\n const neededParts = [\"left_wall\", \"fridge\", \"top_cabinet\", \"top_handle\", \"bottom_cabinet\", \"bottom_handle\",\r\n \"popout_wall\", \"backsplash\", \"countertop\"];\r\n let relatedArray = [];\r\n [cabinetParent, applianceParent, wallsParent, countertopParent].forEach(parent => {\r\n if (parent) {\r\n relatedArray = [...relatedArray, ...parent.relatedItems]\r\n }\r\n });\r\n relatedArray = relatedArray.filter((relatedItem) => {\r\n return neededParts.includes(relatedItem.partId) && !relatedItem.allFeaturesReceived\r\n });\r\n const countertopPageChanges = this.getSubPartLayoutPageChanges(countertopParent, \"countertop\", layoutType);\r\n const backsplashPageChanges = this.getSubPartLayoutPageChanges(wallsParent, \"backsplash\", layoutType);\r\n if (relatedArray.length\r\n || countertopPageChanges.requestNeeded\r\n || countertopPageChanges.requestNameNeeded\r\n || backsplashPageChanges.requestNeeded\r\n || backsplashPageChanges.requestNameNeeded\r\n ) {\r\n return this.getNeeededKvPartsOnLayoutChange(layoutType, relatedArray, [countertopPageChanges, backsplashPageChanges], firstChange);\r\n } else {\r\n this.finishChangeLayout(layoutType);\r\n }\r\n break;\r\n }\r\n // case \"kvScene\": {\r\n case \"bvScene\": {\r\n this.getBvSceneParts(layoutType);\r\n break;\r\n }\r\n case \"Bathroom\":\r\n case \"BV\": {\r\n const showerParent = layout.parts[\"Shower\"];\r\n if (showerParent && showerParent.showerBody && !showerParent.showerBody.allFeaturesReceived) {\r\n const navItem = {\r\n part: showerParent.showerBody,\r\n text: showerParent.showerBody.partName\r\n };\r\n const oldType = layout.type;\r\n layout.type = layoutType;\r\n this.forceUpdate();\r\n this.checkIfAllFeaturesReceived(navItem, \"\", () => {\r\n this.finishChangeLayout(layoutType, oldType);\r\n });\r\n } else {\r\n this.finishChangeLayout(layoutType);\r\n }\r\n break;\r\n }\r\n default:\r\n this.finishChangeLayout(layoutType, null, null, firstChange);\r\n break;\r\n }\r\n };\r\n\r\n finishChangeLayout = (layoutType, oldType, currentState, firstChange = false) => {\r\n const layout = getCurrentLayout();\r\n if (Number.isInteger(oldType)) {\r\n loaderEnable();\r\n layout.type = oldType;\r\n layout.selectLayout(layoutType, oldType, currentState);\r\n } else {\r\n layout.selectLayout(layoutType);\r\n }\r\n window.requestInProcess = false;\r\n if (!layout.initialized && !firstChange) {\r\n layout.initialized = true;\r\n }\r\n if (this.props.refreshCB && !firstChange) {\r\n this.props.refreshCB();\r\n }\r\n if (!firstChange) {\r\n this.forceUpdate();\r\n store.dispatch(updateCanvasCount()); // update canvas\r\n loaderDisable();\r\n }\r\n return true\r\n };\r\n\r\n getBvSceneParts = (layoutType) => {\r\n const layout = getCurrentLayout();\r\n const wallsParent = layout.parts[\"Walls\"];\r\n const showerParent = layout.parts[\"Shower\"];\r\n const neededParts = [\"left_wall\", \"right_wall\", \"shower_interior_wall\", \"shower_fixture\"];\r\n let promises = [];\r\n [wallsParent, showerParent].forEach(parent => {\r\n if (parent && parent.relatedItems) {\r\n parent.relatedItems.forEach(relatedItem => {\r\n if (neededParts.includes(relatedItem.partId) && !relatedItem.allFeaturesReceived) {\r\n promises.push(this.getRelatedItemFeatures(relatedItem))\r\n }\r\n })\r\n }\r\n })\r\n const oldType = layout.type;\r\n layout.type = layoutType;\r\n Promise.all(promises).then(() => this.finishChangeLayout(layoutType, oldType))\r\n };\r\n\r\n getSubPartLayoutPageChanges = (parent, childName, layoutType) => {\r\n let\r\n requestNeeded = false,\r\n requestNameNeeded = false,\r\n nextLayoutFeaturesPage = 0,\r\n maxCurrentFeaturesPage = 0;\r\n if (parent && parent[childName]) {\r\n if (USE_SERVER_CACHING && parent[childName].nextFeaturesPageToLoadArray) {\r\n maxCurrentFeaturesPage = Math.max(...Object.values(parent[childName].nextFeaturesPageToLoadArray).map(obj => obj.page))\r\n nextLayoutFeaturesPage = (parent[childName].nextFeaturesPageToLoadArray[LayoutAbbreviations[layoutType]]).page;\r\n if (nextLayoutFeaturesPage < maxCurrentFeaturesPage) {\r\n requestNeeded = true;\r\n }\r\n }\r\n if (parent[childName].activeFeature) {\r\n const currentActiveName = parent[childName].activeFeature.getSplittedFeatureName();\r\n const neededLayoutName = invert(LayoutTypes)[layoutType];\r\n const neededFeature = parent[childName].featuresList[neededLayoutName].find((feature) => {\r\n const featureName = feature.getSplittedFeatureName();\r\n return featureName && currentActiveName && (featureName === currentActiveName)\r\n });\r\n if (!neededFeature) {\r\n requestNameNeeded = currentActiveName.split(\" \")[0]\r\n }\r\n }\r\n }\r\n return {\r\n requestNeeded,\r\n requestNameNeeded,\r\n nextLayoutFeaturesPage,\r\n maxCurrentFeaturesPage,\r\n relatedItem: parent ? parent[childName] : null\r\n }\r\n };\r\n\r\n getNeeededKvPartsOnLayoutChange = (layoutType, relatedPartsToReceive, relatedPartsToReceiveForLayouts, firstChange = false) => {\r\n const layout = getCurrentLayout();\r\n const currentState = layout.getActiveFeaturesAsObject(true, false, true);\r\n const oldType = layout.type;\r\n layout.type = layoutType;\r\n if (!firstChange) {\r\n this.forceUpdate();\r\n }\r\n const promises = relatedPartsToReceive.map((relatedItem) => {\r\n const size = COUNTERTOP_GROUP.includes(relatedItem.partId) ? 2000 : 1000;\r\n return getBvGroupFeatures(relatedItem.dbName || relatedItem.partName, 0, size).then(response => {\r\n relatedItem.setGroupFeatures(Array.isArray(response) ? response : [], size);\r\n return response\r\n })\r\n });\r\n relatedPartsToReceiveForLayouts.forEach((pageChanges) => {\r\n if (pageChanges.requestNeeded) { // here we receive all the same features for new layout type (cause client already received them in another layout)\r\n const nextLayoutName = LayoutAbbreviations[layoutType];\r\n const featuresSize = 1000 * (pageChanges.maxCurrentFeaturesPage - pageChanges.nextLayoutFeaturesPage);\r\n promises.push(getBvGroupFeatures(pageChanges.relatedItem.partName, pageChanges.nextLayoutFeaturesPage, featuresSize, [], \"\", nextLayoutName)\r\n .then(response => {\r\n pageChanges.relatedItem.nextFeaturesPageToLoadArray[nextLayoutName].page = pageChanges.maxCurrentFeaturesPage - 1; // 1 will be added in setGroupFeatures method\r\n pageChanges.relatedItem.setGroupFeatures(Array.isArray(response) ? response : []);\r\n return response\r\n }))\r\n }\r\n if (pageChanges.requestNameNeeded) { // here we receive current active itm to set it\r\n promises.push(NavigationRequests.searchFeaturesByName(pageChanges.relatedItem, pageChanges.requestNameNeeded))\r\n }\r\n });\r\n return Promise.all(promises).then(() => this.finishChangeLayout(layoutType, oldType, currentState, firstChange));\r\n };\r\n\r\n}\r\n","import {PartMenuType} from \"../../visComponents/constants\";\r\nimport {iCmp} from \"../../../misc/utils\";\r\nimport Layer from \"../../visComponents/layer\";\r\nimport {LayoutType, METADATA} from \"./constants\";\r\nimport PartCommon from \"../../visComponents/partCommon\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\n\r\nexport class Part extends PartCommon {\r\n\r\n constructor(isParent, isChild, menuType) {\r\n super();\r\n if (isChild || (isParent && menuType === PartMenuType.Simple)) {\r\n this.featuresList = {};\r\n this.featuresPartsList = {};\r\n this.modulePartsList = {};\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this.featuresList[layoutName] = [];\r\n this.featuresPartsList[layoutName] = [];\r\n this.modulePartsList[layoutName] = [];\r\n });\r\n this.allFeaturesReceived = false;\r\n this.realFeaturesReceived = false; // this prop is need on Scroll (if features count more that 1000)\r\n this.nextFeaturesPageToLoad = 0;\r\n this.activeFeature = null;\r\n this.placeholderFeature = null;\r\n this.shadowFeature = null;\r\n this.placeholderChanged = false;\r\n this.firstClick = {\r\n \"0\": false\r\n };\r\n this.activeLockedFeature = null;\r\n this.activeNotInVisualizerFeature = null; // is needed to display in the QT selected activeNotInVisualizerFeature, but render proper activeFeature layer(for example, countertop)\r\n // name = \"\";\r\n this.visible = true;\r\n this.categoryEnabled = false;\r\n this.layout = null;\r\n this.featureGroupVisible = true; // dashboard's feature group eye ball logic\r\n this.featureGroupEnabled = true; // dashboard's feature group checkbox logic\r\n this.selectedFeaturesHistory = []; // array of strings(names). updated every time item is selected\r\n this.filtersReceived = null; // array of filters values, comes from BE, for ex [1221, 347, 1124]\r\n }\r\n if (isParent) {\r\n this.partThumbnail = '';\r\n this.relatedItems = [];\r\n }\r\n if (!isChild && !isParent) {\r\n this.dbFeature = null;\r\n this.layer = new Layer(\"kv\");\r\n this._customDisplayName = null;\r\n this.notesList = {};\r\n }\r\n this.partName = \"\";\r\n }\r\n\r\n set features(featuresList) {\r\n // features can't be set directly, we need to change featuresList array\r\n }\r\n get features() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.featuresList[layout.getCurrentLayoutName()]\r\n }\r\n set featuresParts(featuresList) {\r\n // featuresParts can't be set directly, we need to change featuresPartsList array\r\n }\r\n get featuresParts() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.featuresPartsList[layout.getCurrentLayoutName()]\r\n }\r\n get moduleParts() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.modulePartsList[layout.getCurrentLayoutName()]\r\n }\r\n\r\n /**\r\n * Checks whether a given for condition matches the needed value (or array of values)\r\n * @param name {string}\r\n * @param value {string || array}\r\n * @returns {boolean}\r\n */\r\n matchesMetaForCondition(name, value) {\r\n if (!this.metaData[name]) {\r\n return false\r\n }\r\n if (Array.isArray(this.metaData[name])) {\r\n return this.metaData[name].some(condValue => {\r\n return condValue === METADATA.ALL || (Array.isArray(value) ? value.some(val => iCmp(condValue, val)) : iCmp(condValue, value))\r\n });\r\n }\r\n return this.metaData[name] === METADATA.ALL\r\n || (Array.isArray(value) ? value.some(val => iCmp(this.metaData[name], val)) : iCmp(this.metaData[name], value))\r\n }\r\n\r\n matchesMetaForArrayOfConditions(arrayOfConditions) {\r\n return arrayOfConditions.every((condition) => {\r\n return this.matchesMetaForCondition(condition.propName, condition.propValue);\r\n })\r\n }\r\n\r\n navigationItem() {\r\n return new DesignNavigationItem(this.partName, this);\r\n }\r\n}\r\n\r\n\r\n","import React, {PureComponent} from 'react';\r\nimport {connect} from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { setExpandedFilters, setSelectedFilters, showFilters } from \"../../../../actions/actionFunctions\";\r\nimport FiltersBody from \"./filtersBody\";\r\n\r\nclass FiltersClass extends PureComponent {\r\n\r\n static propTypes = {\r\n id: PropTypes.string.isRequired,\r\n searchText: PropTypes.string.isRequired,\r\n handleSearchInputChange: PropTypes.func.isRequired,\r\n childItem: PropTypes.object\r\n };\r\n\r\n blurClickSet = false;\r\n\r\n componentDidMount() {\r\n this.props.setSelectedFilters([]); // reset filters on stones & color step\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.childItem && (!this.props.childItem\r\n || (this.props.childItem && nextProps.childItem.text !== this.props.childItem.text))) {\r\n this.props.setSelectedFilters([]);\r\n this.props.setExpandedFilters([]);\r\n }\r\n if (nextProps.visible && !this.blurClickSet) {\r\n this.blurClickSet = true;\r\n document.addEventListener('click', this.handleWrapperBlur);\r\n }\r\n }\r\n\r\n handleWrapperBlur = (e) => {\r\n if (!e.target.closest('[class*=\"filters\"]') && !e.target.closest(\".materials-button--search\") && this.props.id === this.props.activeFilterId) {\r\n this.props.showFilters(false);\r\n document.removeEventListener('click', this.handleWrapperBlur);\r\n this.blurClickSet = false;\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.props.visible && this.props.childItem ? (\r\n \r\n ) : null}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n activeFilterId: store.filterState.filterId,\r\n visible: store.filterState.showFilters,\r\n filterVisible: store.filterState.filterVisible,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setSelectedFilters,\r\n setExpandedFilters,\r\n showFilters,\r\n};\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FiltersClass);\r\n","import React, {Component} from 'react';\r\nimport {connect} from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport findIndex from \"lodash/findIndex\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport * as actions from '../../../../actions/actionFunctions';\r\n\r\n// import {DesignNavigationItem, Layout} from \"../core/layout\";\r\n\r\nexport const toggleFilterArrayValue = (array, {filterId, filterGroupId}) => {\r\n let index = findIndex(array, {filterGroupId});\r\n if (index >= 0) {\r\n array[index].filterId === filterId ? array.splice(index, 1) : array.splice(index, 1, {filterId, filterGroupId})\r\n } else {\r\n array.push({filterId, filterGroupId});\r\n }\r\n return array;\r\n};\r\n\r\nexport const replaceFilterArrayValue = (array, {filterId, filterGroupId}) => {\r\n let index = findIndex(array, {filterGroupId});\r\n if (index >= 0) {\r\n array.splice(index, 1, {filterId, filterGroupId})\r\n } else {\r\n array.push({filterId, filterGroupId});\r\n }\r\n return array;\r\n};\r\n\r\nconst setDefaultFilterArrayValue = (array, filterGroupId) => {\r\n let index = findIndex(array, {filterGroupId});\r\n if (index >= 0) {\r\n array.splice(index, 1);\r\n }\r\n return array;\r\n};\r\n\r\nclass FilterSwitchers extends Component {\r\n\r\n static propTypes = {\r\n // layout: PropTypes.instanceOf(Layout),\r\n isMobile: PropTypes.bool,\r\n activePart: PropTypes.object.isRequired,\r\n filterGroupName: PropTypes.string.isRequired\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n availableFilterValues: [],\r\n filterGroup: {}\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setAvailableFiltersValues(this.props);\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.activePart && this.props.activePart && nextProps.activePart.partName !== this.props.activePart.partName) {\r\n this.setAvailableFiltersValues(nextProps);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setDefaultFilterValue();\r\n }\r\n\r\n setAvailableFiltersValues(nextProps = this.props) {\r\n const availableFilterValues = [];\r\n const filterGroup = nextProps.filterGroups.find(group => group.name === nextProps.filterGroupName);\r\n const fabricatorData = this.props.fabricatorData;\r\n if (filterGroup) {\r\n nextProps.activePart.features.forEach((feature) => {\r\n if (feature.dbFeature.filterValueIDs[filterGroup.id]) {\r\n feature.dbFeature.filterValueIDs[filterGroup.id].forEach((filterValue) => {\r\n if (!availableFilterValues.includes(filterValue)) {\r\n const fValue = filterGroup.values.find(val => val.id === filterValue);\r\n if (fValue.value === \"Slab\") { // we need to look for existing DuraBath Natural Stone features filter\r\n if (!fabricatorData || (fabricatorData && !fabricatorData.isRebath)) {\r\n availableFilterValues.push(filterValue)\r\n }\r\n } else if (fValue.value === \"DuraBath Natural Stone\") {\r\n if (!fabricatorData || (fabricatorData && fabricatorData.isRebath)) {\r\n availableFilterValues.push(filterValue)\r\n }\r\n } else {\r\n availableFilterValues.push(filterValue)\r\n }\r\n }\r\n })\r\n }\r\n });\r\n this.setState({\r\n availableFilterValues,\r\n filterGroup\r\n })\r\n }\r\n }\r\n\r\n setActiveFilterValue = (filterId, filterGroupId) => {\r\n this.props.setSelectedFilters(toggleFilterArrayValue([...this.props.selectedFilters], {filterId, filterGroupId}));\r\n };\r\n\r\n setDefaultFilterValue = () => {\r\n this.props.setSelectedFilters(setDefaultFilterArrayValue([...this.props.selectedFilters], this.state.filterGroup.id));\r\n };\r\n\r\n render() {\r\n\r\n // console.log('parentItem', this.props.parentItem);\r\n // console.log('activePart', this.props.activePart);\r\n // console.log('selectedFilters', this.props.selectedFilters);\r\n // console.log('availableFilterValues:', this.state.availableFilterValues);\r\n let activeFilterValueId = null;\r\n if (this.state.availableFilterValues.length && this.state.filterGroup && this.props.selectedFilters.length) {\r\n const appliedFilter = this.props.selectedFilters.find(filterObj => filterObj.filterGroupId === this.state.filterGroup.id);\r\n if (appliedFilter) {\r\n activeFilterValueId = appliedFilter.filterId\r\n }\r\n }\r\n\r\n return this.state.availableFilterValues.length ? (\r\n this.props.isMobile ? (\r\n
    \r\n
      \r\n
    • \r\n \r\n
    • \r\n {this.state.availableFilterValues.map((filterValueId, index) => {\r\n const filterValueObject = this.state.filterGroup.values.find(val => val.id === filterValueId);\r\n return (\r\n
    • this.setActiveFilterValue(filterValueId, this.state.filterGroup.id)}>\r\n {filterValueObject.value}\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 {this.state.availableFilterValues.map((filterValueId, index) => {\r\n const filterValueObject = this.state.filterGroup.values.find(val => val.id === filterValueId);\r\n return (\r\n
    • this.setActiveFilterValue(filterValueId, this.state.filterGroup.id)}>\r\n \r\n {filterValueObject.value}\r\n
    • \r\n )\r\n })}\r\n
    \r\n
    \r\n )\r\n ) : null\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n filterGroups: store.filterState.filterGroups,\r\n fabricatorData: store.fabricatorState,\r\n selectedFilters: store.filterState.selectedFilters\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setSelectedFilters: (selectedFilters) => dispatch(actions.setSelectedFilters(selectedFilters)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FilterSwitchers);\r\n","import React, {Component} from 'react';\r\nimport {connect} from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport findIndex from \"lodash/findIndex\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport * as actions from '../../../../actions/actionFunctions';\r\n\r\nexport const addFilterArrayValue = (array, {filterId, filterGroupId}) => {\r\n let index = findIndex(array, {filterGroupId});\r\n if (index >= 0) {\r\n array.splice(index, 1, {filterId, filterGroupId})\r\n } else {\r\n array.push({filterId, filterGroupId});\r\n }\r\n return array;\r\n};\r\n\r\nclass FilterSelection extends Component {\r\n\r\n static propTypes = {\r\n removeFilterSelection: PropTypes.func.isRequired,\r\n isMobile: PropTypes.bool,\r\n activePart: PropTypes.object\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n availableFilterValues: [],\r\n filterGroup: {}\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setAvailableFiltersValues(this.props);\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.activePart && this.props.activePart && nextProps.activePart.partName !== this.props.activePart.partName) {\r\n this.setAvailableFiltersValues(nextProps);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n // this.setDefaultFilterValue();\r\n }\r\n\r\n /**\r\n * Fucntion is needed to find among filterGroups needed group & to return only those filters that has\r\n * at least 1 feature with it assigned\r\n * @param {Array} filterGroups\r\n * @param {String} filterGroupName\r\n * @param {Object} activePart\r\n * @param {Object} fabricatorData\r\n * @param {Array} selectedFilters // example: [{filterId: 1113, filterGroupId: 15}]\r\n * @return {Array} ArrayOf filterIds // example: [1231, 1587, 1596]\r\n */\r\n static getAvailableFilterValues(filterGroups, filterGroupName, activePart, fabricatorData, selectedFilters = []) {\r\n const availableFilterValues = [];\r\n const filterGroup = filterGroups.find(group => group.name === filterGroupName);\r\n if (filterGroup && activePart.featuresList) {\r\n const featuresToFind = (filterGroup.name === \"Inlay Type\") ? activePart.moduleParts : activePart.features;\r\n // console.log(\"featuresToFind\", featuresToFind);\r\n // let missingFilters = {};\r\n featuresToFind.forEach((feature) => {\r\n if (feature.dbFeature.filterValueIDs[filterGroup.id] && selectedFilters.every(filterObject => {\r\n return feature.dbFeature.filterValueIDs[filterObject.filterGroupId]\r\n && feature.dbFeature.filterValueIDs[filterObject.filterGroupId].includes(filterObject.filterId)\r\n })) {\r\n feature.dbFeature.filterValueIDs[filterGroup.id].forEach((filterValue) => {\r\n if (!availableFilterValues.includes(filterValue)) {\r\n // console.log(\"feature with the filter:\", feature);\r\n const fValue = filterGroup.values.find(val => val.id === filterValue);\r\n if (fValue) {\r\n if (fValue.value === \"Slab\") { // we need to look for existing DuraBath Natural Stone features filter\r\n if (!fabricatorData || (fabricatorData && !fabricatorData.isRebath)) {\r\n // const duraBathNaturalStoneFilter = filterGroup.values.find(val => val.value === \"DuraBath Natural Stone\");\r\n // if (!activePart.features.some(testFeature => {\r\n // return testFeature.dbFeature\r\n // && testFeature.dbFeature.filterValueIDs\r\n // && testFeature.dbFeature.filterValueIDs[filterGroup.id]\r\n // && testFeature.dbFeature.filterValueIDs[filterGroup.id].includes(duraBathNaturalStoneFilter.id)\r\n // })) {\r\n // availableFilterValues.push(filterValue)\r\n // }\r\n availableFilterValues.push(filterValue)\r\n }\r\n } else if (fValue.value === \"DuraBath Natural Stone\") {\r\n if (!fabricatorData || (fabricatorData && fabricatorData.isRebath)) {\r\n availableFilterValues.push(filterValue)\r\n }\r\n // const slabFilter = filterGroup.values.find(val => val.value === \"Slab\");\r\n // if (!activePart.features.some.feature(testFeature => {\r\n // return testFeature.dbFeature && testFeature.dbFeature.filterValueIDs\r\n // && feature.dbFeature.filterValueIDs[duraBathNaturalStoneFilter.id]\r\n // })) {\r\n // availableFilterValues.push(filterValue)\r\n // }\r\n } else {\r\n availableFilterValues.push(filterValue)\r\n }\r\n } else {\r\n // if (!missingFilters[filterValue]) {\r\n // missingFilters[filterValue] = [feature]\r\n // } else {\r\n // missingFilters[filterValue].push(feature)\r\n // }\r\n }\r\n }\r\n })\r\n }\r\n });\r\n // if (Object.keys(missingFilters).length) {\r\n // console.error(\"Filter values are missing or wrong filter assigned!\", missingFilters);\r\n // console.info(\"Existing filters\", filterGroup.values);\r\n // }\r\n }\r\n // console.log(\"availableFilterValues\", availableFilterValues);\r\n return availableFilterValues\r\n }\r\n\r\n setAvailableFiltersValues(nextProps = this.props) {\r\n const filterGroup = nextProps.filterGroups.find(group => group.name === nextProps.filterGroupName);\r\n const availableFilterValues = FilterSelection.getAvailableFilterValues(\r\n nextProps.filterGroups, nextProps.filterGroupName, nextProps.activePart, this.props.fabricatorData\r\n );\r\n if (filterGroup) {\r\n this.setState({\r\n availableFilterValues,\r\n filterGroup\r\n })\r\n }\r\n }\r\n\r\n setActiveFilterValue = (filterId, filterGroupId) => {\r\n this.props.setSelectedFilters(addFilterArrayValue([...this.props.selectedFilters], {filterId, filterGroupId}));\r\n this.props.removeFilterSelection();\r\n };\r\n\r\n render() {\r\n\r\n // console.log('parentItem', this.props.parentItem);\r\n // console.log('activePart', this.props.activePart);\r\n // console.log('selectedFilters', this.props.selectedFilters);\r\n // console.log('availableFilterValues:', this.state.availableFilterValues);\r\n // let activeFilterValueId = null;\r\n // if (this.state.availableFilterValues.length && this.state.filterGroup && this.props.selectedFilters.length) {\r\n // const appliedFilter = this.props.selectedFilters.find(filterObj => filterObj.filterGroupId === this.state.filterGroup.id);\r\n // if (appliedFilter) {\r\n // activeFilterValueId = appliedFilter.filterId\r\n // }\r\n // }\r\n\r\n return this.state.availableFilterValues.length ? (\r\n
    \r\n
      \r\n
    • \r\n \r\n
    • \r\n {this.state.availableFilterValues.map((filterValueId, index) => {\r\n const filterValueObject = this.state.filterGroup.values.find(val => val.id === filterValueId);\r\n return (\r\n
    • this.setActiveFilterValue(filterValueId, this.state.filterGroup.id)}>\r\n \r\n \r\n \r\n
    • \r\n )\r\n })}\r\n
    \r\n
    \r\n ) : null\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n filterGroups: store.filterState.filterGroups,\r\n fabricatorData: store.fabricatorState,\r\n selectedFilters: store.filterState.selectedFilters\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setSelectedFilters: (selectedFilters) => dispatch(actions.setSelectedFilters(selectedFilters)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FilterSelection);\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {injectIntl} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport {\r\n getFeatureIsLocked,\r\n getFeatureUnit,\r\n getPriceWithCurrency,\r\n toFixedFeatureCost,\r\n toFixedPrice\r\n} from \"../../../../../misc/helpers\";\r\nimport {featureInterface} from \"../../../../../interfaces/featureInterface\";\r\nimport {getCurrentLayout} from \"../../../../appLayout\";\r\nimport {isVisibleForNavigation} from \"../../../../../misc/displayLogic\";\r\nimport LookFeaturePriceLocked from \"./lookFeaturePriceLocked\";\r\nimport {pricingIsLocked} from \"../../lookNavigationFunctions\";\r\nimport {getCartItemsCount} from \"../../../grohe/groheNavigation/groheFunctions\";\r\nimport MaterialSpinner from \"../../../../ui/materialSpinner\";\r\nimport FeaturePriceInput from \"../../../../selectionWindow/selectionFeatureInfo/featurePriceInput\";\r\nimport {wizardGroupInterface} from \"../../../../../interfaces/wizardItemInterface\";\r\n\r\nconst LookFeaturePrice = (props) => {\r\n\r\n const {lookFeature, quantity, fabricatorData, intl, withUnit, isBundleChild, className, listPage, mainContentPrice,\r\n isPhoneNumberValidated, showPriceAlways, wizardGroup, shopPageOpened, shopPageLoaded} = props;\r\n const fabricatorSettings = fabricatorData.settings;\r\n\r\n if (!lookFeature) {\r\n return null;\r\n }\r\n\r\n const getQuote = fabricatorSettings.enableQuote && !isPhoneNumberValidated;\r\n\r\n let showPriceLocked = !showPriceAlways && getFeatureIsLocked(lookFeature);\r\n if (!showPriceLocked && listPage) {\r\n showPriceLocked = getQuote;\r\n }\r\n if (wizardGroup && wizardGroup.skipLockDontApply) {\r\n showPriceLocked = false;\r\n }\r\n const {showPrice} = pricingIsLocked();\r\n\r\n if (showPriceLocked) {\r\n if (!showPrice && listPage) {\r\n return null\r\n }\r\n let lockedText = ;\r\n // if (getQuote) { // we already have icon and locked, we dont need $,icon,locked\r\n // lockedText = (\r\n // \r\n // {fabricatorSettings.currencySign}\r\n // {lockedText}\r\n // \r\n // )\r\n // }\r\n return className ?
    {lockedText}
    : lockedText\r\n }\r\n\r\n if (!showPrice || !isVisibleForNavigation(lookFeature, true)) {\r\n return null\r\n }\r\n\r\n const layout = getCurrentLayout();\r\n if (!layout.initialized && !(shopPageOpened && shopPageLoaded)) {\r\n return \r\n }\r\n if (!listPage && !layout.partIdExistInQtCategory(lookFeature.partId, true) && !isBundleChild) {\r\n return null;\r\n }\r\n\r\n const featurePrice = +toFixedFeatureCost(lookFeature, Number.isInteger(quantity) ? quantity : 1);\r\n\r\n if (!featurePrice && !lookFeature.dbFeature.priceEditable) { // if it is zero - we are hiding the price, no need to show included\r\n return null\r\n }\r\n\r\n let unit = \"\";\r\n if (withUnit) {\r\n unit = getFeatureUnit(lookFeature, intl, fabricatorData);\r\n }\r\n\r\n if (mainContentPrice && document.kvConfig.isBackend && lookFeature.dbFeature.priceEditable) {\r\n const price = toFixedPrice(featurePrice);\r\n return \r\n }\r\n\r\n const finalText = withUnit\r\n ? `${unit}: ${getPriceWithCurrency(fabricatorSettings, toFixedPrice(featurePrice), lookFeature)}`\r\n : getPriceWithCurrency(fabricatorSettings, toFixedPrice(featurePrice), lookFeature)\r\n\r\n return className ?
    {finalText}
    : finalText\r\n\r\n};\r\n\r\nLookFeaturePrice.propTypes = {\r\n lookFeature: PropTypes.shape(featureInterface),\r\n withUnit: PropTypes.bool,\r\n quantity: PropTypes.number,\r\n className: PropTypes.string,\r\n listPage: PropTypes.bool,\r\n showPriceAlways: PropTypes.bool,\r\n mainContentPrice: PropTypes.bool,\r\n wizardGroup: PropTypes.shape(wizardGroupInterface),\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n const {isPhoneNumberValidated} = store.userState; // to update component when user is logged in\r\n const {cartItems} = store.cartState; // to update component when user is logged in\r\n const cartItemsLength = getCartItemsCount(cartItems, ownProps.intl, true);\r\n const {qtCategoriesLoaded} = store.qtState; // to update price after categories are loaded\r\n\r\n // we need force here to check every time count is updated, it is just for update\r\n\r\n // const featureInfoCount = ownProps.lookFeature && ownProps.lookFeature.dbFeature\r\n // && ownProps.lookFeature.dbFeature.priceEditable && ownProps.mainContentPrice\r\n // ? store.selectionState.featureInfoCount\r\n // : null;\r\n\r\n const featureInfoCount = store.selectionState.featureInfoCount;\r\n const {shopPageOpened, shopPageLoaded} = store.shopState;\r\n\r\n return {\r\n fabricatorData: store.fabricatorState,\r\n isPhoneNumberValidated,\r\n cartItemsLength, // we need to reload item price if quantity is changed (complex logic dependency)\r\n qtCategoriesLoadedLength: qtCategoriesLoaded.length,\r\n featureInfoCount,\r\n shopPageOpened,\r\n shopPageLoaded,\r\n };\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps)(LookFeaturePrice)\r\n)\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {injectIntl} from \"react-intl\";\r\n\r\nconst FeatureDescription = (props) => {\r\n\r\n const {feature, intl, fabricatorData, brief, className, textLength} = props;\r\n\r\n let desc = \"\";\r\n if ((fabricatorData.isLowes || fabricatorData.isCaesarStone) && intl.messages) {\r\n if (intl.locale === \"fr-FR\" && intl.messages[\"transDoc.description_FR.\" + feature.dbFeature.sharedFeatureName]) {\r\n desc = intl.formatMessage({id: \"transDoc.description_FR.\" + feature.dbFeature.sharedFeatureName})\r\n } else if (intl.locale === \"pl-PL\" && intl.messages[\"transDoc.customTranslateDescription_PL.\" + feature.dbFeature.sharedFeatureName]) {\r\n desc = intl.formatMessage({id: \"transDoc.customTranslateDescription_PL.\" + feature.dbFeature.sharedFeatureName})\r\n } else {\r\n desc = feature.dbFeature.description;\r\n }\r\n } else {\r\n desc = feature.dbFeature.description;\r\n }\r\n\r\n if (!desc) {\r\n return null\r\n }\r\n\r\n if (textLength && desc.length > textLength) {\r\n desc = desc.substring(0, textLength) + \"...\"\r\n } else if (brief && desc && desc.length > 200) {\r\n desc = desc.substring(0, 200) + \"...\"\r\n }\r\n\r\n return

    \r\n};\r\n\r\nFeatureDescription.propTypes = {\r\n feature: PropTypes.object.isRequired,\r\n className: PropTypes.string,\r\n brief: PropTypes.bool,\r\n textLength: PropTypes.number,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n fabricatorData: store.fabricatorState,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(FeatureDescription)\r\n)\r\n\r\n","//INITIAL FLOW\r\nimport * as types from \"./actionTypes\";\r\n\r\nexport const setFabricatorSubscriptions = (fabricatorSubscriptions) => ({\r\n type: types.SET_FABRICATOR_SUBSCRIPTIONS,\r\n payload: {fabricatorSubscriptions}\r\n});\r\n\r\nexport const setInitialFlowAdditionalRooms = (initialFlowAdditionalRooms) => ({\r\n type: types.SET_INITIAL_FLOW_ADDITIONAL_ROOMS,\r\n payload: {initialFlowAdditionalRooms}\r\n});\r\n\r\nexport const setInitialFlowType = (initialFlowType) => ({\r\n type: types.SET_INITIAL_FLOW_BUTTON,\r\n payload: {initialFlowType}\r\n});\r\n\r\nexport const setInitialFlowRoom = (initialFlowRoom) => ({\r\n type: types.SET_INITIAL_FLOW_ROOM,\r\n payload: {initialFlowRoom}\r\n});\r\n\r\nexport const setInitialFlowVisualizerNotAvailable = (visualizerNotAvailable) => ({\r\n type: types.SET_INITIAL_FLOW_VISUALIZER_NOT_AVAILABLE,\r\n payload: {visualizerNotAvailable}\r\n});\r\n\r\nexport const setInitialFlowFinished = (initialFlowFinished) => ({\r\n type: types.SET_INITIAL_FLOW_FINISHED,\r\n payload: {initialFlowFinished}\r\n});\r\n\r\nexport const setInitialFlowRoomLayout = (initialFlowRoomLayout) => ({\r\n type: types.SET_INITIAL_FLOW_ROOM_LAYOUT,\r\n payload: {initialFlowRoomLayout}\r\n});\r\nexport const setInitialFlowStep = (initialFlowStep) => ({\r\n type: types.SET_INITIAL_FLOW_STEP,\r\n payload: {initialFlowStep}\r\n});\r\n","import {getIntersectCordsBetweenLines, getMidPoint, getPointDistance} from \"./sqftHelper\";\r\nimport polygonClipping from \"polygon-clipping\";\r\n\r\n/**\r\n * Get point position left or right from the line\r\n * if D = 0 - then searchedPoint is on the line\r\n * if D < 0 - then searchedPoint is on the left from the line\r\n * if D > 0 - then searchedPoint is on the right from the line\r\n * @param linePoint1 {{x: int, y: int}}\r\n * @param linePoint2 {{x: int, y: int}}\r\n * @param searchedPoint {{x: int, y: int}}\r\n */\r\nexport const getThePositionOfAPointToTheLeftOrRightOfALine = (linePoint1, linePoint2, searchedPoint) => {\r\n return (searchedPoint.x - linePoint1.x) * (linePoint2.y - linePoint1.y) - (searchedPoint.y - linePoint1.y) * (linePoint2.x - linePoint1.x)\r\n}\r\n\r\nfunction crossProduct(ax, ay, bx, by) {\r\n return ax * by - ay * bx;\r\n}\r\n\r\nfunction direction(ax, ay, bx, by, cx, cy) {\r\n return crossProduct(cx - ax, cy - ay, bx - ax, by - ay);\r\n}\r\n\r\nfunction onSegment(ax, ay, bx, by, cx, cy) {\r\n const withinX = (ax <= cx && cx <= bx) || (ax >= cx && cx >= bx);\r\n const withinY = (ay <= cy && cy <= by) || (ay >= cy && cy >= by);\r\n return withinX && withinY;\r\n}\r\n\r\n/**\r\n * Tests if line a-b intersects with line c-d, allow overlap will return false if lines are over each other\r\n * @param ax\r\n * @param ay\r\n * @param bx\r\n * @param by\r\n * @param cx\r\n * @param cy\r\n * @param dx\r\n * @param dy\r\n * @param allowOverlap\r\n */\r\nexport const getIntersectionCordsV2 = (ax, ay, bx, by, cx, cy, dx, dy, allowOverlap = true) => {\r\n const d1 = direction(ax, ay, bx, by, cx, cy);\r\n const d2 = direction(ax, ay, bx, by, dx, dy);\r\n const d3 = direction(cx, cy, dx, dy, ax, ay);\r\n const d4 = direction(cx, cy, dx, dy, bx, by);\r\n\r\n if (d1 * d2 < 0 && d3 * d4 < 0) {\r\n const A1 = by - ay;\r\n const B1 = ax - bx;\r\n const C1 = A1 * ax + B1 * ay;\r\n const A2 = dy - cy;\r\n const B2 = cx - dx;\r\n const C2 = A2 * cx + B2 * cy;\r\n\r\n const det = A1 * B2 - A2 * B1;\r\n if (det === 0) { // Collinear lines\r\n return null;\r\n } else {\r\n const x = (B2 * C1 - B1 * C2) / det;\r\n const y = (A1 * C2 - A2 * C1) / det;\r\n return [x, y];\r\n }\r\n }\r\n\r\n if (!allowOverlap && d1 === 0 && d2 === 0 && (onSegment(ax, ay, bx, by, cx, cy) || onSegment(ax, ay, bx, by, dx, dy))) {\r\n return null; //overlap each other\r\n }\r\n\r\n if ((d1 === 0 && onSegment(ax, ay, bx, by, cx, cy)) ||\r\n (d2 === 0 && onSegment(ax, ay, bx, by, dx, dy)) ||\r\n (d3 === 0 && onSegment(cx, cy, dx, dy, ax, ay)) ||\r\n (d4 === 0 && onSegment(cx, cy, dx, dy, bx, by))) {\r\n return null; //overlap only in one point\r\n }\r\n\r\n return null;\r\n}\r\n\r\n// Define a function to calculate the cross product of two vectors in 2D.\r\nexport function crossProduct2D(vectorA, vectorB) {\r\n // Calculate the cross product. Since the vectors are in 2D, the cross product will be a scalar.\r\n // vectorA.x * vectorB.y - vectorA.y * vectorB.x gives the Z component of the 3D cross product.\r\n return vectorA.x * vectorB.y - vectorA.y * vectorB.x;\r\n}\r\n\r\n/**\r\n * Finds the line in the `lines` array that is closest to referenceLine\r\n * and intersects the perpendicular line drawn from midpoint of referenceLine.\r\n *\r\n * @param {Line} referenceLine The line from which the perpendicular is drawn.\r\n * @param {Line[]} lines The array of lines to search in.\r\n * @return {{Line, point} | null} The found line or null if no line is found.\r\n */\r\nexport function findClosestIntersectingPointAndLine(referenceLine, lines) {\r\n // Find the perpendicular line to referenceLine\r\n const perpendicularVector = getPerpendicularMidpointVector(referenceLine);\r\n\r\n // Find all intersection points of the perpendicular line with the lines in the array\r\n const intersectionPointsAndLines = [];\r\n for (const line of lines) {\r\n // skip referenceLine\r\n if (line.id === referenceLine.id) {\r\n continue\r\n }\r\n //const intersectionPoint = getVectorIntersectionPoint(perpendicularVector, line);\r\n const intersectionPoint = getIntersectCordsBetweenLines(perpendicularVector.from, perpendicularVector.to, line.from, line.to, true ,true);\r\n\r\n if (intersectionPoint) {\r\n intersectionPointsAndLines.push({\r\n line,\r\n point: intersectionPoint,\r\n });\r\n }\r\n }\r\n\r\n return getClosestLineAndIntersectionPoint(referenceLine, intersectionPointsAndLines)\r\n}\r\n\r\n/**\r\n * Finds the line in the `lines` array that is closest to referenceLine\r\n * and intersects the perpendicular line drawn from midpoint of referenceLine.\r\n *\r\n * @return {{Line, point} | null} The found line or null if no line is found.\r\n * @param line\r\n * @param intersectionPointsAndLines\r\n */\r\nexport const getClosestLineAndIntersectionPoint = (line, intersectionPointsAndLines) => {\r\n let closestIntersectionPointAndLine = null;\r\n let minDistance = Infinity;\r\n for (const intersection of intersectionPointsAndLines) {\r\n const midPoint = getMidPoint(line.from, line.to);\r\n const distance = getPointDistance(midPoint, intersection.point);\r\n if (distance < minDistance) {\r\n minDistance = distance;\r\n closestIntersectionPointAndLine = intersection;\r\n }\r\n }\r\n\r\n return closestIntersectionPointAndLine;\r\n}\r\n\r\nexport const getPerpendicularMidpointVector = (line) => {\r\n const midPoint = getMidPoint(line.from, line.to);\r\n const vector = {\r\n x: line.from.y - line.to.y, // Изменение координат Y для получения перпендикуляра\r\n y: line.to.x - line.from.x, // Изменение координат X для получения перпендикуляра\r\n };\r\n\r\n // Вектор, начинающийся в серединной точке и проходящий через нее\r\n return {\r\n from: midPoint,\r\n to: {\r\n x: midPoint.x + vector.x,\r\n y: midPoint.y + vector.y,\r\n },\r\n };\r\n}\r\n\r\n// Function to find the convex hull using Graham's algorithm\r\nexport const convexHull = (points) => {\r\n // Sort points by Y (ascending) and then by X\r\n points.sort((a, b) => a.y === b.y ? a.x - b.x : a.y - b.y);\r\n // Function for calculating rotation: >0 if CCW, <0 if CW, 0 if collinear\r\n const cross = (o, a, b) => (a.x - o.x) * (b.y - o.y) - (a.y - o.y) * (b.x - o.x);\r\n\r\n const lower = [];\r\n for (let i = 0; i < points.length; i++) {\r\n while (lower.length >= 2 && cross(lower[lower.length - 2], lower[lower.length - 1], points[i]) <= 0) {\r\n lower.pop();\r\n }\r\n lower.push(points[i]);\r\n }\r\n\r\n const upper = [];\r\n for (let i = points.length - 1; i >= 0; i--) {\r\n while (upper.length >= 2 && cross(upper[upper.length - 2], upper[upper.length - 1], points[i]) <= 0) {\r\n upper.pop();\r\n }\r\n upper.push(points[i]);\r\n }\r\n\r\n // Deleting the last point of each half-shell (it is duplicated)\r\n lower.pop();\r\n upper.pop();\r\n\r\n // Concatenation of lower and upper shell\r\n return lower.concat(upper);\r\n}\r\n\r\n/////////////////////////////////////////////////////////////\r\n// function buildGraph(shapes) {\r\n// const graph = new Map();\r\n//\r\n// // Создаем узлы графа для каждой уникальной точки\r\n// for (const shape of shapes) {\r\n// for (let point of shape) {\r\n// point = roundPoint(point); // округляем точку\r\n// const key = `${point.x},${point.y}`;\r\n// if (!graph.has(key)) {\r\n// graph.set(key, {\r\n// ...point,\r\n// edges: new Set()\r\n// });\r\n// }\r\n// }\r\n// }\r\n//\r\n// // Добавляем рёбра между точками каждого шейпа\r\n// for (const shape of shapes) {\r\n// for (let i = 0; i < shape.length; i++) {\r\n// const current = roundPoint(shape[i]);\r\n// const next = roundPoint(shape[(i + 1) % shape.length]); // замкнутый контур\r\n// const currentKey = `${current.x},${current.y}`;\r\n// const nextKey = `${next.x},${next.y}`;\r\n//\r\n// graph.get(currentKey).edges.add(nextKey);\r\n// graph.get(nextKey).edges.add(currentKey);\r\n// }\r\n// }\r\n//\r\n// return graph;\r\n// }\r\n//\r\n// function findLeftBottomVertex(graph) {\r\n// let minVertex = null;\r\n// let minKey = null;\r\n// graph.forEach((value, key) => {\r\n// if (minVertex === null || value.y < minVertex.y || (value.y === minVertex.y && value.x < minVertex.x)) {\r\n// minVertex = value;\r\n// minKey = key;\r\n// }\r\n// });\r\n// return minKey;\r\n// }\r\n//\r\n// function findContours(shapes) {\r\n// const graph = buildGraph(shapes);\r\n// const startKey = findLeftBottomVertex(graph);\r\n// let currentKey = startKey;\r\n// let previousKey = null;\r\n// const result = [];\r\n//\r\n// do {\r\n// result.push(currentKey.split(',').map(Number)); // Добавляем текущую точку в контур\r\n// const currentVertex = graph.get(currentKey);\r\n// let nextKey = null;\r\n// let maxAngle = -Infinity;\r\n//\r\n// // Перебираем возможные следующие вершины\r\n// currentVertex.edges.forEach(key => {\r\n// if (key !== previousKey) { // Исключаем вернуться назад\r\n// const angle = calculateAngle(currentVertex, graph.get(previousKey), graph.get(key));\r\n// if (angle > maxAngle) {\r\n// maxAngle = angle;\r\n// nextKey = key;\r\n// }\r\n// }\r\n// });\r\n//\r\n// previousKey = currentKey;\r\n// currentKey = nextKey;\r\n// } while (currentKey !== startKey);\r\n//\r\n// return result.map(([x, y]) => ({ x, y }));\r\n// }\r\n//\r\n// function calculateAngle(current, previous, next) {\r\n// if (!previous) return 0; // Если предыдущая точка не задана, угол не вычисляется\r\n//\r\n// const vectorA = { x: current.x - previous.x, y: current.y - previous.y };\r\n// const vectorB = { x: next.x - current.x, y: next.y - current.y };\r\n// const dotProduct = vectorA.x * vectorB.x + vectorA.y * vectorB.y;\r\n// const magnitudeA = Math.sqrt(vectorA.x ** 2 + vectorA.y ** 2);\r\n// const magnitudeB = Math.sqrt(vectorB.x ** 2 + vectorB.y ** 2);\r\n//\r\n// // Косинус угла между векторами\r\n// const cosTheta = dotProduct / (magnitudeA * magnitudeB);\r\n//\r\n// // Возвращаем угол в радианах\r\n// return Math.acos(cosTheta);\r\n// }\r\n\r\n/**\r\n * Returns rounded shape points\r\n * @param {Array} shapesPoints shapes array\r\n * @returns {Array} shapes array with rounded points\r\n */\r\nexport const roundShapesPoints = (shapesPoints) => {\r\n return shapesPoints.map(shape =>\r\n roundShapePoints(shape)\r\n );\r\n};\r\n\r\nexport const roundShapePoints = (shapePoints) => {\r\n return shapePoints.map(point => roundPoint(point));\r\n};\r\n\r\nconst roundPoint = (point) => {\r\n const precision = 1000000; // Round to 6 digits after comma\r\n return {\r\n x: Math.round(point.x * precision) / precision,\r\n y: Math.round(point.y * precision) / precision,\r\n id: point.id\r\n };\r\n};\r\n\r\n// Convert shapes to polygon-clipping format\r\nexport function convertShapesToPolygons(shapesPoints) {\r\n return shapesPoints.map(shapePoints => [convertShapeToPolygon(shapePoints)]);\r\n}\r\n\r\nexport function convertShapeToPolygon(shapePoints) {\r\n return shapePoints.map(point => [point.x, point.y]);\r\n}\r\n\r\n// Convert points from polygon-clipping format to shapes format\r\nexport function convertFromPolygon(polygons) {\r\n if (!Array.isArray(polygons) || polygons.length === 0) {\r\n return [];\r\n }\r\n\r\n return polygons.map(polygon =>\r\n polygon[0].map(coord => ({ x: coord[0], y: coord[1] }))\r\n );\r\n}\r\n\r\n\r\n/**\r\n * Function to calculate the outline of multiple shapes.\r\n * Each shape is defined by an array of points, which are connected together.\r\n * The function rounds the coordinates to a certain precision to handle slight mismatches.\r\n *\r\n * @param {Array} shapes - Array of shapes, each shape is an array of points.\r\n * @returns {Array} - Array of points forming the unified outline of the shapes.\r\n */\r\nexport const unifyShapePoints = (shapes) => {\r\n const roundedPoints = roundShapesPoints(shapes);\r\n const polygons = convertShapesToPolygons(roundedPoints);\r\n const result = polygonClipping.union(polygons);\r\n\r\n // console.log(\"roundedPoints\",roundedPoints);\r\n // console.log(\"polygons\",polygons);\r\n // console.log(\"result\",result);\r\n // console.log(\"convertFromPolygon(result);\",convertFromPolygon(result));\r\n return convertFromPolygon(result);\r\n}\r\n\r\n// Function to remove consecutive duplicate points\r\nexport function removeConsecutiveDuplicates(points) {\r\n // Filter the points array to remove consecutive duplicates\r\n return points.filter((point, index, array) => {\r\n // Check if the current point is different from the previous one\r\n if (index === 0) {\r\n return true; // Always include the first point\r\n }\r\n const prevPoint = array[index - 1];\r\n return point.x !== prevPoint.x || point.y !== prevPoint.y;\r\n });\r\n}\r\n\r\nexport function areCollinear(p1, p2, p3, p4) {\r\n // Check that the vector products (p2-p1) and (p4-p3) are equal to zero\r\n return (p2.x - p1.x) * (p4.y - p3.y) === (p4.x - p3.x) * (p2.y - p1.y) &&\r\n ((Math.min(p1.x, p2.x) <= Math.max(p3.x, p4.x) && Math.max(p1.x, p2.x) >= Math.min(p3.x, p4.x)) &&\r\n (Math.min(p1.y, p2.y) <= Math.max(p3.y, p4.y) && Math.max(p1.y, p2.y) >= Math.min(p3.y, p4.y)));\r\n}\r\n\r\nexport function getSegmentIntersectionPoint(seg1, seg2) {\r\n const a1 = seg1.end.y - seg1.start.y;\r\n const b1 = seg1.start.x - seg1.end.x;\r\n const c1 = a1 * seg1.start.x + b1 * seg1.start.y;\r\n\r\n const a2 = seg2.end.y - seg2.start.y;\r\n const b2 = seg2.start.x - seg2.end.x;\r\n const c2 = a2 * seg2.start.x + b2 * seg2.start.y;\r\n\r\n const determinant = a1 * b2 - a2 * b1;\r\n\r\n if (determinant === 0) {\r\n return null;\r\n } else {\r\n const x = (c1 * b2 - c2 * b1) / determinant;\r\n const y = (a1 * c2 - a2 * c1) / determinant;\r\n return { x, y };\r\n }\r\n}\r\n\r\nexport function isPointOnSegment(pt, seg) {\r\n return Math.min(seg.start.x, seg.end.x) <= pt.x && pt.x <= Math.max(seg.start.x, seg.end.x) &&\r\n Math.min(seg.start.y, seg.end.y) <= pt.y && pt.y <= Math.max(seg.start.y, seg.end.y);\r\n}\r\n\r\n/**\r\n * Return the length of the overlap of the segments\r\n */\r\nfunction getOverlapLength(seg1, seg2) {\r\n if (seg1.start.x === seg1.end.x && seg1.start.x === seg2.start.x) {\r\n const sortedY1 = [seg1.start.y, seg1.end.y].sort((a, b) => a - b);\r\n const sortedY2 = [seg2.start.y, seg2.end.y].sort((a, b) => a - b);\r\n\r\n if (sortedY1[1] < sortedY2[0] || sortedY2[1] < sortedY1[0]) {\r\n return 0;\r\n }\r\n\r\n const overlapY = Math.min(sortedY1[1], sortedY2[1]) - Math.max(sortedY1[0], sortedY2[0]);\r\n return overlapY;\r\n }\r\n\r\n if (seg1.start.y === seg1.end.y && seg1.start.y === seg2.start.y) {\r\n const sortedX1 = [seg1.start.x, seg1.end.x].sort((a, b) => a - b);\r\n const sortedX2 = [seg2.start.x, seg2.end.x].sort((a, b) => a - b);\r\n\r\n if (sortedX1[1] < sortedX2[0] || sortedX2[1] < sortedX1[0]) {\r\n return 0;\r\n }\r\n\r\n const overlapX = Math.min(sortedX1[1], sortedX2[1]) - Math.max(sortedX1[0], sortedX2[0]);\r\n return overlapX;\r\n }\r\n\r\n const intersection = getSegmentIntersectionPoint(seg1, seg2);\r\n if (intersection && isPointOnSegment(intersection, seg1) && isPointOnSegment(intersection, seg2)) {\r\n return Math.sqrt(Math.pow(intersection.x - seg1.start.x, 2) + Math.pow(intersection.y - seg1.start.y, 2));\r\n }\r\n\r\n return 0;\r\n}\r\n\r\nexport function areCollinearAndOverlap(p1, p2, p3, p4, minOverlap) {\r\n // Check the collinearity of the segments\r\n if (areCollinear(p1, p2, p3, p4)) {\r\n // If they are collinear, check for minimum overlap\r\n const seg1 = { start: p1, end: p2 };\r\n const seg2 = { start: p3, end: p4 };\r\n const overlapLength = getOverlapLength(seg1, seg2);\r\n\r\n return overlapLength >= minOverlap;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Function for finding a point that is below and to the right of all other points\r\n * @param {Array} points {x, y}\r\n * @returns {Object} Point that is below and to the right of all others\r\n */\r\nexport function findLowestRightmostPoint(points) {\r\n if (!points.length) {\r\n return null;\r\n }\r\n\r\n let resultPoint = points[0];\r\n\r\n for (let i = 1; i < points.length; i++) {\r\n if (points[i].x > resultPoint.x) {\r\n resultPoint = points[i]; // Finding a new point to the right\r\n } else if (points[i].x === resultPoint.x && points[i].y < resultPoint.y) {\r\n resultPoint = points[i]; // If x are equal, choose a lower point\r\n }\r\n }\r\n\r\n return resultPoint;\r\n}\r\n\r\n/**\r\n * Calculate the length of the legs in an isosceles right triangle given the hypotenuse.\r\n * @param {number} hypotenuse - The length of the hypotenuse.\r\n * @returns {number} The length of each leg.\r\n */\r\nexport function calculateLeg(hypotenuse) {\r\n // Calculate the leg length using the relationship derived from Pythagoras' theorem\r\n return hypotenuse / Math.sqrt(2);\r\n}\r\n\r\n\r\n/**\r\n * Get closest point on the line\r\n * @returns {number} The length of each leg.\r\n * @param lineStart\r\n * @param lineEnd\r\n * @param mousePos\r\n */\r\nexport function getClosestPointOnLine(lineStart, lineEnd, mousePos) {\r\n const lineVec = {\r\n x: lineEnd.x - lineStart.x,\r\n y: lineEnd.y - lineStart.y\r\n };\r\n\r\n const lineLen = getPointDistance(lineStart, lineEnd);\r\n const lineUnitVec = {\r\n x: lineVec.x / lineLen,\r\n y: lineVec.y / lineLen\r\n };\r\n\r\n const mouseVec = {\r\n x: mousePos.x - lineStart.x,\r\n y: mousePos.y - lineStart.y\r\n };\r\n\r\n const dotProduct = mouseVec.x * lineUnitVec.x + mouseVec.y * lineUnitVec.y;\r\n const clampedDotProduct = Math.max(0, Math.min(dotProduct, lineLen));\r\n const x = lineStart.x + lineUnitVec.x * clampedDotProduct;\r\n const y = lineStart.y + lineUnitVec.y * clampedDotProduct;\r\n\r\n return {\r\n x: x,\r\n y: y,\r\n };\r\n}\r\n\r\nexport const findTopLeftPoint = (points) => {\r\n return points.reduce((topLeft, point) => {\r\n if (point.y < topLeft.y || (point.y === topLeft.y && point.x < topLeft.x)) {\r\n return point;\r\n }\r\n return topLeft;\r\n }, points[0]);\r\n};\r\n\r\nexport const adjustPointsRelativeToTopLeft = (points, topLeft) => {\r\n return points.map(point => ({\r\n x: point.x - topLeft.x,\r\n y: point.y - topLeft.y\r\n }));\r\n};\r\n\r\nexport const sortPointsClockwise = (points) => {\r\n let topLeft, topRight, bottomLeft, bottomRight;\r\n\r\n // Функция для округления координат\r\n const roundCoordinate = (value, precision = 10) => {\r\n const factor = Math.pow(10, precision); // precision — количество знаков после запятой\r\n return Math.round(value * factor) / factor;\r\n };\r\n\r\n // Округляем координаты точек\r\n const roundedPoints = points.map(point => ({\r\n x: roundCoordinate(point.x),\r\n y: roundCoordinate(point.y)\r\n }));\r\n\r\n // Находим крайние значения для округленных координат\r\n const minX = Math.min(...roundedPoints.map(p => p.x));\r\n const maxX = Math.max(...roundedPoints.map(p => p.x));\r\n const minY = Math.min(...roundedPoints.map(p => p.y));\r\n const maxY = Math.max(...roundedPoints.map(p => p.y));\r\n\r\n // Разделяем точки по их координатам\r\n roundedPoints.forEach(point => {\r\n if (point.x === minX && point.y === minY) {\r\n topLeft = point;\r\n } else if (point.x === maxX && point.y === minY) {\r\n topRight = point;\r\n } else if (point.x === minX && point.y === maxY) {\r\n bottomLeft = point;\r\n } else if (point.x === maxX && point.y === maxY) {\r\n bottomRight = point;\r\n }\r\n });\r\n\r\n // Проверяем, что все точки определены, чтобы не было undefined\r\n if (!topLeft || !topRight || !bottomLeft || !bottomRight) {\r\n console.error(\"Points\", points);\r\n console.error(\"One or more points are undefined\", {topLeft, topRight, bottomLeft, bottomRight});\r\n return null;\r\n }\r\n\r\n // Возвращаем точки в порядке: верхняя левая, верхняя правая, нижняя правая, нижняя левая\r\n return [topLeft, topRight, bottomRight, bottomLeft];\r\n};\r\n\r\nexport function calculatePolygonClippingPolygonArea(polygon) {\r\n if (!polygon || polygon.length === 0) return 0;\r\n\r\n let area = 0;\r\n const coordinates = polygon[0];\r\n\r\n for (let i = 0; i < coordinates.length - 1; i++) {\r\n const [x1, y1] = coordinates[i];\r\n const [x2, y2] = coordinates[i + 1];\r\n area += x1 * y2 - x2 * y1;\r\n }\r\n\r\n return Math.abs(area / 2);\r\n}\r\n\r\nexport function findNearestPoint (targetPoint, points) {\r\n let nearestPoint = null;\r\n let minDistance = Infinity;\r\n\r\n for (const point of points) {\r\n const distance = Math.sqrt(\r\n Math.pow(point.x - targetPoint.x, 2) + Math.pow(point.y - targetPoint.y, 2)\r\n );\r\n if (distance < minDistance) {\r\n minDistance = distance;\r\n nearestPoint = point;\r\n }\r\n }\r\n\r\n return nearestPoint;\r\n}\r\n\r\n/**\r\n * Compares two arrays of points and returns true if at least one coordinate differs.\r\n * @param {Array} arr1 - First array of points.\r\n * @param {Array} arr2 - Second array of points.\r\n * @returns {boolean} - True if at least one coordinate is different, otherwise false.\r\n */\r\nexport function arePointsDifferent(arr1, arr2) {\r\n if (arr1.length !== arr2.length) return true;\r\n\r\n for (let i = 0; i < arr1.length; i++) {\r\n if (arr1[i].x !== arr2[i].x || arr1[i].y !== arr2[i].y) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function getPointsCoords (shapeLines) {\r\n return shapeLines.map(line => { return {\r\n x: Math.round10(line.from.x, -4),\r\n y: Math.round10(line.from.y, -4),\r\n id: line.from.id\r\n }});\r\n}\r\n\r\nexport function getRotatedPointV1 (point, aroundPoint, angle) {\r\n let ret = {x: 0, y: 0};\r\n let tr = {x: point.x - aroundPoint.x, y: point.y - aroundPoint.y};\r\n\r\n ret.x = tr.x * Math.cos(angle) - tr.y * Math.sin(angle);\r\n ret.y = tr.x * Math.sin(angle) + tr.y * Math.cos(angle);\r\n\r\n const xPos = Math.round10(Math.round10(ret.x, -5) + Math.round10(aroundPoint.x, -5), -5);\r\n const yPos = Math.round10(Math.round10(ret.y, -5) + Math.round10(aroundPoint.y, -5), -5);\r\n\r\n return {...point, x: xPos, y: yPos}\r\n}\r\n","import RenderCabinets from \"./renderCabinets\";\r\nimport sqftConfig from \"../store/sqftConfig\";\r\nimport {\r\n getParallelPoints,\r\n getPointBetweenPoints,\r\n getPointOnTheLine,\r\n rotatePoint,\r\n getPointDistance,\r\n measureDistanceToInches, addDecimalToLength\r\n} from \"../../../helpers/sqftHelper\";\r\nimport workspace from \"../core/workspace\";\r\nimport {attachResource} from \"../core/controls/resourseCanas\";\r\nimport {MEASURE_UNITS, RESOURCE_ATTACHED_TO_TYPE} from \"../../../constants\";\r\nimport workspaceControllers from \"../store/workspaceControllers\";\r\nimport {areCollinearAndOverlap, calculateLeg, roundShapePoints} from \"../../../helpers/coordinatesHelper\";\r\nimport {DIRECTIONS} from \"../../../helpers/shapeHelper\";\r\nimport Point from \"../core/shapes/point\";\r\nimport Line from \"../core/shapes/line\";\r\n\r\n/**\r\n * @param line {{}}\r\n * @return {PointV2}\r\n */\r\nexport const getLineCrownMoldingPoints = (line) => {\r\n const linePointsIds = [\r\n line.from.id,\r\n line.to.id,\r\n ]\r\n const shapePoints = line.getParent().getPointsPointField();\r\n\r\n return RenderCabinets.getDiagonalPointsForTheLine(shapePoints, sqftConfig.crownMoldingParams.distance, linePointsIds);\r\n}\r\n\r\n/**\r\n * @param point1 {point}\r\n * @param point2 {point}\r\n * @param outlineDistance {int}\r\n * @return {[]}\r\n */\r\nexport const getLineBordersArrayV1 = (point1, point2, outlineDistance) => {\r\n const pointField1 = point1.getPointField(false);//point1 instanceof PointV2 ? point1.getPointField(false) : getPointField(point1.x, point1.y, point1.getParent());\r\n const pointField2 = point2.getPointField(false);//point2 instanceof PointV2 ? point2.getPointField() : getPointField(point2.x, point2.y, point2.getParent());\r\n const pointOnTheLine = getPointOnTheLine(pointField1, pointField2, outlineDistance);\r\n const pointOnTheLine2 = getPointOnTheLine(pointField2, pointField1, outlineDistance);\r\n return [\r\n rotatePoint(pointField1, pointOnTheLine, 90),\r\n rotatePoint(pointField1, pointOnTheLine, -90),\r\n rotatePoint(pointField2, pointOnTheLine2, 90),\r\n rotatePoint(pointField2, pointOnTheLine2, -90)\r\n ];\r\n}\r\n\r\n/**\r\n * @param point1 {point}\r\n * @param point2 {point}\r\n * @param outlineDistance {int}\r\n * @return {[]}\r\n */\r\nexport const getLineBordersArrayV2 = (point1, point2, outlineDistance) => {\r\n const pointField1 = point1.getPointField(false);//point1 instanceof PointV2 ? point1.getPointField(false) : getPointField(point1.x, point1.y, point1.getParent());\r\n const pointField2 = point2.getPointField(false);//point2 instanceof PointV2 ? point2.getPointField() : getPointField(point2.x, point2.y, point2.getParent());\r\n const [parallelPoint1, parallelPoint2] = getParallelPoints(pointField1, pointField2, outlineDistance);\r\n const [parallelPoint4, parallelPoint3] = getParallelPoints(pointField1, pointField2, -outlineDistance);\r\n return [\r\n parallelPoint1,\r\n parallelPoint2,\r\n parallelPoint3,\r\n parallelPoint4\r\n ];\r\n}\r\n\r\n\r\n/**\r\n * @param from {point}\r\n * @param to {point}\r\n * @param lineThickness {int}\r\n * @return {[]}\r\n */\r\nexport const getBordersOfTwoPoints = (from, to, lineThickness) => {\r\n const lineBorderArray = getLineBordersArrayV2(from, to, lineThickness);\r\n\r\n //console.log(\"lineBorderArray\", lineBorderArray);\r\n let virtualLines = [];\r\n for (const borderPointKey in lineBorderArray) {\r\n const len = lineBorderArray.length;\r\n const currentLineBorderPoint = lineBorderArray[+borderPointKey];\r\n //const previousLineBorderPoint = lineBorderArray[(lineBorderPointIndex + len - 1) % len];\r\n const nextLineBorderPoint = lineBorderArray[(+borderPointKey + 1) % len];\r\n let virtualLine = {\r\n from: {\r\n ...currentLineBorderPoint,\r\n modelCorePoint: {\r\n getPosX: function () { return currentLineBorderPoint.x },\r\n getPosY: function () { return currentLineBorderPoint.y }\r\n },\r\n getPointField: function () { return currentLineBorderPoint }\r\n },\r\n to: {\r\n ...nextLineBorderPoint,\r\n modelCorePoint: {\r\n getPosX: function () { return nextLineBorderPoint.x },\r\n getPosY: function () { return nextLineBorderPoint.y }\r\n },\r\n getPointField: function () { return nextLineBorderPoint }\r\n },\r\n getOffset: () => {\r\n return this.getOffset()\r\n }\r\n }\r\n virtualLines.push(virtualLine);\r\n }\r\n\r\n return virtualLines\r\n}\r\n\r\nexport const addEdgeToTheLines = (shapeId, edge, lineNumbers, shouldShowEyeBall = true) => {\r\n const shape = workspace.getShapeById(shapeId);\r\n const lines = shape.getLines();\r\n\r\n lines.forEach((line, index) => {\r\n if (lineNumbers.includes(index)) {\r\n //line.addEdgeToLine(edge.getFeatureName(), edge.dbFeature.id); // old functional\r\n attachResource(line,\r\n null,\r\n RESOURCE_ATTACHED_TO_TYPE.edge,\r\n edge.dbFeature.id,\r\n null,\r\n edge.getFeatureName(),\r\n 0,\r\n null,\r\n null,\r\n true,\r\n shouldShowEyeBall)\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * Add Edge Without feature for the slab and material calculation\r\n * @param shapeId\r\n * @param lineNumbers\r\n */\r\nexport const addFakeEdgeToLines = (shapeId, lineNumbers) => {\r\n const shape = workspace.getShapeById(shapeId);\r\n const lines = shape.getLines();\r\n\r\n lines.forEach((line, index) => {\r\n if (lineNumbers.includes(index)) {\r\n line.setFakeEdge(true);\r\n }\r\n })\r\n}\r\n\r\nexport const setLineParams = (shapeId, lineNumbers, params) => {\r\n const shape = workspace.getShapeById(shapeId);\r\n const lines = shape.getLines();\r\n\r\n lines.forEach((line, index) => {\r\n if (lineNumbers.includes(index)) {\r\n line.setStateParams(params);\r\n }\r\n })\r\n}\r\n\r\nexport const updateShapeWaterfallLength = (line) => {\r\n const shape = line.getParent();\r\n for (const shapeLine of shape.getLines()) {\r\n if (shapeLine.isWithWaterfallToolEdge() || shapeLine.isWithPeninsulaUnderwrapEdge()) {\r\n workspaceControllers.waterfall.updateWaterfallLength(shapeLine);\r\n }\r\n }\r\n}\r\n\r\nexport const updateMiteredLength = (line) => {\r\n const shape = line.getParent();\r\n for (const shapeLine of shape.getLines()) {\r\n if (shapeLine.isWithMitered()) {\r\n shapeLine.miteredOverlay.setNewLineWidth();\r\n }\r\n }\r\n}\r\n\r\nexport const updateUnderlaymentLength = (line) => {\r\n const shape = line.getParent();\r\n for (const shapeLine of shape.getLines()) {\r\n if (shapeLine.isWithUnderlayment()) {\r\n shapeLine.underlaymentOverlay.setNewLineWidth();\r\n }\r\n }\r\n}\r\n\r\n/**\r\n *\r\n * @param points[]\r\n * @return lines[{}]\r\n */\r\nexport const createSimpleLinesFromPoints = (points) => {\r\n let lines = [];\r\n\r\n for (let i = 0; i < points.length; i++) {\r\n let line = {\r\n from: points[i],\r\n to: points[(i + 1) % points.length]\r\n };\r\n lines.push(line);\r\n }\r\n\r\n return lines;\r\n};\r\n\r\nexport const initAllLineLength = () => {\r\n const lines = workspace.getLines();\r\n for (const line of lines) {\r\n if (line.overlay) {\r\n line.overlay.reInitEvents();\r\n }\r\n }\r\n}\r\n\r\nexport const hideAllLineLength = () => {\r\n const lines = workspace.getLines();\r\n for (const line of lines) {\r\n if (line.overlay) {\r\n line.overlay.deregisterEvents();\r\n }\r\n }\r\n}\r\n\r\nexport const findCollinearLine = (searchLine) => {\r\n const lines = workspace.getLines();\r\n const roundedSearchLinePoints = roundShapePoints([searchLine.from.getPointPosOnWorkspace(), searchLine.to.getPointPosOnWorkspace()]);\r\n for (const testLine of lines) {\r\n const roundedTestPoints = roundShapePoints([testLine.from.getPointPosOnWorkspace(), testLine.to.getPointPosOnWorkspace()]);\r\n if (areCollinearAndOverlap(roundedSearchLinePoints[0], roundedSearchLinePoints[1], roundedTestPoints[0], roundedTestPoints[1], 1)) {\r\n return testLine\r\n }\r\n }\r\n}\r\n\r\nexport const isHorizontalDirection = (lineDirection) => {\r\n return [DIRECTIONS.WEST, DIRECTIONS.EAST].includes(lineDirection)\r\n}\r\n\r\nexport const isVerticalDirection = (lineDirection) => {\r\n return [DIRECTIONS.NORTH, DIRECTIONS.SOUTH].includes(lineDirection)\r\n}\r\n\r\nexport const isWesternHemisphere = (lineDirection) => {\r\n return [DIRECTIONS.WEST, DIRECTIONS.NORTHWEST, DIRECTIONS.NORTH, DIRECTIONS.NORTHEAST].includes(lineDirection);\r\n}\r\n\r\nexport const isEasternHemisphere = (lineDirection) => {\r\n return [DIRECTIONS.EAST, DIRECTIONS.SOUTHWEST, DIRECTIONS.SOUTH, DIRECTIONS.SOUTHEAST].includes(lineDirection);\r\n}\r\n\r\n/**\r\n *\r\n */\r\nexport const getLinesWithoutAnglePoints = (lines) => {\r\n const adjustedLines = [];\r\n\r\n lines.forEach((line) => {\r\n if (line.to.angle > 0 && line.from.angle > 0) {\r\n // Both 'to' and 'from' have angles, adjust both points\r\n const legLengthTo = calculateLeg(line.to.angle);\r\n const legLengthFrom = calculateLeg(line.from.angle);\r\n\r\n // Calculate new points for 'to' and 'from'\r\n const linePosTo = getPointBetweenPoints(line.to, line.from, legLengthFrom, -2);\r\n const linePointTo = new Point(linePosTo.x, linePosTo.y);\r\n\r\n const linePosFrom = getPointBetweenPoints(line.from, line.to, legLengthFrom, -2);\r\n const linePointFrom = new Point(linePosFrom.x, linePosFrom.y);\r\n\r\n // Add current line resized\r\n const cloneLine = { ...line };\r\n cloneLine.to = linePointTo;\r\n cloneLine.from = linePointFrom;\r\n adjustedLines.push(cloneLine);\r\n\r\n // Create adjusted line\r\n const nextLine = line.getParent().getNextLine(line);\r\n const newLinePosFrom = getPointBetweenPoints(nextLine.from, nextLine.to, legLengthTo, -2);\r\n const newLinePointFrom = new Point(newLinePosFrom.x, newLinePosFrom.y);\r\n\r\n adjustedLines.push(new Line(linePointTo, newLinePointFrom, line.getParent()));\r\n\r\n } else if (line.to.angle > 0) {\r\n // Only 'to' has an angle\r\n const legLength = calculateLeg(line.to.angle);\r\n const newLinePosFrom = getPointBetweenPoints(line.to, line.from, legLength, -2);\r\n const newLinePointFrom = new Point(newLinePosFrom.x, newLinePosFrom.y);\r\n\r\n const nextLine = line.getParent().getNextLine(line);\r\n const newLinePosTo = getPointBetweenPoints(nextLine.from, nextLine.to, legLength, -2);\r\n const newLinePointTo = new Point(newLinePosTo.x, newLinePosTo.y);\r\n\r\n // Add current line resized\r\n const cloneLine = { ...line };\r\n cloneLine.to = newLinePointFrom;\r\n adjustedLines.push(cloneLine);\r\n\r\n // Create adjusted line\r\n adjustedLines.push(new Line(newLinePointFrom, newLinePointTo, line.getParent()));\r\n\r\n } else if (line.from.angle > 0) {\r\n // Only 'from' has an angle\r\n const legLength = calculateLeg(line.from.angle);\r\n const newLinePosTo = getPointBetweenPoints(line.from, line.to, legLength, -2);\r\n const newLinePointTo = new Point(newLinePosTo.x, newLinePosTo.y);\r\n\r\n const cloneLine = { ...line };\r\n cloneLine.from = newLinePointTo;\r\n adjustedLines.push(cloneLine);\r\n\r\n } else {\r\n // No angles, add line as is\r\n adjustedLines.push(line);\r\n }\r\n });\r\n\r\n return adjustedLines;\r\n};\r\n\r\n\r\n/**\r\n * Function to find the longest line in an array of lines.\r\n * @param {Array} lines - Array of lines where each line has properties from and to.\r\n * @returns {Object} The longest line object.\r\n */\r\nexport function findLongestLine(lines) {\r\n if (!lines || lines.length === 0) {\r\n return null;\r\n }\r\n\r\n let longestLine = lines[0];\r\n let maxLength = getPointDistance(longestLine.from, longestLine.to);\r\n\r\n lines.forEach(line => {\r\n const length = getPointDistance(line.from, line.to);\r\n if (length > maxLength) {\r\n maxLength = length;\r\n longestLine = line;\r\n }\r\n });\r\n\r\n return longestLine;\r\n}\r\n\r\nexport function getDistanceLength(distance) {\r\n switch (sqftConfig.measureUnit) {\r\n case MEASURE_UNITS.Metric:\r\n return measureDistanceToInches(distance).millimeters\r\n case MEASURE_UNITS.Imperial:\r\n default:\r\n return addDecimalToLength(measureDistanceToInches(distance))\r\n }\r\n}\r\n","//********* SQFT *********//\r\nimport * as types from \"./actionTypes\";\r\n\r\nexport const toggleShowManualCalculation = (showManualCalculation) => ({\r\n type: types.TOGGLE_SHOW_MANUAL_CALCULATION,\r\n payload: {showManualCalculation}\r\n});\r\n\r\nexport const setSwitcherPosition = (switcherPosition) => ({\r\n type: types.SET_SWITCHER_POSITION,\r\n payload: {switcherPosition}\r\n});\r\n\r\nexport const addManualCalculateRow = (type) => ({\r\n type: types.ADD_MANUAL_CALCULATION_ROW,\r\n payload: {type}\r\n});\r\n\r\nexport const updateManualCalculateRow = (type, row, updatedRowValue) => ({\r\n type: types.UPDATE_MANUAL_CALCULATION_ROW,\r\n payload: {type, row, updatedRowValue}\r\n});\r\n\r\nexport const updateManualCalculateRows = (manualCalculationRows) => ({\r\n type: types.UPDATE_MANUAL_CALCULATION_ROWS,\r\n payload: manualCalculationRows\r\n});\r\n\r\nexport const deleteManualCalculateRow = (type, id) => ({\r\n type: types.DELETE_MANUAL_CALCULATION_ROW,\r\n payload: {type, id}\r\n});\r\n","import {s3Path} from \"../../misc/utils\";\r\n\r\nexport default class Layer {\r\n zIndex = 0;\r\n\r\n src = '';\r\n\r\n fromS3 = true;\r\n\r\n /**\r\n * @param visualizer {string} bv or kv\r\n * @param zIndex {number}\r\n * @param src {string}\r\n * @param fromS3 {boolean} Whether the layer comes from S3 bucket ir from local resources\r\n */\r\n constructor(visualizer, zIndex = 0, src = '', fromS3 = true) {\r\n this.zIndex = zIndex;\r\n this.src = src;\r\n this.fromS3 = fromS3;\r\n this.visualizer = visualizer;\r\n this.bucketName = \"\";\r\n }\r\n\r\n /**\r\n *\r\n * @returns {{backgroundImage}|*}\r\n */\r\n bgImg(isCropped) {\r\n return this.fromS3 ? s3Path(this.src, this.visualizer, isCropped, this.bucketName) : this.src;\r\n }\r\n\r\n fromS3Binding(s3Binding) {\r\n this.src = s3Binding ? s3Binding.path : null;\r\n this.bucketName = s3Binding ? s3Binding.bucketName : \"\";\r\n }\r\n\r\n /**\r\n *\r\n * @param ar {Array.}\r\n */\r\n addTo(ar) {\r\n if (this.src)\r\n ar.push(this);\r\n }\r\n}\r\n\r\n\r\n","import {IntermediatePart} from \"../../intermediatePart\";\r\nimport {Shower} from \"../../parts/shower\";\r\nimport {Vanity} from \"../../parts/vanity\";\r\nimport {getCurrentRoomType} from \"../../../../appLayout\";\r\nimport {LOOK_ROOM_TYPES} from \"../../constants\";\r\n\r\nconst splitWallPartIds = [\"left_wall\", \"right_wall\", \"split_wall\", \"left_wall_splitter\"];\r\nconst shouldCheckAdditionalPartsConditions = [\"front_wall\", \"right_wall\", \"left_wall\"];\r\n\r\nexport default class WallCommon extends IntermediatePart {\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n getArrayOfConditions() {\r\n const conditions = super.getArrayOfConditions();\r\n const showerParent = this.getParent().layout.parts[Shower.id];\r\n const showerSize = showerParent ? showerParent.showerSize() : null;\r\n if (showerSize) {\r\n conditions.push({\r\n propName: \"ShowerSize\",\r\n propValue: showerSize\r\n })\r\n }\r\n\r\n if (getCurrentRoomType(showerParent.layout) === LOOK_ROOM_TYPES.as && splitWallPartIds.every(partId => this.partId !== partId)) {\r\n const wallParent = this.getParent();\r\n if (wallParent && wallParent.splitWall) {\r\n conditions.push({\r\n propName: \"SplitWallType\",\r\n propValue: wallParent.getSplitWallType()\r\n })\r\n }\r\n }\r\n return conditions\r\n }\r\n\r\n getAdditionalPartsConditions(arrayOfConditions = []) {\r\n if (shouldCheckAdditionalPartsConditions.every(partId => this.partId !== partId)) {\r\n return arrayOfConditions\r\n }\r\n const layout = this.getParent().layout;\r\n if (!layout) {\r\n return arrayOfConditions\r\n }\r\n const vanityParent = layout.parts[Vanity.id];\r\n if (!vanityParent) {\r\n return arrayOfConditions\r\n }\r\n // if (!arrayOfConditions.some(condition => condition.propName === \"VanitySize\")) {\r\n // const vanitySize = vanityParent.counterTopSize(this);\r\n // if (vanitySize) {\r\n // arrayOfConditions.push({\r\n // propName: \"VanitySize\",\r\n // propValue: vanitySize\r\n // })\r\n // }\r\n // }\r\n if (!arrayOfConditions.some(condition => condition.propName === \"MirrorShape\")) {\r\n const mirror = vanityParent.mirror;\r\n if (mirror && mirror.activeFeature && !mirror.disabled && mirror.activeFeature.metaData[\"MirrorShape\"]) {\r\n arrayOfConditions.push({\r\n propName: \"MirrorShape\",\r\n propValue: mirror.activeFeature.metaData[\"MirrorShape\"]\r\n })\r\n }\r\n }\r\n return arrayOfConditions\r\n }\r\n\r\n}\r\n","import {Shower} from \"../../parts/shower\";\r\nimport {IntermediatePart} from \"../../intermediatePart\";\r\nimport {SIDE_POSITIONS} from \"../../constants\";\r\n// import {SIDE_POSITIONS} from \"../../constants\";\r\n\r\nexport default class AccessoryCommon extends IntermediatePart {\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n getArrayOfConditions() {\r\n let conditions = super.getArrayOfConditions(); //roomLayout\r\n const layout = this.getParent().layout;\r\n const showerParent = layout.parts[Shower.id];\r\n const showerSize = showerParent.showerSize();\r\n if (showerParent && showerSize) {\r\n conditions.push({\r\n propName: \"ShowerSize\",\r\n propValue: showerSize\r\n });\r\n }\r\n return conditions\r\n }\r\n\r\n checkRelatedFeatureGroupPositions(position) {\r\n const accessoriesParent = this.getParent();\r\n const showerParent = accessoriesParent.layout.parts[Shower.id]; // no need for another check\r\n const showerSize = showerParent.showerSize();\r\n let otherFeatureGroup = null;\r\n switch (this.partId) {\r\n case \"grab_bar\":\r\n otherFeatureGroup = accessoriesParent.soapDish;\r\n break;\r\n case \"soap_dish\":\r\n otherFeatureGroup = accessoriesParent.grabBar;\r\n break;\r\n case \"shower_seats\":\r\n otherFeatureGroup = accessoriesParent.largeCornerSeat;\r\n break;\r\n case \"large_corner_seat\":\r\n otherFeatureGroup = accessoriesParent.seats;\r\n break;\r\n default:\r\n break;\r\n }\r\n if (showerSize === \"30\") {\r\n Object.keys(otherFeatureGroup.layerPositions).forEach(key => {\r\n otherFeatureGroup.layerPositions[key] = null\r\n })\r\n } else {\r\n if (this.layerPositions[position] && otherFeatureGroup && otherFeatureGroup.layerPositions[position] && !otherFeatureGroup.disabled) {\r\n const newPosition = position === SIDE_POSITIONS[0] ? SIDE_POSITIONS[1] : SIDE_POSITIONS[0];\r\n if (!this.layerPositions[newPosition]) {\r\n const matchingPositionFeature = otherFeatureGroup.getMatchingPositionFeature(newPosition, otherFeatureGroup.layerPositions[position]);\r\n if (matchingPositionFeature) {\r\n otherFeatureGroup.layerPositions[newPosition] = matchingPositionFeature;\r\n }\r\n }\r\n otherFeatureGroup.layerPositions[position] = null; //2) remove old soap dish position\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from \"react-redux\";\r\nimport $ from \"jquery\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport Analytics from \"../../../../analytics\";\r\nimport ActionTypes from \"../../../../misc/actionTypes\";\r\nimport LookFeatureRemoveButton from \"../../../look/lookNavigation/lookMain/lookFeatureRemoveButton\";\r\nimport {getCurrentLayout} from \"../../../appLayout\";\r\nimport {disableFeature} from \"../../../look/lookNavigation/lookFunctions2\";\r\nimport {updateCanvasCount} from \"../../../../actions/actionFunctions\";\r\n\r\nclass BodyPanelRadio extends Component {\r\n\r\n static propTypes = {\r\n activeSubPart: PropTypes.object.isRequired,\r\n isMobile: PropTypes.bool,\r\n quotingTool: PropTypes.bool,\r\n refreshItems: PropTypes.func,\r\n };\r\n\r\n // componentWillReceiveProps(nextProps) {\r\n // if (nextProps.updateDisableFeatureGroupRadio && !this.props.updateDisableFeatureGroupRadio) {\r\n // this.forceUpdate();\r\n // }\r\n // }\r\n\r\n radioClick = async () => {\r\n const activeSubPart = this.props.activeSubPart;\r\n Analytics.sendClickEvent('disable-toggle-' + activeSubPart.partId);\r\n const layout = getCurrentLayout();\r\n if (!activeSubPart.disabled && activeSubPart.activeFeature && layout.isNewLayout) {\r\n await disableFeature(activeSubPart.activeFeature)\r\n } else {\r\n activeSubPart.disabled = !activeSubPart.disabled;\r\n activeSubPart.disabledClick();\r\n activeSubPart.updateLocalStorage();\r\n }\r\n $(window).trigger(ActionTypes.CHANGE_LAYOUT); // update canvas\r\n if (this.props.refreshItems) {\r\n this.props.refreshItems();// update navigation (non compatible)\r\n }\r\n this.forceUpdate();\r\n this.props.updateCanvasCount();\r\n setTimeout(() => {\r\n this.forceUpdate(); // for slow udpates\r\n }, 0)\r\n };\r\n\r\n render() {\r\n const activeSubPart = this.props.activeSubPart;\r\n const cabinetsPartIds = [\"top_cabinet\", \"bottom_cabinet\", \"center_island_cabinet\"];\r\n const isCabinet = activeSubPart && cabinetsPartIds.includes(activeSubPart.partId);\r\n const countertopPartIds = [\"countertop\", \"backsplash\", \"center_island_countertop\"];\r\n const isCountertop = activeSubPart && countertopPartIds.includes(activeSubPart.partId);\r\n\r\n if (this.props.quotingTool) {\r\n return (\r\n

    \r\n \r\n \r\n
    \r\n )\r\n }\r\n\r\n\r\n const layout = getCurrentLayout();\r\n if (layout.isNewLayout) {\r\n if (!activeSubPart || !activeSubPart.activeFeature) {\r\n return null\r\n }\r\n const text = this.props.isMobile && activeSubPart.partId === \"center_island_cabinet\" && this.props.windowWidth < 800\r\n ? \"radioButton.on\"\r\n : \"radioButtonDisableFeatueGroup1\";\r\n return \r\n }\r\n\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {updateDisableFeatureGroupRadio} = store.navigationState;\r\n const {windowWidth} = store.serverState;\r\n const {canvasCount} = store.bathroomVisualizerState; // to update component when feature is changed\r\n\r\n return {\r\n updateDisableFeatureGroupRadio,\r\n windowWidth,\r\n canvasCount,\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n updateCanvasCount,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(BodyPanelRadio);\r\n\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\nimport $ from \"jquery\";\r\n\r\nimport Switch from '@mui/material/Switch';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\n\r\nimport {getCurrentLayout} from \"../../../appLayout\";\r\n// import COLOR_THEMES, {COLORS} from \"../../../../colorThemes\";\r\nimport {featureInterface} from \"../../../../interfaces/featureInterface\";\r\nimport {updateCanvasCount} from \"../../../../actions/actionFunctions\";\r\nimport {clickOnSimilarFeatures, getApplyToLogic} from \"../lookNavigationFunctions\";\r\nimport {IS_QKB_UI} from \"../../../../config\";\r\nimport ActionTypes from \"../../../../misc/actionTypes\";\r\nimport LookAllWallsRadioButtonSmall from \"./lookAllWallsRadioButtonSmall\";\r\n\r\n\r\nconst LookAllWallsRadioButton = (props) => {\r\n\r\n const {lookFeature, lookActiveFeature, intl, updateCanvasCount, dispatch, showColumnCheckbox, type, viewType,\r\n showTutorialToolTip, fabricatorData} = props;\r\n\r\n const wallFeature = lookFeature || lookActiveFeature;\r\n\r\n if (!wallFeature || fabricatorData.isEncore) {\r\n return null\r\n }\r\n\r\n const layout = getCurrentLayout();\r\n\r\n const applyToLogic = getApplyToLogic(wallFeature);\r\n if (!applyToLogic) {\r\n return null\r\n }\r\n\r\n const {translateId, setApplyToFunction, applyToArrayAll, currentApplyToArray} = applyToLogic;\r\n const checked = currentApplyToArray.includes(wallFeature.partId);\r\n\r\n const updateCanvas = () => {\r\n if (IS_QKB_UI) {\r\n $(window).trigger(ActionTypes.CHANGE_LAYOUT); // update canvas\r\n } else {\r\n updateCanvasCount();\r\n }\r\n }\r\n\r\n const allWallsCheckboxClick = async () => {\r\n if (checked) { // already enabled\r\n if (currentApplyToArray.length) {\r\n dispatch(setApplyToFunction([], true, applyToLogic.type))\r\n }\r\n applyToArrayAll.forEach(wallPartId => {\r\n const subPart = layout.getSubPartByPartId(wallPartId);\r\n if (!subPart || (subPart.part.partId === wallFeature.partId) || !subPart.part.activeFeatureBeforeAllWalls) {\r\n return null\r\n }\r\n subPart.part.activeFeatureBeforeAllWalls.clickFromAllWalls(true);\r\n });\r\n updateCanvas();\r\n return\r\n } // already enabled end\r\n\r\n if (applyToArrayAll.length !== currentApplyToArray.length) {\r\n dispatch(setApplyToFunction([...applyToArrayAll], true, applyToLogic.type)) // update checkbox\r\n }\r\n await clickOnSimilarFeatures(wallFeature, applyToLogic);\r\n updateCanvas();\r\n };\r\n\r\n if (showColumnCheckbox) {\r\n return (\r\n
    \r\n :\r\n \r\n
    \r\n )\r\n }\r\n\r\n if (type === \"small\") {\r\n return \r\n }\r\n\r\n return (\r\n \r\n }\r\n />\r\n )\r\n};\r\n\r\nLookAllWallsRadioButton.propTypes = {\r\n lookFeature: PropTypes.shape(featureInterface),\r\n showColumnCheckbox: PropTypes.bool,\r\n showTutorialToolTip: PropTypes.bool,\r\n type: PropTypes.string,\r\n viewType: PropTypes.number,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookActiveFeature, lookWallsApplyTo} = store.lookState;\r\n const {activeTheme} = store.serverState;\r\n const {countertopsApplyToArray, cabinetsApplyTo, cabinetsApplyToBathroom, edgesApplyTo, handlesApplyToBathroom,\r\n countertopsApplyToArrayBathroom, showerFloorApplyToBathroom} = store.navigationState;\r\n const fabricatorData = store.fabricatorState;\r\n\r\n return {\r\n lookActiveFeature,\r\n activeTheme,\r\n countertopsApplyToArray, cabinetsApplyTo, lookWallsApplyTo, cabinetsApplyToBathroom, edgesApplyTo,\r\n countertopsApplyToArrayBathroom, handlesApplyToBathroom, showerFloorApplyToBathroom, // update radio button on click\r\n fabricatorData,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n updateCanvasCount: () => dispatch(updateCanvasCount()),\r\n dispatch,\r\n }\r\n}\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookAllWallsRadioButton)\r\n)\r\n","import {PartMenuType} from \"../../visComponents/constants\";\r\nimport {iCmp} from \"../../../misc/utils\";\r\nimport Layer from \"../../visComponents/layer\";\r\nimport store from '../../../store';\r\nimport {LayoutType, METADATA} from \"./constants\";\r\nimport PartCommon from \"../../visComponents/partCommon\";\r\n\r\nexport class Part extends PartCommon {\r\n\r\n constructor(isParent, isChild, menuType) {\r\n super();\r\n if (isChild || (isParent && menuType === PartMenuType.Simple)) {\r\n this.featuresList = {};\r\n this.featuresPartsList = {};\r\n this.modulePartsList = {};\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this.featuresList[layoutName] = [];\r\n this.featuresPartsList[layoutName] = [];\r\n this.modulePartsList[layoutName] = [];\r\n });\r\n this.allFeaturesReceived = false;\r\n this.realFeaturesReceived = false; // this prop is need on Scroll (if features count more that 1000)\r\n this.nextFeaturesPageToLoad = 0;\r\n this.activeFeature = null;\r\n this.placeholderFeature = null;\r\n this.shadowFeature = null;\r\n this.placeholderChanged = false;\r\n this.firstClick = {\r\n \"0\": false\r\n };\r\n this.activeLockedFeature = null;\r\n this.activeNotInVisualizerFeature = null; // is needed to display in the QT selected activeNotInVisualizerFeature, but render proper activeFeature layer(for example, countertop)\r\n // name = \"\";\r\n this.visible = true;\r\n this.categoryEnabled = false;\r\n this.layout = null;\r\n this.featureGroupVisible = true; // dashboard's feature group eye ball logic\r\n this.featureGroupEnabled = true; // dashboard's feature group checkbox logic\r\n this.selectedFeaturesHistory = []; // array of strings(names). updated every time item is selected\r\n this.filtersReceived = null; // array of filters values, comes from BE, for ex [1221, 347, 1124]\r\n }\r\n if (isParent) {\r\n this.partThumbnail = '';\r\n this.relatedItems = [];\r\n }\r\n if (!isChild && !isParent) {\r\n this.dbFeature = null;\r\n this.layer = new Layer(\"kv\");\r\n this._customDisplayName = null;\r\n this.notesList = {};\r\n }\r\n this.partName = \"\";\r\n }\r\n\r\n set features(featuresList) {\r\n // features can't be set directly, we need to change featuresList array\r\n }\r\n get features() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.featuresList[layout.getCurrentLayoutName()]\r\n }\r\n set featuresParts(featuresList) {\r\n // featuresParts can't be set directly, we need to change featuresPartsList array\r\n }\r\n get featuresParts() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.featuresPartsList[layout.getCurrentLayoutName()]\r\n }\r\n get moduleParts() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.modulePartsList[layout.getCurrentLayoutName()]\r\n }\r\n\r\n setGroupFeatures(dbFeaturesArray, pageSize = 1000, setNextPage = true, layoutAbbr = \"\", loadedPage = null, fromSearch = false) {\r\n\r\n super.setGroupFeatures(dbFeaturesArray, pageSize, setNextPage, layoutAbbr, loadedPage, fromSearch)\r\n\r\n if (this.partId === \"edge_profile\" || this.partId === \"center_island_edge\") {\r\n const countertop = this.getParent().countertop;\r\n // console.log('countertop', countertop);\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n const edgeGroup = filterGroups.find(group => group.name === \"Edge\" || group.name === \"Edge Profile\");\r\n if (edgeGroup && countertop) {\r\n Object.keys(this.featuresList).forEach(layoutType => {\r\n for (let i = 0; i < this.featuresList[layoutType].length; i++) {\r\n const feature = this.featuresList[layoutType][i];\r\n if (feature.dbFeature.filterValueIDs[edgeGroup.id]) {\r\n const edgeValue = feature.dbFeature.filterValueIDs[edgeGroup.id][0];\r\n const edgeExist = countertop.featuresList[layoutType].some(countertopFeature => {\r\n return countertopFeature.dbFeature.filterValueIDs[edgeGroup.id]\r\n && countertopFeature.dbFeature.filterValueIDs[edgeGroup.id].includes(edgeValue)\r\n });\r\n if (edgeExist) {\r\n feature.notAvailableInVisualizer = false\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Checks whether a given for condition matches the needed value (or array of values)\r\n * @param name {string}\r\n * @param value {string || array}\r\n * @returns {int} -1 - no such for condition, 0 - no match, 1 - matches\r\n */\r\n matchesMetaForCondition(name, value) {\r\n return this.metaData[name] && this.metaData[name].some(condValue => {\r\n return condValue === METADATA.ALL || (Array.isArray(value) ? value.some(val => iCmp(condValue, val, true)) : iCmp(condValue, value, true))\r\n });\r\n }\r\n\r\n matchesMetaForArrayOfConditions(arrayOfConditions) {\r\n return arrayOfConditions.every((condition) => {\r\n return this.matchesMetaForCondition(condition.propName, condition.propValue);\r\n })\r\n }\r\n}\r\n\r\n\r\n","import { hashHistory } from 'react-router';\r\nimport store from '../store';\r\nimport {getCurrentLayout} from \"../bvcomponents/appLayout\";\r\nimport {switchToWizardItem} from \"../bvcomponents/qkbPages/materialsWizard/useChangeWizardStepRoute\";\r\n\r\nexport const changeRoutePath = (activePart, nextRelatedItemIndex, withHidden = true) => {\r\n let selectionGroup = store.getState().selectionState.selectionGroup;\r\n if (!selectionGroup) {\r\n return\r\n }\r\n const partName = selectionGroup.toLowerCase();\r\n // console.log('activePart', activePart);\r\n if (!activePart) {\r\n return\r\n }\r\n if (activePart.menuType === 0 || activePart.partName === \"Toilet\") {\r\n const nextPath = 'materials/'+partName;\r\n if (!window.location.href.includes(nextPath)) {\r\n hashHistory.push(nextPath);\r\n }\r\n } else {\r\n const part = activePart.subParts(withHidden)[nextRelatedItemIndex];\r\n if (part) {\r\n const subPartName = part.part.partName.toLowerCase().replace(\" \",\"-\");\r\n const nextPath = 'materials/'+partName+'/'+subPartName;\r\n if (!window.location.href.includes(nextPath)) {\r\n hashHistory.push(nextPath);\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const getMaterialsFixedName = (qtCategoryName = \"\") => {\r\n return qtCategoryName.replace(/ /g,\"-\").replace(/\\//g,\"-\").toLowerCase()\r\n}\r\n\r\nexport const changeQTRoutePath = (qtCategoryName, nextRelatedItemIndex) => {\r\n\r\n const {wizardIsActive, wizardActiveItem} = store.getState().wizardState;\r\n if (wizardIsActive) {\r\n switchToWizardItem(wizardActiveItem);\r\n return\r\n }\r\n\r\n const layout = getCurrentLayout();\r\n if (!qtCategoryName) {\r\n qtCategoryName = store.getState().qtState.qtActiveCategory || layout.qtCategories[0].name;\r\n }\r\n if (!nextRelatedItemIndex && (nextRelatedItemIndex !== 0)) {\r\n nextRelatedItemIndex = store.getState().selectionState.activePartRelatedItemIndex;\r\n }\r\n let qtCategory = layout.qtCategories.find(qtCat => qtCat.name === qtCategoryName);\r\n if (!qtCategory) { //cases when we switched visualizer type and qtCategoryName is still an old one\r\n qtCategory = layout.qtCategories[0];\r\n }\r\n let partName = getMaterialsFixedName(qtCategoryName);\r\n let nextSubPart = qtCategory.subParts[nextRelatedItemIndex] || qtCategory.subParts[0];\r\n if (!nextSubPart) {\r\n console.log(\"ERROR, no subparts exist in the category\", qtCategory);\r\n if (layout.qtCategories[0] && layout.qtCategories[0].subParts.length) {\r\n hashHistory.push('materials/'+partName);\r\n return\r\n } else {\r\n for (let i = 0; i < layout.qtCategories.length; i++) {\r\n // here we check at least some category which has featureGroup with features!\r\n if (layout.qtCategories[i] && layout.qtCategories[i].subParts.length) {\r\n partName = getMaterialsFixedName(layout.qtCategories[i].name);\r\n nextSubPart = layout.qtCategories[i].subParts[0];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (!nextSubPart) {\r\n hashHistory.push(\"/materials\");\r\n return;\r\n }\r\n const subPartName = getMaterialsFixedName(nextSubPart.part.partName);\r\n const nextPath = 'materials/'+partName+'/'+subPartName;\r\n if (!window.location.href.includes(nextPath)) {\r\n hashHistory.push(nextPath);\r\n }\r\n\r\n return nextSubPart\r\n\r\n};\r\n","export const LayoutType = {\r\n Layout1: 1,\r\n Layout2: 2,\r\n Layout41: 41,\r\n};\r\n\r\nexport const LayoutAbbreviation = {\r\n All: \"ALL\",\r\n Layout1: \"Layout1\",\r\n Layout2: \"Layout2\",\r\n Layout41: \"Layout41\",\r\n};\r\n\r\nexport const LayoutAbbreviations = [\r\n \"Layout1\",\r\n \"Layout2\",\r\n \"Layout41\",\r\n];\r\nexport const LayoutAbbreviationsToRemove = [\r\n \"Layout41\",\r\n \"Layout2\",\r\n \"Layout1\",\r\n];\r\n\r\nexport const METADATA = {\r\n ALL: \"ALL\"\r\n};\r\n\r\nexport const DECORS_MAX = 10;\r\n\r\nexport const SLAT_WALL_POSITIONS = [\"S1\",\"S2\",\"S3\",\"S4\"];\r\n","import {createContext, useContext} from \"react\";\r\n\r\nexport const initialShopContextValues = {\r\n shopNavItems: [],\r\n shopAllNavItems: [],\r\n shopNavItemsLoaded: false,\r\n shopActiveCategory: \"\",\r\n shopActiveFeature: \"\",\r\n shopLastActiveFeature: \"\",\r\n};\r\n\r\nconst shopAction = \"CHANGE_SHOP_CONTEXT\";\r\n\r\nconst ShopContext = createContext({});\r\n\r\nexport const useShopContext = () => {\r\n return useContext(ShopContext);\r\n}\r\n\r\nexport const shopContextAction = (payload) => {\r\n return {\r\n type: shopAction,\r\n payload\r\n }\r\n}\r\n\r\nexport const shopContextReducer = (state = initialShopContextValues, action) => {\r\n switch (action.type) {\r\n case shopAction:\r\n return {...state, ...action.payload};\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport default ShopContext;\r\n","import PrintDocument from \"../bvcomponents/popups/printPopup/printDocument\";\r\n\r\nimport store from './../store';\r\nimport * as types from \"./actionTypes\";\r\nimport {convertImgToBase64URL, THUMBNAIL_SIZES} from \"../misc/utils\";\r\nimport {getFabricatorLogo} from \"../misc/fabricatorHardcode\";\r\nimport {featureThumbnailUrl} from \"../misc/helpers\";\r\nimport {WIZARD_GROUP_TYPES} from \"../interfaces/wizardItemInterface\";\r\nimport {baseNewImagesPath} from \"../bvcomponents/assets\";\r\nimport {ASYNC_SCRIPTS} from \"../loadingLogic\";\r\nimport {loadScriptPromise} from \"../misc/loadScript\";\r\nimport {registerFonts} from \"../bvcomponents/popups/printPopup/printDocumentStyles\";\r\n\r\nlet printLogo = \"\";\r\nlet notFoundImage = \"\";\r\n\r\nexport const loadReceiptScript = async () => {\r\n await loadScriptPromise(ASYNC_SCRIPTS.bundleReactPdfRenderer, \"bundleReactPdfRenderer\");\r\n registerFonts();\r\n}\r\n\r\nexport const getCurrentReceipt = async (assignQuotePopupNewCustomer, newEmployeeSelected, onRender, isContractSign) => {\r\n\r\n const {userState, serverState, fabricatorState, cartState, quotesState, priceWorksheetState,\r\n filterState, assignQuoteState, wizardState, sqftSlabState, printState} = store.getState();\r\n\r\n const {assignQuotePopupCustomer, assignQuotePopupEmployee} = assignQuoteState;\r\n\r\n await loadReceiptScript();\r\n\r\n printLogo = printLogo || await convertImgToBase64URL(getFabricatorLogo(fabricatorState));\r\n let cartItemsThumbnails = {};\r\n if (fabricatorState.receiptSettings && fabricatorState.receiptSettings.showThumbnailsAndDescriptions) {\r\n cartItemsThumbnails = await getCartItemThumbnails(cartState.cartItems, wizardState);\r\n }\r\n\r\n return window.ReactPdfRenderer.pdf(PrintDocument({\r\n fabricatorData: fabricatorState,\r\n userInfo: userState.userInfo,\r\n quotes: quotesState.quotes,\r\n cartItems: cartState.cartItems,\r\n priceWorksheetState,\r\n assignQuotePopupCustomer: assignQuotePopupNewCustomer || assignQuotePopupCustomer,\r\n employeeSelected: newEmployeeSelected || assignQuotePopupEmployee,\r\n locale: serverState.language,\r\n filterGroups: filterState.filterGroups,\r\n activeTheme: serverState.activeTheme,\r\n jobId: serverState.jobId,\r\n printLogo,\r\n wizardState,\r\n sqftSlabState,\r\n cartItemsThumbnails,\r\n printState,\r\n onRender,\r\n isContractSign,\r\n }))\r\n}\r\n\r\n// export const getCurrentReceiptPages = async (withReceiptUrl) => {\r\n// try {\r\n// const pdfReceipt = await getCurrentReceipt();\r\n// if (pdfReceipt && pdfReceipt.container && pdfReceipt.container.render) {\r\n// await pdfReceipt.container.render();\r\n// if (pdfReceipt.container.document && pdfReceipt.container.document.getLayoutData) {\r\n// const layoutData = pdfReceipt.container.document.getLayoutData();\r\n// if (layoutData && Array.isArray(layoutData.children) && layoutData.children.length) {\r\n// if (withReceiptUrl) {\r\n// const receipt = await pdfReceipt.toBlob();\r\n// const receiptUrl = URL.createObjectURL(receipt);\r\n// return {receiptUrl, receiptPages: layoutData.children.length};\r\n// }\r\n// return layoutData.children.length\r\n// }\r\n// }\r\n// }\r\n// if (withReceiptUrl) {\r\n// return {receiptUrl: \"\", receiptPages: 0};\r\n// }\r\n// return 0\r\n// } catch (e) {\r\n// console.log(\"error rendering pdf receipt\", e);\r\n// if (withReceiptUrl) {\r\n// return {receiptUrl: \"\", receiptPages: 0};\r\n// }\r\n// return 0\r\n// }\r\n// }\r\n\r\nexport const getCurrentReceiptPages = async (withReceiptUrl) => {\r\n try {\r\n let imagesPromise = new Promise(async (resolve) => {\r\n const onRender = (onRenObj) => {\r\n // console.log(\"onRender!!\", onRenObj);\r\n const receiptLayout = onRenObj ? onRenObj._INTERNAL__LAYOUT__DATA_ : null;\r\n const receiptPages = receiptLayout && receiptLayout.children ? receiptLayout.children.length : 1;\r\n const receiptUrl = URL.createObjectURL(onRenObj.blob);\r\n\r\n resolve({receiptUrl, receiptLayout, receiptPages})\r\n };\r\n const pdfReceipt2 = await getCurrentReceipt(null, null, onRender, true)\r\n await pdfReceipt2.toBlob();\r\n })\r\n if (withReceiptUrl) {\r\n return imagesPromise.then(response => response)\r\n }\r\n return 0\r\n } catch (e) {\r\n console.log(\"error rendering pdf receipt\", e);\r\n if (withReceiptUrl) {\r\n return {receiptUrl: \"\", receiptPages: 0};\r\n }\r\n return 0\r\n }\r\n}\r\n\r\nexport const getCartItemThumbnails = async (cartItems, wizardState) => {\r\n let cartItemsThumbnails = {};\r\n for (const cartItem of cartItems) {\r\n try {\r\n const thumbnailUrl = featureThumbnailUrl(cartItem.cartFeature, THUMBNAIL_SIZES.small);\r\n cartItemsThumbnails[cartItem.id] = await convertImgToBase64URL(thumbnailUrl);\r\n if (!cartItemsThumbnails[cartItem.id]) {\r\n if (!notFoundImage) {\r\n notFoundImage = await convertImgToBase64URL(`${baseNewImagesPath}images/image-not-found.png`);\r\n }\r\n cartItemsThumbnails[cartItem.id] = notFoundImage\r\n }\r\n } catch (e) {\r\n cartItemsThumbnails[cartItem.id] = `${baseNewImagesPath}images/image-not-found.png`;\r\n }\r\n }\r\n for (const wizard of wizardState.allWizardsValues) {\r\n for (const key of Object.keys(wizard.wizardSelectedValues)) {\r\n if (wizard.wizardSelectedValues[key].wizardGroup\r\n && (wizard.wizardSelectedValues[key].wizardGroup.nodeType === WIZARD_GROUP_TYPES.custom)\r\n && wizard.wizardSelectedValues[key].wizardGroup.customImageUrl) {\r\n try {\r\n cartItemsThumbnails[wizard.wizardSelectedValues[key].wizardGroup.id] = await convertImgToBase64URL(\r\n `https://corsproxy.io/?url=${encodeURIComponent(wizard.wizardSelectedValues[key].wizardGroup.customImageUrl)}`\r\n );\r\n if (!cartItemsThumbnails[wizard.wizardSelectedValues[key].wizardGroup.id]) {\r\n cartItemsThumbnails[wizard.wizardSelectedValues[key].wizardGroup.id] = await convertImgToBase64URL(\r\n `https://proxy.corsfix.com/?${wizard.wizardSelectedValues[key].wizardGroup.customImageUrl}`\r\n );\r\n }\r\n if (!cartItemsThumbnails[wizard.wizardSelectedValues[key].wizardGroup.id]) {\r\n cartItemsThumbnails[wizard.wizardSelectedValues[key].wizardGroup.id] = await convertImgToBase64URL(\r\n wizard.wizardSelectedValues[key].wizardGroup.customImageUrl\r\n );\r\n }\r\n if (!cartItemsThumbnails[wizard.wizardSelectedValues[key].wizardGroup.id]) {\r\n cartItemsThumbnails[wizard.wizardSelectedValues[key].wizardGroup.id] = await convertImgToBase64URL(\r\n wizard.wizardSelectedValues[key].wizardGroup.customImageUrl + \"?not-from-cache-please\"\r\n );\r\n }\r\n if (!cartItemsThumbnails[wizard.wizardSelectedValues[key].wizardGroup.id]) {\r\n if (!notFoundImage) {\r\n notFoundImage = await convertImgToBase64URL(`${baseNewImagesPath}images/image-not-found.png`);\r\n }\r\n cartItemsThumbnails[wizard.wizardSelectedValues[key].wizardGroup.id] = notFoundImage\r\n }\r\n } catch (e) {\r\n cartItemsThumbnails[wizard.wizardSelectedValues[key].wizardGroup.id] = `${baseNewImagesPath}images/image-not-found.png`;\r\n }\r\n }\r\n }\r\n }\r\n return cartItemsThumbnails\r\n}\r\n\r\nexport const getOfflineReceiptImages = async () => {\r\n const {fabricatorState} = store.getState();\r\n notFoundImage = await convertImgToBase64URL(`${baseNewImagesPath}images/image-not-found.png`)\r\n printLogo = await convertImgToBase64URL(getFabricatorLogo(fabricatorState));\r\n await getCurrentReceiptPages(true);\r\n return true\r\n}\r\n\r\nexport const printReceipt = async () => {\r\n const pdfReceipt = await getCurrentReceipt();\r\n const receipt = await pdfReceipt.toBlob();\r\n const fileURL = URL.createObjectURL(receipt);\r\n window.open(fileURL, \"_blank\");\r\n}\r\n\r\nexport const setReceiptUrl = (receiptUrl) => ({\r\n type: types.SET_RECEIPT_URL,\r\n payload: {receiptUrl}\r\n})\r\n\r\nexport const setReceiptSignature = (receiptSignature) => ({\r\n type: types.SET_RECEIPT_SIGNATURE,\r\n payload: {receiptSignature}\r\n})\r\n\r\nexport const setReceiptReferral = (receiptReferral) => ({\r\n type: types.SET_RECEIPT_REFERRAL,\r\n payload: {receiptReferral}\r\n})\r\n","import store from \"./../../../store\";\r\nimport config from \"../components/canvas/store/sqftConfig\";\r\nimport workspace from \"../components/canvas/core/workspace\";\r\nimport {\r\n //calculateHypotenuse,\r\n getBacksplashArea,\r\n getEdgeLength,\r\n inchesToLNFT,\r\n inchesToMm,\r\n mm2ToM2,\r\n mmToM,\r\n sqInchesToSqFoot\r\n} from \"./sqftHelper\";\r\nimport {RESOURCE_ATTACHED_TO_TYPE, SQFT_FEATURES} from \"../constants\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport MiteredController from \"../components/canvas/core/controls/mitered\";\r\nimport sqftSlabManager from \"../components/canvas/store/sqftSlabManager\";\r\nimport sqftShapeManager from \"../components/canvas/store/sqftShapeManager\";\r\nimport {SHAPE_LAYOUTS} from \"../components/canvas/core/cabinet/cabinetShapes\";\r\n//import {findGLBLink, getThirdPartyAR3DMetaData} from \"./sqft3dArHelper\";\r\n\r\nexport function manualCalculationsCheckForChangesApplied() {\r\n return manualCalculationsCountertopArea() > 0 || manualCalculationsEdgesLength() > 0 || manualCalculationsBacksplashArea() > 0\r\n}\r\n\r\n//TODO include edges length\r\nexport function manualCalculationsCountertopArea() {\r\n const state = store.getState();\r\n\r\n let totalArea = state.sqftManualCalculationState.countertopRows.reduce((sum, row) => {\r\n if (!row.length || !row.width || isNaN(row.length) || isNaN(row.width)) {\r\n return sum\r\n }\r\n\r\n return config.measureUnit === \"Imperial\"\r\n ? sum + Math.ceil(sqInchesToSqFoot(row.length * row.width))\r\n : sum + mm2ToM2(row.length * row.width)\r\n }, 0);\r\n\r\n return Math.ceil10(totalArea, -2);\r\n}\r\n\r\nexport function manualCalculationsEdgesLength() {\r\n const state = store.getState();\r\n let totalArea = state.sqftManualCalculationState.edgeRows.reduce((sum, row) => {\r\n if (!row.length || !row.height || isNaN(row.length) || isNaN(row.height)) {\r\n return sum\r\n }\r\n\r\n return sum + manualCalculationsEdgeLength(row.selectedFeature, row.length)\r\n }, 0);\r\n\r\n return config.measureUnit === \"Imperial\" ? Math.ceil10(totalArea) : Math.ceil10(totalArea, -2);\r\n}\r\n\r\nexport function manualCalculationsEdgeLength(selectedFeature, length) {\r\n return selectedFeature && selectedFeature.dbFeature && selectedFeature.dbFeature.unit.toLowerCase() === \"each\"\r\n ? 1\r\n : config.measureUnit === \"Imperial\" ? Math.ceil10(inchesToLNFT(length)) : Math.ceil10(mmToM(length), -2);\r\n}\r\n\r\nexport function manualCalculationsBacksplashArea() {\r\n const state = store.getState();\r\n\r\n return getRowSum(state.sqftManualCalculationState.backsplashRows);\r\n}\r\nconst getRowSum = (row) => {\r\n let totalArea = row.reduce((sum, row) => {\r\n if (!row.length || !row.height || isNaN(row.length) || isNaN(row.height)) {\r\n return sum\r\n }\r\n\r\n return config.measureUnit === \"Imperial\"\r\n ? sum + Math.ceil(sqInchesToSqFoot(row.length * row.height))\r\n : sum + mm2ToM2(row.length * row.height)\r\n }, 0);\r\n\r\n return Math.ceil10(totalArea, -2);\r\n}\r\n\r\nexport function getCountertopArea() {\r\n let totalArea = 0;\r\n const shapes = sqftShapeManager.getCounterTopShapes();\r\n //console.log(\"-------------------------\",);\r\n shapes\r\n .sort((a, b) => a.id - b.id)\r\n .forEach(function(shape) {\r\n totalArea += shape.getTotalArea();\r\n });\r\n //console.log(\"-------------------------\",);\r\n //console.log(\"total sqInchesToSqFoot(totalArea)\", sqInchesToSqFoot(totalArea));\r\n return {\r\n totalAreaToMeasureUnit: config.measureUnit === \"Imperial\" ? Math.ceil(sqInchesToSqFoot(totalArea)) : mm2ToM2(totalArea),\r\n totalArea: totalArea,\r\n shapeLength: shapes.length\r\n }\r\n}\r\n\r\nexport function getCabinetsVolume(partIds) {\r\n let totalVolume = 0;\r\n const shapes = sqftShapeManager.getCabinetShapes(partIds);\r\n shapes\r\n .sort((a, b) => a.id - b.id)\r\n .forEach(function(shape) {\r\n totalVolume += shape.getTotalVolume();\r\n });\r\n\r\n return config.measureUnit === \"Imperial\" ? Math.ceil(sqInchesToSqFoot(totalVolume)) : mm2ToM2(totalVolume)\r\n}\r\n\r\nexport function getCabinetsDoorsSQFT(partIds) {\r\n let totalSQFT = 0;\r\n const shapes = sqftShapeManager.getCabinetShapes(partIds);\r\n shapes\r\n .sort((a, b) => a.id - b.id)\r\n .forEach((shape) => {\r\n totalSQFT += getCabinetDoorsSQFT(shape)\r\n });\r\n\r\n return config.measureUnit === \"Imperial\" ? Math.ceil10(sqInchesToSqFoot(totalSQFT), -2) : mm2ToM2(totalSQFT);\r\n}\r\n\r\nexport function getCabinetDoorsSQFT(shape) {\r\n return getCabinetLNFT(shape) * shape.getHeight(true);\r\n}\r\n\r\n// export function getCabinetDoorsSQFT(shape) {\r\n// let totalSQFT = 0;\r\n// let cathetus = shape.getWidth() - shape.getDepth(true);\r\n// let lines = shape.getLines();\r\n//\r\n// switch (shape.shapeParams.shapeLayout) {\r\n// case SHAPE_LAYOUTS.LowerLCorner: //SHAPE_LAYOUTS.lowerLayoutType1,\r\n// totalSQFT += (lines[2].getLineLength() + lines[3].getLineLength()) * shape.getHeight(true);\r\n// break;\r\n// case SHAPE_LAYOUTS.LowerDullangle: //SHAPE_LAYOUTS.lowerLayoutType2,\r\n// case SHAPE_LAYOUTS.LowerDualangle: //SHAPE_LAYOUTS.lowerLayoutType2,\r\n// totalSQFT += lines[1].getLineLength() * shape.getHeight(true) + lines[2].getLineLength() * shape.getHeight(true);\r\n// break;\r\n// case SHAPE_LAYOUTS.LowerDimondShape: //SHAPE_LAYOUTS.lowerLayoutType4,\r\n// totalSQFT += Math.round10(calculateHypotenuse(cathetus, cathetus), -2) * shape.getHeight(true);\r\n// break;\r\n// case SHAPE_LAYOUTS.LowerDimondCorner: //SHAPE_LAYOUTS.lowerLayoutType5,\r\n// totalSQFT += (shape.getWidth() - shape.getDepth(true)) * 2;\r\n// break;\r\n// case SHAPE_LAYOUTS.UpperLCorner: // SHAPE_LAYOUTS.upperLayoutType2,\r\n// totalSQFT += (shape.getWidth() - shape.getDepth(true)) * 2;\r\n// break;\r\n// case SHAPE_LAYOUTS.UpperDimondShape: //SHAPE_LAYOUTS.upperLayoutType4,\r\n// totalSQFT += Math.round10(calculateHypotenuse(cathetus, cathetus), -2);\r\n// break;\r\n// case SHAPE_LAYOUTS.UpperDimondCorner: //SHAPE_LAYOUTS.upperLayoutType5,\r\n// totalSQFT += Math.round10(calculateHypotenuse(cathetus, cathetus), -2);\r\n// break;\r\n// case SHAPE_LAYOUTS.LowerIroningBoard: break;//SHAPE_LAYOUTS.lowerLayoutType3,\r\n// case SHAPE_LAYOUTS.LowerIroningBoardRight: break;//SHAPE_LAYOUTS.lowerLayoutType3,\r\n// case SHAPE_LAYOUTS.LowerIroningBoardLeft: break;//SHAPE_LAYOUTS.lowerLayoutType3,\r\n// default:\r\n// totalSQFT += shape.getWidth() * shape.getHeight(true);\r\n// break;\r\n// }\r\n//\r\n// return config.measureUnit === \"Imperial\" ? Math.ceil10(sqInchesToSqFoot(totalSQFT), -2) : mm2ToM2(totalSQFT)\r\n// }\r\n\r\nexport function getCabinetsLNFT(partIds) {\r\n let totalLength = 0;\r\n const shapes = sqftShapeManager.getCabinetShapes(partIds);\r\n shapes\r\n .sort((a, b) => a.id - b.id)\r\n .forEach((shape) => {\r\n totalLength += getCabinetLNFT(shape);\r\n });\r\n\r\n return totalLength //config.measureUnit === \"Imperial\" ? Math.ceil(inchesToLNFT(totalLength)) : mm2ToM2(totalLength)\r\n}\r\n\r\nexport function getCabinetLNFT(shape) {\r\n let totalLength = 0;\r\n let lines = shape.getLines();\r\n switch (shape.shapeParams.shapeLayout) {\r\n case SHAPE_LAYOUTS.UpperDimondCorner: //SHAPE_LAYOUTS.upperLayoutType5,\r\n case SHAPE_LAYOUTS.LowerDimondCorner: //SHAPE_LAYOUTS.lowerLayoutType5,\r\n totalLength += lines[2].getLineLength() + lines[3].getLineLength();\r\n break;\r\n case SHAPE_LAYOUTS.UpperLCorner: // SHAPE_LAYOUTS.upperLayoutType2,\r\n case SHAPE_LAYOUTS.LowerLCorner: //SHAPE_LAYOUTS.lowerLayoutType1,\r\n totalLength += lines[2].getLineLength() + lines[3].getLineLength();\r\n break;\r\n case SHAPE_LAYOUTS.LowerDullangle: //SHAPE_LAYOUTS.lowerLayoutType2,\r\n case SHAPE_LAYOUTS.LowerDualangle: //SHAPE_LAYOUTS.lowerLayoutType2,\r\n totalLength += lines[1].getLineLength() + lines[2].getLineLength();\r\n break;\r\n case SHAPE_LAYOUTS.UpperDimondShape: //SHAPE_LAYOUTS.upperLayoutType4,\r\n case SHAPE_LAYOUTS.LowerDimondShape: //SHAPE_LAYOUTS.lowerLayoutType4,\r\n //totalLength += Math.round10(calculateHypotenuse(cathetus, cathetus), -1);\r\n totalLength += lines[2].getLineLength();\r\n break;\r\n case SHAPE_LAYOUTS.LowerIroningBoard: //SHAPE_LAYOUTS.lowerLayoutType3,\r\n break;\r\n case SHAPE_LAYOUTS.LowerIroningBoardRight: //SHAPE_LAYOUTS.lowerLayoutType3,\r\n break;\r\n case SHAPE_LAYOUTS.LowerIroningBoardLeft: //SHAPE_LAYOUTS.lowerLayoutType3,\r\n break;\r\n default:\r\n totalLength += lines[0].getLineLength();\r\n break;\r\n }\r\n\r\n return totalLength\r\n}\r\n\r\nexport function getQuantityFromFiltersByShapes(shapes, filterKey) {\r\n const { filterGroups } = store.getState().filterState;\r\n let totalQuantity = 0;\r\n\r\n shapes\r\n .sort((a, b) => a.id - b.id)\r\n .forEach(function(shape) {\r\n const feature = shape.getFeature();\r\n let quantity = 0;\r\n if (feature) {\r\n quantity = feature.getFeatureSavedFilterName(filterGroups, filterKey, filterKey);\r\n }\r\n totalQuantity += +quantity;\r\n });\r\n\r\n return totalQuantity;\r\n}\r\n\r\nexport function getQuantityFromFilters(partIds, filterKey) {\r\n const shapes = sqftShapeManager.getCabinetShapes(partIds);\r\n\r\n return getQuantityFromFiltersByShapes(shapes, filterKey);\r\n}\r\n\r\nexport function getTotalDoors(partIds) {\r\n return getQuantityFromFilters(partIds, \"Number_of_Doors\");\r\n}\r\n\r\nexport function getTotalKnobs(partIds) {\r\n return getQuantityFromFilters(partIds, \"Number_of_Knobs\");\r\n}\r\n\r\nexport function getTotalDrawers(partIds) {\r\n return getQuantityFromFilters(partIds, \"Number_of_Drawers\");\r\n}\r\n\r\nexport function getEdgesArea() {\r\n let edgeCount = 0;\r\n //let edges = workspace.getShapeType('edge');\r\n const edges = workspace.getAttachedToLineResource(RESOURCE_ATTACHED_TO_TYPE.edge);\r\n\r\n for (const edge of edges) {\r\n const attachedTo = workspace.getLineOrCornerLineById(edge.attachedToId);\r\n edgeCount += getEdgeLength(attachedTo);\r\n }\r\n\r\n if (workspace.miteredController instanceof MiteredController) {\r\n edgeCount += workspace.miteredController.getEdgesLength();\r\n }\r\n\r\n return config.measureUnit === \"Imperial\" ? Math.ceil(edgeCount) : Math.ceil10(edgeCount, -2);\r\n}\r\n\r\nexport function getBacksplashTotalArea() {\r\n let backsplashesArea = 0;\r\n const state = store.getState();\r\n const attachedToLineResources = state.sqftResourceState.attachedToLine;\r\n const backsplashes = attachedToLineResources.filter(attachedToLineResources => attachedToLineResources.type === RESOURCE_ATTACHED_TO_TYPE.backsplash)\r\n for (let i = 0; i < backsplashes.length; i++) {\r\n const line = workspace.getLineOrCornerLineById(backsplashes[i].attachedToId)\r\n if (line) {\r\n backsplashesArea += getBacksplashArea(line.getBacksplashHeight(), line);\r\n }\r\n }\r\n\r\n const backsplashLabeledShapes = sqftShapeManager.getBacksplashLabeledShapes()\r\n backsplashLabeledShapes.forEach(function(shape) {\r\n if (shape.getTotalArea) {\r\n const shapeArea = shape.getTotalArea();\r\n backsplashesArea += config.measureUnit === \"Imperial\" ? Math.ceil(sqInchesToSqFoot(shapeArea)) : mm2ToM2(shapeArea)\r\n }\r\n });\r\n\r\n return config.measureUnit === \"Imperial\" ? Math.ceil10(backsplashesArea) : Math.ceil10(backsplashesArea, -2);\r\n}\r\n\r\nexport const getConvertedMultipliedValue = (length, height) => {\r\n return config.measureUnit === \"Imperial\"\r\n ? Math.ceil(sqInchesToSqFoot(length * height))\r\n : mm2ToM2(length * height)\r\n}\r\n\r\nexport const getExportedManualCalculateBacksplashes = () => {\r\n const state = store.getState();\r\n let backsplashes = [];\r\n\r\n state.sqftManualCalculationState.backsplashRows.forEach((row) => {\r\n if (!row.length || !row.height || isNaN(row.length) || isNaN(row.height)) {\r\n return\r\n }\r\n let area = getConvertedMultipliedValue(row.length, row.height);\r\n let linearFeet = Math.ceil(inchesToLNFT(row.length)); // / 12\r\n let M = mmToM(row.length);\r\n backsplashes.push({\r\n id: row.id,\r\n partId: \"backsplashes\",\r\n length: area,\r\n squareFeet: area,\r\n realLength: config.measureUnit === \"Imperial\" ? linearFeet : M,\r\n inputLength: row.length,\r\n inputHeight: row.height,\r\n });\r\n });\r\n\r\n return backsplashes;\r\n}\r\n\r\nexport const getExportedManualCalculateEdges = () => {\r\n const state = store.getState();\r\n let selectedEdges = [];\r\n\r\n state.sqftManualCalculationState.edgeRows.forEach((row) => {\r\n if (!row.length || !row.height || isNaN(row.length) || isNaN(row.height)) {\r\n return\r\n }\r\n if (!row.selectedFeature) {\r\n console.log(\"edge was not selected in manual calculations\");\r\n return\r\n }\r\n selectedEdges.push({\r\n id: row.id,\r\n featureId: row.selectedFeature.dbFeature.id,\r\n partId: \"edges\",\r\n length: manualCalculationsEdgeLength(row.selectedFeature, row.length),\r\n unit: row.selectedFeature.dbFeature.unit,\r\n inputLength: row.length,\r\n inputHeight: row.height,\r\n name: row.type,\r\n segments: 1,\r\n });\r\n });\r\n\r\n return selectedEdges;\r\n}\r\n\r\n/**\r\n * @returns string\r\n */\r\nexport const getCountertopQtCategory = () => {\r\n const layout = getCurrentLayout();\r\n const mainNeeded = \"center_island_countertop\";\r\n const oppositeNeeded = \"countertop\";\r\n let featureGroupCountertop = layout.getSubPartFromQtCategories(mainNeeded);\r\n if (!featureGroupCountertop) {\r\n return oppositeNeeded\r\n }\r\n\r\n return mainNeeded\r\n}\r\n\r\n/**\r\n * @returns countertops[]\r\n */\r\nexport const getExportedManualCalculateCountertops = () => {\r\n const state = store.getState();\r\n let countertops = [];\r\n\r\n state.sqftManualCalculationState.countertopRows.forEach((row) => {\r\n if (!row.length || !row.width || isNaN(row.length) || isNaN(row.width)) {\r\n return\r\n }\r\n countertops.push({\r\n id: row.id,\r\n partId: getCountertopQtCategory(),\r\n inputLength: row.length,\r\n inputWidth: row.width,\r\n area: getConvertedMultipliedValue(row.length, row.width)\r\n });\r\n });\r\n\r\n return countertops;\r\n}\r\n\r\n/**\r\n * This will return area for slabImages and slab placeHolder shapes\r\n * @return {Number|*|number}\r\n */\r\nexport function getSlabTotalArea() {\r\n const state = store.getState();\r\n let slabImages = state.sqftSlabState.croppedSlabImages;\r\n let slabPlaceHolderShapes = sqftSlabManager.getSlabPlaceHolderShapes();\r\n if (slabImages.length === 0 && slabPlaceHolderShapes.length === 0) {\r\n return 0\r\n }\r\n let totalArea = [...slabImages, ...slabPlaceHolderShapes].reduce((previousValue, slabImage) => {\r\n let imageSize = slabImage.getSize()\r\n previousValue += imageSize.width * imageSize.height\r\n\r\n return previousValue\r\n }, 0)\r\n\r\n return config.measureUnit === \"Imperial\" ? Math.ceil10(sqInchesToSqFoot(totalArea)) : Math.ceil10(mmToM(totalArea), -2);\r\n}\r\n\r\nexport function getSlabImagesAreaGrouped() {\r\n const state = store.getState();\r\n const slabImages = state.sqftSlabState.croppedSlabImages;\r\n const slabPlaceHolderShapes = sqftSlabManager.getSlabPlaceHolderShapes();\r\n const slabImagesAndPlaceHolders = [...slabImages, ...slabPlaceHolderShapes];\r\n\r\n let slabImagesPrepared = [];\r\n for (let movableImage of slabImagesAndPlaceHolders) {\r\n let preparedSlabImage = slabImagesPrepared.find(prepared =>\r\n prepared.featureId === movableImage.featureId\r\n );\r\n\r\n if (preparedSlabImage) {\r\n preparedSlabImage.isDisabledInPopup = preparedSlabImage.isDisabledInPopup && movableImage.isDisabledInPopup;\r\n continue;\r\n }\r\n\r\n let totalArea = getSlabSameTypeArea(movableImage.featureId, slabImagesAndPlaceHolders);\r\n let totalSlabs = getSlabSameType(movableImage.featureId, slabImagesAndPlaceHolders).length;\r\n\r\n slabImagesPrepared.push({\r\n id: movableImage.id,\r\n partId: SQFT_FEATURES.slabs,\r\n slabParentPartId: movableImage.slabParentPartId,\r\n featureId: movableImage.featureId,\r\n totalSlabs: totalSlabs,\r\n totalArea: totalArea,\r\n pricePerArea: movableImage.pricePerArea,\r\n shouldUseSlabPricing: movableImage.shouldUseSlabPricing,\r\n isDisabledInPopup: movableImage.isDisabledInPopup\r\n });\r\n }\r\n\r\n return slabImagesPrepared;\r\n}\r\n\r\nexport function getSlabSameTypeArea(featureId, croppedSlabImages) {\r\n let totalArea = croppedSlabImages\r\n .filter(croppedSlabImage => croppedSlabImage.featureId === featureId)\r\n .reduce((previousValue, slabImage) => {\r\n const imageSize = slabImage.getSize();\r\n const width = config.measureUnit === \"Imperial\" ? imageSize.width : inchesToMm(imageSize.width);\r\n const height = config.measureUnit === \"Imperial\" ? imageSize.height : inchesToMm(imageSize.height);\r\n previousValue += width * height;\r\n\r\n return previousValue\r\n }, 0)\r\n\r\n return config.measureUnit === \"Imperial\" ? Math.ceil10(sqInchesToSqFoot(totalArea)) : Math.ceil10(mm2ToM2(totalArea), -2);\r\n}\r\n\r\nexport function getSlabSameType(featureId, croppedSlabImages) {\r\n return croppedSlabImages.filter(croppedSlabImage => croppedSlabImage.featureId === featureId);\r\n}\r\n","import clone from 'lodash/clone';\r\n\r\nimport workspace from \"../core/workspace\";\r\nimport {\r\n SHAPE_PART_ID,\r\n} from \"../../../constants\";\r\nimport sqftShape from \"../core/shapes/sqftShape\";\r\nimport ShapeHelper from \"../../../helpers/shapeHelper\";\r\nimport sqftShapeManager from \"./sqftShapeManager\";\r\nimport sqftSlabManager from \"./sqftSlabManager\";\r\nimport {renderErrorPopup} from \"../../../../../api/api-popups\";\r\n\r\nconst sqftShapeIntersectionsManager = {\r\n resetShapesIntersections() {\r\n const shapes = workspace.getShapes();\r\n for (const shape of shapes) {\r\n if (shape instanceof sqftShape) {\r\n shape.shapeIntersections.setOverlappedWithShapeIds([]);\r\n }\r\n }\r\n },\r\n updateShapesIntersections() {\r\n this.resetShapesIntersections();\r\n\r\n const shapes = workspace.getShapes();\r\n //console.log(\"----------------------\");\r\n for (const shape of shapes) {\r\n if (shape instanceof sqftShape) {\r\n for (const testShape of shapes) {\r\n if (testShape instanceof sqftShape\r\n && shape.id !== testShape.id\r\n ) {\r\n const shapeIntersections = ShapeHelper.getTwoShapesIntersections(shape, testShape);\r\n const shapeIds = Object.keys(shapeIntersections);\r\n if (shapeIds.length) {\r\n shape.shapeIntersections.addOverlappedWithShape(+shapeIds[0]);\r\n } else if (ShapeHelper.checkIfShapeContainsAnother(shape, testShape)) {\r\n //console.log(\"shapeId\", shape.id);\r\n //console.log(\"testShapeId\", testShape.id);\r\n testShape.shapeIntersections.addOverlappedWithShape(shape.id);\r\n shape.shapeIntersections.addOverlappedWithShape(testShape.id);\r\n }\r\n }\r\n }\r\n //console.log(\"shapeId\", shape.id);\r\n //console.log(\"shape.shapeIntersections.overlappedWithShapeIds\", shape.shapeIntersections.overlappedWithShapeIds);\r\n }\r\n }\r\n //this.logShapeFeatureIds()\r\n },\r\n logShapeFeatureIds() {\r\n const shapes = workspace.getShapes();\r\n for (const shape of shapes) {\r\n console.log(\"shape id\", shape.id);\r\n console.log(\"shape feature id\", shape.featureId);\r\n console.log(\"shape shapeIntersections overlappedWithShapeIds\", shape.shapeIntersections.overlappedWithShapeIds);\r\n }\r\n },\r\n logSnappedShapeGroups() {\r\n const shapes = workspace.getShapes();\r\n console.log(\"------\");\r\n for (const shape of shapes) {\r\n if (shape instanceof sqftShape) {\r\n console.log(\"shape id\", shape.id);\r\n console.log(\"shape area\", shape.getTotalArea());\r\n console.log(\"shape getSnappedShapeGroup\", shape.shapeAbsolute.getSnappedShapeGroup());\r\n console.log(\"shape shapeSlab getSnappedShapeGroup\", shape.shapeSlab.shapeAbsolute.getSnappedShapeGroup());\r\n }\r\n }\r\n console.log(\"------\");\r\n },\r\n updateSlabPlaceholderFeatureId() {\r\n const shapes = workspace.getShapes();\r\n for (const shape of shapes) {\r\n if (shape instanceof sqftShape\r\n && shape.partId === SHAPE_PART_ID.slabPlaceHolder\r\n ) {\r\n //console.log(\"update feature shape.shapeIntersections.overlappedWithShapeIds\", shape.shapeIntersections.overlappedWithShapeIds);\r\n if (shape.shapeIntersections.overlappedWithShapeIds.length >= 1) {\r\n const intersectedShape = sqftShapeManager.getShapeById(shape.shapeIntersections.overlappedWithShapeIds[0]);\r\n shape.setFeatureId(clone(intersectedShape.featureId));\r\n shape.setSlabParentPartId(clone(intersectedShape.slabParentPartId ? intersectedShape.slabParentPartId : intersectedShape.partId));\r\n }\r\n }\r\n }\r\n },\r\n\r\n showSlabPlaceHolderErrorMessage (\r\n slabPlaceHolderShapes = sqftSlabManager.getSlabPlaceHolderShapes(),\r\n callback = new Function()\r\n ) {\r\n for (const slabPlaceHolderShape of slabPlaceHolderShapes) {\r\n //console.log(\"slabPlaceHolderShape.overlappedWithShapeIds\", slabPlaceHolderShape.shapeIntersections.overlappedWithShapeIds);\r\n if (slabPlaceHolderShape.shapeIntersections.overlappedWithShapeIds.length >= 2) {\r\n const shapes = sqftShapeManager.getShapeByIds(slabPlaceHolderShape.shapeIntersections.overlappedWithShapeIds);\r\n if (\r\n !sqftShapeManager.hasSameSharedFeatureName(shapes)\r\n && !sqftShapeManager.hasSameFeatureId(shapes)\r\n ) {\r\n\r\n renderErrorPopup(workspace.intl.formatMessage({id: \"sqft.popup.system.slabPlaceholderMultipleOverlap\"}));\r\n callback();\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default sqftShapeIntersectionsManager\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from 'react-redux';\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport {setCabinetsApplyTo, setCabinetsApplyToBathroom} from \"../../../actions/navigationFunctions\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport UiSelect from \"../../ui/select\";\r\nimport {CABINET_GROUP} from \"../core/constants\";\r\nimport Analytics from '../../../analytics';\r\nimport {CABINET_GROUP_BATHROOM} from \"../../bvSceneComponent/core/constants\";\r\nimport store from \"../../../store\";\r\nimport {getFeatureGroupName} from \"../../../misc/helpers\";\r\nimport {getMissingFeaturesAndClickThem} from \"../../look/lookNavigation/lookNavigationFunctions\";\r\n\r\nclass CabinetSwitchers extends Component {\r\n\r\n static propTypes = {\r\n activeSubPart: PropTypes.object.isRequired,\r\n isMobile: PropTypes.bool,\r\n };\r\n\r\n componentDidMount() {\r\n const cabinetsApplyTo = this.getCabinetsApplyTo();\r\n const setCabinetsApplyTo = this.getSetCabinetsApplyTo();\r\n if (!cabinetsApplyTo.includes(this.props.activeSubPart.partId)) {\r\n cabinetsApplyTo.push(this.props.activeSubPart.partId);\r\n setCabinetsApplyTo(cabinetsApplyTo);\r\n }\r\n }\r\n\r\n toggleCabinetsApplyTo = (partId) => {\r\n Analytics.sendClickEvent('cabinets-apply-to-' + partId);\r\n let cabinetsApplyTo = [...this.getCabinetsApplyTo()];\r\n const setCabinetsApplyTo = this.getSetCabinetsApplyTo();\r\n const existingIndex = cabinetsApplyTo.findIndex(cabinetsApplyToPartId => cabinetsApplyToPartId === partId);\r\n if (existingIndex > -1) {\r\n cabinetsApplyTo.splice(existingIndex, 1)\r\n } else {\r\n cabinetsApplyTo.push(partId)\r\n }\r\n setCabinetsApplyTo(cabinetsApplyTo);\r\n };\r\n\r\n getButtonName = (partId, layout) => {\r\n const {intl, fabricatorData} = this.props;\r\n if (intl.locale !== \"en-EN\") {\r\n const featureGroup = layout.getFeatureGroupByPartId(partId);\r\n if (featureGroup) {\r\n return getFeatureGroupName(featureGroup, intl, fabricatorData)\r\n }\r\n }\r\n switch (partId) {\r\n case \"top_cabinet\":\r\n return this.props.showAsDropdown ? \"upper cabinet\" : \"upper\";\r\n case \"bottom_cabinet\":\r\n return this.props.showAsDropdown ? \"lower cabinet\" : \"lower\";\r\n case \"center_island_cabinet\":\r\n return \"center island\";\r\n case \"vanity_cabinet\":\r\n return \"Cabinet\";\r\n case \"vanity_mirror\":\r\n return \"Mirror\";\r\n default:\r\n return \"\"\r\n }\r\n };\r\n\r\n static getFeatureDoorStyleFilter = (feature, filterName = \"DoorStyle\") => {\r\n if (!feature) {\r\n return null\r\n }\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n const doorStyleFilterGroup = filterGroups.find(group => group.name === filterName);\r\n return doorStyleFilterGroup && (feature.dbFeature.fabFilterValueIDs[doorStyleFilterGroup.id] || feature.dbFeature.filterValueIDs[doorStyleFilterGroup.id])\r\n };\r\n\r\n static getNeededFeatureFromNavItems = (navigationItemName, featureGroup) => {\r\n return featureGroup.features.find((feature) => {\r\n const featureName = feature.getSplittedFeatureName().replace(`${feature.dbFeature.groupName} - `, \"\");\r\n return featureName && navigationItemName && (featureName === navigationItemName)\r\n });\r\n }\r\n\r\n static applyClickTo = async (navigationItemPart, ignoreLocked, cabinetsApplyTo, setCurrentFeature = false) => {\r\n const layout = getCurrentLayout();\r\n let missingFeatures = [];\r\n for (const neededPartId of cabinetsApplyTo) {\r\n const featureGroup = layout.getFeatureGroupByPartId(neededPartId);\r\n if (!featureGroup) {\r\n continue;\r\n }\r\n let neededFeature;\r\n if (document.kvConfig.visualizerType === \"bvScene\") {\r\n const doorStyles = CabinetSwitchers.getFeatureDoorStyleFilter(navigationItemPart, \"DoorStyle\");\r\n const materials = CabinetSwitchers.getFeatureDoorStyleFilter(navigationItemPart, \"Material\");\r\n neededFeature = doorStyles && featureGroup.features.find((feature) => {\r\n const featureDoorStyles = CabinetSwitchers.getFeatureDoorStyleFilter(feature, \"DoorStyle\");\r\n const featureMaterials = CabinetSwitchers.getFeatureDoorStyleFilter(feature, \"Material\");\r\n return doorStyles && featureDoorStyles && materials && featureMaterials\r\n && (featureDoorStyles.some(ds => doorStyles.includes(ds)))\r\n && (featureMaterials.some(mat => materials.includes(mat)))\r\n });\r\n } else {\r\n const navigationItemName = navigationItemPart.getSplittedFeatureName().replace(`${navigationItemPart.dbFeature.groupName} - `, \"\");\r\n neededFeature = CabinetSwitchers.getNeededFeatureFromNavItems(navigationItemName, featureGroup);\r\n if (!neededFeature\r\n && (!featureGroup.alreadyRequestedFeatureNames || !featureGroup.alreadyRequestedFeatureNames.includes(navigationItemName))) {\r\n missingFeatures.push({relatedItem: featureGroup, navigationItemName, setCurrentFeature: true})\r\n }\r\n }\r\n if (neededFeature) {\r\n if (setCurrentFeature) {\r\n featureGroup.activeFeatureBeforeAllWalls = featureGroup.activeFeature;\r\n }\r\n neededFeature.clickFromAllWalls(ignoreLocked);\r\n }\r\n }\r\n if (missingFeatures.length) {\r\n await getMissingFeaturesAndClickThem(missingFeatures, true)\r\n }\r\n return Promise.resolve()\r\n }\r\n\r\n static applyAllCabinets = (navigationItemPart, ignoreLocked) => {\r\n const propsCabinetsApplyTo = store.getState().navigationState[\r\n document.kvConfig.visualizerType === \"bvScene\" ? \"cabinetsApplyToBathroom\" : \"cabinetsApplyTo\"\r\n ];\r\n const cabinetsApplyTo = [...propsCabinetsApplyTo];\r\n const existingIndex = cabinetsApplyTo.findIndex(cabinetsApplyToPartId => cabinetsApplyToPartId === navigationItemPart.partId);\r\n if (existingIndex > -1) {\r\n cabinetsApplyTo.splice(existingIndex, 1); // remove already clicked partId\r\n }\r\n return CabinetSwitchers.applyClickTo(navigationItemPart, ignoreLocked, cabinetsApplyTo)\r\n };\r\n\r\n getValueText = () => {\r\n if (this.props.windowWidth < 720) {\r\n return \r\n } else if (this.props.windowWidth < 800) {\r\n return \r\n } else {\r\n return \r\n }\r\n };\r\n\r\n buttonIsDisabled = (partId) => {\r\n const layout = getCurrentLayout();\r\n return this.props.activeSubPart.partId === partId\r\n || (document.kvConfig.visualizerType === \"Kitchen\" && partId === \"center_island_cabinet\"\r\n && !layout.getCurrentLayoutAbbreviation().includes(\"I\"));\r\n }\r\n\r\n renderDropDown = () => {\r\n const CABINETGROUPS = this.getCabinetGroups();\r\n const cabinetsApplyTo = this.getCabinetsApplyTo();\r\n const layout = getCurrentLayout();\r\n\r\n return (\r\n \r\n {CABINETGROUPS.map(partId => {\r\n const disabledButton = this.buttonIsDisabled(partId);\r\n return (\r\n
  • \r\n disabledButton ? false : this.toggleCabinetsApplyTo(partId)}/>\r\n disabledButton ? false : this.toggleCabinetsApplyTo(partId)}>\r\n {this.getButtonName(partId, layout)}\r\n \r\n
  • \r\n )\r\n })}\r\n
    \r\n )\r\n };\r\n\r\n getCabinetGroups = () => {\r\n if (document.kvConfig.visualizerType === \"bvScene\") {\r\n return CABINET_GROUP_BATHROOM\r\n }\r\n return [...CABINET_GROUP].filter(partId => partId !== \"fridge_enclosure\");\r\n };\r\n\r\n getCabinetsApplyTo = () => {\r\n return document.kvConfig.visualizerType === \"bvScene\" ? this.props.cabinetsApplyToBathroom : this.props.cabinetsApplyTo;\r\n };\r\n\r\n getSetCabinetsApplyTo = () => {\r\n return document.kvConfig.visualizerType === \"bvScene\" ? this.props.setCabinetsApplyToBathroom : this.props.setCabinetsApplyTo;\r\n };\r\n\r\n render() {\r\n const CABINETGROUPS = this.getCabinetGroups();\r\n if (this.props.showAsDropdown) {\r\n return this.renderDropDown()\r\n }\r\n const cabinetsApplyTo = this.getCabinetsApplyTo();\r\n const layout = getCurrentLayout();\r\n return (\r\n
    \r\n
    Apply to
    \r\n
      \r\n {CABINETGROUPS.map(partId => {\r\n const hideButton = this.buttonIsDisabled(partId);\r\n return hideButton ? null : (\r\n
    • this.toggleCabinetsApplyTo(partId)}>\r\n \r\n {this.getButtonName(partId, layout)}\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 = (store) => ({\r\n cabinetsApplyTo: store.navigationState.cabinetsApplyTo,\r\n cabinetsApplyToBathroom: store.navigationState.cabinetsApplyToBathroom,\r\n windowWidth: store.serverState.windowWidth,\r\n fabricatorData: store.fabricatorState,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n setCabinetsApplyTo,\r\n setCabinetsApplyToBathroom\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(CabinetSwitchers)\r\n);\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nclass FeatureWizardSteps extends Component {\r\n\r\n static propTypes = {\r\n availableSteps: PropTypes.array,\r\n featureWizardStep: PropTypes.number,\r\n setFeatureWizardStep: PropTypes.func,\r\n exitFeatureWizard: PropTypes.func,\r\n getFilterDisplayName: PropTypes.func.isRequired,\r\n toggleWizardFilterSelection: PropTypes.func,\r\n allProducts: PropTypes.bool,\r\n allStepsCompleted: PropTypes.bool,\r\n finishClicked: PropTypes.bool,\r\n showFeatureWizard: PropTypes.bool,\r\n };\r\n\r\n setFeatureWizardStep = (nextStep, disabled) => {\r\n\r\n if (disabled) {\r\n return false;\r\n }\r\n\r\n switch (nextStep) {\r\n case \"back\":\r\n nextStep = this.props.featureWizardStep === 0 ? 0 : this.props.featureWizardStep - 1;\r\n break;\r\n case \"next\":\r\n if (this.props.featureWizardStep === (this.props.availableSteps.length - 1)) {\r\n this.props.exitFeatureWizard(this.props.availableSteps);\r\n return;\r\n } else {\r\n nextStep = this.props.featureWizardStep + 1;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n const currentStep = this.props.availableSteps[nextStep - 1];\r\n const fabricatorSettings = this.props.fabricatorSettings;\r\n if ((nextStep > this.props.featureWizardStep) && currentStep && !this.props.allStepsCompleted\r\n && (!currentStep.selectedValueId || (fabricatorSettings.leadCapture && currentStep.selectedItemIsLocked && !this.props.isPhoneNumberValidated))) {\r\n return\r\n }\r\n if (this.props.showFeatureWizard) {\r\n this.props.setFeatureWizardStep(nextStep);\r\n if (nextStep === 0) {\r\n this.props.toggleWizardFilterSelection(false);\r\n }\r\n } else {\r\n this.props.enableFeatureWizard(nextStep);\r\n }\r\n };\r\n\r\n render() {\r\n // console.log('features top', this.props.features);\r\n const currentStep = this.props.availableSteps[this.props.featureWizardStep];\r\n // const nextStep = this.props.availableSteps[this.props.featureWizardStep + 1];\r\n const isLastStep = this.props.featureWizardStep === this.props.availableSteps.length - 1;\r\n\r\n const fabricatorSettings = this.props.fabricatorSettings;\r\n const nextStepIsLocked = currentStep && !this.props.allStepsCompleted && fabricatorSettings.leadCapture && currentStep.selectedItemIsLocked && !this.props.isPhoneNumberValidated;\r\n\r\n const lastStepIsDisabled = currentStep && (!currentStep.selectedValueId || nextStepIsLocked);\r\n\r\n return (\r\n
    \r\n {this.props.showFeatureWizard && (this.props.allProducts || !this.props.allStepsCompleted || (this.props.allStepsCompleted && !this.props.finishClicked)) ? (\r\n
    this.setFeatureWizardStep(\"back\")}>\r\n \r\n
    \r\n ) : null}\r\n
      \r\n {this.props.allProducts || (this.props.showFeatureWizard && this.props.finishClicked) ? (\r\n
    • this.props.exitFeatureWizard(this.props.availableSteps)}>\r\n \r\n
    • \r\n ) : null}\r\n {this.props.availableSteps.map((wizardButton, index) => {\r\n const prevStep = this.props.availableSteps[index - 1];\r\n const disabled = index && (!prevStep.selectedValueId\r\n || (fabricatorSettings.leadCapture && prevStep.selectedItemIsLocked && !this.props.isPhoneNumberValidated));\r\n const buttonName = this.props.getFilterDisplayName(wizardButton.filterName);\r\n const displayName = this.props.getFilterDisplayName(wizardButton.filterName, this.props.intl);\r\n return (\r\n
    • this.setFeatureWizardStep(index, disabled)}>\r\n {displayName}\r\n {this.props.availableSteps[index].selectedValueId && index !== this.props.featureWizardStep\r\n ? \r\n : null\r\n }\r\n
    • \r\n )\r\n })}\r\n
    \r\n {this.props.showFeatureWizard && (this.props.allProducts || !this.props.allStepsCompleted || (this.props.allStepsCompleted && !this.props.finishClicked)) ? (\r\n
    this.setFeatureWizardStep(\"next\", lastStepIsDisabled)}>\r\n \r\n \r\n \r\n
    \r\n ) : null}\r\n
    \r\n )\r\n }\r\n}\r\n\r\n\r\nconst mapStateToProps = (store) => ({\r\n fabricatorSettings: store.fabricatorState.settings,\r\n});\r\n\r\nconst mapDispatchToProps = () => ({});\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(FeatureWizardSteps)\r\n);\r\n","import React from \"react\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport isObject from \"lodash/isObject\";\r\nimport WithOverlay from \"./withOverlayHoc\";\r\nimport ExclamationMarkIcon from \"../ui/icons/exclamationMarkIcon\";\r\nimport {COLORS} from \"../../colorThemes\";\r\n\r\nclass MessageBox extends React.Component {\r\n\r\n displayName = 'MessageBox';\r\n\r\n getMessage = () => {\r\n const {intl} = this.props;\r\n const props = this.props.state || this.props;\r\n const message = props.message;\r\n // console.log(\"message\", message);\r\n if (Array.isArray(message)) {\r\n return message.map((msg, msgIndex) =>

    \r\n {intl.messages[msg] ? : msg}\r\n

    )\r\n } else if (isObject(message)) {\r\n return message.id\r\n ? \r\n : message.message\r\n ? message.message\r\n : message.toString ? message.toString() : null\r\n } else if (message) { //string\r\n return intl.messages[message] ? : message.replace(\"Zip\", \"Postal\")\r\n } else {\r\n return \"Error\";\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props.state || this.props;\r\n\r\n if (!props.visible) {\r\n return null\r\n }\r\n\r\n const bClass = props.error ? 'message-red-lable' : 'message-blue-lable';\r\n const hClass = props.error ? 'message-error-message-title' : 'message-system-message-title';\r\n const messageClass = (props.error ? 'message-system-text-red' : 'message-system-text-blue') +\r\n (props.inline ? ' message-system-text-inline' : '');\r\n let buttonsElements = [];\r\n if (props.buttons && props.buttons.length) {\r\n buttonsElements = props.buttons.map((b) => {\r\n return ;\r\n });\r\n } else {\r\n buttonsElements.push(\r\n {\r\n //TODO[Artem] add default close logic\r\n }\r\n }}/>\r\n );\r\n }\r\n\r\n if (props.newStyles) {\r\n return (\r\n \r\n {(hideOverlay) => (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {this.getMessage()}\r\n
    \r\n
    \r\n {props.buttons && props.buttons.length ? props.buttons.map((button) => {\r\n return (\r\n \r\n )\r\n }) : null}\r\n
    \r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {this.getMessage()}
    \r\n
    {buttonsElements}
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst MessageBoxButton = ({button}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default injectIntl(MessageBox);\r\n","export const GROHE_POST_MESSAGES_ACTIONS = {\r\n exit: \"EXIT\",\r\n save: \"SAVE\",\r\n addToCart: \"ADDTOCART\",\r\n signIn: \"SIGNIN\",\r\n openMiniCart: \"OPENMINICART\",\r\n}\r\n\r\nexport const GROHE_ON_OPEN_ACTION = {\r\n shareFacebook: \"facebook\",\r\n shareTwitter: \"twitter\",\r\n sharePinterest: \"pinterest\",\r\n saveQuote: \"saveQuote\",\r\n}\r\n","import React, {useEffect, useState} from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport NavItemPositionModalButton from \"./navItemPositionModalButton\";\r\nimport {toggleNavItemPositionModal} from \"../../../actions/navigationFunctions\";\r\nimport {CORNER_SHELVES_POSITIONS, PAN_POSITIONS, SIDE_POSITIONS} from \"../../bvSceneComponent/core/constants\";\r\n// import {SLAT_WALL_POSITIONS} from \"../../commonVisualizer/core/constants\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport {featureInterface} from \"../../../interfaces/featureInterface\";\r\nimport NavItemPositionModalSlatWall from \"./navItemPositionModalSlatWall\";\r\n// import NavItemPositionModalSlatWallButton from \"./navItemPositionModalSlatWallButton\";\r\n\r\nconst disallowBlurClasses = [\".nav-pos\", \".feature\", \".menu-list__item\", \".m-feature\"];\r\n\r\nconst getPositionsArray = (partId) => {\r\n switch (partId) {\r\n case \"corner_shelf\":\r\n return CORNER_SHELVES_POSITIONS\r\n // case \"slat_wall\":\r\n // return SLAT_WALL_POSITIONS\r\n case \"shower_pan_combo\":\r\n case \"shower_fixture\":\r\n case \"grab_bar\":\r\n case \"soap_dish\":\r\n return PAN_POSITIONS\r\n default:\r\n return document.kvConfig.visualizerType === \"bvState\" ? SIDE_POSITIONS : [\"L\",\"R\", \"C\"]\r\n // return [\"L\",\"R\", \"C\"]\r\n }\r\n}\r\n\r\nconst NavItemPositionModal = (props) => {\r\n\r\n const {navItemPositionModal, toggleNavItemPositionModal, activePartId, windowWidth, windowHeight, isWizard,\r\n activeFeature} = props;\r\n const [parent, setParent] = useState(null);\r\n const [checkboxesUpdated, setCheckboxesUpdated] = useState(true);\r\n const left = navItemPositionModal.popupPosition.left;\r\n const top = navItemPositionModal.popupPosition.top;\r\n\r\n const contextMenuBlur = (e) => {\r\n if ((!disallowBlurClasses.some(cls => e.target.closest(cls)) || e.target.closest(\".feature-buttons\"))\r\n && navItemPositionModal.popupOpened) {\r\n toggleNavItemPositionModal({\r\n popupOpened: false,\r\n activePartId: \"\"\r\n })\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n document.addEventListener('click', contextMenuBlur);\r\n return () => {\r\n document.removeEventListener('click', contextMenuBlur)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [navItemPositionModal]);\r\n\r\n useEffect(() => {\r\n const layout = getCurrentLayout();\r\n setParent(layout.getFeatureGroupByPartId(activePartId))\r\n }, [activePartId]);\r\n\r\n const updateCheckboxes = () => {\r\n setCheckboxesUpdated(!checkboxesUpdated);\r\n };\r\n\r\n useEffect(() => {\r\n updateCheckboxes();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [left, top, activePartId]);\r\n\r\n if (!navItemPositionModal.popupOpened || !parent) { // added !parent because the buttons were transitioning the modal width after the parent is set\r\n return null\r\n }\r\n\r\n const isMobile = windowWidth < 991;\r\n const maxRight = left > windowWidth - 200;\r\n const fixedTop = top > (windowHeight - 130) ? windowHeight - 130 : top;\r\n //\r\n // console.log(\"windowHeight\", windowHeight);\r\n // console.log(\"top\", top);\r\n // console.log(\"fixedTop\", fixedTop);\r\n\r\n const styles = isMobile ? {\r\n left: maxRight ? \"auto\" : left + \"px\",\r\n top: fixedTop + \"px\",\r\n right: maxRight ? 0 : \"auto\"\r\n } : {\r\n transform: `translate(${maxRight ? left - 200 : left}px, ${fixedTop}px)`,\r\n }\r\n\r\n const triangleStyles = isMobile ? {\r\n left: left + \"px\",\r\n top: fixedTop + \"px\",\r\n position: \"fixed\",\r\n marginTop: 10,\r\n } : maxRight ? {\r\n left: \"auto\",\r\n right: \"40px\"\r\n } : {}\r\n\r\n const isShelf = activePartId === \"corner_shelf\";\r\n const isSlatWall = activePartId === \"slat_wall\";\r\n\r\n if (isSlatWall) {\r\n return \r\n }\r\n\r\n let positionsArray = getPositionsArray(activePartId);\r\n\r\n positionsArray = positionsArray.filter(pos => {\r\n return parent && parent.getMatchingPositionFeature(pos, activeFeature);\r\n });\r\n\r\n return (\r\n
    3 ? \" nav-pos--shelf\" : \"\")\r\n + (positionsArray.length === 3 ? \" nav-pos--three\" : \"\") + (isWizard ? \" nav-pos--wizard\" : \"\")}\r\n style={styles}>\r\n \r\n
    \r\n
    \r\n

    {isShelf ? \"Left\" : \"Side\"}

    \r\n
    \r\n {positionsArray.slice(0, 3).map((shelf, shelfIndex) => {\r\n return \r\n })}\r\n
    \r\n
    \r\n {isShelf && (positionsArray.length > 3) ? (\r\n
    \r\n

    Right

    \r\n
    \r\n {positionsArray.slice(3, 6).map((shelf, shelfIndex) => {\r\n return \r\n })}\r\n
    \r\n
    \r\n ) : null}\r\n
    \r\n
    \r\n )\r\n};\r\n\r\nNavItemPositionModal.propTypes = {\r\n // feature: PropTypes.object.isRequired\r\n activeFeature: PropTypes.shape(featureInterface),\r\n isWizard: PropTypes.bool\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n const {windowHeight, windowWidth} = store.serverState;\r\n return {\r\n navItemPositionModal: store.navigationState.navItemPositionModal,\r\n activeFeature: ownProps.activeFeature || store.selectionState.activeFeature,\r\n activePartId: store.navigationState.navItemPositionModal.activePartId,\r\n windowHeight,\r\n windowWidth,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n toggleNavItemPositionModal\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(NavItemPositionModal)\r\n","import {PartMenuType} from \"../../visComponents/constants\";\r\nimport {iCmp} from \"../../../misc/utils\";\r\nimport Layer from \"../../visComponents/layer\";\r\nimport {LayoutType, METADATA} from \"./constants\";\r\nimport PartCommon from \"../../visComponents/partCommon\";\r\n\r\nexport class Part extends PartCommon {\r\n\r\n constructor(isParent, isChild, menuType) {\r\n super();\r\n if (isChild || (isParent && menuType === PartMenuType.Simple)) {\r\n this.featuresList = {};\r\n this.featuresPartsList = {};\r\n this.modulePartsList = {};\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this.featuresList[layoutName] = [];\r\n this.featuresPartsList[layoutName] = [];\r\n this.modulePartsList[layoutName] = [];\r\n });\r\n this.allFeaturesReceived = false;\r\n this.realFeaturesReceived = false; // this prop is need on Scroll (if features count more that 1000)\r\n this.nextFeaturesPageToLoad = 0;\r\n this.activeFeature = null;\r\n this.placeholderFeature = null;\r\n this.shadowFeature = null;\r\n this.placeholderChanged = false;\r\n this.firstClick = {\r\n \"0\": false\r\n };\r\n this.activeLockedFeature = null;\r\n this.activeNotInVisualizerFeature = null; // is needed to display in the QT selected activeNotInVisualizerFeature, but render proper activeFeature layer(for example, countertop)\r\n // name = \"\";\r\n this.visible = true;\r\n this.categoryEnabled = false;\r\n this.layout = null;\r\n this.featureGroupVisible = true; // dashboard's feature group eye ball logic\r\n this.featureGroupEnabled = true; // dashboard's feature group checkbox logic\r\n this.selectedFeaturesHistory = []; // array of strings(names). updated every time item is selected\r\n this.filtersReceived = null; // array of filters values, comes from BE, for ex [1221, 347, 1124]\r\n }\r\n if (isParent) {\r\n this.partThumbnail = '';\r\n this.relatedItems = [];\r\n }\r\n if (!isChild && !isParent) {\r\n this.dbFeature = null;\r\n this.layer = new Layer();\r\n this._customDisplayName = null;\r\n this.notesList = {};\r\n }\r\n this.partName = \"\";\r\n }\r\n\r\n set features(featuresList) {\r\n // features can't be set directly, we need to change featuresList array\r\n }\r\n get features() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.featuresList[layout.getCurrentLayoutName()]\r\n }\r\n set featuresParts(featuresList) {\r\n // featuresParts can't be set directly, we need to change featuresPartsList array\r\n }\r\n get featuresParts() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.featuresPartsList[layout.getCurrentLayoutName()]\r\n }\r\n get moduleParts() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.modulePartsList[layout.getCurrentLayoutName()]\r\n }\r\n\r\n /**\r\n * Checks whether a given for condition matches the needed value (or array of values)\r\n * @param name {string}\r\n * @param value {string || array}\r\n * @returns {int} -1 - no such for condition, 0 - no match, 1 - matches\r\n */\r\n matchesMetaForCondition(name, value) {\r\n return this.metaData[name] && this.metaData[name].some(condValue => {\r\n return condValue === METADATA.ALL || (Array.isArray(value) ? value.some(val => iCmp(condValue, val)) : iCmp(condValue, value))\r\n });\r\n }\r\n\r\n matchesMetaForArrayOfConditions(arrayOfConditions) {\r\n return arrayOfConditions.every((condition) => {\r\n return this.matchesMetaForCondition(condition.propName, condition.propValue);\r\n })\r\n }\r\n}\r\n\r\n\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport NavigationRequests from \"./navigation/navigationRequests\";\r\nimport {IS_LIXIL_UI} from \"../../config\";\r\nimport MaterialSpinner from \"../ui/materialSpinner\";\r\nimport {COUNTERTOP_GROUP} from \"../kvComponent/core/constants\";\r\n\r\nclass AllFeaturesChecker extends NavigationRequests {\r\n\r\n static propTypes = {\r\n subPart: PropTypes.object.isRequired,\r\n callBack: PropTypes.func,\r\n loaderOnly: PropTypes.bool,\r\n withFiltersRequest: PropTypes.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this._filtersRequestsMade = [];\r\n }\r\n\r\n componentDidMount() {\r\n const {subPart, callBack, withFiltersRequest, filterGroups} = this.props;\r\n if (withFiltersRequest && !this._filtersRequestsMade.includes(subPart.part.partId) && COUNTERTOP_GROUP.includes(subPart.part.partId)\r\n && !subPart.part.filtersReceived) {\r\n this._filtersRequestsMade.push(subPart.part.partId);\r\n this.checkIfAllFiltersReceived(subPart.part, filterGroups)\r\n .then(() => {\r\n if (callBack) {\r\n callBack()\r\n }\r\n });\r\n }\r\n this.checkIfAllFeaturesReceived(subPart, \"\", callBack);\r\n }\r\n\r\n render() {\r\n const {loaderOnly} = this.props;\r\n if (loaderOnly) {\r\n return IS_LIXIL_UI\r\n ? \r\n :
    \r\n }\r\n\r\n return (\r\n
  • \r\n
    \r\n
  • \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n cartItems: store.cartState.cartItems,\r\n filterGroups: store.filterState.filterGroups,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AllFeaturesChecker);\r\n","import React, {Fragment} from 'react';\r\n\r\nimport {DISCOUNT_MAIN_TYPES, DISCOUNT_MODES, DISCOUNT_TYPES} from \"./discounstInterface\";\r\nimport {\r\n getPriceWithCurrency,\r\n getQuotePriceWithDiscounts, getQuotePriceWithTaxes,\r\n getTotalPrice,\r\n sortByOrder,\r\n toFixedPrice\r\n} from \"../../misc/helpers\";\r\nimport {\r\n getCustomDepositAmount,\r\n getDiscountsForSection,\r\n getSubTotalPrice,\r\n shouldDisplayDiscount\r\n} from \"./discountFunctions\";\r\nimport TextInput from \"../ui/textInput\";\r\n\r\nexport default class DiscountCommon extends React.Component {\r\n\r\n handleDiscountSelectClick = () => {\r\n if (this.isDiscountDisabled()) {\r\n return false\r\n }\r\n const currentDiscount = this.props.discount;\r\n currentDiscount.selected = !currentDiscount.selected;\r\n this.updateDiscount(currentDiscount);\r\n };\r\n\r\n setDiscountProperty = (property, value) => {\r\n const currentDiscount = this.props.discount;\r\n currentDiscount[property] = value;\r\n this.updateDiscount(currentDiscount);\r\n };\r\n\r\n updateDiscount = (currentDiscount) => {\r\n this.props.setDiscountSections(this.props.discountSections.map((discountSection) => {\r\n if (discountSection.order === this.props.discountSection.order) {\r\n discountSection.discounts.map(discount => {\r\n if (currentDiscount.order === discount.order) {\r\n return currentDiscount\r\n }\r\n return discount\r\n });\r\n if (currentDiscount.selected && currentDiscount.mode === DISCOUNT_MODES.or && !currentDiscount.isSubTotal) {\r\n discountSection.discounts = discountSection.discounts.map(discount => {\r\n if ((currentDiscount.order !== discount.order) && (discount.mode === DISCOUNT_MODES.or) && !discount.isSubTotal) {\r\n discount.selected = false\r\n }\r\n return discount\r\n });\r\n }\r\n }\r\n return discountSection\r\n }));\r\n };\r\n\r\n getGrandTotal = (withoutDiscount = null) => {\r\n const totalPrice = getTotalPrice(null, false);\r\n return getQuotePriceWithDiscounts(totalPrice, withoutDiscount ? [withoutDiscount] : []);\r\n }\r\n\r\n isDiscountDisabled = (forDiscount = this.props.discount) => {\r\n const {discountSection, customAddedDiscounts} = this.props;\r\n const discount = forDiscount;\r\n if (discount.selected) {\r\n return false\r\n }\r\n const grandTotal = this.getGrandTotal();\r\n const discountAmount = discount.type === DISCOUNT_TYPES.price ? discount.amount : grandTotal * discount.amount / 100;\r\n let disabled = (grandTotal - discountAmount) < 0;\r\n if (disabled && discount.mode === DISCOUNT_MODES.or) {\r\n const allDiscounts = sortByOrder(getDiscountsForSection(discountSection, customAddedDiscounts));\r\n if (allDiscounts.some(currentDiscount => {\r\n return (currentDiscount.order !== discount.order) // take othere discounts from this section\r\n && (currentDiscount.mode === DISCOUNT_MODES.or) // with OR mode\r\n && shouldDisplayDiscount(currentDiscount) // already selected\r\n && (this.getGrandTotal(currentDiscount) - discountAmount) > 0\r\n // price without this discount minus current discount amount still more than 0\r\n })) {\r\n disabled = false\r\n }\r\n }\r\n return disabled\r\n }\r\n\r\n getDiscountPercentageAmount = () => {\r\n const grandTotal = getSubTotalPrice(this.props.discountSections, this.props.discountSection, this.props.discount, true, this.props.customAddedDiscounts);\r\n const priceTaken = grandTotal * this.props.discount.amount / 100 // for ex. 25% from 2700 = 625\r\n return toFixedPrice(Math.trunc(priceTaken * 100) / 100);\r\n };\r\n\r\n setAmountValue = (value) => {\r\n // console.log(\"value\", value);\r\n if ((this.props.discount.discountType === DISCOUNT_MAIN_TYPES.deposit) && (this.props.discount.type === DISCOUNT_TYPES.percent)) {\r\n this.setDiscountProperty(\"type\", DISCOUNT_TYPES.price);\r\n }\r\n this.setDiscountProperty(\"amount\", +value)\r\n };\r\n\r\n getMaxDiscountValue = () => {\r\n return (this.props.discount.type === DISCOUNT_TYPES.percent) ? 100 : this.getGrandTotal(this.props.discount)\r\n }\r\n\r\n getDiscountAmount = () => {\r\n const {discount, fabricatorSettings} = this.props;\r\n return discount.type === DISCOUNT_TYPES.price\r\n ? \"-\" + getPriceWithCurrency(fabricatorSettings, discount.amount)\r\n : \"-\" + getPriceWithCurrency(fabricatorSettings, this.getDiscountPercentageAmount())\r\n }\r\n\r\n getInputValue = () => {\r\n const {discount, fabricatorSettings, discountSections} = this.props;\r\n if (!discount.amount) {\r\n return \"0\"\r\n }\r\n if (discount.discountType === DISCOUNT_MAIN_TYPES.deposit) {\r\n if (discount.type === DISCOUNT_TYPES.price) {\r\n return getPriceWithCurrency(fabricatorSettings, toFixedPrice(discount.amount))\r\n }\r\n const totalPrice = getTotalPrice();\r\n const grandTotal = getQuotePriceWithTaxes(totalPrice);\r\n const customDepositAmount = getCustomDepositAmount(discountSections, grandTotal);\r\n return getPriceWithCurrency(fabricatorSettings, customDepositAmount);\r\n }\r\n // return \"-\" + (discount.type === DISCOUNT_TYPES.price) // we can't have percentages free fill discounts\r\n // ? fabricatorSettings.currencySign + discount.amount\r\n // : discount.amount + \"%\"\r\n return \"-\" + getPriceWithCurrency(fabricatorSettings, toFixedPrice(discount.amount))\r\n }\r\n\r\n renderAmountInput = () => {\r\n const {discount, fabricatorData} = this.props;\r\n const isDiscount = discount.discountType === DISCOUNT_MAIN_TYPES.deposit;\r\n return discount.selected || isDiscount ? (\r\n \r\n {/**/}\r\n {/* -{discount.type === DISCOUNT_TYPES.percent ? \"%\" : fabricatorData.settings.currencySign}*/}\r\n {/**/}\r\n \r\n {/*{discount.type === DISCOUNT_TYPES.percent*/}\r\n {/* ? {this.getDiscountAmount()}*/}\r\n {/* : null}*/}\r\n \r\n ) : null\r\n }\r\n\r\n}\r\n","'use strict';\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.showLoading = exports.resetLoading = exports.loadingBarReducer = exports.loadingBarMiddleware = exports.LoadingBar = exports.ImmutableLoadingBar = exports.hideLoading = undefined;\r\n\r\nvar _loading_bar = require('./loading_bar');\r\n\r\nvar _loading_bar2 = _interopRequireDefault(_loading_bar);\r\n\r\nvar _loading_bar_middleware = require('./loading_bar_middleware');\r\n\r\nvar _loading_bar_middleware2 = _interopRequireDefault(_loading_bar_middleware);\r\n\r\nvar _loading_bar_ducks = require('./loading_bar_ducks');\r\n\r\nvar _immutable = require('./immutable');\r\n\r\nvar _immutable2 = _interopRequireDefault(_immutable);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nexports.hideLoading = _loading_bar_ducks.hideLoading;\r\nexports.ImmutableLoadingBar = _immutable2.default;\r\nexports.LoadingBar = _loading_bar.LoadingBar;\r\nexports.loadingBarMiddleware = _loading_bar_middleware2.default;\r\nexports.loadingBarReducer = _loading_bar_ducks.loadingBarReducer;\r\nexports.resetLoading = _loading_bar_ducks.resetLoading;\r\nexports.showLoading = _loading_bar_ducks.showLoading;\r\nexports.default = _loading_bar2.default;","import $ from 'jquery';\r\n\r\nimport JsonApi from \"./jsonApi\";\r\nimport store from \"../store\";\r\nimport {loaderEnable, loaderDisable} from \"../bvcomponents/ui/loaderView\";\r\nimport * as types from \"../actions/actionTypes\";\r\nimport Misc from \"../misc/misc\";\r\nimport Config, {IS_LIXIL_UI, IS_OFFLINE_MODE, POST_MESSAGES} from \"../config\";\r\nimport Analytics from '../analytics';\r\nimport {saveQuote} from \"./server-api\";\r\nimport {\r\n renderErrorPopup,\r\n renderAccountNotActivatedErrorPopup,\r\n renderConfirmPopup,\r\n renderMessagePopup\r\n} from \"./api-popups\";\r\nimport {ConfirmPopupTypes, QuoteRequestType, UserAction} from \"../bvcomponents/visComponents/constants\";\r\nimport {setJobId, showCheckoutLayout, toggleUserPopup} from \"../actions/actionFunctions\";\r\nimport {showQuoteSavedNotification} from \"../bvcomponents/ui/successNotification\";\r\nimport ActionTypes from \"../misc/actionTypes\";\r\nimport {setAlreadyRegisteredUserInfo, setEmployeesList} from \"../actions/userFunctions\";\r\nimport {restorePaymentInfo} from \"../actions/paymentFunctions\";\r\nimport {addGACookie} from \"../misc/backendFunctions\";\r\n\r\n\r\nexport const scheduleCustomer = (data) => {\r\n loaderEnable(\"loader.scheduleCustomerText\", \"loader.scheduleCustomerTitle\");\r\n const state = store.getState();\r\n const {serverState} = state;\r\n let {time} = data;\r\n let am = true;\r\n if (time > 1200) {\r\n am = false;\r\n time -= 1200;\r\n }\r\n const scheduleData = {\r\n scheduleEntryData: {\r\n date: data.date,\r\n time: `${time / 100}:00`,\r\n am: am,\r\n duration: 60,\r\n alert: 30,\r\n appointmentType: 'Quote'\r\n },\r\n jobId: serverState.jobId,\r\n jobIdType: 'JobQuote'\r\n };\r\n\r\n JsonApi.scheduleCustomer(scheduleData)\r\n .then(response => {\r\n console.log('Schedule answer', response);\r\n loaderDisable();\r\n store.dispatch({\r\n type: types.SHOW_SCHEDULER,\r\n payload: {show: false}\r\n })\r\n });\r\n};\r\n\r\nexport const setUserLoginResponse = (responseData,\r\n fromConfirmationDialog = false,\r\n quoteRequestType,\r\n yesNoConsultationRequest,\r\n showSchedule,\r\n checkout,\r\n userPopupType) => {\r\n console.log(responseData);\r\n // const saveQuoteAfterLogin = state.userState.saveQuoteAfterLogin;\r\n // if (!saveQuoteAfterLogin) {\r\n // loaderDisable();\r\n // }\r\n const state = store.getState();\r\n\r\n if (responseData.error) {\r\n Analytics.sendClickEvent(\"user-login-failure\");\r\n if (state.fabricatorState.isNhance) {\r\n Analytics.sendParentPostMessage(POST_MESSAGES.userLoginFalse);\r\n }\r\n const {error} = responseData;\r\n loaderDisable();\r\n if (responseData.error.indexOf('has not been activated yet') !== -1) {\r\n const userInfo = store.getState().userState.userInfo;\r\n renderAccountNotActivatedErrorPopup(error, userInfo.email);\r\n } else {\r\n renderErrorPopup(responseData.error);\r\n }\r\n if (fromConfirmationDialog) {\r\n store.dispatch(toggleUserPopup({\r\n userPopupOpened: true,\r\n userPopupType\r\n }));\r\n }\r\n return false;\r\n }\r\n\r\n const fabricatorSettings = state.fabricatorState.settings;\r\n\r\n // const docuSignObj = fabricatorSettings.docuSignAuth ? JSON.parse(fabricatorSettings.docuSignAuth) : null;\r\n // Config.setUserInfo(responseData);\r\n Analytics.sendClickEvent(\"user-login-success\");\r\n Analytics.setUserId(responseData.encodedUserId);\r\n Analytics.setExistingMixPanelPerson(responseData.email);\r\n if (state.fabricatorState.isNhance) {\r\n Analytics.sendParentPostMessage(POST_MESSAGES.userLoginTrue);\r\n }\r\n const updatedUserInfo = Misc.parseUserResponse(responseData);\r\n // const isPhoneNumberValidated = responseData.isPhoneNumberValidated || !responseData.pendingPhoneVerification;\r\n const isPhoneNumberValidated = !fabricatorSettings.twoFA || responseData.isPhoneNumberValidated || !responseData.pendingPhoneVerification;\r\n\r\n store.dispatch({\r\n type: types.TOGGLE_USER_POPUP,\r\n payload: {\r\n userPopupOpened: false,\r\n userIsLoggedIn: true,\r\n isPhoneNumberValidated,\r\n userInfo: updatedUserInfo,\r\n // email: responseData.email,\r\n encodedUserId: responseData.encodedUserId,\r\n // phoneNumber: responseData.phoneNumber,\r\n // values: responseData.values\r\n }\r\n });\r\n\r\n if (responseData.billingAddress || responseData.shippingAddress) { // update user state\r\n store.dispatch(restorePaymentInfo(Misc.parseShippingAndBillingResponse(responseData)));\r\n }\r\n\r\n if (IS_LIXIL_UI) { // we don't go below, as we already have save in the lixil logic\r\n return {...responseData, isPhoneNumberValidated: isPhoneNumberValidated || !fabricatorSettings.twoFA}\r\n }\r\n\r\n if (fabricatorSettings.twoFA && responseData.pendingPhoneVerification) {\r\n store.dispatch({\r\n type: types.TOGGLE_USER_POPUP,\r\n payload: {userPopupOpened: true}\r\n });\r\n } else {\r\n saveQuote({\r\n submit: true,\r\n quoteRequestType,\r\n yesNoConsultationRequest,\r\n fromCheckOutPage: window.location.href.includes('shoppingcart'),\r\n showContractSignOnError: true,\r\n showReceipt: false\r\n })\r\n .then((response) => {\r\n $(document).trigger(ActionTypes.USER_IS_LOGGED_IN); // click on the active item it the navigation\r\n if (response) {\r\n let responseDataBase = response;\r\n if (responseData) {\r\n responseDataBase = responseData;\r\n }\r\n const responseData = typeof responseDataBase === 'object' ? responseDataBase : JSON.parse(responseDataBase);\r\n console.log('saveQuote response:', responseData);\r\n store.dispatch(setJobId(responseData.jobId));\r\n }\r\n if (showSchedule) {\r\n loaderDisable();\r\n if (fabricatorSettings.enableCalendarForScheduling) {\r\n store.dispatch({\r\n type: types.SHOW_SCHEDULER,\r\n payload: {show: true}\r\n })\r\n } else {\r\n renderMessagePopup('userPopup.messageBox.appointmentRequested');\r\n }\r\n } else {\r\n loaderDisable();\r\n showQuoteSavedNotification(\r\n quoteRequestType === QuoteRequestType.RequestQuote\r\n ? \"successNotification.titleQuoteRequested\"\r\n : \"successNotification.titleQuoteSaved\"\r\n );\r\n // console.log('DS - login', fabricatorSettings.showPricing, docuSignObj);\r\n // if (fabricatorSettings.showPricing && docuSignObj && docuSignObj.isEnabled)\r\n // store.dispatch(showDocuSign(true));\r\n if (checkout && fabricatorSettings.checkout) {\r\n showCheckoutLayout(fabricatorSettings);\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n console.error('saveQuote error:', error);\r\n loaderDisable();\r\n })\r\n }\r\n\r\n if (showSchedule) {\r\n if (fabricatorSettings.enableCalendarForScheduling) {\r\n store.dispatch({\r\n type: types.SHOW_SCHEDULER,\r\n payload: {show: true}\r\n })\r\n } else {\r\n renderMessagePopup('userPopup.messageBox.appointmentRequested');\r\n }\r\n }\r\n}\r\n\r\nexport const userLogin = ({\r\n showConfirmationPopup = false,\r\n showSchedule = false,\r\n quoteRequestType = QuoteRequestType.RegularDesign,\r\n yesNoConsultationRequest = false,\r\n userPopupType,\r\n fromConfirmationDialog = false,\r\n checkout = false\r\n } = {}) => {\r\n if (showConfirmationPopup) {\r\n store.dispatch({\r\n type: types.TOGGLE_USER_POPUP,\r\n payload: {\r\n userPopupOpened: false\r\n }\r\n });\r\n renderConfirmPopup(ConfirmPopupTypes.ConsultationRequest, {\r\n userAction: UserAction.Login,\r\n userPopupType\r\n });\r\n return;\r\n }\r\n const state = store.getState();\r\n const userInfo = state.userState.userInfo;\r\n const showAdditionalFields = state.userState.showAdditionalFields;\r\n if (!IS_LIXIL_UI) {\r\n loaderEnable();\r\n }\r\n let data = {\r\n email: userInfo.email,\r\n password: userInfo.password,\r\n employeeId: showAdditionalFields ? +userInfo.employeeId : 0,\r\n fabricatorId: document.kvConfig.userId,\r\n }\r\n data = addGACookie(data);\r\n\r\n return JsonApi.userLogin(data)\r\n .then((response) => {\r\n return setUserLoginResponse(\r\n response.data,\r\n fromConfirmationDialog,\r\n quoteRequestType,\r\n yesNoConsultationRequest,\r\n showSchedule,\r\n checkout,\r\n userPopupType\r\n )\r\n })\r\n .catch((error) => {\r\n console.log('User login error:', error);\r\n loaderDisable();\r\n renderErrorPopup(\"Login \"+new Error(error.message || error));\r\n if (state.fabricatorState.isNhance) {\r\n Analytics.sendParentPostMessage(POST_MESSAGES.userLoginFalse);\r\n }\r\n });\r\n};\r\n\r\nconst callUserRegisterErrorPopup = (responseData,\r\n userPopupType,\r\n fromConfirmationDialog,\r\n assignQuote = false,\r\n withCheckoutLogic = false,\r\n noInternetCallBack = null,\r\n afterContractSignCallback = null,\r\n executeAfterRegisterIfUserExist = null) => {\r\n Analytics.sendClickEvent(\"user-register-failure\");\r\n\r\n if (responseData.isEmailTaken && responseData.errorUserMatch) {\r\n store.dispatch(setAlreadyRegisteredUserInfo({...responseData.errorUserMatch, assignQuote, withCheckoutLogic, userId: responseData.userId}));\r\n renderConfirmPopup(ConfirmPopupTypes.AssignQuoteOnExistingUser, {applyFunction: executeAfterRegisterIfUserExist}, true)\r\n return\r\n }\r\n\r\n renderErrorPopup(responseData.error, \"\", noInternetCallBack, withCheckoutLogic, null, afterContractSignCallback);\r\n\r\n if (fromConfirmationDialog) {\r\n store.dispatch(toggleUserPopup({\r\n userPopupOpened: true,\r\n userPopupType\r\n }));\r\n }\r\n\r\n}\r\n\r\nexport const userRegister = async ({\r\n showConfirmationPopup = false,\r\n showSchedule = false,\r\n quoteRequestType = QuoteRequestType.RegularDesign,\r\n yesNoConsultationRequest = false,\r\n userPopupType,\r\n fromConfirmationDialog = false,\r\n // checkout = false,\r\n assignQuote = false,\r\n withCheckoutLogic = false,\r\n noInternetCallBack = null,\r\n afterContractSignCallback = null,\r\n executeAfterRegisterIfUserExist = null,\r\n } = {}) => {\r\n //console.log('register', quoteRequestType);\r\n if (showConfirmationPopup) {\r\n store.dispatch({\r\n type: types.TOGGLE_USER_POPUP,\r\n payload: {\r\n userPopupOpened: false\r\n }\r\n });\r\n renderConfirmPopup(ConfirmPopupTypes.ConsultationRequest, {\r\n userAction: UserAction.Register,\r\n userPopupType,\r\n quoteRequestType\r\n });\r\n return;\r\n }\r\n\r\n const {userState, serverState, fabricatorState} = store.getState();\r\n const userInfo = userState.userInfo;\r\n // userInfo.phone = userInfo.phoneNumber;\r\n // if (!store.getState().userState.showAdditionalFields) {\r\n // userInfo.employeeId = \"\"\r\n // }\r\n if (!IS_LIXIL_UI) {\r\n loaderEnable();\r\n }\r\n let data = {\r\n email: userInfo.email,\r\n firstName: userInfo.firstName,\r\n phone: `+${userInfo.country.dialCode} ${userInfo.phoneNumber}`,\r\n agreedToTerms: userInfo.agreedToTerms,\r\n subscribeToNewsletter: userInfo.subscribeToNewsletter,\r\n isNew: true,\r\n postal: userInfo.postal,\r\n salesPersonFullName: userInfo.salesPersonFullName,\r\n salesPersonEmail: userInfo.salesPersonEmail,\r\n employeeId: +userInfo.employeeId,\r\n fabricatorId: Config.kvConfig.userId || 61986,\r\n quoteRequestType,\r\n yesNoConsultationRequest,\r\n lastName: userInfo.lastName,\r\n address1: userInfo.address1,\r\n address2: userInfo.address2,\r\n city: userInfo.city,\r\n state: userInfo.state,\r\n country: userInfo.country.iso2,\r\n preferredCommunicationMethod: userInfo.preferredCommunicationMethod,\r\n howDidYouHearAboutUs: userInfo.howDidYouHearAboutUs,\r\n phone2: userInfo.phone2,\r\n language: serverState.language,\r\n subId: document.subId && document.subId.toString ? document.subId.toString() : null,\r\n };\r\n\r\n data = addGACookie(data);\r\n\r\n if (assignQuote) {\r\n [\"lastName\", \"phone2\", \"address1\", \"address2\", \"city\", \"preferredCommunicationMethod\", \"howDidYouHearAboutUs\"]\r\n .forEach((property) => {\r\n data[property] = userInfo[property] // new fields added in new assign quote popup\r\n })\r\n }\r\n\r\n let registerResponse;\r\n\r\n try {\r\n registerResponse = await JsonApi.userRegister(data);\r\n } catch (error) {\r\n if (error && (error.message === \"Network Error\") && IS_OFFLINE_MODE) {\r\n registerResponse = {data: {error: \"Network Error\"}}\r\n }\r\n }\r\n\r\n if (!IS_LIXIL_UI) {\r\n loaderDisable();\r\n }\r\n\r\n if (registerResponse.data.error) {\r\n callUserRegisterErrorPopup(registerResponse.data, userPopupType, fromConfirmationDialog, assignQuote, withCheckoutLogic, noInternetCallBack, afterContractSignCallback, executeAfterRegisterIfUserExist);\r\n if (fabricatorState.isNhance) {\r\n Analytics.sendParentPostMessage(POST_MESSAGES.userRegisterFalse);\r\n }\r\n return;\r\n }\r\n\r\n Analytics.sendClickEvent(\"user-register-success\");\r\n // Config.setUserInfo(registerResponse.data);\r\n Analytics.setUserId(registerResponse.data.encodedUserId);\r\n Analytics.setMixPanelPerson(registerResponse.data.email, registerResponse.data.firstName, registerResponse.data.phoneNumber);\r\n if (fabricatorState.isNhance) {\r\n Analytics.sendParentPostMessage(POST_MESSAGES.userRegisterTrue);\r\n }\r\n\r\n if (assignQuote) {\r\n return registerResponse.data\r\n }\r\n const fabricatorSettings = fabricatorState.settings;\r\n\r\n if (IS_LIXIL_UI) {\r\n store.dispatch(toggleUserPopup({\r\n userIsLoggedIn: true,\r\n encodedUserId: registerResponse.data.encodedUserId,\r\n isPhoneNumberValidated: !fabricatorSettings.twoFA,\r\n }));\r\n return registerResponse.data\r\n }\r\n\r\n // const docuSignObj = fabricatorSettings.docuSignAuth ? JSON.parse(fabricatorSettings.docuSignAuth) : null;\r\n store.dispatch(toggleUserPopup({\r\n userPopupOpened: fabricatorSettings.twoFA,\r\n schedulerPending: fabricatorSettings.twoFA,\r\n userIsLoggedIn: true,\r\n // when user first register we need to check whether the fabricator requires to validate the phone number\r\n isPhoneNumberValidated: !fabricatorSettings.twoFA, // if 2FA is required we consider user is still NOT logged in\r\n ...registerResponse.data,\r\n userInfo: {\r\n email: registerResponse.data.email\r\n }\r\n }));\r\n\r\n const submit = window.location.href.includes('shoppingcart');\r\n const saveQuoteResponse = await saveQuote({\r\n submit,\r\n yesNoConsultationRequest,\r\n quoteRequestType,\r\n fromCheckOutPage: submit,\r\n showReceipt: false\r\n });\r\n\r\n if (fabricatorSettings.twoFA)\r\n return;\r\n\r\n $(document).trigger(ActionTypes.USER_IS_LOGGED_IN); // click on the active item it the navigation\r\n if (saveQuoteResponse) {\r\n let responseDataBase = saveQuoteResponse;\r\n if (saveQuoteResponse.data) {\r\n responseDataBase = saveQuoteResponse.data;\r\n }\r\n const responseData = typeof responseDataBase === 'object' ? responseDataBase : JSON.parse(responseDataBase);\r\n //console.log('saveQuote response:', responseData);\r\n store.dispatch(setJobId(responseData.jobId));\r\n }\r\n if (showSchedule) {\r\n if (fabricatorSettings.enableCalendarForScheduling) {\r\n store.dispatch({\r\n type: types.SHOW_SCHEDULER,\r\n payload: {show: true}\r\n })\r\n } else {\r\n renderMessagePopup(\"userPopup.messageBox.appointmentRequested\");\r\n }\r\n } else {\r\n // store.dispatch({\r\n // type: types.CHANGE_MESSAGE_BOX,\r\n // payload: {\r\n // visible: true,\r\n // error: false,\r\n // inline: false,\r\n // message: \"userPopup.messageBox.designSavedSuccess\",\r\n // buttons: [{\r\n // text: \"messageBox.buttonOk\",\r\n // color: \"green\",\r\n // click: () => {\r\n // store.dispatch({\r\n // type: types.CHANGE_MESSAGE_BOX,\r\n // payload: {\r\n // visible: false,\r\n // }\r\n // });\r\n //\r\n // // console.log('DS - register', fabricatorSettings.showPricing, docuSignObj);\r\n // // if (fabricatorSettings.showPricing && docuSignObj && docuSignObj.isEnabled)\r\n // // store.dispatch(showDocuSign(true));\r\n //\r\n // if (checkout && fabricatorSettings.checkout && fabricatorSettings.hasPaymentGateway) {\r\n // showCheckoutLayout(fabricatorSettings);\r\n // }\r\n // }\r\n // }]\r\n // }\r\n // });\r\n }\r\n\r\n if (saveQuoteResponse.error || saveQuoteResponse.data && saveQuoteResponse.data.error) {\r\n loaderDisable();\r\n renderErrorPopup(saveQuoteResponse.error || saveQuoteResponse.data.error, \"\", noInternetCallBack);\r\n }\r\n return null\r\n};\r\n\r\nexport const resetUserPassword = () => {\r\n const state = store.getState();\r\n const email = state.userState.userInfo.email;\r\n const language = state.serverState.language;\r\n loaderEnable();\r\n JsonApi.resetUserPassword(email, language)\r\n .then((response) => {\r\n loaderDisable();\r\n console.log('resetUserPassword response:', response);\r\n if (response.data.error) {\r\n renderErrorPopup(response.data.error);\r\n } else if (IS_LIXIL_UI) {\r\n store.dispatch({\r\n type: types.CHANGE_MESSAGE_BOX,\r\n payload: {\r\n visible: true,\r\n title: \"leadCapturePopup.forgot.successPopup.title\",\r\n message: \"leadCapturePopup.forgot.successPopup.text\",\r\n }\r\n })\r\n } else {\r\n store.dispatch({\r\n type: types.CHANGE_MESSAGE_BOX,\r\n payload: {\r\n visible: true,\r\n message: \"userPopup.messageBox.passwordHasBeenSent\",\r\n error: false,\r\n inline: false,\r\n buttons: [{\r\n text: \"messageBox.buttonOk\",\r\n color: \"blue\",\r\n click: () => {\r\n store.dispatch({\r\n type: types.CHANGE_MESSAGE_BOX,\r\n payload: {\r\n visible: false,\r\n }\r\n });\r\n }\r\n }]\r\n }\r\n });\r\n }\r\n })\r\n .catch((error) => {\r\n loaderDisable();\r\n renderErrorPopup(error);\r\n });\r\n};\r\n\r\nexport const getEmployees = (withLoader = true) => {\r\n if (withLoader) {\r\n loaderEnable();\r\n }\r\n return JsonApi.getEmployees()\r\n .then((response) => {\r\n if (withLoader) {\r\n loaderDisable();\r\n }\r\n //console.log('getEmployees response:', response);\r\n const emplList = response && response.data ? [...response.data] : [];\r\n store.dispatch(setEmployeesList(emplList));\r\n return emplList\r\n })\r\n .catch((error) => {\r\n if (withLoader) {\r\n loaderDisable();\r\n }\r\n console.log('getEmployees error:', error);\r\n return []\r\n // renderErrorPopup(error);\r\n });\r\n};\r\n\r\nexport const getCustomerById = ({customerId,\r\n showContractOnError = false,\r\n noInternetCallBack,\r\n afterContractSignCallback}) => {\r\n loaderEnable();\r\n return JsonApi.getCustomerById(customerId)\r\n .then(response => response.data)\r\n .catch((error) => {\r\n loaderDisable();\r\n renderErrorPopup(error, \"\", noInternetCallBack, showContractOnError, null, afterContractSignCallback);\r\n });\r\n};\r\n\r\nexport const generateTwoFaAuthenticationToken = () => {\r\n return JsonApi.generateAuthenticationToken()\r\n .then(response => response.data || response)\r\n .catch(error => console.log(\"Server error validateAuthentication \"+new Error(error)))\r\n};\r\n\r\nexport const validateTwoFaAuthentication = (token, authCode, phone) => {\r\n return JsonApi.validateAuthenticationRequest(token, authCode, phone)\r\n .then(response => response.data)\r\n .catch(error => console.log(\"Server error validateAuthentication \"+new Error(error)))\r\n};\r\n\r\nexport const sendAuthenticationRequest = (token, to, type) => {\r\n return JsonApi.sendAuthenticationRequest(token, to, type)\r\n .then(response => response.data)\r\n .catch(error => console.log(\"Server error sendAuthenticationRequest \"+new Error(error)))\r\n};\r\n","import {pnpolyArray} from \"../../../../../lib/pnpoly\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport clone from 'lodash/clone';\r\n\r\nimport EventManager from \"../../../store/sqftEventManager\";\r\nimport workspace from \"../../workspace\";\r\nimport sqftConfig from \"../../../store/sqftConfig\";\r\nimport {\r\n distanceToInches,\r\n distanceToMillimeters,\r\n getAngleBetweenTwoPoints, getMidPoint,\r\n isDisabledInPopupWithParents,\r\n measureDistanceToInches,\r\n} from \"../../../../../helpers/sqftHelper\";\r\nimport COLOR_THEMES, {COLOR} from \"../../../store/colorThemes\";\r\nimport {isDisabledInPopupShouldBeHidden} from \"../../../../../constants\";\r\nimport {DIRECTIONS, getLineDirection} from \"../../../../../helpers/shapeHelper\";\r\nimport RenderFigures from \"../../../helpers/renderFigures\";\r\nimport {createAdjustableInput} from \"../../../../../helpers/uiHelper\";\r\n\r\nexport default class NumberText {\r\n id = null;\r\n design = {\r\n fontColor: COLOR_THEMES[sqftConfig.activeTheme].primary,\r\n fontFamily: 'playbold',\r\n fontHeight: 16,\r\n isLength: false,\r\n valuePrefix: '',\r\n valuePostfix: '',\r\n shouldRenderFrameBorder: false,\r\n eventsPriority: EventManager.priorities.SEGMENT\r\n };\r\n value = 0;\r\n callback = null;\r\n pos = {\r\n x: 0,\r\n y: 0,\r\n xOffset: 0,\r\n yOffset: 0,\r\n angle: 0,\r\n orientation: DIRECTIONS.EAST,\r\n betweenPoints: {\r\n pointFrom: null,\r\n pointTo: null,\r\n }\r\n };\r\n state = {\r\n isHovered: false,\r\n mouseDown: false,\r\n mouseDownPosition: null,\r\n isHidden: true\r\n };\r\n\r\n constructor(value, pos, design, parent = workspace, callback = Function(), isInit = true) {\r\n this.value = value;\r\n Object.assign(this.pos, pos);\r\n Object.assign(this.design, design);\r\n this.parent = parent;\r\n this.callback = callback;\r\n this.id = uuidv4();\r\n\r\n if (isInit) {\r\n this.initEventListeners(design.shouldOnlyRenderText);\r\n }\r\n }\r\n getParent() {\r\n return this.parent\r\n }\r\n\r\n get orientation () {\r\n return this.pos.orientation\r\n }\r\n\r\n initEventListeners(shouldOnlyRenderText) {\r\n EventManager.addEvent(\r\n EventManager.events.RENDER,\r\n this.render.bind(this),\r\n this,\r\n this.design.eventsPriority\r\n );\r\n if (!shouldOnlyRenderText) {\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_MOVE,\r\n this.onMouseMove,\r\n this,\r\n this.design.eventsPriority\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_DOWN,\r\n this.onMouseDown,\r\n this,\r\n this.design.eventsPriority\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_UP,\r\n this.onMouseUp,\r\n this,\r\n this.design.eventsPriority\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_LEAVE,\r\n this.onMouseLeave,\r\n this,\r\n EventManager.priorities.OVERALL\r\n );\r\n }\r\n }\r\n\r\n destroy() {\r\n this.deregisterEvents();\r\n }\r\n\r\n hideEvents() {\r\n if (!this.state.isHidden) {\r\n this.deregisterEvents();\r\n this.state.isHidden = true;\r\n }\r\n }\r\n\r\n revealEvents() {\r\n if (this.state.isHidden) {\r\n this.initEventListeners();\r\n this.state.isHidden = false;\r\n }\r\n }\r\n\r\n deregisterEvents() {\r\n EventManager.removeEvent(this);\r\n }\r\n\r\n reInitEvents() {\r\n this.initEventListeners();\r\n }\r\n\r\n onMouseMove = (mousePos, e) => {\r\n void e;\r\n this.state.isHovered = this.isMouseOverText(mousePos);\r\n\r\n if (this.state.isHovered) {\r\n EventManager.stealCursor();\r\n //todo rotated cursor\r\n EventManager.setCursor(([DIRECTIONS.WEST, DIRECTIONS.EAST].includes(this.pos.orientation)) ? \"text\" : \"text-vertical\", this);\r\n } else {\r\n EventManager.resetCursor(this);\r\n return false;\r\n }\r\n };\r\n\r\n isMouseOverText = (mousePos) => {\r\n return pnpolyArray(this.getTextPointsArea(), mousePos);\r\n };\r\n\r\n getTextPointsArea = () => {\r\n const mText = EventManager.getCtx().measureText(this.design.valuePrefix + this.value + this.design.valuePostfix );\r\n const {x, y} = this.getPos();\r\n\r\n let pointsArray = [];\r\n\r\n if ([DIRECTIONS.WEST, DIRECTIONS.EAST].includes(this.pos.orientation)) {\r\n pointsArray = [\r\n [x - Math.ceil10(mText.width,-2) / 2, y - this.design.fontHeight / 2],\r\n [x + Math.ceil10(mText.width,-2) / 2, y - this.design.fontHeight / 2],\r\n [x + Math.ceil10(mText.width,-2) / 2, y + this.design.fontHeight / 2],\r\n [x - Math.ceil10(mText.width,-2) / 2, y + this.design.fontHeight / 2],\r\n ]\r\n } else if ([DIRECTIONS.NORTH, DIRECTIONS.SOUTH].includes(this.pos.orientation)) {\r\n pointsArray = [\r\n [x - this.design.fontHeight / 2, y - Math.ceil10(mText.width,-2) / 2],\r\n [x + this.design.fontHeight / 2, y - Math.ceil10(mText.width,-2) / 2],\r\n [x + this.design.fontHeight / 2, y + Math.ceil10(mText.width,-2) / 2],\r\n [x - this.design.fontHeight / 2, y + Math.ceil10(mText.width,-2) / 2],\r\n ]\r\n } else {\r\n // todo horizontal\r\n }\r\n\r\n return pointsArray;\r\n };\r\n\r\n onMouseUp = (mousePos, e) => {\r\n void mousePos;\r\n void e;\r\n if (this.state.mouseDown) {\r\n this.state.mouseDown = false;\r\n this.state.mouseDownPosition = null;\r\n }\r\n };\r\n\r\n onMouseDown = (mousePos, e) => {\r\n void mousePos;\r\n void e;\r\n if (this.state.isHovered && !document.querySelector(\".line-input\")) {\r\n window.lineInputFocused = true;\r\n EventManager.stealCursor();\r\n\r\n const maxLength = this.parent.getMaxLength ? this.parent.getMaxLength() : 1000 * sqftConfig.getMeasureMultiplier();\r\n const pos = this.getPos();\r\n const initialValue = this.design.isLength\r\n ? sqftConfig.measureUnit === \"Metric\"\r\n ? measureDistanceToInches(this.value).millimeters\r\n : this.value\r\n : this.value;\r\n\r\n const inputWrapper = createAdjustableInput({\r\n position: pos,\r\n initialValue: initialValue.toString(),\r\n min: 1,\r\n max: maxLength,\r\n orientation: [DIRECTIONS.WEST, DIRECTIONS.EAST].includes(this.pos.orientation) ? \"horizontal\" : \"vertical\",\r\n onChange: this.onInputChange, // Trigger onInputChange when value changes\r\n onClose: () => {\r\n window.lineInputFocused = false;\r\n this.state.isHovered = false;\r\n },\r\n step: 1,\r\n });\r\n\r\n document.querySelector(\".sqft-main-grid\").appendChild(inputWrapper);\r\n // Focus and select input on creation\r\n const input = inputWrapper.querySelector(\".line-input-field\");\r\n input.focus();\r\n }\r\n\r\n return false;\r\n };\r\n\r\n onInputChange = (value) => {\r\n const valueBeforeUpdate = this.value;\r\n this.value = value;\r\n this.callback(value, this, valueBeforeUpdate);\r\n };\r\n\r\n onMouseLeave = () => {\r\n this.state.isHoveringPoint = false;\r\n this.state.mouseDown = false;\r\n this.state.hoveredPoint = null;\r\n this.state.isHoveredOverText = false;\r\n };\r\n\r\n setValue = (value) => {\r\n this.value = value\r\n }\r\n\r\n setPos = (pos) => {\r\n this.pos.x = pos.x\r\n this.pos.y = pos.y\r\n }\r\n\r\n setAngle = (angle) => {\r\n this.pos.angle = angle\r\n }\r\n\r\n setBetweenPoints = (pointFrom, pointTo) => {\r\n this.pos.betweenPoints.pointFrom = pointFrom;\r\n this.pos.betweenPoints.pointTo = pointTo;\r\n }\r\n\r\n getPos = () => {\r\n const parentOffset = this.parent.getOffset() ? this.parent.getOffset() : { x: 0, y: 0 };\r\n const scale = clone(sqftConfig.scale);\r\n let angle = this.pos.angle;\r\n\r\n //if this in the NumberText between lines than we override angle\r\n if (this.pos.betweenPoints.pointFrom) {\r\n angle = getAngleBetweenTwoPoints(this.pos.betweenPoints.pointFrom, this.pos.betweenPoints.pointTo);\r\n }\r\n\r\n const angleRad = angle * (Math.PI / 180);\r\n\r\n // calculate offset position according to offset point\r\n const calculatedXOffset = this.pos.xOffset * Math.cos(angleRad) - this.pos.yOffset * Math.sin(angleRad);\r\n const calculatedYOffset = this.pos.xOffset * Math.sin(angleRad) + this.pos.yOffset * Math.cos(angleRad);\r\n\r\n return {\r\n x: this.pos.x * scale + calculatedXOffset + parentOffset.x,\r\n y: this.pos.y * scale + calculatedYOffset + parentOffset.y\r\n }\r\n };\r\n\r\n getValue = (isString, withSuffixes = false) => {\r\n let value = this.value;\r\n if (this.design.isLength) {\r\n value = sqftConfig.measureUnit === \"Metric\"\r\n ? distanceToMillimeters(value)\r\n : distanceToInches(value)\r\n } else if (isString) {\r\n value = value.toString();\r\n }\r\n if (withSuffixes) {\r\n value = this.design.valuePrefix + value.toString() + this.design.valuePostfix;\r\n }\r\n\r\n return value\r\n };\r\n\r\n updateOrientation = () => {\r\n if (this.pos.betweenPoints.pointFrom) {\r\n this.pos.orientation = getLineDirection(this.pos.betweenPoints.pointFrom, this.pos.betweenPoints.pointTo, true);\r\n }\r\n }\r\n\r\n updatePositionBetweenPoints = () => {\r\n if (this.pos.betweenPoints.pointFrom) {\r\n const pointBetweenPoints = getMidPoint(this.pos.betweenPoints.pointFrom, this.pos.betweenPoints.pointTo);\r\n\r\n this.pos.x = pointBetweenPoints.x\r\n this.pos.y = pointBetweenPoints.y\r\n }\r\n }\r\n\r\n render = (ctx) => {\r\n if ((isDisabledInPopupShouldBeHidden() && isDisabledInPopupWithParents(this))\r\n || (this.pos.x === 0 && this.pos.y === 0) // this is for Free Draw. see https://qcquotecountertops.atlassian.net/browse/QCDES-2064\r\n ) {\r\n return\r\n }\r\n\r\n this.updateOrientation();\r\n this.updatePositionBetweenPoints();\r\n if (this.design.shouldRenderFrameBorder) {\r\n this.renderFrameBorder(ctx);\r\n }\r\n this.renderText(ctx);\r\n }\r\n\r\n renderFrameBorder = (ctx) => {\r\n ctx.beginPath();\r\n const pos = this.getPos();\r\n const value = this.getValue(true, true);\r\n const mText = ctx.measureText(value);\r\n let angle = 0;\r\n if (this.pos.betweenPoints.pointFrom) {\r\n angle = getAngleBetweenTwoPoints(this.pos.betweenPoints.pointFrom, this.pos.betweenPoints.pointTo);\r\n //this will help to rotate upside down text\r\n if ([DIRECTIONS.NORTHWEST, DIRECTIONS.SOUTHWEST].includes(this.pos.orientation)) {\r\n angle += 180;\r\n }\r\n }\r\n\r\n ctx.strokeStyle = COLOR_THEMES[sqftConfig.activeTheme].primary;\r\n ctx.lineWidth = 2;\r\n ctx.fillStyle = COLOR.white\r\n\r\n ctx.save();\r\n ctx.translate(\r\n pos.x ,\r\n pos.y\r\n );\r\n ctx.rotate(angle * (Math.PI / 180));\r\n RenderFigures.roundedRect(ctx,\r\n - mText.width / 2, // / sqftConfig.scale * sqftConfig.defaultScale,\r\n - this.design.fontHeight / 1.5,\r\n mText.width * 1.5, /// sqftConfig.scale * sqftConfig.defaultScale,\r\n this.design.fontHeight + 6,\r\n 5,\r\n true,\r\n true\r\n );\r\n\r\n ctx.restore();\r\n ctx.closePath();\r\n }\r\n\r\n renderText = (ctx) => {\r\n const //scale = sqftConfig.scale,\r\n fontHeight = this.design.fontHeight, //getFontsizeSmall(),\r\n font = fontHeight + \"px \" + this.design.fontFamily,\r\n value = this.getValue(true, true),//this.value.toString(),\r\n\r\n mText = ctx.measureText(value),\r\n pos = this.getPos();\r\n let angle = this.pos.angle;\r\n ctx.beginPath();\r\n ctx.font = font;\r\n ctx.textAlign = \"center\";\r\n ctx.fillStyle = this.design.fontColor;\r\n if (this.pos.betweenPoints.pointFrom) {\r\n angle = getAngleBetweenTwoPoints(this.pos.betweenPoints.pointFrom, this.pos.betweenPoints.pointTo);\r\n }\r\n\r\n switch (this.orientation) {\r\n case DIRECTIONS.EAST:\r\n case DIRECTIONS.WEST:\r\n case DIRECTIONS.SOUTH:\r\n case DIRECTIONS.NORTH:\r\n case DIRECTIONS.SOUTHEAST:\r\n case DIRECTIONS.SOUTHWEST:\r\n case DIRECTIONS.NORTHEAST:\r\n case DIRECTIONS.NORTHWEST: {\r\n //this will help to rotate upside down text\r\n if (this.pos.betweenPoints.pointFrom) {\r\n if ([DIRECTIONS.NORTHWEST, DIRECTIONS.SOUTHWEST, DIRECTIONS.WEST].includes(this.pos.orientation)) {\r\n angle += 180;\r\n }\r\n }\r\n\r\n ctx.save();\r\n ctx.translate(pos.x, pos.y);\r\n ctx.rotate(angle * (Math.PI / 180));\r\n ctx.wrapText(value, fontHeight / 2, fontHeight / 3, mText, fontHeight);\r\n ctx.restore();\r\n\r\n //ctx.wrapText(value, pos.x, pos.y, mText, fontHeight);\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","import * as uuid from \"uuid\";\r\nimport Movable from \"../workspace/mixin/movable\";\r\nimport EventManager from \"../../store/sqftEventManager\";\r\nimport ModelCorePoint from \"../workspace/textBox/model/modelCorePoint\";\r\nimport workspace from \"../workspace\";\r\nimport {getPointField, getPointOnWorkspace} from \"../../../../helpers/sqftHelper\";\r\nimport config from \"../../store/sqftConfig\";\r\nimport DrawImage from \"../workspace/textBox/draw/drawImage\";\r\nimport COLOR_THEMES, {COLOR} from \"../../store/colorThemes\";\r\nimport RenderFigures from \"../../helpers/renderFigures\";\r\n\r\nexport const CORE_POINT_LAYOUTS = {\r\n black: 'black',\r\n white: 'white',\r\n green: 'green',\r\n ear: 'ear',\r\n resize: 'resize',\r\n}\r\n\r\nexport default class PointV2 {\r\n _modelCorePoint;\r\n id;\r\n parent;\r\n design = {\r\n radius: 12,\r\n lineWidth: 1,\r\n layout: CORE_POINT_LAYOUTS.white\r\n };\r\n params = {\r\n priority: EventManager.priorities.POINT,\r\n movable: false,\r\n isCentered: false,\r\n\r\n isCenteredByY: false,\r\n isResizedByPoint: false,\r\n isScaledByPoint: false,\r\n isVisibleOnHover: false,\r\n shouldRotateShape: false,\r\n };\r\n\r\n constructor(x, y, parent, pointPrams = {}, design = {}) {\r\n this.params = Object.assign(this.params, pointPrams);\r\n this.design = Object.assign(this.design, design);\r\n let mixins = {\r\n movable : this.params.movable\r\n ? new Movable(x,\r\n y,\r\n this.design.radius,\r\n this.design.radius,\r\n this.params.priority,\r\n this,\r\n parent,\r\n this.params.moveCallback,\r\n this.params.mouseUpCallback,\r\n this.params.mouseDownCallback\r\n )\r\n : null,\r\n };\r\n this._modelCorePoint = new ModelCorePoint(x, y, parent, mixins);\r\n this.parent = parent;\r\n this.id = uuid.v4();\r\n this.initEvents();\r\n }\r\n\r\n get x() {\r\n return this._modelCorePoint.getPosX();\r\n }\r\n\r\n get y() {\r\n return this._modelCorePoint.getPosY();\r\n }\r\n\r\n set x(value) {\r\n return this._modelCorePoint.setPosX(value);\r\n }\r\n\r\n set y(value) {\r\n return this._modelCorePoint.setPosY(value);\r\n }\r\n\r\n get modelCorePoint() {\r\n return this._modelCorePoint;\r\n }\r\n\r\n set modelCorePoint(value) {\r\n this._modelCorePoint = value;\r\n }\r\n\r\n exportData = () => {\r\n return {\r\n id: this.id,\r\n x: this.x,\r\n y: this.y,\r\n design: this.design,\r\n params: this.params,\r\n }\r\n }\r\n\r\n importData = (pointData) => {\r\n this.id = pointData.id;\r\n this.x = pointData.x;\r\n this.y = pointData.y;\r\n this.design = pointData.design;\r\n this.params = pointData.params;\r\n }\r\n\r\n getPointField = () => {\r\n return getPointField(this.modelCorePoint.getPosX(), this.modelCorePoint.getPosY(), this.modelCorePoint.parent);\r\n }\r\n\r\n getPointPosOnWorkspace = () => {\r\n return getPointOnWorkspace(this.modelCorePoint.getPosX(), this.modelCorePoint.getPosY(), this.modelCorePoint.parent);\r\n };\r\n\r\n getParent = () => {\r\n return this.parent;\r\n }\r\n\r\n getPosition = () => {\r\n return {\r\n x: this.modelCorePoint.getPosX(),\r\n y: this.modelCorePoint.getPosY()\r\n }\r\n }\r\n\r\n setPosition(value) {\r\n this.modelCorePoint.setPosX(value.x);\r\n this.modelCorePoint.setPosY(value.y);\r\n }\r\n\r\n rotate(origin, angle, isSlabMode) {\r\n this._modelCorePoint.rotate(origin, angle, isSlabMode);\r\n }\r\n\r\n initEvents() {\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_MOVE,\r\n this.onMouseMove.bind(this),\r\n this,\r\n this.params.priority\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_DOWN,\r\n this.onMouseDown.bind(this),\r\n this,\r\n this.params.priority\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_UP,\r\n this.onMouseUp.bind(this),\r\n this,\r\n this.params.priority\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.RENDER,\r\n this.render.bind(this),\r\n this,\r\n this.params.priority\r\n );\r\n }\r\n\r\n onMouseMove() {\r\n }\r\n\r\n onMouseUp() {\r\n }\r\n\r\n onMouseDown() {\r\n }\r\n\r\n delete() {\r\n this.deregisterEvents();\r\n }\r\n\r\n destroy() {\r\n this.delete();\r\n }\r\n\r\n deregisterEvents = () => {\r\n EventManager.removeEvent(this.modelCorePoint.mixins.movable);\r\n EventManager.removeEvent(this);\r\n }\r\n\r\n reInitEvents = () => {\r\n this.initEvents();\r\n if (this.modelCorePoint.mixins.movable) {\r\n this.modelCorePoint.mixins.movable.reInitEvents();\r\n }\r\n }\r\n\r\n render = (ctx) => {\r\n if (workspace && workspace.getState().loading) return;\r\n\r\n // display only hovered or when mouse is down\r\n if (this.params.isVisibleOnHover && !this.isHoveredWithParent() && !this.isMouseDownWithParent()) {\r\n return\r\n }\r\n\r\n let pointField = this.getPointField();\r\n\r\n ctx.save();\r\n ctx.beginPath();\r\n\r\n switch (this.design.layout) {\r\n case CORE_POINT_LAYOUTS.black: {\r\n let arcRadius = 0;\r\n if (this.isHoveredWithParent()) {\r\n arcRadius = this.design.radius\r\n ctx.fillStyle = COLOR.blackLight;\r\n } else {\r\n arcRadius = this.design.radius / 2\r\n ctx.fillStyle = COLOR.white;\r\n }\r\n\r\n ctx.arc(\r\n pointField.x,\r\n pointField.y,\r\n arcRadius,\r\n 0,\r\n 2 * Math.PI,\r\n false\r\n );\r\n\r\n ctx.strokeStyle = COLOR_THEMES[config.activeTheme].primary;\r\n\r\n ctx.stroke();\r\n ctx.fill();\r\n break;\r\n }\r\n case CORE_POINT_LAYOUTS.white: {\r\n ctx.arc(\r\n pointField.x,\r\n pointField.y,\r\n this.design.radius,\r\n 0,\r\n Math.PI,\r\n false\r\n );\r\n\r\n ctx.strokeStyle = COLOR_THEMES[config.activeTheme].primary;\r\n ctx.fillStyle = '#ffffff';\r\n ctx.stroke();\r\n ctx.fill();\r\n break;\r\n }\r\n case CORE_POINT_LAYOUTS.green: {\r\n let arcRadius = 0;\r\n if (this.modelCorePoint.mixins.movable\r\n && this.modelCorePoint.mixins.movable.state.hovering\r\n ) {\r\n arcRadius = this.design.radius + 5;\r\n ctx.strokeStyle = COLOR.blackLight;\r\n ctx.fillStyle = COLOR.blackLight;\r\n } else {\r\n arcRadius = this.design.radius;\r\n ctx.strokeStyle = 'rgba(159,197,34,0.47)';\r\n ctx.fillStyle = 'rgba(159,197,34, 1)';\r\n }\r\n ctx.arc(\r\n pointField.x,\r\n pointField.y,\r\n arcRadius,\r\n 0,\r\n Math.PI * 2,\r\n false\r\n );\r\n\r\n ctx.lineWidth = 2;\r\n ctx.fill();\r\n\r\n // RenderFigures.drawRotatedArrow(ctx,\r\n // pointField.x - 20, pointField.y,\r\n // pointField.x, pointField.y - 20,\r\n // pointField.x - 20, pointField.y - 20,\r\n // 10\r\n // )\r\n\r\n ctx.stroke();\r\n break;\r\n }\r\n case CORE_POINT_LAYOUTS.ear: {\r\n let subLineWidth = 10;\r\n let subLineHeight = this.design.radius;\r\n ctx.moveTo(pointField.x, pointField.y - subLineHeight);\r\n ctx.lineTo(pointField.x + subLineWidth, pointField.y - subLineHeight);\r\n RenderFigures.renderOval(ctx, this.design.radius * 2 , this.design.radius * 2, pointField.x+ subLineWidth, pointField.y);\r\n ctx.moveTo(pointField.x + subLineWidth, pointField.y + subLineHeight);\r\n ctx.lineTo(pointField.x, pointField.y + subLineHeight);\r\n\r\n ctx.strokeStyle = COLOR_THEMES[config.activeTheme].primary;\r\n ctx.fillStyle = '#ffffff';\r\n ctx.lineWidth = this.design.lineWidth;\r\n ctx.stroke();\r\n //ctx.fill();\r\n break;\r\n }\r\n case CORE_POINT_LAYOUTS.resize: {\r\n //outside circle\r\n ctx.arc(\r\n pointField.x,\r\n pointField.y,\r\n this.design.radius,\r\n 0,\r\n Math.PI * 2,\r\n false\r\n );\r\n ctx.strokeStyle = COLOR_THEMES[config.activeTheme].primary;\r\n ctx.fillStyle = '#ffffff';\r\n ctx.lineWidth = this.design.lineWidth + 1;\r\n ctx.stroke();\r\n ctx.fill();\r\n\r\n //inside circle\r\n ctx.beginPath();\r\n ctx.arc(\r\n pointField.x,\r\n pointField.y,\r\n this.design.radius - 3,\r\n 0,\r\n Math.PI * 2,\r\n false\r\n );\r\n\r\n ctx.fillStyle = COLOR_THEMES[config.activeTheme].primary;\r\n ctx.lineWidth = this.design.lineWidth + 1;\r\n ctx.fill();\r\n\r\n // arrows\r\n DrawImage.renderImage('resizeArrows', ctx,\r\n pointField.x - this.design.radius / 2 + 1.5,\r\n pointField.y - this.design.radius / 2 + 1.5,\r\n 2.5,\r\n 2.5,\r\n true,\r\n true\r\n );\r\n break;\r\n }\r\n }\r\n\r\n ctx.closePath();\r\n ctx.restore();\r\n };\r\n\r\n isHoveredWithParent() {\r\n const isParentMovableHovered = this.modelCorePoint.parent.mixin\r\n ? this.modelCorePoint.parent.mixin.movable.state.hovering\r\n : false;\r\n const isParentHovered = this.modelCorePoint.parent && this.modelCorePoint.parent.state\r\n ? this.modelCorePoint.parent.state.hovering\r\n : false;\r\n const isParentChildrenHovered = this.modelCorePoint.parent.mixin\r\n ? this.modelCorePoint.parent.mixin.movable.state.hoveringWithChildren\r\n : false;\r\n const isHovered = this.modelCorePoint.mixins.movable\r\n ? this.modelCorePoint.mixins.movable.state.hovering\r\n : false;\r\n\r\n return isParentHovered || isParentMovableHovered || isParentChildrenHovered || isHovered\r\n }\r\n\r\n isMouseDownWithParent() {\r\n const isParentMouseDown = this.modelCorePoint.parent.mixin\r\n ? this.modelCorePoint.parent.mixin.movable.state.mouseDown\r\n : false;\r\n const isParentChildrenMouseDown = this.modelCorePoint.parent.mixin\r\n ? this.modelCorePoint.parent.mixin.movable.state.mouseDownWithChildren\r\n : false;\r\n const isMouseDown = this.modelCorePoint.mixins.movable\r\n ? this.modelCorePoint.mixins.movable.state.mouseDown\r\n : false;\r\n\r\n return isParentMouseDown || isParentChildrenMouseDown || isMouseDown\r\n }\r\n}\r\n","export const loadScript = (url, callback, id = \"\") => {\r\n let script = document.createElement(\"script\");\r\n script.type = \"text/javascript\";\r\n\r\n if (script.readyState) {\r\n script.onreadystatechange = function() {\r\n if (script.readyState === \"loaded\" || script.readyState === \"complete\") {\r\n script.onreadystatechange = null;\r\n if (callback) {\r\n callback()\r\n }\r\n }\r\n };\r\n } else if (callback) {\r\n script.onload = callback;\r\n }\r\n\r\n script.src = url;\r\n script.id = id;\r\n document.getElementsByTagName(\"head\")[0].appendChild(script);\r\n};\r\n\r\n/**\r\n * @param url {string}\r\n * @param id {string}\r\n * @returns promise\r\n * */\r\nexport const loadScriptPromise = (url, id) => {\r\n return new Promise(function (resolve, reject) {\r\n if (id && document.getElementById(id)) {\r\n return resolve()\r\n }\r\n let s;\r\n s = document.createElement('script');\r\n s.src = url;\r\n s.id = id;\r\n s.onload = resolve;\r\n s.onerror = reject;\r\n document.body.appendChild(s);\r\n });\r\n};\r\n","import * as types from '../actions/actionTypes';\r\nexport const ACTIVE_ROOM_TYPE = {\r\n category: 'category',\r\n roomGroup: 'roomGroup',\r\n quote: 'quote',\r\n}\r\n\r\nconst initialState = {\r\n menuOpened: \"\",\r\n menuOpenedLock: false,\r\n activeButton: null,\r\n activeSubMenuButton: null,\r\n activeLevel3Button: null,\r\n activeRoom: null,\r\n activeRoomId: null,\r\n activeRoomIndex: null,\r\n activeRoomType: null,\r\n isFreeDrawMode: false,\r\n isWallsUpMode: true,\r\n isWallsLockMode: true,\r\n roomSwitcher: {\r\n isVisible: false\r\n },\r\n roomLayouts: [],\r\n contextMenu: {\r\n isOpened: false,\r\n activeMenu: \"\",\r\n pos: {},\r\n parent: null\r\n },\r\n contextMenuV2: {\r\n isOpened: false,\r\n menuItems: [],\r\n position: {}\r\n },\r\n systemMessage: {\r\n isOpened: false,\r\n title: \"\",\r\n text: \"\"\r\n },\r\n ar3dPopup: {\r\n isOpened: false,\r\n contentType: false\r\n },\r\n systemDeleteMessage: {\r\n isOpened: false,\r\n shape: null\r\n },\r\n sqftPopup: {\r\n title: \"\",\r\n content: \"\",\r\n isOpened: false,\r\n confirmCallback: new Function (),\r\n confirmText: \"\",\r\n cancelCallback: new Function (),\r\n cancelText: \"\"\r\n },\r\n changeValuePopups: [],\r\n validationPopups: [],\r\n shapeIdsWithMissingFeature: [],\r\n isShapeFeatureMissing: false,\r\n isITextEditing: false,\r\n isSlabPlaceholderOverlapsWithMultipleShapes: false,\r\n validationMessage: {},\r\n reCacheMenuCounter: 0,\r\n cabinetRelatedItems: [],\r\n};\r\n\r\nexport default function (state = initialState, action) {\r\n let changeValuePopups;\r\n let validationPopups;\r\n switch (action.type) {\r\n case types.SET_SQFT_MENU_OPENED:\r\n case types.SET_SQFT_MENU_LOCK:\r\n case types.SET_SQFT_MENU_ACTIVE_BUTTON:\r\n case types.SET_SQFT_ACTIVE_SUB_MENU_BUTTON:\r\n case types.SET_SQFT_ACTIVE_LEVEL3_BUTTON:\r\n case types.SET_SQFT_ACTIVE_ROOM:\r\n case types.SET_SQFT_ACTIVE_ROOM_ID:\r\n case types.SET_SQFT_ROOM_LAYOUTS:\r\n case types.SET_SQFT_ACTIVE_ROOM_TYPE:\r\n case types.SET_SQFT_ACTIVE_ROOM_INDEX:\r\n case types.SET_FREE_DRAW_MODE:\r\n case types.SET_WALLS_UP_MODE:\r\n case types.SET_WALLS_LOCK_MODE:\r\n case types.SET_SHAPE_IDS_WITH_MISSING_FEATURES:\r\n case types.SET_CHANGE_SHAPE_FEATURE_MISSING_MESSAGE:\r\n case types.SET_IS_ITEXT_EDITING:\r\n case types.SET_SLAB_PLACEHOLDER_OVERLAPS_WITH_MULTIPLE_SHAPES:\r\n case types.SET_RE_CACHE_MENU_COUNTER:\r\n case types.SET_CABINET_RELATED_ITEMS:\r\n return Object.assign({}, state, {\r\n ...action.payload\r\n });\r\n case types.ADD_SHAPE_ID_WITH_MISSING_FEATURES:\r\n return Object.assign({}, state, {\r\n shapeIdsWithMissingFeature: [...state.shapeIdsWithMissingFeature, action.payload]\r\n });\r\n case types.SET_SQFT_ROOM_SWITCHER_VISIBLE:\r\n return Object.assign({}, state, {\r\n roomSwitcher: {...state.roomSwitcher, ...{isVisible: action.payload.isVisible}}\r\n });\r\n case types.SET_SQFT_CONTEXT_MENU:\r\n return Object.assign({}, state, {\r\n contextMenu: {...state.contextMenu, ...action.payload.contextMenu}\r\n });\r\n case types.SET_SQFT_SYSTEM_MESSAGE:\r\n return Object.assign({}, state, {\r\n systemMessage: {...state.systemMessage, ...action.payload.systemMessage}\r\n });\r\n case types.SET_SQFT_AR3D_POPUP:\r\n return Object.assign({}, state, {\r\n ar3dPopup: {...state.ar3dPopup, ...action.payload.ar3dPopup}\r\n });\r\n case types.SET_SQFT_POPUP:\r\n return Object.assign({}, state, {\r\n sqftPopup: {...state.sqftPopup, ...action.payload.sqftPopup}\r\n });\r\n case types.SET_SQFT_CONTEXT_MENU_V2:\r\n return Object.assign({}, state, {\r\n contextMenuV2: {...state.contextMenuV2, ...action.payload.contextMenuV2}\r\n });\r\n case types.SET_SQFT_SYSTEM_DELETE_MESSAGE:\r\n return Object.assign({}, state, {\r\n systemDeleteMessage: {...state.systemDeleteMessage, ...action.payload.systemDeleteMessage}\r\n });\r\n\r\n case types.SET_CHANGE_VALUE_POPUPS:\r\n state = {...state, changeValuePopups: action.payload.changeValuePopups};\r\n break;\r\n case types.ADD_CHANGE_VALUE_POPUP:\r\n return Object.assign({}, state, {\r\n changeValuePopups: [...state.changeValuePopups, action.payload]\r\n });\r\n case types.CHANGE_VALUE_POPUP:\r\n changeValuePopups = state.changeValuePopups.map((item) => {\r\n if (item.id !== action.payload.id) { return item }\r\n\r\n return {\r\n ...item,\r\n ...action.payload\r\n }\r\n })\r\n return Object.assign({}, state, {changeValuePopups: changeValuePopups });\r\n case types.DELETE_CHANGE_VALUE_POPUP:\r\n changeValuePopups = state.changeValuePopups.filter((row) => row.id !== action.payload.id);\r\n\r\n return Object.assign({}, state, {\r\n changeValuePopups: changeValuePopups\r\n });\r\n\r\n case types.SET_VALIDATION_POPUPS:\r\n state = {...state, validationPopups: action.payload.validationPopups};\r\n break;\r\n case types.ADD_VALIDATION_POPUP:\r\n return Object.assign({}, state, {\r\n validationPopups: [...state.validationPopups, action.payload]\r\n });\r\n case types.VALIDATION_POPUP:\r\n validationPopups = state.validationPopups.map((item) => {\r\n if (item.id !== action.payload.id) { return item }\r\n\r\n return {\r\n ...item,\r\n ...action.payload\r\n }\r\n })\r\n return Object.assign({}, state, {validationPopups: validationPopups });\r\n case types.DELETE_VALIDATION_POPUP:\r\n validationPopups = state.validationPopups.filter((row) => row.id !== action.payload.id);\r\n\r\n return Object.assign({}, state, {\r\n validationPopups: validationPopups\r\n });\r\n default:\r\n return state\r\n }\r\n}\r\n","import EventManager from \"../../store/sqftEventManager\";\r\nimport CabinetShapes from \"./cabinetShapes\";\r\nimport store from \"../../../../../../store\";\r\nimport { setSQFTContextMenuV2 } from \"../../../../../../actions/sqftMenuFunctions\";\r\nimport workspace from \"../workspace\";\r\nimport { renderMeasurementsAroundSnappedShapes } from \"../slab/sqftSlabDraw\";\r\nimport CabinetShapesLayout from \"./cabinetShapesLayout\";\r\nimport { getMousePositionOnField } from \"../../../../helpers/sqftHelper\";\r\nimport { SHAPE_PART_ID } from \"../../../../constants\";\r\nimport { getCurrentLayout } from \"../../../../../appLayout\";\r\n\r\nclass CabinetWorkspace {\r\n constructor() {\r\n this.eventManager = EventManager;\r\n this.objectName = { name: 'CabinetWorkspace' };\r\n this.state = {};\r\n this.cabinetShapes = new CabinetShapes();\r\n this.cabinetShapesLayout = new CabinetShapesLayout();\r\n this.measurementPoints = [];\r\n this.__crownMoldingParams = {\r\n distance: 10\r\n };\r\n\r\n this.initCabinetEvents();\r\n }\r\n\r\n initCabinetEvents() {\r\n //todo right button click\r\n //EventManager.addEvent(EventManager.events.CONTEXTMENU, this.onRightClick, this, EventManager.priorities.OVERLAY);\r\n EventManager.addEvent(EventManager.events.DROP, this.handleDrop, this, EventManager.priorities.OVERLAY);\r\n EventManager.addEvent(EventManager.events.DRAG_OVER, this.handleDrag, this, EventManager.priorities.OVERLAY);\r\n EventManager.addEvent(EventManager.events.RENDER, this.render, this, EventManager.priorities.OVERLAY);\r\n }\r\n\r\n render(ctx) {\r\n renderMeasurementsAroundSnappedShapes(ctx);\r\n }\r\n\r\n deregisterEvents() {\r\n EventManager.removeEvent(this);\r\n }\r\n\r\n onRightClick(mousePos, e) {\r\n store.dispatch(setSQFTContextMenuV2({\r\n isOpened: true,\r\n title: workspace.intl.formatMessage({ id: \"sqft.contextmenu.properties.title\" }),\r\n menuItems: [\r\n {\r\n title: 'Change Cabinet Style',\r\n callback: new Function()\r\n },\r\n {\r\n title: 'Generate Countertop',\r\n callback: new Function()\r\n },\r\n {\r\n title: 'Generate Backsplash',\r\n callback: new Function()\r\n },\r\n ],\r\n position: { left: mousePos.x, top: mousePos.y }\r\n }));\r\n document.addEventListener('click', this.closeContextMenu);\r\n void e;\r\n }\r\n\r\n closeContextMenu(e) {\r\n const navClick = e.target.closest('[class*=\"contextmenu2\"]');\r\n if (!navClick && !window.touchMove) {\r\n store.dispatch(setSQFTContextMenuV2({\r\n isOpened: false,\r\n title: '',\r\n menuItems: [],\r\n position: {}\r\n }));\r\n }\r\n }\r\n\r\n handleDrop(mousePos, e) {\r\n e.preventDefault();\r\n const featureId = JSON.parse(e.dataTransfer.getData('featureId'));\r\n const parentFeatureId = JSON.parse(e.dataTransfer.getData('parentFeatureId'));\r\n const partId = JSON.parse(e.dataTransfer.getData('partId'));\r\n\r\n if ([SHAPE_PART_ID.upper_cabinet_boxes, SHAPE_PART_ID.lower_cabinet_boxes, SHAPE_PART_ID.tall_cabinet_boxes,\r\n SHAPE_PART_ID.top_cabinet, SHAPE_PART_ID.bottom_cabinet, SHAPE_PART_ID.tall_cabinet\r\n ].includes(partId)) {\r\n\r\n const layout = getCurrentLayout();\r\n const feature = layout.getFeatureById(featureId, true);\r\n const parentFeature = layout.getFeatureById(parentFeatureId, true);\r\n let shapeId = null;\r\n const mousePosOnField = getMousePositionOnField(mousePos.x, mousePos.y);\r\n shapeId = this.cabinetShapes.addShape(feature, parentFeature, mousePosOnField);\r\n\r\n const shape = workspace.getShapeById(shapeId);\r\n shape.shapeAutoShuffle.handlePlaceShapeOnTheLine();\r\n }\r\n }\r\n\r\n handleDrag(mousePos, e) {\r\n e.preventDefault();\r\n // update hovered lines for rendering auto shuffle possibilities\r\n const hoveredLines = workspace.getHoveredLines();\r\n void hoveredLines;\r\n }\r\n}\r\n\r\nexport default new CabinetWorkspace();\r\n","import sqftConfig from \"./sqftConfig\";\r\nimport sqftImageManager from \"./sqftImageManager\";\r\nimport sqftShapeManager from \"./sqftShapeManager\";\r\nimport workspace from \"../core/workspace\";\r\nimport slabWorkspace from \"../core/slab/slabWorkspace\";\r\nimport store from \"../../../../../store\";\r\nimport {setIsRoomSwitcherVisible} from \"../../../../../actions/sqftMenuFunctions\";\r\nimport sqftSlabManager from \"./sqftSlabManager\";\r\nimport sqftShapeIntersectionsManager from \"./sqftShapeIntersectionsManager\";\r\nimport workspaceControllers from \"./workspaceControllers\";\r\n\r\nexport const enableRegularMode = () => {\r\n store.dispatch(setIsRoomSwitcherVisible(true));\r\n //sqftConfig.workspace.snapToGrid = true;\r\n slabWorkspace.disableSlabImages();\r\n slabWorkspace.deregisterEvents();\r\n sqftImageManager.hideSlabImages();\r\n sqftShapeManager.hideSeamShapes();\r\n sqftShapeManager.hideSlabShapes();\r\n\r\n sqftSlabManager.deleteShapeOffset();\r\n\r\n sqftImageManager.restoreTextBoxes();\r\n sqftImageManager.restoreImages();\r\n sqftShapeManager.restoreCorePieceShapes();\r\n sqftShapeManager.restoreShapeParts();\r\n\r\n slabWorkspace.slabAdditionalShapes.hideAdditionalShapes(); //this should go last\r\n};\r\n\r\nexport const enableSlabMode = (shouldUpdatePlaceholderFeatureIds = false) => {\r\n store.dispatch(setIsRoomSwitcherVisible(false));\r\n sqftConfig.workspace.snapToGrid = false;\r\n sqftImageManager.restoreSlabImages();\r\n sqftShapeManager.checkForUpdateSlabPoints();\r\n sqftShapeManager.checkForUpdateSlabPosition();\r\n sqftShapeManager.restoreSeamShapes();\r\n sqftShapeManager.restoreSlabShapes();\r\n\r\n sqftSlabManager.reInitShapeOffset();\r\n\r\n slabWorkspace.slabAdditionalShapes.initWaterfallToolShapes(); // 1\r\n slabWorkspace.slabAdditionalShapes.initBacksplashAndEdgeShapes();\r\n slabWorkspace.slabAdditionalShapes.initMiteredToolShapes(); // 2\r\n slabWorkspace.slabAdditionalShapes.initUnderlaymentToolShapes(); // 2\r\n slabWorkspace.slabAdditionalShapes.initBumpoutShapes();\r\n slabWorkspace.slabAdditionalShapes.restoreBacksplashShapes();\r\n slabWorkspace.initLeftPart();\r\n\r\n sqftImageManager.hideImages();\r\n sqftImageManager.hideTextBoxes();\r\n sqftShapeManager.hideShapeParts();\r\n sqftShapeManager.hideCorePieceShapes();\r\n\r\n if (shouldUpdatePlaceholderFeatureIds) {\r\n window.setTimeout(() => { // first we need to enable slab mode to get slab mode coordinates for the shape\r\n sqftShapeIntersectionsManager.updateShapesIntersections();\r\n sqftShapeIntersectionsManager.updateSlabPlaceholderFeatureId();\r\n workspaceControllers.snappedShapeGroups.updateShapesSnappedGroups(false);\r\n }, 0)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n};\r\n\r\nexport const createSlabModeWaterfallShapes = () => {\r\n slabWorkspace.slabAdditionalShapes.initWaterfallToolShapes(); // 1\r\n slabWorkspace.slabAdditionalShapes.initMiteredToolShapes(); // 2\r\n slabWorkspace.slabAdditionalShapes.hideAdditionalShapes(); //this should go last\r\n}\r\n\r\nexport const clearRotateAngles = () => {\r\n sqftConfig.highlight.rotateAngle = false;\r\n const angleTooltip = document.getElementById(\"angle-tooltip\");\r\n if (angleTooltip) {\r\n angleTooltip.style.display = \"none\";\r\n }\r\n\r\n workspace.getShapes().forEach((shape) => {\r\n if (Array.isArray(shape.rotateAngleParts) && shape.rotateAngleParts.length) {\r\n shape.deActivateRotateAngle();\r\n }\r\n });\r\n}\r\n\r\nexport const getDimensionsDependingOnShapePositions = (workspace) => {\r\n const {minX, maxX, minY, maxY} = sqftShapeManager.getMinMaxWorkspacePoints(workspace, true);\r\n let maxCordX = Math.abs(minX) > Math.abs(maxX) ? Math.abs(minX) : Math.abs(maxX);\r\n let maxCordY = Math.abs(minY) > Math.abs(maxY) ? Math.abs(minY) : Math.abs(maxY);\r\n\r\n let imageWidth = maxCordX / sqftConfig.scale * Math.pow(sqftConfig.defaultScale, 2) + 500 / sqftConfig.scale * sqftConfig.defaultScale;\r\n let imageHeight = maxCordY / sqftConfig.scale * Math.pow(sqftConfig.defaultScale, 2) + 500 / sqftConfig.scale * sqftConfig.defaultScale;\r\n\r\n //todo re-wright this\r\n if (window.innerWidth < 1024) {\r\n imageWidth *= 3.75\r\n imageHeight *= 3.75\r\n }\r\n\r\n return [imageWidth, imageHeight]\r\n}\r\n\r\nexport const getFontSizeFromContext = (ctx) => {\r\n const fontSizeMatch = ctx.font.match(/\\d+/);\r\n return fontSizeMatch ? Number(fontSizeMatch[0]) : null;\r\n}\r\n","import isEmpty from \"lodash/isEmpty\";\r\nimport trim from \"lodash/trim\";\r\nimport isEqual from \"lodash/isEqual\";\r\nimport uniqBy from \"lodash/uniqBy\";\r\n\r\nimport DesignNavigationItem from \"./designNavigationItem\";\r\nimport {Exception} from \"../common/exception\";\r\nimport {\r\n filterFeaturesByValues,\r\n getAllFeatureFilters,\r\n getFilterGroupValue,\r\n getFilterGroupValues\r\n} from \"../../misc/utils\";\r\nimport store from \"../../store\";\r\nimport featureIsMatchingDisplayLogic, {checkIfInCatProperty} from \"../../misc/displayLogic\";\r\nimport {addDisplayLogicCartItem, addToCart} from \"../../actions/actionFunctions\";\r\nimport {capitalizeFirstLetters} from \"../../misc/helpers\";\r\nimport {IS_LIXIL_UI} from \"../../config\";\r\nimport {LOOK_ROOM_TYPES} from \"../look/core/constants\";\r\nimport {getCurrentRoomType} from \"../appLayout\";\r\nimport {getOptionsFromNavItemsForFeature} from \"../look/lookNavigation/lookFunctions\";\r\nimport {getColorFilterValue} from \"../../misc/filtersFunctions\";\r\nimport {loadRelatedFeatures, setRoomNotInVisualizerProperty} from \"./featuresFunctions\";\r\nimport {getFeatureCropCoors} from \"../../misc/metaDataFunctions\";\r\n\r\nexport default class PartCommon { // Common Class for KV & BV common methods (Feature -> IntermediatePart -> Part -> PartCommon)\r\n\r\n loadCommon(relatedItemName, RelatedItemClass, dbFeature, loadFeature = true, shouldLoadInDifferentGroups = false) {\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n if (loadFeature) {\r\n this[relatedItemName].load(dbFeature);\r\n }\r\n return !shouldLoadInDifferentGroups\r\n }\r\n return false\r\n }\r\n\r\n createRelatedItems() {\r\n if (this.relatedGroupNames) {\r\n this.relatedGroupNames.forEach(groupName => {\r\n this.load({groupName}, false)\r\n })\r\n }\r\n }\r\n\r\n navigationNoMetaSubItems(filters, searchText) {\r\n return this.returnUniqueNavFeatures(this.getFeaturesBySearchText(this.getFilteredFeaturesByFilters(filters, this.features), searchText))\r\n }\r\n\r\n /**\r\n * Returns an array of navigation items related to the given parent item\r\n * i.e. Floor - will return all Floor features\r\n * @returns {Array.}\r\n */\r\n navigationSubItems(filters, searchText) {\r\n return this.getFeaturesBySearchText(this.getFilteredFeaturesByFilters(filters), searchText)\r\n .map(_ => new DesignNavigationItem(_.featureName, _)); // 1) filter them by filters 2) filter them by search\r\n }\r\n\r\n navigationSubItemsWithFilterWithInactive(propName, propValue, featuresToCheck = this.features) {\r\n const refactoredArray = featuresToCheck.map((feature) => {\r\n feature.matchesMetaFailed = !(feature.matchesMetaForCondition(propName, propValue));\r\n return feature\r\n });\r\n return refactoredArray.map(_ => new DesignNavigationItem(_.featureName, _));\r\n }\r\n\r\n /**\r\n * Called before setLayers, so that each Feature can set the zIndex for its layers\r\n * @param zIndexes {object}\r\n */\r\n setZIndex(zIndexes) {\r\n if(zIndexes) {\r\n this.getRelatedItems().forEach(_ => _.setZIndex(zIndexes));\r\n }\r\n }\r\n\r\n /**\r\n * Each feature will load its data from teh data object which comes from REST\r\n * @param dbFeature {object}\r\n * @return boolean // needed for break logic\r\n */\r\n load(dbFeature) {\r\n console.log('exception load', this, dbFeature);\r\n Exception.NotImplementedBaseClass();\r\n }\r\n\r\n /**\r\n * Will return the list of sub-parts if any, i.e. for Vanity it will be Mirror, Toilet, Sink, ...\r\n * !@param withHidden {boolean}\r\n * @returns {Array.}\r\n */\r\n subParts(withHidden = true) {\r\n return this.getRelatedItems()\r\n .filter(item => this.filterRelatedItem(item, withHidden))\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n filterRelatedItem(relatedItem, withHidden) {\r\n return withHidden\r\n ? relatedItem.visible && relatedItem.featureGroupEnabled\r\n : relatedItem.visible\r\n && relatedItem.featureGroupEnabled\r\n && (relatedItem.featureGroupVisible || (!relatedItem.featureGroupVisible && document.kvConfig.isBackend))\r\n }\r\n\r\n /**\r\n * Returns the navigation item to be displayed in navigation bar\r\n */\r\n navigationItem() {\r\n Exception.NotImplementedBaseClass(this);\r\n }\r\n\r\n /**\r\n * In case of Vanity is Custom & Complete.\r\n * Usually called for Complex parts, such as Vanities\r\n */\r\n subTypes() {\r\n // Exception.NotImplementedBaseClass(this);\r\n return []\r\n }\r\n\r\n /**\r\n * Converts a given sub-type to string\r\n // * @param subType\r\n * @returns {null}\r\n */\r\n subTypeToString() {\r\n return null;\r\n }\r\n\r\n /**\r\n * Checked whether the given sub-type has items, i.e. Vanity.Complete has\r\n */\r\n isSubTypeWithItems() {\r\n Exception.NotImplementedBaseClass(this);\r\n }\r\n\r\n activeSubType() {\r\n Exception.NotImplementedBaseClass(this);\r\n }\r\n\r\n getFilteredFeaturesByFilters(filters, featuresArray = this.features) {\r\n return !isEmpty(filters) ? filterFeaturesByValues(featuresArray, filters) : (featuresArray || []);\r\n }\r\n\r\n getFeaturesBySearchText(arrayToFilter, searchText) {\r\n if (!searchText) {\r\n return arrayToFilter\r\n }\r\n if (IS_LIXIL_UI) {\r\n return this.getFeaturesBySearchTextLixil(arrayToFilter, searchText)\r\n }\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n return arrayToFilter.filter(feature => {\r\n const _searchText = trim(searchText.toLowerCase());\r\n let res = (!!feature);\r\n if (res) {\r\n const featureFilterValueIds = Object.assign(feature.dbFeature.filterValueIDs, feature.dbFeature.fabFilterValueIDs);\r\n let isPartName = feature.getFeatureName && feature.getFeatureName().toLowerCase().includes(_searchText);\r\n let isFilterName = false;\r\n\r\n if(!isPartName) {\r\n for(let filterGroupId in featureFilterValueIds) {\r\n let filterGroupIds = featureFilterValueIds[filterGroupId];\r\n for(let filterIndex in filterGroupIds) {\r\n let filterId = filterGroupIds[filterIndex];\r\n if(filterGroups[filterGroupId] && filterGroups[filterGroupId].values) {\r\n let filterGroup = filterGroups.find(fg => fg.id === filterGroupId);\r\n if (filterGroup && filterGroup.values) {\r\n let filter = filterGroup.values.find( fgv => fgv.id === filterId);\r\n if (filter) {\r\n isFilterName = (isFilterName || filter.displayText.toLowerCase().includes(_searchText) || filter.value.toLowerCase().includes(_searchText));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n res = isPartName || isFilterName;\r\n }\r\n return res;\r\n })\r\n }\r\n\r\n getFeaturesBySearchTextLixil(arrayToFilter, searchText) {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n const collectionFilterGroup = filterGroups.find(group => group.name === \"Collection\");\r\n const _searchText = searchText.trim().toLowerCase();\r\n\r\n return arrayToFilter.filter(feature => {\r\n const featureFilterValueIds = getAllFeatureFilters(feature);\r\n const sku = (feature.getSplittedFeatureName() || \"\").toLowerCase();\r\n const customDisplayName = (feature.dbFeature.customDisplayName || \"\").toLowerCase();\r\n\r\n let res = (!!feature);\r\n if (res) {\r\n let matchByName = (sku && sku.includes(_searchText)) || (customDisplayName && customDisplayName.includes(_searchText));\r\n let isFilterName = false;\r\n\r\n if (!matchByName && collectionFilterGroup && Array.isArray(featureFilterValueIds[collectionFilterGroup.id])) {\r\n matchByName = featureFilterValueIds[collectionFilterGroup.id].some(filterId => {\r\n return collectionFilterGroup.values.some(fValue => {\r\n return (fValue.id === filterId) && fValue.displayText && fValue.displayText.toLowerCase().includes(_searchText)\r\n })\r\n })\r\n }\r\n\r\n if (!matchByName) {\r\n for(let filterGroupId in featureFilterValueIds) {\r\n let filterGroupIds = featureFilterValueIds[filterGroupId];\r\n for(let filterIndex in filterGroupIds) {\r\n let filterId = filterGroupIds[filterIndex];\r\n if(filterGroups[filterGroupId] && filterGroups[filterGroupId].values) {\r\n let filterGroup = filterGroups.find(fg => fg.id === filterGroupId);\r\n if (filterGroup && filterGroup.values) {\r\n let filter = filterGroup.values.find(fgv => fgv.id === filterId);\r\n if (filter) {\r\n isFilterName = (isFilterName || filter.displayText.toLowerCase().includes(_searchText) || filter.value.toLowerCase().includes(_searchText));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n res = matchByName || isFilterName;\r\n }\r\n return res;\r\n })\r\n }\r\n\r\n /**\r\n * Returns the fabricator feature id\r\n * @returns {int}\r\n */\r\n id() {\r\n return this.dbFeature.id;\r\n }\r\n\r\n /**\r\n * Returns the fabricator feature id\r\n * @param featureId {number}\r\n * @param partsToo {boolean}\r\n * @returns {feature}\r\n */\r\n getFeatureById(featureId, partsToo = false) {\r\n const neededId = +featureId;\r\n if (!this.features && (!partsToo || !this.featuresParts)) {\r\n console.error(\"This featureGroup has no features array:\", this)\r\n return null\r\n }\r\n // if (partsToo) {\r\n // return this.features.find(f => f.dbFeature.id === neededId) || this.featuresParts.find(f => f.dbFeature.id === neededId)\r\n // }\r\n // return this.features.find(f => f.dbFeature.id === neededId)\r\n const allFeatures = partsToo ? [...this.features, ...this.featuresParts] : this.features;\r\n for (let i = 0; i < allFeatures.length; i++) {\r\n if (allFeatures[i].dbFeature.id === neededId) {\r\n return allFeatures[i];\r\n }\r\n }\r\n return null\r\n }\r\n\r\n getFeatureByPartName(partName, inParts = false) {\r\n if (!partName) {\r\n return null\r\n }\r\n partName = partName.split(\" \").join(\"\").toLowerCase(); // for example, \"Natural Stone Sofitel Gold\" & \"Natural Stone Sofitel Gold\" - different names\r\n const arrayToFind = inParts && this.featureParts ? this.featureParts.map(feature => { return {part: feature} }) : this.navigationSubItems();\r\n const matchingItem = arrayToFind.find(navFeature => {\r\n const feature = navFeature.part;\r\n if (!feature.partName || feature.notAvailableInVisualizer) {\r\n return false\r\n }\r\n if (!feature._partNameWithoutSpaces) {\r\n feature._partNameWithoutSpaces = feature.getMatchingFeatureName().split(\" \").join(\"\").toLowerCase();\r\n }\r\n return partName === feature._partNameWithoutSpaces\r\n });\r\n return matchingItem ? matchingItem.part : null\r\n }\r\n\r\n getDefaultFeature() {\r\n\r\n }\r\n\r\n /**\r\n * Returns the active feature id\r\n * @param placeholdersNeeded\r\n * @returns {int}\r\n */\r\n activeFeatureId(placeholdersNeeded = false) {\r\n return placeholdersNeeded && this.placeholderFeature && !this.placeholderChanged\r\n ? this.placeholderFeature.dbFeature.id\r\n : this.activeFeature.dbFeature.id\r\n }\r\n\r\n /**\r\n * @param feature {Part}\r\n * @returns {*}\r\n */\r\n featureDefinitionId(feature = null) {\r\n const dbFeature = feature ? feature.dbFeature : this.dbFeature;\r\n return dbFeature.featureDefinitionID;\r\n }\r\n\r\n handleClick() {}\r\n\r\n disabledClick() {}\r\n\r\n /**\r\n * Used for metaData conditions\r\n * @returns Array\r\n */\r\n getArrayOfConditions() {\r\n return []\r\n }\r\n\r\n updateLocalStorage() {\r\n const layout = this.layout || this.getParent().layout || this.getParent().getParent().layout;\r\n layout.updateLocalStorage();\r\n }\r\n\r\n /**\r\n * Used for complex parts, i.e. Vanity - Complex, Custom\r\n // * @param subType\r\n */\r\n handleSubTypeClick() {\r\n Exception.NotImplementedBaseClass();\r\n }\r\n\r\n /**\r\n * Handles the click on sub-part buttons, i.e. for Vanity on its buttons such as Toilet, Sink...\r\n // * @param subPart\r\n */\r\n handleSubPartClick() {\r\n // Exception.NotImplementedBaseClass();\r\n }\r\n\r\n /**\r\n * Returns first value Id from a specific group\r\n * @param groupId\r\n */\r\n filterValue(groupId) {\r\n return this.dbFeature.filterValueIDs[groupId][0];\r\n }\r\n\r\n /**\r\n * Do something specific after layer changes\r\n // * @param layoutType\r\n */\r\n changeLayout() {\r\n\r\n }\r\n\r\n /**\r\n * Do something specific after Type Changed (returns null by default for all Parts)\r\n */\r\n setDefaultPartAfterSubTypeClick() {\r\n return null\r\n }\r\n\r\n getRelatedItems() {\r\n return this.relatedItems\r\n }\r\n\r\n /**\r\n * Set default layer for each relatedItem of the group.\r\n * @param layout {Layout}\r\n */\r\n setDefault(layout) {\r\n this.relatedItems.forEach(relatedItem => relatedItem.setDefault(layout));\r\n }\r\n\r\n setFeatureGroupDefault(layout, setNotInVisFeature = this.hasNoVisualizerLayers) {\r\n const conditions = this.getArrayOfConditions ? this.getArrayOfConditions() : null;\r\n let filteredFeatures = conditions ? this.features.filter(feature => {\r\n return setNotInVisFeature\r\n ? feature.matchesMetaForArrayOfConditions(conditions)\r\n : feature.dbFeature.s3Bindings && feature.matchesMetaForArrayOfConditions(conditions)\r\n }) : this.features;\r\n\r\n if (document.kvConfig.visualizerType === \"bvLook\" && !filteredFeatures.length\r\n && (getCurrentRoomType(layout) === LOOK_ROOM_TYPES.as) && !(this.partId.includes(\"_wall\") && this.hasAdditionalParts)) {\r\n filteredFeatures = this.getArrayOfConditions\r\n ? this.featuresParts.filter(f => f.dbFeature.s3Bindings && f.matchesMetaForArrayOfConditions(conditions))\r\n : this.featuresParts;\r\n }\r\n\r\n const matchingFeatureExist = this.tryToSetTheSameFeature(filteredFeatures, null);\r\n if (!matchingFeatureExist) {\r\n this.activeFeature = filteredFeatures[0];\r\n }\r\n const features = this.features;\r\n if (IS_LIXIL_UI && !this.activeFeature && !this.activeNotInVisualizerFeature && Array.isArray(features)\r\n && features.length && features.every(feature => feature.notAvailableInVisualizer)) {\r\n this.activeNotInVisualizerFeature = features[0];\r\n }\r\n // this.placeholderFeature = this.features.find((feature) => {\r\n // return feature.dbFeature.displayName && feature.dbFeature.displayName.includes(\"laceholder\");\r\n // });\r\n if (this.hasAdditionalParts) {\r\n this.activeFeatureParts = this.setActiveFeatureParts();\r\n }\r\n if (this.layerPositions) {\r\n if (this.activeFeature) {\r\n this.setLayerPositions()\r\n } else {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n this.layerPositions[key] = null;\r\n })\r\n }\r\n }\r\n }\r\n\r\n tryToSetTheSameFeature(filteredFeatures = [], partName = \"\") {\r\n const currentActiveFeature = this.activeFeature;\r\n if (currentActiveFeature && currentActiveFeature.partName) {\r\n let splittedFromTheLayoutName = partName && this.removeLayoutFromPartName\r\n ? this.removeLayoutFromPartName(partName)\r\n : this.activeFeature.getMatchingFeatureName();\r\n this.activeFeature = filteredFeatures.find(feature => {\r\n return feature.getMatchingFeatureName() === splittedFromTheLayoutName\r\n });\r\n if (!this.activeFeature) {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n const colorFilterValue = getColorFilterValue(currentActiveFeature, filterGroups);\r\n if (colorFilterValue) {\r\n this.activeFeature = filteredFeatures.find(feature => {\r\n const currentColorFilterValue = getColorFilterValue(feature, filterGroups);\r\n return currentColorFilterValue && currentColorFilterValue.id === colorFilterValue.id\r\n });\r\n }\r\n }\r\n }\r\n if (!this.activeFeature && this.selectedFeaturesHistory) {\r\n for (let featureName of this.selectedFeaturesHistory.slice(0, 5)) { // check first five, no need to go further\r\n const foundFeature = this.getFeatureByPartName(featureName);\r\n if (foundFeature) {\r\n const prevFeatureMatchingName = foundFeature.getMatchingFeatureName();\r\n const foundFinally = filteredFeatures.find(feature => {\r\n return feature.getMatchingFeatureName() === prevFeatureMatchingName\r\n });\r\n if (foundFinally) {\r\n this.activeFeature = foundFinally;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return !!this.activeFeature\r\n }\r\n\r\n getFeatureName = (forQtCategory = \"\") => {\r\n if (!this._featureName) {\r\n const originalName = this.metaData.ActualDisplayedName\r\n ? this.dbFeature.customDisplayName && (this.dbFeature.customDisplayName !== this.dbFeature.sharedFeatureName)\r\n ? this.dbFeature.customDisplayName\r\n : this.metaData.ActualDisplayedName[0]\r\n : this.dbFeature.customDisplayName || this.partName || \"\";\r\n const parent = this.getParent();\r\n this._featureName = (originalName || \"\").replace((this.dbFeature.customGroupName || parent.dbName || parent.partName) + \" - \", \"\");\r\n }\r\n if (forQtCategory) {\r\n return checkIfInCatProperty(this, \"inCatName\", this._featureName, forQtCategory) || this._featureName || \"\";\r\n }\r\n return this._featureName\r\n };\r\n\r\n getLowerCasedCustomDisplayName = () => {\r\n if (!this._lowercaseCustomDisplayName) {\r\n this._lowercaseCustomDisplayName = (this.dbFeature.customDisplayName || this.partName || '')\r\n .trim()\r\n .toLowerCase()\r\n .replace('room - ', '')\r\n }\r\n return this._lowercaseCustomDisplayName;\r\n };\r\n\r\n getLowerCasedSharedFeatureName = () => {\r\n if (!this._lowercaseSharedFeatureName) {\r\n this._lowercaseSharedFeatureName = (this.dbFeature.sharedFeatureName || this.partName || '')\r\n .trim()\r\n .toLowerCase()\r\n .replace('room - ', '')\r\n }\r\n return this._lowercaseSharedFeatureName;\r\n };\r\n\r\n /**\r\n * @param dbFeaturesArray {[dbFeatureInterface]}\r\n * @param pageSize {number}\r\n * @param setNextPage {boolean}\r\n * @param layoutAbbr {string}\r\n * @param loadedPage {number|null}\r\n * @param fromSearch {boolean}\r\n * @param setCustomConfigurationsAfter {boolean}\r\n */\r\n setGroupFeatures(dbFeaturesArray,\r\n pageSize = 1000,\r\n setNextPage = true,\r\n layoutAbbr = \"\",\r\n loadedPage = null,\r\n fromSearch = false,\r\n setCustomConfigurationsAfter = true) {\r\n\r\n const layout = this.layout || this.getParent().layout;\r\n const layoutToSet = layoutAbbr || layout.getCurrentLayoutAbbreviation();\r\n\r\n if (setNextPage) {\r\n // this.nextFeaturesPageToLoad += 1;\r\n let nextFeaturesPageToLoad = 1;\r\n const addFromPageSize = pageSize === 6000 ? 3 : 1;\r\n if (this.nextFeaturesPageToLoadArray) {\r\n nextFeaturesPageToLoad = Number.isInteger(loadedPage)\r\n ? this.nextFeaturesPageToLoadArray[layoutToSet].page + addFromPageSize\r\n : this.nextFeaturesPageToLoadArray[layoutToSet].page + 1\r\n } else {\r\n nextFeaturesPageToLoad = Number.isInteger(loadedPage)\r\n ? this.nextFeaturesPageToLoad + addFromPageSize\r\n : this.nextFeaturesPageToLoad + 1;\r\n }\r\n // let nextFeaturesPageToLoad = Number.isInteger(loadedPage)\r\n // ? this.nextFeaturesPageToLoad + (pageSize === 6000 ? 3 : 1)\r\n // : this.nextFeaturesPageToLoadArray ? this.nextFeaturesPageToLoadArray[layoutToSet].page + 1 : this.nextFeaturesPageToLoad + 1;\r\n // if ((pageSize / 1000 - 1) === 1) {\r\n // nextFeaturesPageToLoad += 1\r\n // }\r\n this.nextFeaturesPageToLoad = nextFeaturesPageToLoad;\r\n if (this.nextFeaturesPageToLoadArray) {\r\n this.nextFeaturesPageToLoadArray[layoutToSet].page = nextFeaturesPageToLoad;\r\n }\r\n this.allFeaturesReceived = true;\r\n }\r\n if (!fromSearch) {\r\n if (this.nextFeaturesPageToLoadArray) {\r\n this.nextFeaturesPageToLoadArray[layoutToSet].allReceived = dbFeaturesArray.length < pageSize;\r\n const {bvPresets} = store.getState().bathroomVisualizerState;\r\n if (bvPresets && bvPresets.length) {\r\n const uniqueLayoutsTypes = bvPresets.reduce((total, preset) => {\r\n if (!total.some(layoutType => layoutType === preset.layout_type)) {\r\n total.push(preset.layout_type)\r\n }\r\n return total\r\n }, []);\r\n this.realFeaturesReceived = uniqueLayoutsTypes.every(layoutNumber => {\r\n const layoutName = layout.getCurrentLayoutName(layoutNumber);\r\n return this.nextFeaturesPageToLoadArray[layoutName] && this.nextFeaturesPageToLoadArray[layoutName].allReceived\r\n });\r\n } else {\r\n this.realFeaturesReceived = dbFeaturesArray.length < pageSize;\r\n }\r\n } else {\r\n this.realFeaturesReceived = dbFeaturesArray.length < pageSize;\r\n }\r\n }\r\n\r\n layout.loadNewFeatures(dbFeaturesArray, this, setCustomConfigurationsAfter);\r\n\r\n }\r\n\r\n getRealFeaturesReceivedProperty = () => {\r\n const layout = this.layout || this.getParent().layout;\r\n const currentLayoutAbbr = layout.getCurrentLayoutAbbreviation();\r\n return this.nextFeaturesPageToLoadArray\r\n ? this.nextFeaturesPageToLoadArray[currentLayoutAbbr].allReceived\r\n : this.realFeaturesReceived\r\n }\r\n\r\n getNextPageToLoad = (currentLayoutAbbr) => {\r\n // intermediatePart\r\n if (this.nextFeaturesPageToLoadArray) {\r\n if (!currentLayoutAbbr) {\r\n const layout = this.layout || this.getParent().layout;\r\n currentLayoutAbbr = layout.getCurrentLayoutAbbreviation();\r\n }\r\n return this.nextFeaturesPageToLoadArray[currentLayoutAbbr].page\r\n }\r\n return this.nextFeaturesPageToLoad\r\n }\r\n\r\n getCollectionName = (filterGroups) => {\r\n if (this._collectionName) {\r\n return this._collectionName\r\n }\r\n const collectionFg = filterGroups ? filterGroups.find(fGroup => fGroup.name === \"Collection\") : null;\r\n if (collectionFg) {\r\n const featureCollectionValue = getFilterGroupValues(this, collectionFg);\r\n if (Array.isArray(featureCollectionValue)) {\r\n const featureCollectionValueObject = getFilterGroupValue(featureCollectionValue[0], collectionFg);\r\n if (featureCollectionValueObject) {\r\n this._collectionName = capitalizeFirstLetters(featureCollectionValueObject.displayText);\r\n return this._collectionName\r\n }\r\n }\r\n }\r\n return \"\"\r\n }\r\n\r\n getFeatureSavedFilterName = (filterGroups, filterName, property) => {\r\n if (!this._filterNames) {\r\n this._filterNames = {};\r\n }\r\n if (this._filterNames[property]) {\r\n return this._filterNames[property]\r\n }\r\n const collectionFg = filterGroups ? filterGroups.find(fGroup => fGroup.name === filterName) : null;\r\n if (collectionFg) {\r\n const featureCollectionValue = getFilterGroupValues(this, collectionFg);\r\n if (Array.isArray(featureCollectionValue)) {\r\n const featureCollectionValueObject = getFilterGroupValue(featureCollectionValue[0], collectionFg);\r\n if (featureCollectionValueObject) {\r\n this._filterNames[property] = capitalizeFirstLetters(featureCollectionValueObject.displayText || featureCollectionValueObject.value);\r\n return this._filterNames[property]\r\n }\r\n }\r\n }\r\n return \"\"\r\n }\r\n\r\n getColorName = (filterGroups) => {\r\n if (this._colorName) {\r\n return this._colorName\r\n }\r\n const colorFilterGroup = filterGroups ? filterGroups.find(fGroup => fGroup.name === \"Color\") : null;\r\n\r\n if (colorFilterGroup) {\r\n const featureCollectionValue = getFilterGroupValues(this, colorFilterGroup);\r\n if (Array.isArray(featureCollectionValue)) {\r\n const featureCollectionValueObject = getFilterGroupValue(featureCollectionValue[0], colorFilterGroup);\r\n if (featureCollectionValueObject) {\r\n this._colorName = capitalizeFirstLetters(featureCollectionValueObject.displayText);\r\n return this._colorName\r\n }\r\n }\r\n }\r\n return \"\"\r\n }\r\n\r\n getCustomFullDisplayName = () => {\r\n return this.getSplittedFeatureName() // is different in bvLook visualizer\r\n }\r\n\r\n getMatchingOptionsName = () => {\r\n return this.getSplittedFeatureName() // is different in bvLook visualizer\r\n }\r\n\r\n /**\r\n * Update visibility for all layers.\r\n * Each feature decides on its own what layers are needed.\r\n * In case when feature must be invisible it must return null, not an empty array\r\n * @param layout {Layout}\r\n * @param placeholdersNeeded {boolean}\r\n */\r\n setLayers(layout, placeholdersNeeded) {\r\n let layers = [];\r\n this.getRelatedItems()\r\n .filter(relItem => relItem.featureGroupEnabled)\r\n .forEach(relatedItem => {\r\n relatedItem.setLayers(layout);\r\n let activeFeatures = [];\r\n if (relatedItem.layerPositions) {\r\n Object.keys(relatedItem.layerPositions).forEach(key => {\r\n if (relatedItem.layerPositions[key]) {\r\n activeFeatures.push(relatedItem.layerPositions[key])\r\n }\r\n })\r\n } else {\r\n if (placeholdersNeeded && !relatedItem.placeholderChanged && relatedItem.placeholderFeature) {\r\n activeFeatures.push(relatedItem.placeholderFeature)\r\n } else if (relatedItem.activeFeature && relatedItem.partId !== \"attachment\") {\r\n activeFeatures.push(relatedItem.activeFeature)\r\n }\r\n }\r\n if (relatedItem.activeFeatureParts && relatedItem.activeFeatureParts.length) {\r\n activeFeatures = [...activeFeatures, ...relatedItem.activeFeatureParts]\r\n }\r\n activeFeatures.forEach((activeFeaturePart) => {\r\n if (activeFeaturePart && activeFeaturePart.layer.src) {\r\n // cabinetActiveFeature.layer.partId = cabinetActiveFeature.partId;\r\n activeFeaturePart.layer.coords = activeFeaturePart.metaData[\"Coords\"];\r\n activeFeaturePart.layer.partId = activeFeaturePart.partId;\r\n activeFeaturePart.layer.layerPosition = activeFeaturePart.metaData.layerPosition;\r\n activeFeaturePart.layer.cropCoords = getFeatureCropCoors(activeFeaturePart);\r\n layers.push(activeFeaturePart.layer);\r\n }\r\n });\r\n });\r\n return layers.length ? layers : null;\r\n }\r\n\r\n // setPrevioslySelected(featureGroup) { // featureGroup is current active featureGroup from the click\r\n setPrevioslySelected() { // parent scope\r\n this.relatedItems.forEach(relatedItem => {\r\n relatedItem.activeFeatureBeforeAllWalls = !relatedItem.placeholderChanged\r\n ? \"placeholder\"\r\n : relatedItem.activeFeature;\r\n });\r\n }\r\n\r\n getFeaturesFromLayout = (layoutName, forSpecificScene, allFeatures) => {\r\n let currentLayoutFeatures = this.layerPositions\r\n ? [...(this.featuresList[layoutName] || []), ...(this.featuresPartsList[layoutName] || [])]\r\n : (this.featuresList[layoutName] || []);\r\n for (let i = 0; i < currentLayoutFeatures.length; i++) {\r\n const feature = currentLayoutFeatures[i];\r\n if (forSpecificScene && feature.metaData[\"RoomScene\"] && !feature.metaData[\"RoomScene\"].includes(forSpecificScene)) {\r\n continue\r\n }\r\n const featureName = feature.getSplittedFeatureName();\r\n if (!allFeatures.some(addedFeature => addedFeature.getSplittedFeatureName() === featureName)) {\r\n allFeatures.push(feature);\r\n }\r\n }\r\n return allFeatures\r\n }\r\n\r\n getFeaturesForNavigationFrom = (restOptions = {}) => {\r\n const {returnAllFeatures, forSpecificLayout, forSpecificScene} = restOptions;\r\n if (returnAllFeatures) {\r\n const layout = this.getParent().layout;\r\n let allFeatures = [];\r\n // 1) first add current layout features or specific layout features\r\n allFeatures = this.getFeaturesFromLayout(forSpecificLayout || (\"Layout\" + layout.type), forSpecificScene, allFeatures)\r\n if (forSpecificLayout) {\r\n return allFeatures\r\n }\r\n // 2) if we need all features - check another layouts\r\n const {bvPresets} = store.getState().bathroomVisualizerState;\r\n // const checkLayouts = layoutNames.filter(layoutName => {\r\n // if (forSpecificLayout) {\r\n // return forSpecificLayout === layoutName\r\n // }\r\n // return bvPresets.some(bvPreset => bvPreset.layout_type === +(layoutName.replace(\"Layout\", \"\")))\r\n // })\r\n\r\n // 2) next popular rooms are 11 for AS and 3 for grohe, check them\r\n if (layout.type !== 11 && (document.kvConfig.visualizerType === \"bvLook\")) {\r\n allFeatures = this.getFeaturesFromLayout(\"Layout11\", \"1\", allFeatures);\r\n }\r\n // if (layout.type !== 3) {\r\n // allFeatures = this.getFeaturesFromLayout(\"Layout3\", \"1\", allFeatures);\r\n // }\r\n // 3) select all features from scene 1\r\n bvPresets.forEach(bvPreset => {\r\n if (bvPreset.layout_type === layout.type) {\r\n return;\r\n }\r\n const stringifiedLayout = \"Layout\" + bvPreset.layout_type;\r\n allFeatures = this.getFeaturesFromLayout(stringifiedLayout, \"1\", allFeatures);\r\n });\r\n // 4) check skipped layouts to get all other features another room scenes features\r\n const layoutNames = Object.keys(layout.layoutNames).filter(key => key !== \"All\");\r\n layoutNames.forEach((layoutType) => {\r\n allFeatures = this.getFeaturesFromLayout(layoutType, null, allFeatures);\r\n });\r\n // console.log(\"allFeatures\", allFeatures);\r\n return allFeatures\r\n }\r\n return this.layerPositions ? [...this.features, ...this.featuresParts] : this.features\r\n }\r\n\r\n checkAutoAddToCart = (feature) => {\r\n //intermediatePart\r\n if (!feature.dbFeature.autoAddToCart) {\r\n return;\r\n }\r\n const parentGroup = this.getParent ? this.getParent() : null;// parent, for ex. \"Appliance\"\r\n if (parentGroup && parentGroup.layout && parentGroup.layout.isFakeLayout) {\r\n return;\r\n }\r\n const cartItem = {\r\n selectionGroup: (parentGroup && parentGroup.menuType) ? parentGroup.partName : this.partName,\r\n quantity: 1,\r\n partId: this.partId,\r\n cartFeature: feature\r\n };\r\n if (feature.dbFeature.displayLogic) {\r\n const storeState = store.getState();\r\n const {quantity, isMatching} = featureIsMatchingDisplayLogic(\r\n feature,\r\n storeState.cartState.cartItems,\r\n storeState.quotesState.activeQuoteIndex,\r\n storeState.wizardState.allWizardsValues\r\n );\r\n if (isMatching && (!storeState.cartState.cartItems.some(cItem => {\r\n return cItem.cartFeature && cItem.cartFeature.dbFeature && (cItem.cartFeature.dbFeature.id === feature.dbFeature.id)\r\n }))) {\r\n cartItem.quantity = quantity;\r\n store.dispatch(addToCart([cartItem]));\r\n }\r\n store.dispatch(addDisplayLogicCartItem(cartItem, this.getParent().layout.visualizerType));\r\n } else {\r\n store.dispatch(addToCart([cartItem]));\r\n }\r\n }\r\n\r\n loadFeatureCommon = (feature) => { // other logic\r\n this.checkAutoAddToCart(feature);\r\n if (feature.dbFeature.groupName === \"Room\") {\r\n feature = setRoomNotInVisualizerProperty(feature);\r\n }\r\n if (IS_LIXIL_UI && !feature.dbFeature.clickable) {\r\n const layout = this.getParent().layout;\r\n if (layout && layout.disabledClickablePartIds && !layout.disabledClickablePartIds.includes(this.partId)) {\r\n layout.disabledClickablePartIds.push(this.partId);\r\n }\r\n }\r\n // const layout = this.getParent().layout;\r\n // if (feature.dbFeature.isRelatedDbFeature) {\r\n // if (!Array.isArray(layout.allRelatedDbFeatures)) {\r\n // layout.allRelatedDbFeatures = [];\r\n // }\r\n // if (!layout.allRelatedDbFeatures.some(addedDbFeature => addedDbFeature.id === feature.dbFeature.id)) {\r\n // layout.allRelatedDbFeatures.push(feature.dbFeature);\r\n // }\r\n // }\r\n // loadRelatedFeatures(feature.dbFeature, layout);\r\n };\r\n\r\n _setLayers(layout) {\r\n //intermediatePart\r\n if (!this.disabled) {\r\n if (!this.activeFeature) {\r\n this.setDefault(layout);\r\n }\r\n if (this.layerPositions) {\r\n Object.keys(this.layerPositions).forEach(key => {\r\n if (this.layerPositions[key]) {\r\n if (this.layerPositions[key].matchesMetaForArrayOfConditions(this.getArrayOfConditions())) {\r\n this.setFeatureLayer(this.layerPositions[key], layout);\r\n } else {\r\n this.layerPositions[key].layer.src = '';\r\n }\r\n }\r\n })\r\n } else if (this.activeFeature && !this.activeFeature.notAvailableInVisualizer) {\r\n if (this.partId !== \"attachment\") { // remove activeFeature layer to prevent duplicate, it has parts\r\n this.setFeatureLayer(this.activeFeature, layout);\r\n }\r\n if (this.hasAdditionalParts && (document.kvConfig.visualizerType === \"kvScene\")) {\r\n this.activeFeatureParts = this.setActiveFeatureParts(); // we have to set them each time because we need to react on disabled clicks (bottom cabinet - appliances)\r\n }\r\n if (Array.isArray(this.activeFeatureParts) && this.activeFeatureParts.length) {\r\n this.activeFeatureParts.forEach((activeFeaturePart) => {\r\n this.setFeatureLayer(activeFeaturePart, layout);\r\n })\r\n }\r\n }\r\n if (this.placeholderFeature) {\r\n this.setFeatureLayer(this.placeholderFeature, layout);\r\n }\r\n } else {\r\n this.hideLayers();\r\n }\r\n }\r\n\r\n setFeatureLayer(currentFeature, layout) {\r\n //intermediatePart\r\n // console.log('currentFeature', currentFeature);\r\n const layoutAbr = layout.getCurrentLayoutAbbreviation();\r\n if (!currentFeature || !currentFeature.dbFeature || !currentFeature.dbFeature.s3Bindings\r\n || (!(currentFeature.dbFeature.metaData[\"RoomLayout\"]) || !currentFeature.dbFeature.metaData[\"RoomLayout\"].includes(layoutAbr))) {\r\n if (currentFeature) {\r\n currentFeature.layer.src = \"\";\r\n }\r\n return;\r\n }\r\n const s3Binding = currentFeature.dbFeature.s3Bindings.find(binding => binding.visualizer === layout.layersBinding);\r\n currentFeature.layer.src = s3Binding ? s3Binding.path : null;\r\n currentFeature.layer.bucketName = s3Binding ? s3Binding.bucketName : null;\r\n }\r\n\r\n featureClicked() {\r\n const featuresHistory = this.activeFeature ? this.selectedFeaturesHistory : this.getParent().selectedFeaturesHistory;\r\n const partName = this.activeFeature ? this.activeFeature.partName : this.partName;\r\n if (Array.isArray(featuresHistory) && (featuresHistory[0] !== partName)) {\r\n featuresHistory.unshift(partName); // add in the beggining\r\n if (featuresHistory.length > 10) {\r\n featuresHistory.pop() // remove last element, no need to keep huge arrays\r\n }\r\n }\r\n this.updateLocalStorage();\r\n // other specific events, for ex. Google Analytics, etc.\r\n }\r\n\r\n\r\n // navigationSubItems(filters, searchText, forFeature, filterGroups, restOptions) { // to do\r\n navigationItemsWithOptions(filters, forFeature, filterGroups, featuresToDisplay) {\r\n // intermediate part\r\n let newFeatures = [];\r\n let navItems = [];\r\n const matchingFeatureProperty = this.useMatchingFeatureReplacement || \"MatchingFeature\";\r\n\r\n if (filterGroups && filterGroups.length && (!filters || !Object.keys(filters).length)) {\r\n // console.log(\"filteredAvailableFeatures\", filteredAvailableFeatures);\r\n // console.log(\"featuresToDisplay\", featuresToDisplay);\r\n for (let i = 0; i < featuresToDisplay.length; i++) { // 1) take all others\r\n const currentFeature = featuresToDisplay[i];\r\n const colorName = currentFeature.getColorName(filterGroups);\r\n const matchingOptionsName = currentFeature.getMatchingOptionsName();\r\n let conditionPassed = !colorName\r\n || !newFeatures.some(feature => feature.getMatchingOptionsName() === matchingOptionsName)\r\n || (currentFeature.metaData[matchingFeatureProperty] && !newFeatures.some(feature => feature.metaData[matchingFeatureProperty]\r\n && isEqual(feature.metaData[matchingFeatureProperty], currentFeature.metaData[matchingFeatureProperty])))\r\n if (conditionPassed) {\r\n newFeatures.push(currentFeature);\r\n }\r\n }\r\n navItems = this.returnUniqueNavFeatures(this.getNavItemsWithOptions(forFeature, newFeatures, featuresToDisplay, filterGroups).map(featureObject => {\r\n return new DesignNavigationItem(featureObject.mainFeature.featureName, featureObject.mainFeature, featureObject.otherOptions)\r\n }), false);\r\n }\r\n if (!navItems.length) {\r\n navItems = this.returnUniqueNavFeatures(featuresToDisplay)\r\n }\r\n // if (this.filterNavigationItems && forFeature) {\r\n // navItems = this.filterNavigationItems(navItems, forFeature)\r\n // }\r\n return navItems\r\n }\r\n\r\n /**\r\n * this is almost the same as feature options, it is replacing next nav items with the needed color feature\r\n * @param forFeature {featureInterface} featureInterface\r\n * @param newFeatures {[featureInterface]}\r\n * @param allFeatures {[featureInterface]}\r\n * @param filterGroups {[filterGroupInterface]}\r\n * @returns {array}\r\n */\r\n getNavItemsWithOptions = (forFeature= null,\r\n newFeatures = [],\r\n allFeatures = [],\r\n filterGroups) => {\r\n\r\n const matchingFeatureProperty = this.useMatchingFeatureReplacement || \"MatchingFeature\";\r\n const neededColorName = forFeature ? forFeature.getColorName(filterGroups) : \"\";\r\n\r\n return newFeatures.map(currentFeature => {\r\n const filterValue = getColorFilterValue(currentFeature, filterGroups);\r\n let otherOptions = getOptionsFromNavItemsForFeature(currentFeature, allFeatures, filterGroups);\r\n\r\n const currentFeatureColor = currentFeature.getColorName(filterGroups);\r\n const customFullDisplayName = currentFeature.getMatchingOptionsName();\r\n\r\n if (forFeature && (currentFeature.dbFeature.id === forFeature.dbFeature.id || (\r\n (customFullDisplayName === forFeature.getMatchingOptionsName())\r\n && (!forFeature.metaData[matchingFeatureProperty] || isEqual(forFeature.metaData[matchingFeatureProperty], currentFeature.metaData[matchingFeatureProperty]))\r\n && (currentFeatureColor && forFeature.getColorName(filterGroups) && (currentFeatureColor !== forFeature.getColorName(filterGroups)))\r\n ))) {\r\n if (filterValue && !otherOptions.some(option => option.colorValue.id === filterValue.id)) {\r\n otherOptions.push({feature: currentFeature, colorValue: filterValue})\r\n }\r\n return {\r\n mainFeature: forFeature,\r\n otherOptions: otherOptions.filter(option => option.feature.dbFeature.id !== forFeature.dbFeature.id)\r\n };\r\n } else {\r\n if (!filterValue) {\r\n return {mainFeature: currentFeature, otherOptions: []}\r\n }\r\n const allOptions = [{feature: currentFeature, colorValue: filterValue}, ...otherOptions];\r\n const mainOption = (forFeature && neededColorName && allOptions.find(option => option.feature.getColorName(filterGroups) === neededColorName))\r\n // console.log(\"mainOption\", mainOption);\r\n if (mainOption) {\r\n return {\r\n mainFeature: mainOption.feature,\r\n otherOptions: allOptions.filter(option => option.feature.dbFeature.id !== mainOption.feature.dbFeature.id)\r\n }\r\n }\r\n return {mainFeature: currentFeature, otherOptions}\r\n }\r\n });\r\n }\r\n\r\n returnUniqueNavFeatures(featuresToDisplay, createNavItems = true) {\r\n const navItems = createNavItems ? this.returnNavItemsFromFeatures(featuresToDisplay) : featuresToDisplay;\r\n if (document.kvConfig.visualizerType === \"bvScene\" && (this.partId ===\"sink\" || this.partId ===\"center_island_sink\"\r\n || this.partId ===\"vanity_sink\" || this.partId ===\"vanity_faucet\")) {\r\n return uniqBy(navItems, (navItem) => navItem.part.dbFeature.id && navItem.part.getSplittedFeatureName());\r\n }\r\n if (document.kvConfig.toolVersion >= 5) { // not sure if we can do that for old visualizers\r\n return uniqBy(navItems, (navItem) => navItem.part.dbFeature.id && navItem.part.dbFeature.sharedFeatureName);\r\n }\r\n return uniqBy(navItems, (navItem) => navItem.part.dbFeature.id);\r\n }\r\n\r\n returnNavItemsFromFeatures(featuresToDisplay) {\r\n return featuresToDisplay.map(_ => new DesignNavigationItem(_.featureName, _));\r\n }\r\n\r\n}\r\n\r\nPartCommon.prototype.getFeatureCurrency = function (propsFilterGroups) {\r\n if (Object.hasOwnProperty(this._useCurrency)) {\r\n return this._useCurrency\r\n }\r\n this._useCurrency = null;\r\n const filterGroups = propsFilterGroups || store.getState().filterState.filterGroups;\r\n const filterGroup = filterGroups.find(group => group.name === \"Currency\");\r\n if (!filterGroup) {\r\n return this._useCurrency\r\n }\r\n const featureCollectionValue = getFilterGroupValues(this, filterGroup);\r\n if (Array.isArray(featureCollectionValue)) {\r\n const featureCollectionValueObject = getFilterGroupValue(featureCollectionValue[0], filterGroup);\r\n if (featureCollectionValueObject) {\r\n this._useCurrency = featureCollectionValueObject.value\r\n }\r\n }\r\n return this._useCurrency\r\n}\r\n\r\nPartCommon.prototype.getFeatureRelatedFeatures = function () {\r\n if (!this._relatedFeaturesSet) {\r\n // console.log(\"loadRelatedFeatures\", this.dbFeature);\r\n loadRelatedFeatures(this.dbFeature, this.getParent().getParent().layout);\r\n this._relatedFeaturesSet = true;\r\n }\r\n return this.dbFeature.relatedFeatures\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport $ from 'jquery';\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport Navigation from \"./navigation\";\r\nimport Config from \"../../../config\";\r\nimport {ignoreDefault} from \"../../../misc/utils\";\r\nimport Sidebar from './desktop/sidebar';\r\nimport Body from './desktop/body';\r\nimport {ContentType, ContentTypeName, ContentTypeNameTranslate, PartMenuType} from \"../constants\";\r\nimport FeatureWizard from \"./featureWizard/featureWizard\";\r\nimport Analytics from \"../../../analytics\";\r\nimport {CABINET_WIZARD_BUTTONS, BACKSPLASH_TYPES, COUNTERTOP_WIZARD_BUTTONS} from \"../../kvComponent/core/constants\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport RoomSceneNavigation from \"./roomSceneNavigation\";\r\nimport {getAvailableRoomScenes, getShowOtherLayouts, getSideBarSubParts} from \"./navUtils\";\r\nimport DesktopNavigationLayoutsContent from \"./desktopNavigationLayoutsContent\";\r\n\r\nexport default class DesktopNavigationCommon extends Navigation {\r\n\r\n static propTypes = {\r\n refreshCB: PropTypes.func.isRequired,\r\n renderGreenLayerByZindex: PropTypes.func,\r\n changeMessageBoxState: PropTypes.func,\r\n setHoveredLayer: PropTypes.func,\r\n userIsLoggedIn: PropTypes.bool,\r\n isPhoneNumberValidated: PropTypes.bool,\r\n toggleUserPopup: PropTypes.func,\r\n setActiveFeature: PropTypes.func,\r\n setDemoPointClicked: PropTypes.func,\r\n activeFeature: PropTypes.object,\r\n fabricatorSettings: PropTypes.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.navWrapper = null;\r\n this.navigationIsClosing = false;\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n navWidth: $(this.navWrapper).width()\r\n });\r\n this.props.setNavigationViewType(3);\r\n this._componentDidMount();\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this._componentWillReceiveProps(nextProps)\r\n }\r\n\r\n handleContextMenuClick = (menuItem) => {\r\n const layout = getCurrentLayout();\r\n if (!this.state.showNavigation) {\r\n let clickedParent = \"\", clickedButton = \"\";\r\n const isBacksplash = BACKSPLASH_TYPES.some(bType => bType === menuItem.text);\r\n if (menuItem.text === \"Edge Profile\") {\r\n if (this.props.setActiveNavigationFilter) {\r\n this.props.setActiveNavigationFilter(COUNTERTOP_WIZARD_BUTTONS[3].buttonId); // set active navigation filter\r\n this.props.setActiveNavigationFilterStepIndex(3);\r\n }\r\n } else if (isBacksplash) {\r\n const wallsParent = layout.parts[\"Walls\"];\r\n const backsplashSubPart = wallsParent.relatedItems.find(relItem => relItem.partId === \"backsplash\");\r\n clickedParent = \"Walls\";\r\n clickedButton = \"Backsplash\";\r\n if (this.props.setActiveNavigationFilter) {\r\n this.props.setActiveNavigationFilter(COUNTERTOP_WIZARD_BUTTONS[4].buttonId); // set active navigation filter\r\n this.props.setActiveNavigationFilterStepIndex(4);\r\n }\r\n const applyBacksplash = () => {\r\n const featureToClick = backsplashSubPart.getFeatureByBacksplashType(menuItem.text);\r\n if (featureToClick) {\r\n console.log(\"featureToClick\", featureToClick);\r\n featureToClick.handleClick();\r\n this.props.setActiveFeature(featureToClick);\r\n const parentItem = this.state.parentNavigationItem;\r\n this.setState({\r\n parentNavigationItem: null\r\n }, () => {\r\n this.setState({\r\n parentNavigationItem: parentItem\r\n })\r\n })\r\n }\r\n }\r\n if (!backsplashSubPart.allFeaturesReceived) {\r\n this.checkIfAllFeaturesReceived({part: backsplashSubPart}, null, applyBacksplash);\r\n } else {\r\n applyBacksplash()\r\n }\r\n }\r\n if (!isBacksplash) {\r\n clickedButton = menuItem.text;\r\n clickedParent = menuItem.subMenuParent || this.state.contextMenuOpen;\r\n }\r\n if (clickedParent && clickedParent.module) {\r\n clickedParent = \"Cabinet\"\r\n }\r\n //\r\n // console.log('clickedButton', clickedButton);\r\n // console.log('clickedParent', clickedParent);\r\n // console.log('menuItem', menuItem);\r\n if (clickedParent === \"Walls\" && (clickedButton === \"Left Shower Wall\" || clickedButton === \"Pony Wall\")) {\r\n this.ponyWallAndLeftWallClick(menuItem);\r\n }\r\n\r\n this.setState({\r\n showNavigation: true,\r\n contentType: ContentType.Design,\r\n contextMenuOpen: false,\r\n hoveredLayer: {}\r\n }, () => {\r\n this.menuOpened();\r\n this.triggerOpenNavigationMenu(clickedButton, clickedParent);\r\n $(document).on('click', this.handleWrapperBlur);\r\n this.setNewActiveFeature();\r\n if (menuItem.clickFeature && !isBacksplash) {\r\n const featureToClick = menuItem.part.features.find(feature => feature.partName === menuItem.subMenuText);\r\n if (featureToClick) {\r\n featureToClick.handleClick();\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n handleNavTabClick = (contentType) => (e) => {\r\n Analytics.sendClickEvent('nav-tab-click-' + contentType);\r\n // console.log('e', e);\r\n // console.log('contentType', contentType);\r\n ignoreDefault(e);\r\n if (this.state.contentType === contentType) {\r\n this.closeNavigation(e);\r\n } else if (!this.navigationIsClosing) {\r\n this.setContentType(contentType);\r\n }\r\n };\r\n\r\n openLayoutMenu = (callBack) => {\r\n const contentType = document.querySelector(\".tab.tab--room-layout\")\r\n ? ContentType.Layout\r\n : document.querySelector(\".tab.tab--room-ideas\")\r\n ? ContentType.DisplayRoom\r\n : ContentType.Layout;\r\n this.setState({\r\n showNavigation: true,\r\n contentType,\r\n contextMenuOpen: false,\r\n hoveredLayer: {}\r\n }, () => {\r\n this.setNewActiveFeature();\r\n this.menuOpened();\r\n $(document).on('click', this.handleWrapperBlur);\r\n callBack();\r\n });\r\n };\r\n\r\n menuOpened = () => {\r\n this._menuOpened();\r\n };\r\n\r\n setContentType = (contentType) => {\r\n this.setState({\r\n showNavigation: true,\r\n contentType,\r\n contextMenuOpen: false,\r\n hoveredLayer: {},\r\n activeDefaultPreset: null\r\n }, () => {\r\n this.menuOpened();\r\n $(document).on('click', this.handleWrapperBlur);\r\n if (contentType === ContentType.Design) {\r\n this.setNewActiveFeature();\r\n }\r\n });\r\n };\r\n\r\n closeNavigation = (e) => {\r\n Analytics.sendClickEvent('close-nav');\r\n if (e) {\r\n ignoreDefault(e);\r\n }\r\n this.props.setActiveFeature(null);\r\n this.navigationIsClosing = true;\r\n this.setState({\r\n showNavigation: false,\r\n showFilterSelection: false,\r\n showerWallWizardGroupsSelected: true,\r\n }, () => {\r\n setTimeout(() => {\r\n this.setState({\r\n contentType: ContentType.None,\r\n showFilterSelection: true,\r\n showerWallWizardGroupsSelected: false,\r\n searchText: \"\"\r\n }, () => {\r\n this.navigationIsClosing = false;\r\n })\r\n }, 500);\r\n $(document).off('click', this.handleWrapperBlur);\r\n });\r\n if (this.props.setActiveNavigationNames) {\r\n this.props.setActiveNavigationNames(\"\", \"\")\r\n }\r\n setTimeout(() => {\r\n if (this.props.toggleDesktopNavigation) {\r\n this.props.toggleDesktopNavigation(false)\r\n }\r\n if (this.props.setActiveNavigationFilter) {\r\n this.props.setActiveNavigationFilter(CABINET_WIZARD_BUTTONS[0].buttonId);\r\n this.props.setActiveNavigationFilterStepIndex(0);\r\n }\r\n }, 500);\r\n };\r\n\r\n handleWrapperBlur = (e) => {\r\n const overlayClick = e.target.closest('.nav-overlay');\r\n const navClick = e.target.closest('.nav');\r\n const lockClick = e.target.closest('[class*=\"lock\"]');\r\n const userPopupClick = e.target.closest('[class*=\"user-popup\"]');\r\n if (overlayClick && !navClick && !lockClick && !userPopupClick && !e.target.closest('.nav-pos')) {\r\n this.closeNavigation(e);\r\n }\r\n };\r\n\r\n handleHeaderBackClick = () => {\r\n this.resetNavigation();\r\n };\r\n\r\n updateSideBar = () => {\r\n this.setState({\r\n updateSidebarItems: true\r\n }, () => {\r\n this.setState({\r\n updateSidebarItems: false\r\n })\r\n })\r\n };\r\n\r\n handleSubPartClick = (childNavigationItem, activeNavigationFilter = null) => { // sidebar list item click\r\n const subItemPart = childNavigationItem.part;\r\n const childNavigationItemPartId = subItemPart.partId;\r\n if (Config.isDevMode() && this.state.childNavigationItem && (this.state.childNavigationItem.text === childNavigationItem.text || subItemPart.disabled)) {\r\n if (subItemPart.canBeDisabled) {\r\n subItemPart.disabled = !subItemPart.disabled;\r\n subItemPart.disabledClick();\r\n this.props.refreshCB();\r\n }\r\n }\r\n subItemPart.getParent().handleSubPartClick(subItemPart);\r\n this.setState({\r\n childNavigationItem,\r\n showFilterSelection: subItemPart.allFeaturesReceived, // show filters only if subItemPart has all features\r\n showerWallWizardGroupsSelected: false,\r\n searchText: \"\"\r\n }, () => {\r\n this.scrollAsideToMenuItem(childNavigationItem.text);\r\n this.rememberWallsSelection();\r\n this.checkIfAllFeaturesReceived(childNavigationItem, \"childNavigationItem\");\r\n });\r\n this.setNewActiveFeature(childNavigationItem);\r\n /*set new materials page subIndex*/\r\n this.setActivePartRelatedItemIndex(childNavigationItem);\r\n\r\n if (this.props.setActiveNavigationNames\r\n && this.state.parentNavigationItem && this.state.parentNavigationItem.text\r\n && childNavigationItem && childNavigationItem.part\r\n ) {\r\n this.props.setActiveNavigationNames(\r\n this.state.parentNavigationItem.text.toLowerCase().replace(/ /g,\"_\"),\r\n childNavigationItemPartId\r\n )\r\n }\r\n\r\n this.setNavigationFilterIfTheChildWasChanged(childNavigationItemPartId, activeNavigationFilter);\r\n\r\n if (childNavigationItem.text === \"Ceiling\") {\r\n $('html, body').animate({scrollTop: 0}, 800);\r\n }\r\n\r\n };\r\n\r\n scrollAsideToMenuItem = (menuItemText) => {\r\n const parent = $(document.querySelector('.customize-list'));\r\n const child = parent.find('.customize-list__item[data-text=\"'+ menuItemText +'\"]');\r\n if (parent && child) {\r\n const needToScroll = +child.data('index') >= 5;\r\n parent.animate({\r\n scrollTop: needToScroll ? parent.height() : 0 // -30 this is one nav item height\r\n }, 500);\r\n }\r\n };\r\n\r\n handleSubPartHover = childNavigationItem => {\r\n const activeFeature = childNavigationItem.part.activeFeature;\r\n if (activeFeature) {\r\n const zIndex = activeFeature.layer.zIndex;\r\n zIndex && this.props.renderGreenLayerByZindex(zIndex);\r\n }\r\n };\r\n\r\n scrollToDefault = () => {\r\n const featuresList = document.getElementsByClassName('categories-list');\r\n if (featuresList.length) {\r\n featuresList[0].scrollLeft = 0;\r\n }\r\n };\r\n\r\n handleMobileSelectClick = (e) => {\r\n if (!this.state.showNavigation || !this.state.parentNavigationItem) {\r\n e.stopPropagation();\r\n if (!this.state.parentNavigationItem) {\r\n this.setState({\r\n childNavigationItem: null\r\n })\r\n }\r\n }\r\n if (this.state.contentType !== ContentType.Design && !this.navigationIsClosing) {\r\n this.setContentType(ContentType.Design);\r\n }\r\n };\r\n\r\n navigationItemClickCommon = (item) => {\r\n if (!this.state.parentNavigationItem) {\r\n if (item.part.menuType === PartMenuType.Simple) {\r\n this.checkIfAllFeaturesReceived(item, \"parentNavigationItem\");\r\n }\r\n this.setState({\r\n parentNavigationItem: item,\r\n showFilterSelection: item.text === \"Floor\" && item.part.allFeaturesReceived, // show filters only if subItemPart has all features\r\n }, () => {\r\n const featuresList = document.getElementsByClassName('categories-list');\r\n if (featuresList.length) {\r\n featuresList[0].scrollLeft = 0;\r\n }\r\n // let activeFeature = item.part.activeFeature;\r\n const subParts = getSideBarSubParts(this.state.parentNavigationItem.part);\r\n if (subParts[0] && (subParts[0].part.menuType !== PartMenuType.Simple)) {\r\n this.handleSubPartClick(subParts[0])\r\n } else {\r\n setTimeout(() => {\r\n this.setNewActiveFeature({part: item.part});\r\n }, 0)\r\n }\r\n if (this.props.setActiveNavigationNames && this.state.parentNavigationItem && this.state.parentNavigationItem.text) {\r\n this.props.setActiveNavigationNames(\r\n this.state.parentNavigationItem.text.toLowerCase().replace(/ /g,\"_\"), \"\"\r\n )\r\n }\r\n });\r\n this.props.setDefaultSelectionGroup(item.part.partName);\r\n } else {\r\n this.props.setActiveFeature(item.part);\r\n }\r\n if (Config.isDevMode() || document.kvConfig.kioskMode) {\r\n console.log('item', item);\r\n if (item.part.dbFeature) {\r\n console.log('sharedFeatureName:', item.part.dbFeature.sharedFeatureName);\r\n }\r\n }\r\n };\r\n\r\n content = (useWizard, wizardGroups, useFilters) => {\r\n let content = null;\r\n switch (this.state.contentType) {\r\n case ContentType.Design:\r\n return this.contentDesign(useWizard, wizardGroups, useFilters);\r\n case ContentType.Layout:\r\n return ;\r\n case ContentType.DisplayRoom:\r\n return this.contentRoom();\r\n case ContentType.Loading:\r\n return this.contentLoading();\r\n case ContentType.RoomScene:\r\n return ;\r\n default:\r\n return content;\r\n }\r\n };\r\n\r\n contentDesignBody = (useWizard, wizardGroups, useFilters = false) => {\r\n return (\r\n \r\n )\r\n };\r\n\r\n contentDesignWizard = () => {\r\n const wizardGroups = this.state[this.getWizardGroupsByPartId(this.state.childNavigationItem.part.partId)];\r\n return (\r\n \r\n )\r\n };\r\n\r\n contentDesign = (useWizard, wizardGroups, useFilters) => {\r\n\r\n // activePart = activePart || {\r\n // text: ''\r\n // };\r\n /*const filters = this.state.filters[activePart.text] || {};\r\n const filterValuesIDs = [];\r\n each(filters, (value) => {\r\n filterValuesIDs.push(value);\r\n });*/\r\n\r\n return (\r\n
    \r\n {this.state.parentNavigationItem\r\n ? \r\n : null}\r\n {this.state.showFeatureWizard ? (\r\n useWizard && this.state.childNavigationItem && this.state.childNavigationItem.part && this.state.parentNavigationItem\r\n ? this.contentDesignWizard()\r\n : this.contentDesignBody(false, wizardGroups, useFilters)\r\n ) : this.contentDesignBody(useWizard, wizardGroups, useFilters)}\r\n {/*{this.state.parentNavigationItem*/}\r\n {/*? */}\r\n {/*: null}*/}\r\n
    \r\n )\r\n };\r\n\r\n contentRoom = () => {\r\n let presets = this.checkedForLockedPresets();\r\n return (\r\n
    \r\n {presets.length ? (\r\n
      \r\n {presets.map((preset, index) => {\r\n return (\r\n
    • this.handleDefaultPresetClick(index, preset.presetIsLocked)}\r\n style={{backgroundImage: `url(${preset.bv_screen})`}}/>\r\n )\r\n })}\r\n
    \r\n ) :

    }\r\n
    \r\n )\r\n };\r\n\r\n contentLoading = () => {\r\n return
    \r\n }\r\n\r\n navigationMenuButtons = (availableNavButtons) => {\r\n return (\r\n
    \r\n {availableNavButtons.map((contentType) => {\r\n if (ContentTypeName[contentType] === \"Room Layout\") {\r\n const showOtherLayouts = getShowOtherLayouts(this.props.fabricatorSettings);\r\n if (!showOtherLayouts) {\r\n return null\r\n }\r\n }\r\n if (ContentTypeName[contentType] === \"Room Scene\") {\r\n const showOtherLayouts = getAvailableRoomScenes();\r\n if (!showOtherLayouts || !showOtherLayouts.length || (showOtherLayouts.length === 1)) {\r\n return null\r\n }\r\n }\r\n if (ContentTypeName[contentType] === \"Room Scene\" && (document.kvConfig.visualizerType === \"kvScene\" && !Config.isDevMode())) {\r\n return null\r\n }\r\n const tabClassName = ContentTypeName[contentType].toLowerCase().replace(\" \",\"-\")\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","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {\r\n setActiveNavigationFilter,\r\n setActiveNavigationFilterStepIndex,\r\n setCabinetNavigationFilterCompleted,\r\n setCountertopNavigationFilterCompleted, setNavigationViewType\r\n} from \"../../../../actions/navigationFunctions\";\r\nimport {CABINET_WIZARD_BUTTONS, COUNTERTOP_WIZARD_BUTTONS} from \"../../../kvComponent/core/constants\";\r\nimport {setSelectedFilters} from \"../../../../actions/actionFunctions\";\r\n\r\nclass NavigationFiltersSteps extends Component {\r\n\r\n static propTypes = {\r\n availableSteps: PropTypes.array,\r\n setFeatureWizardStep: PropTypes.func,\r\n exitFeatureWizard: PropTypes.func,\r\n showFeatureWizard: PropTypes.bool,\r\n isMobile: PropTypes.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n mounted: false\r\n };\r\n this._isMounted = false;\r\n }\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n setTimeout(() => {\r\n if (this._isMounted) {\r\n this.setState({\r\n mounted: true\r\n });\r\n }\r\n }, 0)\r\n }\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n exitFeatureWizard = () => {\r\n this.props.setActiveNavigationFilter(CABINET_WIZARD_BUTTONS[0].buttonId);\r\n this.props.setActiveNavigationFilterStepIndex(0);\r\n const cabinetPartIds = [\"top_cabinet\", \"bottom_cabinet\"];\r\n const countertopPartIds = [\"countertop\", \"center_island_countertop\", \"edge_profile\", \"center_island_edge\", \"backsplash\"];\r\n if (cabinetPartIds.includes(this.props.activePart.partId)) {\r\n this.props.setCabinetNavigationFilterCompleted(true);\r\n } else if (countertopPartIds.includes(this.props.activePart.partId)) {\r\n this.props.setCountertopNavigationFilterCompleted(true);\r\n }\r\n };\r\n\r\n getAvailableSteps = () => {\r\n let wizardButtons = [];\r\n switch (this.props.activePart.partId) {\r\n case \"top_cabinet\":\r\n case \"bottom_cabinet\":\r\n wizardButtons = CABINET_WIZARD_BUTTONS.filter(wizardButton => {\r\n if (wizardButton.buttonId === \"all_products\") {\r\n return this.props.isMobile\r\n }\r\n return wizardButton.buttonId !== \"inlay_type\"\r\n });\r\n break;\r\n case \"countertop\":\r\n case \"edge_profile\":\r\n case \"backsplash\":\r\n wizardButtons = COUNTERTOP_WIZARD_BUTTONS;\r\n break;\r\n case \"center_island_countertop\":\r\n case \"center_island_edge\":\r\n wizardButtons = COUNTERTOP_WIZARD_BUTTONS.slice(0, 4);\r\n break;\r\n }\r\n return wizardButtons;\r\n };\r\n\r\n setFeatureWizardStep = (nextStepIndex, disabled = false, lastStep) => {\r\n\r\n if (disabled) {\r\n return false;\r\n }\r\n const availableSteps = this.getAvailableSteps();\r\n if (lastStep) {\r\n this.exitFeatureWizard();\r\n } else {\r\n this.props.setActiveNavigationFilter(availableSteps[nextStepIndex].buttonId);\r\n this.props.setActiveNavigationFilterStepIndex(nextStepIndex);\r\n }\r\n const commonView = (this.props.windowWidth < 991) ? 4 : 3;\r\n const buttonId = availableSteps[nextStepIndex].buttonId;\r\n if (buttonId === COUNTERTOP_WIZARD_BUTTONS[2].buttonId) {\r\n this.props.setNavigationViewType(2)\r\n } else if (this.props.navigationViewType !== commonView) {\r\n this.props.setNavigationViewType(commonView)\r\n }\r\n if (buttonId !== COUNTERTOP_WIZARD_BUTTONS[2].buttonId) {\r\n this.props.setSelectedFilters([]); // reset filters on finish filters\r\n }\r\n };\r\n\r\n render() {\r\n const availableSteps = this.getAvailableSteps();\r\n const currentActiveIndex = this.props.activeNavigationFilterStepIndex;\r\n\r\n const firstStepIsActive = currentActiveIndex === 0;\r\n const lastStepIsActive = currentActiveIndex === availableSteps.length - 1;\r\n\r\n const cabinetNavigationFilterCompleted = this.props.isMobile && this.props.cabinetNavigationFilterCompleted && (\r\n this.props.activePart.partId === \"top_cabinet\" || this.props.activePart.partId === \"bottom_cabinet\"\r\n );\r\n // const countertopNavigationFilterCompleted = this.props.isMobile && this.props.countertopNavigationFilterCompleted && (\r\n // this.props.activePart.partId === \"countertop\" || this.props.activePart.partId === \"center_island_countertop\"\r\n // );\r\n\r\n const countertopWizardPartIds = [\"countertop\", \"center_island_countertop\", \"edge_profile\", \"center_island_edge\", \"backsplash\"];\r\n const isCountertopWizard = countertopWizardPartIds.includes(this.props.activePart.partId);\r\n\r\n return (\r\n
    \r\n {this.props.isMobile ? null : (\r\n
    \r\n \r\n {availableSteps[currentActiveIndex]\r\n ? `Select a ${availableSteps[currentActiveIndex].text} for your ${this.props.activePart.partName}.`\r\n : null}\r\n \r\n {isCountertopWizard ? null : }\r\n
    \r\n )}\r\n
    \r\n {cabinetNavigationFilterCompleted ? null : (\r\n
    this.setFeatureWizardStep(currentActiveIndex - 1, firstStepIsActive)}>\r\n \r\n
    \r\n )}\r\n
      \r\n {availableSteps.map((wizardButton, index) => {\r\n const disabled = false;\r\n const buttonIcon = isCountertopWizard && wizardButton.buttonId === \"all_products\" ? \"stones\" : wizardButton.buttonId;\r\n return (\r\n
    • this.setFeatureWizardStep(index, disabled)}>\r\n {wizardButton.text}\r\n
    • \r\n )\r\n })}\r\n
    \r\n {cabinetNavigationFilterCompleted ? null : (\r\n
    this.setFeatureWizardStep(\r\n currentActiveIndex + 1,\r\n lastStepIsActive && isCountertopWizard,\r\n lastStepIsActive && !isCountertopWizard\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 = (store) => ({\r\n activeNavigationFilter: store.navigationState.activeNavigationFilter,\r\n activeNavigationFilterStepIndex: store.navigationState.activeNavigationFilterStepIndex,\r\n cabinetNavigationFilterCompleted: store.navigationState.cabinetNavigationFilterCompleted,\r\n countertopNavigationFilterCompleted: store.navigationState.countertopNavigationFilterCompleted,\r\n navigationViewType: store.navigationState.navigationViewType,\r\n windowWidth: store.serverState.windowWidth,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n setActiveNavigationFilter,\r\n setActiveNavigationFilterStepIndex,\r\n setCabinetNavigationFilterCompleted,\r\n setCountertopNavigationFilterCompleted,\r\n setNavigationViewType,\r\n setSelectedFilters\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(NavigationFiltersSteps);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport $ from 'jquery';\r\n\r\nimport Navigation from \"./navigation\";\r\nimport {ContentType, PartMenuType} from \"../constants\";\r\nimport MobileNavigationBodyNew from './mobile/mobileNavigationBodyNew';\r\nimport ActionTypes from \"../../../misc/actionTypes\";\r\nimport SelectionMobileViewSwitchers from './mobile/selectionMobileViewSwitchers';\r\nimport FeatureWizard from \"./featureWizard/featureWizard\";\r\nimport Analytics from \"../../../analytics\";\r\nimport {BACKSPLASH_TYPES, COUNTERTOP_WIZARD_BUTTONS} from \"../../kvComponent/core/constants\";\r\nimport MobileParentNavigationItems from \"./mobileParentNavigationItems\";\r\n\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport BacksplashSelect from \"../../selectionWindow/backsplashSelect\";\r\nimport {getCommonVisualizerType} from \"../../../config\";\r\nimport LayoutNavigationItem from \"../layoutNavigationItem\";\r\nimport {getAvailableLayouts, getSideBarSubParts} from \"./navUtils\";\r\n\r\nexport default class MobileNavigationCommon extends Navigation {\r\n\r\n static propTypes = {\r\n changeMessageBoxState: PropTypes.func.isRequired,\r\n resetEverything: PropTypes.func.isRequired,\r\n goToMaterialsInfo: PropTypes.func,\r\n setCanvasClass: PropTypes.func,\r\n canvasId: PropTypes.string,\r\n userIsLoggedIn: PropTypes.bool,\r\n toggleUserPopup: PropTypes.func,\r\n setActiveFeature: PropTypes.func,\r\n activeFeature: PropTypes.object,\r\n fabricatorSettings: PropTypes.object,\r\n isPhoneNumberValidated: PropTypes.bool,\r\n setDemoPointClicked: PropTypes.func\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state.render = true;\r\n this.state.searchInputFocused = false;\r\n }\r\n\r\n componentDidMount() {\r\n $(document).on(ActionTypes.OPEN_MOBILE_NAVIGATION, this.openMobileMenu);\r\n $(document).on(ActionTypes.CHANGE_MOBILE_MENU_CONTENT_TYPE, (event, contentType) => {\r\n this.handleChangeContentType(contentType, true);\r\n });\r\n this.props.setNavigationViewType(4);\r\n this._componentDidMount();\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n const layout = getCurrentLayout();\r\n if (!this.state.designNavigationItems || !this.state.designNavigationItems.length) {\r\n this.setState({designNavigationItems: layout.designNavigationItems()});\r\n }\r\n if (nextProps.filterGroups.length) {\r\n let updateComponent = false;\r\n if (nextProps.filterGroups.length === this.props.filterGroups.length) {\r\n updateComponent = nextProps.filterGroups.some((filter, index) => {\r\n return filter.filterId !== this.props.filterGroups[index].filterId\r\n || filter.filterGroupId !== this.props.filterGroups[index].filterGroupId\r\n });\r\n }\r\n if (updateComponent) {\r\n this.reRenderComponent();\r\n }\r\n }\r\n if (nextProps.activeNavigationFilter !== this.props.activeNavigationFilter\r\n && COUNTERTOP_WIZARD_BUTTONS.some(btn => btn.buttonId === nextProps.activeNavigationFilter)) {\r\n if (this.state.parentNavigationItem && (\r\n this.state.parentNavigationItem.part.partName === \"Countertop\"\r\n || this.state.parentNavigationItem.part.partName === \"CenterIsland\"\r\n )) {\r\n const subParts = this.state.parentNavigationItem.part.subParts();\r\n let subPart = null;\r\n switch (nextProps.activeNavigationFilter) {\r\n case COUNTERTOP_WIZARD_BUTTONS[0].buttonId:\r\n case COUNTERTOP_WIZARD_BUTTONS[1].buttonId:\r\n case COUNTERTOP_WIZARD_BUTTONS[2].buttonId:\r\n subPart = (this.state.parentNavigationItem.part.partName === \"Countertop\")\r\n ? subParts.find(sPart => sPart.part.partId === \"countertop\")\r\n : subParts.find(sPart => sPart.part.partId === \"center_island_countertop\");\r\n break;\r\n case COUNTERTOP_WIZARD_BUTTONS[4].buttonId:\r\n subPart = (this.state.parentNavigationItem.part.partName === \"Countertop\")\r\n ? subParts.find(sPart => sPart.part.partId === \"countertop\")\r\n : subParts.find(sPart => sPart.part.partId === \"center_island_countertop\");\r\n break;\r\n case COUNTERTOP_WIZARD_BUTTONS[3].buttonId:\r\n subPart = (this.state.parentNavigationItem.part.partName === \"Countertop\")\r\n ? subParts.find(sPart => sPart.part.partId === \"edge_profile\")\r\n : subParts.find(sPart => sPart.part.partId === \"center_island_edge\");\r\n break;\r\n }\r\n if (subPart) {\r\n this.handleSubPartClick(subPart, nextProps.activeNavigationFilter)\r\n }\r\n }\r\n }\r\n this._componentWillReceiveProps(nextProps)\r\n }\r\n\r\n reRenderComponent = () => {\r\n this.setState({\r\n render: false\r\n }, () => {\r\n this.setState({\r\n render: true\r\n })\r\n })\r\n };\r\n\r\n parentCategoryClick = (parentItemText) => {\r\n const clickedParent = this.state.designNavigationItems.find(item => item.text === parentItemText);\r\n if (clickedParent.part.menuType === PartMenuType.Simple) {\r\n this.triggerOpenNavigationMenu(clickedParent.text);\r\n } else {\r\n const firstChild = getSideBarSubParts(clickedParent.part)[0];\r\n if (firstChild) {\r\n this.triggerOpenNavigationMenu(firstChild.text, clickedParent.text);\r\n }\r\n }\r\n if (parentItemText === \"Floor\") {\r\n $('html, body').animate({scrollTop: document.body.scrollHeight}, 800);\r\n } else if (parentItemText === \"Ceiling\") {\r\n $('html, body').animate({scrollTop: 0}, 800);\r\n }\r\n };\r\n\r\n openMobileMenu = () => {\r\n // $(window).trigger(ActionTypes.SET_CANVAS_SCALE);\r\n this.setState({\r\n showNavigation: true,\r\n contentType: ContentType.Design,\r\n contextMenuOpen: false,\r\n hoveredLayer: {}\r\n }, () => {\r\n this.menuOpened();\r\n setTimeout(() => {\r\n $(document).on('click', this.handleWrapperBlur);\r\n window.mobileMenuOpened = true;\r\n $(window).trigger(ActionTypes.DISABLE_PINCH_ZOOM);\r\n document.removeEventListener('click', this.handleContextMenuBlur);\r\n }, 0)\r\n });\r\n };\r\n\r\n scrollContentToTop = () => {\r\n const listContainer = document.querySelector('.menu-body__content');\r\n if (listContainer) {\r\n listContainer.scrollTop = 0;\r\n }\r\n };\r\n\r\n handleWrapperBlur = (e) => {\r\n const navClick = e.target.closest('[class*=\"menu\"]');\r\n const messageBoxClick = e.target.closest('[class*=\"message\"]');\r\n const lockClick = e.target.closest('[class*=\"lock\"]');\r\n const userPopupClick = e.target.closest('[class*=\"user-popup\"]');\r\n const twoFactorPopup = e.target.closest('[class*=\"TwoFactorAuth-popup\"]');\r\n const countryList = e.target.closest('[class*=\"country\"]');\r\n const searchClick = e.target.closest('[class*=\"search\"]');\r\n const wizardClick = e.target.closest('[class*=\"wiz\"]');\r\n const loadingClick = e.target.closest('[class*=\"full-screen-wrapper\"]');\r\n if (!navClick && !messageBoxClick && !searchClick && !lockClick && !userPopupClick && !twoFactorPopup\r\n && !countryList && !loadingClick && !window.touchMove\r\n && !wizardClick && !window.canvasIsDragging && document.body.classList.contains('body--bv')) {\r\n this.closeNavigation();\r\n }\r\n };\r\n\r\n closeNavigation = () => {\r\n if (!window.canvasIsDragging) {\r\n this.props.setCanvasClass('none', true);\r\n }\r\n this.setState({\r\n showNavigation: false,\r\n showFilterSelection: false,\r\n showerWallWizardGroupsSelected: true,\r\n }, () => {\r\n setTimeout(() => {\r\n this.setState({\r\n contentType: ContentType.None,\r\n searchText: \"\",\r\n showFilterSelection: true,\r\n showerWallWizardGroupsSelected: false,\r\n });\r\n this.props.setActiveFeature(null);\r\n // this.resetWizardSteps(); // after wizard unmounts\r\n }, 500);\r\n $(document).off('click', this.handleWrapperBlur);\r\n window.mobileMenuOpened = false;\r\n $(window).trigger(ActionTypes.ENABLE_PINCH_ZOOM);\r\n });\r\n };\r\n\r\n handleContextMenuBlur = (e) => {\r\n const navClick = e.target.closest('[class*=\"contextmenu\"]');\r\n // console.log('blur');\r\n if (!navClick && !window.touchMove) {\r\n this.setState({\r\n contextMenuOpen: false,\r\n hoveredLayer: {}\r\n }, () => {\r\n document.removeEventListener('click', this.handleContextMenuBlur);\r\n });\r\n }\r\n };\r\n\r\n handleChangeContentType = (contentType, resetNav = false) => {\r\n this.setState({\r\n contentType,\r\n parentNavigationItem: resetNav ? null : this.state.parentNavigationItem,\r\n childNavigationItem: resetNav ? null : this.state.childNavigationItem,\r\n });\r\n if (contentType === ContentType.Design) {\r\n this.setNewActiveFeature();\r\n }\r\n };\r\n\r\n /* start oldNav methods */\r\n\r\n scrollToDefault = (item) => {\r\n if (!window.canvasIsDragging) {\r\n this.props.setCanvasClass(item.text.toLowerCase().replace(/ /g, \"-\"));\r\n }\r\n this.scrollContentToTop();\r\n };\r\n\r\n /* end oldNav methods */\r\n\r\n resetEverything = () => {\r\n this.props.resetEverything();\r\n this.closeNavigation();\r\n setTimeout(() => {\r\n this.resetWizardSteps(); // after wizard unmounts\r\n }, 300)\r\n };\r\n\r\n menuOpened = () => {\r\n this.scrollContentToTop();\r\n this.setNewActiveFeature();\r\n this._menuOpened();\r\n };\r\n\r\n handleContextMenuClick = (menuItem) => {\r\n const layout = getCurrentLayout();\r\n if (!this.state.showNavigation) {\r\n\r\n let clickedParent = \"\", clickedButton = \"\";\r\n const isBacksplash = BACKSPLASH_TYPES.some(bType => bType === menuItem.text);\r\n\r\n if (menuItem.text === \"Edge Profile\") {\r\n if (this.props.setActiveNavigationFilter) {\r\n this.props.setActiveNavigationFilter(COUNTERTOP_WIZARD_BUTTONS[3].buttonId); // set active navigation filter\r\n this.props.setActiveNavigationFilterStepIndex(3);\r\n }\r\n } else if (isBacksplash) {\r\n const wallsParent = layout.parts[\"Walls\"];\r\n const backsplashSubPart = wallsParent.subParts().find(subPart => subPart.part.partId === \"backsplash\");\r\n this.checkIfAllFeaturesReceived(backsplashSubPart);\r\n const featureToClick = backsplashSubPart.part.getFeatureByBacksplashType(menuItem.text);\r\n // console.log(\"featureToClick\", featureToClick);\r\n if (featureToClick) {\r\n featureToClick.handleClick();\r\n }\r\n clickedParent = \"Walls\";\r\n clickedButton = \"Backsplash\";\r\n\r\n if (this.props.setActiveNavigationFilter) {\r\n this.props.setActiveNavigationFilter(COUNTERTOP_WIZARD_BUTTONS[4].buttonId); // set active navigation filter\r\n this.props.setActiveNavigationFilterStepIndex(4);\r\n }\r\n\r\n }\r\n if (!isBacksplash) {\r\n clickedButton = menuItem.text;\r\n clickedParent = menuItem.subMenuParent || this.state.contextMenuOpen;\r\n }\r\n\r\n if (clickedParent && clickedParent.module) {\r\n clickedParent = \"Cabinet\"\r\n }\r\n\r\n if (!window.canvasIsDragging) {\r\n this.props.setCanvasClass(clickedParent.toLowerCase().replace(/ /g, \"-\"));\r\n }\r\n\r\n if (clickedParent === \"Walls\" && (clickedButton === \"Left Shower Wall\" || clickedButton === \"Pony Wall\")) {\r\n this.ponyWallAndLeftWallClick(menuItem);\r\n }\r\n\r\n this.setState({\r\n showNavigation: true,\r\n contentType: ContentType.Design,\r\n contextMenuOpen: false,\r\n hoveredLayer: {}\r\n }, () => {\r\n this.menuOpened();\r\n this.triggerOpenNavigationMenu(clickedButton, clickedParent);\r\n $(document).on('click', this.handleWrapperBlur);\r\n window.mobileMenuOpened = true;\r\n $(window).trigger(ActionTypes.DISABLE_PINCH_ZOOM);\r\n $(document).off('click', this.handleContextMenuBlur);\r\n if (menuItem.clickFeature && !isBacksplash) {\r\n const featureToClick = menuItem.part.features.find(feature => feature.partName === menuItem.subMenuText);\r\n if (featureToClick) {\r\n featureToClick.handleClick();\r\n }\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n getDisplayRoomContent = () => {\r\n let presets = this.checkedForLockedPresets();\r\n return (\r\n
    \r\n {presets.length ? (\r\n
      \r\n {presets.map((preset, index) => ( //\r\n
    • Analytics.sendClickEvent(\"default-preset-clicked-\" + index) && this.handleDefaultPresetClick(index, preset.presetIsLocked)}\r\n key={index}>\r\n
      \r\n \"item.type\"/\r\n
      \r\n
    • \r\n ))}\r\n
    \r\n ) : (\r\n

    No display room found

    \r\n )}\r\n
    \r\n )\r\n };\r\n\r\n contentDesignWizard = () => {\r\n const wizardGroups = this.state[this.getWizardGroupsByPartId(this.state.childNavigationItem.part.partId)];\r\n return (\r\n \r\n )\r\n };\r\n\r\n toggleSearchInputFocus = () => {\r\n this.setState({\r\n searchInputFocused: !this.state.searchInputFocused\r\n })\r\n };\r\n\r\n getFeatures = (layout) => {\r\n const parentItem = this.state.parentNavigationItem;\r\n const childItem = this.state.childNavigationItem;\r\n const currentParent = (parentItem && (parentItem.part.menuType === PartMenuType.Simple)) ? parentItem : childItem;\r\n if (!currentParent) {\r\n return []\r\n }\r\n let features = layout.designNavigationItems(currentParent, this.props.selectedFilters, this.state.searchText);\r\n return features\r\n };\r\n\r\n contentBody = (features, useWizard, useFilters, activePart, activeSubPart, filterSelectionHasValues, allFeaturesReceived) => {\r\n const {intl} = this.props;\r\n const layout = getCurrentLayout();\r\n const layoutNames = getAvailableLayouts();\r\n return (\r\n
    \r\n {this.state.contentType === ContentType.Design && activePart ? (\r\n
    \r\n \r\n {activeSubPart && activeSubPart.partId === \"backsplash\" && getCommonVisualizerType() === \"kitchen\" ? (\r\n
    \r\n \r\n
    \r\n ) : null}\r\n
    \r\n {activePart.menuType === PartMenuType.Complex && activePart.subTypes().length\r\n ? activePart.subTypes().map(subType => (\r\n \r\n )) : (\r\n 12 ? \" search-input--with-close\" : \"\")\r\n }\r\n value={this.state.searchText}\r\n onFocus={this.toggleSearchInputFocus}\r\n onBlur={this.toggleSearchInputFocus}\r\n onChange={this.handleSearchInputChange}\r\n placeholder={intl.formatMessage({id: \"mobileMenu.searchPlaceholder\"})}\r\n id=\"main-search\"\r\n />\r\n )}\r\n {this.state.searchText\r\n ?
    \r\n
    \r\n ) : null}\r\n \r\n {this.state.contentType === ContentType.Layout ? (\r\n
    \r\n
      \r\n {layoutNames.map(key => {\r\n return \r\n })}\r\n
    \r\n
    \r\n ) : null}\r\n {this.state.contentType === ContentType.Design ? (\r\n
    \r\n {this.state.parentNavigationItem ? (\r\n this.state.render ? (\r\n \r\n ) :
    \r\n ) : }\r\n
    \r\n ) : null}\r\n {this.state.contentType === ContentType.DisplayRoom ? this.getDisplayRoomContent() : null}\r\n {this.state.contentType === ContentType.Loading ? (\r\n
    \r\n ) : null}\r\n
    \r\n
    \r\n )\r\n };\r\n\r\n}\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport store from \"../../../../store\";\r\nimport * as actions from \"../../../../actions/actionFunctions\";\r\nimport UserLoginButton from \"../../../ui/userLoginButton\";\r\n\r\nimport {ContentType} from \"../../constants\";\r\nimport Analytics from \"../../../../analytics\";\r\nimport HomeMenu from \"../../../common/homeMenu\";\r\nimport ScheduleButton from \"../../../common/scheduleButton\";\r\nimport Config from \"../../../../config\";\r\nimport {getShowOtherLayouts} from \"../navUtils\";\r\n\r\nclass MobileNavigationButtons extends Component {\r\n\r\n static propTypes = {\r\n handleChangeContentType: PropTypes.func.isRequired,\r\n handleSearchInputChange: PropTypes.func.isRequired,\r\n resetEverything: PropTypes.func.isRequired,\r\n contentType: PropTypes.number.isRequired,\r\n searchText: PropTypes.string,\r\n parentNavigationItem: PropTypes.object,\r\n canvasId: PropTypes.string,\r\n userIsLoggedIn: PropTypes.bool,\r\n toggleUserPopup: PropTypes.func,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n designNavigationOpened: ''\r\n }\r\n }\r\n\r\n handleDropDownButtonClick = (type) => {\r\n Analytics.sendClickEvent('mobile-' + type + '-button-clicked');\r\n this.setState({\r\n designNavigationOpened: this.state.designNavigationOpened === type ? '' : type\r\n }, () => {\r\n this.state.designNavigationOpened\r\n ? window.addEventListener('click', this.handleDropdownWrapperBlur)\r\n : window.removeEventListener('click', this.handleDropdownWrapperBlur)\r\n })\r\n };\r\n\r\n handleResetButtonClick = () => {\r\n Analytics.sendClickEvent(\"mobile-nav-reset-button-question\");\r\n this.props.changeMessageBoxState({\r\n visible: true,\r\n message: \"messageBox.resetVisualizerState\",\r\n buttons: [{\r\n text: \"messageBox.buttonNo\",\r\n color: \"blue\",\r\n click: () => {\r\n Analytics.sendClickEvent(\"mobile-nav-reset-button-no\");\r\n this.props.changeMessageBoxState({visible:false});\r\n }\r\n },{\r\n text: \"messageBox.buttonYes\",\r\n color: \"green\",\r\n click: () => {\r\n Analytics.sendClickEvent(\"mobile-nav-reset-button-yes\");\r\n this.props.changeMessageBoxState({visible:false});\r\n setTimeout(() => {\r\n this.setState({\r\n designNavigationOpened: ''\r\n });\r\n this.props.resetEverything();\r\n }, 500);\r\n }\r\n }]\r\n });\r\n };\r\n\r\n changeContentType = (contentType) => {\r\n this.props.handleChangeContentType(contentType);\r\n this.resetDropDown();\r\n };\r\n\r\n resetDropDown = () => {\r\n this.setState({\r\n designNavigationOpened: ''\r\n }, () => {\r\n window.removeEventListener('click', this.handleDropdownWrapperBlur)\r\n })\r\n };\r\n\r\n handleDisplayRoomClick = () => {\r\n Analytics.sendClickEvent('mobile-navigation-display-room-button');\r\n this.changeContentType(ContentType.DisplayRoom);\r\n this.resetDropDown();\r\n };\r\n\r\n handleDropdownWrapperBlur = (e) => {\r\n const newButtonClick = e.target.closest('.menu-header__right-button');\r\n const dropDownClick = e.target.closest('[class*=\"menu-dropdown\"]');\r\n const userPopupClick = e.target.closest('[class*=\"user-popup\"]');\r\n if (!newButtonClick && !dropDownClick && !userPopupClick) {\r\n this.resetDropDown();\r\n }\r\n };\r\n\r\n handleFiltersClick = () => {\r\n Analytics.sendClickEvent('mobile-show-filters');\r\n store.dispatch(actions.showFiltersIfHidden('mobileNavigation'));\r\n };\r\n\r\n render() {\r\n const {intl} = this.props;\r\n const dashboardFramed = Config.isVisualizerManagement();\r\n const fabricatorSettings = this.props.fabricatorSettings;\r\n let showOtherLayouts = getShowOtherLayouts(fabricatorSettings);\r\n\r\n return (\r\n
    \r\n {this.props.mobileNav.length && this.props.windowWidth < 991 ? (\r\n \r\n ) : null}\r\n {this.props.parentNavigationItem ? (\r\n \r\n ) : null}\r\n {/*this.props.parentNavigationItem ? (\r\n \r\n ) : null*/}\r\n {dashboardFramed ? null : }\r\n \r\n
    \r\n {this.state.designNavigationOpened === 'menu' ? (\r\n
      \r\n
    • Analytics.sendClickEvent('menu-option-clicked-design') && this.changeContentType(ContentType.Design)}>\r\n \r\n
    • \r\n
    • \r\n \r\n
    • \r\n {/*
    • Quoted Items
    • */}\r\n {showOtherLayouts ? (\r\n
    • Analytics.sendClickEvent('menu-option-clicked-roomLayout') && this.changeContentType(ContentType.Layout)}>\r\n \r\n
    • \r\n ) : null}\r\n
    • \r\n \r\n
    \r\n ) : null}\r\n {this.state.designNavigationOpened === 'search' ? (\r\n
    \r\n \r\n {this.props.searchText ? (\r\n
    \r\n ) : null}\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n mobileNav: store.navigationState.mobileNav,\r\n windowWidth: store.serverState.windowWidth,\r\n fabricatorSettings: store.fabricatorState.settings,\r\n selectedFilters: store.filterState.selectedFilters,\r\n});\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(MobileNavigationButtons)\r\n)\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport Analytics from \"../../../../analytics\";\r\n\r\nexport default class MobileNavigationAllWallsCheckbox extends Component {\r\n\r\n static propTypes = {\r\n parentNavigationItem: PropTypes.instanceOf(DesignNavigationItem).isRequired,\r\n toggleApplyWallsCheckbox: PropTypes.func.isRequired,\r\n };\r\n\r\n allWallsClick = () => {\r\n Analytics.sendClickEvent('all-walls-toggled');\r\n this.props.toggleApplyWallsCheckbox();\r\n setTimeout(() => {\r\n this.forceUpdate();\r\n }, 0)\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport ShareButton from './shareButton';\r\n// import { downloadCanvasImageById } from \"../misc/utils\";\r\nimport HomeMenu from \"./homeMenu\";\r\nimport Analytics from \"./../../analytics\";\r\nimport {showSchedulerPopup, toggleUserPopup} from \"../../actions/actionFunctions\";\r\nimport SaveButton from \"./saveButton\";\r\nimport QuoteButton from \"./quoteButton\";\r\nimport DesignButton from \"./designButton\";\r\nimport {UserPopupTypes} from \"../visComponents/constants\";\r\nimport ScheduleButton from \"./scheduleButton\";\r\nimport MinimizeButton from \"./minimizeButton\";\r\nimport {getCurrentLayout} from \"../appLayout\";\r\nimport {renderMessagePopup} from \"../../api/api-popups\";\r\nimport {saveQuote} from \"../../api/server-api\";\r\nimport Config from \"../../config\";\r\nimport NavigationRequests from \"../visComponents/navigation/navigationRequests\";\r\nimport {loaderDisable, loaderEnable} from \"../ui/loaderView\";\r\nimport {downloadCSV} from \"../../misc/downloadCSV\";\r\nimport PingPilotButton from \"../visComponents/pingPilotButton\";\r\n\r\nclass MainButtons extends NavigationRequests {\r\n\r\n static propTypes = {\r\n goBack: PropTypes.func,\r\n goToCart: PropTypes.func,\r\n changeMessageBoxState: PropTypes.func.isRequired,\r\n resetEverything: PropTypes.func.isRequired,\r\n canvasId: PropTypes.string,\r\n };\r\n\r\n handleResetButtonClick = () => {\r\n Analytics.sendClickEvent(\"reset-quote-question\");\r\n this.props.changeMessageBoxState({\r\n visible: true,\r\n message: \"messageBox.resetTitle\",\r\n buttons: [{\r\n text: \"messageBox.buttonNo\",\r\n color: \"blue\",\r\n click: () => {\r\n Analytics.sendClickEvent(\"reset-quote-cancel\");\r\n this.props.changeMessageBoxState({visible: false});\r\n }\r\n }, {\r\n text: \"messageBox.buttonYes\",\r\n color: \"green\",\r\n click: () => {\r\n Analytics.sendClickEvent(\"reset-quote-yes\");\r\n this.props.changeMessageBoxState({visible: false});\r\n this.props.resetEverything();\r\n }\r\n }]\r\n });\r\n };\r\n\r\n handleLoginButtonClick = (userPopupType) => {\r\n Analytics.sendClickEvent(\"main-login-button\");\r\n this.props.toggleUserPopup({\r\n userPopupOpened: true,\r\n userPopupType\r\n });\r\n };\r\n\r\n handleLogOutButtonClick = () => {\r\n Analytics.sendClickEvent(\"main-logout-button-question\");\r\n this.props.changeMessageBoxState({\r\n visible: true,\r\n message: \"messageBox.logoutTitle\",\r\n buttons: [{\r\n text: \"messageBox.buttonNo\",\r\n color: \"blue\",\r\n click: () => {\r\n Analytics.sendClickEvent(\"main-logout-button-no\");\r\n this.props.changeMessageBoxState({visible: false});\r\n }\r\n }, {\r\n text: \"messageBox.buttonYes\",\r\n color: \"green\",\r\n click: () => {\r\n Analytics.sendClickEvent(\"main-logout-button-yes\");\r\n this.props.changeMessageBoxState({visible: false});\r\n this.props.toggleUserPopup({\r\n userPopupOpened: false,\r\n userIsLoggedIn: false,\r\n isPhoneNumberValidated: false\r\n });\r\n }\r\n }]\r\n });\r\n };\r\n\r\n handleScheduleButtonClick = () => {\r\n const fabricatorSettings = this.props.fabricatorData.settings;\r\n Analytics.sendClickEvent('schedule-appointment-main-button');\r\n if (!this.props.isPhoneNumberValidated) {\r\n this.handleLoginButtonClick(UserPopupTypes.Schedule);\r\n return;\r\n }\r\n if (fabricatorSettings.enableCalendarForScheduling) {\r\n this.props.showSchedulerPopup(true)\r\n } else {\r\n saveQuote({submit: true, quoteRequestType: QuoteRequestType.ScheduleAnAppointment})\r\n .then(() => {\r\n renderMessagePopup(\"userPopup.messageBox.appointmentRequested\");\r\n });\r\n }\r\n };\r\n\r\n getAllFeatures = () => {\r\n const layout = getCurrentLayout();\r\n const parents = layout.getFeatures(true); // we need other groups too\r\n parents.forEach((parent) => {\r\n parent.relatedItems.forEach(async relItem => {\r\n await this.checkIfAllFeaturesReceived({part: relItem});\r\n })\r\n });\r\n };\r\n\r\n consoleTableAllFeatures = async () => {\r\n loaderEnable();\r\n const layout = getCurrentLayout();\r\n // console.log(\"Active Features:\", layout.getActiveFeatures(true));\r\n // console.log(\"layout.getActiveFeaturesAsObject:\", JSON.stringify(layout.getActiveFeaturesAsObject(false, true, true)));\r\n const parents = layout.getFeatures(true); // we need other groups too\r\n // console.log(\"go\");\r\n await this.getAllFeatures();\r\n // console.log(\"stop\");\r\n let allFeatures = [\r\n [\"groupName\", \"sharedFeatureName\", \"customDisplayName\", \"metaData\", \"filters\"]\r\n ];\r\n parents.forEach((parent) => {\r\n parent.relatedItems.forEach(relItem => {\r\n for (let i = 0; i <= relItem.features.length; i++) {\r\n const feature = relItem.features[i];\r\n if (feature && allFeatures.every(f => (f.sharedFeatureName !== feature.dbFeature.sharedFeatureName)\r\n || (f.groupName !== feature.dbFeature.groupName))) {\r\n allFeatures.push([\r\n feature.dbFeature.groupName,\r\n feature.dbFeature.sharedFeatureName,\r\n feature.dbFeature.customDisplayName,\r\n JSON.stringify(feature.dbFeature.metaData),\r\n JSON.stringify(feature.dbFeature.filters)\r\n ])\r\n }\r\n }\r\n })\r\n });\r\n console.log(allFeatures);\r\n loaderDisable();\r\n downloadCSV(allFeatures);\r\n }\r\n\r\n consoleActiveFeatures = () => {\r\n const layout = getCurrentLayout();\r\n console.log(\"Active Features:\", layout.getActiveFeatures(true));\r\n console.log(\"Active Lead Features:\", layout.getActiveNames());\r\n console.log(\"layout.getActiveFeaturesAsObject:\", JSON.stringify(layout.getActiveFeaturesAsObject(false, true, true)));\r\n this.consoleTableAllFeatures();\r\n }\r\n\r\n render() {\r\n const fabricatorSettings = this.props.fabricatorData.settings;\r\n const dashboardFramed = Config.isVisualizerManagement();\r\n const allPagesEnabled = !document.kvConfig.visualizerOnly;\r\n const quoteEnabled = fabricatorSettings.enableQuote;\r\n return (\r\n
    \r\n {this.props.windowWidth < 991 ? (\r\n \r\n ) : null}\r\n {this.props.windowWidth < 991 || dashboardFramed || (this.props.fabricatorData.checkout && this.props.goToCart && allPagesEnabled) ? null : (\r\n \r\n )}\r\n {quoteEnabled ? : null}\r\n \r\n \r\n {(fabricatorSettings.leadCapture && !(document.kvConfig.isBackend && document.kvConfig.jobId)) ? (\r\n \r\n ) : null}\r\n {Config.isDevMode() ? (\r\n \r\n ) : null}\r\n {(fabricatorSettings.showPricing) && this.props.goToCart && allPagesEnabled ? (\r\n \r\n ) : null}\r\n {fabricatorSettings.enableSharing && !dashboardFramed ? : null }\r\n \r\n {allPagesEnabled ? : null}\r\n {this.props.mobileNav.length && this.props.windowWidth >= 991 ? : null}\r\n {document.kvConfig.jobId ?
    : null}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n mobileNav: store.navigationState.mobileNav,\r\n cartItems: store.cartState.cartItems,\r\n windowWidth: store.serverState.windowWidth,\r\n fabricatorData: store.fabricatorState,\r\n isPhoneNumberValidated: store.userState.isPhoneNumberValidated,\r\n userIsLoggedIn: store.userState.userIsLoggedIn,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n showSchedulerPopup,\r\n toggleUserPopup\r\n})(MainButtons);\r\n","import PropTypes from 'prop-types';\r\nimport uuid from 'uuid';\r\nimport {hashHistory} from \"react-router\";\r\nimport $ from \"jquery\";\r\n\r\nimport {loaderDisable, loaderEnable} from \"../ui/loaderView\";\r\nimport {getJobIdPreset, getQtCategories, saveQuote} from \"../../api/server-api\";\r\nimport ActionTypes from \"../../misc/actionTypes\";\r\nimport JsonApi from \"../../api/jsonApi\";\r\nimport NavigationRequests from \"./navigation/navigationRequests\";\r\nimport Config, {\r\n // getCommonVisualizerType,\r\n IS_LIXIL_UI,\r\n IS_LOOK_JOURNEY, IS_OFFLINE_MODE,\r\n IS_QKB_UI\r\n} from \"../../config\";\r\nimport {isNewlyCreatedJob, parseJobIdResponse} from \"../../api/parseResponse\";\r\nimport {getImagePromiseFromLayout} from \"../../misc/getCanvasImageFromLayout\";\r\nimport {createCartList, getParsedLookUrl} from \"../look/lookNavigation/lookFunctions\";\r\nimport {getLocalStorageItem} from \"../../misc/storageFunctions\";\r\nimport {getDefaultPresetByLook, saveQuoteAndShare} from \"../look/lookNavigation/lookFunctions2\";\r\nimport store from \"../../store\";\r\nimport {GROHE_ON_OPEN_ACTION} from \"../look/iframeIntegration\";\r\nimport {addToCart} from \"../../actions/actionFunctions\";\r\n// import {setContractBlob} from \"../../actions/contractsActions\";\r\nimport {setAllowRouting} from \"../../actions/serverFunctions\";\r\nimport {renderErrorPopup} from \"../../api/api-popups\";\r\nimport {updatePresetRoomLayout} from \"../../misc/presetsFunctions\";\r\nimport {setShopPageLoaded} from \"../../actions/shopFunctions\";\r\nimport {showWizardInsteadOfQT} from \"../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\nimport {setAssignQuoteOfflineData} from \"../../actions/assignPopupFunctions\";\r\nimport {getAdditionalFeaturesOnScroll} from \"../../api/look-api\";\r\nimport {VISUALIZER_MANAGEMENT_ACTIONS} from \"../../misc/constants\";\r\nimport {parseWizardResponse} from \"../../misc/loadVisualizer\";\r\nimport {LOCAL_STORAGE_KEYS, LOOK_OVERLAYS} from \"../look/core/constants\";\r\nimport {setLookOverlayOpened} from \"../../actions/lookFunctions\";\r\nimport {updateCurrentQuote} from \"../../misc/quotesFunctions\";\r\nimport {getContracts, setContractBlobs, shouldUseContractSigning} from \"../popups/contractSign/contractsFunctions\";\r\nimport {getOfflineReceiptImages} from \"../../actions/printFunctions\";\r\nimport {loadAllAsyncScripts, removeLoadingElements} from \"../../loadingLogic\";\r\nimport {listenToDashboardMessaging} from \"./dashboardMessaging\";\r\n// import {setUseFeaturesLightRequest} from \"../../actions/navigationFunctions\";\r\n\r\nexport default class Visualizer extends NavigationRequests {\r\n\r\n static defaultProps = {\r\n useMouseHovering: true,\r\n useTouchZoom: true,\r\n };\r\n\r\n static propTypes = {\r\n toggleUserPopup: PropTypes.func,\r\n cartItems: PropTypes.array,\r\n useMouseHovering: PropTypes.bool,\r\n useTouchZoom: PropTypes.bool,\r\n userIsLoggedIn: PropTypes.bool,\r\n isPhoneNumberValidated: PropTypes.bool,\r\n handleToggleFeatureInfo: PropTypes.func,\r\n jobId: PropTypes.number,\r\n mobileNav: PropTypes.array,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.imageCanvas = null;\r\n this.navBar = null;\r\n this.loadByTheDefault = null;\r\n this.needToSaveQuote = false;\r\n this.state = {\r\n messageBoxState: {\r\n visible: false\r\n },\r\n canvasId: uuid.v4(),\r\n lockedView: false,\r\n activeFeature: null,\r\n demoPointClicked: false,\r\n allowRouting: false,\r\n };\r\n // if (this.props.visualizersLoaded.includes(this.layout.visualizerType)) {\r\n // loaderEnable()\r\n // }\r\n if (IS_LIXIL_UI) { // temporary removed because of additional rooms loading\r\n loaderEnable();\r\n }\r\n }\r\n\r\n setSubscribers() {\r\n $(window).on(ActionTypes.CHANGE_LAYOUT, this.handleRefresh);\r\n $(window).on(ActionTypes.UPDATE_ALL_ITEMS, this.handleRefresh);\r\n $(window).on(ActionTypes.CANVAS_SCALE_CHANGED, this.canvasScaleChanged);\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.bvOpened && !this.props.bvOpened) {\r\n this.handleRefresh();\r\n if (IS_QKB_UI && !this.props.visualizerTutorialFinished && this.props.showVisualizerTutorial) {\r\n this.props.showVisualizerTutorial(true);\r\n }\r\n }\r\n if (!nextProps.showRestorePopup && this.props.showRestorePopup) {\r\n this.changeMessageBoxState({visible:false});\r\n try {\r\n window.localStorage.removeItem(this.layout.localStorageKey);\r\n } catch (ex) { console.log(\"localStorage exception\", ex); }\r\n }\r\n if (IS_QKB_UI && nextProps.initialFlowRoom && (nextProps.initialFlowRoom !== this.props.initialFlowRoom)) {\r\n this.tryToSetSelectedRoom()\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n $(window).off(ActionTypes.CHANGE_LAYOUT, this.handleRefresh);\r\n $(window).off(ActionTypes.UPDATE_ALL_ITEMS, this.handleRefresh);\r\n $(window).off(ActionTypes.CANVAS_SCALE_CHANGED, this.canvasScaleChanged);\r\n }\r\n\r\n shouldComponentUpdate() {\r\n return !window.requestInProcess\r\n }\r\n\r\n applyStoredItems = () => {\r\n loaderEnable();\r\n this.changeMessageBoxState({visible:false});\r\n try {\r\n const bvState = JSON.parse(window.localStorage.getItem(this.layout.localStorageKey));\r\n this.layout.setItemsFromBvState(bvState, true);\r\n } catch (ex) { console.log(\"applyStoredItems localStorage exception\", ex); }\r\n loaderDisable();\r\n };\r\n\r\n setIframeMessaging = () => {\r\n if (Config.isVisualizerManagement()) {\r\n window.addEventListener(\"message\", (event) => {\r\n if (event.data && (event.data.action === VISUALIZER_MANAGEMENT_ACTIONS.getState\r\n || event.data.action === VISUALIZER_MANAGEMENT_ACTIONS.checkState)) {\r\n setTimeout(() => {\r\n getImagePromiseFromLayout(this.layout)\r\n .then(response => {\r\n const bvState = this.layout.getActiveFeaturesAsObject(false, false, true);\r\n bvState.bv_screen = response;\r\n // console.log('bvState.bv_screen:', bvState.bv_screen);\r\n window.parent.postMessage({\r\n action: event.data.action,\r\n payload: bvState\r\n }, \"*\");\r\n })\r\n }, 0)\r\n }\r\n if (event.data && event.data.action === VISUALIZER_MANAGEMENT_ACTIONS.setState) {\r\n if ((document.kvConfig.visualizerType === \"bvLook\")) {\r\n event.data.bvState = updatePresetRoomLayout(event.data.bvState);\r\n console.log(\"applying new state...\", event.data.bvState);\r\n }\r\n this.layout.setItemsFromBvState(event.data.bvState);\r\n }\r\n });\r\n }\r\n\r\n if (window.parent) {\r\n window.parent.postMessage({\r\n action: VISUALIZER_MANAGEMENT_ACTIONS.visualizerIsLoaded,\r\n payload: {\r\n jobId: document.kvConfig.jobId,\r\n }\r\n }, \"*\");\r\n }\r\n\r\n listenToDashboardMessaging();\r\n\r\n };\r\n\r\n canvasScaleChanged = (event, canvas_scale) => {\r\n if (canvas_scale !== 1) {\r\n this.setDemoPointClicked();\r\n $(window).off(ActionTypes.CANVAS_SCALE_CHANGED);\r\n }\r\n }\r\n\r\n async setVisualizerInfo(mainResponse, bvGroupsResponse, qtCategories, layoutTypes, userIsLoggedIn, savedTempData) {\r\n if (Config.isDevMode() || document.kvConfig.kioskMode) {\r\n console.log('mainResponse-->', mainResponse);\r\n // if (mainResponse) {\r\n // console.log('mainResponse features-->', mainResponse.features);\r\n // }\r\n console.log('bvGroupsResponse-->', bvGroupsResponse);\r\n console.log('savedTempData-->', savedTempData);\r\n }\r\n parseWizardResponse(mainResponse, qtCategories, this.layout.visualizerType); // lixil ui enable routing\r\n if (qtCategories.length) {\r\n this.loadQtCategoriesFeatures(qtCategories); // load features from feature groups\r\n }\r\n this.layout.createCustomConfigurations(); // set shower body first\r\n this.layout.setGroupsItemsCount(bvGroupsResponse);\r\n // if (bvGroupsResponse && getCommonVisualizerType() === \"kitchen\") { // removed this logic, download countertops always as usual\r\n // toggles to request all features at once or each feature separately\r\n // store.dispatch(setUseFeaturesLightRequest({\r\n // countertops: !(bvGroupsResponse[\"countertop\"] && bvGroupsResponse[\"countertop\"].totalFeaturesCount > 8000), //increased for nhance\r\n // cabinets: !(bvGroupsResponse[\"top Cabinet\"] && bvGroupsResponse[\"top Cabinet\"].totalFeaturesCount > 6000),\r\n // }))\r\n // }\r\n this.layout.setDefaultFeatures();\r\n if (qtCategories.length) {\r\n this.layout.setQtCategoriesSubparts(qtCategories); // set QtCategories subParts(wait until defaults are set)\r\n this.loadQtCategoriesFeatures(qtCategories); // load features from feature groups second time!!\r\n // after qtCategories are set (because we need partIdExistInQtCategory logic)\r\n }\r\n\r\n // 2) check what to set next\r\n const {lookIdFromUrl} = getParsedLookUrl();\r\n\r\n const presets = mainResponse.defaults || [];\r\n console.log(\"presets\", presets);\r\n\r\n let loadByTheDefault = null;\r\n let isCartAndUserStatedUpdateNeeded = false;\r\n\r\n let recoverFromTempId = savedTempData && Array.isArray(savedTempData.records);\r\n if (recoverFromTempId) {\r\n console.log(\"recoverFromTempId savedTempData\", savedTempData);\r\n this.loadByTheDefault = savedTempData.records[0].data;\r\n this.loadByTheDefault.alreadyRestored = true;\r\n loadByTheDefault = savedTempData.records[0].data;\r\n await parseJobIdResponse(savedTempData);\r\n }\r\n console.log(\"userIsLoggedIn\", userIsLoggedIn);\r\n\r\n if (!loadByTheDefault) {\r\n loadByTheDefault = lookIdFromUrl ? getDefaultPresetByLook(presets, lookIdFromUrl) : null;\r\n console.log(\"loadByTheDefault by lookIdFromUrl\", loadByTheDefault);\r\n console.log(\"lookIdFromUrl\", lookIdFromUrl);\r\n }\r\n if (!loadByTheDefault) {\r\n loadByTheDefault = presets.find(preset => preset.loadByTheDefault);\r\n console.log(\"loadByTheDefault by mainResponse\", loadByTheDefault);\r\n }\r\n const editJobId = document.kvConfig.jobId && document.kvConfig.jobId > 0;\r\n console.log('editJobId', editJobId);\r\n\r\n const editToken = store.getState().userState.editToken;\r\n console.log('editToken', editToken);\r\n\r\n if (editJobId || editToken) {\r\n //console.log('resetting', document.kvConfig.jobId);\r\n const jobResponse = await getJobIdPreset(document.kvConfig.jobId, editToken);\r\n if (jobResponse && jobResponse.data && !jobResponse.data.error) {\r\n if (Array.isArray(jobResponse.data.records) && jobResponse.data.records.length) {\r\n this.loadByTheDefault = jobResponse.data.records[0].data;\r\n if (this.loadByTheDefault && this.loadByTheDefault.bvStateVersion) { // for old quotes we are keeping old create cart list logic\r\n this.loadByTheDefault.alreadyRestored = true;\r\n }\r\n }\r\n await parseJobIdResponse(jobResponse.data);\r\n if (loadByTheDefault && isNewlyCreatedJob(jobResponse.data)) {\r\n await this.setFirstPreset(loadByTheDefault, layoutTypes);\r\n await updateCurrentQuote(0);\r\n }\r\n } else if (loadByTheDefault) {\r\n await this.setFirstPreset(loadByTheDefault, layoutTypes)\r\n }\r\n if (IS_QKB_UI && !document.kvConfig.visualizerOnly\r\n && (!window.location.href.includes(\"#/\") || !window.location.href.split(\"#/\")[1].length)) {\r\n if (this.props.fabricatorSettings.checkout) {\r\n this.goToCart()\r\n } else {\r\n this.props.toggleBathroomVisualizerOpen(true);\r\n if (!window.location.href.includes(\"visualizer\")) {\r\n hashHistory.push(\"visualizer\");\r\n }\r\n }\r\n }\r\n return true\r\n } else if (loadByTheDefault) {\r\n if (!recoverFromTempId) { // temp id data is recovered in parse response\r\n await this.setFirstPreset(loadByTheDefault, layoutTypes, isCartAndUserStatedUpdateNeeded);\r\n }\r\n // 3) restore share button or save quote click\r\n if (loadByTheDefault.returnAction) {\r\n this.needToSaveQuote = false;\r\n if (!userIsLoggedIn) {\r\n console.info(`Sorry, can't share to ${loadByTheDefault.returnAction}, the user is not logged in, so the quote can not be saved.`);\r\n return\r\n }\r\n if (loadByTheDefault.returnAction === GROHE_ON_OPEN_ACTION.saveQuote) {\r\n setTimeout(() => {$(\"button[data-id='save-button']\").trigger('click')}, 0);\r\n } else if ([\r\n GROHE_ON_OPEN_ACTION.shareFacebook,\r\n GROHE_ON_OPEN_ACTION.sharePinterest,\r\n GROHE_ON_OPEN_ACTION.shareTwitter].some(action => loadByTheDefault.returnAction === action)) {\r\n setTimeout(() => {\r\n const {shareUrl} = store.getState().serverState;\r\n saveQuoteAndShare(loadByTheDefault.returnAction, shareUrl);\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n setFirstPreset = async (roomPreset, layoutTypes, isCartAndUserStatedUpdateNeeded= false) => {\r\n if (!layoutTypes || layoutTypes[roomPreset.layout_type]) {\r\n // this.setNewBvState(roomPreset, true);\r\n console.log(\"roomPreset\", roomPreset);\r\n const layout_type = +roomPreset.layout_type;\r\n const needToChangeLayout = (layout_type || layout_type === 0) && (layout_type !== +this.layout.type);\r\n if (needToChangeLayout) {\r\n await this.changeLayout(layout_type, true)\r\n }\r\n if (this.props.setFirstLoadedPreset) {\r\n this.props.setFirstLoadedPreset(roomPreset.id);\r\n }\r\n await this.layout.setItemsFromBvState(\r\n roomPreset, isCartAndUserStatedUpdateNeeded, (bvState) => bvState, true\r\n )\r\n }\r\n }\r\n\r\n getQtCategoriesCommon = () => {\r\n return (this.props.qtCategoriesRequested && this.props.qtCategoriesRequested.includes(this.layout.visualizerType))\r\n ? Promise.resolve([])\r\n : getQtCategories(this.layout.getCurrentLayoutAbbreviation())\r\n }\r\n\r\n setNewBvState = (bvState, firstLoad = false) => {\r\n this.layout.initialized = false;\r\n if (!firstLoad) {\r\n loaderEnable();\r\n }\r\n this.layout.setActiveFeaturesFromObject(bvState, false, false, true, true);\r\n if (!firstLoad) {\r\n this.handleRefresh();\r\n loaderDisable();\r\n }\r\n };\r\n\r\n resetEverything = () => {\r\n this.layout.resetEverything();\r\n if (this.navBar && this.navBar.resetWizardSteps) {\r\n this.navBar.resetWizardSteps()\r\n }\r\n this.handleRefresh();\r\n };\r\n\r\n goToCart = () => {\r\n this.props.toggleBathroomVisualizerOpen(false);\r\n this.props.setCameFromPage('visualizer');\r\n if (!window.location.href.includes('shoppingcart')) {\r\n hashHistory.push('shoppingcart');\r\n }\r\n };\r\n\r\n onBvLoad = () => {\r\n this.props.setCanvasId(this.state.canvasId);\r\n if (IS_QKB_UI && document.kvConfig.visualizerOnly) {\r\n this.props.toggleBathroomVisualizerOpen(true);\r\n if (!window.location.href.includes(\"visualizer\")) {\r\n hashHistory.push(\"visualizer\");\r\n }\r\n } else {\r\n const layoutParts = this.layout.getFeatures()\r\n .filter(parentGroup => parentGroup.categoryEnabled)\r\n .map((parentGroup) => parentGroup.partName);\r\n this.props.setLayoutDataParts(layoutParts);\r\n this.props.setDefaultSelectionGroup(layoutParts[0]);\r\n $(window).trigger(ActionTypes.UPDATE_ALL_ITEMS);\r\n }\r\n if (IS_QKB_UI && !(document.kvConfig.jobId && document.kvConfig.jobId > 0) && !Config.isVisualizerManagement()) {\r\n this.askToRestore(this.layout.localStorageKey);\r\n }\r\n };\r\n\r\n checkShareUrl = async () => {\r\n let design = new URLSearchParams(window.location.search).get(\"design\");\r\n if (design && (design[design.length - 1] === \"/\")) {\r\n design = design.slice(0, -1);\r\n }\r\n if (design) {\r\n const jobResponse = await getJobIdPreset(design);\r\n console.log(\"jobResponse for share URL design #\" + design, jobResponse);\r\n if (jobResponse && jobResponse.data && Array.isArray(jobResponse.data.records) && jobResponse.data.records.length) {\r\n this.loadByTheDefault = jobResponse.data.records[0].data;\r\n await parseJobIdResponse(jobResponse.data, true);\r\n }\r\n }\r\n };\r\n\r\n handleRefresh = () => {\r\n this.forceUpdate();\r\n };\r\n\r\n renderGreenLayerByZindex = (zIndex) => {\r\n this.imageCanvas.renderGreenLayerByZindex(zIndex)\r\n };\r\n\r\n setHoveredLayer = (event) => {\r\n this.imageCanvas.setHoveredLayer(event)\r\n };\r\n\r\n setCanvasClass = (canvasClass, removeAllClasses) => {\r\n if (this.imageCanvas) {\r\n this.imageCanvas.imageCanvasScroll(canvasClass, removeAllClasses, this.layout.type, this.layout.scene);\r\n }\r\n };\r\n\r\n changeMessageBoxState = (newMessageBoxState) => {\r\n this.setState({\r\n messageBoxState: {...this.state.messageBoxState, ...newMessageBoxState}\r\n })\r\n };\r\n\r\n setActiveFeature = (activeFeature) => { // this is needed for lock screen. we can't get rid of that\r\n this.setState({\r\n activeFeature\r\n })\r\n };\r\n\r\n setDemoPointClicked = () => {\r\n this.setState({\r\n demoPointClicked: true\r\n })\r\n };\r\n\r\n loadQtCategoriesFeatures = (qtCategories) => {\r\n const featureGroupsWithoutFeatures = this.layout.loadFeatureGroupFeatures(qtCategories);\r\n // console.log(\"featureGroupsWithoutFeatures\", featureGroupsWithoutFeatures);\r\n const {wizardList, wizardIsActive} = store.getState().wizardState;\r\n if (featureGroupsWithoutFeatures.length && !IS_LIXIL_UI && !showWizardInsteadOfQT(wizardList, wizardIsActive)) {\r\n if (this.layout.isNewLayout) {\r\n const toRequestFeatureGroups = featureGroupsWithoutFeatures.filter(subPart => {\r\n return !subPart.part.nextFeaturesPageToLoadArray\r\n || !this.layout.hasNavItemsLength(subPart, {}, \"\", null, true, [])\r\n });\r\n // prevent requesting countertops and backsplashes since the preset is not applied yet!\r\n Promise.all(toRequestFeatureGroups.map(subPart => {\r\n return getAdditionalFeaturesOnScroll(subPart.part, true)\r\n })).then(() => {\r\n $(window).trigger(ActionTypes.UPDATE_ALL_ITEMS)\r\n })\r\n } else featureGroupsWithoutFeatures.forEach(sPart => {\r\n this.checkIfAllFeaturesReceived(sPart, null, () => {\r\n $(window).trigger(ActionTypes.UPDATE_ALL_ITEMS);\r\n }, false)\r\n })\r\n }\r\n };\r\n\r\n finishLoading = async () => {\r\n store.dispatch(setShopPageLoaded(true)); // lixil ui don't do any requests on the shop page\r\n store.dispatch(setAllowRouting(true)); // lixil ui enable routing\r\n await this.getContractSignDocument(); // no need for now, we are keeping existing structure (first save, then - contract)\r\n await this.getAssignQuoteCustomersAndEmployees(); // no need for now, we are keeping existing structure (first save, then - contract)\r\n if (IS_OFFLINE_MODE) {\r\n await loadAllAsyncScripts()\r\n }\r\n if (IS_LOOK_JOURNEY) {\r\n let loadByTheDefault = this.loadByTheDefault && this.loadByTheDefault.id === this.props.activePreset ? this.loadByTheDefault : null\r\n if (!loadByTheDefault || !loadByTheDefault.alreadyRestored) {\r\n setTimeout(() => {\r\n const {qtActiveCategory} = store.getState().qtState;\r\n const cartItems = createCartList(qtActiveCategory, loadByTheDefault);\r\n if (cartItems.length) {\r\n store.dispatch(addToCart(cartItems))\r\n }\r\n }, 1000) // is needed to finish render routing first (to create cart list from already selected features)\r\n }\r\n }\r\n\r\n if (this.props.initialFlowStep === 3) {\r\n this.changeLayout(this.props.initialFlowRoomLayout);\r\n this.tryToSetSelectedRoom();\r\n } else {\r\n console.log('initialized', this.layout);\r\n this.layout.initialized = true;\r\n this.handleRefresh();\r\n if (!this.props.bvOpened || IS_LIXIL_UI || !this.layout.getLayers().length) {\r\n loaderDisable();\r\n }\r\n }\r\n\r\n removeLoadingElements(\"Visualizer\");\r\n\r\n if (this.props.visualizersLoaded.includes(this.layout.visualizerType)) {\r\n this.setSubscribers();\r\n return false\r\n }\r\n this.setIframeMessaging();\r\n this.props.addVisualizersLoaded(this.layout.visualizerType);\r\n if (this.needToSaveQuote || window.location.href.includes(\"saveOnLoad=true\")) {\r\n setTimeout(() => {\r\n saveQuote({submit: true, showReceipt: false})\r\n .then((saveJobResponse) => {\r\n if (this.props.updateCanvasCount) {\r\n this.props.updateCanvasCount(); // this is fixing the bug on mobile, after return from Grohe Register page the canvas is empty(white)\r\n }\r\n if (window.location.href.includes(\"saveOnLoad=true\") && window.parent) {\r\n window.parent.postMessage({\r\n action: VISUALIZER_MANAGEMENT_ACTIONS.visualizerIsSaved,\r\n saveJobResponse,\r\n }, \"*\");\r\n }\r\n });\r\n }, 0)\r\n }\r\n setTimeout(() => {\r\n if (!Object.keys(this.layout.allDbFeatures).length) {\r\n loaderDisable();\r\n renderErrorPopup(\"No Features Available\");\r\n }\r\n }, 1000)\r\n if (IS_LOOK_JOURNEY && (!document.kvConfig.isBackend || !getLocalStorageItem(LOCAL_STORAGE_KEYS.introVisited))\r\n && this.layout.isNewLayout && !document.kvConfig.jobId) { // always for client mode\r\n store.dispatch(setLookOverlayOpened(LOOK_OVERLAYS.intro));\r\n }\r\n };\r\n\r\n getContractSignDocument = async () => {\r\n\r\n const contractsList = await getContracts(); // set empty array to show sign route\r\n\r\n if (IS_OFFLINE_MODE && shouldUseContractSigning(this.props.fabricatorSettings, null, true)) {\r\n await getOfflineReceiptImages(); // cache images from the receipt\r\n await setContractBlobs(contractsList, 0, true);\r\n // const documentResult = await JsonApi.getDocumentForFabricator();\r\n // if (documentResult && documentResult.data && documentResult.data.base64PDF) {\r\n // const responseFetch = await fetch(\"data:application/pdf;base64,\" + documentResult.data.base64PDF);\r\n // const blob = await responseFetch.blob();\r\n // // console.log(\"responseFetch\", blob);\r\n // const jobDocumentUrl = URL.createObjectURL(blob);\r\n // // console.log(\"createdBlobDocument\", jobDocumentUrl);\r\n // store.dispatch(setContractBlob(jobDocumentUrl));\r\n // }\r\n }\r\n }\r\n\r\n getAssignQuoteCustomersAndEmployees = async () => {\r\n if (IS_OFFLINE_MODE && document.kvConfig.isBackend && !document.kvConfig.visualizerOnly) {\r\n const custAndEmpResponse = await JsonApi.getCustomersAndEmployees();\r\n if (custAndEmpResponse && custAndEmpResponse.data && (custAndEmpResponse.data.clients || custAndEmpResponse.data.employees)) {\r\n store.dispatch(setAssignQuoteOfflineData({\r\n assignQuoteOfflineCustomers: (custAndEmpResponse.data.clients || []).filter(client => client.fullName && client.email),\r\n assignQuoteOfflineEmployees: (custAndEmpResponse.data.employees || []).filter(employee => employee.fullName),\r\n }));\r\n }\r\n }\r\n }\r\n\r\n tryToSetSelectedRoom = () => {\r\n const roomChosen = store.getState().initialFlowState.initialFlowRoom;\r\n const {activeQuoteIndex} = store.getState().quotesState;\r\n if (this.layout.qtCategories && roomChosen) {\r\n this.layout.qtCategories.forEach((qtCategory => {\r\n if (qtCategory.subParts) {\r\n qtCategory.subParts.forEach((subPart) => {\r\n if (subPart.part.partName === \"Room\") {\r\n if (subPart.part.features) {\r\n const selectedRoomFeature = subPart.part.features.find(feature => feature.partName === roomChosen);\r\n if (selectedRoomFeature) {\r\n subPart.part.activeFeature = selectedRoomFeature;\r\n subPart.part.firstClick[activeQuoteIndex] = true;\r\n }\r\n }\r\n }\r\n })\r\n }\r\n }))\r\n }\r\n };\r\n\r\n askToRestore = (localStorageKey) => {\r\n try {\r\n const bvState = JSON.parse(window.localStorage.getItem(localStorageKey));\r\n if (bvState) {\r\n this.changeMessageBoxState({\r\n visible: true,\r\n message: \"messageBox.restoreSessionTitle\",\r\n buttons: [{\r\n text: \"messageBox.buttonNo\",\r\n color: \"blue\",\r\n click: () => {\r\n this.changeMessageBoxState({visible:false});\r\n window.localStorage.removeItem(localStorageKey);\r\n }\r\n },{\r\n text: \"messageBox.buttonYes\",\r\n color: \"green\",\r\n click: this.applyStoredItems\r\n }]\r\n });\r\n }\r\n } catch (ex) { console.log(\"localStorage exception\", ex); }\r\n };\r\n\r\n checkToShowTutorial = () => {\r\n return (this.props.bvOpened || this.props.bvVisited) && this.props.visualizerTutorialIsOpened\r\n && this.layout.initialized && !this.props.visualizerTutorialFinished && this.props.cookieAccepted\r\n && !this.state.messageBoxState.visible;\r\n }\r\n\r\n}\r\n","import React from 'react';\r\nimport $ from \"jquery\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {\r\n setMaterialsTutorialFinished,\r\n setVisualizerTutorialFinished, setVisualizerTutorialStep,\r\n showMaterialsTutorial,\r\n showVisualizerTutorial\r\n} from \"../../actions/tutorialFunctions\";\r\nimport Tutorial from \"./tutorial\";\r\n// import ActionTypes from \"../../misc/actionTypes\";\r\n// import {ContentType} from \"../visComponents/constants\";\r\n\r\nclass VisualizerTutorial extends Tutorial {\r\n\r\n static propTypes = {\r\n isMobile: PropTypes.bool.isRequired\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n ringStyles: {\r\n left: 0,\r\n top: 0,\r\n }\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n let nextStep = this.props.visualizerTutorialStep;\r\n if (document.kvConfig.visualizerOnly && !this.props.visualizerTutorialStep) {\r\n this.props.setVisualizerTutorialStep(1);\r\n nextStep = 1;\r\n } else if (nextStep === 2 && !this.props.isMobile) {\r\n this.props.setVisualizerTutorialStep(3);\r\n nextStep = 3;\r\n }\r\n if (nextStep === 3) {\r\n if (this.props.fabricatorSettings.enableSharing) {\r\n $(\".tutorial-overlay--visualizer\").fadeIn(300);\r\n this.showTutorialStep(nextStep);\r\n } else {\r\n this.exitTutorial(true);\r\n }\r\n } else {\r\n $(\".tutorial-overlay--visualizer\").fadeIn(300);\r\n this.showTutorialStep(nextStep);\r\n }\r\n };\r\n\r\n showTutorialStep = (nextStep = this.props.visualizerTutorialStep) => {\r\n switch (nextStep) {\r\n case 0: {\r\n this.scrollAndHighLightRing(\".mainbuttons .mobilebutton--back-to-quote\");\r\n break;\r\n }\r\n case 1: {\r\n if (this.props.isMobile) {\r\n this.scrollAndHighLightRing(\".mainbuttons .mobilebutton--design\", 0);\r\n } else {\r\n $(\"html, body\").animate({scrollTop: 0}, 500, () => {\r\n const roomLayoutsOrIdeas = this.getRoomLayoutsOrIdeasStepLogic();\r\n if (roomLayoutsOrIdeas.selector) {\r\n this.changeHighlightRingPosition(roomLayoutsOrIdeas.selector);\r\n }\r\n $(\".tutorial-step\").fadeIn(300)\r\n });\r\n }\r\n break;\r\n }\r\n case 3: {\r\n // if (this.props.isMobile) {\r\n // $(document).trigger(ActionTypes.OPEN_MOBILE_NAVIGATION); // open navigation\r\n // $(document).trigger(ActionTypes.CHANGE_MOBILE_MENU_CONTENT_TYPE, [ContentType.Layout]); // set navigation type\r\n // } else {\r\n // this.scrollAndHighLightRing(\".mainbuttons .mobilebutton--share\");\r\n // }\r\n this.scrollAndHighLightRing(\".mainbuttons .mobilebutton--share\");\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n scrollAndHighLightRing = (selector, scrollTop = document.body.scrollHeight) => {\r\n $(\"html, body\").animate({scrollTop}, 500, () => {\r\n this.changeHighlightRingPosition(selector);\r\n $(\".tutorial-step__ring, .tutorial-step\").fadeIn(300, () => {\r\n if (this.props.isMobile) {\r\n setTimeout(() => {\r\n this.changeHighlightRingPosition(selector);\r\n }, 300)\r\n }\r\n })\r\n });\r\n };\r\n\r\n handleNextStepClick = () => {\r\n const nextStep = this.props.visualizerTutorialStep + 1;\r\n this.props.setVisualizerTutorialStep(nextStep);\r\n switch (nextStep) {\r\n case 1:\r\n this.exitTutorial();\r\n break;\r\n case 2: {\r\n if (this.props.isMobile) {\r\n setTimeout(() => {\r\n this.changeHighlightRingPosition(\".des .mobilebutton--layout\");\r\n }, 500)\r\n } else {\r\n this.exitTutorial();\r\n }\r\n break;\r\n }\r\n case 3: {\r\n if (this.props.isMobile) {\r\n this.changeHighlightRingPosition(\".mainbuttons .mobilebutton--share\");\r\n } else {\r\n this.exitTutorial(true);\r\n }\r\n break;\r\n }\r\n }\r\n };\r\n\r\n exitTutorial = (forever) => {\r\n $(\".tutorial-overlay--visualizer\").fadeOut(300, () => {\r\n this.props.showVisualizerTutorial(false);\r\n if (forever) {\r\n this.props.setMaterialsTutorialFinished(true);\r\n this.props.setVisualizerTutorialFinished(true);\r\n try {\r\n window.localStorage.setItem(\"materials_tutorial_finished\", true);\r\n window.localStorage.setItem(\"visualizer_tutorial_finished\", true);\r\n } catch (ex) { console.log(\"localStorage exception\", ex); }\r\n }\r\n });\r\n };\r\n\r\n getHighLightButton = () => {\r\n switch (this.props.visualizerTutorialStep) {\r\n case 0: {\r\n return (\r\n \r\n )\r\n }\r\n case 1: {\r\n if (this.props.isMobile) {\r\n return (\r\n \r\n )\r\n }\r\n return this.getRoomLayoutsOrIdeasStepLogic().buttonComponent\r\n }\r\n case 2: {\r\n return (this.props.isMobile) ? (\r\n \r\n ) : null\r\n }\r\n case 3: {\r\n return (\r\n \r\n )\r\n }\r\n default:\r\n return null\r\n }\r\n };\r\n\r\n getRoomLayoutsOrIdeasStepLogic = () => {\r\n const existingRoomLayout = document.querySelector(\".tab.tab--room-layout\");\r\n if (existingRoomLayout) {\r\n return {\r\n selector: \".nav-wrapper__tabs .tab.tab--room-layout\",\r\n buttonComponent: (\r\n
    \r\n \r\n \r\n \r\n
    \r\n ),\r\n mainTranslate: \"roomLayout\",\r\n }\r\n }\r\n const existingRoomIdeas = document.querySelector(\".tab.tab--room-ideas\");\r\n if (existingRoomIdeas) {\r\n return {\r\n selector: \".nav-wrapper__tabs .tab.tab--room-ideas\",\r\n buttonComponent: (\r\n
    \r\n \r\n \r\n \r\n
    \r\n ),\r\n mainTranslate: \"roomIdeas\",\r\n }\r\n }\r\n return {\r\n selector: \"\",\r\n mainTranslate: null,\r\n buttonComponent: null\r\n }\r\n }\r\n\r\n render() {\r\n const ringStyles = this.state.ringStyles;\r\n const texts = (this.props.isMobile) ? \"mobile\" : \"desktop\";\r\n const highlightButton = this.getHighLightButton();\r\n const mainTextId = ((this.props.visualizerTutorialStep === 1) && !this.props.isMobile\r\n && this.getRoomLayoutsOrIdeasStepLogic().mainTranslate === \"roomIdeas\")\r\n ? `tutorials.visualizerPage.${texts}.step${this.props.visualizerTutorialStep}b`\r\n : `tutorials.visualizerPage.${texts}.step${this.props.visualizerTutorialStep}`;\r\n const showText = !(this.props.visualizerTutorialStep === 2 && !this.props.isMobile);\r\n const showNextButton = this.props.visualizerTutorialStep < 3 && showText;\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    \r\n {showText ? : null}\r\n

    \r\n
    \r\n {showText ? (\r\n \r\n ) : null}\r\n {showNextButton ? (\r\n \r\n ) : null}\r\n
    \r\n
    \r\n \r\n {highlightButton ? (\r\n
    \r\n {highlightButton}\r\n
    \r\n ) : null}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {settings} = store.fabricatorState;\r\n return {\r\n windowWidth: store.serverState.windowWidth,\r\n visualizerTutorialStep: store.tutorialState.visualizerTutorialStep,\r\n fabricatorSettings: settings,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n showMaterialsTutorial,\r\n setMaterialsTutorialFinished,\r\n showVisualizerTutorial,\r\n setVisualizerTutorialFinished,\r\n setVisualizerTutorialStep\r\n})(VisualizerTutorial);\r\n","import React from \"react\";\r\nimport {FormattedHTMLMessage} from \"react-intl\";\r\nimport {connect} from \"react-redux\";\r\n\r\nconst Copyright = (props) => {\r\n\r\n const {fabricatorData} = props;\r\n const date = new Date();\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n fabricatorData: store.fabricatorState\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(Copyright)\r\n","import React from \"react\";\r\n\r\nimport Misc from './../../misc/misc';\r\nimport {getMousePos, requestAnimFrame, isTouchDevice} from \"../../misc/utils\";\r\nimport {isIE} from \"../../misc/helpers\";\r\nimport {loaderDisable} from \"../ui/loaderView\";\r\nimport enhanceCanvas from \"./canvasEnhancements\";\r\n// import {UseFullSizeImages} from \"../../config\";\r\nimport {getBackgroundLayers} from \"../../misc/getCanvasImageFromLayout\";\r\nimport ImageCanvasCommon from \"./imageCanvasCommon\";\r\n\r\n// import { getHoverZonesForPreset, getHoveringZone, hoverImages } from \"./imageCanvasTouchZones\";\r\n\r\nexport default class ImageCanvasCommonNew extends ImageCanvasCommon {\r\n\r\n finishDraw = (images, layers, alreadyRenderedImages, errorImages, callback) => {\r\n clearTimeout(this.id);\r\n this.id = 0;\r\n let copyImages = null;\r\n\r\n const {width, height} = this.props;\r\n\r\n // const fullImagesFactor = UseFullSizeImages ? 100 : 54;\r\n\r\n if (this.props.useMouseHovering && (this.shouldUpdateGreenZone || !this.state.layersHoverings.length)) {\r\n copyImages = [...images];\r\n }\r\n\r\n const backgroundLayers = getBackgroundLayers(layers, null, true);\r\n\r\n // console.log(\"layers\", layers);\r\n\r\n if (backgroundLayers.length) { // draw backgrounds first\r\n this.backCtxBg.clearRect(0, 0, width, height); // clear previous\r\n\r\n images.forEach((imageObject) => {\r\n if (imageObject.src.includes(\"data:image\") || errorImages.includes(imageObject.src)) {\r\n return\r\n }\r\n const layer = backgroundLayers.find(layer => layer.image === imageObject.src);\r\n if (layer) {\r\n this.drawImage(layer, imageObject, this.backCtxBg, width, height)\r\n }\r\n imageObject = null;\r\n });\r\n enhanceCanvas(this.canvasBg);\r\n this.backCtx.drawImage(this.canvasBg, 0, 0, width, height, 0, 0, width, height);\r\n const greenImage = images.find((imageObject) => imageObject.src.includes(\"data:image\"));\r\n if (greenImage) {\r\n const layer = backgroundLayers.find(layer => layer.image === greenImage.src);\r\n if (layer) {\r\n this.drawImage(layer, greenImage, this.backCtx, width, height)\r\n }\r\n }\r\n }\r\n\r\n images.forEach((loadedImage) => {\r\n if (errorImages.includes(loadedImage.src)) {\r\n return\r\n }\r\n const layer = layers.find(layers => layers.image === loadedImage.src);\r\n if (layer && (!backgroundLayers.length || (layer.zIndex < backgroundLayers[backgroundLayers.length - 1].zIndex))) {\r\n this.drawImage(layer, loadedImage, this.backCtx, width, height)\r\n }\r\n loadedImage = null;\r\n });\r\n\r\n // this.ctx.drawImage(this.backCtx.canvas, 0, 0);\r\n requestAnimFrame(this.ctx.drawImage(this.backCtx.canvas, 0, 0));\r\n\r\n if (this.props.useMouseHovering) {\r\n const isMobile = Misc.isMobile() || isTouchDevice();\r\n if (!isMobile && !isIE() && !this.state.mouseMoveSet && this.canvas) {\r\n this.setOnMouseMove();\r\n }\r\n this.setState({\r\n alreadyRenderedImages\r\n });\r\n if (this.shouldUpdateGreenZone || !this.state.layersHoverings.length) {\r\n this.setLayersHoverings(layers, copyImages, errorImages)\r\n }\r\n }\r\n\r\n if (!window.requestInProcess) {\r\n if (this.props.setShowCanvasLoader) {\r\n this.props.setShowCanvasLoader(false)\r\n } else {\r\n this.props.disableLoader ? this.props.disableLoader() : loaderDisable();\r\n }\r\n }\r\n\r\n // window.t1 = performance.now();\r\n // console.log(\"Call to doSomething took \" + (window.t1 - window.t0) + \" milliseconds.\");\r\n\r\n if (callback) {\r\n callback()\r\n }\r\n };\r\n\r\n getGliaImage = () => {\r\n return (\r\n
    \r\n this.canvasImg = el} alt=\"\" id={this.props.canvasId + \"Img\"}\r\n className=\"canvas-co-image blurred\" />\r\n
    \r\n )\r\n };\r\n\r\n nonTransparentPixelHovered = (mousePosArray, layerHovering) => {\r\n const x1 = layerHovering.layer.cropCoords ? layerHovering.layer.cropCoords[0] : layerHovering.layerDimensions.polygonArray[0][0];\r\n const y1 = layerHovering.layer.cropCoords ? layerHovering.layer.cropCoords[1] : layerHovering.layerDimensions.polygonArray[0][1];\r\n return mousePosArray.some(mousePos => {\r\n let pixelHovered = null;\r\n try {\r\n pixelHovered = layerHovering.context2D.getImageData(\r\n (((mousePos.x / this.canvas_scale) / this.state.dimensions.width * this.props.width)) - x1,\r\n (((mousePos.y / this.canvas_scale) / this.state.dimensions.height * this.props.height)) - y1,\r\n 1,\r\n 1,\r\n {willReadFrequently: true}).data[3]\r\n } catch (e) {\r\n console.log(\"can't find hovered pixel\",\r\n layerHovering.context2D,\r\n (((mousePos.x / this.canvas_scale) / this.state.dimensions.width * this.props.width)) - x1,\r\n (((mousePos.y / this.canvas_scale) / this.state.dimensions.height * this.props.height)) - y1\r\n );\r\n }\r\n return pixelHovered > 120\r\n })\r\n }\r\n\r\n setHoveredLayer = (evt) => {\r\n\r\n if (window.touchMove) {\r\n return false\r\n }\r\n\r\n if (this.pinchZoom) {\r\n this.canvas_scale = this.pinchZoom.getScale();\r\n if (this.canvas_scale !== 1) {\r\n return false\r\n }\r\n }\r\n\r\n const {layout} = this.props;\r\n const canvas = this.canvas;\r\n let mousePos = getMousePos(evt, canvas);\r\n let hovered = false;\r\n\r\n // console.log('mousePos', mousePos);\r\n\r\n if (this.pinchZoom) {\r\n this.canvas_scale = this.pinchZoom.getScale();\r\n }\r\n\r\n if (mousePos && (window.innerWidth < 480)) { // rotated version\r\n let temp = mousePos.x;\r\n // noinspection JSSuspiciousNameCombination\r\n mousePos.x = mousePos.y;\r\n mousePos.y = this.canvas.offsetHeight - temp;\r\n // console.log('mousePos2', mousePos);\r\n }\r\n\r\n if (this.state.layersHoverings.length) {\r\n let i = 0;\r\n for (i; i < this.state.layersHoverings.length; i++) {\r\n const layerHovering = this.state.layersHoverings[i];\r\n if ( mousePos\r\n && layerHovering\r\n && layerHovering.layerDimensions\r\n && !this.layerIsExcludedFromHover(layerHovering.layer, layout)\r\n // && pnpoly(layerHovering.layerDimensions.polygonArray, mousePos)\r\n ) {\r\n let mousePosArray = [mousePos];\r\n if (layout.checkMorePointsPartIds && layout.checkMorePointsPartIds.includes(layerHovering.layer.partId)) {\r\n for (let k = 1; k <= 20; k++) {\r\n mousePosArray = [\r\n ...mousePosArray,\r\n {x: mousePos.x - k, y: mousePos.y - k},\r\n {x: mousePos.x + k, y: mousePos.y - k},\r\n {x: mousePos.x - k, y: mousePos.y + k},\r\n {x: mousePos.x + k, y: mousePos.y + k},\r\n {x: mousePos.x - k, y: mousePos.y},\r\n {x: mousePos.x + k, y: mousePos.y},\r\n {x: mousePos.x, y: mousePos.y - k},\r\n {x: mousePos.x, y: mousePos.y + k},\r\n ]\r\n }\r\n }\r\n // console.log(\"checkMorePointsPartIds\", mousePosArray);\r\n if (this.nonTransparentPixelHovered(mousePosArray, layerHovering)) {\r\n hovered = true;\r\n document.hoveredLayer = layerHovering.layer;\r\n document.hoveredMousePos = mousePos;\r\n if (!isIE() && (this.activeGreenZoneIndex !== layerHovering.layer.zIndex)) {\r\n // console.log('layerHovering active = ', layerHovering);\r\n this.activeGreenZoneIndex = layerHovering.layer.zIndex;\r\n this.renderGreenLayer(layerHovering);\r\n }\r\n\r\n break; // break for...of loop\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!hovered) {\r\n document.hoveredLayer = null;\r\n this.draw(this.state.layers); // reload all layers without hovered\r\n }\r\n\r\n };\r\n\r\n renderGreenLayerByZindex = (zIndex, partId) => {\r\n if (!isIE()) {\r\n const neededLayerHovering = this.state.layersHoverings.find((layerHovering) => {\r\n if (partId) {\r\n return layerHovering.layer.zIndex === zIndex && layerHovering.layer.partId === partId\r\n }\r\n return layerHovering.layer.zIndex === zIndex\r\n });\r\n neededLayerHovering ? this.renderGreenLayer(neededLayerHovering, true) : this.draw(this.state.layers)\r\n }\r\n };\r\n\r\n drawImage = (layer, imageObject, canvasContext, width, height) => {\r\n try {\r\n if (layer.cropCoords) {\r\n let layerWidth = layer.cropCoords[2] - layer.cropCoords[0];\r\n let layerHeight = layer.cropCoords[3] - layer.cropCoords[1];\r\n canvasContext.drawImage(imageObject, 0, 0, layerWidth, layerHeight, layer.cropCoords[0], layer.cropCoords[1], layerWidth, layerHeight);\r\n } else if (layer.layerDimensions) {\r\n const dim = layer.layerDimensions;\r\n // console.log('yep', dim.width, dim.height, dim.polygonArray[0][0], dim.polygonArray[0][1], dim.width, dim.height);\r\n const firstX = layer.isGreenHovering ? 0 : dim.polygonArray[0][0]; // green is already cropped\r\n const firstY = layer.isGreenHovering ? 0 : dim.polygonArray[0][1]; // green is already cropped\r\n canvasContext.drawImage(imageObject, firstX, firstY, dim.width, dim.height, dim.polygonArray[0][0], dim.polygonArray[0][1], dim.width, dim.height);\r\n // } else if (loadedImage.coords) {\r\n // loadedImage.width = loadedImage.width*fullImagesFactor/100;\r\n // loadedImage.height = loadedImage.height*fullImagesFactor/100;\r\n // const max_x = loadedImage.coords.max_x*fullImagesFactor/100;\r\n // const min_x = this.props.width*loadedImage.coords.min_x;\r\n // const min_y = this.props.height*loadedImage.coords.min_y;\r\n // const max_y = loadedImage.coords.max_y*fullImagesFactor/100;\r\n // const width = max_x - min_x;\r\n // const height = max_y - min_y;\r\n // console.log('width', width);\r\n // console.log('height', height);\r\n // console.log('min_x', min_x);\r\n // console.log('min_y', min_y);\r\n // console.log('max_x', max_x);\r\n // console.log('max_y', max_y);\r\n // this.backCtx.drawImage(loadedImage, 0, 0, loadedImage.width, loadedImage.height, min_x, min_y, loadedImage.width, loadedImage.height);\r\n } else {\r\n // imageObject.width = width;\r\n // imageObject.height = height;\r\n canvasContext.drawImage(imageObject, 0, 0, width, height);\r\n }\r\n } catch (e) {\r\n console.log(\"canvas context cant draw image\", imageObject);\r\n }\r\n }\r\n\r\n onMouseDown = (event) => {\r\n if (this.pinchZoom && this.pinchZoom.onMouseDown) {\r\n this.pinchZoom.onMouseDown(event)\r\n }\r\n }\r\n\r\n onMouseMove = (event) => {\r\n if (this.pinchZoom && this.pinchZoom.onMouseMove) {\r\n this.pinchZoom.onMouseMove(event)\r\n }\r\n }\r\n\r\n onMouseUp = (event) => {\r\n if (this.pinchZoom && this.pinchZoom.onMouseUp) {\r\n this.pinchZoom.onMouseUp(event, this.props.lookCanvasClick) // we should be here always // callback is passed to execute after drag n drop\r\n } else if (this.props.lookCanvasClick) {\r\n this.props.lookCanvasClick()\r\n }\r\n }\r\n\r\n render() {\r\n const style = {};\r\n if (this.props.transform) {\r\n style.transform = this.props.transform\r\n }\r\n return (\r\n //
    \r\n
    \r\n {/*
    */}\r\n {/* {this.pinchZoom ? this.pinchZoom.el.style.transform + \" // \" + this.pinchZoom.container.style.transform : null}*/}\r\n {/*
    */}\r\n {this.props.useMouseHovering ? this.getGliaImage() : null}\r\n this.canvas = el}\r\n className={\"canvas-el\" + (this.props.useMouseHovering ? \" canvas-el--pointer\" : \"\")}\r\n onMouseDown={this.onMouseDown}\r\n onMouseMove={this.onMouseMove}\r\n onMouseUp={this.onMouseUp}\r\n onDoubleClick={null}\r\n id={this.props.canvasId}\r\n width={this.props.width}\r\n height={this.props.height}\r\n // onTouchStart={this.moveStart}\r\n // onTouchMove={this.move}\r\n // onTouchEnd={this.moveEnd}\r\n data-mobile={Misc.isMobile() || isTouchDevice()}\r\n style={style} />\r\n
    \r\n );\r\n }\r\n\r\n}\r\n","import {PartMenuType} from \"../../visComponents/constants\";\r\nimport {iCmp} from \"../../../misc/utils\";\r\nimport Layer from \"../../visComponents/layer\";\r\nimport {LayoutType, METADATA} from \"./constants\";\r\nimport PartCommon from \"../../visComponents/partCommon\";\r\n\r\nexport class Part extends PartCommon {\r\n\r\n constructor(isParent, isChild, menuType) {\r\n super();\r\n if (isChild || (isParent && menuType === PartMenuType.Simple)) {\r\n this.featuresList = {};\r\n this.featuresPartsList = {};\r\n this.modulePartsList = {};\r\n Object.keys(LayoutType).forEach(layoutName => {\r\n this.featuresList[layoutName] = [];\r\n this.featuresPartsList[layoutName] = [];\r\n this.modulePartsList[layoutName] = [];\r\n });\r\n this.allFeaturesReceived = false;\r\n this.realFeaturesReceived = false; // this prop is need on Scroll (if features count more that 1000)\r\n this.nextFeaturesPageToLoad = 0;\r\n this.activeFeature = null;\r\n this.placeholderFeature = null;\r\n this.shadowFeature = null;\r\n this.placeholderChanged = false;\r\n this.firstClick = {\r\n \"0\": false\r\n };\r\n this.activeLockedFeature = null;\r\n this.activeNotInVisualizerFeature = null; // is needed to display in the QT selected activeNotInVisualizerFeature, but render proper activeFeature layer(for example, countertop)\r\n // name = \"\";\r\n this.visible = true;\r\n this.categoryEnabled = false;\r\n this.layout = null;\r\n this.featureGroupVisible = true; // dashboard's feature group eye ball logic\r\n this.featureGroupEnabled = true; // dashboard's feature group checkbox logic\r\n this.selectedFeaturesHistory = []; // array of strings(names). updated every time item is selected\r\n this.filtersReceived = null; // array of filters values, comes from BE, for ex [1221, 347, 1124]\r\n }\r\n if (isParent) {\r\n this.partThumbnail = '';\r\n this.relatedItems = [];\r\n }\r\n if (!isChild && !isParent) {\r\n this.dbFeature = null;\r\n this.layer = new Layer(\"fireplace\");\r\n this._customDisplayName = null;\r\n this.notesList = {};\r\n }\r\n this.partName = \"\";\r\n }\r\n\r\n set features(featuresList) {\r\n // features can't be set directly, we need to change featuresList array\r\n }\r\n get features() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.featuresList[layout.getCurrentLayoutName()]\r\n }\r\n set featuresParts(featuresList) {\r\n // featuresParts can't be set directly, we need to change featuresPartsList array\r\n }\r\n get featuresParts() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.featuresPartsList[layout.getCurrentLayoutName()]\r\n }\r\n get moduleParts() {\r\n const layout = this.layout || this.getParent().layout;\r\n return this.modulePartsList[layout.getCurrentLayoutName()]\r\n }\r\n\r\n /**\r\n * Checks whether a given for condition matches the needed value (or array of values)\r\n * @param name {string}\r\n * @param value {string || array}\r\n * @returns {int} -1 - no such for condition, 0 - no match, 1 - matches\r\n */\r\n matchesMetaForCondition(name, value) {\r\n return this.metaData[name] && this.metaData[name].some(condValue => {\r\n return condValue === METADATA.ALL || (Array.isArray(value) ? value.some(val => iCmp(condValue, val)) : iCmp(condValue, value))\r\n });\r\n }\r\n\r\n matchesMetaForArrayOfConditions(arrayOfConditions) {\r\n return arrayOfConditions.every((condition) => {\r\n return this.matchesMetaForCondition(condition.propName, condition.propValue);\r\n })\r\n }\r\n}\r\n\r\n\r\n","import * as types from '../actions/actionTypes';\r\n\r\nexport const INITIAL_FLOW_BUTTON_TYPES = {\r\n Quote: \"Quote\",\r\n Design: \"Design\",\r\n};\r\n\r\nconst initialState = {\r\n initialFlowFinished: false, // is set only once to true (to load visualizer)\r\n initialFlowAdditionalRooms: [],\r\n initialFlowType: null,\r\n initialFlowRoom: null,\r\n initialFlowRoomLayout: null,\r\n initialFlowStep: 0,\r\n visualizerNotAvailable: false\r\n};\r\n\r\nexport default function(state = initialState, action){\r\n switch (action.type) {\r\n case types.SET_INITIAL_FLOW_FINISHED:\r\n case types.SET_INITIAL_FLOW_BUTTON:\r\n case types.SET_INITIAL_FLOW_ROOM:\r\n case types.SET_INITIAL_FLOW_ROOM_LAYOUT:\r\n case types.SET_INITIAL_FLOW_STEP:\r\n case types.SET_INITIAL_FLOW_ADDITIONAL_ROOMS:\r\n case types.SET_INITIAL_FLOW_VISUALIZER_NOT_AVAILABLE:\r\n return Object.assign({}, state, {\r\n ...action.payload\r\n });\r\n }\r\n return state;\r\n}\r\n","import React, {useEffect, useRef, useState} from \"react\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport IntlTelInput from \"react-intl-tel-input\";\r\n\r\nimport Config, {IS_QKB_UI} from './../../../config';\r\nimport Misc from \"../../../misc/misc\";\r\nimport {changeUserInfo, changeUserInfoErrors} from \"../../../actions/actionFunctions\";\r\nimport {useIsMounted} from \"../../../misc/helperHooks\";\r\nimport {getPreferredCountries} from \"../../common/twoFactorAuthView\";\r\nimport UserFieldErrors from \"../../popups/userPopup/userFieldsErrors\";\r\nimport OnScreenKeyboard from \"../../common/OnScreenKeyboard/keyboard\";\r\n\r\nconst replaceDialCode = (dialCode, inputValue) => {\r\n const dialWithPlus = \"+\" + dialCode;\r\n if (dialWithPlus.length > 1) {\r\n const charLength = dialWithPlus.length;\r\n if (dialWithPlus === inputValue.slice(0,charLength)) {\r\n inputValue = inputValue.slice(charLength);\r\n }\r\n }\r\n inputValue = inputValue.split(\" \").join(\"\").split(\"-\").join(\"\");\r\n return inputValue\r\n}\r\n\r\nconst LookUserPhoneInput = (props) => {\r\n\r\n const {property, userInfo, changeUserInfo, intl, userInfoErrors, changeUserInfoErrors, placeholder, isUserPopup,\r\n isActive, inputsValidated, fabricatorData} = props;\r\n // const isLowes = fabricatorData.isLowes;\r\n\r\n const inputRef = useRef();\r\n const [defaultValue, ] = useState(userInfo[property]);\r\n const [blurred, setBlurred] = useState(false);\r\n const [focused, setFocused] = useState(false);\r\n const [wasChanged, setWasChanged] = useState(false);\r\n const isMounted = useIsMounted();\r\n const utilsScript = Config.getScriptPath() + \"/libphonenumber.js\";\r\n\r\n // const handleInputBlur = (isValid, value, _this.selectedCountryData, fullNumber, _this.getExtension(value), e) => { // all input tel props params\r\n const handleInputBlur = (isValid, inputValue, ...rest) => {\r\n\r\n let restartInput = false;\r\n setFocused(false);\r\n\r\n const event = rest[3];\r\n if (event && event.relatedTarget && event.relatedTarget.className.includes(\"keyboard-container\")) { // blur from osk keyboard\r\n return\r\n }\r\n\r\n if (!blurred) {\r\n setBlurred(true);\r\n }\r\n const replacedValue = replaceDialCode(userInfo.country.dialCode, inputValue);\r\n if (replacedValue !== inputValue) {\r\n inputValue = replacedValue;\r\n restartInput = true;\r\n }\r\n\r\n const fullNumber = `+${userInfo.country.dialCode} ${inputValue}`;\r\n const errors = getValidationErrors(fullNumber, userInfo.country.iso2.toUpperCase());\r\n // if (!errors.length && !isValid) {\r\n // errors.push(\"assignPopup.errors.phoneIncorrect\")\r\n // }\r\n if (errors.length) {\r\n changeUserInfoErrors({\r\n [property]: errors\r\n })\r\n } else if (!errors.length && userInfoErrors[property]) {\r\n changeUserInfoErrors({\r\n [property]: errors\r\n })\r\n }\r\n // removed this formatting due to incorrect validation ex.(+447862073603)\r\n const formattedPhone = errors[property]\r\n ? Misc.getPhoneFormatted(inputValue, userInfo.country.iso2.toUpperCase())\r\n : inputValue;\r\n console.log(\"handleInputBlur formattedPhone\", formattedPhone);\r\n changeUserInfo({\r\n [property]: formattedPhone\r\n });\r\n if (restartInput && inputRef && inputRef.current && inputRef.current.setInitialState) {\r\n setTimeout(() => {\r\n inputRef.current.setFlag(userInfo.country.iso2, true);\r\n inputRef.current.setNumber(fullNumber);\r\n // inputRef.current.setInitialState();\r\n }, 0)\r\n }\r\n // console.log(\"blur number\", isValid, inputValue);\r\n };\r\n\r\n useEffect(() => {\r\n if (IS_QKB_UI) {\r\n if (isMounted() && isActive) {\r\n handleInputBlur(true, userInfo[property]);\r\n }\r\n } else if (!inputsValidated) {\r\n handleInputBlur(true, userInfo[property]);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [inputsValidated]);\r\n\r\n const getValidationErrors = (currentValue, region) => {\r\n if (fabricatorData.isCaesarStone) {\r\n return []\r\n }\r\n region = region || \"US\";\r\n const errors = [];\r\n if (!currentValue) {\r\n errors.push(\"assignPopup.errors.phoneRequired\");\r\n return errors\r\n }\r\n if (!Misc.isPhoneNumber(currentValue, region)) {\r\n errors.push(\"assignPopup.errors.phoneIncorrect\");\r\n }\r\n return errors\r\n }\r\n\r\n const handleInputFocus = () => {\r\n setFocused(true);\r\n }\r\n\r\n /**\r\n * 5 arguments passed to this callback\r\n * @param a {boolean} // isValid\r\n * @param b {string} // newNumber\r\n * @param c {Object} // countryData\r\n * @param phoneNumber {string} // fullNumber\r\n * @param forceCarrot {boolean} // isExtension\r\n */\r\n const handleChangeNumber = (a, b, c, phoneNumber, forceCarrot = false) => {\r\n phoneNumber = phoneNumber.replace(/[^0-9\\-\\(\\)\\s]/gi, \"\");\r\n /*let prefix = `+${c.dialCode}`;\r\n phoneNumber = phoneNumber.replace(prefix, '');\r\n if(country !== \"auto\" && country.dialCode) {\r\n prefix = `+${country.dialCode}`;\r\n }\r\n if (startsWith(phoneNumber, prefix + ' ') || trim(phoneNumber).length == 0) {\r\n let hasPrefix = phoneNumber.substring(0, prefix.length) == prefix;\r\n if (hasPrefix) phoneNumber = trim(phoneNumber.substring(prefix.length));\r\n phoneNumber = `${prefix} ${phoneNumber}`;\r\n }*/\r\n if (forceCarrot) {\r\n const forceCarrotFunc = () => {\r\n let p = document.getElementById('phone');\r\n p.selectionStart = phoneNumber.length;\r\n p.selectionEnd = phoneNumber.length;\r\n }\r\n window.setTimeout(forceCarrotFunc, 10);\r\n }\r\n if (!c) {\r\n return\r\n }\r\n if ((userInfo.phoneNumber !== phoneNumber) && (userInfo.country.iso2 !== c.iso2) && isMounted()) {\r\n // console.log(\"handleChangeNumber formattedPhone\", c);\r\n // console.log(\"userInfo.phoneNumber\", userInfo.phoneNumber);\r\n // console.log(\"phoneNumber\", phoneNumber);\r\n changeUserInfo({country: c});\r\n }\r\n if (userInfoErrors[property] || blurred || !focused || !wasChanged) {\r\n const errors = getValidationErrors(`+${c.dialCode} ${b}`, c.iso2.toUpperCase());\r\n if (!errors.length || blurred) {\r\n changeUserInfoErrors({\r\n [property]: errors\r\n })\r\n }\r\n }\r\n if (!focused || !wasChanged) { // autofill\r\n const replacedValue = replaceDialCode(c.dialCode, b);\r\n if (replacedValue !== b) {\r\n b = replacedValue;\r\n const fullNumber = `+${c.dialCode} ${b}`;\r\n inputRef.current.setNumber(fullNumber);\r\n }\r\n changeUserInfo({\r\n [property]: b\r\n });\r\n console.log(\"change number when it is not focused\", b, phoneNumber);\r\n }\r\n if (!wasChanged) {\r\n setWasChanged(true);\r\n }\r\n };\r\n\r\n const handleChangeFlag = (currentNumber, selectedCountryData) => {\r\n /*const matches = currentNumber.match(/(\\+\\d{1,4}\\s)/gi);\r\n currentNumber = currentNumber.replace(/\\+\\d{1,4}\\s/gi, '');\r\n\r\n const numberSplitted = currentNumber.split(\"+\"+selectedCountryData.dialCode);\r\n const number = numberSplitted[numberSplitted.length - 1] || \"\";\r\n\r\n currentNumber = (matches && matches.length > 1)\r\n ? `${matches[1]}${currentNumber}`\r\n : `+${selectedCountryData.dialCode} ${number}`;*/\r\n\r\n if (!isActive) {\r\n return // return here because when user came from log in - it was updating userinfo country and was setting empty currentNumber\r\n }\r\n\r\n let newUserInfo = {};\r\n if (currentNumber !== userInfo.phoneNumber) {\r\n newUserInfo.phoneNumber = currentNumber\r\n }\r\n if (selectedCountryData && selectedCountryData.iso2) {\r\n newUserInfo.country = selectedCountryData\r\n }\r\n if (Object.keys(newUserInfo).length) {\r\n // console.log(\"handleChangeFlag!!\", newUserInfo);\r\n changeUserInfo(newUserInfo);\r\n }\r\n if ((userInfoErrors[property] || blurred) && (selectedCountryData && selectedCountryData.iso2)) {\r\n const fullNumber = `+${selectedCountryData.dialCode} ${currentNumber}`;\r\n const errors = getValidationErrors(fullNumber, selectedCountryData.iso2.toUpperCase());\r\n if (!errors.length) {\r\n changeUserInfoErrors({\r\n [property]: errors\r\n })\r\n }\r\n }\r\n };\r\n\r\n const errorsExist = Array.isArray(userInfoErrors[property]) && userInfoErrors[property].length;\r\n\r\n const renderScreenKeyboard = () => {\r\n if (!document.kvConfig.osk) {\r\n return null\r\n }\r\n const keyboardNumberClick = (value) => {\r\n // console.log(\"keyboardNumberChange\", value);\r\n // console.log(\"inputRef\", inputRef);\r\n if (value && value.includes(\".\")) { // phone number can't include dots\r\n return\r\n }\r\n changeUserInfo({ // 1) set redux value\r\n [property]: value\r\n });\r\n // handleChangeNumber(true, value, userInfo.country, value, true); // 2) change flag? not sure if we need this on number click\r\n if (inputRef && inputRef.current) { // 3) set input value by passing fake event\r\n inputRef.current.handleInputChange({\r\n target: {\r\n selectionStart: value.length,\r\n target: inputRef.current.tel,\r\n value,\r\n }\r\n });\r\n }\r\n }\r\n return userInfo.phoneNumber}\r\n setValue={keyboardNumberClick}\r\n onClose={(v) => {\r\n if (!blurred) {\r\n handleInputBlur(true, v)\r\n }\r\n }}\r\n left=\"100%\"\r\n top=\"-57px\"\r\n type=\"numeric\"/>\r\n }\r\n\r\n const IntlInputComponent = (\r\n \r\n )\r\n\r\n if (IS_QKB_UI) {\r\n return (\r\n
    \r\n {IntlInputComponent}\r\n {fabricatorData.isCaesarStone || (isUserPopup && !errorsExist) ? null : *}\r\n \r\n {renderScreenKeyboard()}\r\n
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {IntlInputComponent}\r\n
    \r\n \r\n *\r\n \r\n
    \r\n
    \r\n {errorsExist ? (\r\n

    \r\n \r\n

    \r\n ) : null}\r\n {renderScreenKeyboard()}\r\n
    \r\n )\r\n};\r\n\r\nLookUserPhoneInput.propTypes = {\r\n property: PropTypes.string.isRequired,\r\n inputsValidated: PropTypes.bool.isRequired,\r\n shrink: PropTypes.bool,\r\n restartPhoneInput: PropTypes.func,\r\n placeholder: PropTypes.string,\r\n isUserPopup: PropTypes.bool,\r\n isActive: PropTypes.bool,\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {userInfo, userInfoErrors} = store.userState;\r\n return {\r\n userInfo,\r\n userInfoErrors,\r\n fabricatorData: store.fabricatorState\r\n // assignQuotePopupSearchText: store.assignQuoteState.assignQuotePopupSearchText\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n changeUserInfo,\r\n changeUserInfoErrors\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookUserPhoneInput)\r\n)\r\n","//INITIAL FLOW\r\nimport * as types from \"./actionTypes\";\r\n\r\nexport const setShowUnlockCalculations = (showUnlockCalculations) => ({\r\n type: types.SET_SHOW_UNLOCK_CALCULATIONS,\r\n payload: {showUnlockCalculations}\r\n});\r\n\r\nexport const setUnlockCalculationsStep = (unlockCalculationsStep) => ({\r\n type: types.SET_UNLOCK_CALCULATIONS_STEP,\r\n payload: {unlockCalculationsStep}\r\n});\r\n\r\nexport const showUnlockCalculationsCartItems = (showCartItems) => ({\r\n type: types.SHOW_UNLOCK_CALCULATIONS_CART_ITEM,\r\n payload: {showCartItems}\r\n});\r\n\r\nexport const showUnlockCalculationsTotalItems = (showTotalItems) => ({\r\n type: types.SHOW_UNLOCK_CALCULATIONS_TOTAL_ITEM,\r\n payload: {showTotalItems}\r\n});\r\n\r\nexport const setShowUnlockCalculationsTutorial = (showUnlockCalculationsTutorial) => ({\r\n type: types.SHOW_UNLOCK_CALCULATIONS_TUTORIAL,\r\n payload: {showUnlockCalculationsTutorial}\r\n});\r\n\r\nexport const setUnlockCalculationsTutorialStep = (unlockCalculationsTutorialStep) => ({\r\n type: types.SET_UNLOCK_CALCULATIONS_TUTORIAL_STEP,\r\n payload: {unlockCalculationsTutorialStep}\r\n});\r\n\r\nexport const setUnlockCalculationsTutorialFinished = (unlockCalculationsTutorialIsFinished) => ({\r\n type: types.SET_UNLOCK_CALCULATIONS_TUTORIAL_FINISHED,\r\n payload: {unlockCalculationsTutorialIsFinished}\r\n});\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\n// import SvgIcon from \"@mui/material/SvgIcon\";\r\nimport Grow from '@mui/material/Grow';\r\nimport Popper from '@mui/material/Popper';\r\n// import Button from \"@mui/material/Button\";\r\n// import ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\r\n\r\n// import {setLookIntroStep, setLookOverlayOpened} from \"../../../../actions/lookFunctions\";\r\n// import {LOOK_INTRO_STEPS} from \"../../core/constants\";\r\n// import {LookIconNavigate} from \"../../../common/icons\";\r\n\r\nconst LookIntroPopper = (props) => {\r\n\r\n const {introStep, anchorRef, currentStep, placement, toolTipText = \"\", className, roomIdeasButtonTranslate} = props;\r\n\r\n // const nextButtonClick = () => {\r\n // if (currentStep === LOOK_INTRO_STEPS.review) {\r\n // setLookIntroStep(introStep + 2); // go to exit, skip rooms\r\n // } else if (currentStep === LOOK_INTRO_STEPS.exit) { // exit button - finish\r\n // setLookOverlayOpened(\"\");\r\n // setLookIntroStep(LOOK_INTRO_STEPS.disabled);\r\n // setLocalStorageItem(LOCAL_STORAGE_KEYS.introVisited, true);\r\n // } else {\r\n // setLookIntroStep(introStep + 1);\r\n // }\r\n // };\r\n\r\n return (\r\n \r\n {({ TransitionProps }) => (\r\n \r\n
    \r\n \r\n {/**/}\r\n {/* */}\r\n {/**/}\r\n \r\n \r\n {/*{lastMobileSteps ? null : (*/}\r\n {/* */}\r\n {/*)}*/}\r\n
    \r\n \r\n )}\r\n
    \r\n )\r\n};\r\n\r\nLookIntroPopper.propTypes = {\r\n // anchorRef: PropTypes.oneOfType([\r\n // PropTypes.func,\r\n // PropTypes.shape({ current: PropTypes.elementType })\r\n // ]).isRequired,\r\n anchorRef: PropTypes.object.isRequired,\r\n currentStep: PropTypes.number.isRequired,\r\n placement: PropTypes.string,\r\n toolTipText: PropTypes.string,\r\n roomIdeasButtonTranslate: PropTypes.string,\r\n className: PropTypes.string,\r\n}\r\n\r\nLookIntroPopper.defaultProps = {\r\n placement: \"right\"\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {introStep} = store.lookState;\r\n // const {isMobile} = store.serverState;\r\n return {\r\n introStep,\r\n // isMobile,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n // setLookIntroStep,\r\n // setLookOverlayOpened,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LookIntroPopper)\r\n","import React from \"react\";\r\n\r\nexport const initialContext = {\r\n activeContract: null,\r\n globalContractPage: 1, // pager\r\n activeContractPage: 1, // for current doc\r\n selectedContracts: [],\r\n totalPages: 1,\r\n receiptUrl: \"\", //blobUrl\r\n receiptPages: 0, // if 0 - contracts will start from 1\r\n receiptLayout: null, // for receipt sign\r\n // doc props\r\n showPage: false,\r\n pageRendered: false,\r\n selectedFieldIndex: -1,\r\n}\r\n\r\nconst ContractsContext = React.createContext(initialContext)\r\nexport default ContractsContext;\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport COLOR_THEMES from \"../../../colorThemes\";\r\n\r\n\r\nconst UiIcon = (props) => {\r\n\r\n const {activeTheme, icon, color} = props;\r\n\r\n switch (icon) {\r\n case \"checkmark\":\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n default:\r\n return null\r\n }\r\n}\r\n\r\nUiIcon.propTypes = {\r\n icon: PropTypes.string.isRequired,\r\n color: PropTypes.string\r\n}\r\n\r\nconst mapStateToProps = store => {\r\n const {activeTheme} = store.serverState;\r\n return {\r\n activeTheme\r\n }\r\n};\r\n\r\nexport default connect(mapStateToProps)(UiIcon)\r\n","import clone from 'lodash/clone';\r\n\r\nimport EventManager from \"../../store/sqftEventManager\";\r\nimport config from \"../../store/sqftConfig\";\r\nimport workspace from \"../workspace\";\r\nimport {\r\n getBacksplashArea,\r\n getEdgeLength,\r\n getPointField,\r\n isPointInsideShape,\r\n mmToM\r\n} from \"../../../../helpers/sqftHelper\";\r\nimport ShapeHelper, {getEdgeFeatures} from \"../../../../helpers/shapeHelper\";\r\n//import $ from \"jquery\";\r\nimport {\r\n APPLIANCES_THAT_SHOULD_RENDER_MEASUREMENTS_INSIDE_THE_SHAPE,\r\n MOVABLE_IMAGE_TYPES, SIDEBAR_BUTTONS_MENU,\r\n SIDEBAR_SLAB_BUTTONS\r\n} from \"../../../../constants\";\r\nimport store from \"../../../../../../store\";\r\nimport PointV2, {CORE_POINT_LAYOUTS} from \"./pointV2\";\r\nimport RenderMovableImage from \"./imageParts/renderMovableImage\";\r\nimport sqftShape from \"./sqftShape\";\r\nimport ShapeAbsolute from \"./shapeParts/shapeAbsolute\";\r\n//import point from \"./point\";\r\nimport {createImageLinesFromPoints, getImagePoint} from \"../../helpers/movableImageHelper\";\r\nimport workspaceControllers from \"../../store/workspaceControllers\";\r\nimport {hardCodeIsCaesarStone} from \"../../../../../../misc/fabricatorHardcode\";\r\nimport ShapeAutoShuffle from \"./shapeParts/shapeAutoShuffle\";\r\n//import LineImage from \"./imageParts/lineImage\";\r\n\r\nclass MovableImage {\r\n image = null;\r\n initialSize = {\r\n width: 12,\r\n height: 12, // depth in 3d mode\r\n thickness: 12 // height in 3d (this is not visible param for the cabinets)\r\n };\r\n size = {\r\n width: 12,\r\n height: 12,\r\n thickness: 12,\r\n };\r\n hoverColor = \"#6495ED\";\r\n // debugLineColor = \"rgba(0,255,0,0.3)\",\r\n // debugPointColor = \"rgba(0,0,255,0.3)\",\r\n //fillColor = \"rgba(255,255,255,0)\",\r\n attachedTo = null;\r\n type;\r\n part;\r\n shapeRotatable;\r\n shapeType = \"square\";\r\n renderMovableImage = null; //new RenderMovableImage(this);\r\n shapeAutoShuffle = new ShapeAutoShuffle(this);\r\n\r\n constructor(id, priority = null, subType, params) {\r\n this.id = id;\r\n this.priority = priority;\r\n this.subType = subType;\r\n this.pos = { x: 0, y: 0 };\r\n this._state = {\r\n mouseDown: false,\r\n mouseDownPosition: null,\r\n mouseDownSize: null,\r\n hovering: false,\r\n isRotatable: false,\r\n minimumHeight: 1,\r\n minimumWidth: 1,\r\n };\r\n this.rotatedDegrees = 0;\r\n this.rotatedDegreesSlab = 0;\r\n this.featureId = id;\r\n this.pricePerArea = 0;\r\n this.isHidden = false;\r\n this.isDisabledInPopup = false;\r\n this.Direction = {\r\n RIGHT: 0,\r\n LEFT: 1\r\n };\r\n this.FlipDirection = {\r\n HORIZONTAL: 0,\r\n VERTICAL: 1\r\n };\r\n this.resizablePoint = null;\r\n this.onClicked = null;\r\n this.shapeAbsolute = new ShapeAbsolute(this); // this is used to snap images\r\n this.params = params\r\n\r\n //this.initEvents();\r\n }\r\n\r\n //private methods\r\n _setFillColor = (red, green, blue, alpha) => {\r\n let fillColor =\r\n \"rgba(\" + red + \", \" + green + \", \" + blue + \", \" + alpha + \")\";\r\n void fillColor;\r\n }\r\n _setImage = (value) => { this.image = value; }\r\n _setAttachedTo = (value) => {\r\n if (value) {\r\n this.attachedTo = value;\r\n }\r\n }\r\n _setHovering = (value) => {\r\n this._state.hovering = value;\r\n return value;\r\n }\r\n _snappedPos = () => {\r\n let scaledGridSize = config.workspace.getScaledGridSize();\r\n\r\n let newX = Math.round(this.pos.x / scaledGridSize) * scaledGridSize;\r\n let newY = Math.round(this.pos.y / scaledGridSize) * scaledGridSize;\r\n return {\r\n x: newX,\r\n y: newY\r\n };\r\n }\r\n\r\n _moveImage = (mousePos) => {\r\n const scale = workspace.getScale();\r\n let xDiff = (this._state.mouseDownPosition.x - mousePos.x) / scale;\r\n let yDiff = (this._state.mouseDownPosition.y - mousePos.y) / scale;\r\n\r\n this.updateSnappedPos();\r\n\r\n this.pos.x -= xDiff;\r\n this._state.mouseDownPosition.x = mousePos.x;\r\n\r\n this.pos.y -= yDiff;\r\n this._state.mouseDownPosition.y = mousePos.y;\r\n };\r\n\r\n resetAbsolutePos = () => {\r\n if (this.params.canSnap) {\r\n this.shapeAbsolute.setAbsolutePos(null); //reset minLength for correct calculations without stacking\r\n this.shapeAbsolute.setSnappedWithShape(null);\r\n this.shapeAbsolute.setSnappedShapeGroup(null);\r\n }\r\n }\r\n\r\n resetState = () => {\r\n this._state.mouseDown = false;\r\n this._state.mouseDownPosition = null;\r\n this._state.mouseDownSize = null;\r\n this._state.hovering = false;\r\n this._state.isRotatable = false;\r\n };\r\n\r\n updateLinesLength = () => {\r\n for (const line of this.getLines()) {\r\n line.updateLineLength();\r\n }\r\n }\r\n\r\n updateSnappedPos = () => {\r\n if (this.params.canSnap) {\r\n this.shapeAbsolute.setAbsolutePos(null); //reset minLength for correct calculations without stacking\r\n this.shapeAbsolute.setSnappedWithShape(null);\r\n this.shapeAbsolute.setSnappedShapeGroup(null);\r\n\r\n //let distancesToWalls = ShapeHelper.getDistancesToWalls(this);\r\n let distancesToShapes = ShapeHelper.getDistancesToShapes(this);\r\n let distancesToImages = ShapeHelper.getDistancesToImages(this);\r\n //console.log(\"distancesToWalls\", distancesToWalls);\r\n //console.log(\"distancesToShapes\", distancesToShapes);\r\n //console.log(\"distancesToImages\", distancesToImages);\r\n\r\n let snapPossibilitiesToShapes = ShapeHelper.getSnappingPossibilities(distancesToShapes);\r\n let snapPossibilitiesToImages = ShapeHelper.getSnappingPossibilities(distancesToImages);\r\n //let snapPossibilitiesToWalls = ShapeHelper.getSnappingPossibilities(distancesToWalls);\r\n //console.log(\"snapPossibilitiesToShapes\", snapPossibilitiesToShapes);\r\n\r\n //walls\r\n // let [absolutePosToWalls, snappedWithWalls] = ShapeHelper.getAbsolutePosFromSnapPossibilities(snapPossibilitiesToWalls, this.pos);\r\n // if (absolutePosToWalls) {\r\n // this.shapeAbsolute.setAbsolutePos(absolutePosToWalls);\r\n // void snappedWithWalls;\r\n // //snappedWithImage.shapeAbsolute.setSnappedWithImage(this);\r\n // }\r\n\r\n //shapes\r\n let [absolutePosToShapes, snappedWithShape] = ShapeHelper.getAbsolutePosFromSnapPossibilities(snapPossibilitiesToShapes, this.pos);\r\n if (absolutePosToShapes) {\r\n this.shapeAbsolute.setAbsolutePos(absolutePosToShapes);\r\n snappedWithShape.shapeAbsolute.setSnappedWithShape(this);\r\n workspaceControllers.snappedShapeGroups.setSameSnappedShapesGroup(this, snappedWithShape);\r\n }\r\n\r\n //images\r\n let [absolutePosToImages, snappedWithImage] = ShapeHelper.getAbsolutePosFromSnapPossibilities(snapPossibilitiesToImages, this.pos);\r\n if (absolutePosToImages) {\r\n this.shapeAbsolute.setAbsolutePos(absolutePosToImages);\r\n workspaceControllers.snappedShapeGroups.setSameSnappedShapesGroup(this, snappedWithImage);\r\n //snappedWithImage.shapeAbsolute.setSnappedWithImage(this);\r\n }\r\n }\r\n }\r\n\r\n _isMouesOverImage = (mousePos) => {\r\n let scale = workspace.getScale();\r\n let offset = workspace.getOffset();\r\n let realPos = {\r\n x: (this.pos.x * scale) + offset.x,\r\n y: (this.pos.y * scale) + offset.y\r\n };\r\n let realSize = {\r\n width: this.size.width * scale,\r\n height: this.size.height * scale\r\n };\r\n let axis = {\r\n x: realPos.x + (realSize.width / 2),\r\n y: realPos.y + (realSize.height / 2)\r\n }\r\n let points = [\r\n this._getRotatedPoint({x: realPos.x, y: realPos.y}, axis, this.rotatedDegrees),\r\n this._getRotatedPoint({x: realPos.x + realSize.width, y: realPos.y}, axis, this.rotatedDegrees),\r\n this._getRotatedPoint({x: realPos.x + realSize.width, y: realPos.y + realSize.height}, axis, this.rotatedDegrees),\r\n this._getRotatedPoint({x: realPos.x, y: realPos.y + realSize.height}, axis, this.rotatedDegrees)\r\n ];\r\n\r\n let maxX = points[0].x;\r\n let maxY = points[0].y;\r\n let minX = points[0].x;\r\n let minY = points[0].y;\r\n\r\n for (let i = 0; i < points.length; i++) {\r\n let point = points[i];\r\n if (maxX < point.x)\r\n maxX = point.x;\r\n if (minX > point.x)\r\n minX = point.x;\r\n if (maxY < point.y)\r\n maxY = point.y;\r\n if (minY > point.y)\r\n minY = point.y;\r\n }\r\n\r\n const isHovering = mousePos.x > minX && mousePos.y > minY && mousePos.x < maxX && mousePos.y < maxY;\r\n this._setHovering(isHovering);\r\n\r\n return isHovering;\r\n };\r\n\r\n _getRotatedPoint(point, around, angle) {\r\n let s = Math.sin(angle);\r\n let c = Math.cos(angle);\r\n point.x -= around.x;\r\n point.y -= around.y;\r\n\r\n let newPoint = {\r\n x: point.x * c - point.y * s,\r\n y: point.x * s + point.y * c\r\n };\r\n\r\n return {\r\n x: newPoint.x + around.x,\r\n y: newPoint.y + around.y\r\n };\r\n }\r\n\r\n //private event handles\r\n _onMouseMove(mousePos, e) {\r\n if (e.terminate) {\r\n this._setHovering(false);\r\n return false;\r\n }\r\n if (this._isMouesOverImage(mousePos)) {\r\n EventManager.setCursor('move', this)\r\n if (this._state.mouseDown) {\r\n this._moveImage(mousePos);\r\n\r\n return true;\r\n }\r\n }\r\n\r\n //smooth scrolling\r\n if (this._state.mouseDown) {\r\n this._moveImage(mousePos);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n _onMouseUp(mousePos, e) {\r\n void mousePos;\r\n void e;\r\n EventManager.releaseStealLock(this);\r\n if (this._state.mouseDown) {\r\n this.shapeAutoShuffle.handlePlaceShapeOnTheLine();\r\n }\r\n this._state.mouseDown = false;\r\n this._state.mouseDownPosition = null;\r\n this._state.mouseDownSize = null;\r\n }\r\n\r\n _onMouseDown = (mousePos, e) => {\r\n void e;\r\n //if not then handle event with this object\r\n if (this.isHovering()) {\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n const isShowSlabTool = reduxState.sqftSlabState.isShowSlabTool;\r\n\r\n //Delete this\r\n if (activeButton === SIDEBAR_SLAB_BUTTONS.delete && isShowSlabTool) {\r\n workspace.removeSlabImage(this);\r\n }\r\n\r\n //Move self\r\n if (EventManager.getCursor().indexOf(\"move\") >= 0 || activeButton === SIDEBAR_BUTTONS_MENU.move) {\r\n this._state.mouseDown = true;\r\n this._state.mouseDownPosition = mousePos;\r\n this._state.mouseDownSize = this.getSize();\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n //public methods\r\n setPricePerArea = (val) => { this.pricePerArea = clone(val) };\r\n setPosition = (value) => { this.pos = value; }\r\n setId = (id) => { this.id = id };\r\n setFeatureId = (featureId) => { this.featureId = featureId };\r\n getIsRotatable = () => { return this._state.isRotatable };\r\n getState = () => { return this._state };\r\n setIsRotatable = (isRotatable) => { this._state.isRotatable = isRotatable};\r\n setRotationDegrees = (rotationDegrees) => {\r\n this.rotatedDegrees = rotationDegrees\r\n }\r\n getCenter = () => {\r\n return {\r\n x: this.size.width / 2,\r\n y: this.size.height / 2\r\n }\r\n }\r\n getCenterPosition = () => {\r\n const center = this.getCenter();\r\n const position = this.getPosition();\r\n\r\n return {\r\n x: position.x + center.x,\r\n y: position.y + center.y\r\n }\r\n }\r\n\r\n setSize = (value) => {\r\n this.size.width = value.width;\r\n this.size.height = value.height;\r\n }\r\n\r\n setInitialSize = (value) => {\r\n this.initialSize.width = value.width;\r\n this.initialSize.height = value.height;\r\n }\r\n\r\n getPosition = () => {\r\n let absolutePos = this.shapeAbsolute.getAbsolutePosition();\r\n\r\n return absolutePos !== null ? absolutePos : this.pos;\r\n };\r\n\r\n getSnappedPosition = () => { return this._snappedPos(); };\r\n\r\n getPosField = () => {\r\n let position = this.getPosition();\r\n const workspacePos = workspace.getOffset();\r\n const scale = workspace.getScale();\r\n\r\n return {\r\n x: workspacePos.x + ((position.x + (this.size.width / 2)) * scale),\r\n y: workspacePos.y + ((position.y + (this.size.height / 2)) * scale)\r\n }\r\n };\r\n\r\n getOffset = () => {\r\n const scale = config.scale;\r\n const workspacePos = workspace.getOffset();\r\n let _pos = this.getPosition();\r\n if (config.workspace.snapToGrid) {\r\n _pos = this.getSnappedPosition();\r\n }\r\n return {\r\n x: workspacePos.x + (_pos.x * scale),\r\n y: workspacePos.y + (_pos.y * scale)\r\n }\r\n };\r\n\r\n isHovering = () => {\r\n //console.log(\"this._state.hovering\", this._state.hovering);\r\n return this._state.hovering === true;\r\n };\r\n getAttachedTo = () => { return this.attachedTo; };\r\n getImage = () => { return this.image; };\r\n getSize = () => { return this.size; };\r\n getWidth = () => {\r\n return this.getSize().width;\r\n };\r\n getHeight = () => {\r\n return this.getSize().height;\r\n };\r\n getThickness = () => { return this.getSize().thickness; };\r\n getRotation = () => { return this.rotatedDegrees; };\r\n export = () => {\r\n let linesData = [];\r\n const Lines = this.getLines();\r\n for (const lineIndex in Lines) {\r\n if (Lines.hasOwnProperty(lineIndex)) {\r\n linesData.push({lineIndex, ...Lines[lineIndex].exportData()});\r\n }\r\n }\r\n\r\n let exportData = {\r\n pos: this.pos,\r\n id: this.id,\r\n featureId: this.featureId ? this.featureId : this.image.dataset.id, // this.image.dataset.id old support\r\n image: {\r\n src: this.image.currentSrc || $(this.image).attr('src'),\r\n id: this.image.dataset.id,\r\n name: this.image.dataset.name,\r\n nameMetric: this.image.dataset.nameMetric,\r\n width: this.image.width,\r\n height: this.image.height\r\n },\r\n type: this.type,\r\n subType: this.subType,\r\n part: this.part,\r\n size: this.size,\r\n rotatedDegrees: this.rotatedDegrees,\r\n rotatedDegreesSlab: this.rotatedDegreesSlab,\r\n attachedTo: this.attachedTo ? this.attachedTo.id : null,\r\n attachedToParentId: this.attachedTo\r\n ? this.attachedTo.getParent\r\n ? this.attachedTo.getParent().id\r\n : null\r\n : null,\r\n isDisabledInPopup: this.isDisabledInPopup,\r\n pricePerArea: this.pricePerArea,\r\n priority: this.priority,\r\n shapeAbsoluteData: this.shapeAbsolute ? this.shapeAbsolute.export() : null,\r\n linesData: linesData,\r\n };\r\n if (this.attachedTo && this.attachedTo.getLineLength){\r\n exportData.lineLength = config.measureUnit === \"Metric\" ? mmToM(this.attachedTo.getLineLengthMm()) : this.attachedTo.getLineLength();\r\n exportData.partId = this.attachedTo.getParent().partId;\r\n }\r\n if (this.type === \"edge\") {\r\n const navItems = getEdgeFeatures();\r\n let edge = navItems.find(edge => edge.part.dbFeature.id === +this.image.dataset.id);\r\n let unit = edge ? edge.unit : null;\r\n exportData.length = (unit ? unit.toLowerCase() : null) === \"each\"\r\n ? 1\r\n : config.measureUnit === \"Imperial\" ? getEdgeLength(this.attachedTo) : mmToM(getEdgeLength(this.attachedTo));\r\n } else if (this.type === \"backsplash\") {\r\n exportData.length = getBacksplashArea(this.attachedTo.getBacksplashHeight(), this.attachedTo);\r\n } else if (this.type === \"wall\") {\r\n exportData.length = exportData.lineLength;\r\n }\r\n\r\n return exportData;\r\n };\r\n importData = (importData) => {\r\n const skipImportProps = ['image', 'shapeAbsolute', 'linesData'];\r\n Object.keys(importData).forEach(key => {\r\n if (importData.hasOwnProperty(key)) {\r\n if (!skipImportProps.includes(key)) {\r\n this[key] = importData[key];\r\n }\r\n }\r\n });\r\n if (importData.shapeAbsoluteData) {\r\n this.shapeAbsolute.import(importData.shapeAbsoluteData);\r\n }\r\n if (importData.linesData) {\r\n for (const lineData of importData.linesData) {\r\n const line = this.lines.find(line => line.lineIndex === +lineData.lineIndex);\r\n if (line) {\r\n line.importData(lineData);\r\n }\r\n }\r\n }\r\n }\r\n //todo sqft-react is this needed?\r\n // generateImage = (value, shapes) => {\r\n // let domImg = document.createElement('img');\r\n // domImg.crossOrigin = \"Anonymous\";\r\n // let $img = $(domImg);\r\n // $img.css({\r\n // position: 'absolute',\r\n // width: '1px',\r\n // height: '1px'\r\n // });\r\n // $img.attr({\r\n // 'data-id': value.image.id,\r\n // 'data-name': value.image.name,\r\n // });\r\n // let attachedTo = null;\r\n // if (value.attachedTo) {\r\n // for (let i = 0; i < shapes.length; i++) {\r\n // let shape = shapes[i];\r\n // if (shape.getLines && !attachedTo) {\r\n // let lines = shape.getLines();\r\n // for(let n = 0; n < lines.length; n++) {\r\n // let line = lines[n];\r\n // if ( line.id == value.attachedTo && !attachedTo ) {\r\n // attachedTo = line;\r\n // }\r\n // }\r\n // }\r\n // }\r\n // }\r\n // $img.appendTo($('body'));\r\n // $img.attr('src', (config.isKiosk || value.image.src.includes('data:image') ? '' : '/api/SqFtCalc/GetImage?url=') + value.image.src);\r\n // return {\r\n // image: domImg,\r\n // attachedTo: this.attachedTo\r\n // };\r\n // };\r\n getTotalInches = function() {\r\n return 0;\r\n };\r\n\r\n /**\r\n * Public functions\r\n * @param flipDirection\r\n */\r\n flip = function(flipDirection) {\r\n void flipDirection\r\n };\r\n rotate = (degrees, direction) => {\r\n //todo slab rotation QCDES-1358\r\n if (this.type === MOVABLE_IMAGE_TYPES.slabImage) {\r\n return\r\n }\r\n const isSlabMode = store.getState().sqftSlabState.isShowSlabTool;\r\n isSlabMode ? this.rotatedDegreesSlab += degrees : this.rotatedDegrees += degrees;\r\n (this.rotatedDegrees === 360) && (this.rotatedDegrees = 0);\r\n (this.rotatedDegreesSlab === 360) && (this.rotatedDegreesSlab = 0);\r\n\r\n direction = direction || this.Direction.Right;\r\n let angle = (degrees * Math.PI / 180);\r\n if (direction === this.Direction.LEFT)\r\n angle *= -1;\r\n if (this.shapeRotatable) {\r\n this.shapeRotatable.rotateShapeRotatablePoints(this.getCenter(), angle, isSlabMode);\r\n }\r\n this.rotateBorderPoints(angle);\r\n };\r\n rotateBorderPoints = (angle) => {\r\n const center = this.getCenter();\r\n for (const linePoint of this.getLinePoints()) {\r\n linePoint.rotate(center, angle);\r\n }\r\n }\r\n init = (position, image, size, attachedTo, isHidden) => {\r\n this.setPosition(position);\r\n this._setImage(image);\r\n this.setSize(size);\r\n this.setInitialSize(size);\r\n this._setAttachedTo(attachedTo);\r\n function getRandomInt(min, max) {\r\n return Math.floor(Math.random() * (max - min)) + min;\r\n }\r\n this._setFillColor(getRandomInt(0, 255), getRandomInt(0, 255), getRandomInt(0, 255), 0.3);\r\n if (isHidden) {\r\n this.isHidden = true;\r\n } else {\r\n this.initEvents();\r\n //this.initResizablePoint(position);\r\n }\r\n this.lines = this.createLines();\r\n //hide lines for slab images\r\n if (this.type === MOVABLE_IMAGE_TYPES.slabImage) {\r\n this.deregisterLineEvents();\r\n }\r\n\r\n this.renderMovableImage = new RenderMovableImage(this);\r\n };\r\n initEvents = () => {\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_MOVE,\r\n this._onMouseMove,\r\n this,\r\n this.priority ? this.priority : EventManager.priorities.IMAGE - (this.attachedTo ? 1 : 0)\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_DOWN,\r\n this._onMouseDown,\r\n this,\r\n this.priority ? this.priority : EventManager.priorities.IMAGE - (this.attachedTo ? 1 : 0)\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_UP,\r\n this._onMouseUp,\r\n this,\r\n this.priority ? this.priority : EventManager.priorities.IMAGE - (this.attachedTo ? 1 : 0)\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.RENDER,\r\n this._render,\r\n this,\r\n this.priority ? this.priority : EventManager.priorities.IMAGE - (this.attachedTo ? 1 : 0)\r\n );\r\n };\r\n\r\n /**\r\n * Not used\r\n */\r\n initResizablePoint = () => {\r\n let pointParams = {\r\n priority: EventManager.priorities.BOX_POINT,\r\n movable: true,\r\n isCentered: true,\r\n isVisibleOnHover: true,\r\n moveCallback: (mousePos, movable) => {\r\n //const movablePoint = movable.parent;\r\n const movableImage = movable.grandParent;\r\n //const size = movableImage.getSize();\r\n const state = movableImage.getState();\r\n let scale = workspace.getScale();\r\n let xDiff = (movable.state.mouseDownPosition.x - mousePos.x) / scale;\r\n let yDiff = (movable.state.mouseDownPosition.y - mousePos.y) / scale;\r\n // const newWidth = movable.state.mouseDownSize.width - xDiff;\r\n // const newHeight = movable.state.mouseDownSize.height - yDiff;\r\n const newWidth = (movable.state.mouseDownSize.width - xDiff + movable.state.mouseDownSize.height - yDiff) / 2;\r\n const newHeight = (movable.state.mouseDownSize.height - yDiff + movable.state.mouseDownSize.width - xDiff) / 2;\r\n\r\n if (newHeight >= state.minimumHeight && newWidth >= state.minimumWidth ) {\r\n movableImage.setSize({\r\n width: newWidth,\r\n height: newHeight\r\n });\r\n movable.posX = newWidth;\r\n movable.posY = newHeight;\r\n }\r\n },\r\n mouseUpCallback: (mousePos, movable) => {\r\n movable.state.mouseDownSize = null\r\n },\r\n mouseDownCallback: (mousePos, movable) => {\r\n const movableImage = movable.grandParent;\r\n movable.state.mouseDownSize = {...movableImage.getSize()};\r\n }\r\n };\r\n let pointDesign = {\r\n radius: 10,\r\n lineWidth: 1,\r\n layout: CORE_POINT_LAYOUTS.resize\r\n };\r\n //const position = this.getPosition();\r\n const size = this.getSize();\r\n const pointPositionX = size.width;\r\n const pointPositionY = size.height;\r\n this.resizablePoint = new PointV2(pointPositionX, pointPositionY, this, pointParams, pointDesign);\r\n }\r\n\r\n deregisterEvents = () => {\r\n EventManager.removeEvent(this);\r\n this.isHidden = true;\r\n this.deregisterLineEvents()\r\n };\r\n\r\n deregisterLineEvents = () => {\r\n const lines = this.getLines();\r\n for (const line of lines) {\r\n line.deregisterEvents();\r\n }\r\n };\r\n\r\n reInitEvents = () => {\r\n if (this.isHidden) {\r\n this.initEvents();\r\n this.isHidden = false;\r\n this.reInitLineEvents();\r\n }\r\n };\r\n\r\n reInitLineEvents = () => {\r\n //hide lines for slab images\r\n if (this.type !== MOVABLE_IMAGE_TYPES.slabImage) {\r\n for (const line of this.getLines()) {\r\n line.reInitEvents();\r\n }\r\n }\r\n };\r\n\r\n destroy = (protect) => {\r\n if (!protect) {\r\n EventManager.removeEvent(this);\r\n for (const line of this.getLines()) {\r\n line.destroy();\r\n }\r\n if (this.resizablePoint) {\r\n this.resizablePoint.destroy();\r\n }\r\n }\r\n };\r\n\r\n stealCursor = function(who) {\r\n if (this === who) {\r\n EventManager.resetCursor(this);\r\n }\r\n };\r\n\r\n resetCursor = function(who) {\r\n void who;\r\n EventManager.resetCursor(this);\r\n };\r\n\r\n // getMidPoint(from, to) {\r\n // return {\r\n // x: from.x + (to.x - from.x)/2,\r\n // y: from.y + (to.y - from.y)/2\r\n // };\r\n // }\r\n\r\n isIE = function() {\r\n return (/Trident/i).test(window.navigator.appVersion);\r\n };\r\n\r\n getSrc = function(img) {\r\n if (img) {\r\n let src = img.getAttribute('src');\r\n if (src) {\r\n return src;\r\n }\r\n src = img.getAttribute(\"style\");\r\n if (src) {\r\n return src.replace(/background-image: url\\(\"\\/api\\/SqFtCalc\\/GetImage\\?url=/g, \"\").replace(/\"\\);/g, \"\");\r\n }\r\n }\r\n return \"\";\r\n };\r\n\r\n isSVG = (img) => {\r\n return (/data:image\\/svg\\+xml;base64,/).test(this.getSrc(img));\r\n };\r\n\r\n getLinePointsPointField = () => {\r\n const points = this.getLines().map(line => line.from);\r\n return points.map(point => getPointField(point.x, point.y, this))\r\n }\r\n\r\n getPointsPointField = () => {\r\n return this.getLinePointsPointField()\r\n }\r\n\r\n getBorderPointsOnWorkspace = () => {\r\n const posField = this.getPosition();\r\n const points = this.getLines().map(line => line.from);\r\n return points.map(point => {\r\n return {\r\n x: posField.x + point.x,\r\n y: posField.y + point.y\r\n }\r\n })\r\n }\r\n\r\n getPointsPosOnWorkspace = () => {\r\n return this.getBorderPointsOnWorkspace();\r\n };\r\n\r\n createBorderPointsPosition = () => {\r\n return [\r\n getImagePoint(0, 0, this),\r\n getImagePoint(this.size.width, 0, this),\r\n getImagePoint(this.size.width, this.size.height, this),\r\n getImagePoint(0, this.size.height, this),\r\n ]\r\n\r\n // return [\r\n // new point(0, 0, this),\r\n // new point(this.size.width, 0, this),\r\n // new point(this.size.width, this.size.height, this),\r\n // new point(0, this.size.height, this),\r\n // ]\r\n }\r\n\r\n getLines = () => {\r\n return this.lines\r\n }\r\n\r\n getPrevLine = (line) => {\r\n const index = this.lines.indexOf(line);\r\n if (index === -1) return null; // Line not found\r\n\r\n return this.lines[(index - 1 + this.lines.length) % this.lines.length]; // Loop back if it's the first line\r\n }\r\n\r\n getNextLine = (line) => {\r\n const index = this.lines.indexOf(line);\r\n if (index === -1) return null; // Line not found\r\n\r\n return this.lines[(index + 1) % this.lines.length]; // Loop back if it's the last line\r\n }\r\n\r\n getLinePoints = () => {\r\n return this.lines.map(line => line.from)\r\n }\r\n\r\n revealMeasurementsInsideShape = () => {\r\n for (const imageLine of this.getLines()) {\r\n imageLine.measurementInsideShape.revealEvents();\r\n }\r\n }\r\n\r\n hideMeasurementsInsideShape = () => {\r\n for (const imageLine of this.getLines()) {\r\n imageLine.measurementInsideShape.hideEvents();\r\n }\r\n }\r\n\r\n isAnyLineHovering = () => {\r\n const lines = this.getLines();\r\n for (const line of lines) {\r\n if (line.isHovering()) {\r\n return true\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n createLines = () => {\r\n return createImageLinesFromPoints(this.createBorderPointsPosition(), this);\r\n }\r\n\r\n shouldRenderMeasurementsInsideTheShape = () => {\r\n return APPLIANCES_THAT_SHOULD_RENDER_MEASUREMENTS_INSIDE_THE_SHAPE.includes(this.subType)\r\n && !hardCodeIsCaesarStone(); //CAES-547 remove measurements for the CaesarStone\r\n }\r\n\r\n getOuterShape = () => {\r\n const centerPos = this.getCenter();\r\n const centerPosOnField = getPointField(centerPos.x, centerPos.y, this);\r\n const shapes = workspace.getShapes(true);\r\n //let countInsidePoints;\r\n for (let shape of shapes) {\r\n //countInsidePoints = 0;\r\n if (shape instanceof sqftShape) {\r\n // for (let borderPoint of borderPoints) {\r\n // if (isPointInsideShape(borderPoint, shape, true)) {\r\n // countInsidePoints += 1\r\n // }\r\n // }\r\n const isCenterInsideShape = isPointInsideShape(centerPosOnField, shape, true);\r\n if (isCenterInsideShape) {\r\n return shape\r\n }\r\n // if (countInsidePoints >= 2) {\r\n // return shape\r\n // }\r\n }\r\n }\r\n\r\n return null\r\n }\r\n\r\n _render = (ctx) => {\r\n this.renderMovableImage.render(ctx);\r\n }\r\n}\r\n\r\nexport default MovableImage;\r\n","import {\r\n getFontsizeSmall,\r\n getMidPoint,\r\n getPointDistance, getPointField, getPointOnTheLine,\r\n} from \"../../../helpers/sqftHelper\";\r\nimport ShapeHelper from \"../../../helpers/shapeHelper\";\r\n//import COLOR_THEMES from \"../../../../../colorThemes\";\r\nimport COLOR_THEMES from \"../store/colorThemes\";\r\nimport sqftConfig from \"../store/sqftConfig\";\r\n//import workspace from \"../core/workspace\";\r\nimport {\r\n RENDER_TEMPLATES,\r\n SIDEBAR_BUTTONS_MENU,\r\n} from \"../../../constants\";\r\nimport {getDistanceLength, getLineCrownMoldingPoints} from \"./lineHelper\";\r\nimport RenderCabinets from \"./renderCabinets\";\r\nimport RenderFigures from \"./renderFigures\";\r\nimport {COLORS as Colors} from \"../../../../../colorThemes\";\r\nimport store from \"../../../../../store\";\r\nimport config from \"../store/sqftConfig\";\r\nimport workspace from \"../core/workspace\";\r\n\r\nexport default class RenderParts {\r\n static drawMeasurementAroundPoints = (ctx, points, minLength = 3) => {\r\n points.forEach((point, index) => {\r\n const nextPoint = points[index + 1] ? points[index + 1] : points[0];\r\n const midPoint = getMidPoint(point, nextPoint);\r\n const distance = getPointDistance(point, nextPoint);\r\n const scale = workspace.getScale();\r\n if (distance / scale > minLength) {\r\n //const length = addDecimalToLength(measureDistanceToInches(distance / sqftConfig.scale));\r\n const length = getDistanceLength(distance / sqftConfig.scale);\r\n //debugger // eslint-disable-line no-debugger\r\n const lineOrientation = ShapeHelper.getLineOrientation(point, nextPoint);\r\n const mText = ctx.measureText(length);\r\n let fontSize = getFontsizeSmall(),\r\n font = (fontSize).toString() + \"px \" + sqftConfig.activeFontBold,\r\n xMargin = 0,\r\n yMargin = 0,\r\n pos = midPoint\r\n ;\r\n\r\n //todo change index logic\r\n switch (lineOrientation) {\r\n case \"horizontal\": {\r\n yMargin = index === 0\r\n ? -fontSize + sqftConfig.scale / sqftConfig.defaultScale\r\n : +fontSize + sqftConfig.scale / sqftConfig.defaultScale + 10;\r\n break;\r\n }\r\n case \"vertical\": {\r\n xMargin = index === 1 ? mText.width + 5 : -mText.width;\r\n break;\r\n }\r\n // todo rotation\r\n case \"NORTHWEST\": { break;}\r\n case \"NORTHEAST\": { break;}\r\n case \"SOUTHWEST\": { break;}\r\n case \"SOUTHEAST\": { break;}\r\n default:\r\n break;\r\n }\r\n pos.x += xMargin;\r\n pos.y += yMargin;\r\n\r\n ctx.beginPath();\r\n ctx.font = font;\r\n ctx.textAlign = \"center\"; //todo\r\n ctx.fillStyle = COLOR_THEMES[sqftConfig.activeTheme].primary;\r\n ctx.wrapText(length.toString(), pos.x, pos.y, mText.width, font);\r\n ctx.stroke();\r\n ctx.closePath();\r\n }\r\n })\r\n }\r\n\r\n static drawShapeBorders = (ctx, staticOffset, strokeTemplate, fillTemplate, shape) => {\r\n if (sqftConfig.isDevMode()) {\r\n RenderParts.renderDevMode(ctx, shape);\r\n }\r\n let lines = shape.getLines();\r\n const reduxState = store.getState();\r\n const isShowSlabTool = reduxState.sqftSlabState.isShowSlabTool;\r\n\r\n ctx.beginPath();\r\n for (let i = 0; i < lines.length; i++) {\r\n lines[i].staticOffset = staticOffset;\r\n lines[i].render(ctx, i > 0);\r\n lines[i].staticOffset = null;\r\n }\r\n\r\n //set fillStyle and strokeStyle colors\r\n const isShapeHovering = shape.isHoveringOnlyShape();\r\n let shapeColorSet;\r\n\r\n function renderColorSetTemplate(shapeColorSet, isShapeHovering) {\r\n if (isShapeHovering) {// && workspace.getHoverShape() === shape ) {\r\n ctx.strokeStyle = shapeColorSet.primary_border;\r\n ctx.fillStyle = shapeColorSet.primary_hover;\r\n } else {\r\n ctx.strokeStyle = shapeColorSet.primary_border;\r\n ctx.fillStyle = shapeColorSet.primary;\r\n }\r\n }\r\n\r\n function renderFilledPrimaryTemplate(isShapeHovering) {\r\n if (isShapeHovering) {// && workspace.getHoverShape() === shape ) {\r\n ctx.strokeStyle = COLOR_THEMES[sqftConfig.activeTheme].primary_hover;\r\n ctx.fillStyle = COLOR_THEMES[sqftConfig.activeTheme].active_transparent;\r\n } else {\r\n ctx.strokeStyle = COLOR_THEMES[sqftConfig.activeTheme].primary;\r\n ctx.fillStyle = COLOR_THEMES[sqftConfig.activeTheme].primary_transparent;\r\n }\r\n }\r\n\r\n function renderFilledActiveTemplate(isShapeHovering) {\r\n if (isShapeHovering) {// && workspace.getHoverShape() === shape ) {\r\n ctx.strokeStyle = COLOR_THEMES[sqftConfig.activeTheme].active_hover;\r\n ctx.fillStyle = COLOR_THEMES[sqftConfig.activeTheme].primary_transparent;\r\n } else {\r\n ctx.strokeStyle = COLOR_THEMES[sqftConfig.activeTheme].active;\r\n ctx.fillStyle = COLOR_THEMES[sqftConfig.activeTheme].active_transparent;\r\n }\r\n }\r\n\r\n switch (fillTemplate) {\r\n case RENDER_TEMPLATES.accordingToFeature:\r\n shapeColorSet = shape.getColorSet();\r\n if (shapeColorSet) {\r\n renderColorSetTemplate(shapeColorSet, isShapeHovering)\r\n } else {\r\n renderFilledPrimaryTemplate(isShapeHovering)\r\n }\r\n break;\r\n case RENDER_TEMPLATES.filledPrimary:\r\n renderFilledPrimaryTemplate(isShapeHovering)\r\n break;\r\n case RENDER_TEMPLATES.filledActive:\r\n renderFilledActiveTemplate(isShapeHovering)\r\n break;\r\n }\r\n\r\n //set hover style colors\r\n if (isShapeHovering) {\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n if (activeButton === SIDEBAR_BUTTONS_MENU.delete\r\n && !isShowSlabTool\r\n ) {\r\n ctx.fillStyle = Colors.red\r\n }\r\n }\r\n\r\n //set lineWidth\r\n switch (strokeTemplate) {\r\n case RENDER_TEMPLATES.linesOnly:\r\n ctx.lineWidth = 0;\r\n ctx.closePath();\r\n break;\r\n case RENDER_TEMPLATES.default:\r\n default:\r\n ctx.fill();\r\n ctx.lineWidth = 2; // Math.ceil(scale);\r\n ctx.closePath();\r\n ctx.stroke();\r\n break;\r\n }\r\n }\r\n\r\n static getBoundingBoxFromShape = (shape) => {\r\n let minX = Infinity;\r\n let minY = Infinity;\r\n let maxX = -Infinity;\r\n let maxY = -Infinity;\r\n\r\n const lines = shape.getLines();\r\n for (let line of lines) {\r\n const renderTo = line.calculateRenderPosition(line.to);\r\n const renderFrom = line.calculateRenderPosition(line.from);\r\n\r\n minX = Math.min(minX, renderFrom.x, renderTo.x);\r\n minY = Math.min(minY, renderFrom.y, renderTo.y);\r\n maxX = Math.max(maxX, renderFrom.x, renderTo.x);\r\n maxY = Math.max(maxY, renderFrom.y, renderTo.y);\r\n }\r\n\r\n return {\r\n x: minX,\r\n y: minY,\r\n width: maxX - minX,\r\n height: maxY - minY\r\n };\r\n };\r\n\r\n /**\r\n * Function for drawing a rectangle with angled stripes and transparency.\r\n *\r\n * @param ctx\r\n * @param {Number} x - x-coordinate of the top-left corner of the rectangle\r\n * @param {Number} y - y-coordinate of the top-left corner of the rectangle\r\n * @param {Number} width - width of the rectangle\r\n * @param {Number} height - height of the rectangle\r\n * @param {Number} lineWidth - width of the stripe\r\n * @param {Number} angle - angle of the stripes in degrees\r\n * @param {String} color1 - first color (background with transparency)\r\n * @param {String} color2 - second color (stripe color with transparency)\r\n */\r\n static drawStripedRectangle = (\r\n ctx,\r\n x,\r\n y,\r\n width,\r\n height,\r\n lineWidth = 3 * 3.5,\r\n angle = 3 * 1000,\r\n color1 = \"rgba(255, 255, 255, 0.5)\", // Semi-transparent background\r\n color2 = \"rgba(230, 228, 230, 0.5)\" // Semi-transparent stripes\r\n ) => {\r\n const lineGap = 6 * 3.5;\r\n\r\n ctx.save();\r\n\r\n // Define clipping area (visible rectangle)\r\n ctx.beginPath();\r\n ctx.rect(x, y, width, height);\r\n ctx.fillStyle = color1;\r\n ctx.fill();\r\n ctx.clip();\r\n\r\n // Draw diagonal lines across the entire canvas\r\n ctx.beginPath();\r\n ctx.lineWidth = lineWidth;\r\n ctx.strokeStyle = color2;\r\n\r\n // The pattern should cover the entire canvas\r\n for (let i = -ctx.canvas.width * 2; i < ctx.canvas.width; i += lineGap) {\r\n ctx.moveTo(i, -ctx.canvas.height);\r\n ctx.lineTo(i + lineGap + angle, ctx.canvas.height * 2);\r\n }\r\n\r\n ctx.stroke();\r\n ctx.restore();\r\n };\r\n\r\n /**\r\n *\r\n * @param ctx\r\n * @param {Number} x - координата x верхнего левого угла прямоугольника\r\n * @param {Number} y - координата y верхнего левого угла прямоугольника\r\n * @param {Number} width - ширина прямоугольника\r\n * @param {Number} height - высота прямоугольника\r\n */\r\n static fillStripedRectangle = (ctx, x, y, width, height) => {\r\n let gradient = ctx.createLinearGradient(x, y, width, height);\r\n gradient.addColorStop(0.25, '#868d91');\r\n gradient.addColorStop(0.25, '#7b8185');\r\n gradient.addColorStop(0.5, '#7b8185');\r\n gradient.addColorStop(0.5, '#868d91');\r\n gradient.addColorStop(0.75, '#868d91');\r\n gradient.addColorStop(0.75, '#7b8185');\r\n gradient.addColorStop(1, '#7b8185');\r\n\r\n // Заливка шейпа градиентом\r\n ctx.fillStyle = gradient;\r\n ctx.fill();\r\n }\r\n\r\n static drawDiagonalStripesV2 = (ctx, shape, lineWidth = 2, rotationAngle = -Math.PI / 4) => {\r\n const bbox = RenderParts.getBoundingBoxFromShape(shape);\r\n void rotationAngle;\r\n void lineWidth;\r\n\r\n ctx.save();\r\n let lines = shape.getLines();\r\n\r\n //draw border\r\n ctx.beginPath();\r\n ctx.rect(bbox.x, bbox.y, bbox.width, bbox.height);\r\n ctx.lineWidth = 2;\r\n ctx.stroke();\r\n\r\n for (let i = 0; i < lines.length; i++) {\r\n //lines[i].render(ctx, i > 0);\r\n }\r\n const pointPos = lines[1].calculateRenderPosition(lines[1].to);\r\n\r\n RenderParts.fillStripedRectangle(ctx, bbox.x, bbox.y, pointPos.x, pointPos.y);\r\n ctx.closePath();\r\n\r\n ctx.restore();\r\n };\r\n\r\n static drawDiagonalStripes = (ctx, shape, lineWidth = 2, rotationAngle = -Math.PI / 4) => {\r\n const bbox = RenderParts.getBoundingBoxFromShape(shape);\r\n // const lightGray = '#80848a';\r\n // const darkGray = '#787c82';\r\n const lightGray = '#5a5c61';\r\n const darkGray = '#54575b';\r\n void rotationAngle;\r\n\r\n // ctx.save();\r\n // let lines = shape.getLines();\r\n // // ctx.beginPath();\r\n // // ctx.rect(bbox.x, bbox.y, bbox.width, bbox.height);\r\n // ctx.beginPath();\r\n // for (let i = 0; i < lines.length; i++) {\r\n // lines[i].render(ctx, i > 0);\r\n // }\r\n // ctx.closePath();\r\n // ctx.clip();\r\n //\r\n // ctx.lineWidth = 2;\r\n // ctx.stroke();\r\n //\r\n // for (let i = 0; i < lines.length; i++) {\r\n // lines[i].render(ctx, i > 0);\r\n // }\r\n // ctx.closePath();\r\n // ctx.clip();\r\n\r\n const scale = config.scale;\r\n const scaledLineWidth = lineWidth * scale;\r\n\r\n RenderParts.drawStripedRectangle(\r\n ctx,\r\n bbox.x,\r\n bbox.y,\r\n bbox.width,\r\n bbox.height,\r\n scaledLineWidth,\r\n 3 * 1000,\r\n lightGray,\r\n darkGray\r\n );\r\n\r\n ctx.restore();\r\n };\r\n\r\n\r\n static drawHoveredBorders = (ctx,\r\n staticOffset,\r\n shape,\r\n style = {\r\n lineWidth: 3,\r\n strokeStyle: COLOR_THEMES[sqftConfig.activeTheme].primary_hover,\r\n shadowBlur: 4,\r\n extendHoveredLine: 0\r\n }\r\n ) => {\r\n let lines = shape.getLines();\r\n\r\n for (let i = 0; i < lines.length; i++) {\r\n if (lines[i].getState().isHovering) {\r\n ctx.save();\r\n ctx.beginPath();\r\n lines[i].staticOffset = staticOffset;\r\n ctx.lineWidth = style.lineWidth;\r\n ctx.shadowColor = ctx.strokeStyle = style.strokeStyle;\r\n ctx.shadowBlur = style.shadowBlur;\r\n\r\n let pointTo = {...lines[i].to};\r\n let pointFrom = {...lines[i].from};\r\n if (style.extendHoveredLine > 0) {\r\n pointFrom = {pos: getPointOnTheLine(lines[i].from, lines[i].to, 5)};\r\n pointTo = {pos: getPointOnTheLine(lines[i].to, lines[i].from, 5)};\r\n }\r\n const renderTo = lines[i].calculateRenderPosition(pointTo);\r\n const renderFrom = lines[i].calculateRenderPosition(pointFrom);\r\n\r\n ctx.moveTo(renderTo.x, renderTo.y);\r\n ctx.lineTo(renderFrom.x, renderFrom.y);\r\n lines[i].staticOffset = null;\r\n\r\n ctx.stroke();\r\n ctx.closePath();\r\n ctx.restore();\r\n }\r\n }\r\n }\r\n\r\n static drawSpacerBorders = (ctx, staticOffset, shape) => {\r\n let lines = shape.getLines();\r\n ctx.save();\r\n ctx.beginPath();\r\n ctx.lineWidth = 2;\r\n ctx.fillStyle = COLOR_THEMES[sqftConfig.activeTheme].primary_transparent8;\r\n for (let i = 0; i < lines.length; i++) {\r\n lines[i].staticOffset = staticOffset;\r\n if (i === 0) {\r\n const renderFrom = lines[i].calculateRenderPosition(lines[i].from);\r\n ctx.moveTo(renderFrom.x, renderFrom.y);\r\n }\r\n const renderTo = lines[i].calculateRenderPosition(lines[i].to);\r\n ctx.lineTo(renderTo.x, renderTo.y);\r\n\r\n lines[i].staticOffset = null;\r\n }\r\n\r\n //set hover style colors\r\n if (shape.isHovering()) {\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n if (activeButton === SIDEBAR_BUTTONS_MENU.delete) {\r\n ctx.fillStyle = Colors.red\r\n }\r\n }\r\n\r\n ctx.closePath();\r\n ctx.stroke();\r\n ctx.fill();\r\n ctx.restore();\r\n }\r\n\r\n static drawShapeCrownMoldings = (ctx, staticOffset, shape) => {\r\n let lines = shape.getLines();\r\n //ctx.beginPath();\r\n for (let i = 0; i < lines.length; i++) {\r\n lines[i].staticOffset = staticOffset;\r\n if (lines[i].getState().attachedItems.isWithCrownMolding) {\r\n const crownMoldingPoints = getLineCrownMoldingPoints(lines[i]);\r\n ctx.save();\r\n if (lines[i].isHovering()) {\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n if (activeButton === SIDEBAR_BUTTONS_MENU.delete) {\r\n ctx.strokeStyle = Colors.red\r\n }\r\n }\r\n RenderCabinets.renderCrownMolding(ctx, crownMoldingPoints);\r\n ctx.restore();\r\n }\r\n lines[i].staticOffset = null;\r\n }\r\n }\r\n\r\n static drawShapeEndCap = (ctx, staticOffset, shape) => {\r\n let lines = shape.getLines();\r\n //ctx.beginPath();\r\n for (let i = 0; i < lines.length; i++) {\r\n lines[i].staticOffset = staticOffset;\r\n const lineState = lines[i].getState();\r\n if (lineState.attachedItems && lineState.attachedItems.isWithEndCap) {\r\n ctx.save();\r\n if (lines[i].isHovering()) {\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n if (activeButton === SIDEBAR_BUTTONS_MENU.delete) {\r\n ctx.strokeStyle = Colors.red\r\n }\r\n }\r\n RenderCabinets.renderEndCap(ctx, lines[i]);\r\n ctx.restore();\r\n }\r\n lines[i].staticOffset = null;\r\n }\r\n }\r\n\r\n static drawHandles = (ctx, shape) => {\r\n let lines = shape.getLines();\r\n for (let i = 0; i < lines.length; i++) {\r\n if (lines[i].isWithHandle()) {\r\n const midPoint = getMidPoint(lines[i].from, lines[i].to);\r\n const renderPosition = getPointField(midPoint.x, midPoint.y, shape);\r\n RenderFigures.renderHandle(ctx, renderPosition);\r\n }\r\n }\r\n }\r\n\r\n static renderDevMode = (ctx, shape) => {\r\n // render __intersectionPoints\r\n const intersectionPoints = shape.shapeAbsolute.getIntersectionPoints()\r\n if (intersectionPoints) {\r\n for (let i in intersectionPoints) {\r\n intersectionPoints[i].forEach(intPoint => {\r\n ctx.beginPath();\r\n ctx.arc(intPoint.x, intPoint.y, 20, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n ctx.closePath();\r\n })\r\n }\r\n }\r\n // render slabPos\r\n ctx.beginPath();\r\n let pf = getPointField(shape.slabPos.x, shape.slabPos.y);\r\n ctx.arc(pf.x, pf.y, 10, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n ctx.closePath();\r\n\r\n // render absolutePos\r\n const absolutePos = shape.shapeAbsolute.getAbsolutePosition();\r\n if (absolutePos) {\r\n ctx.beginPath();\r\n ctx.strokeStyle = '#a02f2f';\r\n pf = getPointField(absolutePos.x, absolutePos.y)\r\n ctx.arc(pf.x, pf.y, 5, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n ctx.closePath();\r\n }\r\n }\r\n}\r\n","import clone from 'lodash/clone';\r\n\r\nimport workspace from \"../workspace\";\r\nimport {POINT_PROPERTY} from \"../../../../constants\";\r\nimport {\r\n getCountertopArea,\r\n //getExportedManualCalculateBacksplashes,\r\n getExportedManualCalculateCountertops,\r\n //getExportedManualCalculateEdges,\r\n getSlabImagesAreaGrouped,\r\n manualCalculationsCountertopArea\r\n} from \"../../../../helpers/sqftCalculations\";\r\nimport config from \"../../store/sqftConfig\";\r\nimport store from \"./../../../../../../store\";\r\nimport sqftImageManager from \"../../store/sqftImageManager\";\r\nimport slabWorkspace from \"../slab/slabWorkspace\";\r\nimport {loaderDisable, loaderEnable} from \"../../../../../ui/loaderView\";\r\nimport workspaceControllers, {getControllersExportData} from \"../../store/workspaceControllers\";\r\nimport {getQtCatName} from \"../../../../helpers/sqftQuotesHelper\";\r\nimport {\r\n SHAPE_PART_IDS_FROM_ADDITIONAL_SHAPES_LIST,\r\n} from \"../../../../constantsFeature\";\r\nimport {loadScriptPromise} from \"../../../../../../misc/loadScript\";\r\nimport {ASYNC_SCRIPTS} from \"../../../../../../loadingLogic\";\r\n\r\nexport const prepareSQFTData = async () => {\r\n const state = store.getState();\r\n const roomsWithVisitedSlabTool = state.sqftSlabState.roomsWithVisitedSlabTool;\r\n const showManualCalculation = state.sqftManualCalculationState.showManualCalculation;\r\n const slabImages = state.sqftSlabState.croppedSlabImages;\r\n const measureUnit = state.sqftState.measureUnit;\r\n const miteredEdges = workspace.miteredController ? workspace.miteredController.getExportedMiteredEdges() : [];\r\n let shapesList = workspace.getShapes()\r\n .filter(shp => { return shp.export &&\r\n !SHAPE_PART_IDS_FROM_ADDITIONAL_SHAPES_LIST.includes(shp.partId)\r\n })\r\n .map(shp => shp.export())\r\n .concat(miteredEdges);\r\n\r\n const totalSQFTArea = getCountertopArea();\r\n const qtCatName = getQtCatName();\r\n\r\n let workspaceCenter = clone(workspace.getCenter());\r\n const sqftApplianceImages = workspace.resultImages.getCanvasApplianceImages();\r\n\r\n const sqFtSlabImage = roomsWithVisitedSlabTool.includes(qtCatName) && slabImages && slabImages.length > 0 ? workspace.resultImages.getSlabResultImage(config.defaultScaleExport) : \"\";\r\n const sqFtSlabCalcImage = roomsWithVisitedSlabTool.includes(qtCatName) ? workspace.resultImages.getSlabCalcImage(config.defaultScaleExport) : \"\";\r\n const sqftCanvasImage = await getCanvasImage(showManualCalculation);\r\n const images3D = workspaceControllers.images3d.getResources();\r\n\r\n workspace.setCenter(workspaceCenter.x * 2 , workspaceCenter.y * 2);\r\n\r\n //save images local (for dev purposes)\r\n\r\n // const link = document.createElement(\"a\");\r\n // link.href = sqFtSlabImage.replace(\"image/png\", \"image/octet-stream\");\r\n // link.download = 'slabImage' + Date.now() + '.png';\r\n // document.body.appendChild(link);\r\n // link.click();\r\n // document.body.removeChild(link);\r\n\r\n return {\r\n bumpouts: workspace.getBumpouts(),\r\n canvasImage: sqftCanvasImage,\r\n sqFtSlabImage: sqFtSlabImage,\r\n sqFtSlabCalcImage: sqFtSlabCalcImage,\r\n sqftApplianceImages: sqftApplianceImages,\r\n images3D: images3D,\r\n slabImages: sqftImageManager.getExportedSlabImages(),\r\n measureUnit: measureUnit,\r\n sinks: workspace.getSink(),\r\n radii: workspace.getPointProperty(POINT_PROPERTY.arcLength),\r\n corners: workspace.getPointProperty(POINT_PROPERTY.angle),\r\n //walls: workspace.getShapeType('wall'),\r\n totalInches: totalSQFTArea.totalArea,\r\n shapeLength: totalSQFTArea.shapeLength,\r\n objIds: workspace.getObjIds(),\r\n removedFeatures: workspaceControllers.removedFeatures.getResources(),\r\n textBoxes: workspace.textBoxManager.getExportedTextBoxes(),\r\n slabAdditionalShapesList: slabWorkspace.slabAdditionalShapes.exportData(),\r\n slabImagesTotalArea: getSlabImagesAreaGrouped(),\r\n squareFeet: showManualCalculation ? manualCalculationsCountertopArea(): totalSQFTArea.totalAreaToMeasureUnit,\r\n //edges: showManualCalculation ? getExportedManualCalculateEdges() : workspace.getShapeType('edge').concat(miteredEdges),\r\n //backsplashes: showManualCalculation ? getExportedManualCalculateBacksplashes() : workspace.getShapeType('backsplash'),\r\n countertops: showManualCalculation ? getExportedManualCalculateCountertops() : shapesList,\r\n manualCalculate: showManualCalculation,\r\n controllers: getControllersExportData(),\r\n underlayment: workspace.underlaymentController ? workspace.underlaymentController.exportData() : []\r\n }\r\n};\r\n\r\nconst getCanvasImage = async (showManualCalculation) => {\r\n if (showManualCalculation) {\r\n const manualDiv = document.querySelector(\".manual-window\");\r\n if (manualDiv) {\r\n loaderEnable(\"loader.savingQuoteText\");\r\n manualDiv.classList.add(\"manual-window--screenshot\");\r\n try {\r\n await loadScriptPromise(ASYNC_SCRIPTS.html2canvas, \"html2canvas\");\r\n const canvasElement = await window.html2canvas(manualDiv);\r\n manualDiv.classList.remove(\"manual-window--screenshot\");\r\n loaderDisable();\r\n if (canvasElement && canvasElement.toDataURL) {\r\n return canvasElement.toDataURL(\"image/jpeg\", 0.7) // we don't need super quality here\r\n }\r\n } catch (e) {\r\n loaderDisable();\r\n }\r\n }\r\n }\r\n return workspace.resultImages.getCanvasImageScaled(config.defaultScaleExport);\r\n};\r\n","import $ from \"jquery\";\r\nimport eventManager from \"../../store/sqftEventManager\";\r\nimport Config from \"../../store/sqftConfig\";\r\nimport workspace from \"../workspace\";\r\nimport Cursor from \"./cursor\";\r\nimport MiteredOverlay from \"../shapes/overlays/mitered\";\r\nimport {\r\n inchesToMm,\r\n measureDistanceToInches,\r\n mmToInches,\r\n} from \"../../../../helpers/sqftHelper\";\r\nimport {iconPlusBlue} from \"../../../../assetsSQFT\";\r\nimport store from \"../../../../../../store\";\r\nimport {\r\n addMiteredSection,\r\n changeMiteredSection,\r\n deleteMiteredSection\r\n} from \"../../../../../../actions/sqftMiteredFunctions\";\r\nimport {updateSQFTCalculations} from \"../../../../../../actions/sqftFunctions\";\r\nimport {\r\n EDGE_LABELS,\r\n MITERED_OVERLAY_TYPE,\r\n RESOURCE_ATTACHED_TO_TYPE,\r\n SIDEBAR_BUTTONS_MENU, SIDEBAR_HIDDEN_BUTTONS,\r\n SIDEBAR_NAVIGATION_BUTTONS\r\n} from \"../../../../constants\";\r\nimport {setSQFTMenuOpened, setSQFTMenuOpenedLock} from \"../../../../../../actions/sqftMenuFunctions\";\r\nimport {attachResource} from \"./resourseCanas\";\r\nimport {getEdgeFeatures} from \"../../../../helpers/shapeHelper\";\r\nimport {getMiterEdgeFeature, getMiterUnderwrap} from \"../../../../helpers/featureHelper\";\r\n\r\nexport default class MiteredController {\r\n cursor;\r\n design = {\r\n imgSrc: iconPlusBlue\r\n };\r\n nodes = {\r\n miteredSectionsHTML: $('#mitered-sections'),\r\n };\r\n miteredSections = [];\r\n\r\n createCursor = () => {\r\n this.cursor = new Cursor();\r\n this.cursor.setCursorImage(this.design.imgSrc);\r\n eventManager.setCursor('mitered-select', this, true);\r\n };\r\n\r\n registerEvents = () => {\r\n eventManager.addEvent(\r\n eventManager.events.MOUSE_UP,\r\n this.onMouseUp,\r\n this,\r\n eventManager.priorities.OVERALL\r\n );\r\n };\r\n\r\n attachMiteredEdge = (seg) => {\r\n if (seg && !seg.isWithMitered() && !seg.isWithBumpout()) {\r\n //add tool\r\n attachResource(seg, null, RESOURCE_ATTACHED_TO_TYPE.mitered, null, null, '', 0, null, null, false);\r\n\r\n //add green edge\r\n const miterEdgeFeature = getMiterEdgeFeature();\r\n if (miterEdgeFeature) {\r\n const name = miterEdgeFeature.getFeatureName();\r\n attachResource(seg, null, RESOURCE_ATTACHED_TO_TYPE.edge, miterEdgeFeature.dbFeature.id, null, name);\r\n }\r\n }\r\n };\r\n\r\n attachMiteredUnderwrapEdge = (seg) => {\r\n if (seg && !seg.isWithMitered() && !seg.isWithBumpout()) {\r\n //add tool\r\n attachResource(seg, null, RESOURCE_ATTACHED_TO_TYPE.mitered, null, null, '', 0, null, null, false);\r\n\r\n //add green edge\r\n const miterEdgeFeature = getMiterUnderwrap();\r\n if (miterEdgeFeature) {\r\n const name = miterEdgeFeature.getFeatureName();\r\n attachResource(seg, null, RESOURCE_ATTACHED_TO_TYPE.edge, miterEdgeFeature.dbFeature.id, null, name);\r\n }\r\n }\r\n };\r\n\r\n onMouseUp = (mousePos) => {\r\n void mousePos;\r\n let hoverShape = workspace.getHoverShape();\r\n\r\n if (hoverShape && hoverShape.getHoverSegment) {\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n const activeSubMenuButton = reduxState.sqftMenuState.activeSubMenuButton;\r\n if (activeButton === SIDEBAR_NAVIGATION_BUTTONS.mitered || activeSubMenuButton === SIDEBAR_HIDDEN_BUTTONS.buttonMitered) {\r\n let seg = hoverShape.getHoverSegment();\r\n if (seg && seg.isWithMitered() && reduxState.sqftMenuState.activeButton === SIDEBAR_BUTTONS_MENU.delete) {\r\n seg.deleteMitered();\r\n } else if (seg && seg.isWithMitered()) {\r\n void 0;\r\n } else {\r\n this.attachMiteredEdge(seg, this.cursor.cursorImage);\r\n }\r\n }\r\n }\r\n\r\n this.cursor.checkForRestoreCursor();\r\n };\r\n\r\n addSection = (miteredSection) => {\r\n const reduxState = store.getState();\r\n store.dispatch(addMiteredSection(miteredSection));\r\n store.dispatch(setSQFTMenuOpened(SIDEBAR_NAVIGATION_BUTTONS.mitered));\r\n const updateCalculations = reduxState.sqftState.updateCalculations;\r\n store.dispatch(updateSQFTCalculations(updateCalculations + 1));\r\n };\r\n\r\n updateSection = (miteredSection) => {\r\n store.dispatch(changeMiteredSection(miteredSection));\r\n store.dispatch(setSQFTMenuOpened(SIDEBAR_NAVIGATION_BUTTONS.mitered));\r\n store.dispatch(setSQFTMenuOpenedLock(true));\r\n\r\n const reduxState = store.getState();\r\n const updateCalculations = reduxState.sqftState.updateCalculations;\r\n store.dispatch(updateSQFTCalculations(updateCalculations + 1));\r\n }\r\n\r\n deleteSection = (miteredOverlay) => {\r\n store.dispatch(deleteMiteredSection(miteredOverlay.id));\r\n };\r\n\r\n createMiteredOverlay = (line) => {\r\n const reduxState = store.getState();\r\n const miteredSections = reduxState.sqftMiteredState.miteredSections;\r\n\r\n return new MiteredOverlay(line, miteredSections.length + 1, MITERED_OVERLAY_TYPE.mitered)\r\n };\r\n\r\n destroy = (protect, revertBackAfterMouseUp) => {\r\n if (revertBackAfterMouseUp) {\r\n eventManager.removeEvent(self, eventManager.events.RENDER); //remove render only, but wait for mouse up to set cursor again\r\n this.isWaitingToRestoreCursor = true;\r\n } else {\r\n this.deregisterEvents();\r\n }\r\n //this.hide();\r\n };\r\n\r\n deregisterEvents() {\r\n eventManager.resetCursor(this);\r\n eventManager.removeEvent(this);\r\n this.cursor ? this.cursor.deregisterEvents() : null;\r\n Config.highlight.lines = false;\r\n }\r\n\r\n static getTotalArea = () => {\r\n let miteredSections = workspace.getMiteredSections();\r\n let miteredSectionsArea = 0;\r\n for (let i = 0; i < miteredSections.length; i++) {\r\n miteredSectionsArea += miteredSections[i] ? miteredSections[i].getMiteredToolTotalArea() : null;\r\n }\r\n\r\n return miteredSectionsArea;\r\n };\r\n\r\n onMeasureUnitChange = () => {\r\n let miteredSections = workspace.getMiteredSections();\r\n let miteredSectionsArea = 0;\r\n for (let i = 0; i < miteredSections.length; i++) {\r\n let segments = miteredSections[i].getSegments();\r\n\r\n segments.map((segment) => {\r\n segment.height = Config.measureUnit === \"Metric\"\r\n ? inchesToMm(segment.height)\r\n : mmToInches(segment.height);\r\n\r\n if (segment.thickness) {\r\n segment.thickness.value = Config.measureUnit === \"Metric\"\r\n ? inchesToMm(segment.thickness.value)\r\n : mmToInches(segment.thickness.value)\r\n }\r\n });\r\n\r\n miteredSections[i].heightNumberText.value = segments[0].height\r\n }\r\n\r\n return miteredSectionsArea;\r\n };\r\n\r\n getTransformedMeasureUnit = (value) => {\r\n return Config.measureUnit === \"Metric\"\r\n ? measureDistanceToInches(value).millimeters // ? distanceToMillimeters(inchesToMm(segment.length.value))\r\n : value;\r\n };\r\n\r\n getEdgesLength = () => {\r\n let additionalLength = 0;\r\n const lines = workspace.getLines();\r\n for (const line of lines) {\r\n if (line.from.getMiteredFeatureId()) {\r\n additionalLength += this.getEdgeLengthValue();\r\n }\r\n }\r\n\r\n return additionalLength\r\n }\r\n\r\n getEdgeLengthValue = () => {\r\n return Config.measureUnit === \"Imperial\"\r\n ? (2 * 33) / 40\r\n : (2 * 900) / 1000;\r\n }\r\n\r\n getExportedMiteredEdges = () => {\r\n let addedEdges = [];\r\n const lines = workspace.getLines();\r\n for (const line of lines) {\r\n const miteredFeatureId = line.from.getMiteredFeatureId();\r\n if (miteredFeatureId) {\r\n const edgeLengthValue = this.getEdgeLengthValue();\r\n const navItems = getEdgeFeatures();\r\n let edgeFeature = navItems.find(edge => edge.part.dbFeature.id === miteredFeatureId);\r\n\r\n addedEdges.push({\r\n partId: EDGE_LABELS.edge,\r\n type: EDGE_LABELS.edge,\r\n name: edgeFeature ? workspace.intl.formatMessage({id: edgeFeature.part.dbFeature.sharedFeatureName}) : \"\",\r\n featureId: miteredFeatureId,\r\n segments: 1,\r\n length: edgeLengthValue,\r\n area: edgeLengthValue\r\n });\r\n }\r\n }\r\n\r\n return addedEdges\r\n }\r\n}\r\n","import * as types from \"./actionTypes\";\r\n\r\nexport const setMiteredSections = (miteredSections) => ({\r\n type: types.SET_MITERED_SECTIONS,\r\n payload: {miteredSections}\r\n});\r\n\r\nexport const addMiteredSection = (miteredSection) => ({\r\n type: types.ADD_MITERED_SECTION,\r\n payload: miteredSection\r\n});\r\n\r\nexport const changeMiteredSection = (miteredSection) => ({\r\n type: types.CHANGE_MITERED_SECTION,\r\n payload: miteredSection\r\n});\r\n\r\nexport const deleteMiteredSection = (id) => ({\r\n type: types.DELETE_MITERED_SECTION,\r\n payload: {id}\r\n});\r\n\r\nexport const deleteAllMiteredSections = () => ({\r\n type: types.DELETE_ALL_MITERED_SECTIONS,\r\n payload: {}\r\n});\r\n","import workspace from \"../workspace\";\r\nimport sqftShapeManager from \"../../store/sqftShapeManager\";\r\nimport Rectangle from \"../shapes/layouts/rectangle\";\r\nimport {CABINET_LABELS, SHAPE_PART_ID} from \"../../../../constants\";\r\nimport Polygon from \"../shapes/layouts/polygon\";\r\nimport SlabAdditionalShape from \"../slab/slabAdditionalShape\";\r\nimport {createIroningBoardShape} from \"./cabinetShapesSpecialLayouts\";\r\nimport {getCabinetDimensions, getRelatedFeatureMetadata, getSpecialShape} from \"../../../../helpers/sqft3dArHelper\";\r\n\r\nexport const SHAPE_LAYOUTS = {\r\n // old layout names deprecated\r\n upperLayoutType2: \"upperLayoutType2\",\r\n upperLayoutType4: \"upperLayoutType4\",\r\n upperLayoutType5: \"upperLayoutType5\",\r\n\r\n lowerLayoutType1: \"lowerLayoutType1\",\r\n lowerLayoutType2: \"lowerLayoutType2\",\r\n lowerLayoutType3: \"lowerLayoutType3\",\r\n lowerLayoutType4: \"lowerLayoutType4\",\r\n lowerLayoutType5: \"lowerLayoutType5\",\r\n\r\n // new layout names\r\n rectangle: \"rectangle\",\r\n LowerLCorner: \"LowerLCorner\", //SHAPE_LAYOUTS.lowerLayoutType1,\r\n LowerDullangle: \"LowerDullangle\", //SHAPE_LAYOUTS.lowerLayoutType2,\r\n LowerDualangle: \"LowerDualangle\", //SHAPE_LAYOUTS.lowerLayoutType2,\r\n LowerIroningBoard: \"LowerIroningBoard\",//SHAPE_LAYOUTS.lowerLayoutType3,\r\n LowerDimondShape: \"LowerDimondShape\",//SHAPE_LAYOUTS.lowerLayoutType4,\r\n LowerDimondCorner: \"LowerDimondCorner\",//SHAPE_LAYOUTS.lowerLayoutType5,\r\n\r\n UpperLCorner: \"UpperLCorner\",// SHAPE_LAYOUTS.upperLayoutType2,\r\n UpperDimondShape: \"UpperDimondShape\",//SHAPE_LAYOUTS.upperLayoutType4,\r\n UpperDimondCorner: \"UpperDimondCorner\",//SHAPE_LAYOUTS.upperLayoutType5,\r\n LowerIroningBoardRight: \"LowerIroningBoardRight\",\r\n LowerIroningBoardLeft: \"LowerIroningBoardLeft\",\r\n};\r\n\r\nexport const SHAPE_UPPER_LAYOUTS = [\r\n SHAPE_LAYOUTS.UpperLCorner,\r\n SHAPE_LAYOUTS.UpperDimondShape,\r\n SHAPE_LAYOUTS.UpperDimondCorner,\r\n];\r\n\r\nexport const SHAPE_LOWER_LAYOUTS = [\r\n SHAPE_LAYOUTS.LowerLCorner,\r\n SHAPE_LAYOUTS.LowerDullangle,\r\n SHAPE_LAYOUTS.LowerDualangle,\r\n SHAPE_LAYOUTS.LowerIroningBoard,\r\n SHAPE_LAYOUTS.LowerDimondShape,\r\n SHAPE_LAYOUTS.LowerDimondCorner,\r\n SHAPE_LAYOUTS.LowerIroningBoardRight,\r\n SHAPE_LAYOUTS.LowerIroningBoardLeft,\r\n];\r\nexport const SHAPE_DIAMOND_LAYOUTS = [\r\n SHAPE_LAYOUTS.LowerDimondCorner,\r\n SHAPE_LAYOUTS.LowerDimondShape,\r\n SHAPE_LAYOUTS.UpperDimondCorner,\r\n SHAPE_LAYOUTS.UpperDimondShape,\r\n];\r\n\r\nexport const IRONING_BOARD_DIRECTION = {\r\n left: 'left',\r\n right: 'right'\r\n}\r\n\r\nexport const SHAPE_LAYOUTS_WITHOUT_HANDLES = [\r\n SHAPE_LAYOUTS.LowerIroningBoardRight,\r\n SHAPE_LAYOUTS.LowerIroningBoardLeft,\r\n]\r\n\r\n// const LAYOUT_TYPES = {\r\n// upper: SHAPE_UPPER_LAYOUTS,\r\n// lower: SHAPE_LOWER_LAYOUTS,\r\n// };\r\n\r\nclass CabinetShapes {\r\n constructor() {\r\n this.upperShapes = [];\r\n this.lowerShapes = [];\r\n this.otherShapes = [];\r\n this.additionalShapes = [];\r\n this.shapes = {\r\n /**\r\n * |‾‾‾‾|\r\n * | /\r\n * |__/\r\n */\r\n UpperDimondCorner: [\r\n // 'SM-DCW2436', 'SW-DCW2430', 'SM-DCW2442',\r\n // 'Providence Cabinets Shaker White 27\" W, 36\" H Diagonal Corner Wall Cabinet',\r\n // 'Providence Cabinets Shaker White 27\" W, 42\" H Diagonal Corner Wall Cabinet',\r\n // 'SW-W1230', 'SM-W1236', 'SM-W1242',\r\n ],\r\n /**\r\n * |‾‾‾‾|\r\n * | _|\r\n * |__|\r\n */\r\n UpperLCorner: [\r\n // 'Providence Cabinets Shaker White Corner Wall Cabinet 24\"W 36\" H',\r\n // 'Providence Cabinets Shaker White 24\" W, 30\" H Diagonal Corner Wall Cabinet',\r\n // 'Providence Cabinets Shaker White Corner Wall Cabinet 24\"W 30\"H',\r\n // 'Providence Cabinets Shaker White Corner Wall Cabinet 24\"W 42\"H',\r\n // 'Providence Cabinets Shaker White Corner Wall Cabinet 24\"W 42\" H',\r\n ],\r\n /**\r\n * |‾‾‾‾‾|\r\n * | __|\r\n * |__|\r\n */\r\n LowerLCorner: [\r\n //'SM-ERB36/BER36', 'Providence Cabinets Shaker White 33\" Lazy Susan'\r\n ],\r\n /**\r\n * |‾‾‾/\r\n * | >\r\n * |/\r\n */\r\n LowerDullangle: [\r\n //'SW-BEC24'\r\n ],\r\n /**\r\n * |‾‾‾|\r\n * | |\r\n * | )\r\n */\r\n LowerIroningBoard: [\r\n //'SW-BES12'\r\n ],\r\n LowerIroningBoardRight: [\r\n //'SW-BES12'\r\n ],\r\n /**\r\n * |‾‾‾‾|\r\n * | /\r\n * |__/\r\n */\r\n UpperDimondShape: [],\r\n };\r\n this.specialShapes = {\r\n LowerLCorner: SHAPE_LAYOUTS.LowerLCorner,\r\n LowerDullangle: SHAPE_LAYOUTS.LowerDullangle,\r\n LowerDualangle: SHAPE_LAYOUTS.LowerDualangle,\r\n LowerIroningBoard: SHAPE_LAYOUTS.LowerIroningBoard,\r\n LowerDimondShape: SHAPE_LAYOUTS.LowerDimondShape,\r\n LowerDimondCorner: SHAPE_LAYOUTS.LowerDimondCorner,\r\n LowerIroningBoardRight: SHAPE_LAYOUTS.LowerIroningBoardRight,\r\n LowerIroningBoardLeft: SHAPE_LAYOUTS.LowerIroningBoardLeft,\r\n\r\n UpperLCorner: SHAPE_LAYOUTS.UpperLCorner,\r\n UpperDimondShape: SHAPE_LAYOUTS.UpperDimondShape,\r\n UpperDimondCorner: SHAPE_LAYOUTS.UpperDimondCorner,\r\n }\r\n }\r\n\r\n addShape = (feature, parentFeature, position = null) => {\r\n const dimensions = getCabinetDimensions(feature, parentFeature);\r\n if (feature.partId === CABINET_LABELS.upper_cabinet_boxes) {\r\n return this.addShapeHelper(\r\n this.upperShapes, 'square', feature.partId,\r\n this.getShapeLayout(feature, parentFeature), dimensions, position, feature, parentFeature\r\n );\r\n } else if (feature.partId === CABINET_LABELS.lower_cabinet_boxes) {\r\n return this.addShapeHelper(\r\n this.lowerShapes, 'square', feature.partId,\r\n this.getShapeLayout(feature, parentFeature), dimensions, position, feature, parentFeature\r\n );\r\n } else {\r\n return this.addShapeHelper(\r\n this.otherShapes, 'square', feature.partId,\r\n this.getShapeLayout(feature, parentFeature), dimensions, position, feature, parentFeature\r\n );\r\n }\r\n };\r\n\r\n addShapeHelper = (shapeArray, shapeType, partId, shapeLayout, dimensions, position, feature, parentFeature) => {\r\n const shapeLines = this.getShapeLines(shapeLayout, dimensions);\r\n const shapeParams = { shapeCabinet: true, canSnap: true, ...dimensions, shapeLayout };\r\n const shapeId = sqftShapeManager.addShape(shapeLines, shapeType, position, partId, null, shapeParams);\r\n sqftShapeManager.setShapeFeatureId(shapeId, feature.dbFeature.id);\r\n sqftShapeManager.setShapeRelatedParentFeatureId(shapeId, parentFeature.dbFeature.id);\r\n shapeArray.push(shapeId);\r\n console.log(\"Feature SharedFeatureName\", feature.dbFeature.sharedFeatureName);\r\n console.log(\"Feature Metadata\", getRelatedFeatureMetadata(feature, parentFeature));\r\n return shapeId;\r\n };\r\n\r\n getShapeLayout = (feature, parentFeature) => {\r\n const thirdPartyAR3DMetaData = getRelatedFeatureMetadata(feature, parentFeature);\r\n const specialShape = getSpecialShape(thirdPartyAR3DMetaData);\r\n if (specialShape) {\r\n const specialLayoutName = specialShape.replace(/\\s/g, \"\");\r\n if (this.specialShapes[specialLayoutName]) {\r\n return this.specialShapes[specialLayoutName]\r\n }\r\n }\r\n\r\n // Hardcoded Layouts\r\n for (const layout of Object.keys(SHAPE_LAYOUTS)) {\r\n if (this.shapes[layout] && feature.dbFeature && this.shapes[layout].includes(feature.dbFeature.sharedFeatureName) ||\r\n (feature.part && this.shapes[layout].includes(feature.part.dbFeature.sharedFeatureName))) {\r\n return layout;\r\n }\r\n }\r\n\r\n return SHAPE_LAYOUTS.rectangle;\r\n };\r\n\r\n getShapeLines = (shapeLayout, { width, height, depth, diamondLength}) => {\r\n void height;\r\n let margin = diamondLength ? width - diamondLength : 0;\r\n switch (shapeLayout) {\r\n case SHAPE_LAYOUTS.lowerLayoutType1:\r\n case SHAPE_LAYOUTS.LowerLCorner:\r\n case SHAPE_LAYOUTS.upperLayoutType2:\r\n case SHAPE_LAYOUTS.UpperLCorner:\r\n return new Polygon(this.createPoints([\r\n { x: 0, y: 0 },\r\n { x: width, y: 0 },\r\n { x: width, y: depth },\r\n { x: depth, y: depth },\r\n { x: depth, y: width },\r\n { x: 0, y: width }\r\n ]), true, true);\r\n case SHAPE_LAYOUTS.lowerLayoutType2:\r\n case SHAPE_LAYOUTS.LowerDullangle:\r\n case SHAPE_LAYOUTS.LowerDualangle:\r\n return new Polygon(this.createPoints([\r\n { x: 0, y: 0 },\r\n { x: width, y: 0 },\r\n { x: width - 8, y: depth - 8 },\r\n { x: 0, y: depth }\r\n ]), true, true);\r\n case SHAPE_LAYOUTS.lowerLayoutType3:\r\n case SHAPE_LAYOUTS.LowerIroningBoard:\r\n case SHAPE_LAYOUTS.LowerIroningBoardRight:\r\n return createIroningBoardShape(width, depth, width, IRONING_BOARD_DIRECTION.right);\r\n case SHAPE_LAYOUTS.LowerIroningBoardLeft:\r\n return createIroningBoardShape(width, depth, width, IRONING_BOARD_DIRECTION.left);\r\n case SHAPE_LAYOUTS.lowerLayoutType4:\r\n case SHAPE_LAYOUTS.LowerDimondShape:\r\n case SHAPE_LAYOUTS.upperLayoutType4:\r\n case SHAPE_LAYOUTS.UpperDimondShape:\r\n return new Polygon(this.createPoints([\r\n { x: margin, y: 0 },\r\n { x: width, y: 0 },\r\n { x: width, y: depth },\r\n { x: depth, y: width },\r\n { x: 0, y: width },\r\n { x: 0, y: margin }\r\n ]), true, true);\r\n case SHAPE_LAYOUTS.lowerLayoutType5:\r\n case SHAPE_LAYOUTS.LowerDimondCorner:\r\n case SHAPE_LAYOUTS.upperLayoutType5:\r\n case SHAPE_LAYOUTS.UpperDimondCorner:\r\n return new Polygon(this.createPoints([\r\n { x: margin, y: 0 },\r\n { x: width, y: 0 },\r\n { x: width, y: depth },\r\n { x: depth, y: depth },\r\n { x: depth, y: width },\r\n { x: 0, y: width },\r\n { x: 0, y: margin }\r\n ]), true, true);\r\n default:\r\n return new Rectangle(width, depth);\r\n }\r\n };\r\n\r\n createPoints = (coords) => coords;\r\n\r\n resetUpperShapes = () => {\r\n this.upperShapes = [];\r\n };\r\n\r\n importData = (data) => {\r\n //this.resetBacksplashes();\r\n data.forEach(activeBacksplashData => {\r\n const shape = workspace.importShape(activeBacksplashData.backsplashShape);\r\n shape.deregisterEvents();\r\n const line = workspace.getLineById(activeBacksplashData.line.id);\r\n const slabAdditionalShape = new SlabAdditionalShape(line, shape.id);\r\n this.addActiveBacksplash(slabAdditionalShape);\r\n });\r\n };\r\n\r\n exportData = () => {\r\n return this.additionalShapes\r\n .filter(slab => workspace.getShapeById(slab.backsplashShapeId).partId !== SHAPE_PART_ID.seamPiece)\r\n .map(slab => ({\r\n backsplashShape: workspace.getShapeById(slab.backsplashShapeId).export(),\r\n line: slab.line.export(),\r\n }));\r\n };\r\n\r\n addActiveBacksplash = (slabAdditionalShape) => {\r\n this.additionalShapes.push(slabAdditionalShape);\r\n };\r\n\r\n findAdditionalShapeByLine = (line) => {\r\n return this.additionalShapes.find(additionalShape => additionalShape.line.id === line.id);\r\n };\r\n\r\n removeActiveBacksplashByLine = (line) => {\r\n this.additionalShapes = this.additionalShapes.filter(shape => {\r\n if (shape.line.id === line.id) {\r\n workspace.removeShapeById(shape.backsplashShapeId);\r\n return false;\r\n }\r\n return true;\r\n });\r\n };\r\n\r\n removeShapeFromList = (shapeToRemove) => {\r\n this.additionalShapes = this.additionalShapes.filter(additionalShape => additionalShape.backsplashShapeId !== shapeToRemove.id);\r\n };\r\n}\r\n\r\nexport default CabinetShapes;\r\n","import store from \"../../../../../store\";\r\nimport workspace from \"../core/workspace\";\r\nimport {setSqftCroppedSlabImages} from \"../../../../../actions/sqftSlabFunctions\";\r\nimport sqftEventManager from \"./sqftEventManager\";\r\nimport MovableImage from \"../core/shapes/movableImage\";\r\nimport {APPLIANCES_THAT_SHOULD_RENDER_MEASUREMENTS_INSIDE_THE_SHAPE, SHAPE_TYPE} from \"../../../constants\";\r\n\r\nconst sqftImageManager = {\r\n getAppliances: function() {\r\n const shapes = workspace.getShapes();\r\n return shapes.filter(shp => shp.type === SHAPE_TYPE.appliances);\r\n },\r\n getSlabImages: function() {\r\n const state = store.getState();\r\n return state.sqftSlabState.croppedSlabImages;\r\n },\r\n getAppliancesThatShouldRenderMeasurementsInsideTheShape: function() {\r\n const shapes = workspace.getShapes();\r\n return shapes.filter(shp => shp.type === SHAPE_TYPE.appliances\r\n && APPLIANCES_THAT_SHOULD_RENDER_MEASUREMENTS_INSIDE_THE_SHAPE.includes(shp.subType));\r\n },\r\n hideSlabImages: function() {\r\n let movableImages = store.getState().sqftSlabState.croppedSlabImages;\r\n for (let i = movableImages.length - 1; i >= 0; i--) {\r\n movableImages[i].deregisterEvents();\r\n }\r\n },\r\n restoreSlabImages: function() {\r\n let movableImages = store.getState().sqftSlabState.croppedSlabImages;\r\n for (let i = movableImages.length - 1; i >= 0; i--) {\r\n movableImages[i].reInitEvents();\r\n }\r\n },\r\n getExportedSlabImages: function () {\r\n let slabState = store.getState().sqftSlabState;\r\n let croppedImages = slabState.croppedSlabImages;\r\n let exportData = [];\r\n for(let croppedImage of croppedImages) {\r\n exportData.push(croppedImage.export());\r\n }\r\n\r\n return exportData;\r\n },\r\n\r\n removeAllSlabImages: function () {\r\n const state = store.getState();\r\n let slabImages = state.sqftSlabState.croppedSlabImages;\r\n if (slabImages.length > 0) {\r\n store.dispatch(setSqftCroppedSlabImages([]));\r\n }\r\n },\r\n\r\n /**\r\n * @param {[]} data\r\n */\r\n importSlabImages: function (data) {\r\n if (data.length === 0) {\r\n sqftImageManager.removeAllSlabImages();\r\n return\r\n }\r\n let workspaceImages = [];\r\n for(let movableImageData of data) {\r\n let image = new Image();\r\n image.src = movableImageData.image.src;\r\n\r\n let workspaceImage = workspace.addImage(\r\n image,\r\n movableImageData.size.width,\r\n movableImageData.size.height,\r\n null,\r\n null,\r\n \"slabImage\",\r\n null,\r\n function () {},\r\n movableImageData.pos,\r\n null,\r\n movableImageData.id,\r\n sqftEventManager.priorities.SLAB_IMAGE,\r\n movableImageData.featureId,\r\n true\r\n );\r\n\r\n workspaceImage.importData({isDisabledInPopup: movableImageData.isDisabledInPopup});\r\n workspaceImages.push(workspaceImage)\r\n }\r\n\r\n store.dispatch(setSqftCroppedSlabImages(workspaceImages));\r\n },\r\n hideImages: function() {\r\n const shapes = workspace.getShapes();\r\n for (let shape of shapes) {\r\n if (shape instanceof MovableImage && shape.type !== 'slabImage') {\r\n shape.deregisterEvents();\r\n }\r\n }\r\n },\r\n restoreImages: function() {\r\n const shapes = workspace.getShapes();\r\n for (let shape of shapes) {\r\n if (shape instanceof MovableImage && shape.type !== 'slabImage') {\r\n shape.reInitEvents();\r\n }\r\n }\r\n },\r\n hideTextBoxes: function() {\r\n const textBoxes = workspace.textBoxManager.getTextBoxes();\r\n for (let textBox of textBoxes) {\r\n textBox.deregisterEvents();\r\n }\r\n },\r\n restoreTextBoxes: function() {\r\n const textBoxes = workspace.textBoxManager.getTextBoxes();\r\n for (let textBox of textBoxes) {\r\n textBox.reInitEvents();\r\n }\r\n },\r\n getMinMaxShapePoints: function(movableImage) {\r\n let size = movableImage.getSize();\r\n return {\r\n minX : 0,\r\n maxX : size.width,\r\n minY : 0,\r\n maxY : size.height\r\n }\r\n },\r\n};\r\n\r\nexport default sqftImageManager\r\n","import * as types from '../actions/actionTypes';\r\nimport {hardCodeIsModerno} from \"../misc/fabricatorHardcode\";\r\n\r\nexport const DEFAULT_SLAB_IMAGE_PART = 60;\r\nexport const SLAB_IMAGE_TYPES = {\r\n placeholder: \"placeholder\",\r\n upload: \"upload\"\r\n}\r\nconst isModerno = hardCodeIsModerno();\r\n\r\nconst initialState = {\r\n isShowSlabTool: false,\r\n isSlabToolVisited: false,\r\n isMeasurementVisibleInSlabMode: false,\r\n roomsWithVisitedSlabTool: [],\r\n searchText: \"\",\r\n activeSlabId: 0,\r\n selectedImage: \"\",\r\n activeStep: 1,\r\n slabImageType: null,\r\n slabImageHeight: isModerno ? 0 : 60,\r\n slabImageWidth: isModerno ? 0 : 126,\r\n slabAspectRatio: 0,\r\n croppedSlabImages: [],\r\n pricePerArea: 0,\r\n cropperData: {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0,\r\n rotate: 0,\r\n scaleX: 0,\r\n scaleY: 0\r\n },\r\n activeSlabUrl: \"\",\r\n isSizeValidationFailed: false,\r\n isSlabPricingEnabled: true,\r\n};\r\n\r\nexport default function(state = initialState, action) {\r\n\r\n let filteredImages;\r\n switch(action.type) {\r\n case types.SHOW_SLAB_TOOL:\r\n case types.SET_SLAB_TOOL_VISITED:\r\n case types.SET_ACTIVE_SLAB_ID:\r\n case types.SET_ACTIVE_SLAB_URL:\r\n case types.SET_SQFT_SLAB_SEARCH_TEXT:\r\n case types.SET_SQFT_SLAB_ASPECT_RATIO:\r\n case types.SET_SQFT_SLAB_IMAGE_WIDTH:\r\n case types.SET_SQFT_SLAB_IMAGE_HEIGHT:\r\n case types.SET_SQFT_SLAB_ACTIVE_STEP:\r\n case types.SET_SQFT_SLAB_CROPPER_DATA:\r\n case types.SET_PRICE_PER_AREA:\r\n case types.SET_SLAB_IMAGE_TYPE:\r\n case types.SET_IS_MEASUREMENT_VISIBLE_IN_SLAB_MODE:\r\n case types.SET_IS_SIZE_VALIDATION_FAILED:\r\n case types.SET_IS_SLAB_PRICING_ENABLED:\r\n return Object.assign({}, state, {\r\n ...action.payload\r\n });\r\n case types.SET_SQFT_CROPPED_SLAB_IMAGES:\r\n state = {...state, croppedSlabImages: action.payload.croppedSlabImages};\r\n break;\r\n case types.ADD_SQFT_CROPPED_SLAB_IMAGE:\r\n return Object.assign({}, state, {\r\n croppedSlabImages: [...state.croppedSlabImages, action.payload]\r\n });\r\n case types.ADD_ROOM_WITH_VISITED_SLAB_TOOL:\r\n if (!state.roomsWithVisitedSlabTool.includes(action.payload)) {\r\n return Object.assign({}, state, {\r\n roomsWithVisitedSlabTool: [...state.roomsWithVisitedSlabTool, action.payload]\r\n });\r\n }\r\n return state\r\n case types.DELETE_CROPPED_SLAB_IMAGE:\r\n filteredImages = state.croppedSlabImages.filter((row) => row.id !== action.payload.id);\r\n\r\n return Object.assign({}, state, {\r\n croppedSlabImages: filteredImages\r\n });\r\n\r\n }\r\n\r\n return state;\r\n}\r\n","import {IntermediatePart} from \"../../intermediatePart\";\r\nimport {getFeatureIsLocked} from \"../../../../../misc/helpers\";\r\n// import store from \"../../../../../store\";\r\n// import {setLookOverlayOpened} from \"../../../../../actions/lookFunctions\";\r\n// import {LOOK_OVERLAYS} from \"../../constants\";\r\n// import {Shower} from \"../../parts/shower\";\r\n\r\nexport default class TubCommon extends IntermediatePart {\r\n\r\n constructor(isChild) {\r\n super(isChild);\r\n }\r\n\r\n disabledClick() {}\r\n\r\n applyFeatureIfNotCompatible() {\r\n const showerTubComboParent = this.getParent().getParent();\r\n showerTubComboParent.setShowerTubCombo();\r\n showerTubComboParent.setActiveTub(this.bottomTubId);\r\n }\r\n\r\n handleClick(ignoreLocked) {\r\n super.handleClick(ignoreLocked);\r\n\r\n if (this.notAvailableInVisualizer || getFeatureIsLocked(this)) {\r\n return\r\n }\r\n\r\n // const showerTubComboParent = this.getParent().getParent();\r\n // const currentBottomTub = showerTubComboParent.bottomTub;\r\n //\r\n // const showNotCompatibleViewConditions = !window.location.hash.includes(\"visualizer\") &&\r\n // (!showerTubComboParent.showerTubComboIsActive || (\r\n // (this.partId === \"walk_in_tub\" && currentBottomTub !== \"walk_in_tub\") || (this.partId !== \"walk_in_tub\" && currentBottomTub === \"walk_in_tub\")\r\n // ));\r\n //\r\n // if (showNotCompatibleViewConditions) {\r\n // store.dispatch(setLookOverlayOpened(LOOK_OVERLAYS.notCompatiblePopup));\r\n // return;\r\n // }\r\n\r\n this.applyFeatureIfNotCompatible();\r\n this.featureClicked();\r\n }\r\n\r\n getArrayOfConditions() {\r\n let conditions = super.getArrayOfConditions(); //roomLayout\r\n // const layout = this.getParent().layout;\r\n // const showerParent = layout.parts[Shower.id];\r\n // const showerSize = showerParent.showerSize();\r\n // if (showerParent && showerSize) {\r\n // conditions.push({\r\n // propName: \"ShowerSize\",\r\n // propValue: showerSize\r\n // });\r\n // }\r\n return conditions\r\n }\r\n\r\n hideLayerCondition() {\r\n const showerTubComboParent = this.getParent();\r\n return !showerTubComboParent.showerTubComboIsActive || showerTubComboParent.bottomTub !== this.bottomTubId\r\n }\r\n\r\n canDisplayDemoPoint() {\r\n return !this.hideLayerCondition()\r\n }\r\n\r\n}\r\n","import {loaderDisable, loaderEnable} from \"../bvcomponents/ui/loaderView\";\r\nimport store from \"../store\";\r\nimport Analytics from \"../analytics\";\r\nimport {getCustomerById, resetUserPassword, userLogin, userRegister} from \"../api/user-api\";\r\nimport {showQuoteSavedNotification} from \"../bvcomponents/ui/successNotification\";\r\nimport {saveQuote} from \"../api/server-api\";\r\nimport {getAnalyticsEcommerceValues} from \"../analyticsEcommerceParams\";\r\nimport {restorePaymentInfo} from \"../actions/paymentFunctions\";\r\nimport Misc from \"./misc\";\r\nimport {changeUserInfo, toggleUserPopup} from \"../actions/actionFunctions\";\r\n\r\nexport const loginButtonCommonClick = async (updateInputValidations, analyticsLabel) => {\r\n await updateInputValidations();\r\n const errors = store.getState().userState.userInfoErrors;\r\n if (Object.keys(errors).length && Object.keys(errors)\r\n .filter(key => key === \"email\" || key === \"password\")\r\n .some(key => errors[key] && errors[key].length)) {\r\n return false\r\n }\r\n loaderEnable();\r\n Analytics.sendClickEvent(analyticsLabel);\r\n const {currency, value} = getAnalyticsEcommerceValues();\r\n Analytics.sendEcommerceEvent(\"generate_lead\", {currency, value});\r\n\r\n const loginResponse = await userLogin();\r\n loaderDisable();\r\n return loginResponse\r\n}\r\n\r\nexport const saveQuoteAfterSignIn = async () => {\r\n loaderEnable();\r\n const savedSuccess = await saveQuote({submit: true, showReceipt: false});\r\n if (savedSuccess) {\r\n showQuoteSavedNotification();\r\n document.kvConfig.jobId = savedSuccess.jobId;\r\n }\r\n loaderDisable();\r\n return savedSuccess\r\n}\r\n\r\nexport const registerButtonCommonClick = async (updateInputValidations, analyticsLabel, executeAfterRegisterIfUserExist) => {\r\n await updateInputValidations();\r\n const {userState} = store.getState();\r\n const errors = userState.userInfoErrors;\r\n if (Object.keys(errors).length && Object.keys(errors)\r\n .filter(key => key !== \"password\")\r\n .some(key => errors[key] && errors[key].length)) {\r\n return false\r\n }\r\n if (userState.userInfo) {\r\n store.dispatch(restorePaymentInfo({ // on register - fill in also shipping, why not\r\n shippingAddress: {\r\n address1: userState.userInfo.address1,\r\n address2: userState.userInfo.address2,\r\n fullName: userState.userInfo.firstName + \" \" + userState.userInfo.lastName,\r\n city: userState.userInfo.city,\r\n state: userState.userInfo.state,\r\n postal: userState.userInfo.postal,\r\n }\r\n }))\r\n }\r\n loaderEnable();\r\n Analytics.sendClickEvent(analyticsLabel);\r\n const {currency, value} = getAnalyticsEcommerceValues();\r\n Analytics.sendEcommerceEvent(\"generate_lead\", {currency, value});\r\n\r\n const registeredResponse = await userRegister({executeAfterRegisterIfUserExist});\r\n console.log(\"successfully registered\", registeredResponse);\r\n loaderDisable();\r\n return registeredResponse\r\n}\r\n\r\nexport const remindPasswordCommonClick = async (updateInputValidations, analyticsLabel) => {\r\n await updateInputValidations();\r\n const fullStore = store.getState();\r\n // const {language} = fullStore.serverState;\r\n // const {userInfo, userInfoErrors} = fullStore.userState;\r\n const {userInfoErrors} = fullStore.userState;\r\n\r\n if (userInfoErrors.email && userInfoErrors.email.length) {\r\n return false\r\n }\r\n // loaderEnable();\r\n Analytics.sendClickEvent(analyticsLabel);\r\n await resetUserPassword();\r\n // loaderDisable();\r\n}\r\n\r\nexport const getUpdatedUserInfoFromTheResponse = (newUserInfo, responseCustomer, onLoad = false) => {\r\n if (onLoad) {\r\n if (responseCustomer.email) {\r\n newUserInfo.email = responseCustomer.email;\r\n }\r\n if (responseCustomer.fullName) {\r\n newUserInfo.firstName = responseCustomer.fullName;\r\n }\r\n }\r\n if (responseCustomer.phone) {\r\n const oldCountry = responseCustomer.country || responseCustomer.shipping ? responseCustomer.shipping.country : \"\";\r\n const {phoneNumber, country} = Misc.getUserPhoneSplitted(responseCustomer.phone, oldCountry);\r\n newUserInfo.phoneNumber = phoneNumber;\r\n newUserInfo.phone = phoneNumber;\r\n if (country) {\r\n newUserInfo.country = country;\r\n }\r\n }\r\n if (responseCustomer.address) {\r\n [\"address1\", \"address2\", \"postal\", \"city\", \"provence\"].forEach(key => { // removed country, cause it is a string, and we keep object now\r\n if (responseCustomer.address[key]) {\r\n const realKey = (key === \"provence\") ? \"state\" : key;\r\n newUserInfo[realKey] = responseCustomer.address[key];\r\n }\r\n })\r\n }\r\n newUserInfo.shipping = responseCustomer.shipping;\r\n return newUserInfo\r\n}\r\n\r\nexport const tryToSetUserFromUrl = async (url) => {\r\n if (!url || !url.searchParams) {\r\n return\r\n }\r\n const userId = url.searchParams.get(\"u\");\r\n if (!userId) {\r\n return\r\n }\r\n try {\r\n const customerId = +(userId.split(\"/\")[0]);\r\n const responseCustomer = await getCustomerById({\r\n customerId,\r\n });\r\n if (!responseCustomer) {\r\n return\r\n }\r\n const newUserInfo = getUpdatedUserInfoFromTheResponse({}, responseCustomer, true);\r\n store.dispatch(changeUserInfo(newUserInfo));\r\n store.dispatch(toggleUserPopup({\r\n userIsLoggedIn: true,\r\n isPhoneNumberValidated: true\r\n }));\r\n } catch (e) {\r\n console.log(\"couldn't log in customer\", userId);\r\n }\r\n}\r\n\r\nexport const setDealerUserFromFabricator = (fabricatorData) => {\r\n const {userIsLoggedIn} = store.getState().userState;\r\n if (userIsLoggedIn) {\r\n return\r\n }\r\n try {\r\n const addressObject = Array.isArray(fabricatorData.addresses) && fabricatorData.addresses[0]\r\n ? fabricatorData.addresses[0]\r\n : {};\r\n let newUserInfo = getUpdatedUserInfoFromTheResponse({}, fabricatorData, true);\r\n newUserInfo = {\r\n ...newUserInfo,\r\n email: fabricatorData.contactEmail,\r\n password: \"\",\r\n firstName: fabricatorData.companyName || fabricatorData.name,\r\n postal: addressObject.postal || \"\",\r\n isNew: false,\r\n lastName: \"\",\r\n phone2: \"\",\r\n address1: addressObject.address1 || \"\",\r\n address2: addressObject.address2 || \"\",\r\n city: addressObject.city || \"\",\r\n provence: addressObject.provence || \"\",\r\n state: addressObject.state || \"\",\r\n // country: addressObject.country || \"\", // it should be an object, not a string!\r\n };\r\n // console.log(\"fab user\", newUserInfo);\r\n store.dispatch(changeUserInfo(newUserInfo));\r\n store.dispatch(toggleUserPopup({\r\n userIsLoggedIn: true,\r\n isPhoneNumberValidated: true\r\n }));\r\n } catch (e) {\r\n console.log(\"couldn't log in fabricator\", fabricatorData);\r\n }\r\n}\r\n","import invert from \"lodash/invert\";\r\nimport {LayoutType} from \"./constants\";\r\nimport {UseFullSizeImages} from \"../../../config\";\r\nimport {pnpoly} from \"../../../misc/utils\";\r\n\r\nlet layouts = {};\r\nObject.keys(LayoutType).forEach(layoutName => {\r\n layouts[layoutName] = {\r\n Walls: {\r\n Ceiling: 1000,\r\n RightWall: 2000,\r\n LeftWall: 3000,\r\n PopoutWall: 6000,\r\n Backsplash: 4000,\r\n BacksplashRightWall: 4050,\r\n BacksplashLeftWall: 4100,\r\n RightWallBacksplash: 4150,\r\n LeftWallBacksplash: 4200,\r\n // FourInchBacksplash: 12000,\r\n // FullHeightBacksplash: 13000,\r\n // SixHeightBacksplash: 14000,\r\n },\r\n Floor: 5000,\r\n Globals: {\r\n GlobalShadow: 7000,\r\n Baseboard: 8000,\r\n CeilingLights: 9000,\r\n CeilingHighlights: 10000,\r\n Decor1: 25000,\r\n Decor2: 32000,\r\n Decor3: 36500, // center island decor\r\n Decor4: 41000,\r\n },\r\n Cabinet: {\r\n TopCabinetShadow: 15000,\r\n TopCabinetShadowPart2: 15005,\r\n BottomCabinetShadow: 15500,\r\n TopCabinet: 16000,\r\n TopCabinetModuleBox: 16050,\r\n CrownMolding: 17000,\r\n TopCabinet2: 19000, //Crown Molding should be higher than Top cabinet (c) Nikita\r\n TopCabinetModuleBox2: 219050, //Crown Molding should be higher than Top cabinet (c) Nikita\r\n CrownMolding2: 20000,\r\n BottomCabinet: 22000,\r\n BottomCabinetModuleBox: 22050,\r\n BottomCabinet2: 27000,\r\n BottomCabinetModuleBox2: 27050,\r\n TopHandle: 28000,\r\n TopHandle2: 28100,\r\n BottomHandle: 28500,\r\n BottomHandle2: 28750,\r\n Peninsula: 29250,\r\n TopCabinetModules: {},\r\n BottomCabinetModules: {},\r\n },\r\n Appliances: {\r\n Microwave: 21000,\r\n Hood: 18000,\r\n Dishwasher: 23000,\r\n Range: 26000,\r\n Fridge: 29000,\r\n FridgeShadow: 29050,\r\n },\r\n CountertopGroup: {\r\n Countertop: 24000,\r\n Countertop2: 30000,\r\n Sink: 43000,\r\n Faucet: 44000,\r\n Stovetop: 45000,\r\n // Countertop3: 42000,\r\n },\r\n CenterIsland: {\r\n CenterIslandShadow: 29500,\r\n Cabinet: 31000,\r\n Countertop: 36000,\r\n Sink: 37000,\r\n Faucet: 38000,\r\n Stovetop: 38500,\r\n Range: 38750,\r\n ChairsShadow: 35000,\r\n Chairs: 39000,\r\n Handle: 40000,\r\n },\r\n };\r\n});\r\n\r\nlayouts[\"Small\"].Appliances.Fridge = 15750;\r\nlayouts[\"SmallWithPeninsula\"].Appliances.Fridge = 15750;\r\nlayouts[\"SmallWithIsland\"].Appliances.Fridge = 15750;\r\nlayouts[\"SmallWithPeninsulaWithIsland\"].Appliances.Fridge = 15750;\r\nlayouts[\"Small\"].Appliances.FridgeShadow = 15800;\r\nlayouts[\"SmallWithPeninsula\"].Appliances.FridgeShadow = 15800;\r\nlayouts[\"SmallWithIsland\"].Appliances.FridgeShadow = 15800;\r\nlayouts[\"SmallWithPeninsulaWithIsland\"].Appliances.FridgeShadow = 15800;\r\n\r\nlet startTopCabinetZIndex = 17100;\r\nlet startTopCabinetZIndex2 = 21100;\r\n\r\nlet startBottomCabinetZIndex = 22100;\r\nlet startBottomCabinetZIndex2 = 27100;\r\n\r\nObject.keys(LayoutType).forEach(layoutName => {\r\n let moduleTopNumber = 1, moduleBottomNumber = 1;\r\n for (let i = 1; i <= 8; i++) { // 8 modules\r\n for (let k = 1; k <= 64; k++) { // 64 module parts\r\n const module_modulePart = i + \"_\" + k;\r\n layouts[layoutName].Cabinet.TopCabinetModules[module_modulePart] = (i <= 5)\r\n ? startTopCabinetZIndex + (i*100)+ k\r\n : startTopCabinetZIndex2 + (moduleTopNumber*100)+ k;\r\n layouts[layoutName].Cabinet.BottomCabinetModules[module_modulePart] = (i <= 6)\r\n ? startBottomCabinetZIndex + (i*100)+ k\r\n : startBottomCabinetZIndex2 + (moduleBottomNumber*100)+ k;\r\n }\r\n if (i > 5) {\r\n moduleTopNumber++;\r\n }\r\n if (i > 6) {\r\n moduleBottomNumber++;\r\n }\r\n }\r\n});\r\n\r\nconst getLayerDimensions = (zIndex, currentLayout) => {\r\n const fullImagesFactor = UseFullSizeImages ? 185.1851851851852 : 100;\r\n\r\n if ((zIndex >= layouts[currentLayout].Cabinet.TopCabinetModules[\"1_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.TopCabinetModules[\"1_64\"])) {\r\n return {\r\n polygonArray: [[0,(fullImagesFactor/100)*240],[(fullImagesFactor/100)*290,(fullImagesFactor/100)*240],[(fullImagesFactor/100)*290,(fullImagesFactor/100)*400],[0,(fullImagesFactor/100)*400]],\r\n width: (fullImagesFactor/100)*290,\r\n height: (fullImagesFactor/100)*160\r\n };\r\n } else if ((zIndex >= layouts[currentLayout].Cabinet.TopCabinetModules[\"2_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.TopCabinetModules[\"2_64\"])) {\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*260,(fullImagesFactor/100)*270],[(fullImagesFactor/100)*480,(fullImagesFactor/100)*270],[(fullImagesFactor/100)*480,(fullImagesFactor/100)*510],[(fullImagesFactor/100)*260,(fullImagesFactor/100)*510]],\r\n width: (fullImagesFactor/100)*220,\r\n height: (fullImagesFactor/100)*240\r\n };\r\n } else if ((zIndex >= layouts[currentLayout].Cabinet.TopCabinetModules[\"3_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.TopCabinetModules[\"3_64\"])) {\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*470,(fullImagesFactor/100)*300],[(fullImagesFactor/100)*630,(fullImagesFactor/100)*300],[(fullImagesFactor/100)*630,(fullImagesFactor/100)*510],[(fullImagesFactor/100)*470,(fullImagesFactor/100)*510]],\r\n width: (fullImagesFactor/100)*160,\r\n height: (fullImagesFactor/100)*210\r\n };\r\n } else if ((zIndex >= layouts[currentLayout].Cabinet.TopCabinetModules[\"4_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.TopCabinetModules[\"4_64\"])) {\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*620,(fullImagesFactor/100)*310],[(fullImagesFactor/100)*770,(fullImagesFactor/100)*310],[(fullImagesFactor/100)*770,(fullImagesFactor/100)*510],[(fullImagesFactor/100)*620,(fullImagesFactor/100)*510]],\r\n width: (fullImagesFactor/100)*150,\r\n height: (fullImagesFactor/100)*200\r\n };\r\n } else if ((zIndex >= layouts[currentLayout].Cabinet.TopCabinetModules[\"5_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.TopCabinetModules[\"5_64\"])) {\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*750,(fullImagesFactor/100)*280],[(fullImagesFactor/100)*930,(fullImagesFactor/100)*280],[(fullImagesFactor/100)*930,(fullImagesFactor/100)*510],[(fullImagesFactor/100)*750,(fullImagesFactor/100)*280]],\r\n width: (fullImagesFactor/100)*180,\r\n height: (fullImagesFactor/100)*230\r\n };\r\n } else if ((zIndex >= layouts[currentLayout].Cabinet.TopCabinetModules[\"6_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.TopCabinetModules[\"6_64\"])) {\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*910,(fullImagesFactor/100)*260],[(fullImagesFactor/100)*1130,(fullImagesFactor/100)*260],[(fullImagesFactor/100)*1130,(fullImagesFactor/100)*510],[(fullImagesFactor/100)*910,(fullImagesFactor/100)*510]],\r\n width: (fullImagesFactor/100)*220,\r\n height: (fullImagesFactor/100)*250\r\n };\r\n } else if ((zIndex >= layouts[currentLayout].Cabinet.TopCabinetModules[\"7_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.TopCabinetModules[\"7_64\"])) {\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*1120,(fullImagesFactor/100)*220],[(fullImagesFactor/100)*1400,(fullImagesFactor/100)*220],[(fullImagesFactor/100)*1400,(fullImagesFactor/100)*520],[(fullImagesFactor/100)*1120,(fullImagesFactor/100)*520]],\r\n width: (fullImagesFactor/100)*280,\r\n height: (fullImagesFactor/100)*300\r\n };\r\n } else if ((zIndex >= layouts[currentLayout].Cabinet.TopCabinetModules[\"8_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.TopCabinetModules[\"8_64\"])) {\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*1380,(fullImagesFactor/100)*190],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*190],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*520],[(fullImagesFactor/100)*1380,(fullImagesFactor/100)*520]],\r\n width: (fullImagesFactor/100)*240,\r\n height: (fullImagesFactor/100)*330\r\n };\r\n } else if ((zIndex >= layouts[currentLayout].Cabinet.BottomCabinetModules[\"1_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.BottomCabinetModules[\"1_64\"])) {\r\n return {\r\n polygonArray: [[0,(fullImagesFactor/100)*240],[(fullImagesFactor/100)*290,(fullImagesFactor/100)*240],[(fullImagesFactor/100)*290,(fullImagesFactor/100)*400],[0,(fullImagesFactor/100)*400]],\r\n width: (fullImagesFactor/100)*290,\r\n height: (fullImagesFactor/100)*160\r\n };\r\n } else if ((zIndex >= layouts[currentLayout].Cabinet.BottomCabinetModules[\"2_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.BottomCabinetModules[\"2_64\"])) {\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*280,(fullImagesFactor/100)*620],[(fullImagesFactor/100)*480,(fullImagesFactor/100)*620],[(fullImagesFactor/100)*480,(fullImagesFactor/100)*850],[(fullImagesFactor/100)*280,(fullImagesFactor/100)*850]],\r\n width: (fullImagesFactor/100)*200,\r\n height: (fullImagesFactor/100)*230\r\n };\r\n } else if ((zIndex >= layouts[currentLayout].Cabinet.BottomCabinetModules[\"3_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.BottomCabinetModules[\"3_64\"])) {\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*470,(fullImagesFactor/100)*610],[(fullImagesFactor/100)*630,(fullImagesFactor/100)*610],[(fullImagesFactor/100)*630,(fullImagesFactor/100)*800],[(fullImagesFactor/100)*470,(fullImagesFactor/100)*800]],\r\n width: (fullImagesFactor/100)*160,\r\n height: (fullImagesFactor/100)*190\r\n };\r\n } else if ((zIndex >= layouts[currentLayout].Cabinet.BottomCabinetModules[\"4_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.BottomCabinetModules[\"4_64\"])) {\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*630,(fullImagesFactor/100)*600],[(fullImagesFactor/100)*760,(fullImagesFactor/100)*600],[(fullImagesFactor/100)*760,(fullImagesFactor/100)*800],[(fullImagesFactor/100)*630,(fullImagesFactor/100)*800]],\r\n width: (fullImagesFactor/100)*130,\r\n height: (fullImagesFactor/100)*200\r\n };\r\n } else if ((zIndex >= layouts[currentLayout].Cabinet.BottomCabinetModules[\"5_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.BottomCabinetModules[\"5_64\"])) {\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*750,(fullImagesFactor/100)*620],[(fullImagesFactor/100)*920,(fullImagesFactor/100)*620],[(fullImagesFactor/100)*920,(fullImagesFactor/100)*840],[(fullImagesFactor/100)*750,(fullImagesFactor/100)*840]],\r\n width: (fullImagesFactor/100)*170,\r\n height: (fullImagesFactor/100)*220\r\n };\r\n } else if ((zIndex >= layouts[currentLayout].Cabinet.BottomCabinetModules[\"6_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.BottomCabinetModules[\"6_64\"])) {\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*910,(fullImagesFactor/100)*640],[(fullImagesFactor/100)*1130,(fullImagesFactor/100)*640],[(fullImagesFactor/100)*1130,(fullImagesFactor/100)*880],[(fullImagesFactor/100)*910,(fullImagesFactor/100)*880]],\r\n width: (fullImagesFactor/100)*220,\r\n height: (fullImagesFactor/100)*240\r\n };\r\n } else if ((zIndex >= layouts[currentLayout].Cabinet.BottomCabinetModules[\"7_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.BottomCabinetModules[\"7_64\"])) {\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*1110,(fullImagesFactor/100)*660],[(fullImagesFactor/100)*1390,(fullImagesFactor/100)*660],[(fullImagesFactor/100)*1390,(fullImagesFactor/100)*940],[(fullImagesFactor/100)*1110,(fullImagesFactor/100)*940]],\r\n width: (fullImagesFactor/100)*280,\r\n height: (fullImagesFactor/100)*280\r\n };\r\n } else if ((zIndex >= layouts[currentLayout].Cabinet.BottomCabinetModules[\"8_1\"])\r\n && (zIndex <= layouts[currentLayout].Cabinet.BottomCabinetModules[\"8_64\"])) {\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*1380,(fullImagesFactor/100)*690],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*690],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*990],[(fullImagesFactor/100)*1380,(fullImagesFactor/100)*990]],\r\n width: (fullImagesFactor/100)*240,\r\n height: (fullImagesFactor/100)*300\r\n };\r\n }\r\n\r\n switch (zIndex) {\r\n case layouts[currentLayout].Floor:\r\n return {\r\n polygonArray: [[0,(fullImagesFactor/100)*750],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*750],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*1080],[0,(fullImagesFactor/100)*1080]],\r\n width: (fullImagesFactor/100)*1620,\r\n height: (fullImagesFactor/100)*330\r\n };\r\n\r\n //*** Walls ***//\r\n case layouts[currentLayout].Walls.LeftWall:\r\n return {\r\n polygonArray: [[0,(fullImagesFactor/100)*100],[(fullImagesFactor/100)*740,(fullImagesFactor/100)*100],[(fullImagesFactor/100)*740,(fullImagesFactor/100)*900],[0,(fullImagesFactor/100)*900]],\r\n width: (fullImagesFactor/100)*740,\r\n height: (fullImagesFactor/100)*800\r\n };\r\n case layouts[currentLayout].Walls.LeftWallBacksplash:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*210,(fullImagesFactor/100)*500],[(fullImagesFactor/100)*630,(fullImagesFactor/100)*500],[(fullImagesFactor/100)*630,(fullImagesFactor/100)*590],[(fullImagesFactor/100)*210,(fullImagesFactor/100)*590]],\r\n };\r\n case layouts[currentLayout].Walls.RightWall:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*600,(fullImagesFactor/100)*45],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*45],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*970],[(fullImagesFactor/100)*600,(fullImagesFactor/100)*970]],\r\n width: (fullImagesFactor/100)*1020,\r\n height: (fullImagesFactor/100)*925\r\n };\r\n case layouts[currentLayout].Walls.RightWallBacksplash:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*630,(fullImagesFactor/100)*330],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*200],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*580],[(fullImagesFactor/100)*630,(fullImagesFactor/100)*580]],\r\n };\r\n case layouts[currentLayout].Walls.Ceiling:\r\n return {\r\n polygonArray: [[0,0],[(fullImagesFactor/100)*1620,0],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*260],[0,(fullImagesFactor/100)*260]],\r\n width: (fullImagesFactor/100)*1620,\r\n height: (fullImagesFactor/100)*260\r\n };\r\n case layouts[currentLayout].Walls.PopoutWall:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*200,(fullImagesFactor/100)*120],[(fullImagesFactor/100)*740,(fullImagesFactor/100)*120],[(fullImagesFactor/100)*740,(fullImagesFactor/100)*880],[(fullImagesFactor/100)*200,(fullImagesFactor/100)*880]],\r\n width: (fullImagesFactor/100)*540,\r\n height: (fullImagesFactor/100)*760\r\n };\r\n case layouts[currentLayout].Walls.Backsplash:\r\n return {\r\n polygonArray: [[0,(fullImagesFactor/100)*200],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*200],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*700],[0,(fullImagesFactor/100)*700]],\r\n width: (fullImagesFactor/100)*1620,\r\n height: (fullImagesFactor/100)*500\r\n };\r\n case layouts[currentLayout].Walls.BacksplashLeftWall:\r\n return {\r\n polygonArray: [\r\n [(fullImagesFactor/100)*200,(fullImagesFactor/100)*280],\r\n [(fullImagesFactor/100)*632,(fullImagesFactor/100)*336],\r\n [(fullImagesFactor/100)*632,(fullImagesFactor/100)*600],\r\n [(fullImagesFactor/100)*200,(fullImagesFactor/100)*640]],\r\n };\r\n case layouts[currentLayout].Walls.BacksplashRightWall:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*633,(fullImagesFactor/100)*336],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*210],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*680],[(fullImagesFactor/100)*633,(fullImagesFactor/100)*600]],\r\n };\r\n\r\n //*** Cabinet ***//\r\n case layouts[currentLayout].Cabinet.BottomCabinet:\r\n return {\r\n polygonArray: [[0,(fullImagesFactor/100)*590],[(fullImagesFactor/100)*1000,(fullImagesFactor/100)*590],[(fullImagesFactor/100)*1000,(fullImagesFactor/100)*860],[0,(fullImagesFactor/100)*860]],\r\n width: (fullImagesFactor/100)*1000,\r\n height: (fullImagesFactor/100)*270\r\n };\r\n case layouts[currentLayout].Cabinet.BottomCabinet2:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*1090,(fullImagesFactor/100)*620],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*620],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*1080],[(fullImagesFactor/100)*1090,(fullImagesFactor/100)*1080]],\r\n width: (fullImagesFactor/100)*530,\r\n height: (fullImagesFactor/100)*480\r\n };\r\n case layouts[currentLayout].Cabinet.CrownMolding:\r\n return {\r\n polygonArray: [[0,(fullImagesFactor/100)*160],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*160],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*350],[0,(fullImagesFactor/100)*350]],\r\n width: (fullImagesFactor/100)*1620,\r\n height: (fullImagesFactor/100)*190\r\n };\r\n case layouts[currentLayout].Cabinet.CrownMolding2:\r\n return {\r\n polygonArray: [\r\n [(fullImagesFactor/100)*900,(fullImagesFactor/100)*110],\r\n [(fullImagesFactor/100)*1620,(fullImagesFactor/100)*110],\r\n [(fullImagesFactor/100)*1620,(fullImagesFactor/100)*280],\r\n [(fullImagesFactor/100)*900,(fullImagesFactor/100)*280]\r\n ],\r\n width: (fullImagesFactor/100)*720,\r\n height: (fullImagesFactor/100)*170\r\n };\r\n case layouts[currentLayout].Cabinet.TopCabinet:\r\n return {\r\n polygonArray: [[0,(fullImagesFactor/100)*180],[(fullImagesFactor/100)*1000,(fullImagesFactor/100)*180],[(fullImagesFactor/100)*1000,(fullImagesFactor/100)*520],[0,(fullImagesFactor/100)*520]],\r\n width: (fullImagesFactor/100)*1000,\r\n height: (fullImagesFactor/100)*340\r\n };\r\n case layouts[currentLayout].Cabinet.TopCabinet2:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*910,(fullImagesFactor/100)*130],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*130],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*530],[(fullImagesFactor/100)*910,(fullImagesFactor/100)*530]],\r\n width: (fullImagesFactor/100)*710,\r\n height: (fullImagesFactor/100)*400\r\n };\r\n case layouts[currentLayout].Cabinet.Peninsula:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*1190,(fullImagesFactor/100)*650],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*650],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*1080],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*1080]],\r\n width: (fullImagesFactor/100)*430,\r\n height: (fullImagesFactor/100)*430\r\n };\r\n case layouts[currentLayout].Cabinet.TopHandle:\r\n return {\r\n polygonArray: [[0,(fullImagesFactor/100)*230],[(fullImagesFactor/100)*990,(fullImagesFactor/100)*230],[(fullImagesFactor/100)*990,(fullImagesFactor/100)*550],[0,(fullImagesFactor/100)*550]],\r\n width: (fullImagesFactor/100)*990,\r\n height: (fullImagesFactor/100)*320\r\n };\r\n case layouts[currentLayout].Cabinet.TopHandle2:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*990,(fullImagesFactor/100)*150],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*150],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*550],[(fullImagesFactor/100)*990,(fullImagesFactor/100)*550]],\r\n width: (fullImagesFactor/100)*630,\r\n height: (fullImagesFactor/100)*400\r\n };\r\n case layouts[currentLayout].Cabinet.BottomHandle:\r\n return {\r\n polygonArray: [[0,(fullImagesFactor/100)*620],[(fullImagesFactor/100)*910,(fullImagesFactor/100)*620],[(fullImagesFactor/100)*910,(fullImagesFactor/100)*920],[0,(fullImagesFactor/100)*920]],\r\n width: (fullImagesFactor/100)*910,\r\n height: (fullImagesFactor/100)*300\r\n };\r\n case layouts[currentLayout].Cabinet.BottomHandle2:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*1100,(fullImagesFactor/100)*670],[(fullImagesFactor/100)*1100,(fullImagesFactor/100)*670],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*1000],[(fullImagesFactor/100)*1160,(fullImagesFactor/100)*1000]],\r\n width: (fullImagesFactor/100)*520,\r\n height: (fullImagesFactor/100)*330\r\n };\r\n\r\n //*** Appliances ***//\r\n case layouts[currentLayout].Appliances.Dishwasher:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*650,(fullImagesFactor/100)*610],[(fullImagesFactor/100)*840,(fullImagesFactor/100)*840],[(fullImagesFactor/100)*840,(fullImagesFactor/100)*840],[(fullImagesFactor/100)*650,(fullImagesFactor/100)*610]],\r\n width: (fullImagesFactor/100)*190,\r\n height: (fullImagesFactor/100)*230\r\n };\r\n case layouts[currentLayout].Appliances.Fridge:\r\n return {\r\n polygonArray: [[0,(fullImagesFactor/100)*400],[(fullImagesFactor/100)*880,(fullImagesFactor/100)*400],[(fullImagesFactor/100)*880,(fullImagesFactor/100)*1080],[0,(fullImagesFactor/100)*1080]],\r\n width: (fullImagesFactor/100)*880,\r\n height: (fullImagesFactor/100)*680\r\n };\r\n case layouts[currentLayout].Appliances.Hood:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*870,(fullImagesFactor/100)*130],[(fullImagesFactor/100)*1190,(fullImagesFactor/100)*130],[(fullImagesFactor/100)*1190,(fullImagesFactor/100)*520],[(fullImagesFactor/100)*870,(fullImagesFactor/100)*520]],\r\n width: (fullImagesFactor/100)*320,\r\n height: (fullImagesFactor/100)*390\r\n };\r\n case layouts[currentLayout].Appliances.Microwave:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*890,(fullImagesFactor/100)*370],[(fullImagesFactor/100)*1130,(fullImagesFactor/100)*370],[(fullImagesFactor/100)*1130,(fullImagesFactor/100)*520],[(fullImagesFactor/100)*890,(fullImagesFactor/100)*520]],\r\n width: (fullImagesFactor/100)*240,\r\n height: (fullImagesFactor/100)*150\r\n };\r\n case layouts[currentLayout].Appliances.Range:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*890,(fullImagesFactor/100)*550],[(fullImagesFactor/100)*1200,(fullImagesFactor/100)*550],[(fullImagesFactor/100)*1200,(fullImagesFactor/100)*910],[(fullImagesFactor/100)*890,(fullImagesFactor/100)*910]],\r\n width: (fullImagesFactor/100)*310,\r\n height: (fullImagesFactor/100)*360\r\n };\r\n\r\n //*** CountertopGroup ***//\r\n case layouts[currentLayout].CountertopGroup.Countertop:\r\n return {\r\n polygonArray: [[0,(fullImagesFactor/100)*570],[(fullImagesFactor/100)*1020,(fullImagesFactor/100)*570],[(fullImagesFactor/100)*1020,(fullImagesFactor/100)*650],[0,(fullImagesFactor/100)*650]],\r\n width: (fullImagesFactor/100)*1020,\r\n height: (fullImagesFactor/100)*80\r\n };\r\n case layouts[currentLayout].CountertopGroup.Countertop2:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*1090,(fullImagesFactor/100)*630],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*630],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*1070],[(fullImagesFactor/100)*1090,(fullImagesFactor/100)*1070]],\r\n width: (fullImagesFactor/100)*530,\r\n height: (fullImagesFactor/100)*440\r\n };\r\n case layouts[currentLayout].CountertopGroup.Sink:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*1240,(fullImagesFactor/100)*630],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*630],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*720],[(fullImagesFactor/100)*1240,(fullImagesFactor/100)*720]],\r\n width: (fullImagesFactor/100)*380,\r\n height: (fullImagesFactor/100)*90\r\n };\r\n case layouts[currentLayout].CountertopGroup.Faucet:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*1240,(fullImagesFactor/100)*580],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*580],[(fullImagesFactor/100)*1620,(fullImagesFactor/100)*720],[(fullImagesFactor/100)*1240,(fullImagesFactor/100)*720]],\r\n width: (fullImagesFactor/100)*380,\r\n height: (fullImagesFactor/100)*140\r\n };\r\n case layouts[currentLayout].CountertopGroup.Stovetop:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*530,(fullImagesFactor/100)*660],[(fullImagesFactor/100)*920,(fullImagesFactor/100)*660],[(fullImagesFactor/920)*1200,(fullImagesFactor/100)*760],[(fullImagesFactor/100)*530,(fullImagesFactor/100)*760]],\r\n width: (fullImagesFactor/100)*390,\r\n height: (fullImagesFactor/100)*100\r\n };\r\n\r\n //*** CenterIsland ***//\r\n case layouts[currentLayout].CenterIsland.Cabinet:\r\n case layouts[currentLayout].CenterIsland.Handle:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*250,(fullImagesFactor/100)*640],[(fullImagesFactor/100)*1160,(fullImagesFactor/100)*640],[(fullImagesFactor/100)*1160,(fullImagesFactor/100)*1080],[(fullImagesFactor/100)*1160,(fullImagesFactor/100)*1080]],\r\n width: (fullImagesFactor/100)*910,\r\n height: (fullImagesFactor/100)*440\r\n };\r\n case layouts[currentLayout].CenterIsland.Countertop:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*110,(fullImagesFactor/100)*640],[(fullImagesFactor/100)*1190,(fullImagesFactor/100)*640],[(fullImagesFactor/100)*1190,(fullImagesFactor/100)*1080],[(fullImagesFactor/100)*110,(fullImagesFactor/100)*1080]],\r\n width: (fullImagesFactor/100)*1080,\r\n height: (fullImagesFactor/100)*(fullImagesFactor/100)*440\r\n };\r\n case layouts[currentLayout].CenterIsland.Chairs:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*90,(fullImagesFactor/100)*690],[(fullImagesFactor/100)*1160,(fullImagesFactor/100)*690],[(fullImagesFactor/100)*1160,(fullImagesFactor/100)*1080],[(fullImagesFactor/100)*90,(fullImagesFactor/100)*1080]],\r\n width: (fullImagesFactor/100)*1070,\r\n height: (fullImagesFactor/100)*390\r\n };\r\n case layouts[currentLayout].CenterIsland.Sink:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*530,(fullImagesFactor/100)*650],[(fullImagesFactor/100)*900,(fullImagesFactor/100)*650],[(fullImagesFactor/100)*900,(fullImagesFactor/100)*750],[(fullImagesFactor/100)*530,(fullImagesFactor/100)*750]],\r\n width: (fullImagesFactor/100)*370,\r\n height: (fullImagesFactor/100)*100\r\n };\r\n case layouts[currentLayout].CenterIsland.Faucet:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*530,(fullImagesFactor/100)*550],[(fullImagesFactor/100)*900,(fullImagesFactor/100)*550],[(fullImagesFactor/100)*900,(fullImagesFactor/100)*750],[(fullImagesFactor/100)*530,(fullImagesFactor/100)*750]],\r\n width: (fullImagesFactor/100)*370,\r\n height: (fullImagesFactor/100)*200\r\n };\r\n case layouts[currentLayout].CenterIsland.Stovetop:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*530,(fullImagesFactor/100)*660],[(fullImagesFactor/100)*920,(fullImagesFactor/100)*660],[(fullImagesFactor/920)*1200,(fullImagesFactor/100)*760],[(fullImagesFactor/100)*530,(fullImagesFactor/100)*760]],\r\n width: (fullImagesFactor/100)*390,\r\n height: (fullImagesFactor/100)*100\r\n };\r\n case layouts[currentLayout].CenterIsland.Range:\r\n return {\r\n polygonArray: [[(fullImagesFactor/100)*530,(fullImagesFactor/100)*660],[(fullImagesFactor/100)*920,(fullImagesFactor/100)*660],[(fullImagesFactor/920)*1200,(fullImagesFactor/100)*760],[(fullImagesFactor/100)*530,(fullImagesFactor/100)*760]],\r\n width: (fullImagesFactor/100)*390,\r\n height: (fullImagesFactor/100)*100\r\n };\r\n default:\r\n return null\r\n }\r\n};\r\nconst checkForCanvasScale = (canvas, polygonArray) => {\r\n if (canvas && ((canvas.width !== canvas.offsetWidth) || (canvas.height !== canvas.offsetHeight))) {\r\n return polygonArray.map(point => {\r\n point = point.map(dot => Math.round(dot*canvas.offsetWidth/canvas.width));\r\n return point\r\n })\r\n }\r\n return polygonArray\r\n};\r\n\r\nexport default {\r\n layouts,\r\n getMenuByHoveredLayer: (currentLayout, layer, canvas) => {\r\n // console.log('currentLayout', currentLayout);\r\n // console.log('layer', layer);\r\n if ((\r\n (layer.zIndex >= layouts[currentLayout].Cabinet.TopCabinetModules[\"1_1\"])\r\n && (layer.zIndex <= layouts[currentLayout].Cabinet.TopCabinetModules[\"5_64\"])\r\n ) || (\r\n (layer.zIndex >= layouts[currentLayout].Cabinet.TopCabinetModules[\"6_1\"])\r\n && (layer.zIndex <= layouts[currentLayout].Cabinet.TopCabinetModules[\"8_64\"])\r\n )) {\r\n return {\r\n contextMenuPartId: \"top_cabinet\",\r\n module: invert(layouts[currentLayout].Cabinet.TopCabinetModules)[layer.zIndex],\r\n };\r\n } else if ((\r\n (layer.zIndex >= layouts[currentLayout].Cabinet.BottomCabinetModules[\"1_1\"])\r\n && (layer.zIndex <= layouts[currentLayout].Cabinet.BottomCabinetModules[\"6_64\"])\r\n ) || (\r\n (layer.zIndex >= layouts[currentLayout].Cabinet.BottomCabinetModules[\"7_1\"])\r\n && (layer.zIndex <= layouts[currentLayout].Cabinet.BottomCabinetModules[\"8_64\"])\r\n )) {\r\n return {\r\n contextMenuPartId: \"bottom_cabinet\",\r\n module: invert(layouts[currentLayout].Cabinet.BottomCabinetModules)[layer.zIndex],\r\n };\r\n }\r\n switch (layer.zIndex) {\r\n case layouts[currentLayout].Floor:\r\n return {\r\n parent: \"Floor\",\r\n child: \"Floor\"\r\n };\r\n case layouts[currentLayout].Walls.LeftWall: {\r\n let leftWallBacksplash = getLayerDimensions(layouts[currentLayout].Walls.LeftWallBacksplash, currentLayout);\r\n leftWallBacksplash.polygonArray = checkForCanvasScale(canvas, leftWallBacksplash.polygonArray);\r\n if (pnpoly(leftWallBacksplash.polygonArray, document.hoveredMousePos)) {\r\n return {\r\n contextMenuPartId: \"left_wall_custom\"\r\n };\r\n } else {\r\n return {\r\n parent: \"Walls\",\r\n child: \"Left Wall\"\r\n };\r\n }\r\n }\r\n case layouts[currentLayout].Walls.RightWall: {\r\n let rightWallBacksplash = getLayerDimensions(layouts[currentLayout].Walls.RightWallBacksplash, currentLayout);\r\n rightWallBacksplash.polygonArray = checkForCanvasScale(canvas, rightWallBacksplash.polygonArray);\r\n if (pnpoly(rightWallBacksplash.polygonArray, document.hoveredMousePos)) {\r\n return {\r\n contextMenuPartId: \"right_wall_custom\"\r\n };\r\n } else {\r\n return {\r\n parent: \"Walls\",\r\n child: \"Right Wall\"\r\n };\r\n }\r\n }\r\n case layouts[currentLayout].Walls.PopoutWall:\r\n return {\r\n parent: \"Walls\",\r\n child: \"Popout Wall\"\r\n };\r\n case layouts[currentLayout].Walls.Backsplash: {\r\n let backsplashLeftWall = getLayerDimensions(layouts[currentLayout].Walls.BacksplashLeftWall, currentLayout);\r\n let backsplashRightWall = getLayerDimensions(layouts[currentLayout].Walls.BacksplashRightWall, currentLayout);\r\n backsplashLeftWall.polygonArray = checkForCanvasScale(canvas, backsplashLeftWall.polygonArray);\r\n backsplashRightWall.polygonArray = checkForCanvasScale(canvas, backsplashRightWall.polygonArray);\r\n if (pnpoly(backsplashLeftWall.polygonArray, document.hoveredMousePos)) {\r\n return {\r\n contextMenuPartId: \"backsplash_custom_left\"\r\n };\r\n } else if (pnpoly(backsplashRightWall.polygonArray, document.hoveredMousePos)) {\r\n return {\r\n contextMenuPartId: \"backsplash_custom_right\"\r\n };\r\n } else {\r\n return {\r\n contextMenuPartId: \"backsplash_custom\"\r\n };\r\n }\r\n }\r\n case layouts[currentLayout].Walls.Ceiling:\r\n return {\r\n parent: \"Walls\",\r\n child: \"Ceiling\"\r\n };\r\n case layouts[currentLayout].Cabinet.TopCabinet:\r\n case layouts[currentLayout].Cabinet.TopCabinet2:\r\n return {\r\n parent: \"Cabinet\",\r\n child: \"Top Cabinet\"\r\n };\r\n case layouts[currentLayout].Cabinet.BottomCabinet:\r\n case layouts[currentLayout].Cabinet.BottomCabinet2:\r\n case layouts[currentLayout].Cabinet.Peninsula:\r\n return {\r\n parent: \"Cabinet\",\r\n child: \"Bottom Cabinet\"\r\n };\r\n case layouts[currentLayout].Cabinet.CrownMolding:\r\n case layouts[currentLayout].Cabinet.CrownMolding2:\r\n return {\r\n parent: \"Cabinet\",\r\n child: \"Crown Molding\"\r\n };\r\n case layouts[currentLayout].Cabinet.TopHandle:\r\n case layouts[currentLayout].Cabinet.TopHandle2:\r\n return {\r\n parent: \"Cabinet\",\r\n child: \"Top Handle\"\r\n };\r\n case layouts[currentLayout].Cabinet.BottomHandle:\r\n case layouts[currentLayout].Cabinet.BottomHandle2:\r\n return {\r\n parent: \"Cabinet\",\r\n child: \"Bottom Handle\"\r\n };\r\n case layouts[currentLayout].Appliances.Range:\r\n return {\r\n parent: \"Appliance\",\r\n child: \"Range\"\r\n };\r\n case layouts[currentLayout].Appliances.Fridge:\r\n return {\r\n parent: \"Appliance\",\r\n child: \"Fridge\"\r\n };\r\n case layouts[currentLayout].Appliances.Hood:\r\n return {\r\n parent: \"Appliance\",\r\n child: \"Hood\"\r\n };\r\n case layouts[currentLayout].Appliances.Microwave:\r\n return {\r\n parent: \"Appliance\",\r\n child: \"Microwave\"\r\n };\r\n case layouts[currentLayout].Appliances.Dishwasher:\r\n return {\r\n parent: \"Appliance\",\r\n child: \"Dishwasher\"\r\n };\r\n case layouts[currentLayout].CountertopGroup.Edge:\r\n return {\r\n parent: \"Countertop\",\r\n child: \"Edge\"\r\n };\r\n // case layouts[currentLayout].CountertopGroup.Countertop2:\r\n case layouts[currentLayout].CountertopGroup.Sink:\r\n case layouts[currentLayout].CountertopGroup.Faucet:\r\n case layouts[currentLayout].CountertopGroup.Countertop:\r\n case layouts[currentLayout].CountertopGroup.Countertop2:\r\n return {\r\n contextMenuPartId: \"countertop_group_custom\"\r\n };\r\n case layouts[currentLayout].CountertopGroup.Stovetop:\r\n return {\r\n parent: \"Countertop\",\r\n child: \"Stovetop\"\r\n };\r\n case layouts[currentLayout].CenterIsland.Chairs:\r\n return {\r\n parent: \"Center Island\",\r\n child: \"Chairs\"\r\n };\r\n case layouts[currentLayout].CenterIsland.Cabinet:\r\n return {\r\n parent: \"Center Island\",\r\n child: \"Cabinet\"\r\n };\r\n case layouts[currentLayout].CenterIsland.Edge:\r\n return {\r\n parent: \"Center Island\",\r\n child: \"Edge\"\r\n };\r\n case layouts[currentLayout].CenterIsland.Faucet:\r\n case layouts[currentLayout].CenterIsland.Sink:\r\n case layouts[currentLayout].CenterIsland.Stovetop:\r\n case layouts[currentLayout].CenterIsland.Range:\r\n case layouts[currentLayout].CenterIsland.Countertop:\r\n return {\r\n contextMenuPartId: \"center_island_custom\"\r\n };\r\n case layouts[currentLayout].CenterIsland.Handle:\r\n return {\r\n parent: \"Center Island\",\r\n child: \"Handle\"\r\n };\r\n default:\r\n return \"\"\r\n }\r\n },\r\n getLayerDimensions\r\n}\r\n\r\n\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport $ from 'jquery';\r\nimport {connect} from \"react-redux\";\r\n\r\nimport DemoPoint from \"./demoPoint\";\r\nimport Config from \"../../../config\";\r\n\r\nclass DemoPoints extends React.Component {\r\n\r\n static propTypes = {\r\n layoutFeatures: PropTypes.array.isRequired,\r\n layoutType: PropTypes.number.isRequired,\r\n canvasId: PropTypes.string.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n points: [],\r\n currentLayoutType: null,\r\n dimensions: {\r\n width: this.props.canvasDimensions.width,\r\n height: this.props.canvasDimensions.height\r\n },\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setPoints(this.props);\r\n this.handleResize();\r\n $(window).on('resize', this.handleResize);\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (this.state.currentLayoutType !== nextProps.layoutType) {\r\n this.setPoints(nextProps);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n $(window).off('resize', this.handleResize);\r\n }\r\n\r\n setPoints = (nextProps) => {\r\n const points = [];\r\n nextProps.layoutFeatures.forEach((parentGroup) => {\r\n // console.log(\"parentGroup\", parentGroup);\r\n switch (document.kvConfig.visualizerType) {\r\n case \"Bathroom\":\r\n case \"BV\": {\r\n if (parentGroup.partName === \"Walls\") {\r\n const pointB = this.getBathroomPointPositionByPartName(\"Wall B\");\r\n const pointC = this.getBathroomPointPositionByPartName(\"Wall C\");\r\n points.push(pointB, pointC);\r\n } else if (parentGroup.partName === \"Vanity\") {\r\n const vanity = this.getBathroomPointPositionByPartName(\"Vanity\");\r\n const mirror = this.getBathroomPointPositionByPartName(\"Mirror\");\r\n points.push(vanity, mirror);\r\n } else if (!(nextProps.layoutType === 0 &&\r\n (parentGroup.partName === \"Window\" || parentGroup.partName === \"Bathtub\"))) {\r\n const point = this.getBathroomPointPositionByPartName(parentGroup.partName, nextProps);\r\n if (point.left || point.top) {\r\n points.push(point);\r\n }\r\n }\r\n break;\r\n }\r\n case \"bvScene\": {\r\n const bvScenePoints = [\r\n {\r\n partId: \"shower_head\",\r\n left: 925,\r\n top: 400,\r\n },\r\n {\r\n partId: \"toilet\",\r\n left: 380,\r\n top: 820,\r\n },\r\n {\r\n partId: \"vanity_sink\",\r\n left: 530,\r\n top: 670,\r\n },\r\n {\r\n partId: \"bathtub_body\",\r\n left: 1520,\r\n top: 760,\r\n },\r\n ]\r\n parentGroup.relatedItems.forEach(relItem => {\r\n const relPoint = bvScenePoints.find(bvScenePoint => {\r\n return bvScenePoint.partId === relItem.partId && !relItem.disabled\r\n })\r\n if (relPoint) {\r\n points.push(relPoint)\r\n }\r\n });\r\n break;\r\n }\r\n case \"Kitchen\":\r\n case \"KV\": {\r\n switch (parentGroup.partName) {\r\n case \"Walls\": {\r\n points.push(\r\n this.getKitchenPointPosition(\"left_wall\"),\r\n this.getKitchenPointPosition(\"right_wall\"),\r\n this.getKitchenPointPosition(\"ceiling\")\r\n );\r\n break;\r\n }\r\n case \"Appliances\": {\r\n points.push(\r\n this.getKitchenPointPosition(\"hood\"),\r\n this.getKitchenPointPosition(\"range\"),\r\n this.getKitchenPointPosition(\"fridge\"),\r\n this.getKitchenPointPosition(\"dishwasher\")\r\n );\r\n break;\r\n }\r\n case \"Countertop\": {\r\n points.push(\r\n this.getKitchenPointPosition(\"countertop3\"),\r\n this.getKitchenPointPosition(\"sink1\")\r\n );\r\n break;\r\n }\r\n case \"Cabinet\": {\r\n points.push(\r\n this.getKitchenPointPosition(\"top_cabinet\"),\r\n this.getKitchenPointPosition(\"top_cabinet2\"),\r\n this.getKitchenPointPosition(\"bottom_cabinet\")\r\n );\r\n break;\r\n }\r\n case \"CenterIsland\": {\r\n points.push(\r\n this.getKitchenPointPosition(\"center_island_counterop\"),\r\n this.getKitchenPointPosition(\"center_island_cabinet\"),\r\n this.getKitchenPointPosition(\"center_island_chairs\")\r\n );\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n });\r\n this.setState({\r\n points,\r\n currentLayoutType: nextProps.layoutType\r\n });\r\n };\r\n\r\n handleResize = () => {\r\n const canvas = $(document.getElementById(this.props.canvasId));\r\n this.setState({\r\n dimensions: {\r\n width: canvas.width(),\r\n height: canvas.height()\r\n }\r\n });\r\n };\r\n\r\n getBathroomPointPositionByPartName = (partName, nextProps = this.props) => {\r\n switch (partName) {\r\n case \"Vanity\":\r\n return {\r\n left: 356,\r\n top: 720,\r\n };\r\n case \"Mirror\":\r\n return {\r\n left: 318,\r\n top: 422,\r\n };\r\n case \"Toilet\":\r\n return {\r\n left: 625,\r\n top: 740,\r\n };\r\n case \"Floor\":\r\n return {\r\n left: nextProps.layoutType === 0 ? 762 : 990,\r\n top: 990,\r\n };\r\n case \"Window\":\r\n return {\r\n left: 1290,\r\n top: 475,\r\n };\r\n case \"Bathtub\":\r\n return {\r\n left: 1450,\r\n top: 915,\r\n };\r\n case \"Shower\":\r\n return {\r\n left: 930,\r\n top: 600,\r\n };\r\n case \"Wall B\":\r\n return {\r\n left: 600,\r\n top: 440,\r\n };\r\n case \"Wall C\":\r\n return {\r\n left: 1480,\r\n top: 580,\r\n };\r\n default :\r\n return {\r\n left: 0,\r\n top: 0,\r\n }\r\n }\r\n };\r\n\r\n getKitchenPointPosition = (partId, nextProps = this.props) => {\r\n nextProps === 12 ? null : false;\r\n switch (partId) {\r\n case \"left_wall\":\r\n return {\r\n left: 450,\r\n top: 550,\r\n };\r\n case \"right_wall\":\r\n return {\r\n left: 1050,\r\n top: 550,\r\n };\r\n case \"ceiling\":\r\n return {\r\n left: 740,\r\n top: 120,\r\n };\r\n case \"hood\":\r\n return {\r\n left: 1020,\r\n top: 400,\r\n };\r\n case \"range\":\r\n return {\r\n left: 1000,\r\n top: 680,\r\n };\r\n case \"fridge\":\r\n return {\r\n left: 175,\r\n top: 600,\r\n };\r\n case \"dishwasher\":\r\n return {\r\n left: 720,\r\n top: 655,\r\n };\r\n case \"top_cabinet\":\r\n return {\r\n left: 740,\r\n top: 410,\r\n };\r\n case \"top_cabinet2\":\r\n return {\r\n left: 1380,\r\n top: 370,\r\n };\r\n case \"bottom_cabinet\":\r\n return {\r\n left: 1260,\r\n top: 780,\r\n };\r\n case \"center_island_counterop\":\r\n return {\r\n left: 600,\r\n top: 750,\r\n };\r\n case \"center_island_cabinet\":\r\n return {\r\n left: 1040,\r\n top: 890,\r\n };\r\n case \"center_island_chairs\":\r\n return {\r\n left: 390,\r\n top: 870,\r\n };\r\n case \"sink1\":\r\n return {\r\n left: 1430,\r\n top: 670,\r\n };\r\n case \"countertop3\":\r\n return {\r\n left: 1450,\r\n top: 930,\r\n };\r\n default :\r\n return {\r\n left: 0,\r\n top: 0,\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n const dashboardFramed = Config.isVisualizerManagement();\r\n return this.state.dimensions.width && this.state.dimensions.height && !dashboardFramed ? (\r\n
    \r\n {this.state.points.map((point, index) => {\r\n const pointResponsive = {\r\n left: point.left * (this.state.dimensions.width / this.props.canvasDimensions.width),\r\n top: point.top * (this.state.dimensions.height / this.props.canvasDimensions.height),\r\n };\r\n return \r\n })}\r\n
    \r\n ) : null\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {canvasDimensions} = store.bathroomVisualizerState;\r\n return {\r\n canvasDimensions,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DemoPoints)\r\n","import {Part} from \"../part\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {centerIslandThumbnail} from \"../assets\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {PLACEMENTS} from \"../constants\";\r\n\r\nimport Cabinet from \"../subparts/centerIsland/cabinet\";\r\nimport Faucet from \"../subparts/centerIsland/faucet\";\r\nimport Sink from \"../subparts/centerIsland/sink\";\r\nimport Edge from \"../subparts/centerIsland/edge\";\r\nimport Countertop from \"../subparts/centerIsland/countertop\";\r\nimport IslandHood from \"../subparts/centerIsland/islandHood\";\r\nimport Stovetop from \"../subparts/centerIsland/stovetop\";\r\nimport Pendants from \"../subparts/centerIsland/pendants\";\r\nimport RightIsland from \"../subparts/centerIsland/rightIsland\";\r\nimport {setActiveFeaturesBeforeAllWalls} from \"../../../look/lookNavigation/lookNavigationFunctions\";\r\nimport {CABINET_GROUP, COUNTERTOP_GROUP} from \"../../../kvComponent/core/constants\";\r\n\r\n// () = ()\r\n\r\nexport default class CenterIsland extends Part {\r\n static id = 'CenterIsland';\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'CenterIsland';\r\n this.partThumbnail = centerIslandThumbnail;\r\n this.translateId = \"visualizer.kitchen.center_island\";\r\n\r\n // related items\r\n this.cabinet = null;\r\n this.countertop = null;\r\n this.faucet = null;\r\n this.sink = null;\r\n this.edge = null;\r\n this.islandHood = null;\r\n this.relatedGroupNames = [\"Center Island\", \"Center Island Countertop\", \"Faucet\", \"Sink\", \"Edge Profile\",\r\n \"Island Hood\", \"Stovetop\", \"Pendants\", \"Right Island\"];\r\n }\r\n\r\n load(dbFeature, loadFeature = true) {\r\n let relatedItemName = \"\",\r\n shouldLoadInDifferentGroups = false,\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Center Island\":\r\n case \"Cabinets Center Island\":\r\n case \"Center Island Cabinet\":\r\n relatedItemName = \"cabinet\";\r\n RelatedItemClass = Cabinet;\r\n break;\r\n case \"Center Island Countertop\":\r\n case \"Countertop Center Island\":\r\n relatedItemName = \"countertop\";\r\n RelatedItemClass = Countertop;\r\n break;\r\n case \"Faucet\":\r\n if (loadFeature && ((dbFeature.metaData[\"Placement\"] && dbFeature.metaData[\"Placement\"].includes(PLACEMENTS.Island)) || (!dbFeature.metaData[\"Placement\"] && !dbFeature.s3Bindings))) {\r\n if (!dbFeature.metaData[\"Placement\"]) {\r\n shouldLoadInDifferentGroups = true;\r\n }\r\n relatedItemName = \"faucet\";\r\n RelatedItemClass = Faucet;\r\n }\r\n break;\r\n case \"Sink\":\r\n if (loadFeature && ((dbFeature.metaData[\"Placement\"] && dbFeature.metaData[\"Placement\"].includes(PLACEMENTS.Island)) || (!dbFeature.metaData[\"Placement\"] && !dbFeature.s3Bindings))) {\r\n if (!dbFeature.metaData[\"Placement\"]) {\r\n shouldLoadInDifferentGroups = true;\r\n }\r\n relatedItemName = \"sink\";\r\n RelatedItemClass = Sink;\r\n }\r\n break;\r\n case \"Edge Profile\":\r\n case \"Edge\":\r\n shouldLoadInDifferentGroups = true;\r\n relatedItemName = \"edge\";\r\n RelatedItemClass = Edge;\r\n break;\r\n case \"Island hood\":\r\n case \"Island Hood\":\r\n relatedItemName = \"islandHood\";\r\n RelatedItemClass = IslandHood;\r\n break;\r\n case \"Island Stove\":\r\n relatedItemName = \"stovetop\";\r\n RelatedItemClass = Stovetop;\r\n break;\r\n case \"Pendants\":\r\n relatedItemName = \"pendants\";\r\n RelatedItemClass = Pendants;\r\n break;\r\n case \"Right Island\":\r\n relatedItemName = \"rightIsland\";\r\n RelatedItemClass = RightIsland;\r\n break;\r\n }\r\n return this.loadCommon(relatedItemName, RelatedItemClass, dbFeature, loadFeature, shouldLoadInDifferentGroups)\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false;\r\n }\r\n\r\n subParts(withHidden = true) {\r\n return this.relatedItems\r\n .filter(item => {\r\n if (item.partId === \"center_island_handle\") {\r\n item.visible = item.features.filter(f => f.matchesMetaForArrayOfConditions(item.getArrayOfConditions())).length;\r\n }\r\n return this.filterRelatedItem(item, withHidden)\r\n })\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n handleSubPartClick() {\r\n\r\n }\r\n\r\n getCabinetType() {\r\n return this.cabinet && this.cabinet.activeFeature\r\n ? this.cabinet.activeFeature.dbFeature.metaData[\"Cabinet\"]\r\n : \"\"\r\n }\r\n\r\n getChairType() {\r\n return this.chairs && this.chairs.activeFeature\r\n ? this.chairs.activeFeature.dbFeature.metaData[\"Chair\"]\r\n : \"\"\r\n }\r\n\r\n setSpecificRules() {\r\n if (this.edge) {\r\n this.edge.setEdgeNotInVisualizer()\r\n }\r\n }\r\n\r\n setPrevioslySelected(featureGroup) {\r\n setActiveFeaturesBeforeAllWalls(featureGroup.partId === \"center_island_cabinet\" ? CABINET_GROUP : COUNTERTOP_GROUP);\r\n }\r\n\r\n}\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {injectIntl} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport TextField from \"@mui/material/TextField\";\r\nimport {changeUserInfo, changeUserInfoErrors} from \"../../../actions/actionFunctions\";\r\nimport {onInputBlur, onInputChange, useInputsValidation} from \"../ui/inputFunctions\";\r\n\r\nexport const getValidationErrors = (property, currentValue) => {\r\n const errors = [];\r\n\r\n switch (property) {\r\n case \"firstName\": {\r\n if (!currentValue) {\r\n errors.push(\"look.inputs.errors.fieldRequired\");\r\n return errors\r\n }\r\n if (currentValue.length === 1) {\r\n errors.push(\"look.inputs.errors.shortName\");\r\n } else if (currentValue.length > 50) {\r\n errors.push(\"look.inputs.errors.longName\");\r\n }\r\n if (!/^[A-Z\\s\\'\\-\\&\\.a-z]+$/.test(currentValue)) {\r\n errors.push(\"look.inputs.errors.nameIsIncorrect\");\r\n }\r\n break;\r\n }\r\n case \"email\": {\r\n if (!currentValue) {\r\n errors.push(\"look.inputs.errors.fieldRequired\");\r\n return errors\r\n }\r\n if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i.test(currentValue)) {\r\n errors.push(\"look.inputs.errors.invalidEmail\");\r\n }\r\n break;\r\n }\r\n case \"password\": {\r\n if (!currentValue) {\r\n errors.push(\"look.inputs.errors.fieldRequired\");\r\n return errors\r\n }\r\n break;\r\n }\r\n case \"postal\": {\r\n if (!currentValue) {\r\n errors.push(\"look.inputs.errors.fieldRequired\");\r\n return errors\r\n }\r\n const regex = /[a-zA-Z0-9][a-zA-Z0-9\\- ]{0,10}[a-zA-Z0-9]/;\r\n if (!regex.test(currentValue)) {\r\n errors.push(\"look.inputs.errors.incorrectPostal\");\r\n return errors\r\n }\r\n break;\r\n }\r\n }\r\n return errors\r\n}\r\n\r\nconst LookUserInput = (props) => {\r\n\r\n const {property, userInfo, changeUserInfo, intl, userInfoErrors, changeUserInfoErrors, inputsValidated, shrink,\r\n fabricatorData} = props;\r\n // const [inputValue, setInputValue] = useState(userInfo[property] || \"\");\r\n\r\n const userInputChange = (property, value) => {\r\n changeUserInfo({\r\n [property]: value\r\n });\r\n }\r\n\r\n const userInputBlur = (property, value) => {\r\n if (userInfo[property] !== value) {\r\n changeUserInfo({\r\n [property]: value\r\n });\r\n }\r\n }\r\n\r\n const onBlur = (event) => {\r\n onInputBlur(event, property, userInputBlur, userInfoErrors, changeUserInfoErrors, getValidationErrors);\r\n };\r\n\r\n useInputsValidation(inputsValidated, onBlur, userInfo[property]);\r\n\r\n const onChange = (event) => {\r\n onInputChange(event, property, userInputChange, userInfoErrors, changeUserInfoErrors, getValidationErrors);\r\n };\r\n\r\n const errorsExist = Array.isArray(userInfoErrors[property]) && !!userInfoErrors[property].length;\r\n\r\n const requiredFields = [\"firstName\", \"email\", \"postal\", \"phoneNumber\"];\r\n const type = property !== \"email\" && property !== \"password\" ? \"text\" : property;\r\n const label = property === \"postal\" && fabricatorData.isRenuit\r\n ? \"Postal Code\"\r\n : intl.formatMessage({id: \"look.inputs.\" + property})\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n};\r\n\r\nLookUserInput.propTypes = {\r\n property: PropTypes.string.isRequired,\r\n inputsValidated: PropTypes.bool.isRequired,\r\n shrink: PropTypes.bool,\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {userInfo, userInfoErrors} = store.userState;\r\n const fabricatorData = store.fabricatorState;\r\n return {\r\n userInfo,\r\n userInfoErrors,\r\n fabricatorData,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n changeUserInfo,\r\n changeUserInfoErrors\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookUserInput)\r\n)\r\n","import PropTypes from \"prop-types\";\r\n\r\nexport const miteredSectionInterface = {\r\n miteredSection: PropTypes.array,\r\n};\r\n\r\nexport const miteredSegmentInterface = {\r\n miteredSegment: PropTypes.object,\r\n};\r\n\r\nexport const waterfallSectionInterface = {\r\n waterfallSection: PropTypes.array,\r\n};\r\n\r\nexport const waterfallSegmentInterface = {\r\n waterfallSegment: PropTypes.object,\r\n};\r\n\r\nexport const changeValuePopupInterface = {\r\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n min: PropTypes.number,\r\n max: PropTypes.number,\r\n confirmCallback: PropTypes.func,\r\n increaseCallback: PropTypes.func,\r\n decreaseCallback: PropTypes.func,\r\n inputChangeCallback: PropTypes.func,\r\n value: PropTypes.number,\r\n position: PropTypes.object,\r\n};\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\n\r\nimport {postMessageToParent} from \"../lookMessaging\";\r\nimport {GROHE_POST_MESSAGES_ACTIONS} from \"../iframeIntegration\";\r\nimport {getLookId, getPostCartItemsList} from \"../lookNavigation/lookFunctions2\";\r\nimport {setIframeIntegrationRequest} from \"../../../actions/iframeIntegrationFunctions\";\r\nimport {loaderDisable, loaderEnable} from \"../../ui/loaderView\";\r\nimport {saveQuote} from \"../../../api/server-api\";\r\nimport {renderErrorPopup} from \"../../../api/api-popups\";\r\nimport WithLoginPostMessage from \"./withLoginPostMessage\";\r\nimport {isIframe} from \"../../../misc/helpers\";\r\nimport {showQuoteSavedNotification} from \"../../ui/successNotification\";\r\nimport Analytics from \"../../../analytics\";\r\nimport {getAnalyticsEcommerceValues} from \"../../../analyticsEcommerceParams\";\r\n\r\nconst WithSavePostMessage = (props) => {\r\n\r\n const {cartItems, children, activePreset, bvPresets, userIsLoggedIn, setIframeIntegrationRequest, fabricatorData} = props;\r\n const isLixil = isIframe() && fabricatorData.isLixil;\r\n\r\n const savePostMessage = async (loginPostMessage, cartItem = null) => {\r\n\r\n const {currency, value, items} = getAnalyticsEcommerceValues();\r\n Analytics.sendEcommerceEvent(\"add_to_wishlist\", {currency, value, items});\r\n\r\n if (!userIsLoggedIn && isLixil) {\r\n loginPostMessage();\r\n return false\r\n }\r\n const wishlistLines = getPostCartItemsList(cartItem ? [cartItem] : cartItems);\r\n if (!wishlistLines.length && isLixil) {\r\n renderErrorPopup(\"No items in your list\", null, \"Something went wrong\");\r\n return false\r\n }\r\n loaderEnable();\r\n saveQuote({\r\n submit: true,\r\n showReceipt: false\r\n })\r\n .then((responseData) => {\r\n document.kvConfig.jobId = responseData.jobId;\r\n if (isLixil) {\r\n let lookId = getLookId(activePreset, bvPresets);\r\n let savePostData = {\r\n \"EventType\": GROHE_POST_MESSAGES_ACTIONS.save,\r\n \"LookId\": lookId + \"\",\r\n \"WishlistRequestLines\": wishlistLines\r\n }\r\n if(responseData.jobId) {\r\n savePostData[\"VisualizerId\"] = responseData.jobId + \"\";\r\n }\r\n setIframeIntegrationRequest(savePostData);\r\n window.postMessageIsExecuting = true;\r\n postMessageToParent(savePostData);\r\n } else {\r\n showQuoteSavedNotification();\r\n loaderDisable();\r\n }\r\n })\r\n .catch((error) => {\r\n renderErrorPopup(\"Server \"+new Error(error));\r\n if (!isLixil) {\r\n loaderDisable();\r\n }\r\n })\r\n }\r\n\r\n return (\r\n \r\n {(loginPostMessage) => children(savePostMessage.bind(this, loginPostMessage))}\r\n \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {cartItems} = store.cartState;\r\n const {activePreset, bvPresets} = store.bathroomVisualizerState;\r\n const {userIsLoggedIn} = store.userState;\r\n const fabricatorData = store.fabricatorState;\r\n return {\r\n cartItems,\r\n activePreset,\r\n userIsLoggedIn,\r\n bvPresets,\r\n fabricatorData,\r\n }\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setIframeIntegrationRequest\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(WithSavePostMessage)\r\n","import {useEffect} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport {injectIntl} from \"react-intl\";\r\n\r\nimport {isIframe} from \"../../misc/helpers\";\r\nimport {setIframeIntegrationRequest, setIframeIntegrationResponse} from \"../../actions/iframeIntegrationFunctions\";\r\nimport {GROHE_POST_MESSAGES_ACTIONS} from \"./iframeIntegration\";\r\nimport {renderErrorPopup} from \"../../api/api-popups\";\r\nimport {LOOK_OVERLAYS} from \"./core/constants\";\r\nimport {setLookOverlayOpened} from \"../../actions/lookFunctions\";\r\nimport {loaderDisable} from \"../ui/loaderView\";\r\n\r\nexport const postMessageToParent = (postMessageData) => {\r\n console.log(\"sending postMessage to parent with data: \", postMessageData);\r\n if (isIframe() && window.parent) {\r\n return window.parent.postMessage(postMessageData, document.referrer);\r\n }\r\n return false\r\n}\r\n\r\n/**\r\n * this class reacts to all post messages from parent iframe\r\n **/\r\nconst LookMessaging = (props) => {\r\n\r\n const {setIframeIntegrationResponse, iframeIntegrationRequestType, iframeIntegrationResponseSuccess,\r\n setIframeIntegrationRequest, loginPostMessage, setLookOverlayOpened, iframeIntegrationResponse} = props;\r\n\r\n const handleIFrameMessage = (event) => {\r\n console.log(\"event received in visualizer: \", event);\r\n if (event && event.data && event.data.hasOwnProperty(\"Success\")) {\r\n setIframeIntegrationResponse(event.data);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (isIframe() && window.parent) {\r\n if (window.addEventListener) {\r\n window.addEventListener(\"message\", handleIFrameMessage, false);\r\n } else if (window.attachEvent) {\r\n window.attachEvent(\"onmessage\", handleIFrameMessage);\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n if ((iframeIntegrationRequestType === GROHE_POST_MESSAGES_ACTIONS.save)\r\n && (typeof iframeIntegrationResponseSuccess == \"boolean\")) {\r\n loaderDisable();\r\n setIframeIntegrationRequest({});\r\n setIframeIntegrationResponse({});\r\n window.postMessageIsExecuting = false;\r\n if (iframeIntegrationResponseSuccess) {\r\n setLookOverlayOpened(LOOK_OVERLAYS.saveSucess);\r\n } else if (iframeIntegrationResponse[\"ErrorCode\"] === \"SAVE-003\") {\r\n loginPostMessage(true);\r\n } else {\r\n renderErrorPopup(iframeIntegrationResponse[\"ErrorMessage\"]);\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [iframeIntegrationRequestType, iframeIntegrationResponseSuccess])\r\n\r\n return null\r\n\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {iframeIntegrationRequest, iframeIntegrationResponse} = store.iframeIntegrationState;\r\n return {\r\n iframeIntegrationRequestType: iframeIntegrationRequest[\"EventType\"],\r\n iframeIntegrationResponseSuccess: iframeIntegrationResponse[\"Success\"],\r\n iframeIntegrationResponse,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setIframeIntegrationResponse,\r\n setIframeIntegrationRequest,\r\n setLookOverlayOpened,\r\n};\r\n\r\nexport default withRouter(\r\n injectIntl(connect(mapStateToProps, mapDispatchToProps)(LookMessaging))\r\n)\r\n","import {useState} from \"react\";\r\n\r\nconst WithInputValidations = (props) => {\r\n\r\n const {children} = props;\r\n\r\n const [inputsValidated, setInputsValidated] = useState(true);\r\n\r\n const updateInputValidations = () => {\r\n setInputsValidated(false);\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n setInputsValidated(false);\r\n resolve()\r\n }, 300); // wait until redux store is updated with input Errors\r\n });\r\n };\r\n\r\n return children(inputsValidated, updateInputValidations)\r\n};\r\n\r\nexport default WithInputValidations\r\n","import React, {useEffect, useState} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {setLookActiveFeature, updateNavigationCount} from \"../../../../../actions/lookFunctions\";\r\nimport {getFeatureOptions, getOptionStyles, navFeatureCLick} from \"../../lookFunctions\";\r\nimport {updateCanvasCount} from \"../../../../../actions/actionFunctions\";\r\nimport {allowCheckForCollection} from \"../../../grohe/groheNavigation/groheFunctions\";\r\nimport Config, {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\n\r\nimport WithClickCount from \"../../../hocs/withClickCount\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS, PRODUCT_JOURNEY_ANALYTIC_EVENTS} from \"../../../../../analytics\";\r\nimport {enableRelatedFeature} from \"../../lookFunctions2\";\r\nimport PropTypes from \"prop-types\";\r\nimport {setWizardSelectedValues} from \"../../../../../actions/wizardFunctions\";\r\nimport {wizardGroupInterface} from \"../../../../../interfaces/wizardItemInterface\";\r\nimport {featureInterface} from \"../../../../../interfaces/featureInterface\";\r\nimport WithUpdateLookCartItem from \"../../../hocs/withUpdateLookCartItem\";\r\nimport {getColorFilterValue} from \"../../../../../misc/filtersFunctions\";\r\n\r\nconst LookFeatureOptions = (props) => {\r\n\r\n const {lookActiveFeature, filterGroups, setLookActiveFeature, lookActiveFeatureCustomName, updateCanvasCount,\r\n lookActiveFeatureCollection, lookActiveFeatureMatchingFeature, lookActiveFeatureMountType, lookActiveFeatureMountHoles,\r\n lookActiveFeatureLixilSubCategory, isWizard, wizardActiveStep, wizardGroup, setWizardSelectedValues, fabricatorData,\r\n updateNavigationCount, navigationCount, lookActiveFeaturePositionInList} = props;\r\n const [availableOptions, setAvailableOptions] = useState([]);\r\n\r\n const checkCollectionName = lookActiveFeature && !allowCheckForCollection(lookActiveFeature) ? \"\" : lookActiveFeatureCollection;\r\n\r\n useEffect(() => {\r\n if (fabricatorData.isEncore) {\r\n return\r\n }\r\n const colorOptions = getFeatureOptions(lookActiveFeature, filterGroups, \"Color\");\r\n setAvailableOptions(colorOptions || [])\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [lookActiveFeatureCustomName, checkCollectionName, lookActiveFeatureMatchingFeature,\r\n lookActiveFeatureMountType, lookActiveFeatureLixilSubCategory, lookActiveFeatureMountHoles, navigationCount]);\r\n\r\n if (!availableOptions.length || fabricatorData.isEncore) {\r\n return null\r\n }\r\n\r\n const activeFilterGroupValue = getColorFilterValue(lookActiveFeature, filterGroups)\r\n\r\n const optionsButtonClick = (option, maxClickCountReached, updateLookCartItem) => {\r\n\r\n const featureLabel = Analytics.getSkuForAnalytics(lookActiveFeature);\r\n const analyticsLabel = IS_PRODUCT_JOURNEY\r\n ? PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeatureOptions + featureLabel\r\n : LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeatureOptions + featureLabel;\r\n Analytics.sendClickEvent(analyticsLabel);\r\n\r\n if (maxClickCountReached()) { // fabricator settings click lead capture\r\n return false;\r\n }\r\n\r\n if (Config.isDevMode()) {\r\n console.log(\"option.feature\", option.feature);\r\n }\r\n\r\n if (isWizard) {\r\n setWizardSelectedValues({\r\n [wizardActiveStep]: {\r\n wizardGroup,\r\n selectedFeature: option.feature,\r\n partId: option.feature.partId\r\n }\r\n });\r\n }\r\n\r\n setLookActiveFeature(option.feature, lookActiveFeaturePositionInList);\r\n navFeatureCLick(option.feature);\r\n enableRelatedFeature(option.feature);\r\n updateLookCartItem(option.feature);\r\n updateNavigationCount();\r\n updateCanvasCount();\r\n };\r\n\r\n return (\r\n
    \r\n \r\n :\r\n {/*{IS_PRODUCT_JOURNEY ? \":\" : null}*/}\r\n {/*{activeFilterGroupValue && (IS_PRODUCT_JOURNEY) ? (*/}\r\n \r\n {activeFilterGroupValue ? (activeFilterGroupValue.displayText || activeFilterGroupValue.value).replace(\"GROHE \", \"\") : null}\r\n \r\n {/*) : null}*/}\r\n \r\n {/*{activeFilterGroupValue && !IS_PRODUCT_JOURNEY ? (*/}\r\n {/* */}\r\n {/* ({activeFilterGroupValue.displayText.replace(\"GROHE \", \"\")})*/}\r\n {/* */}\r\n {/*) : null}*/}\r\n \r\n {(maxClickCountReached) => (\r\n \r\n {(updateLookCartItem) => (\r\n
      \r\n {availableOptions.map(option => {\r\n const isActive = activeFilterGroupValue && (option.colorValue.id === activeFilterGroupValue.id);\r\n const styles = getOptionStyles(option.colorValue);\r\n return (\r\n
    • optionsButtonClick(option, maxClickCountReached, updateLookCartItem)}\r\n style={styles}/>\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\nLookFeatureOptions.propTypes = {\r\n isWizard: PropTypes.bool,\r\n wizardGroup: PropTypes.shape(wizardGroupInterface),\r\n activeFeature: PropTypes.shape(featureInterface),\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n const {navigationCount, lookActiveFeaturePositionInList} = store.lookState;\r\n const storeActiveFeature = store.lookState.lookActiveFeature;\r\n const {filterGroups} = store.filterState;\r\n const {wizardActiveStep} = store.wizardState;\r\n const lookActiveFeature = ownProps.activeFeature || storeActiveFeature;\r\n const fabricatorData = store.fabricatorState;\r\n\r\n return {\r\n lookActiveFeature,\r\n lookActiveFeaturePositionInList,\r\n filterGroups,\r\n wizardActiveStep,\r\n lookActiveFeatureCustomName: lookActiveFeature ? lookActiveFeature.getMatchingOptionsName() : null,\r\n lookActiveFeatureMountHoles: lookActiveFeature && lookActiveFeature.partId === \"vanity_sink\"\r\n && Array.isArray(lookActiveFeature.dbFeature.metaData[\"MountHoles\"])\r\n ? lookActiveFeature.dbFeature.metaData[\"MountHoles\"].join(\",\") : null,\r\n lookActiveFeatureLixilSubCategory: lookActiveFeature ? lookActiveFeature.dbFeature.lixilProductSubCategory : null,\r\n lookActiveFeatureMatchingFeature: lookActiveFeature && Array.isArray(lookActiveFeature.dbFeature.metaData[\"MatchingFeature\"])\r\n ? lookActiveFeature.dbFeature.metaData[\"MatchingFeature\"].join(\",\")\r\n : null,\r\n lookActiveFeatureMountType: lookActiveFeature && Array.isArray(lookActiveFeature.dbFeature.metaData[\"MountType\"])\r\n ? lookActiveFeature.dbFeature.metaData[\"MountType\"].join(\",\")\r\n : null,\r\n lookActiveFeatureCollection: lookActiveFeature ? lookActiveFeature.getCollectionName(filterGroups) : null,\r\n navigationCount, // to update options after all features received\r\n fabricatorData,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookActiveFeature,\r\n updateCanvasCount,\r\n setWizardSelectedValues,\r\n updateNavigationCount,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LookFeatureOptions)\r\n","import React, {Fragment} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport GroheFeatureOptionsType from \"./groheFeatureOptionsType\";\r\nimport {VANITY_TYPES} from \"../../../core/constants\";\r\nimport GroheFeatureOptionsShelfSide from \"./groheFeatureOptionsShelfSide\";\r\nimport GroheFeatureOptionsSide from \"./groheFeatureOptionsSide\";\r\nimport GroheFeatureOptionsShowerPan from \"./groheFeatureOptionsShowerPan\";\r\nimport BacksplashSelect from \"../../../../selectionWindow/backsplashSelect\";\r\nimport {wizardGroupInterface} from \"../../../../../interfaces/wizardItemInterface\";\r\nimport {setWizardSelectedValues} from \"../../../../../actions/wizardFunctions\";\r\nimport GroheFeatureOptionsCabinetSide from \"./groheFeatureOptionsCabinetSide\";\r\nimport {featureInterface} from \"../../../../../interfaces/featureInterface\";\r\nimport GroheFeatureOptionsBodySpray from \"./groheFeatureOptionsBodySpray\";\r\nimport WithUpdateLookCartItem from \"../../../hocs/withUpdateLookCartItem\";\r\nimport GroheFeatureOptionsSlatWall from \"./groheFeatureOptionsSlatWall\";\r\n\r\nconst GroheFeatureOptions = (props) => {\r\n\r\n const {lookActiveFeature, isWizard, wizardGroup, setWizardSelectedValues, wizardActiveStep, isLixil,\r\n groheActiveFeatureQuantity, updateLookCartItem} = props;\r\n\r\n if (!lookActiveFeature) {\r\n return null\r\n }\r\n\r\n const wizardOptionClick = (optionFeature) => {\r\n if (!isWizard || !optionFeature) {\r\n return\r\n }\r\n setWizardSelectedValues({\r\n [wizardActiveStep]: {\r\n wizardGroup,\r\n selectedFeature: optionFeature,\r\n partId: optionFeature.partId,\r\n quantity: groheActiveFeatureQuantity,\r\n }\r\n });\r\n updateLookCartItem();\r\n }\r\n\r\n return (\r\n \r\n \r\n {lookActiveFeature.partId === \"vanity_cabinet\" && !(isLixil && isWizard) ? : null}\r\n \r\n {Object.keys(VANITY_TYPES).includes(lookActiveFeature.partId) ? : null}\r\n {lookActiveFeature.partId === \"vanity_sink\" && !(isLixil && isWizard) ? : null}\r\n {lookActiveFeature.partId === \"corner_shelf\" || (lookActiveFeature.partId === \"body_spray\" && !isWizard)\r\n ? \r\n : null}\r\n {lookActiveFeature.partId === \"shower_pan_combo\" ? : null}\r\n {/*{lookActiveFeature.partId === \"shower_head\" ? : null}*/}\r\n {lookActiveFeature.partId === \"backsplash\" ? : null}\r\n {lookActiveFeature.partId === \"body_spray\" && isWizard\r\n ? \r\n : null}\r\n {lookActiveFeature.partId === \"slat_wall\"\r\n ? \r\n : null}\r\n \r\n )\r\n};\r\n\r\nGroheFeatureOptions.propTypes = {\r\n isWizard: PropTypes.bool,\r\n wizardGroup: PropTypes.shape(wizardGroupInterface),\r\n activeFeature: PropTypes.shape(featureInterface),\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n const {lookActiveFeature} = store.lookState;\r\n const {wizardActiveStep} = store.wizardState;\r\n const {isLixil} = store.fabricatorState;\r\n const {groheActiveFeatureQuantity} = store.groheState;\r\n\r\n return {\r\n lookActiveFeature: ownProps.activeFeature || lookActiveFeature,\r\n wizardActiveStep,\r\n isLixil,\r\n groheActiveFeatureQuantity,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setWizardSelectedValues,\r\n}\r\n\r\nexport default (\r\n connect(mapStateToProps, mapDispatchToProps)((props) => {\r\n return (\r\n \r\n {(updateLookCartItem) => }\r\n \r\n )\r\n })\r\n)\r\n","import {getFeatureCost, getFeatureUnit} from \"./helpers\";\r\nimport {BATHROOM_VISUALIZER_TYPES} from \"../config\";\r\nimport store from \"../store\";\r\nimport {fakeIntl} from \"../translatesProvider\";\r\n\r\n/**\r\n * returns feature compressed object that can be passed on the backend (without redundant info)\r\n * @param fromCartItem {cartItemInterface}\r\n * @param fromFeature {featureInterface}\r\n * @param quoteIndex {number}\r\n * @returns {object}\r\n */\r\nexport const getCompressedFeature = (fromCartItem, fromFeature, quoteIndex = 0) => {\r\n if (!fromFeature || !fromFeature.dbFeature) {\r\n return null\r\n }\r\n const featureGroup = fromFeature.getParent ? fromFeature.getParent() : null;\r\n const currentQuote = fromCartItem && Number.isInteger(fromCartItem.currentQuote) ? fromCartItem.currentQuote : quoteIndex;\r\n const compressedDbFeature = {\r\n partName: fromFeature.partName,\r\n sharedFeatureName: fromFeature.dbFeature.sharedFeatureName,\r\n dbFeatureId: fromFeature.dbFeature.id,\r\n sku: fromFeature.dbFeature.sku,\r\n groupName: fromFeature.dbFeature.groupName,\r\n parentName: featureGroup ? featureGroup.customGroupDisplayName || featureGroup.partName : undefined,\r\n partId: fromFeature.partId,\r\n featureDefinitionID: fromFeature.dbFeature.featureDefinitionID,\r\n noteText: fromFeature.notesList[currentQuote], // we don't restore noteText from here, we take it from getCompressedCartItem\r\n }\r\n if (fromFeature.dbFeature.priceWasChanged) {\r\n compressedDbFeature.customCost = fromFeature.dbFeature.cost; // to restore job feature prices\r\n compressedDbFeature.customPrice = fromFeature.dbFeature.price; // to restore job feature prices\r\n }\r\n if (fromFeature.dbFeature.markUpString) {\r\n compressedDbFeature.markUpString = fromFeature.dbFeature.markUpString; // to be able to compare! not needed for now\r\n }\r\n return compressedDbFeature\r\n}\r\n\r\n/**\r\n * returns cart item compressed object that can be passed on the backend // IS NOT USED IN PARSE RESPONSE ! ONLY NOTE TEXT IS USED\r\n * @param fromCartItem {cartItemInterface}\r\n // * @param fromFeature {featureInterface}\r\n // * @param quoteIndex {number}\r\n * @returns {object}\r\n */\r\nexport const getCompressedCartItem = (fromCartItem) => {\r\n if (!fromCartItem) {\r\n return null\r\n }\r\n const compressedCartItem = {\r\n partId: fromCartItem.partId,\r\n featureId: fromCartItem.cartFeature.dbFeature.featureDefinition_id,\r\n sku: fromCartItem.cartFeature.dbFeature.sku,\r\n quantity: fromCartItem.quantity,\r\n fabricatorFeatureId: fromCartItem.cartFeature.dbFeature.id,\r\n calculatedCost: getFeatureCost(fromCartItem.cartFeature, fromCartItem.quantity, fromCartItem.fromQtCategory),\r\n noteText: fromCartItem.noteText,\r\n addedBy: fromCartItem.addedBy,\r\n isRemoved: fromCartItem.isRemoved,\r\n }\r\n if (fromCartItem.cartFeature.dbFeature.priceWasChanged) {\r\n compressedCartItem.customCost = fromCartItem.cartFeature.dbFeature.cost; // to restore job feature prices\r\n compressedCartItem.customPrice = fromCartItem.cartFeature.dbFeature.price; // to restore job feature prices\r\n }\r\n if (fromCartItem.cartFeature.dbFeature.markUpString) {\r\n compressedCartItem.markUpString = fromCartItem.cartFeature.dbFeature.markUpString; // to be able to compare! not needed for now\r\n }\r\n return compressedCartItem\r\n}\r\n\r\n/**\r\n * returns cart items compressed objects\r\n * @param cartItems {[cartItemInterface]}\r\n * @returns {array}\r\n */\r\nexport const getCompressedCartItems = (cartItems) => {\r\n return cartItems.map(ci => {\r\n if (!ci.cartFeature || !ci.cartFeature.dbFeature) {\r\n return null\r\n }\r\n const {fabricatorState} = store.getState();\r\n const units = getFeatureUnit(ci.cartFeature, fakeIntl, fabricatorState, ci.quantity, ci);\r\n const fabCurrency = fabricatorState.settings.currency;\r\n const cartItem = Object.assign({}, ci, {\r\n cartFeature: getCompressedFeature(ci, ci.cartFeature),\r\n units,\r\n currency: ci.cartFeature.getFeatureCurrency ? ci.cartFeature.getFeatureCurrency() || fabCurrency : fabCurrency,\r\n });\r\n if (ci.relatedProductParent) {\r\n cartItem.relatedProductParent = getCompressedFeature(ci, ci.relatedProductParent);\r\n }\r\n if (ci.bundleParentId) {\r\n cartItem.bundleParentId = ci.bundleParentId;\r\n }\r\n return cartItem\r\n }).filter(cartItem => !!cartItem)\r\n}\r\n\r\n/**\r\n * sets feature groups properties TO bvState\r\n * @param bvState {object}\r\n * @param layout {object}\r\n * @returns {object}\r\n */\r\nexport const getFeatureGroupsProperties = (bvState, layout) => {\r\n layout.getFeatures(true).forEach((parentGroup) => {\r\n let relatedItems = parentGroup.getRelatedItems();\r\n relatedItems.forEach((subPart) => {\r\n if (subPart.customNames) {\r\n bvState[subPart.partId + \"_customNames\"] = subPart.customNames;\r\n }\r\n })\r\n })\r\n return bvState\r\n}\r\n\r\n/**\r\n * sets feature groups properties FROM bvState\r\n * @param bvState {object}\r\n * @param layout {object}\r\n * @returns {object}\r\n */\r\nexport const setFeatureGroupsProperties = (bvState, layout) => {\r\n layout.getFeatures(true).forEach((parentGroup) => {\r\n let relatedItems = parentGroup.getRelatedItems();\r\n relatedItems.forEach((subPart) => {\r\n if (bvState[subPart.partId + \"_customNames\"]) {\r\n subPart.customNames = bvState[subPart.partId + \"_customNames\"];\r\n }\r\n })\r\n })\r\n return bvState\r\n}\r\n\r\n\r\n/**\r\n * adds cookie to request data\r\n * @param data {object}\r\n * @returns {object}\r\n */\r\nexport const addGACookie = (data) => {\r\n try {\r\n if (!document.cookie) {\r\n return data\r\n }\r\n const getCookie = name => {\r\n const splitted = document.cookie.match(new RegExp(`(^| )${name}=([^;]+)`));\r\n return splitted ? splitted[2] : \"\"\r\n };\r\n data.cookiesAll = document.cookie;\r\n data.cookie_ga = getCookie(\"_ga\");\r\n } catch (error) {\r\n console.log(\"can't access cookie\", error);\r\n }\r\n return data\r\n}\r\n\r\nexport const getCartItemPartIdFix = (partId) => {\r\n if ((partId !== \"shower_wall\") && (partId !== \"shower_interior_wall\")) {\r\n return partId\r\n }\r\n const isBathroom = BATHROOM_VISUALIZER_TYPES.includes(document.kvConfig.visualizerType);\r\n if (isBathroom) {\r\n if (document.kvConfig.visualizerType === \"bvLook\") {\r\n return \"shower_wall\"\r\n }\r\n return \"shower_interior_wall\"\r\n }\r\n return partId // just in case\r\n}\r\n\r\nexport const fixFeaturesResponse = (response) => {\r\n if (!response) {\r\n return []\r\n }\r\n if (Array.isArray(response)) {\r\n return response;\r\n }\r\n if (Array.isArray(response.features)) {\r\n if (Array.isArray(response.relatedFeatures) && response.relatedFeatures.length) {\r\n // for (let i = 0; i < response.relatedFeatures.length; i++) {\r\n // response.relatedFeatures[i].isRelatedDbFeature = true;\r\n // }\r\n // console.log(\"response.relatedFeatures\", response.relatedFeatures);\r\n return [...response.relatedFeatures, ...response.features] // we should always be here // related goes first\r\n }\r\n return response.features; // keep it as an array\r\n }\r\n return [];\r\n}\r\n","import {SHAPE_PART_ID, SHAPE_TYPE} from \"../constants\";\r\nimport sqftShapeManager from \"../components/canvas/store/sqftShapeManager\";\r\nimport Polygon from \"../components/canvas/core/shapes/layouts/polygon\";\r\nimport {getAreaByShoelaceFormula} from \"./sqftHelper\";\r\nimport Wall from \"../components/canvas/core/shapes/wall\";\r\nimport workspaceControllers from \"../components/canvas/store/workspaceControllers\";\r\nimport {getCountertopPartNames} from \"./shapeHelper\";\r\n\r\nexport const enableFreeDrawMode = () => {\r\n\r\n}\r\n\r\nexport const disableFreeDrawMode = () => {\r\n\r\n}\r\n\r\nexport const createShapeFromFreeDrawPoints = (preparedPoints, shapeCenter) => {\r\n const [countertopPartName] = getCountertopPartNames();\r\n const shapeId = createShapeFromPoints(\r\n preparedPoints,\r\n countertopPartName,\r\n false,\r\n shapeCenter,\r\n true,\r\n null,\r\n {},\r\n {\r\n minimumShapeArea: 25,\r\n maximumShapeArea: 100000,\r\n maximumLineDistance: 1000,\r\n }\r\n );\r\n void shapeId;\r\n}\r\n\r\n/**\r\n * @param pointCords array\r\n * @param partId string\r\n * @param isClonePointRequired boolean\r\n * @param historyPosition\r\n * @param canPointsBeMoved\r\n * @param fromLayout\r\n * @param shapeParams\r\n * @param shapeCreationParams\r\n */\r\nexport const createShapeFromPoints = (\r\n pointCords,\r\n partId = SHAPE_PART_ID.seamPiece,\r\n isClonePointRequired = false,\r\n historyPosition = null,\r\n canPointsBeMoved = false,\r\n fromLayout = null,\r\n shapeParams = {},\r\n shapeCreationParams = {}\r\n) => {\r\n let polygonLines = new Polygon(pointCords, isClonePointRequired, canPointsBeMoved);\r\n let polygonArea = getAreaByShoelaceFormula(polygonLines);\r\n if (polygonArea < 0) {\r\n //create counterclockwise shape\r\n polygonLines = new Polygon(pointCords.reverse(), isClonePointRequired, canPointsBeMoved);\r\n polygonArea = getAreaByShoelaceFormula(polygonLines);\r\n }\r\n\r\n if (shapeCreationParams.minimumShapeArea && polygonArea < shapeCreationParams.minimumShapeArea) {\r\n console.log(\"polygon area is too small\");\r\n console.log(\"polygon area\", polygonArea);\r\n console.log(\"minimum polygon Area\", shapeCreationParams.minimumShapeArea);\r\n return null\r\n }\r\n if (shapeCreationParams.maximumShapeArea && polygonArea > shapeCreationParams.maximumShapeArea) {\r\n console.log(\"polygon area is too big\");\r\n console.log(\"polygon area\", polygonArea);\r\n console.log(\"maximum shape area\", shapeCreationParams.maximumShapeArea);\r\n return null\r\n }\r\n if (shapeCreationParams.maximumLineDistance) {\r\n for (const polygonLine of polygonLines) {\r\n if (polygonLine.getLineDistance() > shapeCreationParams.maximumLineDistance) {\r\n console.log(\"polygon line is too big\");\r\n console.log(\"polygon line distance\", polygonLine.getLineDistance());\r\n console.log(\"maximum line Distance\", shapeCreationParams.maximumLineDistance);\r\n return null\r\n }\r\n }\r\n }\r\n\r\n return sqftShapeManager.addShape(\r\n polygonLines, SHAPE_TYPE.polygon, historyPosition, partId, fromLayout, shapeParams\r\n );\r\n};\r\n\r\n/**\r\n *\r\n * @param points {array}\r\n * @param centerPoint {object}\r\n * @param lockedAngleStep\r\n */\r\nexport const createWallFromPointsV2 = (points, centerPoint, lockedAngleStep) => {\r\n const wall = new Wall(points, centerPoint, lockedAngleStep);\r\n workspaceControllers.walls.addResource(wall);\r\n return wall\r\n}\r\n\r\n/**\r\n *\r\n * @param points array\r\n */\r\nexport const createShapeFromCorePoints = (points) => {\r\n void points;\r\n}\r\n\r\n/**\r\n *\r\n * @param points array\r\n */\r\nexport const createPolygonFromCorePoints = (points) => {\r\n void points;\r\n //return new SQFTShapeFigure(points);\r\n}\r\n","import {sqftPost} from \"./sqftApi\";\r\nimport sqftConfig from \"../components/canvas/store/sqftConfig\";\r\n\r\nconst HARDCODED_DOMAIN = sqftConfig.threeD.useStagingDomain ? \"https://quotekandb.com\" : null;\r\n\r\nexport default class SqftJsonApi {\r\n static postCabinetSet(data, options = {}) {\r\n return sqftPost(\"/api/AR/Composer\", data, {...options, domain: HARDCODED_DOMAIN});\r\n }\r\n\r\n static getCountertops(data, options = {}) {\r\n return sqftPost(\"/api/AR/Composer/countertop\", data,{...options, domain: HARDCODED_DOMAIN});\r\n }\r\n\r\n static getResizedCabinet(data, options = {}) {\r\n return sqftPost(\"/api/AR/Composer/cabinet_resize\", data,{...options, domain: HARDCODED_DOMAIN});\r\n }\r\n\r\n static getResizedCornerCabinet(data, options = {}) {\r\n return sqftPost(\"/api/AR/Composer/corner_cabinet_resize\", data,{...options, domain: HARDCODED_DOMAIN});\r\n }\r\n\r\n static getWall(data, options = {}) {\r\n return sqftPost(\"/api/AR/Composer/wall\", data,{...options, domain: HARDCODED_DOMAIN});\r\n }\r\n\r\n static saveFiles(data, options = {}) {\r\n return sqftPost(\"/api/AR/Store\", data,{...options, domain: HARDCODED_DOMAIN});\r\n }\r\n\r\n static getCrownMolding(data, options = {}) {\r\n return sqftPost(\"/api/AR/Composer/crown_molding\", data,{...options, domain: HARDCODED_DOMAIN});\r\n }\r\n}\r\n","import {SHAPE_PART_ID} from \"./constants\";\r\n\r\nexport const SHAPE_HARDCODED_PART_IDS = [\r\n SHAPE_PART_ID.seamPiece,\r\n SHAPE_PART_ID.backsplashPiece,\r\n SHAPE_PART_ID.waterfallPiece,\r\n SHAPE_PART_ID.slabPlaceHolder,\r\n SHAPE_PART_ID.upper_cabinet_boxes,\r\n SHAPE_PART_ID.lower_cabinet_boxes,\r\n SHAPE_PART_ID.tall_cabinet_boxes,\r\n];\r\n\r\nexport const SHAPE_PART_IDS_VISIBLE_ONLY_IN_THE_SLAB_MODE = [\r\n SHAPE_PART_ID.seamPiece,\r\n SHAPE_PART_ID.backsplashPiece,\r\n SHAPE_PART_ID.waterfallPiece,\r\n SHAPE_PART_ID.slabPlaceHolder,\r\n];\r\n\r\nexport const SHAPE_PART_IDS_FROM_ADDITIONAL_SHAPES_LIST = [\r\n SHAPE_PART_ID.backsplashPiece,\r\n SHAPE_PART_ID.waterfallPiece,\r\n];\r\n","import EventManager from \"../store/sqftEventManager\";\r\nimport PointV2, {CORE_POINT_LAYOUTS} from \"../core/shapes/pointV2\";\r\nimport workspace from \"../core/workspace\";\r\nimport sqftConfig from \"../store/sqftConfig\";\r\nimport {\r\n getAngleRelativeToTheHorizontalAxis,\r\n getMousePositionOnField,\r\n getPointDistance\r\n} from \"../../../helpers/sqftHelper\";\r\n\r\n/**\r\n * @return {PointV2}\r\n */\r\nexport const getFreeDrawPoint = (pos) => {\r\n let pointState = {\r\n priority: EventManager.priorities.BOX_POINT,\r\n movable: true,\r\n isCentered: true,\r\n isResizedByPoint: false,\r\n isScaledByPoint: false,\r\n isVisibleOnHover: false\r\n };\r\n let pointDesign = {\r\n radius: 10,\r\n lineWidth: 1,\r\n layout: CORE_POINT_LAYOUTS.black\r\n };\r\n let wPos = workspace.getPosition();\r\n let scale = sqftConfig.scale;\r\n let offset = {\r\n x: (pos.x + wPos.x) / scale,\r\n y: (pos.y + wPos.y) / scale\r\n };\r\n\r\n return new PointV2(offset.x, offset.y, workspace, pointState, pointDesign);\r\n}\r\n\r\nexport const getLockedPoint = (existingPoint, pos, lockedAngleStep) => {\r\n const newPoint = getFreeDrawPoint(pos);\r\n const lockedPosition = getLockPointPos(existingPoint, lockedAngleStep);\r\n const lockedPositionOnField = getMousePositionOnField(lockedPosition.x, lockedPosition.y);\r\n newPoint.setPosition(lockedPositionOnField);\r\n\r\n return newPoint\r\n}\r\n\r\n/**\r\n * works only for 90 deg angle\r\n * @param pointV2\r\n * @param angleStep\r\n * @param mousePos\r\n * @return {{x: int, y: int}}\r\n */\r\nexport const getLockPointPos = (pointV2, angleStep = 90, mousePos = EventManager.LastKnownMousePos) => {\r\n const pointV2PointField = pointV2.getPointField();\r\n\r\n let rotateToMouseAngle = getAngleRelativeToTheHorizontalAxis(mousePos, pointV2PointField);\r\n let lineLength = getPointDistance(pointV2PointField, mousePos);\r\n const closestAngle = Math.round(rotateToMouseAngle / angleStep) * angleStep;\r\n const angleRad = (closestAngle * Math.PI) / 180;\r\n\r\n return {\r\n x: pointV2PointField.x + lineLength * Math.cos(angleRad),\r\n y: pointV2PointField.y + lineLength * Math.sin(angleRad)\r\n };\r\n};\r\n","import {Part} from \"../part\";\r\nimport {wallsThumbnail} from \"../../../bvComponent/core/assets\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\n\r\nimport store from \"../../../../store\";\r\nimport LeftWall from \"../subparts/walls/leftWall\";\r\nimport RightWall from \"../subparts/walls/rightWall\";\r\nimport CenterWall from \"../subparts/walls/centerWall\";\r\nimport BackWall from \"../subparts/walls/backWall\";\r\nimport Ceiling from \"../subparts/walls/ceiling\";\r\nimport FrontWall from \"../subparts/walls/frontWall\";\r\nimport SplitWall from \"../subparts/walls/splitWall\";\r\nimport LeftWallSplitter from \"../subparts/walls/leftWallSplitter\";\r\nimport CeilingPanels from \"../subparts/walls/ceilingPanels\";\r\n\r\nexport default class Walls extends Part {\r\n static id = 'Walls';\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'Walls';\r\n this.translateId = \"visualizer.bathroom.walls\";\r\n this.partThumbnail = wallsThumbnail;\r\n\r\n // related items\r\n this.leftWall = null;\r\n this.rightWall = null;\r\n this.centerWall = null;\r\n this.frontWall = null;\r\n this.popoutWall = null;\r\n this.backWall = null;\r\n this.ceiling = null;\r\n this.ceilingPanels = null;\r\n this.splitWall = null;\r\n this.leftWallSplitter = null;\r\n\r\n this.allWallsApplied = true;\r\n this.relatedGroupNames = [\"Backsplash\", \"Left Wall Splitter\", \"Left Wall\", \"Right Wall\", \"Center Wall\",\r\n \"Front Wall\", \"Back Wall\", \"Ceiling\", \"Ceiling Panels\"];\r\n }\r\n\r\n load(dbFeature, loadFeature = true) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Left Wall\":\r\n case \"Left Wall Crop\":\r\n relatedItemName = \"leftWall\";\r\n RelatedItemClass = LeftWall;\r\n break;\r\n case \"Right Wall\":\r\n case \"Right Wall Crop\":\r\n relatedItemName = \"rightWall\";\r\n RelatedItemClass = RightWall;\r\n break;\r\n case \"Center Wall\":\r\n relatedItemName = \"centerWall\";\r\n RelatedItemClass = CenterWall;\r\n break;\r\n case \"Front Wall\":\r\n case \"Front Wall Crop\":\r\n relatedItemName = \"frontWall\";\r\n RelatedItemClass = FrontWall;\r\n break;\r\n case \"Back Wall\":\r\n case \"Beack Wall\":\r\n relatedItemName = \"backWall\";\r\n RelatedItemClass = BackWall;\r\n break;\r\n case \"Split Wall\":\r\n relatedItemName = \"splitWall\";\r\n RelatedItemClass = SplitWall;\r\n break;\r\n case \"Left Wall Splitter\":\r\n relatedItemName = \"leftWallSplitter\";\r\n RelatedItemClass = LeftWallSplitter;\r\n break;\r\n case \"Ceiling Panels\":\r\n relatedItemName = \"ceilingPanels\";\r\n RelatedItemClass = CeilingPanels;\r\n break;\r\n case \"Ceiling\":\r\n case \"Cealing\":\r\n relatedItemName = \"ceiling\";\r\n RelatedItemClass = Ceiling;\r\n break;\r\n }\r\n return this.loadCommon(relatedItemName, RelatedItemClass, dbFeature, loadFeature)\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false;\r\n }\r\n\r\n subParts(withHidden = true) {\r\n return this.relatedItems\r\n .filter(item => {\r\n return this.filterRelatedItem(item, withHidden)\r\n })\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n handleSubPartClick() {\r\n\r\n }\r\n\r\n recoverPrevioslySelected(activeRelatedPart) {\r\n const {activeQuoteIndex} = store.getState().quotesState;\r\n this.relatedItems.forEach(relatedItem => {\r\n if (relatedItem.partId !== activeRelatedPart.partId && relatedItem.activeFeatureBeforeAllWalls) {\r\n if (relatedItem.activeFeatureBeforeAllWalls === \"placeholder\") {\r\n relatedItem.placeholderChanged = false;\r\n relatedItem.firstClick[activeQuoteIndex] = false;\r\n } else if (!relatedItem.selectedByUser) {\r\n relatedItem.activeFeatureBeforeAllWalls.clickFromAllWalls();\r\n }\r\n }\r\n });\r\n }\r\n\r\n getSplitWallType() {\r\n if (!this.splitWall) {\r\n return null\r\n }\r\n if (!this.splitWall.disabled && this.splitWall.activeFeature && this.splitWall.activeFeature.metaData[\"SplitWallType\"]\r\n && this.splitWall.activeFeature.matchesMetaForArrayOfConditions(this.splitWall.getArrayOfConditions())) {\r\n return this.splitWall.activeFeature.metaData[\"SplitWallType\"]\r\n } else {\r\n return [\"NW\", \"0\"]\r\n }\r\n }\r\n\r\n}\r\n","import debounce from \"lodash/debounce\";\r\nimport $ from 'jquery';\r\n\r\nimport {getMetadataByDimensions, scrollToDivInArea} from \"../../../misc/utils\";\r\nimport {getEventPosition, getFeatureIsLocked, isIframe} from \"../../../misc/helpers\";\r\nimport {vanityWizardFilters, showerWizardFilters, NotQCVanityDoorStylesFilters} from '../../bvComponent/core/constants';\r\nimport {\r\n CABINET_GROUP,\r\n CABINET_WIZARD_BUTTONS, COUNTERTOP_GROUP,\r\n COUNTERTOP_WIZARD_BUTTONS, LayoutAbbreviations,\r\n MODULE_CONTEXT_MENU_TYPES\r\n} from '../../kvComponent/core/constants';\r\nimport {ContentType, PartMenuType, UserPopupTypes} from \"../constants\";\r\nimport ActionTypes from \"../../../misc/actionTypes\";\r\nimport Analytics from './../../../analytics';\r\nimport {getBvGroupFeatures} from \"../../../api/server-api\";\r\nimport {loaderDisable, loaderEnable} from \"../../ui/loaderView\";\r\n\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport CountertopSwitchers from \"../../kvComponent/navigation/countertopSwitchers\";\r\nimport CabinetSwitchers from \"../../kvComponent/navigation/cabinetSwitchers\";\r\nimport NavigationRequests from \"./navigationRequests\";\r\nimport {toggleUpdateDisableFeatureGroupRadio} from \"../../../actions/navigationFunctions\";\r\nimport store from \"../../../store\";\r\nimport {CABINET_GROUP_BATHROOM, COUNTERTOP_GROUP_BATHROOM} from \"../../bvSceneComponent/core/constants\";\r\nimport Config from \"../../../config\";\r\nimport {\r\n // checkForCompatabilityAlert,\r\n clickOnSimilarFeatures,\r\n getApplyToLogic,\r\n} from \"../../look/lookNavigation/lookNavigationFunctions\";\r\nimport {navFeatureCLick} from \"../../look/lookNavigation/lookFunctions\";\r\nimport {updateCanvasCount} from \"../../../actions/actionFunctions\";\r\nimport {VISUALIZER_MANAGEMENT_ACTIONS} from \"../../../misc/constants\";\r\nimport {searchProductRequest} from \"../../../api/search-api\";\r\nimport {featureCanChangeShowerSize, searchForSameNameWallsBeforeFeatureApply} from \"../../look/bathroomFunctions\";\r\nimport {getSideBarSubParts} from \"./navUtils\";\r\n// import {setLookCompatabilityAlert} from \"../../../actions/lookFunctions\";\r\n\r\nexport default class Navigation extends NavigationRequests { // this class is used for both Desktop & Mobile navigations to avoid method's duplicating\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showNavigation: false,\r\n contentType: ContentType.None,\r\n parentNavigationItem: null, // coming from main menu, Vanity, Floor, ...\r\n childNavigationItem: null, // coming from a complex part's sub part, such as Vanity/Toilet\r\n searchText: \"\",\r\n designNavigationItems: [],\r\n contextMenuOpen: false,\r\n hoveredLayer: {},\r\n navWidth: 0,\r\n contextMenuPosition: {\r\n top: 0,\r\n left: 0\r\n },\r\n contextMenuPonyWall: false,\r\n filters: {},\r\n activeDefaultPreset: null,\r\n updateSidebarItems: false,\r\n vanityWizardGroups: vanityWizardFilters.map((filterName) => { // filterGroupsId's & their selected values\r\n return {\r\n filterName,\r\n selectedValueId: null,\r\n selectedValueName: \"\",\r\n hidden: filterName === \"Material\"\r\n }\r\n }),\r\n showerWallWizardGroups: showerWizardFilters.map((filterName) => { // filterGroupsId's & their selected values\r\n const wizardFilters = [\"SlabColor\", \"TileColor\", \"TilePattern\", \"AcrylicPattern\", \"AcrylicColor\"];\r\n return {\r\n filterName,\r\n selectedValueId: null,\r\n selectedValueName: \"\",\r\n hidden: wizardFilters.includes(filterName)\r\n }\r\n }),\r\n showerWallWizardGroupsSelected: false,\r\n showFeatureWizard: true,\r\n wizardStepIndex: 0,\r\n wizardActiveItemIsLocked: false,\r\n showFilterSelection: false\r\n };\r\n\r\n this.shouldRecoverWalls = false;\r\n this.navigationIsClosing = false;\r\n this.defaultPresetIndexToClick = null;\r\n }\r\n\r\n _componentDidMount() {\r\n const layout = getCurrentLayout();\r\n this.setState({\r\n designNavigationItems: layout.designNavigationItems(),\r\n });\r\n this.setIframeMessaging();\r\n document.getElementById(this.props.canvasId).addEventListener('click', this.bindCanvasClick);\r\n $(document).on(ActionTypes.USER_IS_LOGGED_IN, this.userHasLoggedIn);\r\n if (window.innerWidth < 480) { // workarounds for screens without the rotate icon\r\n // if (!window.rotatedCanvasTranslateIsSet) { // making canvas scroll to center\r\n // setTimeout(() => {\r\n // const $canvas = $('.canvas');\r\n // $canvas.css(\"transform\", `translateY(${window.innerWidth - $canvas.height()}px`);\r\n // window.rotatedCanvasTranslateIsSet = true;\r\n // }, 500);\r\n // }\r\n $(\".room .menu\").hide();\r\n setTimeout(() => {\r\n $(\".room .menu\").show(); // fix for menu blocking the main canvas\r\n }, 0)\r\n }\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n document.getElementById(this.props.canvasId).removeEventListener('click', this.bindCanvasClick);\r\n $(document).off(ActionTypes.USER_IS_LOGGED_IN, this.userHasLoggedIn);\r\n $(document).off('click', this.handleWrapperBlur);\r\n $(document).off(ActionTypes.OPEN_MOBILE_NAVIGATION);\r\n $(document).off(ActionTypes.CHANGE_MOBILE_MENU_CONTENT_TYPE);\r\n if (Config.isVisualizerManagement()) {\r\n window.removeEventListener(\"message\", this.messageListening);\r\n }\r\n if (this.props.toggleDesktopNavigation) {\r\n this.props.toggleDesktopNavigation(false)\r\n }\r\n if (this.props.setActiveNavigationNames) {\r\n this.props.setActiveNavigationNames(\"\", \"\")\r\n }\r\n }\r\n\r\n _componentWillReceiveProps(nextProps) {\r\n if (nextProps.visualizerTutorialStep === 2 && (this.props.visualizerTutorialStep === 1)\r\n && this.props.setVisualizerTutorialStep\r\n && this.props.showVisualizerTutorial) {\r\n this.openLayoutMenu(() => {\r\n const $scrollList = $(\".layout-list\");\r\n if (!$scrollList || !$scrollList.find(\".active\") || !$scrollList.find(\".active\").offset()) {\r\n return false\r\n }\r\n $scrollList.animate({scrollLeft: $scrollList.find(\".active\").offset().left}, 800, () => {\r\n // $(\"html, body\").animate({scrollTop: document.body.scrollHeight/4}, 500);\r\n setTimeout(() => {\r\n setTimeout(() => {\r\n this.closeNavigation();\r\n this.props.setVisualizerTutorialStep(3);\r\n this.props.showVisualizerTutorial(true);\r\n }, 300)\r\n }, 600)\r\n });\r\n });\r\n }\r\n const layout = getCurrentLayout();\r\n if(!this.state.designNavigationItems || !this.state.designNavigationItems.length) {\r\n this.setState({designNavigationItems: layout.designNavigationItems()});\r\n }\r\n }\r\n\r\n updateComponent = () => {\r\n this.forceUpdate();\r\n };\r\n\r\n userHasLoggedIn = () => { // click on current active item after unlock\r\n const layout = getCurrentLayout();\r\n if (this.props.activeFeature && this.state.showNavigation && this.state.contentType === ContentType.Design) {\r\n if (this.state.childNavigationItem) {\r\n const navItemToClick = layout.designNavigationItems(this.state.childNavigationItem, {}, \"\", true)\r\n .find(navItem => {\r\n return this.props.activeFeature.dbFeature.id === navItem.part.dbFeature.id;\r\n });\r\n if (navItemToClick) {\r\n this.handleNavigationItemClick(navItemToClick);\r\n }\r\n } else {\r\n this.handleNavigationItemClick({\r\n part: this.props.activeFeature\r\n });\r\n }\r\n this.props.refreshCB();\r\n } else if (this.state.contentType === ContentType.DisplayRoom && (this.defaultPresetIndexToClick || this.defaultPresetIndexToClick === 0)\r\n && (!this.props.fabricatorSettings.twoFA || (this.props.fabricatorSettings.twoFA && this.props.isPhoneNumberValidated))) {\r\n this.handleDefaultPresetClick(this.defaultPresetIndexToClick)\r\n }\r\n this.forceUpdate(); // update react virtualized grid for Safari mobile\r\n };\r\n\r\n setIframeMessaging = () => {\r\n if (Config.isVisualizerManagement()) {\r\n window.addEventListener(\"message\", this.messageListening);\r\n }\r\n };\r\n\r\n messageListening = (event) => {\r\n if (event.data && event.data.action === VISUALIZER_MANAGEMENT_ACTIONS.closeVisualizerNavigation) {\r\n this.closeMobileNavigationMenu();\r\n }\r\n };\r\n\r\n closeMobileNavigationMenu = () => {};\r\n\r\n triggerOpenNavigationMenu = (hoveredZone, clickedParent, activeNavigationFilter = null) => {\r\n const layout = getCurrentLayout();\r\n const designNavigationItems = layout.designNavigationItems();\r\n const menuItemToShow = clickedParent\r\n ? designNavigationItems.find(item => item.text === clickedParent)\r\n : designNavigationItems.find(item => item.text === hoveredZone);\r\n\r\n if (menuItemToShow) {\r\n this.setState({\r\n parentNavigationItem: menuItemToShow,\r\n childNavigationItem: null\r\n }, () => {\r\n\r\n if (menuItemToShow.part.menuType === PartMenuType.Simple) {\r\n this.checkIfAllFeaturesReceived(menuItemToShow, \"parentNavigationItem\");\r\n }\r\n\r\n if (menuItemToShow.part.handleClick) {\r\n menuItemToShow.part.handleClick();\r\n }\r\n // this.props.refreshCB(); // this refresh canvas (making redraw), but we need green zone to be shown! if needed - make settimeout 2 secs\r\n\r\n if (clickedParent) {\r\n const subMenuItemToShow = this.state.parentNavigationItem.part.subParts().find(item => {\r\n return item.text === hoveredZone\r\n });\r\n if (subMenuItemToShow) {\r\n this.handleSubPartClick(subMenuItemToShow, activeNavigationFilter);\r\n }\r\n }\r\n\r\n });\r\n this.props.setDefaultSelectionGroup(menuItemToShow.part.partName);\r\n }\r\n if (hoveredZone === \"Floor\") {\r\n $('html, body').animate({scrollTop: document.body.scrollHeight}, 800);\r\n } else if (hoveredZone === \"Ceiling\" || hoveredZone === \"Window\") {\r\n $('html, body').animate({scrollTop: 0}, 800);\r\n }\r\n };\r\n\r\n handleParentItemClick = (item) => {\r\n this.setState({\r\n parentNavigationItem: item,\r\n showFilterSelection: item.text === \"Floor\" && item.part.allFeaturesReceived, // show filters only if subItemPart has all features\r\n }, () => {\r\n // if (subParts[0] && (subParts[0].part.menuType !== PartMenuType.Simple)) {\r\n // this.handleSubPartClick(subParts[0])\r\n // }\r\n if (item.text === \"Walls\" || item.text === \"Shower\" || item.text === \"Bathtub\" || item.text === \"Vanity\" || item.text === \"Toilet\"\r\n || (item.menuType === PartMenuType.Complex)) {\r\n const subParts = getSideBarSubParts(this.state.parentNavigationItem.part);\r\n if (subParts.length) {\r\n this.handleSubPartClick(subParts[0])\r\n }\r\n }\r\n if ((item.text === \"Ceiling\" &&\r\n (document.kvConfig.visualizerType === \"Bathroom\" || document.kvConfig.visualizerType === \"BV\")) || item.text === \"Window\") {\r\n this.setState({\r\n childNavigationItem: null\r\n });\r\n this.checkIfAllFeaturesReceived(item, \"parentNavigationItem\");\r\n }\r\n this.scrollToDefault(item);\r\n });\r\n this.props.setDefaultSelectionGroup(item.part.partName);\r\n };\r\n\r\n handleLayoutItemClick = layoutType => {\r\n const layout = getCurrentLayout();\r\n if (document.kvConfig.visualizerType === \"Kitchen\" && layout.getCurrentLayoutAbbreviation().includes(\"I\")\r\n && !LayoutAbbreviations[layoutType].includes(\"I\")) {\r\n this.resetNavigation();\r\n }\r\n if (layout.type !== layoutType) {\r\n this.changeLayout(layoutType)\r\n }\r\n };\r\n\r\n resetNavigation = () => {\r\n this.setState({\r\n parentNavigationItem: null,\r\n childNavigationItem: null,\r\n searchText: \"\"\r\n });\r\n this.props.setActiveFeature(null);\r\n if (this.props.setActiveNavigationFilter) {\r\n this.props.setActiveNavigationFilter(CABINET_WIZARD_BUTTONS[0].buttonId);\r\n this.props.setActiveNavigationFilterStepIndex(0);\r\n }\r\n };\r\n\r\n getSearchProducts = (searchText) => {\r\n if (searchText && searchText.length > 2) {\r\n this.props.setNavigationLoading(true);\r\n const childItem = this.state.childNavigationItem ? this.state.childNavigationItem.part : this.state.parentNavigationItem.part;\r\n const promises = [searchProductRequest(childItem, searchText)];\r\n if (COUNTERTOP_GROUP.includes(childItem.partId) && document.kvConfig.visualizerType !== \"kvScene\") {\r\n // we have requests on click\r\n const layout = getCurrentLayout();\r\n COUNTERTOP_GROUP.forEach(neededPartId => {\r\n if (neededPartId !== childItem.partId) {\r\n const featureGroup = layout.getFeatureGroupByPartId(neededPartId);\r\n if (featureGroup) {\r\n promises.push(Navigation.searchFeaturesByName(featureGroup, searchText, 1000));\r\n }\r\n }\r\n });\r\n }\r\n Promise.all(promises)\r\n .then(() => {\r\n this.props.setNavigationLoading(false); // for loading & desktop update\r\n this.setState({ // for mobile update\r\n render: false,\r\n }, () => {\r\n this.setState({\r\n render: true,\r\n });\r\n });\r\n })\r\n }\r\n };\r\n\r\n searchAPIDebounced = debounce(this.getSearchProducts, 500);\r\n\r\n handleSearchInputChange = async (event) => {\r\n const searchText = event.target.value;\r\n this.setState({\r\n searchText\r\n });\r\n await this.searchAPIDebounced(searchText);\r\n };\r\n\r\n ponyWallAndLeftWallClick = (menuItem) => {\r\n const layout = getCurrentLayout();\r\n if (!this.props.fabricatorSettings.leadCapture || (this.props.fabricatorSettings.leadCapture && this.props.userIsLoggedIn)) {\r\n if (menuItem.part.partId === \"shower_body\" && (menuItem.text === \"Left Shower Wall\" || menuItem.text === \"Pony Wall\")) {\r\n const shower = layout.parts.Shower;\r\n const activeShower = shower.getActiveShowerGroup();\r\n const dimensions = getMetadataByDimensions(activeShower.showerDimensions());\r\n const wallParent = layout.parts.Walls;\r\n if (menuItem.text === \"Left Shower Wall\" && dimensions === \"Pony\" && wallParent.ponyWall.placeholderChanged) { // switch from Pony -> to Left Shower Wall\r\n const name1 = wallParent.ponyWall.activeFeature.getSplittedFeatureName();\r\n this.receiveAllFeaturesAndClickFeatureByName(wallParent, \"left_shower_wall\", name1);\r\n } else if (menuItem.text === \"Pony Wall\" && dimensions !== \"Pony\" && wallParent.wallExL.placeholderChanged) {\r\n const name1 = wallParent.wallExL.activeFeature.getSplittedFeatureName();\r\n this.receiveAllFeaturesAndClickFeatureByName(wallParent, \"pony_wall\", name1);\r\n }\r\n }\r\n }\r\n };\r\n\r\n receiveAllFeaturesAndClickFeatureByName = (parent, partId, name1) => {\r\n const exLSubPart = parent.getRelatedItems().find(relItem => relItem.partId === partId);\r\n const findAndClick = () => {\r\n const wallExLFeature = parent.wallExL.navigationSubItems().find(navItem => {\r\n return navItem.part.getSplittedFeatureName() === name1\r\n });\r\n if (wallExLFeature) {\r\n wallExLFeature.part.handleClick(true);\r\n this.props.refreshCB();\r\n }\r\n };\r\n findAndClick(); // first try without the request\r\n this.checkIfAllFeaturesReceived({part: exLSubPart}, null, findAndClick); // then receive all walls\r\n };\r\n\r\n _menuOpened = () => {\r\n if (isIframe() && window.parent) {\r\n window.parent.postMessage({\r\n action: 'menu_opened',\r\n payload: {}\r\n }, \"*\");\r\n }\r\n if (this.props.setDemoPointClicked && !this.props.visualizerTutorialIsOpened) {\r\n this.props.setDemoPointClicked()\r\n }\r\n if (this.props.toggleDesktopNavigation) {\r\n this.props.toggleDesktopNavigation(true)\r\n }\r\n if (this.props.setModuleContextMenuType) {\r\n this.props.setModuleContextMenuType(MODULE_CONTEXT_MENU_TYPES.Filters)\r\n }\r\n };\r\n\r\n renderErrorPopup(message) {\r\n this.props.changeMessageBoxState({\r\n visible: true,\r\n error: true,\r\n message,\r\n buttons: [{\r\n text: \"messageBox.buttonOk\",\r\n color: 'red',\r\n click: () => {\r\n this.props.changeMessageBoxState({visible:false});\r\n }\r\n }]\r\n });\r\n }\r\n\r\n itemClick = async (item, ignoreLocked) => {\r\n\r\n const layout = getCurrentLayout();\r\n\r\n if (item && item.text === \"Floor\") {\r\n $('html, body').animate({scrollTop: document.body.scrollHeight}, 800);\r\n } else if (item && item.text === \"Ceiling\") {\r\n $('html, body').animate({scrollTop: 0}, 800);\r\n }\r\n\r\n if (layout.visualizerType === \"bvScene\") {\r\n await searchForSameNameWallsBeforeFeatureApply(item.part);\r\n }\r\n\r\n if (layout.isNewLayout && !item.part.relatedItems) {\r\n\r\n const applyFeature = async (feature) => {\r\n\r\n if (featureCanChangeShowerSize(feature)) {\r\n await searchForSameNameWallsBeforeFeatureApply(feature);\r\n }\r\n\r\n navFeatureCLick(feature, true, ignoreLocked);\r\n\r\n const applyToLogic = getApplyToLogic(item.part);\r\n if (applyToLogic && Array.isArray(applyToLogic.currentApplyToArray) && applyToLogic.currentApplyToArray.length) {\r\n await clickOnSimilarFeatures(item.part, applyToLogic, true);\r\n }\r\n }\r\n\r\n // const compatabilityLogic = checkForCompatabilityAlert(item.part);\r\n // if (compatabilityLogic.length) {\r\n // store.dispatch(setLookCompatabilityAlert({\r\n // visible: true,\r\n // compatabilityLogic,\r\n // clickedFeature: item.part,\r\n // applyFunction: applyFeature.bind(this, item.part) // always apply features from this popup\r\n // }));\r\n // return false\r\n // }\r\n\r\n await applyFeature(item.part);\r\n\r\n } else {\r\n\r\n await item.part.handleClick(ignoreLocked);\r\n\r\n if (this.isWallItem(item.part) && item.part.getParent().getParent().allWallsApplied) {\r\n this.applyAllWalls(item.part, ignoreLocked);\r\n }\r\n if (CABINET_GROUP.includes(item.part.partId) || CABINET_GROUP_BATHROOM.includes(item.part.partId)) {\r\n const featureIsLocked = getFeatureIsLocked(item.part);\r\n CabinetSwitchers.applyAllCabinets(item.part, !featureIsLocked || ignoreLocked);\r\n } else if (COUNTERTOP_GROUP.includes(item.part.partId) || COUNTERTOP_GROUP_BATHROOM.includes(item.part.partId)) {\r\n const featureIsLocked = getFeatureIsLocked(item.part);\r\n CountertopSwitchers.applyAllCountertops(item.part, !featureIsLocked || ignoreLocked);\r\n }\r\n }\r\n\r\n if (item.part.getParent && item.part.getParent().disabled) {\r\n const itemParent = item.part.getParent();\r\n const itemIsLocked = getFeatureIsLocked(item.part, ignoreLocked);\r\n let exLAndBathtubAndSmallRoom = false;\r\n if (itemParent.partId === \"left_shower_wall\" && layout.type === 0) {\r\n const showerBody = layout.parts.Shower.showerBody;\r\n if (showerBody && showerBody.disabled) {\r\n exLAndBathtubAndSmallRoom = true\r\n }\r\n }\r\n if (itemParent.disabled && !exLAndBathtubAndSmallRoom && !itemIsLocked) {\r\n itemParent.disabled = false;\r\n itemParent.disabledClick(); // disable also related parts\r\n store.dispatch(toggleUpdateDisableFeatureGroupRadio(true));\r\n store.dispatch(toggleUpdateDisableFeatureGroupRadio(false));\r\n }\r\n }\r\n if (item.part.getParent && item.part.getParent().getParent) { // enable shower if child is clicked\r\n const parent = item.part.getParent().getParent();\r\n if (parent.partName === \"Shower\" && parent.showerBody.disabled) {\r\n parent.showerBody.disabled = false;\r\n parent.showerBody.disabledClick(); // enable also related parts\r\n }\r\n }\r\n $(window).trigger(ActionTypes.CHANGE_LAYOUT); // update canvas\r\n store.dispatch(updateCanvasCount()); // for look remove button\r\n };\r\n\r\n callMetaMathesFailedPopup = (item, nonCompatibleWith) => {\r\n // console.log('item.matchesMetaFailedArray', item.matchesMetaFailedArray);\r\n const featureIsLocked = getFeatureIsLocked(item.part);\r\n if (!featureIsLocked) {\r\n const message = {\r\n id: \"messageBox.metaDataMatchesFailed\",\r\n featureGroup: item.part.getParent().partName.toLowerCase(),\r\n featureName: item.part.getFeatureName(),\r\n nonCompatibleWith\r\n };\r\n this.props.changeMessageBoxState({\r\n visible: true,\r\n message,\r\n buttons: [{\r\n text: \"messageBox.buttonYes\",\r\n color: 'green',\r\n click: () => {\r\n item.part.handleChangeParent(nonCompatibleWith); // change parent(vanity size)\r\n item.part.handleClick(); // set active\r\n const childNavigationItem = this.state.childNavigationItem;\r\n this.setState({ // update component & navigation\r\n childNavigationItem: null,\r\n },() => {\r\n this.setState({\r\n childNavigationItem\r\n })\r\n });\r\n setTimeout(() => {\r\n scrollToDivInArea($('.feature.active'), $('.categories-list'));\r\n }, 1000);\r\n this.props.changeMessageBoxState({visible:false});\r\n }\r\n },{\r\n text: \"messageBox.buttonNo\",\r\n color: \"blue\",\r\n click: () => {\r\n this.props.changeMessageBoxState({visible:false});\r\n }\r\n }]\r\n });\r\n }\r\n };\r\n\r\n callToiletFailPopup = (clickFrom, item, ignoreLocked = false) => {\r\n const featureIsLocked = getFeatureIsLocked(item.part, ignoreLocked);\r\n if (!featureIsLocked) {\r\n const message = (clickFrom === 'toilet') ? \"messageBox.toiletMetaDataFailed\" : \"messageBox.toiletMetaDataFailedVanity\";\r\n const buttons = (clickFrom === 'toilet')\r\n ? [{\r\n text: \"messageBox.buttonOk\",\r\n color: \"blue\",\r\n click: () => {\r\n this.props.changeMessageBoxState({visible:false});\r\n }\r\n }]\r\n : [{\r\n text: \"messageBox.buttonNo\",\r\n color: \"blue\",\r\n click: () => {\r\n this.props.changeMessageBoxState({visible:false});\r\n }\r\n },{\r\n text: \"messageBox.buttonYes\",\r\n color: \"green\",\r\n click: () => {\r\n this.itemClick(item, ignoreLocked);\r\n this.props.changeMessageBoxState({visible:false});\r\n }\r\n }];\r\n this.props.changeMessageBoxState({\r\n visible: true,\r\n message,\r\n buttons\r\n });\r\n }\r\n };\r\n\r\n toggleApplyWallsCheckbox = () => {\r\n const wallParent = this.state.parentNavigationItem.part;\r\n wallParent.allWallsApplied = !wallParent.allWallsApplied;\r\n if (!wallParent.allWallsApplied && this.shouldRecoverWalls) {\r\n wallParent.recoverPrevioslySelected(this.state.childNavigationItem.part)\r\n } else if (\r\n wallParent.allWallsApplied\r\n && this.state.childNavigationItem\r\n && this.state.childNavigationItem.part\r\n && this.state.childNavigationItem.part.activeFeature\r\n && this.state.childNavigationItem.part.placeholderChanged) {\r\n this.applyAllWalls(this.state.childNavigationItem.part.activeFeature, false);\r\n }\r\n this.props.refreshCB();\r\n };\r\n\r\n rememberWallsSelection = () => { // this is set when new Wall Navigation Item is clicked\r\n const featureGroup = this.state.childNavigationItem.part;\r\n if ((this.isWallItem(featureGroup) || featureGroup.allWallsCanBeApplied)\r\n && this.state.parentNavigationItem.part.setPrevioslySelected) {\r\n this.state.parentNavigationItem.part.setPrevioslySelected(featureGroup);\r\n }\r\n this.shouldRecoverWalls = false;\r\n };\r\n\r\n applyAllWalls = (navigationItemPart, ignoreLocked) => {\r\n // console.log('navigationItem', navigationItem);\r\n const layout = getCurrentLayout();\r\n const wallParent = this.state.parentNavigationItem.part;\r\n const allWalls = wallParent.relatedItems;\r\n\r\n if (document.kvConfig.visualizerType === \"Bathroom\" || document.kvConfig.visualizerType === \"BV\") {\r\n allWalls.forEach((relatedItem) => {\r\n if (this.isWallItem(relatedItem) && (relatedItem.partId !== navigationItemPart.partId)) {\r\n const wallsPartIds = [\"right_shower_wall\", \"left_shower_wall\", \"pony_wall\"];\r\n let featuresAvailableToClick = wallsPartIds.includes(relatedItem.partId)\r\n ? relatedItem.getAvailableFeatures()\r\n : relatedItem.features; // for other walls we don't have filters\r\n const navigationItemName = navigationItemPart.dbFeature.sharedFeatureName;\r\n const neededFeature = featuresAvailableToClick.find((feature) => {\r\n const featureName = feature.dbFeature.sharedFeatureName;\r\n return navigationItemName === featureName\r\n });\r\n // console.log('neededFeature', neededFeature);\r\n neededFeature && neededFeature.clickFromAllWalls(ignoreLocked);\r\n } else if (relatedItem.partId === \"accent_wall\" && !relatedItem.placeholderChanged) {\r\n relatedItem.disabled = true;\r\n }\r\n });\r\n const vanity = layout.parts[\"Vanity\"];\r\n if (vanity.vanityBacksplash && !vanity.vanityBacksplash.placeholderChanged) {\r\n vanity.vanityBacksplash.disabled = true;\r\n }\r\n } else if (document.kvConfig.visualizerType !== \"Bathroom\") {\r\n allWalls.forEach((relatedItem) => {\r\n if (this.isWallItem(relatedItem) && (relatedItem.partId !== navigationItemPart.partId)) {\r\n const navigationItemName = navigationItemPart.dbFeature.sharedFeatureName;\r\n const neededFeature = relatedItem.features.find((feature) => {\r\n const featureName = feature.dbFeature.sharedFeatureName;\r\n return featureName === navigationItemName\r\n });\r\n // console.log('neededFeature', neededFeature);\r\n neededFeature && neededFeature.clickFromAllWalls(ignoreLocked);\r\n }\r\n });\r\n }\r\n\r\n this.shouldRecoverWalls = true;\r\n this.props.refreshCB();\r\n };\r\n\r\n handleSubTypeClick = subType => { // sidebar radio button click\r\n Analytics.sendClickEvent('sub-type-clicked-' + subType);\r\n if (this.props.changeActivePartRelatedItemIndex) {\r\n this.props.changeActivePartRelatedItemIndex(0); // set first item on materials page\r\n }\r\n this.state.parentNavigationItem.part.handleSubTypeClick(subType, this.handleNavigationItemClick);\r\n const childNavigationItem = this.state.parentNavigationItem.part.setDefaultPartAfterSubTypeClick();\r\n this.setState({\r\n childNavigationItem,\r\n showFilterSelection: childNavigationItem.part.allFeaturesReceived, // show filters only if subItemPart has all features\r\n showerWallWizardGroupsSelected: false,\r\n searchText: \"\"\r\n },() => {\r\n this.setNewActiveFeature();\r\n this.rememberWallsSelection();\r\n this.checkIfAllFeaturesReceived(childNavigationItem, \"childNavigationItem\");\r\n });\r\n /*set new materials page subIndex*/\r\n this.setActivePartRelatedItemIndex(childNavigationItem);\r\n this.props.refreshCB();\r\n };\r\n\r\n setActivePartRelatedItemIndex = (childNavigationItem) => {\r\n const layout = getCurrentLayout();\r\n let nextSubPartIndex = 0;\r\n if (this.state.parentNavigationItem && !layout.qtCategories) { // we don't need to set for qtCategories\r\n const subParts = childNavigationItem.part.getParent().subParts(false);\r\n nextSubPartIndex = subParts.findIndex(currentSubPart => {\r\n return currentSubPart.part.partId === childNavigationItem.part.partId;\r\n });\r\n }\r\n setTimeout(() => {\r\n this.props.changeActivePartRelatedItemIndex(nextSubPartIndex); // setTimeout is needed cause it needs parent to be updated\r\n }, 0);\r\n };\r\n\r\n setNewActiveFeature = (subNavigationItem) => {\r\n if (!subNavigationItem) {\r\n subNavigationItem = this.state.childNavigationItem || this.state.parentNavigationItem || null;\r\n }\r\n\r\n if (subNavigationItem) {\r\n const featureToSet = ((this.props.fabricatorSettings.leadCapture && !(document.kvConfig.isBackend && document.kvConfig.jobId && document.kvConfig.canSaveQuote))\r\n && !this.props.userIsLoggedIn && subNavigationItem.part.activeLockedFeature)\r\n || ((this.props.fabricatorSettings.leadCapture && !(document.kvConfig.isBackend && document.kvConfig.jobId && document.kvConfig.canSaveQuote))\r\n && this.props.userIsLoggedIn\r\n && subNavigationItem.part.activeLockedFeature\r\n && !subNavigationItem.part.placeholderChanged)\r\n ? subNavigationItem.part.activeLockedFeature\r\n : subNavigationItem.part.activeFeature;\r\n this.props.setActiveFeature(featureToSet);\r\n }\r\n };\r\n\r\n handleDefaultPresetClick = (index, presetIsLocked) => {\r\n const layout = getCurrentLayout();\r\n Analytics.sendClickEvent('preset-selected-' + index);\r\n if (presetIsLocked) {\r\n this.defaultPresetIndexToClick = index;\r\n this.props.toggleUserPopup({\r\n userPopupOpened: true\r\n });\r\n return\r\n }\r\n this.defaultPresetIndexToClick = null;\r\n this.setState({\r\n activeDefaultPreset: index\r\n }, () => {\r\n window.requestInProcess = true;\r\n loaderEnable();\r\n const defaultPreset = this.props.bvPresets[index];\r\n console.log('defaultPreset', defaultPreset);\r\n const cabinetParent = layout.parts[\"Cabinet\"];\r\n const noCabinets = (cabinetParent && cabinetParent.topCabinet\r\n && !cabinetParent.topCabinet.allFeaturesReceived) || (cabinetParent && cabinetParent.bottomCabinet\r\n && !cabinetParent.bottomCabinet.allFeaturesReceived);\r\n if (noCabinets && (document.kvConfig.visualizerType !== \"kvScene\")) {\r\n const neededParts = [\"top_cabinet\", \"bottom_cabinet\"];\r\n const allRelated = cabinetParent.relatedItems.filter((relatedItem) => {\r\n return neededParts.includes(relatedItem.partId) && !relatedItem.allFeaturesReceived\r\n });\r\n const promises = allRelated.map((relatedItem) => {\r\n return getBvGroupFeatures(relatedItem.dbName || relatedItem.partName).then(response => {\r\n relatedItem.setGroupFeatures(Array.isArray(response) ? response : []);\r\n return response\r\n })\r\n });\r\n Promise.all(promises)\r\n .then(() => this.finishPresetLoading(layout, defaultPreset))\r\n } else {\r\n loaderEnable();\r\n this.finishPresetLoading(layout, defaultPreset);\r\n }\r\n });\r\n };\r\n\r\n finishPresetLoading = (layout, preset) => {\r\n layout.setItemsFromBvState(preset)\r\n .then(() => {\r\n window.requestInProcess = false;\r\n loaderDisable();\r\n });\r\n }\r\n\r\n handleUserLoginClick = (userPopupType = UserPopupTypes.Unlock) => {\r\n this.props.toggleUserPopup({\r\n userPopupOpened: true,\r\n userPopupType\r\n });\r\n };\r\n\r\n currentActiveItemIsLocked = (useWizard) => {\r\n\r\n const {visualizerManagement, isBackend, jobId, canSaveQuote} = document.kvConfig;\r\n const {fabricatorSettings, isPhoneNumberValidated, activeFeature, filterGroups, activeQuoteIndex} = this.props;\r\n const {showFeatureWizard, wizardActiveItemIsLocked} = this.state;\r\n\r\n if (!fabricatorSettings.leadCapture\r\n || (fabricatorSettings.leadCapture && visualizerManagement)\r\n || (fabricatorSettings.leadCapture && isPhoneNumberValidated)\r\n || (fabricatorSettings.leadCapture && (isBackend && jobId && canSaveQuote))){\r\n return false\r\n }\r\n\r\n const itemHasLockedFilters = () => {\r\n let lockedFilters = false;\r\n const filterValues = activeFeature && activeFeature.dbFeature && activeFeature.dbFeature.filterValueIDs;\r\n if (filterValues) {\r\n lockedFilters = Object.keys(filterValues).some((filterKey) => {\r\n const filterGroup = filterGroups.find(group => group.id === +filterKey);\r\n const filterValue = filterGroup && filterGroup.values && filterGroup.values.find(value => value.id === filterValues[filterKey][0]);\r\n return filterValue && filterValue.lockedInWizard\r\n });\r\n }\r\n return lockedFilters\r\n };\r\n\r\n return (\r\n activeFeature\r\n && activeFeature.getParent().firstClick[activeQuoteIndex]\r\n && activeFeature.dbFeature\r\n && !activeFeature.dbFeature.unlocked\r\n && !activeFeature.notAvailableInVisualizer\r\n && !(useWizard && showFeatureWizard)\r\n ) || (useWizard && showFeatureWizard && wizardActiveItemIsLocked) || itemHasLockedFilters()\r\n };\r\n\r\n checkedForLockedPresets = () => {\r\n // const layout_typelayout_type: 1\r\n const layout = getCurrentLayout();\r\n const fabricatorSettings = this.props.fabricatorSettings;\r\n const showSmallRoomLayout = fabricatorSettings &&\r\n (fabricatorSettings.showSmallDesignForClients\r\n || (fabricatorSettings.showSmallDesignFromDashboard && document.kvConfig.isBackend));\r\n return Array.isArray(this.props.bvPresets) && this.props.bvPresets.length\r\n ? this.props.bvPresets\r\n .filter(preset => {\r\n if (!showSmallRoomLayout && (document.kvConfig.visualizerType === \"Bathroom\"\r\n || document.kvConfig.visualizerType === \"BV\")) {\r\n return preset.layout_type !== 0\r\n }\r\n return preset\r\n })\r\n .map((preset) => {\r\n if (preset.presetUnlocked) {\r\n preset.presetIsLocked = false\r\n } else {\r\n preset.presetIsLocked = this.props.fabricatorSettings.leadCapture\r\n && !(document.kvConfig.isBackend && document.kvConfig.jobId && document.kvConfig.canSaveQuote)\r\n && !this.props.isPhoneNumberValidated && (!preset.presetUnlocked || layout.bvStateHasLockedItems(preset))\r\n }\r\n // console.log(\"preset.presetIsLocked\", preset.presetIsLocked);\r\n return preset\r\n }).sort((a, b) => a.presetIsLocked !== b.presetIsLocked ? a.presetIsLocked < b.presetIsLocked ? -1 : 1 : 0) // sort by presetIsLocked\r\n : []\r\n };\r\n\r\n closeContextMenu = () => {\r\n this.setState({\r\n contextMenuOpen: false,\r\n })\r\n };\r\n\r\n /*** WIZARD ***/\r\n\r\n exitFeatureWizard = (wizardGroups, partId) => {\r\n this.setState({\r\n wizardStepIndex: 0,\r\n showFeatureWizard: false,\r\n wizardActiveItemIsLocked: false,\r\n searchText: \"\"\r\n });\r\n this.setWizardGroups(wizardGroups, partId);\r\n };\r\n\r\n enableFeatureWizard = (wizardStepIndex) => {\r\n this.setState({\r\n wizardStepIndex,\r\n showerWallWizardGroupsSelected: wizardStepIndex !== 0\r\n }, () => {\r\n this.setState({\r\n showFeatureWizard: true,\r\n })\r\n });\r\n };\r\n\r\n setWizardStepIndex = (wizardStepIndex) => {\r\n this.setState({\r\n wizardStepIndex\r\n })\r\n };\r\n\r\n setWizardGroups = (wizardGroups, partId) => {\r\n const wizardGroupsName = this.getWizardGroupsByPartId(partId);\r\n this.setState({\r\n [wizardGroupsName]: this.state[wizardGroupsName].map((wizardGroup) => {\r\n const currentGroup = wizardGroups.find(wGroup => wGroup.filterName === wizardGroup.filterName);\r\n if (currentGroup) {\r\n wizardGroup.selectedValueId = currentGroup.selectedValueId;\r\n wizardGroup.selectedValueName = currentGroup.selectedValueName;\r\n wizardGroup.hidden = currentGroup.hidden;\r\n wizardGroup.values = currentGroup.values;\r\n }\r\n return wizardGroup\r\n })\r\n })\r\n };\r\n\r\n setWizardLockedItem = (itemIsLocked) => {\r\n this.setState({\r\n wizardActiveItemIsLocked: itemIsLocked\r\n })\r\n };\r\n\r\n resetActiveFeature = () => {\r\n this.props.setActiveFeature(null);\r\n this.setState({\r\n wizardActiveItemIsLocked: false\r\n })\r\n };\r\n\r\n resetWizardSteps = () => {\r\n this.setState({\r\n vanityWizardGroups: vanityWizardFilters.map((filterName) => { // filterGroupsId's & their selected values\r\n return {\r\n filterName,\r\n selectedValueId: null,\r\n selectedValueName: \"\",\r\n hidden: filterName === \"Material\"\r\n }\r\n }),\r\n showerWallWizardGroups: showerWizardFilters.map((filterName) => {\r\n const wizardFilters = [\"SlabColor\", \"TileColor\", \"TilePattern\", \"AcrylicPattern\", \"AcrylicColor\"];\r\n return {\r\n filterName,\r\n selectedValueId: null,\r\n selectedValueName: \"\",\r\n hidden: wizardFilters.includes(filterName)\r\n }\r\n }),\r\n showFeatureWizard: true,\r\n wizardStepIndex: 0,\r\n wizardActiveItemIsLocked: false,\r\n })\r\n };\r\n\r\n getWizardGroupsByPartId = (partId) => {\r\n switch (partId) {\r\n case \"vanity_cabinet\":\r\n return \"vanityWizardGroups\";\r\n case \"shower_interior_wall\":\r\n return \"showerWallWizardGroups\";\r\n default:\r\n return \"\";\r\n }\r\n };\r\n\r\n getFilterDisplayName = (filterName, intl = null) => {\r\n switch (filterName) {\r\n case \"DoorStyle\":\r\n return intl ? intl.formatMessage({id: \"Door Style\"}) : \"Door Style\"\r\n case \"Material\":\r\n return intl\r\n ? intl.formatMessage({id: this.state.childNavigationItem.part.partId === \"vanity_cabinet\" ? \"WoodType\" : \"Material\"})\r\n : this.state.childNavigationItem.part.partId === \"vanity_cabinet\" ? \"Wood Type\" : \"Material\";\r\n case \"AcrylicColor\":\r\n case \"DuraBathColor\":\r\n case \"SlabColor\":\r\n case \"TileColor\":\r\n return intl ? intl.formatMessage({id: \"Color\"}) : \"Color\";\r\n case \"AcrylicPattern\":\r\n return intl ? intl.formatMessage({id: \"Pattern\"}) : \"Pattern\";\r\n default:\r\n return intl ? intl.formatMessage({id: filterName}) : filterName\r\n }\r\n };\r\n\r\n removeFilterSelection = () => {\r\n this.setState({\r\n showFilterSelection: false\r\n })\r\n };\r\n\r\n toggleWizardFilterSelection = (showerWallWizardGroupsSelected) => {\r\n this.setState({\r\n showerWallWizardGroupsSelected\r\n })\r\n };\r\n\r\n setWizardFiltersFromActiveItem = (activeFeature) => {\r\n\r\n const {fabricatorSettings} = this.props;\r\n const useWizard = fabricatorSettings && (fabricatorSettings.wizardConsumers || (fabricatorSettings.wizardClients && document.kvConfig.isBackend));\r\n\r\n if (useWizard) {\r\n const currentActiveFilters = activeFeature.dbFeature.filterValueIDs;\r\n const partId = this.state.childNavigationItem.part.partId;\r\n const wizardGroupsName = this.getWizardGroupsByPartId(partId);\r\n\r\n let wizardGroups = this.state[wizardGroupsName].map((wizardGroup) => {\r\n if (partId === \"vanity_cabinet\") {\r\n const filterGroup = this.props.filterGroups.find(filterGroup => {\r\n return filterGroup.name === wizardGroup.filterName\r\n });\r\n let filterGroupValue = {};\r\n if (filterGroup && currentActiveFilters[filterGroup.id]) {\r\n const selectedFilterValueId = currentActiveFilters[filterGroup.id][0];\r\n filterGroupValue = filterGroup && filterGroup.values.find(filterGroupValue => {\r\n return filterGroupValue.id === selectedFilterValueId\r\n });\r\n }\r\n // console.log('filterGroupValue', filterGroupValue);\r\n if (wizardGroup.filterName === \"Material\") { // check for existing BV filters\r\n const doorStyleFilter = this.props.filterGroups.find(filterGroup => filterGroup.name.trim() === \"DoorStyle\");\r\n if (doorStyleFilter) {\r\n const doorStyleActiveValue = currentActiveFilters[doorStyleFilter.id];\r\n const doorStyleFilterValue = doorStyleFilter.values.find(filterObj => {\r\n return doorStyleActiveValue && filterObj.id === doorStyleActiveValue[0]\r\n });\r\n // console.log('doorStyleFilterValue', doorStyleFilterValue);\r\n wizardGroup.hidden = filterGroupValue && doorStyleFilterValue && !NotQCVanityDoorStylesFilters.includes(doorStyleFilterValue.value);\r\n }\r\n }\r\n } else if (partId === \"shower_interior_wall\") {\r\n const stepName = wizardGroup.filterName.toLowerCase();\r\n const materialFilter = this.props.filterGroups.find(filterGroup => filterGroup.name.trim() === \"Material\");\r\n if (Object.keys(currentActiveFilters).length && materialFilter && currentActiveFilters[materialFilter.id]) { // check for existing BV filters\r\n const materialValueId = currentActiveFilters[materialFilter.id][0];\r\n const materialValue = materialFilter.values.find(val => val.id === materialValueId);\r\n // console.log('materialValue.value', materialValue.value);\r\n wizardGroup.hidden = (materialValue && (\r\n (materialValue.value !== \"DuraBath\" && stepName === \"durabathcolor\")\r\n || (materialValue.value !== \"DuraBath\" && materialValue.value !== \"Tile\" && stepName === \"tilepattern\")\r\n || (materialValue.value !== \"Acrylic\" && stepName === \"acrylicpattern\")\r\n || (materialValue.value !== \"Acrylic\" && stepName === \"acryliccolor\")\r\n || (materialValue.value !== \"Tile\" && stepName === \"tilecolor\")\r\n || (materialValue.value !== \"Slab\" && stepName === \"slabcolor\")\r\n ))\r\n }\r\n }\r\n return wizardGroup\r\n });\r\n\r\n this.setState({\r\n [wizardGroupsName]: wizardGroups\r\n });\r\n }\r\n };\r\n\r\n /*** WIZARD END ***/\r\n\r\n setNavigationFilterIfTheChildWasChanged(childNavigationItemPartId, activeNavigationFilter) {\r\n if (this.props.setActiveNavigationFilter && !activeNavigationFilter) {\r\n if (childNavigationItemPartId === \"edge_profile\"\r\n || childNavigationItemPartId === \"center_island_edge\"\r\n && this.props.activeNavigationFilter !== COUNTERTOP_WIZARD_BUTTONS[3].buttonId) {\r\n this.props.setActiveNavigationFilter(COUNTERTOP_WIZARD_BUTTONS[3].buttonId);\r\n this.props.setActiveNavigationFilterStepIndex(3);\r\n } else if (childNavigationItemPartId === \"countertop\"\r\n || childNavigationItemPartId === \"center_island_countertop\"\r\n && (\r\n this.props.activeNavigationFilter !== COUNTERTOP_WIZARD_BUTTONS[0].buttonId\r\n || this.props.activeNavigationFilter !== COUNTERTOP_WIZARD_BUTTONS[1].buttonId\r\n || this.props.activeNavigationFilter !== COUNTERTOP_WIZARD_BUTTONS[2].buttonId\r\n )){\r\n this.props.setActiveNavigationFilter(COUNTERTOP_WIZARD_BUTTONS[0].buttonId);\r\n this.props.setActiveNavigationFilterStepIndex(0);\r\n } else if (childNavigationItemPartId === \"backsplash\"\r\n && !(this.props.activeNavigationFilter !== COUNTERTOP_WIZARD_BUTTONS[4].buttonId)) {\r\n this.props.setActiveNavigationFilter(COUNTERTOP_WIZARD_BUTTONS[4].buttonId);\r\n this.props.setActiveNavigationFilterStepIndex(4);\r\n }\r\n }\r\n }\r\n\r\n showPositionsPopup = (item, event) => {\r\n const itemParent = item.part.getParent ? item.part.getParent() : null;\r\n const featureIsLocked = getFeatureIsLocked(item.part);\r\n if (itemParent && !item.part.notAvailableInVisualizer && !featureIsLocked\r\n && this.props.toggleNavItemPositionModal && itemParent.showLayerPositionsModal\r\n && itemParent.showLayerPositionsModal(item.part) && event) {\r\n const eventPosition = getEventPosition(event);\r\n this.props.toggleNavItemPositionModal({\r\n popupOpened: true,\r\n popupPosition: {\r\n left: eventPosition.x,\r\n top: eventPosition.y\r\n },\r\n activePartId: item.part.partId,\r\n });\r\n $(window).trigger(ActionTypes.UPDATE_ALL_ITEMS); // update buttons\r\n return true\r\n } else if (this.props.navItemPositionModal && this.props.navItemPositionModal.popupOpened) {\r\n this.props.toggleNavItemPositionModal({\r\n popupOpened: false,\r\n });\r\n }\r\n return false\r\n }\r\n\r\n}\r\n","import {getBvGroupFeatures} from \"./server-api\";\r\nimport {getCurrentLayout} from \"../bvcomponents/appLayout\";\r\n\r\nlet axiosController;\r\n\r\n/**\r\n * renderErrorPopup can display retry connection and sign contract buttons\r\n * @param featureGroup {object}\r\n * @param searchText {string}\r\n * @param setShowLoader {function}\r\n */\r\nexport const searchProductRequest = async (featureGroup, searchText, setShowLoader = () => {}) => {\r\n if (!searchText || !featureGroup || featureGroup.getRealFeaturesReceivedProperty()\r\n || (Array.isArray(featureGroup.alreadyRequestedFeatureNames) && featureGroup.alreadyRequestedFeatureNames.includes(searchText))\r\n ) {\r\n return false\r\n }\r\n setShowLoader(true);\r\n if (axiosController) {\r\n axiosController.abort();\r\n }\r\n if (AbortController) {\r\n axiosController = new AbortController();\r\n }\r\n const dbName = featureGroup.dbName || featureGroup.partName;\r\n const pageSize = 9999;\r\n if (document.kvConfig.visualizerType === \"bvLook\") {\r\n const layout = getCurrentLayout();\r\n const wallParent = layout.parts[\"Walls\"];\r\n if (featureGroup.additionalPartPartId && wallParent && wallParent.relatedItems.some(relItem => relItem.partId === featureGroup.partId)) {\r\n const cropResponse = await getBvGroupFeatures(dbName + \" Crop\", 0, pageSize, [], searchText, null, axiosController);\r\n if (Array.isArray(cropResponse)) {\r\n featureGroup.setGroupFeatures(cropResponse, pageSize, false, \"\", null, true, false);\r\n }\r\n }\r\n }\r\n const response = await getBvGroupFeatures(dbName, 0, pageSize, [], searchText, null, axiosController)\r\n if (response) {\r\n featureGroup.setGroupFeatures(response, pageSize, false, \"\", null, true);\r\n }\r\n if (!featureGroup.alreadyRequestedFeatureNames) {\r\n featureGroup.alreadyRequestedFeatureNames = [];\r\n }\r\n featureGroup.alreadyRequestedFeatureNames.push(searchText);\r\n setShowLoader(false);\r\n return response ? response.data : []\r\n}\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport MenuList from '@mui/material/MenuList';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport SvgIcon from \"@mui/material/SvgIcon\";\r\nimport TwitterIcon from '@mui/icons-material/Twitter';\r\n\r\nimport {LookShareIcons} from \"../../../../common/icons\";\r\nimport {setLookOverlayOpened, setLookReturnAction} from \"../../../../../actions/lookFunctions\";\r\nimport {LOOK_OVERLAYS} from \"../../../core/constants\";\r\nimport {saveQuoteAndShare} from \"../../lookFunctions2\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS} from \"../../../../../analytics\";\r\nimport {pricingIsLocked} from \"../../lookNavigationFunctions\";\r\n\r\nexport const SHARE_BUTTONS = {\r\n facebook: \"facebook\",\r\n pinterest: \"pinterest\",\r\n twitter: \"twitter\",\r\n}\r\n\r\nexport const getShareConfig = ({height, width}) => {\r\n const left = window.outerWidth / 2 + (window.screenX || window.screenLeft || 0) - width / 2;\r\n const top = window.outerHeight / 2 + (window.screenY || window.screenTop || 0) - height / 2;\r\n const config = {\r\n height: height,\r\n width: width,\r\n left: left,\r\n top: top,\r\n location: 'no',\r\n toolbar: 'no',\r\n status: 'no',\r\n directories: 'no',\r\n menubar: 'no',\r\n scrollbars: 'yes',\r\n resizable: 'no',\r\n centerscreen: 'yes',\r\n chrome: 'yes'\r\n }\r\n return Object.keys(config).map(key => key + '=' + config[key]).join(', ');\r\n};\r\n\r\nconst LookSideBarShareButtons = (props) => {\r\n\r\n const {handleClose, userIsLoggedIn, propsShareUrl, setLookOverlayOpened, setLookReturnAction} = props;\r\n\r\n const shareClickButton = (buttonKey) => {\r\n switch (buttonKey) {\r\n case SHARE_BUTTONS.facebook:\r\n Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookSidebarFacebook);\r\n break;\r\n case SHARE_BUTTONS.twitter:\r\n Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookSidebarTwitter);\r\n break;\r\n case SHARE_BUTTONS.pinterest:\r\n Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookSidebarPinterest);\r\n break;\r\n default:\r\n break;\r\n }\r\n if (!userIsLoggedIn) {\r\n const {isLixil} = pricingIsLocked();\r\n if (isLixil) {\r\n setLookOverlayOpened(LOOK_OVERLAYS.questionShare);\r\n setLookReturnAction(buttonKey);\r\n } else {\r\n setLookOverlayOpened(LOOK_OVERLAYS.leadCapture, buttonKey);\r\n }\r\n return false;\r\n }\r\n\r\n handleClose();\r\n // if (jobId) {\r\n // shareLogic(buttonKey)\r\n // } else {\r\n saveQuoteAndShare(buttonKey, propsShareUrl);\r\n // }\r\n }\r\n\r\n return (\r\n \r\n {Object.keys(SHARE_BUTTONS).map(buttonKey => {\r\n const icon = (buttonKey === \"twitter\") ? : {LookShareIcons[buttonKey]};\r\n return (\r\n shareClickButton(buttonKey)}>\r\n {icon}\r\n \r\n \r\n )\r\n })}\r\n \r\n )\r\n};\r\n\r\nLookSideBarShareButtons.propTypes = {\r\n handleClose: PropTypes.func.isRequired,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {userIsLoggedIn} = store.userState;\r\n const {shareUrl} = store.serverState;\r\n return {\r\n userIsLoggedIn,\r\n propsShareUrl: shareUrl,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookOverlayOpened,\r\n setLookReturnAction,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LookSideBarShareButtons)\r\n","import React from \"react\";\r\nimport orderBy from \"lodash/orderBy\";\r\nimport throttle from \"lodash/throttle\";\r\nimport clone from \"lodash/clone\";\r\nimport $ from 'jquery';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Misc from './../../misc/misc';\r\nimport ActionTypes from \"./../../misc/actionTypes\";\r\nimport {getMousePos, getTranslateX, requestAnimFrame, isTouchDevice} from \"../../misc/utils\";\r\nimport {makeHoveringLayer} from \"../../misc/imageHovering\";\r\nimport {getEventPosition, isIE} from \"../../misc/helpers\";\r\nimport PinchZoom from \"../../lib/pinch-zoom\";\r\nimport {loaderEnable, loaderDisable} from \"../ui/loaderView\";\r\nimport enhanceCanvas from \"./canvasEnhancements\";\r\nimport Config, {IS_LIXIL_UI} from \"../../config\";\r\nimport {checkForLayerParts} from \"./canvasCheckForLayerParts\";\r\nimport {hardCodelyRemovedClicking} from \"../look/lookNavigation/lookFunctions2\";\r\nimport {VISUALIZER_MANAGEMENT_ACTIONS} from \"../../misc/constants\";\r\n// import {UseFullSizeImages} from \"../../config\";\r\n\r\n// import { getHoverZonesForPreset, getHoveringZone, hoverImages } from \"./imageCanvasTouchZones\";\r\n\r\nexport default class ImageCanvasCommon extends React.Component {\r\n static propTypes = {\r\n layers: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n layoutType: PropTypes.string.isRequired,\r\n width: PropTypes.number.isRequired,\r\n height: PropTypes.number.isRequired,\r\n canvasId: PropTypes.string.isRequired,\r\n useMouseHovering: PropTypes.bool,\r\n useTouchZoom: PropTypes.bool,\r\n enableLoader: PropTypes.func,\r\n disableLoader: PropTypes.func,\r\n setShowCanvasLoader: PropTypes.func,\r\n lookCanvasClick: PropTypes.func,\r\n transform: PropTypes.string,\r\n fabricatorData: PropTypes.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.canvas = null;\r\n this.state = {\r\n mouseMoveSet: false,\r\n dimensions: {\r\n width: props.width,\r\n height: props.height\r\n },\r\n hoverZones: {},\r\n layers: [],\r\n layersHoverings: [],\r\n // layersHoveringsCached: [],\r\n imagesRendered: [],\r\n backgroundLayers: [],\r\n backgroundImages: [],\r\n allowPropsLayers: true,\r\n };\r\n this.id = 0;\r\n this.ctx = null;\r\n this.backCtx = null;\r\n this.resizedCanvas = null;\r\n this.resizedContext = null;\r\n this.timeout = 0;\r\n this.canvas_scale = 1;\r\n this.shouldUpdateGreenZone = false;\r\n this.pinchZoom = null;\r\n this.x = 0;\r\n this.y = 0;\r\n this.delta = 0;\r\n this.statusSwipe = false;\r\n this.detectedSwipeLeft = false;\r\n this.detectedSwipeRight = false;\r\n this.currentTranslate = 0;\r\n this.navBreakPoint = 991;\r\n this.activeGreenZoneIndex = null;\r\n /*** background canvas ***/\r\n this.canvasBg = null;\r\n this.backCtxBg = null;\r\n /*** background canvas end ***/\r\n }\r\n\r\n componentDidMount() {\r\n const {width, height} = this.props;\r\n this.ctx = this.canvas.getContext('2d');\r\n const c = document.createElement('canvas');\r\n c.width = width;\r\n c.height = height;\r\n this.backCtx = c.getContext('2d');\r\n this.resizedCanvas = document.createElement(\"canvas\");\r\n this.resizedContext = this.resizedCanvas.getContext(\"2d\");\r\n\r\n /*** background canvas ***/\r\n this.canvasBg = document.createElement('canvas');\r\n this.canvasBg.width = width;\r\n this.canvasBg.height = height;\r\n this.backCtxBg = this.canvasBg.getContext('2d');\r\n this.backCtxBg.globalCompositeOperation = \"lighten\";\r\n /*** background canvas end ***/\r\n\r\n $(window).on('resize', this.handleOrientationChange);\r\n this.handleOrientationChange();\r\n $(window).on('setPinchZoom', this.createPinchZoom);\r\n if (window.setPinchZoom || IS_LIXIL_UI) {\r\n this.createPinchZoom();\r\n }\r\n $(window).on(ActionTypes.REMOVE_GREEN_ZONE_ON_CANVAS, (event, callback) => {\r\n this.draw(this.state.layers, callback);\r\n });\r\n\r\n if (Config.isVisualizerManagement()) {\r\n window.addEventListener(\"message\", (event) => {\r\n if (event.data && (event.data.action === VISUALIZER_MANAGEMENT_ACTIONS.getState\r\n || event.data.action === VISUALIZER_MANAGEMENT_ACTIONS.checkState)) {\r\n this.draw(this.state.layers)\r\n }\r\n })\r\n }\r\n if (this.props.layers.length && this.state.allowPropsLayers) {\r\n this.drawPropsLayers();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n $(window).off('resize', this.handleOrientationChange);\r\n $(window).off('setPinchZoom', this.createPinchZoom);\r\n $(window).off(ActionTypes.GET_CANVAS_SCALE);\r\n $(window).off(ActionTypes.RESET_CANVAS);\r\n $(window).off(ActionTypes.ENABLE_PINCH_ZOOM);\r\n $(window).off(ActionTypes.DISABLE_PINCH_ZOOM);\r\n $(window).off(ActionTypes.REMOVE_GREEN_ZONE_ON_CANVAS);\r\n }\r\n\r\n drawPropsLayers = () => {\r\n this.setState({\r\n layers: this.props.layers\r\n });\r\n this.shouldUpdateGreenZone = true;\r\n this.draw(this.props.layers, this.props.useMouseHovering ? this.updateGliaCanvasImage : null);\r\n };\r\n\r\n createPinchZoom = () => {\r\n if ((Misc.isMobile() || isTouchDevice() || Config.isVisualizerManagement() || IS_LIXIL_UI) && this.props.useTouchZoom && !this.pinchZoom) {\r\n this.pinchZoom = new PinchZoom(this.canvas, {canUseUpdate: this.props.useTouchZoom});\r\n $(window).on(ActionTypes.RESET_CANVAS, () => {\r\n // $('.canvas-text').html('xxx');\r\n this.pinchZoom.reset();\r\n });\r\n $(window).on(ActionTypes.ENABLE_PINCH_ZOOM, () => {\r\n this.pinchZoom.enable();\r\n });\r\n $(window).on(ActionTypes.DISABLE_PINCH_ZOOM, () => {\r\n this.pinchZoom.disable();\r\n });\r\n if (this.props.updateLookCanvas) {\r\n this.props.updateLookCanvas();\r\n }\r\n }\r\n // const dashboardFramed = Config.isVisualizerManagement();\r\n };\r\n\r\n componentWillReceiveProps(nextProps) {\r\n const onlyLayers = nextProps.layers.filter((layer) => {\r\n return !layer.image.includes(\"/static\")\r\n });\r\n const onlyStateLayers = this.state.layers.filter((layer) => {\r\n return !layer.image.includes(\"/static\")\r\n });\r\n\r\n let needToUpdateCanvas = onlyLayers.length !== onlyStateLayers.length,\r\n i = 0;\r\n\r\n if (!needToUpdateCanvas && onlyLayers.length && onlyStateLayers.length) {\r\n for (i; i < onlyLayers.length; i++) {\r\n if (onlyLayers[i].zIndex !== onlyStateLayers[i].zIndex || onlyLayers[i].image !== onlyStateLayers[i].image) {\r\n needToUpdateCanvas = true;\r\n // console.log('break on ' + i + ' element');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (nextProps.layers.length && this.state.allowPropsLayers) {\r\n this.setState({\r\n layers: nextProps.layers\r\n });\r\n // if (this.state.mouseMoveSet) {\r\n // this.setLayersHoverings(nextProps.layers);\r\n // }\r\n }\r\n\r\n if (needToUpdateCanvas && this.state.allowPropsLayers) {\r\n this.shouldUpdateGreenZone = true;\r\n this.draw(nextProps.layers, this.props.useMouseHovering ? this.updateGliaCanvasImage : null);\r\n }\r\n }\r\n\r\n handleOrientationChange = () => {\r\n const canvas = $(this.canvas);\r\n const canvasWidth = canvas.width();\r\n const canvasHeight = canvas.height();\r\n const fromDesktopToMobile = this.state.dimensions.width > this.navBreakPoint && canvasWidth < this.navBreakPoint;\r\n const fromMobileToDesktop = this.state.dimensions.width < this.navBreakPoint && canvasWidth > this.navBreakPoint;\r\n this.setState({\r\n dimensions: {\r\n width: canvasWidth,\r\n height: canvasHeight,\r\n layersHoverings: (fromDesktopToMobile || fromMobileToDesktop) ? [] : this.state.layersHoverings, // recreate layersHoverings\r\n }\r\n });\r\n };\r\n\r\n imageCanvasScroll = (canvasClass, removeAllClasses) => {\r\n if (!window.canvasIsDragging && this.pinchZoom) {\r\n this.pinchZoom.reset();\r\n // $('.canvas-text').html($('.canvas-text').html() + canvasClass);\r\n this.pinchZoom.imageCanvasScroll(\r\n canvasClass.toLowerCase().replace(\" \", \"-\"),\r\n removeAllClasses,\r\n this.props.layoutType,\r\n this.props.layoutScene\r\n );\r\n }\r\n };\r\n\r\n layerIsExcludedFromHover = (layer) => {\r\n const {layout} = this.props;\r\n if (Array.isArray(layout.disabledClickablePartIds) && layout.disabledClickablePartIds.includes(layer.partId)) {\r\n return true\r\n }\r\n if (hardCodelyRemovedClicking(layer.partId, layout, this.props.fabricatorData)) {\r\n return true\r\n }\r\n return layout.excludedPartIdsFromHover\r\n ? layer.partId && layout.excludedPartIdsFromHover.some(partId => partId === layer.partId || layer.partId.indexOf(partId) > -1)\r\n : layout.excludedIndexesFromHover\r\n ? layout.excludedIndexesFromHover(this.props.layoutType).includes(layer.zIndex)\r\n : false\r\n }\r\n\r\n setLayersHoverings = (layers, images, errorImages) => {\r\n\r\n let layersHoverings = this.state.layersHoverings, i;\r\n // console.log('this.state.layersHoverings-->', this.state.layersHoverings);\r\n // console.log('layers', layers);\r\n\r\n const {layout} = this.props;\r\n\r\n layers.forEach((layer, index) => {\r\n\r\n // console.log('setLayersHovering:', layer);\r\n\r\n const excludedLayer = this.layerIsExcludedFromHover(layer, layout);\r\n\r\n if (!layer.isGreenHovering && !excludedLayer) {\r\n // search for current layer zIndex\r\n const existingGreenLayerHoveringIndex = layersHoverings.findIndex((layerHovering) => {\r\n return layerHovering ? layerHovering.layer.zIndex === layer.zIndex : 0\r\n });\r\n\r\n const getHoveringLayer = () => {\r\n return makeHoveringLayer(layer, images[index], this.props.layoutType, {\r\n width: this.props.width,\r\n height: this.props.height\r\n }, this.props.fabricatorData)\r\n }\r\n\r\n // if it exist & name is different - change it(simple layer replace)\r\n if (existingGreenLayerHoveringIndex > -1) {\r\n if (layer.image !== this.state.layersHoverings[existingGreenLayerHoveringIndex].layer.image\r\n && images[index] && !errorImages.includes(images[index].src)) {\r\n const hoveringLayer = getHoveringLayer();\r\n if (hoveringLayer) {\r\n layersHoverings.splice(existingGreenLayerHoveringIndex, 1, hoveringLayer)\r\n }\r\n }\r\n } else {\r\n if (images[index] && !errorImages.includes(images[index].src)) {\r\n const hoveringLayer = getHoveringLayer();\r\n if (hoveringLayer) {\r\n layersHoverings.push(hoveringLayer) // simple push\r\n }\r\n } else {\r\n console.info(\"makeHoveringLayer failed! no image for layer\", index);\r\n }\r\n }\r\n }\r\n });\r\n\r\n for (i = 0; i < layersHoverings.length; ++i) { // go over new green layers, and remove redundant\r\n const notNeededMoreLayerIndex = layers.findIndex((layer) => {\r\n return layer.zIndex === layersHoverings[i].layer.zIndex\r\n });\r\n if (notNeededMoreLayerIndex === -1) {\r\n layersHoverings.splice(i, 1);\r\n --i; // Correct the index value\r\n }\r\n }\r\n\r\n this.setState({\r\n layersHoverings: orderBy(layersHoverings, 'layer.zIndex', layout.isNewLayout ? 'asc' : 'desc')\r\n // order by zIndex (top go last in new layouts)\r\n }, () => {\r\n this.shouldUpdateGreenZone = false;\r\n });\r\n };\r\n\r\n draw = (layers, callback) => {\r\n\r\n let cnt = 0;\r\n const images = [];\r\n\r\n // if (!window.count) {\r\n // window.count = 1;\r\n // }\r\n // console.log('draw!', window.count);\r\n // window.count++;\r\n\r\n this.id = setTimeout(() => {\r\n if (!this.id) {\r\n return;\r\n }\r\n clearTimeout(this.id);\r\n if (this.props.setShowCanvasLoader) {\r\n if (!window.requestInProcess) {\r\n this.props.setShowCanvasLoader(true)\r\n }\r\n } else if (layers.length) {\r\n this.props.enableLoader\r\n ? this.props.enableLoader()\r\n : loaderEnable(\"loader.canvasLoadingText\");\r\n }\r\n }, 500);\r\n\r\n this.backCtx.fillStyle = 'white';\r\n this.backCtx.fillRect(0, 0, this.props.width, this.props.height);\r\n // this.backCtx.clearRect(0, 0, this.props.width, this.props.height);\r\n\r\n // console.log('layers', layers);\r\n\r\n const alreadyRenderedImages = this.state.imagesRendered;\r\n const errorImages = [];\r\n\r\n // if (this.state.errorImages.length) {\r\n // layers = layers.filter(layer => !this.state.errorImages.includes(layer.image))\r\n // }\r\n\r\n layers.forEach((layer) => {\r\n const alreadyRenderedImage = alreadyRenderedImages.find((imageRendered) => {\r\n return layer.image === imageRendered.src\r\n });\r\n let image;\r\n if (layer.isGreenHovering) {\r\n image = layer.hoveringImage;\r\n } else if (alreadyRenderedImage && this.state.allowPropsLayers) {\r\n image = alreadyRenderedImage.image;\r\n if (!isIE()) { // IE11 doesn't like when someone is making empty src\r\n image.src = \"\"; // https://bugs.chromium.org/p/chromium/issues/detail?id=7731#c12\r\n }\r\n } else {\r\n image = new Image();\r\n image.crossOrigin = 'Anonymous';\r\n alreadyRenderedImages.push({\r\n image,\r\n src: layer.image\r\n });\r\n }\r\n image.layerDimensions = layer.layerDimensions || null;\r\n image.coords = layer.coords || null;\r\n images.push(image);\r\n image.onload = () => {\r\n cnt++;\r\n if (cnt === layers.length) {\r\n this.finishDraw(images, layers, alreadyRenderedImages, errorImages, callback)\r\n }\r\n };\r\n image.onerror = () => {\r\n //display error\r\n console.info('Coudn\\'t load image:', image.src);\r\n cnt++;\r\n errorImages.push(image.src);\r\n if (cnt === layers.length) {\r\n this.finishDraw(images, layers, alreadyRenderedImages, errorImages, callback);\r\n }\r\n };\r\n try {\r\n image.src = layer.image;\r\n } catch (e) {\r\n console.log(e, 'Can\\'t apply image src', layer.image);\r\n }\r\n\r\n });\r\n };\r\n\r\n getBackgroundLayers = (layers = this.state.layers) => {\r\n const {layoutType, layout} = this.props;\r\n return layers.filter((layer) => {\r\n return layout.zIndexes[layoutType] && layout.zIndexes[layoutType].Background &&\r\n Object.values(layout.zIndexes[layoutType].Background).some(zIndex => zIndex === layer.zIndex);\r\n })\r\n };\r\n\r\n finishDraw = (images, layers, alreadyRenderedImages, errorImages, callback) => {\r\n clearTimeout(this.id);\r\n this.id = 0;\r\n\r\n const {width, height} = this.props;\r\n\r\n // const fullImagesFactor = UseFullSizeImages ? 100 : 54;\r\n\r\n const backgroundLayers = this.getBackgroundLayers(layers);\r\n\r\n if (backgroundLayers.length) { // draw backgrounds first\r\n this.backCtxBg.clearRect(0, 0, width, height); // clear previous\r\n\r\n const greenImage = images.find((imageObject) => imageObject.src.includes(\"data:image\"));\r\n if (greenImage) {\r\n const layer = backgroundLayers.find(layer => layer.image === greenImage.src);\r\n if (layer && layer.zIndex !== 500) {\r\n const greenImageIndex = images.findIndex((imageObject) => imageObject.src.includes(\"data:image\"));\r\n images.splice(greenImageIndex - 1, 1); // remove regular layer, draw only green one\r\n }\r\n }\r\n\r\n images.forEach((imageObject) => {\r\n if (errorImages.includes(imageObject.src)) {\r\n return\r\n }\r\n const layer = backgroundLayers.find(layer => layer.image === imageObject.src);\r\n if (layer) {\r\n if (layer.layerDimensions) {\r\n const dim = layer.layerDimensions;\r\n // console.log('yep', dim.width, dim.height, dim.polygonArray[0][0], dim.polygonArray[0][1], dim.width, dim.height);\r\n this.backCtxBg.drawImage(imageObject, 0, 0, dim.width, dim.height, dim.polygonArray[0][0], dim.polygonArray[0][1], dim.width, dim.height);\r\n } else {\r\n // imageObject.width = width;\r\n // imageObject.height = height;\r\n this.backCtxBg.drawImage(imageObject, 0, 0, width, height);\r\n }\r\n }\r\n imageObject = null;\r\n });\r\n enhanceCanvas(this.canvasBg);\r\n this.backCtx.drawImage(this.canvasBg, 0, 0, width, height, 0, 0, width, height);\r\n }\r\n\r\n images.forEach((loadedImage) => {\r\n if (errorImages.includes(loadedImage.src)) {\r\n return\r\n }\r\n const layer = layers.find(layers => layers.image === loadedImage.src);\r\n if (layer && (!backgroundLayers.length || (layer.zIndex > backgroundLayers[backgroundLayers.length - 1].zIndex))) {\r\n if (loadedImage.layerDimensions) {\r\n const dim = loadedImage.layerDimensions;\r\n // console.log('yep', dim.width, dim.height, dim.polygonArray[0][0], dim.polygonArray[0][1], dim.width, dim.height);\r\n this.backCtx.drawImage(loadedImage, 0, 0, dim.width, dim.height, dim.polygonArray[0][0], dim.polygonArray[0][1], dim.width, dim.height);\r\n } else if (loadedImage.coords) {\r\n // loadedImage.width = loadedImage.width*fullImagesFactor/100;\r\n // loadedImage.height = loadedImage.height*fullImagesFactor/100;\r\n // const max_x = loadedImage.coords.max_x*fullImagesFactor/100;\r\n const min_x = this.props.width*loadedImage.coords.min_x;\r\n const min_y = this.props.height*loadedImage.coords.min_y;\r\n // const max_y = loadedImage.coords.max_y*fullImagesFactor/100;\r\n // const width = max_x - min_x;\r\n // const height = max_y - min_y;\r\n // console.log('width', width);\r\n // console.log('height', height);\r\n // console.log('min_x', min_x);\r\n // console.log('min_y', min_y);\r\n // console.log('max_x', max_x);\r\n // console.log('max_y', max_y);\r\n try {\r\n this.backCtx.drawImage(loadedImage, 0, 0, loadedImage.width, loadedImage.height, min_x, min_y, loadedImage.width, loadedImage.height);\r\n } catch (e) {\r\n console.log(e, 'Can\\'t draw image with coords on the canvas', loadedImage.src);\r\n }\r\n } else {\r\n try {\r\n this.backCtx.drawImage(loadedImage, 0, 0, width, height, 0, 0, width, height);\r\n } catch (e) {\r\n console.log(e, 'Can\\'t draw image on the canvas', loadedImage.src);\r\n }\r\n }\r\n }\r\n loadedImage = null;\r\n });\r\n\r\n // this.ctx.drawImage(this.backCtx.canvas, 0, 0);\r\n requestAnimFrame(this.ctx.drawImage(this.backCtx.canvas, 0, 0));\r\n\r\n if (this.props.useMouseHovering) {\r\n const isMobile = Misc.isMobile() || isTouchDevice();\r\n if (!isMobile && !isIE() && !this.state.mouseMoveSet && this.canvas) {\r\n this.setOnMouseMove();\r\n }\r\n this.setState({\r\n alreadyRenderedImages\r\n });\r\n if (this.shouldUpdateGreenZone || !this.state.layersHoverings.length) {\r\n this.setLayersHoverings(layers, images, errorImages)\r\n }\r\n }\r\n\r\n if (!window.requestInProcess) {\r\n this.props.disableLoader ? this.props.disableLoader() : loaderDisable();\r\n }\r\n\r\n // window.t1 = performance.now();\r\n // console.log(\"Call to doSomething took \" + (window.t1 - window.t0) + \" milliseconds.\");\r\n\r\n if (callback) {\r\n callback()\r\n }\r\n };\r\n\r\n getGliaImage = () => {\r\n return this.canvasImg = el} alt=\"\" id={this.props.canvasId + \"Img\"}\r\n className=\"canvas-co-image\" />\r\n };\r\n\r\n updateGliaCanvasImage = () => {\r\n // if (this.pinchZoom && this.pinchZoom.containerScrolled && layers.some(layer => layer.image.includes('data:image/png;base64'))) {\r\n // return\r\n // }\r\n if (this.resizedContext && this.canvas) {\r\n this.resizedCanvas.height = this.canvas.height / 2;\r\n this.resizedCanvas.width = this.canvas.width / 2;\r\n const backgroundCanvas = document.getElementById(\"canvasBackgrounds\");\r\n if (backgroundCanvas) {\r\n this.resizedContext.drawImage(backgroundCanvas, 0, 0, this.resizedCanvas.width, this.resizedCanvas.height);\r\n }\r\n this.resizedContext.drawImage(this.canvas, 0, 0, this.resizedCanvas.width, this.resizedCanvas.height);\r\n this.canvasImg.src = this.resizedCanvas.toDataURL(\"image/jpeg\", 0.7);\r\n }\r\n };\r\n\r\n setOnMouseMove = () => {\r\n this.setState({\r\n mouseMoveSet: true\r\n });\r\n const delayBetweenUpdates = 50;\r\n this.canvas.addEventListener('mousemove', throttle(this.setHoveredLayer, delayBetweenUpdates), false);\r\n };\r\n\r\n setHoveredLayer = (evt) => {\r\n\r\n const {layoutType, layout} = this.props;\r\n const canvas = this.canvas;\r\n let mousePos = getMousePos(evt, canvas);\r\n let hovered = false;\r\n\r\n // console.log('mousePos', mousePos);\r\n\r\n if (Misc.isMobile() || isTouchDevice() || isIE()) {\r\n if (this.props.useTouchZoom) {\r\n $(window).trigger(ActionTypes.GET_CANVAS_SCALE);\r\n }\r\n }\r\n\r\n if (mousePos && (window.innerWidth < 480)) { // rotated version\r\n let temp = mousePos.x;\r\n // noinspection JSSuspiciousNameCombination\r\n mousePos.x = mousePos.y;\r\n mousePos.y = this.canvas.offsetHeight - temp;\r\n // console.log('mousePos2', mousePos);\r\n }\r\n\r\n if (this.state.layersHoverings.length) {\r\n let i = 0;\r\n for (i; i < this.state.layersHoverings.length; i++) {\r\n const layerHovering = this.state.layersHoverings[i];\r\n if ( mousePos\r\n && layerHovering\r\n && layerHovering.layerDimensions\r\n && !this.layerIsExcludedFromHover(layerHovering.layer, layout)\r\n // && pnpoly(layerHovering.layerDimensions.polygonArray, mousePos)\r\n && layerHovering.context2D.getImageData(\r\n (((mousePos.x / this.canvas_scale) / this.state.dimensions.width * this.props.width)) - layerHovering.layerDimensions.polygonArray[0][0],\r\n (((mousePos.y / this.canvas_scale) / this.state.dimensions.height * this.props.height)) - layerHovering.layerDimensions.polygonArray[0][1],\r\n 1,\r\n 1,\r\n {willReadFrequently: true}).data[3] > 120) {\r\n hovered = true;\r\n document.hoveredLayer = layerHovering.layer;\r\n document.hoveredMousePos = mousePos;\r\n if (!isIE() && (this.activeGreenZoneIndex !== layerHovering.layer.zIndex)) {\r\n // console.log('layerHovering active = ', layerHovering);\r\n const windowHover = layerHovering.layer.zIndex === layout.zIndexes[layoutType].Window_Default;\r\n let windowLayerHovering = '';\r\n if (windowHover) {\r\n windowLayerHovering = this.state.layersHoverings.find(layersHovering => {\r\n return layersHovering.layer.zIndex === layout.zIndexes[layoutType].Window_Covering\r\n });\r\n }\r\n this.activeGreenZoneIndex = layerHovering.layer.zIndex;\r\n this.renderGreenLayer(windowHover && windowLayerHovering ? windowLayerHovering : layerHovering);\r\n }\r\n\r\n break; // break for...of loop\r\n }\r\n }\r\n }\r\n\r\n if (!hovered) {\r\n document.hoveredLayer = null;\r\n this.draw(this.state.layers); // reload all layers without hovered\r\n }\r\n\r\n };\r\n\r\n renderGreenLayerByZindex = (zIndex) => {\r\n if (!isIE()) {\r\n const neededLayerHovering = this.state.layersHoverings.find((layerHovering) => {\r\n return layerHovering.layer.zIndex === zIndex\r\n });\r\n neededLayerHovering ? this.renderGreenLayer(neededLayerHovering) : this.draw(this.state.layers)\r\n }\r\n };\r\n\r\n renderGreenLayer = (layerHovering, allLayers = false) => {\r\n let layers = clone(this.state.layers);\r\n\r\n clearTimeout(this.timeout); // timeout for updating layers\r\n\r\n const hoveredLayerIndex = layers.findIndex((layer) => {\r\n if (this.props.layout && this.props.layout.isNewLayout && layerHovering) {\r\n return (layer.zIndex === layerHovering.layer.zIndex) && (layerHovering.layer.partId === layer.partId)\r\n }\r\n return layer.zIndex === layerHovering.layer.zIndex\r\n });\r\n\r\n if (hoveredLayerIndex > -1) {\r\n const layersToRender = checkForLayerParts(this, layers, hoveredLayerIndex, layerHovering, allLayers);\r\n // console.log('layersToRender', layersToRender);\r\n this.draw(layersToRender);\r\n this.timeout = setTimeout(() => { // remove green layer\r\n this.activeGreenZoneIndex = null;\r\n if (this.canvas) {\r\n this.draw(this.state.layers);\r\n }\r\n }, 2000);\r\n }\r\n };\r\n\r\n moveStart = (event) => {\r\n const eventPosition = getEventPosition(event);\r\n const thisX = parseFloat(eventPosition.x).toFixed(2);\r\n const thisY = parseFloat(eventPosition.y).toFixed(2);\r\n setTimeout(() => {\r\n if (window.mobileMenuOpened && !window.imageCanvasScroll && !window.imageCanvasScroll2) {\r\n this.x = thisX;\r\n this.y = thisY;\r\n this.statusSwipe = true;\r\n this.detectedSwipeLeft = false;\r\n this.detectedSwipeRight = false;\r\n this.currentTranslate = getTranslateX(this.canvas);\r\n $('.canvas-text').html(this.currentTranslate);\r\n }\r\n }, 100);\r\n };\r\n\r\n move = (event) => {\r\n\r\n if (this.statusSwipe && window.mobileMenuOpened) {\r\n\r\n window.canvasIsDragging = true;\r\n\r\n const eventPosition = getEventPosition(event);\r\n\r\n let\r\n x = parseFloat(eventPosition.x).toFixed(2),\r\n y = parseFloat(eventPosition.y).toFixed(2),\r\n tX = parseFloat((x - this.x).toFixed(2)),\r\n tY = parseFloat((y - this.y).toFixed(2));\r\n\r\n if (!this.detectedSwipeRight || !this.detectedSwipeLeft) {\r\n if (Math.abs(parseFloat(tX)) >= this.delta) {\r\n if (parseFloat(tX) > this.delta) {\r\n this.detectedSwipeRight = true;\r\n } else if (parseFloat(tX) < -this.delta) {\r\n this.detectedSwipeLeft = true;\r\n }\r\n }\r\n }\r\n\r\n if ((this.detectedSwipeLeft || this.detectedSwipeRight) && Math.abs(tX) > Math.abs(tY)) {\r\n // console.log('Math.abs(tX)', Math.abs(tX));\r\n\r\n const nextPosition = Math.round((this.currentTranslate + tX)*100)/100;\r\n const percentage = this.state.dimensions.width < 680 ? 60 : 50;\r\n // const percentage = 50;\r\n const visibleCanvasWidth = (percentage / 100) * this.state.dimensions.width; // percentage of number\r\n\r\n // console.log('nextPosition', nextPosition);\r\n // $('.canvas-text').html(nextPosition);\r\n // console.log('visibleCanvasWidth', visibleCanvasWidth);\r\n\r\n if (Math.abs(nextPosition) < visibleCanvasWidth && nextPosition < 0) {\r\n const transform2d = 'translateX(' + nextPosition + 'px)';\r\n this.canvas.style.webkitTransform = transform2d;\r\n this.canvas.style.mozTransform = transform2d;\r\n this.canvas.style.msTransform = transform2d;\r\n this.canvas.style.oTransform = transform2d;\r\n this.canvas.style.transform = transform2d;\r\n }\r\n }\r\n }\r\n\r\n };\r\n\r\n moveEnd = () => {\r\n\r\n // let\r\n // x = getEventPosition(e).x,\r\n // tX = parseFloat((x - this.x).toFixed(2));\r\n\r\n this.x = 0;\r\n this.y = 0;\r\n this.statusSwipe = false;\r\n if (this.pinchZoom) {\r\n $(window).trigger(ActionTypes.CANVAS_SCALE_CHANGED, [this.pinchZoom.getScale()]);\r\n }\r\n\r\n if (this.detectedSwipeLeft || this.detectedSwipeRight) {\r\n this.currentTranslate = getTranslateX(this.canvas);\r\n this.detectedSwipeLeft = false;\r\n this.detectedSwipeRight = false;\r\n window.canvasIsDragging = false;\r\n this.pinchZoom.enable();\r\n // $(this.canvas).css({\r\n // transform: `none`\r\n // });\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n {/*
    */}\r\n {this.getGliaImage()}\r\n this.canvas = el}\r\n className={\"canvas-el\" + (this.props.useMouseHovering ? \" canvas-el--pointer\" : \"\")}\r\n id={this.props.canvasId}\r\n width={this.props.width}\r\n height={this.props.height}\r\n onTouchStart={this.moveStart}\r\n onTouchMove={this.move}\r\n onTouchEnd={this.moveEnd}\r\n style={{position: \"relative\"}} />\r\n
    \r\n );\r\n }\r\n}\r\n","const layouts = {\r\n Large: {\r\n Background: 100,\r\n Floor: 600,\r\n Ceiling: 200,\r\n Wall_A: 300,\r\n Wall_B: 400,\r\n Wall_C: 500,\r\n Wall_A_Accent_Mask: 700,\r\n Global_Shadow_Overlay: 800,\r\n Window_Default: 900,\r\n Window_Covering: 1000,\r\n Ceiling_Lights: 1100,\r\n Wall_Lights: 1300,\r\n Towel_Rack: 1400,\r\n Shower: {\r\n Custom60in: {\r\n Body: 2000,\r\n Floor: 2004,\r\n ShowerDrain: 2005,\r\n FloorShadow: 2006,\r\n ExtrusionWallRight: 2010,\r\n ExtrusionWallRightShadow: 2011,\r\n Wall: 2020,\r\n Wall2: 2021,\r\n WallAccent: 2022,\r\n WallAccent2: 2023,\r\n WallShadow: 2024,\r\n LargeCornerCaddie: 2025,\r\n Fixture: 2031,\r\n ShowerHead: 2032,\r\n ShowerPanCombo: 2033,\r\n LargeCornerSeat: 2034,\r\n CornerCaddie: 2035,\r\n SoapDish: 2036,\r\n SmallCornerShelf: 2038,\r\n GrabBar: 2039,\r\n ExtrusionWallLeftHalfWall: 2041,\r\n ExtrusionWallLeftShadowHalfWall: 2042,\r\n Threshold: 2043,\r\n ThresholdShadow: 2044,\r\n ShowerDoor: 2045,\r\n ShowerDoorHandle: 2046,\r\n ExtrusionWallLeft: 2047,\r\n ExtrusionWallLeftShadow: 2048,\r\n Overlay: 2050,\r\n Glass: 2060,\r\n PonyWall: 2070,\r\n PonyWallShadow: 2071,\r\n PonyWallCap: 5025,\r\n PonyWallCapShadow: 5026,\r\n PonyWallGlass: 5027,\r\n },\r\n Steam60in: {\r\n ExtrusionWallLeft: 2500,\r\n Body: {\r\n 0: 2550, // default body (no parts)\r\n 1: 2520, // Part = 1\r\n 2: 2530, // Part = 2\r\n },\r\n Fixture: 2525,\r\n Overlay: 2600\r\n },\r\n TubCombo: {\r\n WallConfiguration: 2065,\r\n Liner: 2027,\r\n ReplacementTub: 2028,\r\n WalkInTub: 2029,\r\n JettedTub: 2030,\r\n },\r\n },\r\n BathTub: {\r\n FreeStanding: {\r\n FixtureFloorMount: 3000,\r\n Base: 3005,\r\n Fixture: 3010,\r\n },\r\n Custom60in: {\r\n FixtureFloorMount: 3500,\r\n Base: 3505,\r\n Spa: 3515,\r\n Top: 3525,\r\n Fixture: 3530\r\n }\r\n },\r\n Toilet: 4000,\r\n Vanity: {\r\n Custom: {\r\n Cabinet: 5000,\r\n Handle: 5010,\r\n VanityBacksplash: 5020,\r\n CounterTop: 5030,\r\n Mirror: 5040,\r\n Faucet: 5050,\r\n Sink: 5060,\r\n },\r\n Complete: {\r\n VanityBacksplash: 5500,\r\n Faucet: 5510,\r\n Cabinet: 5520,\r\n Mirror: 5530,\r\n }\r\n }\r\n },\r\n Small: {\r\n Background: 100,\r\n Floor: 450,\r\n Ceiling: 200,\r\n Wall_A: 300,\r\n Wall_B: 400,\r\n Wall_C: 500,\r\n Wall_A_Accent_Mask: 700,\r\n Global_Shadow_Overlay: 800,\r\n Window_Default: 900,\r\n Window_Covering: 1000,\r\n Ceiling_Lights: 1100,\r\n Wall_Lights: 1300,\r\n Towel_Rack: 1400,\r\n Shower: {\r\n Custom60in: {\r\n Body: 2000,\r\n Floor: 2004,\r\n ShowerDrain: 2005,\r\n FloorShadow: 2006,\r\n ExtrusionWallRight: 2010,\r\n ExtrusionWallRightShadow: 2011,\r\n Wall: 2020,\r\n Wall2: 2021,\r\n WallAccent: 2022,\r\n WallAccent2: 2023,\r\n WallShadow: 2024,\r\n LargeCornerCaddie: 2025,\r\n Fixture: 2031,\r\n ShowerHead: 2032,\r\n ShowerPanCombo: 2033,\r\n LargeCornerSeat: 2034,\r\n CornerCaddie: 2035,\r\n SoapDish: 2036,\r\n SmallCornerShelf: 2038,\r\n GrabBar: 2039,\r\n ExtrusionWallLeftHalfWall: 2041,\r\n ExtrusionWallLeftShadowHalfWall: 2042,\r\n Threshold: 2043,\r\n ThresholdShadow: 2044,\r\n ShowerDoor: 2045,\r\n ShowerDoorHandle: 2046,\r\n ExtrusionWallLeft: 2047,\r\n ExtrusionWallLeftShadow: 2048,\r\n Overlay: 2050,\r\n Glass: 2060,\r\n PonyWall: 2070,\r\n PonyWallShadow: 2071,\r\n PonyWallCap: 5025,\r\n PonyWallCapShadow: 5026,\r\n PonyWallGlass: 5027,\r\n },\r\n Steam60in: {\r\n ExtrusionWallLeft: 2500,\r\n Body: {\r\n 0: 2550, // default body (no parts)\r\n 1: 2520, // Part = 1\r\n 2: 2530, // Part = 2\r\n },\r\n Fixture: 2525,\r\n Overlay: 2600\r\n },\r\n TubCombo: {\r\n WallConfiguration: 2065,\r\n Liner: 2027,\r\n ReplacementTub: 2028,\r\n WalkInTub: 2029,\r\n JettedTub: 2030,\r\n },\r\n },\r\n BathTub: {\r\n FreeStanding: {\r\n FixtureFloorMount: 3000,\r\n Base: 3005,\r\n Fixture: 3010,\r\n },\r\n Custom60in: {\r\n FixtureFloorMount: 3500,\r\n Base: 3505,\r\n Spa: 3515,\r\n Top: 3525,\r\n Fixture: 3530\r\n }\r\n },\r\n Toilet: 4000,\r\n Vanity: {\r\n Custom: {\r\n Cabinet: 5000,\r\n Handle: 5010,\r\n VanityBacksplash: 5020,\r\n CounterTop: 5030,\r\n Mirror: 5040,\r\n Faucet: 5050,\r\n Sink: 5060,\r\n },\r\n Complete: {\r\n VanityBacksplash: 5500,\r\n Faucet: 5510,\r\n Cabinet: 5520,\r\n Mirror: 5530,\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default {\r\n layouts,\r\n getMenuByHoveredLayer: (currentLayout, layer) => {\r\n\r\n // console.log('currentLayout', currentLayout);\r\n // console.log('layer', layer);\r\n\r\n switch (layer.zIndex) {\r\n\r\n // General\r\n case layouts[currentLayout].Floor:\r\n return {\r\n parent: \"Floor\",\r\n child: \"Floor\"\r\n };\r\n case layouts[currentLayout].Ceiling:\r\n return \"Ceiling\";\r\n case layouts[currentLayout].Toilet:\r\n return {\r\n parent: \"Toilet\",\r\n child: \"Toilet\"\r\n };\r\n case layouts[currentLayout].Window_Default:\r\n return \"Window\";\r\n\r\n // case layouts[currentLayout].Shower.Steam60in.ExtrusionWallLeft:\r\n // case layouts[currentLayout].Shower.Steam60in.Body[\"1\"]:\r\n // case layouts[currentLayout].Shower.Steam60in.Body[\"2\"]:\r\n // case layouts[currentLayout].Shower.Steam60in.Fixture:\r\n // return {\r\n // parent: \"Shower\",\r\n // child: \"Shower Body\"\r\n // };\r\n case layouts[currentLayout].Wall_A:\r\n return {\r\n parent: \"Walls\",\r\n child: \"Wall A\"\r\n };\r\n case layouts[currentLayout].Wall_C:\r\n return {\r\n parent: \"Walls\",\r\n child: \"Wall C\"\r\n };\r\n case layouts[currentLayout].Shower.Custom60in.ExtrusionWallRight:\r\n return {\r\n parent: \"Walls\",\r\n child: \"Right Shower Wall\"\r\n };\r\n case layouts[currentLayout].Vanity.Custom.Mirror:\r\n return {\r\n parent: \"Vanity\",\r\n child: \"Mirror\"\r\n };\r\n case layouts[currentLayout].Shower.Custom60in.ExtrusionWallLeft:\r\n case layouts[currentLayout].Shower.Custom60in.ExtrusionWallLeftHalfWall:\r\n case layouts[currentLayout].Shower.Custom60in.PonyWall:\r\n return \"left_wall_custom\";\r\n case layouts[currentLayout].Vanity.Custom.VanityBacksplash:\r\n case layouts[currentLayout].Wall_A_Accent_Mask:\r\n case layouts[currentLayout].Wall_B:\r\n return \"wall_b_custom\";\r\n case layouts[currentLayout].Vanity.Complete.Cabinet:\r\n case layouts[currentLayout].Vanity.Custom.Handle:\r\n case layouts[currentLayout].Vanity.Custom.CounterTop:\r\n case layouts[currentLayout].Vanity.Custom.Faucet:\r\n case layouts[currentLayout].Vanity.Custom.Sink:\r\n case layouts[currentLayout].Vanity.Custom.Cabinet:\r\n return \"vanity_custom\";\r\n\r\n case layouts[currentLayout].Shower.Custom60in.Threshold:\r\n return {\r\n parent: \"Shower\",\r\n child: \"Threshold\"\r\n };\r\n case layouts[currentLayout].Shower.Custom60in.WallAccent:\r\n case layouts[currentLayout].Shower.Custom60in.WallAccent2:\r\n return {\r\n parent: \"Shower\",\r\n child: \"Shower Walls Accent\"\r\n };\r\n case layouts[currentLayout].Shower.Custom60in.CornerCaddie:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Corner Caddie\"\r\n };\r\n case layouts[currentLayout].Shower.Custom60in.LargeCornerCaddie:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Large Corner Caddie\"\r\n };\r\n case layouts[currentLayout].Shower.Custom60in.LargeCornerSeat:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Large Corner Seat\"\r\n };\r\n case layouts[currentLayout].Shower.Custom60in.SoapDish:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Soap Dish\"\r\n };\r\n case layouts[currentLayout].Shower.Custom60in.SmallCornerShelf:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Small Corner Shelf\"\r\n };\r\n case layouts[currentLayout].Shower.Custom60in.GrabBar:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Grab Bar\"\r\n };\r\n case layouts[currentLayout].Shower.Custom60in.Glass:\r\n case layouts[currentLayout].Shower.Custom60in.Floor:\r\n case layouts[currentLayout].Shower.Custom60in.ShowerPanCombo:\r\n case layouts[currentLayout].Shower.Custom60in.Wall:\r\n case layouts[currentLayout].Shower.Custom60in.Wall2:\r\n case layouts[currentLayout].Shower.Custom60in.Fixture:\r\n case layouts[currentLayout].Shower.Custom60in.ShowerHead:\r\n case layouts[currentLayout].Shower.Custom60in.Body:\r\n case layouts[currentLayout].Shower.Custom60in.Overlay:\r\n case layouts[currentLayout].Shower.Custom60in.ShowerDoor:\r\n case layouts[currentLayout].Shower.Custom60in.ShowerDoorHandle:\r\n case layouts[currentLayout].Shower.Steam60in.ExtrusionWallLeft:\r\n case layouts[currentLayout].Shower.Steam60in.Body[\"1\"]:\r\n case layouts[currentLayout].Shower.Steam60in.Body[\"2\"]:\r\n case layouts[currentLayout].Shower.Steam60in.Fixture:\r\n return \"shower_custom\";\r\n // BathTub\r\n case layouts[currentLayout].BathTub.Custom60in.Top:\r\n case layouts[currentLayout].BathTub.Custom60in.Spa:\r\n case layouts[currentLayout].BathTub.Custom60in.Base:\r\n case layouts[currentLayout].BathTub.FreeStanding.Base:\r\n case layouts[currentLayout].BathTub.FreeStanding.Fixture:\r\n case layouts[currentLayout].BathTub.FreeStanding.FixtureFloorMount:\r\n case layouts[currentLayout].BathTub.Custom60in.Fixture:\r\n case layouts[currentLayout].BathTub.Custom60in.FixtureFloorMount:\r\n return \"bathtub_custom\";\r\n // BathTub\r\n case layouts[currentLayout].Shower.TubCombo.Liner:\r\n case layouts[currentLayout].Shower.TubCombo.ReplacementTub:\r\n case layouts[currentLayout].Shower.TubCombo.WalkInTub:\r\n case layouts[currentLayout].Shower.TubCombo.JettedTub:\r\n case layouts[currentLayout].Shower.TubCombo.WallConfiguration:\r\n return \"shower_combo\";\r\n // BathTub\r\n case layouts[currentLayout].Shower.Custom60in.PonyWallCap:\r\n case layouts[currentLayout].Shower.Custom60in.PonyWallGlass:\r\n return \"shower_pony_wall\";\r\n default:\r\n return \"\"\r\n }\r\n },\r\n getLayerDimensions: (zIndex, currentLayout) => {\r\n switch (zIndex) {\r\n // General\r\n case layouts[currentLayout].Floor:\r\n return {\r\n polygonArray: [[80,770],[1620,770],[1620,1080],[80,1080]],\r\n width: 1540,\r\n height: 310\r\n };\r\n case layouts[currentLayout].Ceiling:\r\n return {\r\n polygonArray: [[0,0],[1620,0],[1620,320],[0,320]],\r\n width: 1620,\r\n height: 320\r\n };\r\n case layouts[currentLayout].Toilet:\r\n return {\r\n polygonArray: [[500,640],[820,640],[820,960],[500,960]],\r\n width: 320,\r\n height: 320\r\n };\r\n case layouts[currentLayout].Window_Default:\r\n case layouts[currentLayout].Window_Covering:\r\n return {\r\n polygonArray: [[1200,240],[1400,240],[1400,780],[1200,780]],\r\n width: 200,\r\n height: 540\r\n };\r\n case layouts[currentLayout].Shower.Steam60in.ExtrusionWallLeft:\r\n case layouts[currentLayout].Shower.Steam60in.Body[\"1\"]:\r\n case layouts[currentLayout].Shower.Steam60in.Body[\"2\"]:\r\n case layouts[currentLayout].Shower.Steam60in.Fixture:\r\n case layouts[currentLayout].Shower.Custom60in.ExtrusionWallRight:\r\n case layouts[currentLayout].Shower.Custom60in.ExtrusionWallLeft:\r\n case layouts[currentLayout].Shower.Custom60in.ExtrusionWallLeftHalfWall:\r\n case layouts[currentLayout].Shower.Custom60in.PonyWall:\r\n case layouts[currentLayout].Shower.Custom60in.Threshold:\r\n case layouts[currentLayout].Shower.Custom60in.Glass:\r\n case layouts[currentLayout].Shower.Custom60in.Floor:\r\n case layouts[currentLayout].Shower.Custom60in.ShowerPanCombo:\r\n case layouts[currentLayout].Shower.Custom60in.Wall:\r\n case layouts[currentLayout].Shower.Custom60in.Wall2:\r\n case layouts[currentLayout].Shower.Custom60in.WallAccent:\r\n case layouts[currentLayout].Shower.Custom60in.WallAccent2:\r\n case layouts[currentLayout].Shower.Custom60in.Fixture:\r\n case layouts[currentLayout].Shower.Custom60in.ShowerHead:\r\n case layouts[currentLayout].Shower.Custom60in.Body:\r\n case layouts[currentLayout].Shower.Custom60in.Overlay:\r\n case layouts[currentLayout].Shower.Custom60in.ShowerDoor:\r\n case layouts[currentLayout].Shower.Custom60in.ShowerDoorHandle:\r\n case layouts[currentLayout].Shower.Custom60in.PonyWallCap:\r\n case layouts[currentLayout].Shower.Custom60in.PonyWallGlass:\r\n case layouts[currentLayout].Shower.Custom60in.SoapDish:\r\n case layouts[currentLayout].Shower.Custom60in.LargeCornerSeat:\r\n case layouts[currentLayout].Shower.Custom60in.LargeCornerCaddie:\r\n case layouts[currentLayout].Shower.Custom60in.CornerCaddie:\r\n case layouts[currentLayout].Shower.Custom60in.SmallCornerShelf:\r\n case layouts[currentLayout].Shower.Custom60in.GrabBar:\r\n case layouts[currentLayout].Shower.TubCombo.Liner:\r\n case layouts[currentLayout].Shower.TubCombo.ReplacementTub:\r\n case layouts[currentLayout].Shower.TubCombo.WalkInTub:\r\n case layouts[currentLayout].Shower.TubCombo.JettedTub:\r\n case layouts[currentLayout].Shower.TubCombo.WallConfiguration:\r\n return {\r\n polygonArray: [[570,0],[1500,0],[1540,1080],[570,1080]],\r\n width: 970,\r\n height: 1080\r\n };\r\n case layouts[currentLayout].Wall_A:\r\n return {\r\n polygonArray: [[0,0],[130,0],[130,1080],[0,1080]],\r\n width: 130,\r\n height: 1080\r\n };\r\n case layouts[currentLayout].Wall_A_Accent_Mask:\r\n return {\r\n polygonArray: [[90,120],[700,120],[700,690],[90,690]],\r\n width: 610,\r\n height: 570\r\n };\r\n case layouts[currentLayout].Wall_C:\r\n return {\r\n polygonArray: [[900,0],[1620,0],[1620,1080],[900,1080]],\r\n width: 720,\r\n height: 1080\r\n };\r\n case layouts[currentLayout].Wall_B:\r\n return {\r\n polygonArray: [[80,140],[1080,140],[1080,990],[80,990]],\r\n width: 1000,\r\n height: 850\r\n };\r\n case layouts[currentLayout].Vanity.Custom.Mirror:\r\n return {\r\n polygonArray: [[80,170],[700,170],[700,630],[80,630]],\r\n width: 620,\r\n height: 460\r\n };\r\n case layouts[currentLayout].Vanity.Custom.VanityBacksplash:\r\n return {\r\n polygonArray: [[80,580],[700,580],[700,680],[80,680]],\r\n width: 620,\r\n height: 100\r\n };\r\n case layouts[currentLayout].Vanity.Custom.CounterTop:\r\n return {\r\n polygonArray: [[80,610],[770,610],[770,710],[80,710]],\r\n width: 690,\r\n height: 100\r\n };\r\n case layouts[currentLayout].Vanity.Custom.Faucet:\r\n case layouts[currentLayout].Vanity.Custom.Sink:\r\n return {\r\n polygonArray: [[80,500],[700,500],[700,710],[80,710]],\r\n width: 620,\r\n height: 210\r\n };\r\n case layouts[currentLayout].Vanity.Complete.Cabinet:\r\n case layouts[currentLayout].Vanity.Custom.Handle:\r\n case layouts[currentLayout].Vanity.Custom.Cabinet:\r\n return {\r\n polygonArray: [[80,500],[780,500],[780,1070],[80,1070]],\r\n width: 700,\r\n height: 570\r\n };\r\n // BathTub\r\n case layouts[currentLayout].BathTub.Custom60in.Top:\r\n case layouts[currentLayout].BathTub.Custom60in.Spa:\r\n case layouts[currentLayout].BathTub.Custom60in.Base:\r\n case layouts[currentLayout].BathTub.FreeStanding.Base:\r\n case layouts[currentLayout].BathTub.FreeStanding.Fixture:\r\n case layouts[currentLayout].BathTub.FreeStanding.FixtureFloorMount:\r\n case layouts[currentLayout].BathTub.Custom60in.Fixture:\r\n case layouts[currentLayout].BathTub.Custom60in.FixtureFloorMount:\r\n return {\r\n polygonArray: [[750,580],[1620,580],[1620,1080],[750,1080]],\r\n width: 870,\r\n height: 500\r\n };\r\n default:\r\n return null\r\n }\r\n }\r\n}\r\n\r\n\r\n","import $ from 'jquery';\r\nimport PropTypes from \"prop-types\";\r\nimport 'jquery-ui/ui/core';\r\nimport 'jquery-ui/ui/widgets/draggable';\r\nimport React, {Fragment} from \"react\";\r\nimport uuid from \"uuid\";\r\n\r\nimport ActionTypes from \"./../../../misc/actionTypes\";\r\nimport KeyboardKey from \"./keyboardKey\";\r\nimport Config from \"./../../../config\"; // kioskStandAlone\r\nimport Analytics from './../../../analytics';\r\n\r\n\r\nexport default class OnScreenKeyboard extends React.Component {\r\n\r\n static propTypes = {\r\n rightSide: PropTypes.bool,\r\n inputId: PropTypes.string.isRequired,\r\n getValue: PropTypes.func,\r\n setValue: PropTypes.func.isRequired,\r\n onClose: PropTypes.func,\r\n onShow: PropTypes.func,\r\n type: PropTypes.string.isRequired,\r\n prependTo: PropTypes.string,\r\n appendTo: PropTypes.string,\r\n top: PropTypes.string,\r\n left: PropTypes.string,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.keyboardFrame = null;\r\n this.state = {\r\n value: '',\r\n hidden: true,\r\n selectionStart: 0,\r\n selectionEnd: 0,\r\n type: this.props.type || \"standard\",\r\n oskInputId: uuid.v4(),\r\n isUpperCase: false,\r\n osk: document.kvConfig.osk,\r\n parentNode: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.tryBindToParent();\r\n this.setState({parentNode: $(this.keyboardFrame).parent()}, () => {\r\n if(this.props.prependTo)\r\n $(this.keyboardFrame).detach().prependTo(this.props.prependTo);\r\n else if(this.props.appendTo)\r\n $(this.keyboardFrame).detach().appendTo(this.props.appendTo);\r\n });\r\n\r\n const $keyboardFrame = $(this.keyboardFrame);\r\n const lightbox = $keyboardFrame.parents('.lightbox-options-wrapper');\r\n if (lightbox) {\r\n lightbox.on('scroll', this.setKBPosition.bind(this, $keyboardFrame, lightbox));\r\n this.setKBPosition($keyboardFrame, lightbox);\r\n }\r\n\r\n $(document).on(ActionTypes.SHOW_NUMERIC_KBD, this.handleShowKeyboard);\r\n $(document).on(ActionTypes.OVERLAY_CLICK, this.handleShowKeyboard);\r\n $(document).on('click', this.handleOutsideClick);\r\n }\r\n\r\n componentDidUpdate() {\r\n this.tryBindToParent();\r\n const fields = this.getFields();\r\n if (!this.state.hidden) {\r\n const selStart = this.state.selectionStart,\r\n selEnd = this.state.selectionEnd;\r\n if (fields.input) {\r\n fields.input.value = this.passwordify(this.state.value);\r\n fields.$input.focus();\r\n fields.input.setSelectionRange(selStart, selEnd);\r\n }\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps) { // we need to update this state when parent passes new value\r\n nextProps.value && nextProps.value !== this.state.value && this.setState({\r\n value: nextProps.value\r\n });\r\n }\r\n\r\n componentWillUnmount = () => {\r\n $(this.keyboardFrame).detach().appendTo(this.state.parentNode);\r\n $('.lightbox-options-wrapper').off('scroll');\r\n $(document).off(ActionTypes.SHOW_NUMERIC_KBD, this.handleShowKeyboard);\r\n $(document).off(ActionTypes.OVERLAY_CLICK, this.handleShowKeyboard);\r\n $(document).off('click', this.handleOutsideClick);\r\n };\r\n\r\n getFields = () => {\r\n const $parent = $('#' + (this.props.inputId ? this.props.inputId : this.props.parentId)),\r\n $parentInput = (this.props.inputId ? $('#' + this.props.inputId) : $parent.find('input[type=text]:not(\".osk-input\")')),\r\n parentInput = $parent[0],\r\n $input = $('#' + this.state.oskInputId),\r\n input = $input[0];\r\n return {\r\n $input: $input,\r\n input: input,\r\n $parent: $parent,\r\n $parentInput: $parentInput,\r\n parentInput: parentInput\r\n };\r\n };\r\n\r\n tryBindToParent = () => {\r\n if (!this.state.osk) {\r\n return;\r\n }\r\n\r\n let fields = this.getFields();\r\n if (!fields || !fields.parentInput || fields.parentInput === undefined) {\r\n console.log('could not bind, fields is null');\r\n return;\r\n }\r\n\r\n //console.log('bound to parent', this.props.inputId, fields.$parentInput, fields.parentInput);\r\n $(fields.parentInput).off('focus').on('focus', this.show);\r\n $(fields.parentInput).off('click').on('click', function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n });\r\n };\r\n\r\n setKBPosition = (self, lightbox) => {\r\n if (lightbox.is(\":visible\")) {\r\n const parent = self.parent();\r\n const offset = parent.offset();\r\n self.css({\r\n top: offset.top + 60,\r\n left: offset.left + 50,\r\n position: 'fixed'\r\n });\r\n }\r\n };\r\n\r\n handleShowKeyboard = (e, data) => {\r\n if (this.state.hidden) {\r\n return;\r\n }\r\n\r\n if (!data || data.sender !== this.state.oskInputId) {\r\n this.hide();\r\n }\r\n };\r\n\r\n show = (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n const fields = this.getFields(),\r\n val = fields.$parentInput.val();\r\n //console.log('Show', fields);\r\n\r\n $(document).trigger(ActionTypes.SHOW_NUMERIC_KBD, {sender: this.state.oskInputId});\r\n $('.keyboard-main-frame, .keyboard-main-frame-extended').draggable({handle: '.keyboard-header-bar'});\r\n this.setState({value: val, hidden: false, selectionStart: val.length, selectionEnd: val.length, blockOutsideClick: true});\r\n window.setTimeout(() => {\r\n this.setState({blockOutsideClick: false});\r\n }, 500);\r\n if(this.props.onShow) {\r\n console.log('onShowShowing');\r\n this.props.onShow();\r\n }\r\n };\r\n\r\n\r\n handleOutsideClick = (e) => {\r\n if(this.state.blockOutsideClick) {\r\n return;\r\n }\r\n if($(e.target).parents('.keyboard-container').length <= 0) {\r\n this.hide();\r\n }\r\n };\r\n\r\n hide = () => {\r\n this.setState({hidden: true});\r\n setTimeout(() => {\r\n document.inputFocused = false;\r\n }, 20);\r\n if(this.props.onClose) {\r\n this.props.onClose(this.state.value);\r\n }\r\n };\r\n passwordify = (value) => {\r\n if (this.props.password) {\r\n for (let i = 0; i < value.length - 1; i++) {\r\n value = value.substring(0, i) + '*' + value.substring(i + 1);\r\n }\r\n }\r\n return value;\r\n };\r\n\r\n changeValue = (e) => {\r\n this.setState({value: e.target.value});\r\n };\r\n\r\n runKeyStroke = (key) => {\r\n document.inputFocused = true;\r\n if (key && key.length > 0) {\r\n const fields = this.getFields();\r\n let val = (this.props.getValue ? this.props.getValue() : this.state.value),\r\n start = val,\r\n end = \"\",\r\n input = fields.parentInput,\r\n $input = fields.$input,\r\n $parentInput = fields.$parentInput,\r\n selStart = (this.props.getValue ? val.length : input.selectionStart),\r\n selEnd = (this.props.getValue ? val.length : input.selectionEnd);\r\n //const ss = input.selectionStart, se = input.selectionEnd;\r\n // if (ss && ss !== selStart) {\r\n // selStart = ss;\r\n // }\r\n // if (se && se !== selEnd) {\r\n // selEnd = se;\r\n // }\r\n //console.log('>>', selStart, selEnd, key);\r\n if (selStart < val.length) {\r\n start = val.substring(0, selStart);\r\n end = val.substring(selEnd);\r\n }\r\n let inc = key.length;\r\n switch (key.toLowerCase()) {\r\n case \"backspace\":\r\n inc = -1;\r\n if (selStart < val.length) {\r\n if (selStart === selEnd) {\r\n start = start.substring(0, start.length - 1);\r\n } else {\r\n inc = 0;\r\n selEnd = selStart;\r\n }\r\n val = start + end;\r\n } else if (val.length > 0) {\r\n val = val.substring(0, val.length - 1);\r\n }\r\n break;\r\n case '|<':\r\n case '|>':\r\n if (key === '|<') {\r\n inc = -1;\r\n } else {\r\n if (selStart < selEnd) {\r\n inc = 0;\r\n selStart = selEnd;\r\n } else {\r\n inc = 1;\r\n }\r\n }\r\n break;\r\n case \"space bar\":\r\n case \"space\":\r\n val = start + \" \" + end;\r\n break;\r\n case \"caps\":\r\n case \"shift\":\r\n this.setState({isUpperCase: !this.state.isUpperCase});\r\n break;\r\n default:\r\n if (!this.state.isUpperCase) {\r\n key = key.toLowerCase();\r\n } else {\r\n key = key.toUpperCase();\r\n }\r\n val = start + key + end;\r\n selStart = start.length;\r\n selEnd = selStart;\r\n break;\r\n }\r\n //console.log('\\t>> ', selStart, selEnd, val, val.length, inc);\r\n if (selStart + inc > val.length) {\r\n selStart = val.length;\r\n selEnd = val.length;\r\n } else {\r\n selStart += inc;\r\n if (selEnd + inc > val.length) {\r\n selEnd = val.length;\r\n } else {\r\n selEnd += inc;\r\n }\r\n }\r\n if (selStart < 0) {\r\n selStart = 0;\r\n }\r\n if (selEnd < selStart) {\r\n selEnd = selStart;\r\n }\r\n\r\n this.setState({value: val, select: false}, () => {\r\n input.setSelectionRange(selStart, selEnd);\r\n if($input.length > 0)\r\n $input.focus();\r\n else\r\n $parentInput.focus();\r\n });\r\n // if ($input) {\r\n // console.log('\\t\\t>>', selStart, selEnd);\r\n // input.setSelectionRange(selStart, selEnd);\r\n // $input.val(val);\r\n // $input.focus();\r\n // }\r\n\r\n this.setParentValue(val);\r\n }\r\n };\r\n setParentValue = (value) => {\r\n Analytics.sendDataEnteredEvent('osk-update-parent-textbox');\r\n //console.log('setValue', value, this.props);\r\n if (this.props.setValue) {\r\n if (this.props.prop) {\r\n this.props.setValue(this.props.prop, value);\r\n } else {\r\n this.props.setValue(value);\r\n }\r\n }\r\n };\r\n\r\n done = () => {\r\n this.setParentValue(this.state.value);\r\n this.hide();\r\n };\r\n\r\n mouseUp = () => {\r\n const fields = this.getFields();\r\n this.setState({\r\n selectionStart: fields.input.selectionStart,\r\n selectionEnd: fields.input.selectionEnd\r\n });\r\n };\r\n\r\n render() {\r\n const visible = {\r\n display: this.state.hidden ? \"none\" : \"block\",\r\n //transition: \"all 0.5s ease-in-out\",\r\n top: this.props.top,\r\n left: this.props.left\r\n };\r\n if (this.props.type === \"numeric\") {\r\n return this.renderNumericKeyboard(visible);\r\n }\r\n\r\n const arrowKeys = {\r\n left: (Config.kioskStandAlone || location.port === '9007' || document.kvConfig.kioskMode ? '.' : '/Content/Views/quickquote-v3') + '/images/buttons/KeyboardLeftArrow.svg',\r\n right: (Config.kioskStandAlone || location.port === '9007' || document.kvConfig.kioskMode ? '.' : '/Content/Views/quickquote-v3') + '/images/buttons/KeyboardRightArrow.svg'\r\n };\r\n\r\n const mainFrameClass = \"keyboard-container \" + (this.props.type === 'email' ? 'keyboard-main-frame-extended' : 'keyboard-main-frame');\r\n\r\n return (\r\n
    this.keyboardFrame = node} onClick={(e) => e.stopPropagation()}>\r\n
    \r\n
    Drag to Move
    \r\n {this.state.hidden ? null : (\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 \" image={arrowKeys.right}\r\n runKeyStroke={this.runKeyStroke}/>\r\n
    \r\n {this.renderEmailPanel()}\r\n
    \r\n )}\r\n
    \r\n );\r\n }\r\n\r\n renderEmailPanel = () => {\r\n if (this.props.type !== 'email') {\r\n return null;\r\n }\r\n\r\n return (\r\n
    \r\n @gmail.com\r\n @yahoo.com\r\n @hotmail.com\r\n @aol.com\r\n @msn.com\r\n @me.com\r\n @icloud.com\r\n .com\r\n .net\r\n
    \r\n );\r\n };\r\n\r\n renderNumericKeyboard = (visible) => {\r\n //
    \r\n return (\r\n\r\n
    this.keyboardFrame = node}>\r\n {this.state.hidden ? null : (\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
    \r\n\r\n );\r\n //
    \r\n }\r\n}\r\n","import React, {useCallback} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport $ from \"jquery\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Button from \"@mui/material/Button\";\r\nimport DeleteIcon from \"@mui/icons-material/Delete\";\r\nimport DeleteForeverIcon from \"@mui/icons-material/DeleteForever\";\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport Switch from '@mui/material/Switch';\r\n\r\nimport {checkIfFeatureDisabled, navFeatureCLick} from \"../lookFunctions\";\r\nimport {updateCanvasCount} from \"../../../../actions/actionFunctions\";\r\nimport {featureInterface} from \"../../../../interfaces/featureInterface\";\r\nimport {disableFeature, enableRelatedFeature} from \"../lookFunctions2\";\r\nimport {setLookOverlayOpened, setLookStylePopup} from \"../../../../actions/lookFunctions\";\r\nimport {LOOK_OVERLAYS} from \"../../core/constants\";\r\nimport {IS_LIXIL_UI, IS_PRODUCT_JOURNEY, IS_QKB_UI} from \"../../../../config\";\r\n\r\nimport {getCurrentLayout} from \"../../../appLayout\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS, PRODUCT_JOURNEY_ANALYTIC_EVENTS} from \"../../../../analytics\";\r\nimport {getFeatureIsLocked} from \"../../../../misc/helpers\";\r\nimport WithUpdateLookCartItem from \"../../hocs/withUpdateLookCartItem\";\r\nimport ActionTypes from \"../../../../misc/actionTypes\";\r\n\r\nconst LookFeatureRemoveButton = (props) => {\r\n\r\n const {lookFeature, updateCanvasCount, isIcon, isList, isToggle, intl, setLookOverlayOpened, setLookStylePopup,\r\n text, updateLookCartItem, refreshItems} = props;\r\n\r\n const parent = lookFeature.getParent();\r\n const alreadyDisabled = checkIfFeatureDisabled(lookFeature, parent);\r\n const featureIsLocked = getFeatureIsLocked(lookFeature);\r\n\r\n const updateForOldUI = useCallback(() => {\r\n if (!IS_QKB_UI) {\r\n return\r\n }\r\n $(window).trigger(ActionTypes.CHANGE_LAYOUT); // update canvas\r\n if (refreshItems) {\r\n refreshItems();// update navigation (non compatible)\r\n }\r\n }, [refreshItems]);\r\n\r\n const deleteButtonClick = async () => {\r\n if (alreadyDisabled) {\r\n return false\r\n }\r\n\r\n if (IS_LIXIL_UI) {\r\n const featureLabel = Analytics.getSkuForAnalytics(lookFeature);\r\n Analytics.sendClickEvent(IS_PRODUCT_JOURNEY\r\n ? PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeatureRemove + featureLabel\r\n : LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeatureRemove + featureLabel\r\n );\r\n\r\n if (featureIsLocked) {\r\n setLookOverlayOpened(LOOK_OVERLAYS.leadCapture);\r\n return false\r\n }\r\n }\r\n\r\n const layout = getCurrentLayout();\r\n if (document.kvConfig.visualizerType === \"bvLook\") {\r\n switch (lookFeature.partId) {\r\n case \"vanity_faucet\":\r\n case \"vanity_sink\": {\r\n if (IS_PRODUCT_JOURNEY) {\r\n if (lookFeature.partId === \"vanity_sink\") {\r\n const relatedFeatureGroup = layout.getFeatureGroupByPartId(\"vanity_faucet\");\r\n if (relatedFeatureGroup && !relatedFeatureGroup.disabled && relatedFeatureGroup.activeFeature\r\n && (!relatedFeatureGroup.activeFeature.metaData[\"MountType\"] || !relatedFeatureGroup.activeFeature.metaData[\"MountType\"].includes('U'))) {\r\n // Turning off the faucet should not turn off the sink or countertop, but turning of the sink should turn off the faucet (*unless it’s a wall mount faucet)\r\n disableFeature(relatedFeatureGroup.activeFeature, updateLookCartItem);\r\n }\r\n }\r\n break;\r\n }\r\n const parent = layout.getSubPartByPartId(lookFeature.partId === \"vanity_faucet\" ? \"vanity_sink\" : \"vanity_faucet\");\r\n if (IS_LIXIL_UI && parent && lookFeature.metaData[\"layerPosition\"] && parent.part.layerPositions[lookFeature.metaData.layerPosition]) {\r\n setLookOverlayOpened(LOOK_OVERLAYS.styleRemoveFeature);\r\n // setLookRemovePopup({\r\n // fromFeature: lookFeature\r\n // });\r\n setLookStylePopup({\r\n notMatchingFeatures: [parent.part.layerPositions[lookFeature.metaData.layerPosition]]\r\n });\r\n return false\r\n }\r\n break;\r\n }\r\n case \"toilet\": {\r\n [\"toilet_brush\", \"paper_holder\"].forEach(partId => {\r\n const relatedFeatureGroup = layout.getFeatureGroupByPartId(partId);\r\n if (relatedFeatureGroup && !relatedFeatureGroup.disabled && relatedFeatureGroup.activeFeature) {\r\n disableFeature(relatedFeatureGroup.activeFeature, updateLookCartItem);\r\n }\r\n })\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n await disableFeature(lookFeature, updateLookCartItem);\r\n updateCanvasCount(); // update canvas and self component\r\n updateForOldUI(); // update canvas with jquery ommmg\r\n };\r\n\r\n const turnOnClick = () => {\r\n const featureLabel = Analytics.getSkuForAnalytics(lookFeature);\r\n Analytics.sendClickEvent(IS_PRODUCT_JOURNEY\r\n ? PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeatureEnable + featureLabel\r\n : LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeatureEnable + featureLabel\r\n );\r\n\r\n if (parent.disabled) {\r\n parent.disabled = false;\r\n parent.disabledClick();\r\n }\r\n navFeatureCLick(lookFeature);\r\n enableRelatedFeature(lookFeature, null, null);\r\n updateCanvasCount(); // update canvas and self component\r\n updateForOldUI(); // update canvas with jquery ommmg\r\n }\r\n\r\n if (isIcon) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n if (isToggle) {\r\n return (\r\n \r\n }\r\n label={intl.formatMessage({id: text || \"grohe.mobile.feature.enableButton\"})}\r\n />\r\n )\r\n }\r\n\r\n return (\r\n \r\n )\r\n};\r\n\r\nLookFeatureRemoveButton.propTypes = {\r\n lookFeature: PropTypes.shape(featureInterface),\r\n updateLookCartItem: PropTypes.func.isRequired,\r\n isList: PropTypes.bool,\r\n isIcon: PropTypes.bool,\r\n isToggle: PropTypes.bool,\r\n text: PropTypes.string,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {canvasCount} = store.bathroomVisualizerState;\r\n const {isPhoneNumberValidated} = store.userState; // to update component when user is logged in\r\n\r\n return {\r\n canvasCount,\r\n isPhoneNumberValidated,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookOverlayOpened,\r\n // setLookRemovePopup,\r\n setLookStylePopup,\r\n updateCanvasCount,\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)((props) => {\r\n return (\r\n \r\n {(updateLookCartItem) => }\r\n \r\n )\r\n })\r\n)\r\n","import {Part} from \"../part\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {countertopGroupThumbnail} from \"../assets\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {PLACEMENTS} from \"../constants\";\r\n\r\nimport Countertop from \"../subparts/countertop/countertop\";\r\nimport Faucet from \"../subparts/countertop/faucet\";\r\nimport Sink from \"../subparts/countertop/sink\";\r\nimport Stovetop from \"../subparts/countertop/stovetop\";\r\n\r\nimport Cutouts from \"../subparts/countertop/cutouts\";\r\nimport EdgeProfile from \"../subparts/countertop/edgeProfile\";\r\nimport Radius from \"../subparts/countertop/radius\";\r\n\r\nexport default class CountertopGroup extends Part {\r\n static id = 'Countertop';\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'Countertop';\r\n this.partThumbnail = countertopGroupThumbnail;\r\n this.translateId = \"visualizer.kitchen.countertop\";\r\n\r\n // related items\r\n this.countertop = null;\r\n this.faucet = null;\r\n this.sink = null;\r\n\r\n this.edge = null;\r\n this.cutouts = null;\r\n this.radius = null;\r\n }\r\n\r\n load(dbFeature) {\r\n let relatedItemName = \"\",\r\n shouldLoadInDifferentGroups = false,\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Countertop\":\r\n relatedItemName = \"countertop\";\r\n RelatedItemClass = Countertop;\r\n break;\r\n case \"Edge Profile\":\r\n shouldLoadInDifferentGroups = true;\r\n relatedItemName = \"edge\";\r\n RelatedItemClass = EdgeProfile;\r\n break;\r\n case \"Cutouts\":\r\n relatedItemName = \"cutouts\";\r\n RelatedItemClass = Cutouts;\r\n break;\r\n case \"Radius\":\r\n relatedItemName = \"radius\";\r\n RelatedItemClass = Radius;\r\n break;\r\n case \"Faucet\":\r\n if ((dbFeature.metaData[\"Placement\"] && dbFeature.metaData[\"Placement\"].includes(PLACEMENTS.Countertop)) || !dbFeature.metaData[\"Placement\"]) {\r\n if (!dbFeature.metaData[\"Placement\"]) {\r\n shouldLoadInDifferentGroups = true;\r\n }\r\n relatedItemName = \"faucet\";\r\n RelatedItemClass = Faucet;\r\n }\r\n break;\r\n case \"Sink\":\r\n if ((dbFeature.metaData[\"Placement\"] && dbFeature.metaData[\"Placement\"].includes(PLACEMENTS.Countertop)) || !dbFeature.metaData[\"Placement\"]) {\r\n if (!dbFeature.metaData[\"Placement\"]) {\r\n shouldLoadInDifferentGroups = true;\r\n }\r\n relatedItemName = \"sink\";\r\n RelatedItemClass = Sink;\r\n }\r\n break;\r\n case \"Stovetop\":\r\n if ((dbFeature.metaData[\"Placement\"] && dbFeature.metaData[\"Placement\"].includes(PLACEMENTS.Countertop)) || !dbFeature.metaData[\"Placement\"]) {\r\n if (!dbFeature.metaData[\"Placement\"]) {\r\n shouldLoadInDifferentGroups = true;\r\n }\r\n relatedItemName = \"stovetop\";\r\n RelatedItemClass = Stovetop;\r\n }\r\n break;\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].load(dbFeature);\r\n return !shouldLoadInDifferentGroups;\r\n }\r\n return false\r\n }\r\n\r\n navigationItem() {\r\n return new DesignNavigationItem('Countertop', this);\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false;\r\n }\r\n\r\n handleSubPartClick() {\r\n\r\n }\r\n\r\n subParts(withHidden = true, hideWithoutFeatures = false) {\r\n return this.getRelatedItems()\r\n .filter(item => {\r\n if (hideWithoutFeatures && (item.partId === \"cutouts\" || item.partId === \"radius\")) {\r\n return false\r\n }\r\n return this.filterRelatedItem(item, withHidden)\r\n })\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n}\r\n","import {LayoutAbbreviation, LayoutType} from \"./constants\";\r\nimport {UseFullSizeImages} from \"../../../config\";\r\n\r\nlet layouts = {};\r\nObject.keys(LayoutType).forEach(layoutName => {\r\n layouts[layoutName] = {\r\n Background: {\r\n BackgroundBG: 100,\r\n Floor: 200,\r\n LeftWall: 300,\r\n ShowerWall: 400,\r\n RightWall: 550,\r\n CenterWall: 600,\r\n },\r\n ShowerWallAccent: 1000,\r\n Accessories: {\r\n WindowBody: 1000,\r\n WindowKits: 1100,\r\n LargeCornerCaddie: 2010,\r\n LargeCornerCaddie2: 2020,\r\n Fixture: 2100,\r\n LargeCornerSeat: 3330,\r\n LargeCornerSeat2: 3340,\r\n CornerCaddie: 2410,\r\n CornerCaddie2: 2420,\r\n SoapDish: 2500,\r\n SoapDish2: 2510,\r\n SoapDish3: 2520,\r\n SmallCornerShelf: 2600,\r\n GrabBar: 3500, // more that the fixture\r\n GrabBar2: 3510,\r\n GrabBar3: 3520,\r\n CornerShelf1: 2810,\r\n CornerShelf2: 2820,\r\n CornerShelf3: 2830,\r\n CornerShelf4: 2840,\r\n CornerShelf5: 2850,\r\n CornerShelf6: 2860,\r\n ShowerPod: 2900,\r\n LargeShelf: 2905,\r\n ShampooShelf: 2902,\r\n Seats: 3320,\r\n ShowerRod: 4200,\r\n TowelBar: 4250,\r\n },\r\n Shower: {\r\n ShowerPan: 3200,\r\n ShowerPanCombo: 3300,\r\n ShowerHead: 3350,\r\n ShowerFixture: 3410,\r\n ShowerFixture2: 3420,\r\n ShowerDoorHandle: 3600,\r\n // Threshold\r\n TubCombo: {\r\n WallConfiguration: 3600,\r\n Liner: 3700,\r\n ReplacementTub: 3800,\r\n WalkInTub: 3900,\r\n JettedTub: 4000,\r\n },\r\n ShowerDoor: 4100,\r\n ShowerDoor2: 4110,\r\n },\r\n Walls: {\r\n LeftWall: 4800,\r\n CeilingPanels: 4050, // less than shower doors\r\n RightWall: 4900,\r\n },\r\n Toilet: 5000,\r\n PaperHolder: 5050,\r\n Vanity: {\r\n Cabinet: 6000,\r\n Handle: 6100,\r\n CounterTop: 6200,\r\n VanityBacksplash: 6300,\r\n Mirror: 6400,\r\n Faucet: 6500,\r\n Sink: 6600,\r\n },\r\n Globals: {\r\n ToiletPaper: 8000,\r\n ToiletPaperHolder: 8050,\r\n Towel: 8100,\r\n LightFixture: 8200,\r\n LampFixture: 8250,\r\n DecorWindow: 8300,\r\n DecorSeat: 8400,\r\n },\r\n Bathtub: {\r\n BathTubFixture: 9000,\r\n BathTubBody: 9100,\r\n }\r\n };\r\n});\r\n\r\nlayouts[\"Layout4\"].Vanity = {\r\n Cabinet: 10000,\r\n Handle: 10100,\r\n CounterTop: 10200,\r\n VanityBacksplash: 10300,\r\n Mirror: 10400,\r\n Faucet: 10500,\r\n Sink: 10600,\r\n};\r\nlayouts[\"Layout4\"].Globals.DecorWindow = 1200;\r\nlayouts[\"Layout4\"].Toilet = 15000;\r\nlayouts[\"Layout4\"].Globals.DecorSeat = 18000;\r\nlayouts[\"Layout4\"].Globals.LightFixture = 19000;\r\nlayouts[\"Layout4\"].Globals.LampFixture = 19100;\r\nlayouts[\"Layout4\"].Globals.ToiletPaperHolder = 20000;\r\nlayouts[\"Layout4\"].PaperHolder = 20000;\r\n\r\n\r\nconst getLayerDimensions = (zIndex, currentLayout) => {\r\n const fullImagesFactor = UseFullSizeImages ? 177.77 : 100;\r\n const sizeFactor = fullImagesFactor / 100;\r\n switch (zIndex) {\r\n // case layouts[currentLayout].Background.ShowerWall:\r\n // return {\r\n // polygonArray: [[sizeFactor*350,sizeFactor*50],[sizeFactor*950,sizeFactor*50],[sizeFactor*950,sizeFactor*930],[sizeFactor*350,sizeFactor*930]],\r\n // width: sizeFactor*600,\r\n // height: sizeFactor*900\r\n // };\r\n case layouts[currentLayout].Shower.ShowerFixture:\r\n case layouts[currentLayout].Shower.ShowerFixture2:\r\n case layouts[currentLayout].Shower.ShowerDoorHandle:\r\n case layouts[currentLayout].Shower.ShowerHead:\r\n case layouts[currentLayout].ShowerWallAccent:\r\n case layouts[currentLayout].Accessories.Fixture:\r\n case layouts[currentLayout].Accessories.LargeCornerSeat:\r\n case layouts[currentLayout].Accessories.LargeCornerSeat2:\r\n case layouts[currentLayout].Accessories.CornerCaddie:\r\n case layouts[currentLayout].Accessories.CornerCaddie2:\r\n case layouts[currentLayout].Accessories.SoapDish:\r\n case layouts[currentLayout].Accessories.SoapDish2:\r\n case layouts[currentLayout].Accessories.SoapDish3:\r\n case layouts[currentLayout].Accessories.SmallCornerShelf:\r\n case layouts[currentLayout].Accessories.GrabBar:\r\n case layouts[currentLayout].Accessories.GrabBar2:\r\n case layouts[currentLayout].Accessories.GrabBar3:\r\n case layouts[currentLayout].Accessories.CornerShelf1:\r\n case layouts[currentLayout].Accessories.CornerShelf2:\r\n case layouts[currentLayout].Accessories.CornerShelf3:\r\n case layouts[currentLayout].Accessories.CornerShelf4:\r\n case layouts[currentLayout].Accessories.CornerShelf5:\r\n case layouts[currentLayout].Accessories.CornerShelf6:\r\n case layouts[currentLayout].Accessories.ShowerPod:\r\n case layouts[currentLayout].Accessories.LargeShelf:\r\n case layouts[currentLayout].Accessories.Seats:\r\n case layouts[currentLayout].Accessories.ShowerRod:\r\n case layouts[currentLayout].Accessories.WindowBody:\r\n case layouts[currentLayout].Accessories.WindowKits: {\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[sizeFactor*350,sizeFactor*130],[sizeFactor*950,sizeFactor*130],[sizeFactor*950,sizeFactor*930],[sizeFactor*350,sizeFactor*930]],\r\n width: sizeFactor*600,\r\n height: sizeFactor*800\r\n };\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[sizeFactor*560,0],[sizeFactor*1240,0],[sizeFactor*1240,sizeFactor*930],[sizeFactor*560,sizeFactor*930]],\r\n width: sizeFactor*580,\r\n height: sizeFactor*930\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n case layouts[currentLayout].Shower.ShowerDoor:\r\n case layouts[currentLayout].Shower.ShowerDoor2: {\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[sizeFactor*350,0],[sizeFactor*950,0],[sizeFactor*950,sizeFactor*930],[sizeFactor*350,sizeFactor*930]],\r\n width: sizeFactor*600,\r\n height: sizeFactor*800\r\n };\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[sizeFactor*560,0],[sizeFactor*1240,0],[sizeFactor*1240,sizeFactor*930],[sizeFactor*560,sizeFactor*930]],\r\n width: sizeFactor*580,\r\n height: sizeFactor*930\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n case layouts[currentLayout].Accessories.LargeCornerCaddie:\r\n case layouts[currentLayout].Accessories.LargeCornerCaddie2: {\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[sizeFactor*350,sizeFactor*30],[sizeFactor*950,sizeFactor*30],[sizeFactor*950,sizeFactor*930],[sizeFactor*350,sizeFactor*930]],\r\n width: sizeFactor*600,\r\n height: sizeFactor*900\r\n };\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[sizeFactor*560,0],[sizeFactor*1240,0],[sizeFactor*1240,sizeFactor*930],[sizeFactor*560,sizeFactor*930]],\r\n width: sizeFactor*580,\r\n height: sizeFactor*930\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n case layouts[currentLayout].Shower.Shower:\r\n case layouts[currentLayout].Shower.ShowerPanCombo: {\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[sizeFactor*350,sizeFactor*730],[sizeFactor*950,sizeFactor*730],[sizeFactor*950,sizeFactor*930],[sizeFactor*350,sizeFactor*930]],\r\n width: sizeFactor*600,\r\n height: sizeFactor*200\r\n };\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[sizeFactor*560,sizeFactor*730],[sizeFactor*1260,sizeFactor*730],[sizeFactor*1260,sizeFactor*930],[sizeFactor*560,sizeFactor*930]],\r\n width: sizeFactor*700,\r\n height: sizeFactor*200\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n case layouts[currentLayout].Shower.TubCombo.WallConfiguration:\r\n case layouts[currentLayout].Shower.TubCombo.Liner:\r\n case layouts[currentLayout].Shower.TubCombo.JettedTub:\r\n case layouts[currentLayout].Shower.TubCombo.ReplacementTub:\r\n case layouts[currentLayout].Shower.TubCombo.WalkInTub:\r\n return {\r\n polygonArray: [[sizeFactor*300,sizeFactor*280],[sizeFactor*1000,sizeFactor*280],[sizeFactor*1000,sizeFactor*1080],[sizeFactor*300,sizeFactor*1080]],\r\n width: sizeFactor*700,\r\n height: sizeFactor*800\r\n };\r\n case layouts[currentLayout].Toilet:\r\n case layouts[currentLayout].PaperHolder: {\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[sizeFactor*700,sizeFactor*500],[sizeFactor*1250,sizeFactor*500],[sizeFactor*1250,sizeFactor*1080],[sizeFactor*700,sizeFactor*1080]],\r\n width: sizeFactor*550,\r\n height: sizeFactor*580\r\n };\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[sizeFactor*100,sizeFactor*500],[sizeFactor*600,sizeFactor*500],[sizeFactor*600,sizeFactor*1080],[sizeFactor*100,sizeFactor*1080]],\r\n width: sizeFactor*500,\r\n height: sizeFactor*580\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n case layouts[currentLayout].Vanity.Cabinet:\r\n return {\r\n polygonArray: [[sizeFactor*920,sizeFactor*530],[sizeFactor*1920,sizeFactor*530],[sizeFactor*1920,sizeFactor*1080],[sizeFactor*920,sizeFactor*1080]],\r\n width: sizeFactor*1000,\r\n height: sizeFactor*550\r\n };\r\n case layouts[currentLayout].Vanity.CounterTop:\r\n return {\r\n polygonArray: [[sizeFactor*900,sizeFactor*500],[sizeFactor*1920,sizeFactor*500],[sizeFactor*1920,sizeFactor*1080],[sizeFactor*900,sizeFactor*1080]],\r\n width: sizeFactor*1020,\r\n height: sizeFactor*580\r\n };\r\n case layouts[currentLayout].Vanity.Faucet:\r\n case layouts[currentLayout].Vanity.Sink:\r\n case layouts[currentLayout].Vanity.VanityBacksplash: {\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[sizeFactor*900,sizeFactor*400],[sizeFactor*1900,sizeFactor*400],[sizeFactor*1900,sizeFactor*830],[sizeFactor*800,sizeFactor*830]],\r\n width: sizeFactor*1000,\r\n height: sizeFactor*430\r\n };\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[sizeFactor*300,sizeFactor*400],[sizeFactor*730,sizeFactor*400],[sizeFactor*730,sizeFactor*930],[sizeFactor*300,sizeFactor*930]],\r\n width: sizeFactor*430,\r\n height: sizeFactor*530\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n case layouts[currentLayout].Vanity.Mirror:\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[sizeFactor*1100,0],[sizeFactor*1900,0],[sizeFactor*1900,sizeFactor*640],[sizeFactor*1100,sizeFactor*640]],\r\n width: sizeFactor*800,\r\n height: sizeFactor*640\r\n };\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[sizeFactor*130,100],[sizeFactor*600,100],[sizeFactor*600,sizeFactor*540],[sizeFactor*130,sizeFactor*540]],\r\n width: sizeFactor*470,\r\n height: sizeFactor*440\r\n };\r\n }\r\n }\r\n return null;\r\n case layouts[currentLayout].Walls.CenterWall:\r\n case layouts[currentLayout].Background.CenterWall: {\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return null;\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[sizeFactor*360,0],[sizeFactor*760,0],[sizeFactor*760,sizeFactor*880],[sizeFactor*360,sizeFactor*880]],\r\n width: sizeFactor*400,\r\n height: sizeFactor*880\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n case layouts[currentLayout].Walls.RightWall:\r\n case layouts[currentLayout].Background.RightWall: {\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[sizeFactor*750,0],[sizeFactor*1920,0],[sizeFactor*1920,sizeFactor*1080],[sizeFactor*750,sizeFactor*1080]],\r\n width: sizeFactor*1170,\r\n height: sizeFactor*1080\r\n };\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[sizeFactor*120,0],[sizeFactor*1920,0],[sizeFactor*1920,sizeFactor*930],[sizeFactor*120,sizeFactor*930]],\r\n width: sizeFactor*1900,\r\n height: sizeFactor*930\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n case layouts[currentLayout].Walls.LeftWall:\r\n case layouts[currentLayout].Background.LeftWall: {\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[0,0],[sizeFactor*600,0],[sizeFactor*600,sizeFactor*1080],[0,sizeFactor*1080]],\r\n width: sizeFactor*600,\r\n height: sizeFactor*1080\r\n };\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[0,0],[sizeFactor*600,0],[sizeFactor*600,sizeFactor*1080],[0,sizeFactor*1080]],\r\n width: sizeFactor*600,\r\n height: sizeFactor*1080\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n case layouts[currentLayout].Walls.CeilingPanels:\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[sizeFactor*300,0],[sizeFactor*950,0],[sizeFactor*950,sizeFactor*100],[sizeFactor*300,sizeFactor*100]],\r\n width: sizeFactor*650,\r\n height: sizeFactor*100\r\n };\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[sizeFactor*560,0],[sizeFactor*1240,0],[sizeFactor*1240,sizeFactor*930],[sizeFactor*560,sizeFactor*930]],\r\n width: sizeFactor*580,\r\n height: sizeFactor*930\r\n };\r\n }\r\n }\r\n return null;\r\n case layouts[currentLayout].Background.Floor: {\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[sizeFactor*100,sizeFactor*800],[sizeFactor*1300,sizeFactor*800],[sizeFactor*1300,sizeFactor*1080],[sizeFactor*100,sizeFactor*1080]],\r\n width: sizeFactor*1200,\r\n height: sizeFactor*280\r\n };\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[0,sizeFactor*740],[sizeFactor*1920,740],[sizeFactor*1920,sizeFactor*1080],[0,sizeFactor*1080]],\r\n width: sizeFactor*1920,\r\n height: sizeFactor*340\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n case layouts[currentLayout].Background.ShowerWall:\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[sizeFactor*350,0],[sizeFactor*1650,0],[sizeFactor*1650,sizeFactor*930],[sizeFactor*350,sizeFactor*930]],\r\n width: sizeFactor*1300,\r\n height: sizeFactor*930\r\n };\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[sizeFactor*250,0],[sizeFactor*1250,0],[sizeFactor*1250,sizeFactor*930],[sizeFactor*250,sizeFactor*930]],\r\n width: sizeFactor*1000,\r\n height: sizeFactor*930\r\n };\r\n }\r\n }\r\n return null;\r\n case layouts[currentLayout].Bathtub.BathTubBody:\r\n return {\r\n polygonArray: [[sizeFactor*800,sizeFactor*580],[sizeFactor*1920,sizeFactor*580],[sizeFactor*1920,sizeFactor*1080],[sizeFactor*800,sizeFactor*1080]],\r\n width: sizeFactor*1120,\r\n height: sizeFactor*500\r\n };\r\n case layouts[currentLayout].Bathtub.BathTubFixture:\r\n return {\r\n polygonArray: [[sizeFactor*1380,sizeFactor*370],[sizeFactor*1660,sizeFactor*370],[sizeFactor*1660,sizeFactor*1000],[sizeFactor*1380,sizeFactor*1000]],\r\n width: sizeFactor*280,\r\n height: sizeFactor*730\r\n };\r\n default:\r\n return null\r\n }\r\n};\r\n\r\nexport default {\r\n layouts,\r\n getMenuByHoveredLayer: (currentLayout, layer) => {\r\n // console.log('currentLayout', currentLayout);\r\n // console.log('layer', layer);\r\n switch (layer.zIndex) {\r\n // General\r\n case layouts[currentLayout].Ceiling:\r\n return \"Ceiling\";\r\n case layouts[currentLayout].Toilet:\r\n return {\r\n parent: \"Toilet\",\r\n child: \"Toilet\"\r\n };\r\n case layouts[currentLayout].PaperHolder:\r\n return {\r\n parent: \"Toilet\",\r\n child: \"Paper Holder\"\r\n };\r\n // case layouts[currentLayout].Shower.ExtrusionWallLeft:\r\n // case layouts[currentLayout].Shower.Body[\"1\"]:\r\n // case layouts[currentLayout].Shower.Body[\"2\"]:\r\n // case layouts[currentLayout].Shower.Fixture:\r\n // return {\r\n // parent: \"Shower\",\r\n // child: \"Shower Body\"\r\n // };\r\n case layouts[currentLayout].Wall_A:\r\n return {\r\n parent: \"Walls\",\r\n child: \"Wall A\"\r\n };\r\n case layouts[currentLayout].Wall_C:\r\n return {\r\n parent: \"Walls\",\r\n child: \"Wall C\"\r\n };\r\n case layouts[currentLayout].Vanity.Mirror:\r\n return {\r\n parent: \"Vanity\",\r\n child: \"Mirror\"\r\n };\r\n // case layouts[currentLayout].Shower.ExtrusionWallLeft:\r\n // case layouts[currentLayout].Shower.ExtrusionWallLeftHalfWall:\r\n // case layouts[currentLayout].Shower.PonyWall:\r\n // return \"left_wall_custom\";\r\n case layouts[currentLayout].Vanity.VanityBacksplash:\r\n case layouts[currentLayout].Wall_B:\r\n return \"wall_b_custom\";\r\n case layouts[currentLayout].Vanity.Handle:\r\n case layouts[currentLayout].Vanity.CounterTop:\r\n case layouts[currentLayout].Vanity.Faucet:\r\n case layouts[currentLayout].Vanity.Sink:\r\n case layouts[currentLayout].Vanity.Cabinet:\r\n return \"vanity_custom\";\r\n\r\n case layouts[currentLayout].Shower.Threshold:\r\n return {\r\n parent: \"Shower\",\r\n child: \"Threshold\"\r\n };\r\n case layouts[currentLayout].Accessories.CornerCaddie:\r\n case layouts[currentLayout].Accessories.CornerCaddie2:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Corner Caddie\"\r\n };\r\n case layouts[currentLayout].Accessories.LargeCornerCaddie:\r\n case layouts[currentLayout].Accessories.LargeCornerCaddie2:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Large Corner Caddie\"\r\n };\r\n case layouts[currentLayout].Accessories.LargeCornerSeat:\r\n case layouts[currentLayout].Accessories.LargeCornerSeat2:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Large Corner Seat\"\r\n };\r\n case layouts[currentLayout].Accessories.SoapDish:\r\n case layouts[currentLayout].Accessories.SoapDish2:\r\n case layouts[currentLayout].Accessories.SoapDish3:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Soap Dish\"\r\n };\r\n case layouts[currentLayout].Accessories.SmallCornerShelf:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Small Corner Shelf\"\r\n };\r\n case layouts[currentLayout].Accessories.GrabBar:\r\n case layouts[currentLayout].Accessories.GrabBar2:\r\n case layouts[currentLayout].Accessories.GrabBar3:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Grab Bar\"\r\n };\r\n case layouts[currentLayout].Accessories.CornerShelf1:\r\n case layouts[currentLayout].Accessories.CornerShelf2:\r\n case layouts[currentLayout].Accessories.CornerShelf3:\r\n case layouts[currentLayout].Accessories.CornerShelf4:\r\n case layouts[currentLayout].Accessories.CornerShelf5:\r\n case layouts[currentLayout].Accessories.CornerShelf6:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Corner Shelf\"\r\n };\r\n case layouts[currentLayout].Accessories.ShowerPod:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Shower Pod\"\r\n };\r\n case layouts[currentLayout].Accessories.LargeShelf:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Large Shelf\"\r\n };\r\n case layouts[currentLayout].Accessories.ShampooShelf:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Shampoo Shelf\"\r\n };\r\n case layouts[currentLayout].Accessories.Seats:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Seats\"\r\n };\r\n case layouts[currentLayout].Accessories.ShowerRod:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Shower Rod\"\r\n };\r\n case layouts[currentLayout].Accessories.TowelBar:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Towel Bar\"\r\n };\r\n case layouts[currentLayout].Accessories.WindowBody:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Window\"\r\n };\r\n case layouts[currentLayout].Accessories.WindowKits:\r\n return {\r\n parent: \"Shower Accessories\",\r\n child: \"Window Kits\"\r\n };\r\n case layouts[currentLayout].Walls.RightWall:\r\n case layouts[currentLayout].Background.RightWall:\r\n return {\r\n parent: \"Walls\",\r\n child: \"Right Wall\"\r\n };\r\n case layouts[currentLayout].Background.LeftWall:\r\n case layouts[currentLayout].Walls.LeftWall:\r\n return {\r\n parent: \"Walls\",\r\n child: \"Left Wall\"\r\n };\r\n case layouts[currentLayout].Background.CenterWall:\r\n case layouts[currentLayout].Walls.CenterWall:\r\n return {\r\n parent: \"Walls\",\r\n child: \"Center Wall\"\r\n };\r\n case layouts[currentLayout].Walls.CeilingPanels:\r\n return {\r\n parent: \"Walls\",\r\n child: \"Ceiling Panels\"\r\n };\r\n case layouts[currentLayout].Shower.ShowerHead:\r\n return {\r\n parent: \"Shower\",\r\n child: \"Shower Head\"\r\n };\r\n case layouts[currentLayout].Background.Floor:\r\n return {\r\n parent: \"Floor\",\r\n child: \"Floor\"\r\n };\r\n case layouts[currentLayout].Shower.Glass:\r\n case layouts[currentLayout].Shower.Floor:\r\n case layouts[currentLayout].Shower.ShowerPanCombo:\r\n case layouts[currentLayout].Background.ShowerWall:\r\n case layouts[currentLayout].Shower.Body:\r\n case layouts[currentLayout].Shower.Overlay:\r\n case layouts[currentLayout].Shower.ShowerDoor:\r\n case layouts[currentLayout].Shower.ShowerDoor2:\r\n case layouts[currentLayout].Shower.ShowerDoorHandle:\r\n case layouts[currentLayout].Shower.ExtrusionWallLeft:\r\n case layouts[currentLayout].Shower.Fixture:\r\n case layouts[currentLayout].Shower.ShowerFixture:\r\n case layouts[currentLayout].Shower.ShowerFixture2:\r\n case layouts[currentLayout].ShowerWallAccent:\r\n return \"shower_custom\";\r\n case layouts[currentLayout].Shower.TubCombo.Liner:\r\n case layouts[currentLayout].Shower.TubCombo.ReplacementTub:\r\n case layouts[currentLayout].Shower.TubCombo.WalkInTub:\r\n case layouts[currentLayout].Shower.TubCombo.JettedTub:\r\n case layouts[currentLayout].Shower.TubCombo.WallConfiguration:\r\n return \"shower_combo\";\r\n // BathTub\r\n case layouts[currentLayout].Shower.PonyWallCap:\r\n case layouts[currentLayout].Shower.PonyWallGlass:\r\n return \"shower_pony_wall\";\r\n case layouts[currentLayout].Bathtub.BathTubBody:\r\n case layouts[currentLayout].Bathtub.BathTubFixture:\r\n return \"bathtub_custom\";\r\n default:\r\n return \"\"\r\n }\r\n },\r\n getLayerDimensions\r\n}\r\n\r\n\r\n","import {Part} from \"../part\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport { showerAccessoriesThumbnail } from '../../../bvComponent/core/assets';\r\nimport LargeCornerSeat from \"../subparts/showerAccessories/largeCornerSeat\";\r\nimport SoapDish from \"../subparts/showerAccessories/soapDish\";\r\nimport CornerCaddie from \"../subparts/showerAccessories/cornerCaddie\";\r\nimport LargeCornerCaddie from \"../subparts/showerAccessories/largeCornerCaddie\";\r\nimport GrabBar from \"../subparts/showerAccessories/grabBar\";\r\nimport CornerShelf from \"../subparts/showerAccessories/cornerShelf\";\r\nimport ShowerPod from \"../subparts/showerAccessories/showerPod\";\r\nimport Seats from \"../subparts/showerAccessories/seats\";\r\nimport ShowerRod from \"../subparts/showerAccessories/showerRod\";\r\nimport WindowBody from \"../subparts/showerAccessories/windowBody\";\r\nimport WindowKits from \"../subparts/showerAccessories/windowKits\";\r\nimport LargeShelf from \"../subparts/showerAccessories/largeShelf\";\r\nimport TowelBar from \"../subparts/showerAccessories/towelBar\";\r\nimport ShampooShelf from \"../subparts/showerAccessories/shampooShelf\";\r\n\r\nexport class ShowerAccessories extends Part {\r\n static id = 'Shower Accessories';\r\n\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partThumbnail = showerAccessoriesThumbnail;\r\n this.partName = 'Shower Accessories';\r\n this.translateId = \"visualizer.bathroom.accessories\";\r\n this.relatedItems = [];\r\n\r\n // related items\r\n this.soapDish = null;\r\n this.largeCornerSeat = null;\r\n this.largeCornerCaddie = null;\r\n this.cornerCaddie = null;\r\n this.smallCornerShelf = null;\r\n this.grabBar = null;\r\n this.showerPod = null;\r\n this.seats = null;\r\n this.windowBody = null;\r\n this.windowKits = null;\r\n this.largeShelf = null;\r\n this.shampooShelf = null;\r\n this.towelBar = null;\r\n\r\n //current active caddie type\r\n this.caddie_type = \"corner_shelf\";\r\n\r\n }\r\n\r\n load(dbFeature) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Soap Dish\":\r\n relatedItemName = \"soapDish\";\r\n RelatedItemClass = SoapDish;\r\n break;\r\n case \"Large Corner Seat\":\r\n relatedItemName = \"largeCornerSeat\";\r\n RelatedItemClass = LargeCornerSeat;\r\n break;\r\n case \"Large Corner Caddie\":\r\n relatedItemName = \"largeCornerCaddie\";\r\n RelatedItemClass = LargeCornerCaddie;\r\n break;\r\n case \"Corner Caddie\":\r\n relatedItemName = \"cornerCaddie\";\r\n RelatedItemClass = CornerCaddie;\r\n break;\r\n case \"Grab Bar\":\r\n relatedItemName = \"grabBar\";\r\n RelatedItemClass = GrabBar;\r\n break;\r\n case \"Shower Rod\":\r\n relatedItemName = \"showerRod\";\r\n RelatedItemClass = ShowerRod;\r\n break;\r\n case \"Corner Shelf\":\r\n case \"Small Corner Shelf\":\r\n relatedItemName = \"cornerShelf\";\r\n RelatedItemClass = CornerShelf;\r\n break;\r\n case \"Shower Pod\":\r\n case \"Storage Pod\":\r\n case \"Storage Pods\":\r\n relatedItemName = \"showerPod\";\r\n RelatedItemClass = ShowerPod;\r\n break;\r\n case \"Large Shelf\":\r\n relatedItemName = \"largeShelf\";\r\n RelatedItemClass = LargeShelf;\r\n break;\r\n case \"Shampoo Shelf\":\r\n relatedItemName = \"shampooShelf\";\r\n RelatedItemClass = ShampooShelf;\r\n break;\r\n case \"Seats\":\r\n case \"flip-Up Seat\":\r\n case \"Flip-Up Seat\":\r\n relatedItemName = \"seats\";\r\n RelatedItemClass = Seats;\r\n break;\r\n case \"Window Kit\":\r\n case \"Window Kits\": {\r\n relatedItemName = \"windowKits\";\r\n RelatedItemClass = WindowKits;\r\n break;\r\n }\r\n case \"Window\": {\r\n relatedItemName = \"decorWindow\";\r\n RelatedItemClass = WindowBody;\r\n break;\r\n }\r\n case \"Towel Bar\": {\r\n relatedItemName = \"towelBar\";\r\n RelatedItemClass = TowelBar;\r\n break;\r\n }\r\n\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n if (relatedItemName !== \"shadows\") {\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].load(dbFeature);\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n}\r\n\r\n","export const LayoutType = {\r\n Layout1: 1,\r\n // Layout2: 2,\r\n Layout31: 31,\r\n};\r\n\r\nexport const LayoutAbbreviation = {\r\n All: \"ALL\",\r\n Layout1: \"Layout1\",\r\n // Layout2: \"Layout2\",\r\n Layout31: \"Layout31\",\r\n};\r\n\r\nexport const LayoutAbbreviations = [\r\n \"Layout1\",\r\n // \"Layout2\",\r\n \"Layout31\",\r\n];\r\nexport const LayoutAbbreviationsToRemove = [\r\n \"Layout31\",\r\n // \"Layout2\",\r\n \"Layout1\",\r\n];\r\n\r\nexport const METADATA = {\r\n ALL: \"ALL\"\r\n};\r\n\r\nexport const DECORS_MAX = 10;\r\n","import {COUNTERTOP_GROUP} from \"../../../../kvComponent/core/constants\";\r\nimport {COUNTERTOP_GROUP_BATHROOM} from \"../../../core/constants\";\r\nimport {filterCartItems, sortCartItemsForListPage} from \"../../../lookNavigation/lookFunctions2\";\r\n\r\n/**\r\n * @param cartItem {cartItemInterface}\r\n * @param property {string}\r\n * @returns {number|string}\r\n */\r\nexport const getCartItemShippingCost = (cartItem, property = \"shippingCost\") => {\r\n if (property !== \"shippingCost\") {\r\n return cartItem[property] || cartItem.cartFeature.dbFeature[property]\r\n }\r\n return (typeof cartItem.shippingCost === \"number\")\r\n ? cartItem.shippingCost\r\n : (typeof cartItem.cartFeature.dbFeature.shippingCost === \"number\")\r\n ? cartItem.cartFeature.dbFeature.shippingCost\r\n : 0\r\n}\r\n\r\n/**\r\n * returns array of deliveries\r\n * @param cartItems {[cartItemInterface]}\r\n * @returns {array}\r\n */\r\nexport const createDeliverySections = (cartItems) => {\r\n\r\n const cartItemsToInclude = filterCartItems(cartItems, true, true);\r\n const cartItemsList = sortCartItemsForListPage(cartItemsToInclude);\r\n\r\n let deliveries = [];\r\n cartItemsList.forEach(cartItem => {\r\n const cartItemShippingCost = getCartItemShippingCost(cartItem) || 0;\r\n const cartItemShippingName = getCartItemShippingCost(cartItem, \"shippingName\") || \"Free\";\r\n const cartItemShippingTime = getCartItemShippingCost(cartItem, \"shippingTime\") || \"-\";\r\n const cartItemShippingCode = getCartItemShippingCost(cartItem, \"shippingCode\") || \"-\";\r\n const existingDelivery = deliveries.find(delivery => {\r\n return delivery.price === cartItemShippingCost && delivery.name === cartItemShippingName\r\n });\r\n if (existingDelivery) {\r\n existingDelivery.cartItems.push(cartItem.id)\r\n } else {\r\n deliveries.push({\r\n price: cartItemShippingCost,\r\n name: cartItemShippingName,\r\n time: cartItemShippingTime,\r\n code: cartItemShippingCode,\r\n cartItems: [cartItem.id],\r\n // activeDeliveryIndex: deliveries.length,\r\n })\r\n }\r\n })\r\n return deliveries\r\n}\r\n\r\nexport const setCartItemsShipping = (cartItems, shippingOptions = []) => {\r\n return cartItems.map(cartItem => {\r\n if (!cartItem.cartFeature || !cartItem.cartFeature.dbFeature) {\r\n return cartItem // no need to add a delivery\r\n }\r\n const shippingForItem = shippingOptions.find(shippingObject => shippingObject.dbFeatureId === cartItem.cartFeature.dbFeature.id);\r\n if (shippingForItem && shippingForItem.options && shippingForItem.options.length) {\r\n if (cartItem.shippingName && shippingForItem.options.some(option => option.title === cartItem.shippingName)) {\r\n return cartItem // already assigned, we already have been here\r\n }\r\n const firstOption = shippingForItem.options[0];\r\n return Object.assign({}, cartItem, {\r\n shippingCost: Math.trunc(firstOption.cost * 100) / 100,\r\n shippingName: firstOption.title,\r\n shippingTime: firstOption.delivery,\r\n shippingCode: firstOption.code,\r\n })\r\n } else if (cartItem.shippingName) {\r\n return cartItem // already assigned, we already have been here\r\n } else if (cartItem.cartFeature.dbFeature.shippingCost || cartItem.cartFeature.dbFeature.shippingName) {\r\n return Object.assign({}, cartItem, {\r\n shippingCost: cartItem.cartFeature.dbFeature.shippingCost || 0,\r\n shippingName: getCartItemShippingCost(cartItem, \"shippingName\") || \"Free\",\r\n shippingTime: getCartItemShippingCost(cartItem, \"shippingTime\") || \"-\",\r\n shippingCode: getCartItemShippingCost(cartItem, \"shippingCode\") || \"-\",\r\n })\r\n } else {\r\n return Object.assign({}, cartItem, {\r\n shippingCost: 0,\r\n shippingName: \"Free\",\r\n shippingTime: \"-\",\r\n shippingCode: \"-\",\r\n })\r\n }\r\n })\r\n}\r\n\r\nconst area2Codes = [\"MN\", \"WI\", \"MI\", \"NY\", \"VT\", \"NH\", \"ME\", \"MA\", \"RI\", \"CT\", \"NJ\"];\r\nconst area3Codes = [\"WA\", \"OR\", \"CA\", \"AZ\", \"NV\", \"ID\", \"MT\", \"WY\", \"UT\", \"NM\", \"CO\", \"SD\", \"ND\"];\r\n\r\nconst getAreaCost = (postalCode) => {\r\n if (area3Codes.includes(postalCode)) {\r\n return 295\r\n } else if (area2Codes.includes(postalCode)) {\r\n return 245\r\n }\r\n return 225\r\n}\r\n\r\n/**\r\n * @param deliveryCost {number}\r\n * @param cartItems {{cartItemInterface}}\r\n * @param storeState {object}\r\n * @returns {number}\r\n */\r\nexport const getCafeCountertopsDeliveryCost = (deliveryCost = 0, cartItems, storeState) => {\r\n let materialsQuantity = cartItems.reduce(((totalQuantity, cartItem) => {\r\n if (COUNTERTOP_GROUP.includes(cartItem.partId) || COUNTERTOP_GROUP_BATHROOM.includes(cartItem.partId)) {\r\n totalQuantity = totalQuantity + cartItem.quantity;\r\n }\r\n return totalQuantity\r\n }), 0)\r\n if (materialsQuantity === 0) {\r\n return deliveryCost\r\n }\r\n if (materialsQuantity < 10) {\r\n deliveryCost = deliveryCost + (95 * 2)\r\n } else if (materialsQuantity < 25) {\r\n const {stateShort, state} = storeState.paymentState.shippingAddress;\r\n const postalCode = stateShort || (state || \"\").slice(0, 2) || storeState.userState.userInfo.stateShort || (storeState.userState.userInfo.state || \"\").slice(0, 2);\r\n deliveryCost = deliveryCost + (getAreaCost(postalCode) * 2)\r\n } else {\r\n deliveryCost = deliveryCost + ((materialsQuantity * 6) * 2) // $6/sqft of material\r\n }\r\n return deliveryCost\r\n}\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Analytics from './../../analytics';\r\nimport * as uuid from \"uuid\";\r\n\r\nexport default class Quantity extends Component {\r\n\r\n static propTypes = {\r\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n title: PropTypes.string,\r\n label: PropTypes.string,\r\n size: PropTypes.string,\r\n changeValue: PropTypes.func.isRequired,\r\n minValue: PropTypes.number,\r\n maxValue: PropTypes.number,\r\n defaultQuantity: PropTypes.number,\r\n hideQuantity: PropTypes.bool,\r\n pulseFeatureInfoQuantity: PropTypes.bool,\r\n squared: PropTypes.bool,\r\n allowDecimals: PropTypes.bool\r\n };\r\n\r\n static defaultProps = {\r\n hideQuantity: false,\r\n pulseFeatureInfoQuantity: false,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n value: props.defaultQuantity || props.value,\r\n inputId: uuid.v4()\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.value !== this.state.value) {\r\n this.setState({\r\n value: nextProps.value\r\n })\r\n }\r\n }\r\n\r\n getMinMax = () => {\r\n const min = this.props.minValue !== undefined ? this.props.minValue : 0;\r\n const max = this.props.maxValue !== undefined ? this.props.maxValue : 99999;\r\n\r\n return {min, max};\r\n };\r\n\r\n handleOnKeyDown = (event) => {\r\n if (event.key==='.' && !this.props.allowDecimals) {\r\n event.preventDefault();\r\n return false\r\n }\r\n };\r\n\r\n handleChangeValue = (event, button) => {\r\n let value = \"\" + (button ? this.state.value + event : +event.target.value);\r\n if (value.includes(\".\")) {\r\n if (!this.props.allowDecimals) {\r\n return false\r\n }\r\n if (value.split(\".\")[1].length > 2) {\r\n value = +value.substring(0, value.length - 1); //round to 2 decimals\r\n }\r\n }\r\n value = +value;\r\n Analytics.sendDataEnteredEvent(\"quantity-value\", value);\r\n const {min, max} = this.getMinMax();\r\n if (value >= min && value <= max) {\r\n value = value === 0 ? \"\" : value;\r\n this.setState({value});\r\n this.props.changeValue(value);\r\n }\r\n };\r\n\r\n handleInputBlur = (e,) => {\r\n const value = +e.target.value;\r\n const {min, max} = this.getMinMax();\r\n if (value >= min) {\r\n this.setState({value});\r\n this.props.changeValue(value);\r\n } else {\r\n this.setState({value: 0});\r\n this.props.changeValue(0);\r\n }\r\n if (value > max) {\r\n this.setState({value: max});\r\n this.props.changeValue(max);\r\n }\r\n };\r\n\r\n getColor = () => {\r\n\r\n if (this.props.pulseFeatureInfoQuantity) {\r\n return \"pulsing-red\"\r\n }\r\n\r\n const {min, max} = this.getMinMax();\r\n return (this.state.value > min && this.state.value <= max) ? \"green\" : \"blue\"\r\n };\r\n\r\n render() {\r\n const {hideQuantity, squared} = this.props;\r\n const color = this.getColor();\r\n return (\r\n
    \r\n {this.props.title ? {this.props.title} : null}\r\n {this.props.label ? : null}\r\n
    \r\n {hideQuantity\r\n ? null\r\n : ()}\r\n \r\n {hideQuantity\r\n ? null\r\n : ()}\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n","export const getDeviceType = () => {\r\n const userAgent = navigator.userAgent || navigator.vendor || window.opera;\r\n\r\n if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {\r\n return DEVICE_TYPE.iOS;\r\n }\r\n\r\n if (/android/i.test(userAgent)) {\r\n return DEVICE_TYPE.Android;\r\n }\r\n\r\n if (/Windows|Macintosh|Linux|X11/.test(userAgent)) {\r\n return DEVICE_TYPE.Desktop;\r\n }\r\n\r\n return DEVICE_TYPE.unknown;\r\n};\r\nexport const DEVICE_TYPE = {\r\n iOS: 'iOS',\r\n Android: 'Android',\r\n Desktop: 'Desktop',\r\n unknown: 'unknown'\r\n}\r\n","import EventManager from \"../canvas/store/sqftEventManager\";\r\nimport workspace from \"../canvas/core/workspace\";\r\nimport config from \"../canvas/store/sqftConfig\";\r\nimport MiteredController from \"../canvas/core/controls/mitered\";\r\nimport FreeDraw from \"../canvas/core/controls/freeDraw\";\r\nimport UnderlaymentController from \"../canvas/core/controls/underlayment\";\r\nimport toolsControllers from \"../canvas/store/toolsControllers\";\r\nimport {FREE_FORM_THICKNESS_POPUP_ID} from \"../../constants\";\r\nimport store from \"../../../../store\";\r\n\r\nexport const resetEvents = function () {\r\n EventManager.stealCursor(true);\r\n EventManager.resetCursor(self);\r\n workspace.setAllowEdges(false);\r\n workspace.setAllowBumpoutEdges(false);\r\n};\r\n\r\nexport const handleResizeClick = function () {\r\n EventManager.stealCursor(true);\r\n EventManager.resetCursor(this);\r\n workspace.setAllowEdges(true);\r\n workspace.setAllowLineHighlight(true);\r\n setTimeout(function () {\r\n workspace.setAllowLineHighlight(false)\r\n }, 1000)\r\n};\r\n\r\nexport const handleSpacerClick = function () {\r\n // EventManager.stealCursor(true);\r\n // EventManager.resetCursor(this);\r\n // workspace.setAllowEdges(true);\r\n // workspace.setAllowLineHighlight(true);\r\n // setTimeout(function () {\r\n // workspace.setAllowLineHighlight(false)\r\n // }, 1000)\r\n};\r\n\r\nexport const handleRotateClick = function () {\r\n //EventManager.stealCursor(true);\r\n //EventManager.setCursor(\"rotate-left\", this, true);\r\n EventManager.stealCursor(true);\r\n config.workspace.menuItemActive = \"rotate-left\";\r\n};\r\n\r\nexport const handleWallClick = function () {\r\n EventManager.stealCursor(true);\r\n config.workspace.menuItemActive = \"wall\";\r\n FreeDraw.init();\r\n};\r\n\r\nexport const handleDuplicateClick = function () {\r\n EventManager.stealCursor(true);\r\n EventManager.setCursor(\"duplicate\", this, true);\r\n config.workspace.menuItemActive = \"duplicate\";\r\n};\r\n\r\nexport const handleAngleClick = function () {\r\n EventManager.stealCursor(true);\r\n EventManager.resetCursor(self);\r\n config.highlight.rotateAngle = true;\r\n workspace.getShapes().forEach((shape) => {\r\n if (Array.isArray(shape.rotateAngleParts) && shape.rotateAngleParts.length) {\r\n // todo fix bumpout rotation and remove this\r\n if (shape.isWithBumpout()) return;\r\n /////////////////////////////////////////\r\n shape.activateRotateAngle();\r\n }\r\n });\r\n};\r\n\r\nexport const handleTextClick = function () {\r\n};\r\n\r\nexport const handleResetClick = function () {\r\n EventManager.stealCursor(true);\r\n EventManager.resetCursor(self);\r\n};\r\n\r\n//todo sqft-react\r\nexport const handleMiteredClick = () => {\r\n EventManager.stealCursor(true);\r\n EventManager.resetCursor(self);\r\n\r\n // let cursor = new Cursor();\r\n // cursor.setCursorImage('./images/cursors/plus_blue.png');\r\n\r\n if (workspace.miteredController === null) {\r\n workspace.miteredController = new MiteredController();\r\n }\r\n workspace.miteredController.createCursor();\r\n workspace.miteredController.registerEvents();\r\n\r\n workspace.setAllowMiteredEdges(true);\r\n workspace.setAllowLineHighlight(true);\r\n\r\n //Bumpout.addBumpout_onClick();\r\n setTimeout(function () {\r\n workspace.setAllowLineHighlight(false)\r\n }, 1000)\r\n}\r\n\r\n//todo sqft-react\r\nexport const handleUnderlaymentClick = () => {\r\n EventManager.stealCursor(true);\r\n EventManager.resetCursor();\r\n\r\n // let cursor = new Cursor();\r\n // cursor.setCursorImage('./images/cursors/plus_blue.png');\r\n\r\n if (workspace.underlaymentController === null) {\r\n workspace.underlaymentController = new UnderlaymentController();\r\n }\r\n workspace.underlaymentController.createCursor();\r\n workspace.underlaymentController.registerEvents();\r\n\r\n workspace.setAllowMiteredEdges(true);\r\n workspace.setAllowLineHighlight(true);\r\n\r\n //Bumpout.addBumpout_onClick();\r\n setTimeout(function () {\r\n workspace.setAllowLineHighlight(false)\r\n }, 1000)\r\n}\r\n\r\nexport const handleFreeFormClick = function () {\r\n const state = store.getState();\r\n toolsControllers.shapeFreeForm.init();\r\n if (!state.sqftMenuState.changeValuePopups.find(valuePopup => valuePopup.id === FREE_FORM_THICKNESS_POPUP_ID)) {\r\n toolsControllers.shapeFreeForm.addThicknessPopup();\r\n }\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ENTER_KEY = 13;\r\nconst rgx = /^[0-9]*\\.?[0-9]*$/;\r\n\r\nexport default class TextInput extends React.Component {\r\n\r\n inputElement = React.createRef();\r\n\r\n state = {\r\n value: this.props.value,\r\n editing: false,\r\n numberInput: false\r\n };\r\n\r\n static propTypes = {\r\n onChange: PropTypes.func.isRequired,\r\n onRealChange: PropTypes.func,\r\n onBlur: PropTypes.func,\r\n className: PropTypes.string,\r\n numberInput: PropTypes.bool,\r\n id: PropTypes.string,\r\n autoComplete: PropTypes.string,\r\n maxValue: PropTypes.number,\r\n usePropsValue: PropTypes.bool,\r\n };\r\n\r\n onChange = (event) => {\r\n let value = event.target.value;\r\n\r\n if (!value.match(rgx) && this.props.numberInput) {\r\n return false;\r\n }\r\n if (this.props.numberInput && this.props.maxValue && (this.getUpdatedValue(value) >= this.props.maxValue)) {\r\n value = this.props.maxValue;\r\n }\r\n this.setState({\r\n value\r\n });\r\n if (this.props.onRealChange) {\r\n this.props.onRealChange(value);\r\n }\r\n };\r\n\r\n onBlur = (event) => {\r\n let value = event.target.value;\r\n this.finishEditing(value);\r\n if (this.props.onBlur) {\r\n this.props.onBlur(value);\r\n }\r\n };\r\n\r\n getUpdatedValue = (value) => {\r\n if (!this.props.numberInput) {\r\n return value\r\n }\r\n if (value.indexOf('.') === 0) {\r\n value = +(\"0\"+value); // dot on the beginning\r\n }\r\n if (value.toString().indexOf(\".\") === (value.toString().length - 1)) {\r\n value = value.substring(0, value.length - 1); // dot on the end\r\n }\r\n if (this.props.maxValue && (+value > this.props.maxValue)) {\r\n value = this.props.maxValue;\r\n }\r\n return +value || 0\r\n }\r\n\r\n finishEditing = (value) => {\r\n value = this.getUpdatedValue(value);\r\n this.setState({\r\n editing: false\r\n }, () => {\r\n this.props.onChange(value);\r\n })\r\n };\r\n\r\n onFocus = () => {\r\n let value = this.props.numberInput && this.props.currencySing\r\n ? this.props.value.replace(this.props.currencySing,\"\").replace(\"%\",\"\").replace(\",\",\"\")\r\n : this.props.value;\r\n value = (value === \"Included\" ? \"\" : value);\r\n this.setState({\r\n editing: true,\r\n value\r\n })\r\n };\r\n\r\n handleKeyDown = e => {\r\n if (e.keyCode === ENTER_KEY) {\r\n // this.finishEditing(this.state.value);\r\n e.target.blur();\r\n }\r\n };\r\n\r\n render() {\r\n return \r\n }\r\n}\r\n","import React, {Fragment, useEffect, useRef, useState} from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n// import {FormattedMessage} from \"react-intl\";\r\n\r\nimport Button from \"@mui/material/Button\";\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\n\r\nimport {useOutsideClick} from \"../../../misc/helperHooks\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nconst LookDropdown = (props) => {\r\n\r\n const {selectItems, selectedItem, selectItemClick, selectLabel, maxItems, errorsObject, changeErrorsObject, getValidationErrors,\r\n inputsValidated, property, size, textOnly} = props;\r\n const [opened, setOpened] = useState(false);\r\n const selectElement = useRef(null);\r\n\r\n useOutsideClick(selectElement, () => {\r\n setOpened(false);\r\n });\r\n\r\n const handleSelectItemClick = (selectItem, selectItemIndex) => {\r\n selectItemClick(selectItem, selectItemIndex);\r\n setOpened(false);\r\n checkForError();\r\n };\r\n\r\n const checkForError = () => {\r\n if (errorsObject && getValidationErrors && changeErrorsObject) {\r\n const errors = getValidationErrors(property, selectedItem.value);\r\n changeErrorsObject({\r\n [property]: errors\r\n })\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (!inputsValidated) {\r\n checkForError();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [inputsValidated]);\r\n\r\n const selectItemHeight = size || 36;\r\n const styles = {\r\n height: opened\r\n ? maxItems && (selectItems.length > maxItems)\r\n ? (maxItems * selectItemHeight) + \"px\"\r\n : (selectItems.length * selectItemHeight) + \"px\"\r\n : 0\r\n }\r\n\r\n const errorsExist = errorsObject && Array.isArray(errorsObject[property]) && !!errorsObject[property].length;\r\n\r\n return (\r\n
    \r\n {textOnly ? (\r\n
    \r\n \r\n {selectedItem && selectedItem.preText ? {selectedItem.preText} : null}\r\n {selectLabel ? {selectLabel} : null}\r\n {selectedItem ? selectedItem.text : \"-\"}\r\n \r\n
    \r\n ) : (\r\n \r\n )}\r\n {textOnly ? null : (\r\n
    \r\n
      \r\n {selectItems.map((selectItem, selectItemIndex) => {\r\n const isSelected = selectItem.value === selectedItem.value;\r\n return (\r\n
    • \r\n \r\n
    • \r\n )\r\n })}\r\n
    \r\n
    \r\n )}\r\n {errorsExist ? (\r\n
    \r\n \r\n
    \r\n ) : \"\"}\r\n
    \r\n )\r\n};\r\n\r\nLookDropdown.propTypes = {\r\n selectItems: PropTypes.arrayOf(PropTypes.shape({\r\n text: PropTypes.string.isRequired, // intlKey\r\n value: PropTypes.any.isRequired,\r\n preText: PropTypes.string,\r\n })).isRequired,\r\n selectItemClick: PropTypes.func.isRequired,\r\n selectedItem: PropTypes.object,\r\n selectLabel: PropTypes.string,\r\n className: PropTypes.string,\r\n maxItems: PropTypes.number,\r\n size: PropTypes.number,\r\n textOnly: PropTypes.bool,\r\n // validation below\r\n property: PropTypes.string,\r\n inputsValidated: PropTypes.bool,\r\n errorsObject: PropTypes.object, // userInfoErrorsLike\r\n changeErrorsObject: PropTypes.func,\r\n getValidationErrors: PropTypes.func,\r\n};\r\n\r\nexport default LookDropdown\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {featureInterface} from \"../../../../../interfaces/featureInterface\";\r\n\r\nconst LookFeatureSku = (props) => {\r\n\r\n const {lookFeature, fabricatorSettings, isList} = props;\r\n\r\n if (!lookFeature.dbFeature.sku || fabricatorSettings.hideSku) {\r\n return null\r\n }\r\n\r\n if (isList) {\r\n return (\r\n \r\n {lookFeature.dbFeature.sku}\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n {lookFeature.dbFeature.sku}\r\n \r\n )\r\n};\r\n\r\nLookFeatureSku.propTypes = {\r\n lookFeature: PropTypes.shape(featureInterface),\r\n isList: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {settings} = store.fabricatorState;\r\n return {\r\n fabricatorSettings: settings,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(LookFeatureSku)\r\n","import {connect} from \"react-redux\";\r\n\r\nimport {postMessageToParent} from \"../lookMessaging\";\r\nimport {GROHE_POST_MESSAGES_ACTIONS} from \"../iframeIntegration\";\r\nimport {getLookId, getPostCartItemsList} from \"../lookNavigation/lookFunctions2\";\r\nimport {setIframeIntegrationRequest} from \"../../../actions/iframeIntegrationFunctions\";\r\nimport {saveQuote} from \"../../../api/server-api\";\r\nimport {setAmazonImageUrl} from \"../../../actions/serverFunctions\";\r\nimport {getTempIdForPostMessage, postSaveVisualizerImage} from \"../../../api/look-api\";\r\nimport {getQuotePriceWithTaxes, getTotalPrice, isIframe} from \"../../../misc/helpers\";\r\n// import {getCurrentLayout} from \"../../appLayout\";\r\n// import Config from \"../../../config\";\r\nimport {LOOK_OVERLAYS} from \"../core/constants\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../config\";\r\nimport {setLookOverlayOpened} from \"../../../actions/lookFunctions\";\r\nimport {setExisingTempId} from \"../../../actions/groheFunctions\";\r\nimport {renderErrorPopup} from \"../../../api/api-popups\";\r\nimport {showQuoteSavedNotification} from \"../../ui/successNotification\";\r\nimport Analytics from \"../../../analytics\";\r\nimport {getAnalyticsEcommerceItem} from \"../../../analyticsEcommerceParams\";\r\nimport {updateCurrentQuote} from \"../../../misc/quotesFunctions\";\r\n\r\nconst WithAddToCartPostMessage = (props) => {\r\n\r\n const {cartItems, jobId, children, activePreset, bvPresets, setIframeIntegrationRequest, isPhoneNumberValidated,\r\n activeQuoteIndex, setAmazonImageUrl, setLookOverlayOpened, exisingTempId, setExisingTempId, userIsLoggedIn,\r\n fabricatorData} = props;\r\n const fabricatorSettings = fabricatorData.settings;\r\n\r\n const isLixil = isIframe() && fabricatorData.isLixil;\r\n\r\n const withoutCheckout = !isLixil && !fabricatorSettings.checkout;\r\n if (withoutCheckout && IS_PRODUCT_JOURNEY) { // we keep this button on the look list page\r\n return null\r\n }\r\n\r\n const addToCartPostMessage = async (sendFeatures= null) => {\r\n\r\n // const layout = getCurrentLayout();\r\n // await layout.updateLocalStorage();\r\n\r\n if (!isLixil || !fabricatorSettings.checkout) {\r\n if (!isPhoneNumberValidated) {\r\n setLookOverlayOpened(LOOK_OVERLAYS.leadCapture);\r\n return\r\n }\r\n if (withoutCheckout) {\r\n // we should just save the quote, everything is correct below\r\n }\r\n if (fabricatorSettings.checkout && IS_PRODUCT_JOURNEY) { // this should never execute, but let it be\r\n return false\r\n }\r\n setLookOverlayOpened(LOOK_OVERLAYS.loadingCart);\r\n return saveQuote({\r\n submit: true,\r\n showReceipt: false\r\n })\r\n .then((responseData) => {\r\n document.kvConfig.jobId = responseData.jobId;\r\n if (responseData.imageUrl) {\r\n setAmazonImageUrl(responseData.imageUrl)\r\n }\r\n setLookOverlayOpened(\"\");\r\n showQuoteSavedNotification(\r\n fabricatorSettings.checkout ? \"successNotification.titleQuoteCreated\" : \"successNotification.titleQuoteSaved\"\r\n );\r\n })\r\n .catch((error) => {\r\n renderErrorPopup(\"Server \"+new Error(error));\r\n setLookOverlayOpened(\"\");\r\n })\r\n }\r\n\r\n const totalPrice = getTotalPrice(null, false, cartItems);\r\n\r\n Analytics.sendEcommerceEvent(\"add_to_cart\", {\r\n currency: fabricatorSettings.currency,\r\n value: getQuotePriceWithTaxes(totalPrice),\r\n items: cartItems.map((cartItem, cartItemIndex) => {\r\n return getAnalyticsEcommerceItem(cartItem.cartFeature, cartItem.quantity, cartItemIndex)\r\n })\r\n });\r\n\r\n setLookOverlayOpened(LOOK_OVERLAYS.loadingCart);\r\n\r\n let lookImage = \"\";\r\n\r\n if (!userIsLoggedIn && !IS_PRODUCT_JOURNEY) {\r\n const updatedQuotes = await updateCurrentQuote();\r\n lookImage = await postSaveVisualizerImage({\r\n base64Image: updatedQuotes[activeQuoteIndex].bvImage\r\n });\r\n }\r\n\r\n // const useRedirect = !IS_PRODUCT_JOURNEY\r\n // || (Array.isArray(sendFeatures) && sendFeatures.length > 1 && !sendFeatures.some(cartItem => featureIsBundle(cartItem.cartFeature)))\r\n\r\n let lookId = getLookId(activePreset, bvPresets);\r\n\r\n let postData = {\r\n \"EventType\": GROHE_POST_MESSAGES_ACTIONS.addToCart,\r\n \"LookImage\": lookImage ? lookImage : \"No image created\",\r\n \"LookId\": lookId + \"\",\r\n \"LookSkus\": Array.isArray(sendFeatures)\r\n ? getPostCartItemsList(sendFeatures, true)\r\n : getPostCartItemsList(cartItems, true),\r\n \"UseRedirect\": \"\" + !IS_PRODUCT_JOURNEY,\r\n }\r\n\r\n if(jobId) {\r\n postData[\"VisualizerId\"] = jobId + \"\"\r\n }\r\n\r\n if (!isIframe()) {\r\n console.log(\"Not an iframe, can't post cart data:\", postData);\r\n }\r\n\r\n setIframeIntegrationRequest(postData);\r\n if (userIsLoggedIn) {\r\n saveQuote({\r\n submit: true,\r\n })\r\n .then((responseData) => {\r\n document.kvConfig.jobId = responseData.jobId;\r\n if(responseData.jobId) {\r\n postData[\"VisualizerId\"] = responseData.jobId + \"\";\r\n }\r\n postData[\"LookImage\"] = responseData.imageUrl || lookImage || \"No image created\";\r\n if (responseData.imageUrl) {\r\n setAmazonImageUrl(responseData.imageUrl)\r\n }\r\n window.postMessageIsExecuting = true;\r\n postMessageToParent(postData);\r\n })\r\n } else {\r\n postData[\"tempID\"] = await getTempIdForPostMessage(\"\", exisingTempId);\r\n if (IS_PRODUCT_JOURNEY) {\r\n setExisingTempId(postData[\"tempID\"]);\r\n }\r\n postMessageToParent(postData);\r\n }\r\n }\r\n\r\n return children(addToCartPostMessage)\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {cartItems} = store.cartState;\r\n const {activePreset, bvPresets} = store.bathroomVisualizerState;\r\n const {jobId} = store.serverState;\r\n const {isPhoneNumberValidated, userIsLoggedIn} = store.userState;\r\n const {activeQuoteIndex} = store.quotesState;\r\n const {exisingTempId} = store.groheState;\r\n const fabricatorData = store.fabricatorState;\r\n\r\n return {\r\n cartItems,\r\n activePreset,\r\n bvPresets,\r\n jobId,\r\n isPhoneNumberValidated,\r\n userIsLoggedIn,\r\n // quotes,\r\n activeQuoteIndex,\r\n exisingTempId,\r\n fabricatorData,\r\n }\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setIframeIntegrationRequest,\r\n setAmazonImageUrl,\r\n setLookOverlayOpened,\r\n setExisingTempId,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(WithAddToCartPostMessage)\r\n","import React, {useMemo, useRef} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport AddIcon from '@mui/icons-material/Add';\r\nimport IconButton from \"@mui/material/IconButton\";\r\n\r\nimport FeatureName from \"../../../../visComponents/featureName\";\r\nimport {featureInterface} from \"../../../../../interfaces/featureInterface\";\r\nimport LookFeaturePrice from \"./lookFeaturePrice\";\r\nimport FeatureThumbnail from \"../../../../visComponents/featureThumbnail\";\r\n// import LookListFeatureActions from \"./lookListFeatureActions\";\r\nimport {\r\n setLookActiveCategory,\r\n setLookActiveFeature, setLookAllWallsTutorial,\r\n setLookCompatabilityAlert,\r\n setLookDemoPointsClicked,\r\n setLookOverlayOpened,\r\n // setLookAllWallsOpened\r\n} from \"../../../../../actions/lookFunctions\";\r\nimport Config from \"../../../../../config\";\r\nimport {getCommonCoords, getFeatureCoords, getLayerCenter, navFeatureCLick} from \"../../lookFunctions\";\r\nimport LookListFeatureCheckmark from \"./lookListFeatureCheckmark\";\r\nimport {addToCart, setCanvasScale, updateCanvasCount} from \"../../../../../actions/actionFunctions\";\r\nimport LookCanvasContext from \"../../../lookCanvasContext\";\r\nimport {getCurrentLayout} from \"../../../../appLayout\";\r\nimport {LOOK_WALLS_ONLY} from \"../../../core/constants\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\nimport {getCartItemObject, getFeatureIsLocked} from \"../../../../../misc/helpers\";\r\nimport {\r\n enableRelatedFeature,\r\n getFeatureIsActive,\r\n getFeatureUrl,\r\n hideFeatureSection\r\n} from \"../../lookFunctions2\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS, PRODUCT_JOURNEY_ANALYTIC_EVENTS} from \"../../../../../analytics\";\r\nimport WithClickCount from \"../../../hocs/withClickCount\";\r\nimport LookListActiveFeatureMobileButton from \"./lookListActiveFeatureMobileButton\";\r\nimport LookAllWallsRadioButton from \"../lookAllWallsRadioButton\";\r\nimport {\r\n checkForCompatabilityAlert,\r\n clickOnSimilarFeatures,\r\n getApplyToLogic,\r\n getShowMatchRadio\r\n} from \"../../lookNavigationFunctions\";\r\nimport LookFeatureItemLocked from \"./lookFeatureItemLocked\";\r\nimport {getAnalyticsEcommerceItem} from \"../../../../../analyticsEcommerceParams\";\r\nimport {shouldZoomPartId} from \"../../../hocs/withZoomToFeature\";\r\nimport LookListFeatureName from \"./lookListFeatureName\";\r\nimport {featureCanChangeShowerSize, searchForSameNameWallsBeforeFeatureApply} from \"../../../bathroomFunctions\";\r\n\r\n\r\n\r\nconst LookListFeature = (props) => {\r\n\r\n const {style, lookFeature, lookExpanded, lookViewType, lookActiveFeature, setLookActiveFeature, history, position,\r\n featureGroup, updateCanvasCount, lookActiveCategory, isMobile, isPhoneNumberValidated, canvasCount,\r\n addToCart, qtActiveCategory, setCanvasScale, canvasScale, navItems, updateLookCartItem,\r\n setLookDemoPointsClicked, lookDemoPointsClicked, viewType, fromDesignRecommended, setLookAllWallsTutorial,\r\n setLookCompatabilityAlert, fabricatorData, lookCompatabilityAlert, lookLockedTutorial, lookAllWallsTutorial,\r\n // setLookAllWallsOpened, lookAllWallsOpened,\r\n isAllWallsTutorialItem,\r\n } = props;\r\n\r\n const featureElement = useRef();\r\n\r\n const noFeatureSection = useMemo(() => {\r\n return hideFeatureSection(true, lookFeature.partId, lookFeature, lookCompatabilityAlert)\r\n }, [lookFeature, lookCompatabilityAlert]);\r\n\r\n const fabricatorSettings = fabricatorData.settings;\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const showPriceLocked = useMemo(() => getFeatureIsLocked(lookFeature), [lookFeature, isPhoneNumberValidated]);\r\n const showPrice = fabricatorSettings.showPricing && !fabricatorData.hideCheckoutBreakdownCost\r\n && !showPriceLocked && !fabricatorData.hidePricesFromUser && !noFeatureSection;\r\n const featureIsLocked = showPriceLocked;\r\n\r\n // const [canRender, setCanRender] = useState(false);\r\n const isEmpty = (!lookFeature && position) || (featureGroup && featureGroup.disabled);\r\n const currentType = viewType || lookViewType;\r\n\r\n // useEffect(() => {\r\n // if (lookExpanded) {\r\n // setTimeout(() => { // preventing thumbnail jumping\r\n // setCanRender(true)\r\n // }, 200)\r\n // } else {\r\n // setCanRender(false)\r\n // }\r\n // }, [lookExpanded])\r\n\r\n const showMatchRadio = useMemo(() => getShowMatchRadio(lookFeature), [lookFeature]);\r\n\r\n const applyFeature = async (zoomFeature, imageCanvas, forceClick = false) => {\r\n const layout = getCurrentLayout();\r\n const parent = zoomFeature.getParent();\r\n Analytics.sendEcommerceEvent(\"select_item\", {\r\n item_list_id: zoomFeature.partId,\r\n item_list_name: parent.dbName || parent.partName || \"\",\r\n items: [getAnalyticsEcommerceItem(zoomFeature, 1)],\r\n });\r\n\r\n if (!lookActiveFeature) {\r\n parent.featureBeforeChange = zoomFeature;\r\n }\r\n const positionInList = navItems ? navItems.findIndex(navItem => navItem.part.dbFeature.id === lookFeature.dbFeature.id) : null;\r\n if (!IS_PRODUCT_JOURNEY && (!isMobile || featureIsLocked)) {\r\n setLookActiveFeature(zoomFeature, positionInList);\r\n }\r\n if ((layout.isNewLayout || (layout.visualizerType === \"bvScene\")) && featureCanChangeShowerSize(zoomFeature)) {\r\n await searchForSameNameWallsBeforeFeatureApply(zoomFeature);\r\n }\r\n\r\n // setLookActiveCategory(zoomFeature.partId);\r\n if (showMatchRadio) { // before nav feature click\r\n const applyToLogic = getApplyToLogic(lookFeature);\r\n // const parent = zoomFeature.getParent();\r\n // setActiveFeaturesBeforeAllWalls([], parent); // we don't need it here, as we have remembering logic below\r\n if (applyToLogic && Array.isArray(applyToLogic.currentApplyToArray) && applyToLogic.currentApplyToArray.length) {\r\n await clickOnSimilarFeatures(zoomFeature, applyToLogic, true);\r\n // if (!lookAllWallsOpened) {\r\n // setLookAllWallsOpened(true);\r\n // }\r\n }\r\n }\r\n navFeatureCLick(zoomFeature, true, forceClick);\r\n enableRelatedFeature(zoomFeature, addToCart, qtActiveCategory);\r\n // const parent = zoomFeature.getParent();\r\n // if (parent.disabled) {\r\n // parent.disabled = false;\r\n // parent.disabledClick();\r\n // }\r\n if (updateLookCartItem) {\r\n updateLookCartItem(zoomFeature) // removed since we have select button on look journey\r\n }\r\n if (isMobile) {\r\n if (IS_PRODUCT_JOURNEY || featureIsLocked) {\r\n // const closeOnly = zoomFeature && !layout.partIdExistInQtCategory(zoomFeature.partId) && !showMatchRadio;\r\n // const closeOnly = zoomFeature && !layout.partIdExistInQtCategory(zoomFeature.partId);\r\n // if (closeOnly) {\r\n // history.push(getFeatureUrl(zoomFeature, true))\r\n // } else {\r\n // setLookActiveCategory(\"\");\r\n // history.push(getFeatureUrl(zoomFeature)) // always go to feature screen on mobile\r\n // }\r\n history.push(getFeatureUrl(zoomFeature, true));\r\n }\r\n } else {\r\n history.push(getFeatureUrl(zoomFeature, !!lookActiveCategory));\r\n }\r\n // here we can update the navigation list, but I removed it since it is sorting features and confusing customers\r\n // if (lookFeature.getColorName(filterGroups) !== lookActiveFeature.getColorName(filterGroups)) {\r\n // updateNavigationCount();\r\n // }\r\n updateCanvasCount();\r\n if (imageCanvas && imageCanvas.current && imageCanvas.current.pinchZoom && !LOOK_WALLS_ONLY.includes(zoomFeature.partId)\r\n && shouldZoomPartId(zoomFeature.partId, isMobile) && (canvasScale === 1)) {\r\n const commonCoords = getFeatureCoords(zoomFeature) || getCommonCoords(featureGroup || zoomFeature.getParent(), zoomFeature, imageCanvas.current.canvas);\r\n const center = commonCoords && Object.keys(commonCoords).length\r\n ? getLayerCenter(commonCoords, imageCanvas.current.canvas, isMobile)\r\n : null;\r\n if (center) {\r\n imageCanvas.current.pinchZoom.zoomToCenter(center, 0, false, layout.partIdExistInQtCategory(zoomFeature.partId));\r\n setCanvasScale(imageCanvas.current.pinchZoom.options.tapZoomFactor)\r\n }\r\n }\r\n if (!lookDemoPointsClicked) {\r\n setLookDemoPointsClicked(true);\r\n }\r\n if (!lookAllWallsTutorial.finished && showMatchRadio && !featureIsLocked && !lookFeature.notAvailableInVisualizer\r\n && featureElement && featureElement.current && !fabricatorData.isEncore && (currentType === 1)) {\r\n setLookAllWallsTutorial({\r\n visible: true,\r\n // withGrid: navItems.length === 1,\r\n // positionInList,\r\n lookFeature,\r\n top: featureElement.current.getBoundingClientRect().top,\r\n left: featureElement.current.getBoundingClientRect().left,\r\n height: style.height,\r\n // firstLockedIndex,\r\n // firstUnlockedIndex,\r\n });\r\n }\r\n }\r\n\r\n const listFeatureClick = (event, imageCanvas, maxClickCountReached) => {\r\n if (event.target.closest(\".look-icon--delete\") || event.target.closest(\".gm-ios-checkbox\") || lookLockedTutorial.visible) {\r\n return\r\n }\r\n if (Config.isDevMode() && lookFeature) {\r\n console.log(\"lookFeature\", lookFeature, lookFeature.metaData);\r\n }\r\n if (lookExpanded) {\r\n document.querySelector(\".lm\").style.transition = \"none\";\r\n setTimeout(() => {\r\n document.querySelector(\".lm\").style.transition = \"all 0.3s ease\";\r\n }, 300)\r\n }\r\n let zoomFeature = lookFeature;\r\n if (isEmpty) {\r\n if (!lookFeature && position) {\r\n zoomFeature = featureGroup.getMatchingPositionFeature(position);\r\n if (zoomFeature) {\r\n featureGroup.layerPositions[position] = zoomFeature;\r\n }\r\n }\r\n if (zoomFeature) {\r\n featureGroup.activeFeature = zoomFeature;\r\n addToCart([getCartItemObject(zoomFeature, 1, qtActiveCategory)]);\r\n }\r\n console.log(\"zoomFeature featureGroup\", zoomFeature, featureGroup);\r\n }\r\n\r\n if (!zoomFeature || maxClickCountReached()) { // fabricator settings click lead capture\r\n return false;\r\n }\r\n\r\n const featureLabel = Analytics.getSkuForAnalytics(zoomFeature);\r\n const analyticsLabel = IS_PRODUCT_JOURNEY\r\n ? PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeaturesList + featureLabel\r\n : fromDesignRecommended\r\n ? LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeaturesListDesignRecommended + featureLabel\r\n : LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeaturesList + featureLabel;\r\n Analytics.sendClickEvent(analyticsLabel);\r\n\r\n if (featureIsLocked) {\r\n if (!IS_PRODUCT_JOURNEY) {\r\n const positionInList = navItems ? navItems.findIndex(navItem => navItem.part.dbFeature.id === lookFeature.dbFeature.id) : null;\r\n setLookActiveFeature(zoomFeature, positionInList);\r\n history.push(getFeatureUrl(zoomFeature, true));\r\n }\r\n return false\r\n }\r\n\r\n const compatabilityLogic = checkForCompatabilityAlert(zoomFeature);\r\n if (compatabilityLogic.length) {\r\n Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookShowCompatabilityAlert);\r\n setLookCompatabilityAlert({\r\n visible: true,\r\n compatabilityLogic,\r\n clickedFeature: zoomFeature,\r\n applyFunction: applyFeature.bind(this, zoomFeature, imageCanvas, true) // always apply features from this popup\r\n });\r\n return false\r\n }\r\n\r\n // if (featureIsLocked && !fabricatorSettings.clickLeadCapture && !(isIframe() && fabricatorData.isLixil)) {\r\n // window.clearTimeout(window.leadCaptureTimeoutId);\r\n // window.leadCaptureTimeoutId = setTimeout(() => {\r\n // setLookOverlayOpened(LOOK_OVERLAYS.leadCapture);\r\n // }, 500)\r\n // }\r\n\r\n applyFeature(zoomFeature, imageCanvas);\r\n }\r\n\r\n const isActive = useMemo(() => {\r\n return getFeatureIsActive(lookFeature, lookActiveFeature, lookActiveCategory, featureGroup)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [lookFeature, lookActiveFeature, lookActiveCategory, featureGroup, canvasCount]);\r\n\r\n // const showYellowNotice = !IS_PRODUCT_JOURNEY && (getStyleAlertNotMatchingFeatures(lookFeature).length && !lookActiveCategory)\r\n // || (lookFeature && lookRemovedCartItems.length && lookRemovedCartItems.some(cartItem => {\r\n // return (cartItem.partId === lookFeature.partId) && cartItem.cartFeature.metaData.layerPosition\r\n // && (cartItem.cartFeature.metaData.layerPosition === lookFeature.metaData.layerPosition)\r\n // }));\r\n\r\n const showAllWalls = isActive && showMatchRadio && !featureIsLocked;\r\n const viewTypeFour = +currentType === 4;\r\n const isLockedAndViewTypeFour = showPriceLocked && viewTypeFour;\r\n\r\n return (\r\n \r\n {(imageCanvas) => (\r\n \r\n {(maxClickCountReached) => (\r\n
  • listFeatureClick(event, imageCanvas, maxClickCountReached)}>\r\n {isEmpty ? (\r\n
    \r\n \r\n \r\n \r\n
    \r\n ) : (\r\n
    \r\n {isMobile && !IS_PRODUCT_JOURNEY\r\n ? lookAllWallsTutorial.visible ? null : \r\n : }\r\n \r\n {showAllWalls ? : null}\r\n
    \r\n )}\r\n {isEmpty ? (\r\n
    \r\n \r\n
    \r\n ) : (\r\n
    \r\n {viewTypeFour || ((currentType === 2) && showPriceLocked) ? null : (\r\n \r\n \r\n {/*{showYellowNotice ? : null}*/}\r\n \r\n )}\r\n {showPriceLocked ? \r\n : viewTypeFour\r\n ? null\r\n : }\r\n {!lookExpanded && !isLockedAndViewTypeFour ? (\r\n
    \r\n {!lookExpanded && !isLockedAndViewTypeFour && !noFeatureSection && !showPriceLocked ? (\r\n \r\n ) : null}\r\n {viewTypeFour && !featureIsLocked ? : null}\r\n
    \r\n ) : null}\r\n
    \r\n )}\r\n {/*{lookFeature && lookExpanded && canRender ? (*/}\r\n {/* */}\r\n {/*) : null}*/}\r\n {/*{lookFeature && lookExpanded && canRender ? (*/}\r\n {/* */}\r\n {/*) : null}*/}\r\n
  • \r\n )}\r\n
    \r\n )}\r\n
    \r\n )\r\n};\r\n\r\nLookListFeature.propTypes = {\r\n lookFeature: PropTypes.shape(featureInterface),\r\n fromDesignRecommended: PropTypes.bool,\r\n style: PropTypes.object,\r\n featureGroup: PropTypes.object,\r\n position: PropTypes.string,\r\n navItems: PropTypes.array,\r\n updateLookCartItem: PropTypes.func,\r\n viewType: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n isAllWallsTutorialItem: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookExpanded, lookViewType, lookActiveCategory, lookActiveFeature, lookDemoPointsClicked, lookCompatabilityAlert,\r\n // lookAllWallsOpened\r\n lookLockedTutorial, lookAllWallsTutorial} = store.lookState;\r\n const {isMobile} = store.serverState;\r\n const {canvasScale, canvasCount} = store.bathroomVisualizerState;\r\n const {qtActiveCategory} = store.qtState;\r\n // const {filterGroups} = store.filterState;\r\n // const {lookRemovedCartItems} = store.cartState;\r\n const fabricatorData = store.fabricatorState;\r\n const {isPhoneNumberValidated} = store.userState; // to update component when user is logged in\r\n\r\n return {\r\n lookActiveFeature,\r\n lookExpanded,\r\n lookViewType,\r\n lookActiveCategory,\r\n isMobile,\r\n qtActiveCategory,\r\n // lookRemovedCartItems,\r\n lookDemoPointsClicked,\r\n canvasScale,\r\n // filterGroups,\r\n // lookAllWallsOpened,\r\n fabricatorData,\r\n isPhoneNumberValidated,\r\n lookCompatabilityAlert,\r\n canvasCount,\r\n lookLockedTutorial,\r\n lookAllWallsTutorial,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookActiveFeature,\r\n updateCanvasCount,\r\n setLookActiveCategory,\r\n addToCart,\r\n setCanvasScale,\r\n setLookDemoPointsClicked,\r\n setLookCompatabilityAlert,\r\n setLookOverlayOpened,\r\n setLookAllWallsTutorial,\r\n // updateNavigationCount,\r\n // setLookAllWallsOpened,\r\n};\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(LookListFeature)\r\n)\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from \"react-redux\";\r\nimport {hashHistory} from \"react-router\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport {FormattedMessage} from \"react-intl\";\r\nimport sortBy from 'lodash/sortBy';\r\n\r\nimport {toggleUserPopup, changeStateToQuote} from \"../actions/actionFunctions\";\r\nimport {isIframe} from \"../misc/helpers\";\r\nimport ShoppingCartButton from \"./ui/shoppingCartButton\";\r\n// import UserLoginButton from \"./ui/userLoginButton\";\r\nimport InstallButton from \"./ui/installButton\";\r\nimport HomeButton from \"./ui/homeButton\";\r\nimport WebsiteButton from './ui/websiteButton';\r\nimport Analytics from './../analytics';\r\nimport {UserPopupTypes} from \"./visComponents/constants\";\r\nimport ShareButton from \"./common/shareButton\";\r\nimport ShoppingCartListSwitcher from \"./shoppingCart/shoppingCartListSwitcher\";\r\nimport LanguageSwitcher from \"./common/languageSwitcher\";\r\nimport AdvancedQuotingSwitcher from \"./shoppingCart/advancedQuoting/advancedQuotingSwitcher\";\r\nimport CloneQuoteButton from \"./popups/orderCompletePopup/cloneQuoteButton\";\r\nimport HideItemsSwitcher from \"./shoppingCart/hideItemsSwitcher\";\r\nimport FabricatorCostSwitcher from \"./shoppingCart/fabricatorCostSwitcher\";\r\nimport {getFabricatorLogo} from \"../misc/fabricatorHardcode\";\r\nimport {IS_SUPER_ADMIN} from \"../config\";\r\nimport SuperAdminLoginButton from \"./qkbPages/superAdmin/SuperAdminLoginButton\";\r\n// import PrintButton from \"./ui/printButton\";\r\n\r\nclass DesktopHeader extends Component {\r\n\r\n static propTypes = {\r\n uploadsAndNotes: PropTypes.bool,\r\n hideTopButtons: PropTypes.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n subNavVisible: false\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n\r\n };\r\n\r\n handleUserLoginClick = (userPopupType = UserPopupTypes.Unlock) => {\r\n const fabricatorSettings = this.props.fabricatorData.settings;\r\n\r\n if (this.props.userIsLoggedIn) {\r\n if (fabricatorSettings.twoFA) {\r\n if (!this.props.isPhoneNumberValidated) {\r\n this.props.toggleUserPopup({\r\n userPopupOpened: true,\r\n userPopupType\r\n });\r\n } else {\r\n this.toggleMobileButton('userLogoutActive');\r\n }\r\n } else {\r\n this.toggleMobileButton('userLogoutActive');\r\n }\r\n } else {\r\n this.props.toggleUserPopup({\r\n userPopupOpened: true,\r\n userPopupType\r\n });\r\n }\r\n };\r\n\r\n toggleMobileButton = (activeFeature) => {\r\n this.setState({\r\n [activeFeature]: !this.state[activeFeature]\r\n })\r\n };\r\n\r\n toggleSubNav = () => {\r\n Analytics.sendClickEvent('toggle-sub-nav');\r\n this.setState({subNavVisible: !this.state.subNavVisible})\r\n };\r\n\r\n handleLogoClick = () => {\r\n Analytics.sendClickEvent('logo-click');\r\n if (window.location.hash !== \"#/\" && !window.location.href.includes(\"quote-design\")) {\r\n hashHistory.push('/quote-design');\r\n }\r\n };\r\n\r\n render() {\r\n const fabricatorSettings = this.props.fabricatorData.settings;\r\n\r\n const allowInstallations = fabricatorSettings.addLaborCustomer\r\n || (document.kvConfig.isBackend && fabricatorSettings.addLaborInstaller);\r\n const showInstallations = allowInstallations && this.props.instList.length\r\n && (!this.props.showUnlockCalculations || (this.props.unlockCalculationsStep >= 2)) // tutorial\r\n && this.props.instList.some((instGroup) => instGroup.services.some(service => !service.autoAddWithProduct));\r\n\r\n const logoStyles = this.props.fabricatorData.logoUrl ? {} : {\r\n maxWidth: \"500px\",\r\n width: \"100%\"\r\n };\r\n\r\n const initialFlowIsRunning = document.kvConfig.initialFlowEnabled && this.props.initialFlowStep !== 3;\r\n const hideLogo = this.props.fabricatorData.received && this.props.fabricatorData.isLowes && isIframe();\r\n const isShoppingCartPage = this.props.location.pathname === \"/shoppingcart\";\r\n\r\n return (\r\n
    \r\n
    \r\n {!this.props.hideTopButtons ? (\r\n
    \r\n {this.props.uploadsAndNotes ? (\r\n
    \r\n \r\n \r\n
    \r\n ) : null}\r\n \r\n \r\n \r\n {/**/}\r\n
    \r\n ) : null}\r\n {this.props.fabricatorData.received ? (\r\n
    \r\n {hideLogo ? null : \"logo\"}\r\n
    \r\n ) : null}\r\n {this.props.fabricatorData.received && !this.props.hideTopButtons ? (\r\n
    \r\n {fabricatorSettings.enableSharing ? : null }\r\n \r\n \r\n {this.props.mobileNav && this.props.mobileNav.length\r\n ? \r\n : initialFlowIsRunning\r\n ? null\r\n : \r\n }\r\n {IS_SUPER_ADMIN ? : null}\r\n {/*{(fabricatorSettings.leadCaptureOnQuote && !initialFlowIsRunning && !(document.kvConfig.isBackend && document.kvConfig.jobId && document.kvConfig.canSaveQuote)) ? : null}*/}\r\n {fabricatorSettings.showPricing && !initialFlowIsRunning ? : null}\r\n {showInstallations && isShoppingCartPage && !initialFlowIsRunning ? : null}\r\n {isShoppingCartPage && !initialFlowIsRunning ? : null}\r\n
    \r\n ) : null}\r\n
    \r\n
    \r\n
      \r\n {this.renderSubNav(this.props.mobileNav)}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n renderSubNav = (nav) => {\r\n var _nav = sortBy(nav, n => n.displayOrder);\r\n return _nav.map(n => (\r\n
  • \r\n {n.name}\r\n
  • \r\n ));\r\n }\r\n}\r\n\r\nconst DesktopHeaderWithRouter = withRouter(props => );\r\n\r\nconst mapStateToProps = (store) => {\r\n const {selectionState, cartState, instState} = store;\r\n return {\r\n selectionGroup: selectionState.selectionGroup,\r\n selectionFeatureInfo: selectionState.selectionFeatureInfo,\r\n selectionInfoQuantity: selectionState.selectionInfoQuantity,\r\n cartItems: cartState.cartItems,\r\n instList: instState.instList,\r\n mobileNav: store.navigationState.mobileNav,\r\n fabricatorData: store.fabricatorState,\r\n initialFlowStep: store.initialFlowState.initialFlowStep,\r\n showUnlockCalculations: store.unlockCalculationsState.showUnlockCalculations,\r\n unlockCalculationsStep: store.unlockCalculationsState.unlockCalculationsStep,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n toggleUserPopup,\r\n changeStateToQuote\r\n})(DesktopHeaderWithRouter);\r\n","import React from 'react';\r\nimport UserLoginButton from \"../ui/userLoginButton\";\r\nimport {loaderDisable, loaderEnable} from \"../ui/loaderView\";\r\nimport {saveQuote} from \"../../api/server-api\";\r\nimport {showCheckoutLayout} from \"../../actions/actionFunctions\";\r\nimport {getCurrentLayout} from \"../appLayout\";\r\nimport {showQuoteSavedNotification} from \"../ui/successNotification\";\r\nimport Analytics from '../../analytics';\r\n\r\nexport default class ShoppingCart extends React.Component {\r\n\r\n getRecentlyViewedItems = () => {\r\n const layout = getCurrentLayout();\r\n // console.log(\"layout.getActiveFeatures()\", layout.getActiveFeatures());\r\n const activeFeatures = layout.getActiveFeatures()\r\n .filter(feature => {\r\n if (!feature.cartFeature || !feature.cartFeature.dbFeature\r\n || (feature.cartFeature.partName && feature.cartFeature.partName.includes(\"laceholder\")) || feature.partId === \"shower_body\") {\r\n return false\r\n }\r\n if (feature.partId.includes(\"pony_wall\") && feature.cartFeature.getParent) {\r\n const showerParent = feature.cartFeature.getParent().getParent().layout.parts.Shower;\r\n if (showerParent.showerDimensions() !== \"Pony\") {\r\n return false\r\n }\r\n }\r\n const featureId = feature.cartFeature.dbFeature.id;\r\n return !feature.partId.includes(\"top_cabinet_module\") && this.props.cartItems.every((cartItem) => {\r\n return cartItem.cartFeature.dbFeature.id !== featureId\r\n })\r\n });\r\n const recentlyViewedItems = (Array.isArray(this.props.recentlyViewedItems) && this.props.recentlyViewedItems.length)\r\n ? this.props.recentlyViewedItems\r\n .filter(recentItem => {\r\n const recentItemId = recentItem.dbFeature.id;\r\n return activeFeatures.every(cartItem => cartItem.cartFeature.dbFeature.id !== recentItemId)\r\n && this.props.cartItems.every((cartItem) => cartItem.cartFeature.dbFeature.id !== recentItemId)\r\n })\r\n .map(recentItem => {\r\n return {\r\n selectionGroup: recentItem.getParent().getParent().partName,\r\n partId: recentItem.partId,\r\n quantity: 0,\r\n cartFeature: recentItem\r\n };\r\n })\r\n : [];\r\n return [...activeFeatures, ...recentlyViewedItems]\r\n };\r\n\r\n getFinalButton = () => {\r\n if (document.kvConfig.canSaveQuote !== false) { // if document.kvConfig.canSaveQuote is null it is ok, we are checking only for false\r\n let intlText = \"\";\r\n let onClick = () => {};\r\n const fabricatorSettings = this.props.fabricatorData.settings;\r\n if (fabricatorSettings.checkout) {\r\n if (fabricatorSettings.sureTax && !this.props.isPhoneNumberValidated) {\r\n return {\r\n intlText: \"quotingTool.featureInfo.priceLockedTitle\",\r\n onClick: () => this.handleCheckOut(\"updateTax\"),\r\n }\r\n }\r\n onClick = this.handleCheckOut;\r\n intlText = (fabricatorSettings.enableDocuSign || fabricatorSettings.hasPaymentGateway || document.kvConfig.showBackToDashboard)\r\n ? \"shoppingCart.checkoutButtonCheckoutNow\"\r\n : !fabricatorSettings.leadCaptureOnQuote // leadCaptureOnQuote is OFF\r\n ? \"shoppingCart.checkoutButtonBuyNow\"\r\n : !fabricatorSettings.twoFA // leadCaptureOnQuote is ON\r\n ? this.props.isPhoneNumberValidated || document.kvConfig.isBackend\r\n ? \"shoppingCart.checkoutButtonBuyNow\"\r\n : \"shoppingCart.checkoutButtonUnlockPrice\"\r\n : this.props.userIsLoggedIn || document.kvConfig.isBackend\r\n ? \"shoppingCart.checkoutButtonBuyNow\"\r\n : \"shoppingCart.checkoutButtonUnlockPrice\"\r\n } else if (fabricatorSettings.leadCaptureOnQuote) {\r\n intlText = \"shoppingCart.checkoutButtonEmailQuote\";\r\n onClick = this.handleSaveClick;\r\n } else {\r\n intlText = \"shoppingCart.checkoutButtonStartOver\";\r\n onClick = this.handleStartOverClick;\r\n }\r\n if (this.props.fabricatorData.isLakesideSurfaces) {\r\n intlText = \"buttons.submit\"\r\n }\r\n return {\r\n intlText,\r\n onClick,\r\n }\r\n }\r\n return null\r\n };\r\n\r\n handleCheckOut = async (assignButtonsToShow) => {\r\n\r\n if (document.kvConfig.isBackend && this.props.toggleShowAssignQuotePopup && !this.props.editToken) {\r\n this.props.toggleShowAssignQuotePopup(true, assignButtonsToShow); // assignButtonsToShow should be \"checkout\" and come only from the button group\r\n return;\r\n }\r\n\r\n const fabricatorSettings = this.props.fabricatorData.settings;\r\n Analytics.sendClickEvent(\"checkout-buy-now-button\");\r\n if (!UserLoginButton.handleLoginClick({...this.props, checkout: true}))\r\n return ;\r\n\r\n loaderEnable(\"loader.savingQuoteText\");\r\n\r\n saveQuote({\r\n submit: true,\r\n showContractSignOnError: true\r\n })\r\n .then((response) => {\r\n if (response) {\r\n /*let responseDataBase = response;\r\n if (response.data) {\r\n responseDataBase = response.data;\r\n }\r\n\r\n const responseData = typeof responseDataBase === 'object' ? responseDataBase : JSON.parse(responseDataBase);\r\n console.log('saveQuote response:', responseData);*/\r\n loaderDisable();\r\n }\r\n showQuoteSavedNotification();\r\n showCheckoutLayout(fabricatorSettings);\r\n }).catch((error) => {\r\n console.log('saveQuote error:', error);\r\n loaderDisable();\r\n })\r\n };\r\n\r\n}\r\n","import {getSelectedContracts} from \"./contractsFunctions\";\r\n\r\nexport const getFirstUnfilledCustomField = (\r\n contractsValues,\r\n contractsList,\r\n fabricatorData,\r\n receiptSignature = \"\",\r\n contractsContext\r\n) => {\r\n // need to find first un-filled custom field and change the document page to it\r\n if (fabricatorData && fabricatorData.receiptSettings && fabricatorData.receiptSettings.signIsRequired\r\n && contractsContext.showReceiptInContract && contractsContext.receiptPages && !receiptSignature) {\r\n return { page: contractsContext.receiptPages, fieldIndex: 0 }\r\n }\r\n let customFieldInfo = { page: -1, fieldIndex: -1 };\r\n const selectedContracts = getSelectedContracts(contractsList);\r\n for (const contract of selectedContracts) {\r\n let {fields, pagesFrom} = contract;\r\n if (!contractsValues[contract.id]) {\r\n contractsValues[contract.id] = {};\r\n }\r\n const fieldsNeeded = fields.filter(field => {\r\n return field.isEditable && field.isRequired && field.coords && field.coords.length && !field.isCheckBox // why checkboxes are not required? old support\r\n })\r\n for (let i = 0; i <= contract.pagesCount; i++) {\r\n if (customFieldInfo.page === -1) {\r\n fieldsNeeded.forEach(field => {\r\n if (customFieldInfo.page === -1) {\r\n const sortedFields = field.coords.sort((a, b) => {\r\n // return (a.fieldIndexOnPage > b.fieldIndexOnPage) ? 1 : -1 // no we need to sort by top because this is incorrect\r\n const top1 = a.pageRect.height - a.rectangle.ury;\r\n const top2 = b.pageRect.height - b.rectangle.ury;\r\n return top1 > top2 ? 1 : -1\r\n });\r\n sortedFields.forEach(coord => {\r\n if (customFieldInfo.page === -1 && (i === coord.page)\r\n && (!contractsValues[contract.id][coord.page]\r\n || !contractsValues[contract.id][coord.page][coord.fieldIndexOnPage]\r\n || !contractsValues[contract.id][coord.page][coord.fieldIndexOnPage].value)) {\r\n customFieldInfo = { page: pagesFrom + coord.page - 1, fieldIndex: coord.fieldIndexOnPage };\r\n }\r\n })\r\n }\r\n })\r\n }\r\n }\r\n }\r\n return customFieldInfo;\r\n}\r\n\r\nexport const getFieldValue = (pageIndex, fieldIndex, activeContract, contractsValues) => {\r\n if (contractsValues[activeContract.id]\r\n && contractsValues[activeContract.id][pageIndex]\r\n && contractsValues[activeContract.id][pageIndex][fieldIndex]) {\r\n return contractsValues[activeContract.id][pageIndex][fieldIndex].value\r\n }\r\n return \"\"\r\n};\r\n\r\nexport const getFieldCoords = (contractFields, selectedFieldIndex) => {\r\n let fieldsCoords = [];\r\n contractFields.forEach(field => {\r\n if (!field.isEditable) {\r\n return;\r\n }\r\n field.coords.forEach((coord) => {\r\n const { fieldIndexOnPage, isRequired } = coord;\r\n if (field.isCustom) {\r\n const isSelected = fieldIndexOnPage === selectedFieldIndex;\r\n if (!isSelected && isRequired) {\r\n fieldsCoords.push({ coords: fieldCoords, idx: fieldIndexOnPage });\r\n }\r\n }\r\n })\r\n })\r\n return fieldsCoords\r\n}\r\n\r\nexport const getAlreadyFilledSignatureField = (fieldName, contractsValues, contractsList) => {\r\n let signatureValue = \"\";\r\n const selectedContracts = getSelectedContracts(contractsList);\r\n const withoutRequiredSignatureName = getFieldNameWithoutRequired(fieldName);\r\n for (const contract of selectedContracts) {\r\n let {fields} = contract;\r\n fields.forEach(field => {\r\n if (signatureValue || !field.isEditable || !field.isSignature) {\r\n return;\r\n }\r\n field.coords.forEach((coord) => {\r\n if (signatureValue || !coord.fieldName) {\r\n return;\r\n }\r\n const compareName = getFieldNameWithoutRequired(coord.fieldName);\r\n if ((compareName !== withoutRequiredSignatureName) || (compareName === \"<$signature>\")) {\r\n // only signature1, signature2 should match\r\n return\r\n }\r\n signatureValue = getFieldValue(coord.page, coord.fieldIndexOnPage, contract, contractsValues);\r\n })\r\n })\r\n }\r\n return signatureValue;\r\n}\r\n\r\nexport const getFieldNameWithoutRequired = (fieldName = \"\") => {\r\n if (!fieldName || typeof fieldName !== \"string\") {\r\n return \"\"\r\n }\r\n return fieldName.replace(\"@\", \"\")\r\n}\r\n","import React from \"react\";\r\nimport {injectIntl} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\nimport {Grid} from \"react-virtualized\";\r\n\r\nimport LookListFeature from \"../lookListFeature/lookListFeature\";\r\nimport LookWizardSectionListFeature from \"../lookWizard/lookWizardSectionListFeature\";\r\nimport {wizardGroupInterface} from \"../../../../../interfaces/wizardItemInterface\";\r\nimport LookVirtualizedListLoadingItem from \"./lookVirtualizedListLoadingItem\";\r\n// import LoadingSpinner from \"../../ui/loadingSpinner\";\r\n\r\nexport const getLookRowHeight = (lookViewType) => {\r\n return lookViewType === 1\r\n ? 104\r\n : lookViewType === 4\r\n ? 128\r\n : lookViewType === 2\r\n ? 171\r\n : 340\r\n}\r\n\r\nconst LookVirtualizedList = (props) => {\r\n\r\n const {renderList, contentHeight, lookViewType, isMobile, updateLookCartItem, isWizard, wizardGroup, onScrollHandler,\r\n imageCanvas, maxClickCountReached, loadingCount} = props;\r\n\r\n if (!contentHeight || isNaN(contentHeight)) {\r\n return null\r\n }\r\n\r\n const width = isWizard ? 312 : 320;\r\n const columnWidth = lookViewType === 2\r\n ? width / 2\r\n : lookViewType === 4 ? width / 3 : width;\r\n const columnCount = lookViewType === 2\r\n ? 2\r\n : lookViewType === 4 ? 3 : 1;\r\n const rowCount = Math.ceil((loadingCount || renderList.length) / columnCount);\r\n\r\n const listSettings = {\r\n width,\r\n columnCount,\r\n columnWidth,\r\n rowCount,\r\n height: isMobile ? contentHeight - 16 : contentHeight - 116, // 52 header + 16 padding from bottom\r\n rowHeight: getLookRowHeight(lookViewType),\r\n overscanRowCount: 2,\r\n showScrollingPlaceholder: false,\r\n useDynamicRowHeight: false,\r\n }\r\n\r\n const cellRenderer = ({columnIndex, key, rowIndex, style}) => {\r\n if (loadingCount) {\r\n return \r\n }\r\n const navItem = renderList[(listSettings.columnCount * rowIndex) + columnIndex];\r\n if (!navItem) {\r\n return null\r\n }\r\n if (isWizard) {\r\n return \r\n }\r\n return \r\n }\r\n\r\n const noRowsRenderer = () =>
    No Features found
    ;\r\n\r\n return (\r\n listSettings.height\r\n ? \" virtualized-grid--with-scroll\"\r\n : \" virtualized-grid--without-scroll\")}\r\n width={listSettings.width}\r\n height={listSettings.height}\r\n overscanRowCount={listSettings.overscanRowCount}\r\n rowCount={listSettings.rowCount}\r\n columnCount={listSettings.columnCount}\r\n columnWidth={listSettings.columnWidth}\r\n rowHeight={listSettings.rowHeight}\r\n onScroll={onScrollHandler}\r\n cellRenderer={cellRenderer}\r\n noRowsRenderer={noRowsRenderer}\r\n />\r\n )\r\n};\r\n\r\nLookVirtualizedList.propTypes = {\r\n imageCanvas: PropTypes.object,\r\n maxClickCountReached: PropTypes.func,\r\n updateLookCartItem: PropTypes.func,\r\n renderList: PropTypes.array,\r\n contentHeight: PropTypes.number,\r\n lookViewType: PropTypes.number.isRequired,\r\n isMobile: PropTypes.bool,\r\n onScrollHandler: PropTypes.func,\r\n isWizard: PropTypes.bool,\r\n wizardGroup: PropTypes.shape(wizardGroupInterface),\r\n loadingCount: PropTypes.number,\r\n}\r\n\r\nexport default injectIntl(LookVirtualizedList)\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport TextField from \"@mui/material/TextField\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport RemoveIcon from \"@mui/icons-material/Remove\";\r\nimport AddIcon from '@mui/icons-material/Add';\r\n\r\nimport {setGroheActiveFeatureQuantity} from \"../../../../../actions/groheFunctions\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\nimport Analytics, {PRODUCT_JOURNEY_ANALYTIC_EVENTS} from \"../../../../../analytics\";\r\nimport {featureInterface} from \"../../../../../interfaces/featureInterface\";\r\nimport {getFeatureUnit} from \"../../../../../misc/helpers\";\r\nimport {pricingIsLocked} from \"../../../lookNavigation/lookNavigationFunctions\";\r\n\r\nconst GroheFeatureQuantity = (props) => {\r\n const {intl, isMobile, disabled, groheActiveFeatureQuantity, setGroheActiveFeatureQuantity, lookActiveFeature, feature,\r\n hideTitle, isWizard, fabricatorData} = props;\r\n const MAX = 99999;\r\n const MIN = isWizard ? 0 : 1;\r\n\r\n const allowDecimals = isWizard;\r\n\r\n const updateQuantity = (quan) => {\r\n setGroheActiveFeatureQuantity(quan);\r\n };\r\n\r\n const handleInputChange = (e, fromButton = \"\") => {\r\n let value = \"\" + e.target.value;\r\n\r\n if (value.includes(\".\")) {\r\n if (!allowDecimals) {\r\n return false\r\n }\r\n if (value.split(\".\")[1].length > 3) {\r\n value = +value.substring(0, value.length - 1); //round to 3 decimals\r\n }\r\n }\r\n\r\n const featureLabel = Analytics.getSkuForAnalytics(feature || lookActiveFeature);\r\n const analyticsAdjust = fromButton ? fromButton + \"-\" + value : \"input-\" + value;\r\n Analytics.sendClickEvent(`${PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeatureQuantityChange + featureLabel}-${analyticsAdjust}`);\r\n\r\n value = +value;\r\n\r\n if (value <= MIN) {\r\n value = MIN;\r\n } else if (value > MAX) {\r\n value = MAX;\r\n }\r\n\r\n updateQuantity(value);\r\n };\r\n\r\n const handleOnKeyDown = (event) => {\r\n if (event.key==='.' && !allowDecimals) {\r\n event.preventDefault();\r\n return false\r\n }\r\n };\r\n\r\n const {isLixil} = pricingIsLocked();\r\n\r\n return (\r\n
    \r\n
    \r\n {hideTitle ? null : (\r\n
    \r\n {isLixil\r\n ? \r\n : getFeatureUnit(feature || lookActiveFeature, intl, fabricatorData, groheActiveFeatureQuantity)}\r\n
    \r\n )}\r\n
    \r\n {\r\n handleInputChange({target: {value: groheActiveFeatureQuantity - 1}}, \"minus\")\r\n }}\r\n disabled={disabled}\r\n className={\"look-icon grohe-look__icon--small\"\r\n + (isMobile || !IS_PRODUCT_JOURNEY ? \" look-icon--tiny look-icon--semi\" : \" look-icon--small\")}>\r\n \r\n \r\n \r\n {\r\n handleInputChange({target: {value: groheActiveFeatureQuantity + 1}}, \"plus\")\r\n }}\r\n disabled={disabled}\r\n className={\"look-icon grohe-look__icon--small\"\r\n + (isMobile || !IS_PRODUCT_JOURNEY ? \" look-icon--tiny look-icon--semi\" : \" look-icon--small\")}>\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n};\r\n\r\nGroheFeatureQuantity.propTypes = {\r\n disabled: PropTypes.bool,\r\n hideTitle: PropTypes.bool,\r\n isWizard: PropTypes.bool,\r\n feature: PropTypes.shape(featureInterface)\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {isMobile} = store.serverState;\r\n const {groheActiveFeatureQuantity} = store.groheState;\r\n const {lookActiveFeature} = store.lookState;\r\n const fabricatorData = store.fabricatorState;\r\n\r\n return {\r\n isMobile,\r\n groheActiveFeatureQuantity,\r\n lookActiveFeature,\r\n fabricatorData,\r\n }\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setGroheActiveFeatureQuantity\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(GroheFeatureQuantity)\r\n)\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport Button from \"@mui/material/Button\";\r\nimport InfoIcon from \"@mui/icons-material/Info\";\r\n\r\nimport {setLookActiveCategory, setLookMoreInfoOpened, setLookOverlayOpened} from \"../../../../../actions/lookFunctions\";\r\nimport {LOOK_FEATURE_CONTENT, LOOK_OVERLAYS} from \"../../../core/constants\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS, PRODUCT_JOURNEY_ANALYTIC_EVENTS} from \"../../../../../analytics\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\nimport {getAvailableFeatureContent} from \"../../../lookNavigation/lookFunctions2\";\r\n\r\nconst GroheFeatureMoreInfoButton = (props) => {\r\n\r\n const {featureIsLocked, setLookMoreInfoOpened, moreInfoOpened, moreInfoContent, lookActiveCategory, lookActiveFeature,\r\n setLookOverlayOpened} = props;\r\n\r\n const moreInfoClick = () => {\r\n if (IS_PRODUCT_JOURNEY) {\r\n Analytics.sendClickEvent(moreInfoOpened\r\n ? PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeatureMoreInfoClose\r\n : PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeatureMoreInfoOpen\r\n );\r\n } else {\r\n Analytics.sendClickEvent(moreInfoOpened\r\n ? LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeatureMoreInfoClose\r\n : LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeatureMoreInfoOpen\r\n );\r\n }\r\n if (featureIsLocked) {\r\n setLookOverlayOpened(LOOK_OVERLAYS.leadCapture);\r\n return false\r\n }\r\n const moreInfoType = moreInfoOpened && (moreInfoContent === LOOK_FEATURE_CONTENT.info)\r\n ? \"\"\r\n : lookActiveCategory && !IS_PRODUCT_JOURNEY ? \"select\" : \"main\";\r\n //setLookActiveCategory(\"\");\r\n setLookMoreInfoOpened(moreInfoType, LOOK_FEATURE_CONTENT.info);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {moreInfoOpened, moreInfoContent} = store.lookState;\r\n const {lookActiveCategory, lookActiveFeature} = store.lookState;\r\n return {\r\n moreInfoOpened,\r\n moreInfoContent,\r\n lookActiveCategory,\r\n lookActiveFeature,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookActiveCategory,\r\n setLookMoreInfoOpened,\r\n setLookOverlayOpened,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(GroheFeatureMoreInfoButton)\r\n","import React from \"react\";\r\nimport {FormattedMessage} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport Button from \"@mui/material/Button\";\r\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\r\n\r\nconst GroheCartBackButton = (props) => {\r\n const {backButtonClick} = props;\r\n return (\r\n \r\n )\r\n};\r\n\r\nGroheCartBackButton.propTypes = {\r\n backButtonClick: PropTypes.func.isRequired\r\n}\r\n\r\nexport default GroheCartBackButton\r\n","'use strict';\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\r\n\r\nexports.showLoading = showLoading;\r\nexports.hideLoading = hideLoading;\r\nexports.resetLoading = resetLoading;\r\nexports.loadingBarReducer = loadingBarReducer;\r\n\r\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\r\n\r\nvar SHOW = exports.SHOW = 'loading-bar/SHOW';\r\nvar HIDE = exports.HIDE = 'loading-bar/HIDE';\r\nvar RESET = exports.RESET = 'loading-bar/RESET';\r\n\r\nvar DEFAULT_SCOPE = exports.DEFAULT_SCOPE = 'default';\r\n\r\nfunction showLoading() {\r\n var scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_SCOPE;\r\n\r\n return {\r\n type: SHOW,\r\n payload: {\r\n scope: scope\r\n }\r\n };\r\n}\r\n\r\nfunction hideLoading() {\r\n var scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_SCOPE;\r\n\r\n return {\r\n type: HIDE,\r\n payload: {\r\n scope: scope\r\n }\r\n };\r\n}\r\n\r\nfunction resetLoading() {\r\n var scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_SCOPE;\r\n\r\n return {\r\n type: RESET,\r\n payload: {\r\n scope: scope\r\n }\r\n };\r\n}\r\n\r\nfunction loadingBarReducer() {\r\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\r\n var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\r\n\r\n var _ref = action.payload || {},\r\n _ref$scope = _ref.scope,\r\n scope = _ref$scope === undefined ? DEFAULT_SCOPE : _ref$scope;\r\n\r\n switch (action.type) {\r\n case SHOW:\r\n return _extends({}, state, _defineProperty({}, scope, (state[scope] || 0) + 1));\r\n case HIDE:\r\n return _extends({}, state, _defineProperty({}, scope, Math.max(0, (state[scope] || 1) - 1)));\r\n case RESET:\r\n return _extends({}, state, _defineProperty({}, scope, 0));\r\n default:\r\n return state;\r\n }\r\n}","import {getFilterGroupValue, getFilterGroupValues} from \"../../../misc/utils\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport {getTotalPrice, toFixedFeatureCost, toFixedPrice} from \"../../../misc/helpers\";\r\nimport {isProd} from \"../../../misc/fabricatorHardcode\";\r\n\r\nexport const SIMILAR_FILTER_GROUP_NAME = \"Collection\";\r\n\r\n/**\r\n * @param cartItem {object}\r\n * @param filterGroups {array}\r\n * @returns {array} // [featureCollectionInterface] or null\r\n */\r\nexport const getFeaturesCollectionsList = (cartItem, filterGroups) => {\r\n\r\n if (!cartItem || !cartItem.cartFeature || !cartItem.partId.includes(\"countertop\") || isProd() || !filterGroups.length) {\r\n return null\r\n }\r\n\r\n const parent = cartItem.cartFeature.getParent ? cartItem.cartFeature.getParent() : null;\r\n if (!parent) {\r\n return null\r\n }\r\n\r\n const filterGroup = filterGroups.find(fGroup => fGroup.name === SIMILAR_FILTER_GROUP_NAME);\r\n if (!filterGroup) {\r\n return null\r\n }\r\n\r\n const cartFeatureFilters = getFilterGroupValues(cartItem.cartFeature, filterGroup) || [];\r\n\r\n let featuresCollectionsList = [];\r\n\r\n const layout = getCurrentLayout();\r\n const navFeatures = layout.designNavigationItems({part: parent}, {}, \"\", false, true);\r\n for (let i = 0; i < navFeatures.length; i++) {\r\n const navFeature = navFeatures[i];\r\n const featureFilters = getFilterGroupValues(navFeature.part, filterGroup);\r\n if (Array.isArray(featureFilters)) {\r\n featureFilters.forEach(filterValueId => {\r\n if (!cartFeatureFilters.some(cartFeatureFilter => cartFeatureFilter === filterValueId)) {\r\n let collectionObject = featuresCollectionsList.find(colObject => colObject.id === filterValueId);\r\n if (collectionObject) {\r\n collectionObject.features.push(navFeature.part)\r\n } else {\r\n collectionObject = {id: filterValueId, features: [navFeature.part]};\r\n featuresCollectionsList.push(collectionObject);\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n featuresCollectionsList = featuresCollectionsList.sort((a, b) => a.id - b.id); // sort by collection id\r\n console.log(\"featuresCollectionsList\", featuresCollectionsList);\r\n\r\n return featuresCollectionsList\r\n\r\n}\r\n\r\n/**\r\n * @param cartItem {cartItemInterface}\r\n * @param addedCountertops {[cartItemInterface]}\r\n * @param featureCollection {object}\r\n * @param totalCountertopsQuantity {number}\r\n * @param quoteIndex {number}\r\n * @param filterGroups {array}\r\n * @returns {similarItemObjectInterface} // or null\r\n */\r\nexport const getSimilarItemInfoObject = (\r\n cartItem,\r\n addedCountertops,\r\n featureCollection,\r\n totalCountertopsQuantity,\r\n quoteIndex,\r\n filterGroups,\r\n) => {\r\n let feature = null;\r\n const fromCartItemName = cartItem.cartFeature.getSplittedFeatureName();\r\n // console.log(\"fromCartItemName\", fromCartItemName);\r\n if (fromCartItemName) {\r\n // if (\r\n // (fromCartItemName.includes(\"2cm\") && addedCountertops.some(cItem => cItem.cartFeature && cItem.cartFeature.getSplittedFeatureName().includes(\"3cm\")))\r\n // || (fromCartItemName.includes(\"3cm\") && addedCountertops.some(cItem => cItem.cartFeature && cItem.cartFeature.getSplittedFeatureName().includes(\"2cm\")))\r\n // ) {\r\n // feature = featureCollection.features.find(currentFeature => [\"2cm\", \"3cm\"].some(inName => currentFeature.getSplittedFeatureName().includes(inName)))\r\n // } else\r\n if (fromCartItemName.includes(\"2cm\")) {\r\n feature = featureCollection.features.find(currentFeature => currentFeature.getSplittedFeatureName().includes(\"2cm\"))\r\n } else if (fromCartItemName.includes(\"3cm\")) {\r\n feature = featureCollection.features.find(currentFeature => currentFeature.getSplittedFeatureName().includes(\"3cm\"))\r\n }\r\n }\r\n if (!feature) {\r\n feature = featureCollection.features[0]; // take first collection feature\r\n }\r\n\r\n const totalPrice = +toFixedFeatureCost(feature, totalCountertopsQuantity, \"\");\r\n\r\n const countertopTotalPrice = +toFixedFeatureCost(cartItem.cartFeature, totalCountertopsQuantity, \"\");\r\n\r\n let subTotalPrice = getTotalPrice(quoteIndex, false).materialPrice;\r\n subTotalPrice = toFixedPrice(subTotalPrice - countertopTotalPrice + totalPrice);\r\n\r\n const filterGroup = filterGroups.find(fGroup => fGroup.name === SIMILAR_FILTER_GROUP_NAME);\r\n const filterGroupValue = getFilterGroupValue(featureCollection.id, filterGroup);\r\n if (!filterGroupValue || !filterGroupValue.displayText) {\r\n return null\r\n }\r\n const filterValueName = filterGroupValue.displayText.replace(\" \" + SIMILAR_FILTER_GROUP_NAME, \"\");\r\n\r\n return {\r\n filterValueName,\r\n feature,\r\n subTotalPrice,\r\n }\r\n}\r\n","import React, {useEffect, useState} from 'react';\r\nimport axios from \"axios\";\r\nimport {connect} from \"react-redux\";\r\nimport {IntlProvider} from 'react-intl';\r\n// import en from \"react-intl/locale-data/en\";\r\nimport Papa from \"papaparse\";\r\nimport Config, {AVAILABLE_LANGUAGES, IS_LIXIL_SERVERS} from \"./config\";\r\nimport {baseAssetsPath} from \"./bvcomponents/assets\";\r\nimport {\r\n hardCodeIsAmericanImport, hardCodeIsAmericanStandard,\r\n hardCodeIsCaesarStone,\r\n hardCodeIsEncore,\r\n hardCodeIsGraniteTransformationUK,\r\n hardCodeIsLowes, hardCodeIsMcDermott, hardCodeIsModerno\r\n} from \"./misc/fabricatorHardcode\";\r\nimport {usePrevious} from \"./misc/helperHooks\";\r\n// addLocaleData([...en]);\r\n\r\nexport let TRANSLATES = {};\r\n\r\nexport const fakeIntl = {\r\n formatMessage: ({id}) => {\r\n return TRANSLATES[id]\r\n }\r\n}\r\n\r\nexport const isEnglish = (locale) => {\r\n return (locale !== \"fr-FR\") && (locale !== \"pl-PL\") && (locale !== \"es-ES\")\r\n}\r\n\r\nconst getCustomJson = async (fileName = \"\") => {\r\n try {\r\n const customJsonResponse = await axios.get(`${baseAssetsPath}translates/custom/${fileName}.json?v=1.0.0`);\r\n if (customJsonResponse && customJsonResponse.data) {\r\n return customJsonResponse.data\r\n }\r\n return {}\r\n } catch (e) {\r\n console.log(\"couldn't set translate\", e);\r\n return {}\r\n }\r\n}\r\n\r\nconst TranslatesProvider = (props) => {\r\n const {language, children, wasCreatedFromFabricator} = props;\r\n const [translations, setTranslations] = useState(null);\r\n const [renderLanguage, setRenderLanguage] = useState(language);\r\n\r\n const prevLanguage = usePrevious(language);\r\n const prevWasCreatedFromFabricator = usePrevious(wasCreatedFromFabricator);\r\n\r\n const parseTranslatesResponse = (response) => {\r\n // handle success\r\n let trans = {}\r\n Papa.parse(response.data, {\r\n complete: (results) => {\r\n // console.log(\"Finished:\", results.data);\r\n results.data[0].forEach((locale) => {\r\n if (locale !== \"key\") {\r\n trans[locale] = {}; // simple create an empty objects for each locale\r\n }\r\n });\r\n results.data.forEach((translatesArray, translatesArrayIndex) => { // vertical forEach\r\n if (translatesArrayIndex) { // not 0 (the first key line)\r\n const key = translatesArray[0]; // key, for ex. login.email\r\n translatesArray.forEach((translateValue, translateValueIndex) => { // horizontal forEach\r\n if (translateValueIndex) { // skip first key\r\n const locale = results.data[0][translateValueIndex]; // get first line and locale index\r\n trans[locale][key] = translateValue || translatesArray[1] // translate from column or english column\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n return trans\r\n }\r\n\r\n const getCustomTranslates = (transDoc, localeString) => {\r\n let trans = {};\r\n Object.keys(transDoc)\r\n .filter(key => key.includes(localeString))\r\n .forEach(key => {\r\n Object.keys(transDoc[key]).forEach((sharedName) => {\r\n if (sharedName) {\r\n trans[`transDoc.${key}.${sharedName.trim()}`] = transDoc[key][sharedName]\r\n }\r\n })\r\n });\r\n return trans\r\n };\r\n\r\n const loadTranslates = async () => {\r\n const responseMain = await axios.get(`${baseAssetsPath}translates/translates.csv?v=2.2.1`);\r\n let trans = parseTranslatesResponse(responseMain);\r\n let customTranslates = {};\r\n if (language === \"en-AU\") {\r\n trans[\"en-AU\"] = {...trans[\"en-US\"]}\r\n customTranslates = await getCustomJson( \"en-AU\");\r\n }\r\n if (hardCodeIsLowes()) {\r\n customTranslates = await getCustomJson( \"Lowes\");\r\n const responseLowes = await axios.get(`${baseAssetsPath}translates/translates_lowes.csv?v=1.13.1`)\r\n const doc = parseTranslatesResponse(responseLowes);\r\n trans[\"fr-FR\"] = {...trans[\"fr-FR\"], ...getCustomTranslates(doc, \"_FR\")};\r\n trans[\"pl-PL\"] = {...trans[\"pl-PL\"], ...getCustomTranslates(doc, \"_PL\")};\r\n } else if (hardCodeIsCaesarStone()) {\r\n console.log(\"fabricatorData.wasCreatedFromFabricator\", wasCreatedFromFabricator);\r\n const jsonFile = wasCreatedFromFabricator === \"QC Master Account CAN\" ? \"Caesarstone(CAN)\" : \"Caesarstone\";\r\n customTranslates = await getCustomJson( jsonFile);\r\n const responseCaes = await axios.get(`${baseAssetsPath}translates/translates_caes_v1.csv`)\r\n const doc = parseTranslatesResponse(responseCaes);\r\n trans[\"fr-FR\"] = {...trans[\"fr-FR\"], ...getCustomTranslates(doc, \"_FR\")};\r\n } else if (hardCodeIsAmericanImport() || hardCodeIsAmericanStandard() || IS_LIXIL_SERVERS) {\r\n customTranslates = await getCustomJson( \"Lixil\");\r\n } else if (hardCodeIsGraniteTransformationUK()) {\r\n customTranslates = await getCustomJson( \"GT_UK\");\r\n } else if (hardCodeIsModerno()) {\r\n customTranslates = await getCustomJson( \"Moderno\");\r\n } else if (hardCodeIsMcDermott()) {\r\n customTranslates = await getCustomJson( \"McDermott\");\r\n } else if (hardCodeIsEncore()) {\r\n customTranslates = await getCustomJson( \"Encore\");\r\n }\r\n // const responseSqft = await axios.get(`${baseAssetsPath}translates/translates_sqft_v1.csv?ver=1.1.0`);\r\n // const transSqft = parseTranslatesResponse(responseSqft);\r\n // console.log(\"transSqft\", transSqft);\r\n // for (let columnName in trans) {\r\n // trans[columnName] = {...trans[columnName], ...transSqft[columnName]}\r\n // }\r\n // delete trans[\"Location\"];\r\n // delete trans[\"Description & Context\"];\r\n TRANSLATES = {...trans[language], ...customTranslates[language]};\r\n setTranslations(TRANSLATES);\r\n if (Config.isDevMode()) {\r\n console.log(\"all translates:\", trans);\r\n console.log(\"current translates:\", trans[language]);\r\n }\r\n setRenderLanguage(language); // change frontend after load\r\n }\r\n\r\n useEffect(() => {\r\n if ((language && (prevLanguage !== language)) || (wasCreatedFromFabricator && (prevWasCreatedFromFabricator !== wasCreatedFromFabricator))) {\r\n if(document.kvConfig.kioskMode) {\r\n KioskApp.PostMessage({type: 'getTranslates'}).then(res => loadTranslates({data: res})).catch(console.error);\r\n } else {\r\n loadTranslates().catch(console.error);\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [language, wasCreatedFromFabricator])\r\n\r\n return translations ? (\r\n console.info(error)}>\r\n {children}\r\n \r\n ) : null\r\n\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n fabricatorData: store.fabricatorState,\r\n wasCreatedFromFabricator: store.fabricatorState.wasCreatedFromFabricator,\r\n language: store.serverState.language,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TranslatesProvider)\r\n","import point from \"../point\";\r\nimport line from \"../line\";\r\n\r\nconst Polygon = (pointsCords, clonePoint = false, canPointsBeMoved = false) => {\r\n let points = [];\r\n let lines = [];\r\n\r\n for (let pointCord of pointsCords) {\r\n let newPoint = new point(pointCord.x, pointCord.y, undefined, undefined, canPointsBeMoved)\r\n if (clonePoint && pointCord instanceof point) {\r\n newPoint.import(pointCord.export());\r\n }\r\n points.push(newPoint);\r\n }\r\n for (let i in points) {\r\n if (points[+i + 1]) {\r\n lines.push(new line(points[i], points[+i + 1]))\r\n } else {\r\n lines.push(new line(points[i], points[0]))\r\n }\r\n }\r\n\r\n return lines;\r\n};\r\n\r\nexport default Polygon\r\n","import * as types from '../actions/actionTypes';\r\nimport {MANUAL_CALCULATION_ROW_TYPES} from \"../bvcomponents/sqft/constants\";\r\nimport sqftConfig from \"../bvcomponents/sqft/components/canvas/store/sqftConfig\";\r\n\r\nexport const DEFAULT_MANUAL_CALC_ROW = {\r\n id: \"\",\r\n length: sqftConfig.getMeasureUnitPostfix(),\r\n height: sqftConfig.getMeasureUnitPostfix(),\r\n width: sqftConfig.getMeasureUnitPostfix(),\r\n selectedFeature: \"\",\r\n isShowTypesList: false,\r\n};\r\n\r\nexport const getEdgesPlaceholder = () => {\r\n return sqftConfig.measureUnit === \"Imperial\"\r\n ? sqftConfig.edgeHeightImperial //+ sqftConfig.getMeasureUnitPostfix()\r\n : sqftConfig.edgeHeightMetric //+ sqftConfig.getMeasureUnitPostfix()\r\n}\r\n\r\nexport const getDefaultManualCalcRowEdge = () => Object.assign({}, DEFAULT_MANUAL_CALC_ROW, { height: getEdgesPlaceholder() })\r\n\r\nexport const getInitialManualCalcRows = () => {\r\n return {\r\n [MANUAL_CALCULATION_ROW_TYPES.countertopRows]: new Array(6).fill(null)\r\n .map((value, index) => ({...DEFAULT_MANUAL_CALC_ROW, id: index + 1})),\r\n [MANUAL_CALCULATION_ROW_TYPES.edgeRows]: new Array(6).fill(null)\r\n .map((value, index) => ({...getDefaultManualCalcRowEdge(), id: index + 1})),\r\n [MANUAL_CALCULATION_ROW_TYPES.backsplashRows]: new Array(6).fill(null)\r\n .map((value, index) => ({...DEFAULT_MANUAL_CALC_ROW, id: index + 1})),\r\n }\r\n}\r\n\r\nconst initialState = {\r\n showManualCalculation: false,\r\n switcherPosition: {\r\n rect: {x:0, y:0}\r\n },\r\n ...getInitialManualCalcRows()\r\n};\r\n\r\nexport default function (state = initialState, action) {\r\n let filteredRows,\r\n newRow,\r\n lastRow,\r\n lastRowId;\r\n\r\n switch (action.type) {\r\n case types.TOGGLE_SHOW_MANUAL_CALCULATION:\r\n case types.SET_SWITCHER_POSITION:\r\n return Object.assign({}, state, {\r\n ...action.payload\r\n });\r\n case types.UPDATE_MANUAL_CALCULATION_ROWS:\r\n return Object.assign({}, state, {\r\n ...action.payload\r\n });\r\n case types.ADD_MANUAL_CALCULATION_ROW:\r\n lastRow = state[action.payload.type][state[action.payload.type].length - 1];\r\n lastRowId = lastRow ? lastRow.id : 0;\r\n switch (action.payload.type) {\r\n case MANUAL_CALCULATION_ROW_TYPES.edgeRows:\r\n newRow = {...getDefaultManualCalcRowEdge(), id: lastRowId + 1};\r\n break;\r\n default:\r\n newRow = {...DEFAULT_MANUAL_CALC_ROW, id: lastRowId + 1};\r\n }\r\n\r\n return {\r\n ...state,\r\n [action.payload.type] : [...state[action.payload.type], newRow]\r\n };\r\n case types.DELETE_MANUAL_CALCULATION_ROW:\r\n filteredRows = state[action.payload.type].filter((row) => row.id !== action.payload.id);\r\n\r\n return Object.assign({}, state, {\r\n [action.payload.type]: filteredRows\r\n });\r\n case types.UPDATE_MANUAL_CALCULATION_ROW: {\r\n const newList = state[action.payload.type].map((item) => {\r\n if (item.id === action.payload.row.id) {\r\n\r\n return Object.assign({}, item, {\r\n ...action.payload.updatedRowValue\r\n });\r\n }\r\n\r\n return item;\r\n });\r\n return Object.assign({}, state, {\r\n [action.payload.type]: newList\r\n });\r\n }\r\n\r\n default:\r\n return state\r\n }\r\n}\r\n","import point from \"../point\";\r\nimport line from \"../line\";\r\nimport config from \"../../../store/sqftConfig\";\r\n\r\nconst RECTANGLE_WIDTH = 150;\r\nconst RECTANGLE_HEIGHT = 26;\r\nconst RECTANGLE_HEIGHT_METRIC = 23.62;\r\n\r\nexport default function(rectangleWidth = RECTANGLE_WIDTH, rectangleHeight = 0) {\r\n let points;\r\n if (rectangleHeight === 0) {\r\n rectangleHeight = config.measureUnit === \"Imperial\" ? RECTANGLE_HEIGHT : RECTANGLE_HEIGHT_METRIC;\r\n }\r\n\r\n points = [\r\n new point(0, 0, \"lefttop\"),\r\n new point(rectangleWidth, 0, \"righttop\"),\r\n new point(rectangleWidth, rectangleHeight, \"rightbottom\"),\r\n new point(0, rectangleHeight, \"leftbottom\")\r\n ];\r\n\r\n return [\r\n new line(points[0], points[1]),\r\n new line(points[1], points[2]),\r\n new line(points[2], points[3]),\r\n new line(points[3], points[0])\r\n ];\r\n}\r\n","import {\r\n ALLOWED_LABEL_NAV_ITEMS, COUNTERTOP_LABELS,\r\n FEATURES_WITH_0_VALUE_FOR_THE_SLABS,\r\n MEASURE_UNITS,\r\n SHAPE_PART_ID,\r\n SQFT_FEATURES,\r\n} from \"../../sqft/constants\";\r\nimport {\r\n FEATURE_STONE,\r\n getFeatureType,\r\n getFeatureUnit,\r\n getSlabUnit,\r\n calculateStoneCost,\r\n getRoomName, getSlabsFeatureGroup\r\n} from \"../../../misc/helpers\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport store from \"../../../store\";\r\nimport sqftShapeManager from \"../../sqft/components/canvas/store/sqftShapeManager\";\r\nimport workspace from \"../../sqft/components/canvas/core/workspace\";\r\nimport {getCommonVisualizerType} from \"../../../config\";\r\nimport {getNavItemsFromTheWizard, getWizardGroupsFromTheWizard} from \"../../sqft/helpers/sqftHelperUi\";\r\nimport sqftConfig from \"../../sqft/components/canvas/store/sqftConfig\";\r\nimport {\r\n groupedDataInControllers, QUANTITY_GROUP,\r\n WORKSPACE_CONTROLLERS_THAT_WILL_ADD_FEATURES\r\n} from \"../../sqft/components/canvas/store/workspaceControllers\";\r\n//import {isFeatureUnitUseEach} from \"../../sqft/helpers/featureHelper\";\r\n\r\n/**\r\n * @param parentKey {string}\r\n * @param partId {string}\r\n * @param quoteIndex {number || null}\r\n * @returns featureGroup {object}\r\n */\r\nexport const getSimilarFeatureGroup = (parentKey, partId, quoteIndex = null) => {\r\n const state = store.getState();\r\n const quotes = state.quotesState.quotes;\r\n let room;\r\n let qtCategoryName;\r\n if (quoteIndex !== null && quotes[quoteIndex].room) {\r\n const activeQuote = quotes[quoteIndex];\r\n room = activeQuote.room;\r\n qtCategoryName = quotes[quoteIndex].qtCatName ? quotes[quoteIndex].qtCatName : getRoomNameInQuote(quoteIndex);\r\n }\r\n const layout = getCurrentLayout(room);\r\n if (!layout) {\r\n return null\r\n }\r\n\r\n let featureGroup = null;\r\n let neededPartId = partId;\r\n switch (parentKey) {\r\n case \"backsplashes\": {\r\n const isBathroom = getCommonVisualizerType() === \"bathroom\";\r\n featureGroup = layout.getSubPartFromQtCategories(\"backsplash\", qtCategoryName, true);\r\n if (!featureGroup && isBathroom) {\r\n featureGroup = layout.getSubPartFromQtCategories(SQFT_FEATURES.vanity_backsplash, qtCategoryName);\r\n }\r\n neededPartId = isBathroom ? SQFT_FEATURES.vanity_backsplash : \"backsplash\";\r\n break;\r\n }\r\n case \"edges\": {\r\n const mainNeeded = parentKey === \"center_island_countertop\" ? \"center_island_edge\" : \"edge_profile\";\r\n const oppositeNeeded = mainNeeded === \"center_island_edge\" ? \"edge_profile\" : \"center_island_edge\";\r\n featureGroup = layout.getSubPartFromQtCategories(mainNeeded, qtCategoryName);\r\n if (!featureGroup) {\r\n featureGroup = layout.getSubPartFromQtCategories(oppositeNeeded, qtCategoryName);\r\n }\r\n neededPartId = mainNeeded;\r\n break;\r\n }\r\n case SQFT_FEATURES.slabs: {\r\n featureGroup = getSlabsFeatureGroup();\r\n // let countertopsCategory = layout.qtCategories.find(qtCategory => {\r\n // return qtCategory.name === \"Countertops\" || qtCategory.name === \"Countertop\"\r\n // });\r\n //countertopsCategory = countertopsCategory === undefined ? layout.qtCategories[0] : countertopsCategory;\r\n\r\n //let subParts = countertopsCategory.subParts;\r\n //const subPartSlab = subParts.find(designNavigationItem => designNavigationItem.part.partId === SQFT_FEATURES.slabs);\r\n //if (!subPartSlab) {\r\n //subParts.splice(2, 0, featureGroup);\r\n //countertopsCategory.subParts = subParts;\r\n //}\r\n\r\n break;\r\n }\r\n case \"countertop\":\r\n case \"center_island_countertop\": {\r\n const oppositeNeeded = partId === \"center_island_countertop\" ? \"countertop\" : \"center_island_countertop\";\r\n featureGroup = layout.getSubPartFromQtCategories(partId, qtCategoryName);\r\n if (!featureGroup) {\r\n featureGroup = layout.getSubPartFromQtCategories(oppositeNeeded, qtCategoryName);\r\n }\r\n break;\r\n }\r\n case \"corners\": {\r\n featureGroup = layout.getSubPartFromQtCategories(partId, qtCategoryName);\r\n if (!featureGroup) {\r\n featureGroup = layout.getSubPartFromQtCategories('radius', qtCategoryName);\r\n }\r\n break;\r\n }\r\n default:\r\n featureGroup = layout.getSubPartFromQtCategories(partId, qtCategoryName);\r\n break;\r\n }\r\n if (!featureGroup) {\r\n const foundGroup = layout.getFeatureGroupByPartId(neededPartId);\r\n if (foundGroup) {\r\n featureGroup = {part: foundGroup}\r\n }\r\n }\r\n return featureGroup\r\n};\r\n\r\n/**\r\n * @returns {string}\r\n */\r\nexport const getRoomNameInQuote = (quoteIndex) => {\r\n const state = store.getState();\r\n const {quotes} = state.quotesState;\r\n const fabricatorData = state.fabricatorState;\r\n const cartItems = state.cartState.cartItems;\r\n const intl = workspace.intl;\r\n\r\n return getRoomName(quoteIndex, cartItems, quotes, intl.messages, intl.locale, fabricatorData);\r\n}\r\n\r\n/**\r\n * @param {{}} parentsList\r\n * @returns {boolean}\r\n */\r\nexport const isRecalculateSlabNeeded = (parentsList) => {\r\n const useStonePricing = Object.keys(parentsList).some(parentKey => {\r\n if (!parentsList[parentKey] || !parentsList[parentKey].features) {\r\n return false\r\n }\r\n return parentsList[parentKey].features.some((sqftFeature) => {\r\n if (sqftFeature && sqftFeature.feature && (FEATURE_STONE === getFeatureType(sqftFeature.feature.dbFeature))) { // dbFeature stone pricing algorithms related\r\n const {serverState, fabricatorState, cartState} = store.getState();\r\n // here we are checking if we should calculate algorithm or not\r\n // (if not - it should be counted as a regular feature, so it should be no grouping and included logic then)\r\n const stoneCost = calculateStoneCost(\r\n sqftFeature.feature.dbFeature,\r\n sqftFeature.initialQuantity,\r\n serverState.stonePricing,\r\n fabricatorState.stoneSupplier,\r\n false,\r\n fabricatorState.settings,\r\n cartState,\r\n );\r\n return !!stoneCost;\r\n }\r\n return false\r\n })\r\n })\r\n const useSlabImagePricing = parentsList.slabs.features.length > 0;\r\n\r\n return useStonePricing || useSlabImagePricing\r\n}\r\n\r\n/**\r\n * @param parentList {object}\r\n * @param firstOpen {boolean}\r\n * @returns sqftFeatures {object}\r\n */\r\nexport const recalculateSlabs = (parentList, firstOpen = false) => {\r\n const state = store.getState();\r\n const fabricatorSettings = state.fabricatorState.settings;\r\n let updatedParentList;\r\n if (fabricatorSettings.useCategorySwitching) {\r\n updatedParentList = splitPriceBetweenSlabsMaterial(parentList); // will divide total price between shapes\r\n } else {\r\n updatedParentList = setPriceIntoSingleFeature(parentList, firstOpen); // will display included price\r\n }\r\n\r\n return updatedParentList;\r\n};\r\n\r\n/**\r\n * @param sqftFeatures {object}\r\n * @param firstOpen {boolean}\r\n * @returns sqftFeatures {object}\r\n */\r\nexport const setPriceIntoSingleFeature = (sqftFeatures, firstOpen = false) => {\r\n let commonSharedFeatureNames = getCommonSharedFeatureNames(sqftFeatures); // {sharedName: \"\", totalQuantity: 0, biggestFeature, sqftFeatures: []}\r\n if (commonSharedFeatureNames.length) { // 2) set each feature new fake quantity\r\n commonSharedFeatureNames.forEach(sharedObject => {\r\n sharedObject.sqftFeatures.forEach(sqftFeature => {\r\n const {fabricatorState} = store.getState();\r\n if (fabricatorState.isCaesarStone) {\r\n if (firstOpen) {\r\n if (sharedObject.biggestFeature && (sqftFeature.sqftId === sharedObject.biggestFeature.sqftId)) {\r\n sqftFeature.sortOrder = 1;\r\n } else {\r\n sqftFeature.sortOrder = 0;\r\n }\r\n }\r\n } else {\r\n //QCDES-1507 calculates slab algorithm pricing\r\n sqftFeature.displayFakeQuantity = sqftFeature.initialQuantity; // removed for CAESARSTONE, don't know about the others\r\n if (sharedObject.biggestFeature && (sqftFeature.sqftId === sharedObject.biggestFeature.sqftId)) {\r\n sqftFeature.quantity = sharedObject.totalQuantity; // removed for CAESARSTONE, don't know about the others\r\n if (firstOpen) {\r\n sqftFeature.sortOrder = 1;\r\n }\r\n sqftFeature.isBiggestFeature = true;\r\n } else {\r\n // removed for CAESARSTONE, don't know about the others\r\n sqftFeature.quantityRounded = 0;\r\n sqftFeature.quantity = 0;\r\n sqftFeature.isQuantityAddedToBiggestFeature = true;\r\n if (firstOpen) {\r\n sqftFeature.sortOrder = 0;\r\n }\r\n }\r\n }\r\n });\r\n });\r\n if (firstOpen) {\r\n sqftFeatures = sortSqftFeatures(sqftFeatures);\r\n }\r\n }\r\n console.log(\"commonSharedFeatureNames\", commonSharedFeatureNames);\r\n return sqftFeatures\r\n};\r\n\r\nconst createSqftFeaturesObj = () => {\r\n let sqftFeaturesObj = {};\r\n for (const availablePartIdsKey in SQFT_FEATURES) {\r\n sqftFeaturesObj[availablePartIdsKey] = {\r\n subPart: null,\r\n features: []\r\n }\r\n }\r\n\r\n return sqftFeaturesObj;\r\n}\r\n\r\n/**\r\n * @param sqftFeatures {object}\r\n * @param firstOpen {boolean}\r\n * @returns sqftFeatures {object}\r\n */\r\nexport const splitPriceBetweenSlabsMaterial = (sqftFeatures, firstOpen = false) => {\r\n let commonSharedFeatureNames = getCommonSharedFeatureNames(sqftFeatures);\r\n if (commonSharedFeatureNames.length) {\r\n commonSharedFeatureNames.forEach(sharedObject => {\r\n sharedObject = sortSharedObject(sharedObject, firstOpen);\r\n updateSharedObjectWithGroupQuantity(sharedObject);\r\n });\r\n if (firstOpen) {\r\n sqftFeatures = sortSqftFeatures(sqftFeatures);\r\n }\r\n }\r\n console.log(\"commonSharedFeatureNames\", commonSharedFeatureNames);\r\n return sqftFeatures\r\n};\r\n\r\nconst sortSqftFeatures = (sqftFeatures) => {\r\n Object.keys(sqftFeatures).forEach(parentKey => {\r\n if (sqftFeatures[parentKey]\r\n && sqftFeatures[parentKey].features\r\n && parentKey !== \"edges\"\r\n ) {\r\n sqftFeatures[parentKey].features = sqftFeatures[parentKey].features.sort((a, b) => b.sortOrder - a.sortOrder);\r\n }\r\n })\r\n\r\n return sqftFeatures\r\n}\r\n/**\r\n * @return array of objects [{sharedName: string, totalQuantity: number, biggestFeature: feature, sqftFeatures: []}]\r\n */\r\nconst getCommonSharedFeatureNames = (sqftFeatures) => {\r\n let commonSharedFeatureNames = [];\r\n Object.keys(sqftFeatures).forEach(parentKey => { // 1) create common objects and find the biggest feature\r\n if (sqftFeatures[parentKey]\r\n && sqftFeatures[parentKey].features\r\n && parentKey !== \"edges\"\r\n && parentKey !== \"slabs\"\r\n ) {\r\n sqftFeatures[parentKey].features.forEach(sqftFeature => {\r\n if (sqftFeature.feature && Array.isArray(sqftFeature.feature.dbFeature.stonePricingId)\r\n && sqftFeature.feature.dbFeature.stonePricingId.length) {\r\n const alreadyAdded = commonSharedFeatureNames.find(sharedObject => {\r\n return sharedObject.sharedName === sqftFeature.feature.dbFeature.sharedFeatureName\r\n });\r\n if (!alreadyAdded) {\r\n commonSharedFeatureNames.push({\r\n sharedName: sqftFeature.feature.dbFeature.sharedFeatureName,\r\n totalQuantity: sqftFeature.disabled ? 0 : sqftFeature.initialQuantity,\r\n sqftFeatures: [sqftFeature],\r\n biggestFeature: sqftFeature.disabled ? null : sqftFeature,\r\n })\r\n } else {\r\n alreadyAdded.sqftFeatures.push(sqftFeature);\r\n if (!sqftFeature.disabled) {\r\n alreadyAdded.totalQuantity += sqftFeature.initialQuantity;\r\n if (!alreadyAdded.biggestFeature) {\r\n alreadyAdded.biggestFeature = sqftFeature;\r\n } else if (sqftFeature.feature.partId === \"countertop\") {\r\n if (alreadyAdded.biggestFeature.partId !== \"countertop\" || (alreadyAdded.biggestFeature.initialQuantity < sqftFeature.initialQuantity)) {\r\n alreadyAdded.biggestFeature = sqftFeature;\r\n }\r\n } else if (sqftFeature.feature.partId === \"center_island_countertop\") {\r\n if ((alreadyAdded.biggestFeature.partId !== \"countertop\" && alreadyAdded.biggestFeature.partId !== \"center_island_countertop\")\r\n || (alreadyAdded.biggestFeature.partId === \"center_island_countertop\" && alreadyAdded.biggestFeature.initialQuantity < sqftFeature.initialQuantity)) {\r\n alreadyAdded.biggestFeature = sqftFeature;\r\n }\r\n } else if ((alreadyAdded.biggestFeature.partId !== \"countertop\") && (alreadyAdded.biggestFeature.partId !== \"center_island_countertop\")\r\n && alreadyAdded.biggestFeature.initialQuantity < sqftFeature.initialQuantity) { // backsplash\r\n alreadyAdded.biggestFeature = sqftFeature;\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }\r\n });\r\n\r\n return commonSharedFeatureNames\r\n}\r\n/**\r\n * set group price foreach sqftFeature inside sharedObject\r\n * @param sharedObject {object}\r\n * @returns sharedObject {object}\r\n */\r\nconst updateSharedObjectWithGroupQuantity = (sharedObject) => {\r\n const quantityPerFeature = sharedObject.totalQuantity / sharedObject.sqftFeatures.length;\r\n sharedObject.sqftFeatures.forEach(sqftFeature => {\r\n const {fabricatorState} = store.getState();\r\n if (!fabricatorState.isCaesarStone) {\r\n sqftFeature.group = {\r\n quantityPerFeature: quantityPerFeature,\r\n totalFeaturesInGroup: sharedObject.sqftFeatures.filter(sqftFeature => !sqftFeature.disabled).length,\r\n totalQuantity: sharedObject.totalQuantity,\r\n }\r\n }\r\n });\r\n\r\n return sharedObject\r\n}\r\n\r\n/**\r\n * Returns sorted sharedObject\r\n * @param sharedObject {object}\r\n * @param firstOpen {boolean}\r\n * @returns sharedObject {object}\r\n */\r\nconst sortSharedObject = (sharedObject, firstOpen) => {\r\n sharedObject.sqftFeatures.forEach(sqftFeature => {\r\n if (firstOpen) {\r\n if (sharedObject.biggestFeature && (sqftFeature.sqftId === sharedObject.biggestFeature.sqftId)) {\r\n sqftFeature.sortOrder = 1;\r\n } else {\r\n sqftFeature.sortOrder = 0;\r\n }\r\n }\r\n });\r\n\r\n return sharedObject\r\n}\r\n\r\n/**\r\n * Returns needed for popup data\r\n * @param sqftPassedData {object} // it has sqftCalcData - data that comes from sqft\r\n * @param previouslyAddedSqftFeatures {object}\r\n * @param intl {object} // react intl instance\r\n * @param fabricatorData {object}\r\n * @param cartItems {array}\r\n * @param sqftFromFeature {object}\r\n * @param quoteIndex {number}\r\n * @param visualizerType {string}\r\n * @param stonePricing {object}\r\n * @returns sqftFeatures {object}\r\n */\r\nexport function getParsedSqftData(\r\n sqftPassedData,\r\n previouslyAddedSqftFeatures,\r\n intl,\r\n fabricatorData,\r\n cartItems,\r\n sqftFromFeature,\r\n quoteIndex,\r\n visualizerType,\r\n stonePricing,\r\n) {\r\n let sqftFeatures = createSqftFeaturesObj();\r\n\r\n if (!sqftPassedData || !sqftPassedData.countertops) {\r\n return sqftFeatures;\r\n }\r\n\r\n const state = store.getState();\r\n const isSlabPricingEnabled = state.sqftSlabState.isSlabPricingEnabled;\r\n const layout = getCurrentLayout(visualizerType);\r\n\r\n Object.keys(sqftFeatures).forEach(parentKey => {\r\n let featuresPassed = [];\r\n let featuresPassedGroups = [];\r\n const isCountertop = parentKey === \"countertop\" || parentKey === \"center_island_countertop\";\r\n let shouldUseRelatedParentFeatureAsMain = false;\r\n\r\n // Skip adding slab features if slab pricing is disabled;\r\n if (parentKey === SQFT_FEATURES.slabs && !isSlabPricingEnabled) {\r\n return;\r\n }\r\n\r\n if (isCountertop) {\r\n featuresPassed = prepareCountertopFeaturesPassed(sqftPassedData, layout, parentKey);\r\n } else if (parentKey === SQFT_FEATURES.slabs) {\r\n featuresPassed = prepareSlabFeaturesPassed(sqftPassedData.slabImagesTotalArea);\r\n } else if (parentKey === SQFT_FEATURES.edges || parentKey === SQFT_FEATURES.backsplashes) {\r\n let shapeType;\r\n switch (parentKey) {\r\n case \"edges\":\r\n shapeType = \"edge\";\r\n break;\r\n case \"backsplashes\":\r\n shapeType = \"backsplash\"\r\n break;\r\n default:\r\n shapeType = parentKey\r\n break;\r\n }\r\n\r\n if (sqftPassedData.manualCalculate) {\r\n featuresPassed = prepareEdgesAndBacksplashesManual(sqftPassedData, shapeType, featuresPassed);\r\n } else {\r\n featuresPassed = prepareEdgesAndBacksplashes(sqftPassedData, shapeType, featuresPassed);\r\n }\r\n } else if (parentKey === SQFT_FEATURES.crown_molding) {\r\n featuresPassed = prepareCrownMoldings(sqftPassedData, parentKey);\r\n } else if (Object.values(ALLOWED_LABEL_NAV_ITEMS).includes(parentKey)) {\r\n if (sqftConfig.shouldUseCabinetDoorsSQFT) {\r\n featuresPassed = prepareDefaultFeatureObjectGrouped(sqftPassedData.countertops, parentKey, 'relatedParentFeatureId');\r\n shouldUseRelatedParentFeatureAsMain = true;\r\n } else {\r\n featuresPassed = prepareDefaultFeatureObject(sqftPassedData.countertops, parentKey);\r\n }\r\n } else if (parentKey === SQFT_FEATURES.radius) {\r\n featuresPassed = prepareDefaultFeatureObject(sqftPassedData.radii, parentKey);\r\n } else if (parentKey === SQFT_FEATURES.corners) {\r\n featuresPassed = prepareDefaultFeatureObject(sqftPassedData.corners, parentKey);\r\n } else if (parentKey === SQFT_FEATURES.underlayment && sqftPassedData.underlayment && sqftPassedData.underlayment.sections) {\r\n featuresPassed = prepareDefaultFeatureObject(sqftPassedData.underlayment.sections, parentKey);\r\n } else if (parentKey === SQFT_FEATURES.bumpouts && sqftPassedData.bumpouts) {\r\n featuresPassed = sqftPassedData.bumpouts\r\n } else if ((parentKey === SQFT_FEATURES.top_handle || parentKey === SQFT_FEATURES.bottom_handle)\r\n && sqftPassedData.controllers\r\n && sqftPassedData.controllers.handles\r\n ) {\r\n featuresPassedGroups = prepareHandles(sqftPassedData, parentKey);\r\n } else if (WORKSPACE_CONTROLLERS_THAT_WILL_ADD_FEATURES.includes(parentKey)\r\n && sqftPassedData.controllers\r\n && sqftPassedData.controllers[parentKey]\r\n ) {\r\n if (groupedDataInControllers.includes(parentKey)) {\r\n featuresPassed = prepareDefaultFeatureObjectGrouped(sqftPassedData.controllers[parentKey], parentKey);\r\n } else {\r\n featuresPassed = prepareDefaultFeatureObject(sqftPassedData.controllers[parentKey], parentKey);\r\n }\r\n }\r\n\r\n if (featuresPassed.length > 0) {\r\n // featuresPassedGroups = [{\r\n // featuresPassed: featuresPassed\r\n // }]\r\n sqftFeatures[parentKey].features = featuresPassed.map(featurePassed =>\r\n prepareSQFTFeatures({featurePassed, parentKey, quoteIndex, layout, sqftPassedData, cartItems, isCountertop,\r\n previouslyAddedSqftFeatures, sqftFromFeature, shouldUseRelatedParentFeatureAsMain, intl, fabricatorData})\r\n ).filter(feature => feature !== null);\r\n // set FeatureGroup\r\n sqftFeatures[parentKey].subPart = sqftFeatures[parentKey].features[0] ? sqftFeatures[parentKey].features[0].subPart : null;\r\n }\r\n\r\n if (featuresPassedGroups.length > 0) {\r\n const preparedFeaturesGroups = featuresPassedGroups.map(group => {\r\n return {\r\n groupTitle: group.groupTitle,\r\n features: group.featuresPassed.map(featurePassed =>\r\n prepareSQFTFeatures({\r\n featurePassed, parentKey, quoteIndex, layout, sqftPassedData, cartItems, isCountertop,\r\n previouslyAddedSqftFeatures, sqftFromFeature, shouldUseRelatedParentFeatureAsMain, intl, fabricatorData\r\n })\r\n ).filter(feature => feature !== null)\r\n }});\r\n // find and set FeatureGroup\r\n if (Array.isArray(preparedFeaturesGroups)) {\r\n for (let i = 0; i < preparedFeaturesGroups.length; i++) {\r\n if (preparedFeaturesGroups[i].features && preparedFeaturesGroups[i].features.length > 0) {\r\n sqftFeatures[parentKey].subPart = preparedFeaturesGroups[i].features[0].subPart;\r\n sqftFeatures[parentKey].featuresSubGroups = preparedFeaturesGroups\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n if (isSlabPricingEnabled && isRecalculateSlabNeeded(sqftFeatures)) {\r\n sqftFeatures = recalculateSlabs(sqftFeatures, true);\r\n console.log(\"stonePricing\", stonePricing);\r\n console.log(\"fabricatorData.pricingPreset\", fabricatorData.pricingPreset);\r\n }\r\n\r\n return sqftFeatures;\r\n}\r\n\r\nfunction prepareSQFTFeatures(props) {\r\n const {featurePassed, parentKey, quoteIndex, layout, sqftPassedData, cartItems, previouslyAddedSqftFeatures,\r\n sqftFromFeature, shouldUseRelatedParentFeatureAsMain, intl, fabricatorData, isCountertop} = props;\r\n\r\n const relatedParentFeature = featurePassed.relatedParentFeatureId\r\n ? layout.getFeatureById(featurePassed.relatedParentFeatureId)\r\n : null;\r\n const effectivePartId = sqftConfig.shouldUseCabinetDoorsSQFT && relatedParentFeature\r\n ? relatedParentFeature.partId\r\n : parentKey;\r\n const featureGroup = getSimilarFeatureGroup(effectivePartId, effectivePartId, quoteIndex);\r\n\r\n if (featureGroup) {\r\n const quantity = getQuantityFromCalculator(effectivePartId, featurePassed, sqftPassedData);\r\n const displayFakePrice = getFakePriceFromCalculator(effectivePartId, featurePassed, sqftPassedData, cartItems, quoteIndex);\r\n let [feature, isSqftFromFeature, fromWizardGroupId] = getFeatureFromSQFT(featurePassed,\r\n previouslyAddedSqftFeatures,\r\n featureGroup,\r\n parentKey,\r\n quoteIndex,\r\n isCountertop,\r\n sqftFromFeature,\r\n cartItems,\r\n layout,\r\n );\r\n const displayFakeQuantity = effectivePartId === SQFT_FEATURES.slabs ? featurePassed.totalSlabs : null;\r\n const displayFakeFeatureGroupName = effectivePartId === SQFT_FEATURES.slabs ? SQFT_FEATURES.slabs : null;\r\n const featureToCheckUnit = feature || featureGroup.part.features[0];\r\n const featureUnit = featureToCheckUnit ? getFeatureUnit(featureToCheckUnit, intl, fabricatorData, quantity) : \"\";\r\n const unit = effectivePartId === SQFT_FEATURES.slabs ? getSlabUnit(featurePassed.totalSlabs, intl) : featureUnit;\r\n sqftShapeManager.setShapeFeature(featurePassed.id, feature);\r\n\r\n return {\r\n disabled: featurePassed.isDisabledInPopup || false, //previouslyAddedSqftFeature ? previouslyAddedSqftFeature.disabled : false,\r\n feature: sqftConfig.shouldUseCabinetDoorsSQFT && relatedParentFeature ? relatedParentFeature : feature,\r\n partId: effectivePartId,\r\n relatedParentFeature,\r\n shouldUseRelatedParentFeatureAsMain,\r\n displayFakeFeatureGroupName,\r\n unit,\r\n subPart: featureGroup,\r\n //quantity: isFeatureUnitUseEach(feature) ? 1 : quantity,\r\n quantity: quantity,\r\n quantityRounded: Math.ceil(quantity),\r\n displayFakeQuantity: displayFakeQuantity,\r\n quantityGroup: featurePassed.quantityGroup,\r\n displayFakePrice,\r\n initialQuantity: quantity,\r\n sqftId: featurePassed.id,\r\n sqftIds: featurePassed.ids,\r\n sqftQuantities: featurePassed.sqftQuantities,\r\n qtCatName: featurePassed.qtCatName,\r\n isSqftFromFeature,\r\n fromWizardGroupId,\r\n shouldShowEyeBall: featurePassed.shouldShowEyeBall !== undefined ? featurePassed.shouldShowEyeBall : true,\r\n shouldUseSlabPricing: featurePassed.shouldUseSlabPricing,\r\n };\r\n }\r\n\r\n console.log(\"No feature group added for\", parentKey, featurePassed.partId);\r\n return null;\r\n}\r\n\r\n/**\r\n * Returns prepared slabFeatures that comes from sqft\r\n * @param slabImagesGrouped {object} // data that comes from sqft\r\n * @returns featuresPassed [array]\r\n */\r\nconst prepareSlabFeaturesPassed = (slabImagesGrouped) => {\r\n let featuresPassed = [];\r\n slabImagesGrouped\r\n .forEach(slabImagesGroup => {\r\n const quantity = Math.ceil(slabImagesGroup.totalArea);\r\n featuresPassed.push(Object.assign({...slabImagesGroup}, {\r\n partId: SQFT_FEATURES.slabs,\r\n squareFeet: quantity,\r\n pricePerArea: slabImagesGroup.pricePerArea,\r\n shouldUseSlabPricing: slabImagesGroup.shouldUseSlabPricing,\r\n }));\r\n });\r\n\r\n return featuresPassed;\r\n}\r\n\r\n/**\r\n * Returns prepared countertops that comes from sqft\r\n * @param sqftPassedData {object} // data that comes from sqft\r\n * @param layout {object} // layout\r\n * @param parentKey {string} // parentKey\r\n * @returns featuresPassed [array]\r\n */\r\nconst prepareCountertopFeaturesPassed = (sqftPassedData, layout, parentKey) => {\r\n const countertopExist = layout.getSubPartFromQtCategories(\"countertop\");\r\n const centerIslandExist = layout.getSubPartFromQtCategories(\"center_island_countertop\");\r\n let featuresPassed = []\r\n if (sqftPassedData.manualCalculate) {\r\n featuresPassed = sqftPassedData.countertops\r\n .filter(manCountertopObject => manCountertopObject.partId === parentKey)\r\n .map(manCountertopObject => {\r\n return {\r\n id: manCountertopObject.id,\r\n squareFeet: manCountertopObject.area,\r\n partId: manCountertopObject.partId\r\n }\r\n })\r\n } else if (sqftPassedData.countertops && sqftPassedData.countertops.length) {\r\n featuresPassed = sqftPassedData.countertops.filter(shape => {\r\n if (shape.partId === \"countertop\" || shape.partId === \"center_island_countertop\") {\r\n if (countertopExist && !centerIslandExist) {\r\n shape.partId = countertopExist.part.partId;\r\n } else if (centerIslandExist && !countertopExist) {\r\n shape.partId = centerIslandExist.part.partId;\r\n }\r\n }\r\n\r\n return shape.shapeType && (shape.partId === parentKey)\r\n && ![\"backsplash\", SHAPE_PART_ID.seamPiece, SHAPE_PART_ID.slabPlaceHolder].includes(shape.type)\r\n })\r\n }\r\n\r\n return featuresPassed;\r\n}\r\n\r\nconst prepareHandles = (sqftPassedData, parentKey) => {\r\n const handlesForDoors = sqftPassedData.controllers.handles.filter(handlesModel => handlesModel.quantityGroup === QUANTITY_GROUP.doors);\r\n const handlesForDrawers = sqftPassedData.controllers.handles.filter(handlesModel => handlesModel.quantityGroup === QUANTITY_GROUP.drawers);\r\n const featuresPassedForDoors = prepareDefaultFeatureObjectGrouped(handlesForDoors, parentKey);\r\n const featuresPassedForDrawers = prepareDefaultFeatureObjectGrouped(handlesForDrawers, parentKey);\r\n\r\n return [\r\n {\r\n groupTitle: \"Doors\",\r\n featuresPassed: featuresPassedForDoors\r\n }, {\r\n groupTitle: \"Drawers\",\r\n featuresPassed: featuresPassedForDrawers\r\n }\r\n ]\r\n}\r\n\r\n/**\r\n * Returns other dataObjects that comes from sqft\r\n * @param sqftPassedDataHandler {object} // data that comes from sqft\r\n * @param parentKey {string}\r\n * @returns featuresPassed [array]\r\n */\r\nconst prepareDefaultFeatureObject = (sqftPassedDataHandler, parentKey) => {\r\n return sqftPassedDataHandler\r\n .filter(passedObject => passedObject.partId === parentKey)\r\n .map(passedObject => {\r\n return {\r\n id: passedObject.id,\r\n partId: passedObject.partId,\r\n featureId: passedObject.featureId,\r\n relatedParentFeatureId: passedObject.relatedParentFeatureId,\r\n qtCatName: passedObject.qtCatName,\r\n quantity: passedObject.quantity,\r\n squareFeet: passedObject.squareFeet,\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Returns other dataObjects that comes from sqft\r\n * @param sqftPassedDataHandler {object} // data that comes from sqft\r\n * @param parentKey {string}\r\n * @param groupByKey {string} // key to group by (e.g., 'featureId' or 'relatedParentFeatureId')\r\n * @returns featuresPassed [array]\r\n */\r\nconst prepareDefaultFeatureObjectGrouped = (sqftPassedDataHandler, parentKey, groupByKey = 'featureId') => {\r\n const filteredData = sqftPassedDataHandler\r\n .filter(passedObject => passedObject[groupByKey] !== null && passedObject.partId === parentKey);\r\n\r\n // Grouping logic by the specified key\r\n const groupedByKey = filteredData.reduce((acc, passedObject) => {\r\n const groupKey = passedObject[groupByKey];\r\n const { id, quantity, squareFeet, quantityInGroup, ...rest } = passedObject;\r\n\r\n if (!acc[groupKey]) {\r\n acc[groupKey] = {\r\n ...rest,\r\n [groupByKey]: groupKey,\r\n ids: [],\r\n sqftQuantities: {},\r\n quantity: 0,\r\n quantityInGroup: 0,\r\n squareFeet: 0, //todo remove squareFeet and use only quantity\r\n };\r\n }\r\n\r\n acc[groupKey].ids.push(id);\r\n acc[groupKey].quantity += quantity ? quantity : 0;\r\n acc[groupKey].squareFeet += squareFeet ? squareFeet : 0;\r\n acc[groupKey].quantityInGroup += quantityInGroup ? quantityInGroup : 0;// not used\r\n acc[groupKey].sqftQuantities[id] = quantity ? quantity : 0;\r\n\r\n return acc;\r\n }, {});\r\n\r\n // Apply rounding to quantity\r\n return Object.values(groupedByKey).map(group => ({\r\n ...group,\r\n quantity: Math.ceil10(group.quantity, -2),\r\n squareFeet: Math.ceil10(group.squareFeet, -2),\r\n shouldShowEyeBall: false\r\n }));\r\n};\r\n\r\n\r\n/**\r\n * Parse quantity from sqft // todo rewrite and remove this\r\n * @param parentKey {object} // data that comes from sqft\r\n * @param featurePassed {object} // data that comes from sqft\r\n * @param sqftPassedData {object} // data that comes from sqft\r\n * @returns featuresPassed [array]\r\n */\r\nconst getQuantityFromCalculator = (parentKey, featurePassed, sqftPassedData) => {\r\n let quantity;\r\n switch (parentKey) {\r\n case \"edges\":\r\n case \"backsplashes\":\r\n case SQFT_FEATURES.crown_molding:\r\n quantity = sqftPassedData.measureUnit === MEASURE_UNITS.Metric\r\n ? +(+(featurePassed.length).toFixed(3)).toFixed(2)\r\n : featurePassed.length\r\n break\r\n case SQFT_FEATURES.radius:\r\n case SQFT_FEATURES.corners:\r\n case SQFT_FEATURES.handle:\r\n case SQFT_FEATURES.underlayment:\r\n quantity = featurePassed.quantity;\r\n break\r\n case \"countertop\":\r\n case \"center_island_countertop\":\r\n case \"slabs\":\r\n quantity = featurePassed.squareFeet;\r\n break\r\n default:\r\n if (Object.keys(COUNTERTOP_LABELS).includes(parentKey)) {\r\n quantity = featurePassed.squareFeet;\r\n } else {\r\n quantity = featurePassed.quantity ? featurePassed.quantity : featurePassed.squareFeet;\r\n }\r\n }\r\n\r\n return quantity\r\n}\r\n\r\n/**\r\n * Prepare Edges and Backsplashes from sqft\r\n * @param sqftPassedData {object} // data that comes from sqft\r\n * @param shapeType {string}\r\n * @param featuresPassed {array}\r\n * @returns featuresPassed [array]\r\n */\r\nconst prepareEdgesAndBacksplashes = (sqftPassedData, shapeType, featuresPassed) => {\r\n sqftPassedData.countertops\r\n .filter(shape => shape.type === shapeType)\r\n .forEach(edge => {\r\n const length = edge.length || edge.squareFeet;\r\n featuresPassed.push(Object.assign(\r\n edge, {\r\n partId: edge.partId || shapeType,\r\n fromWizardGroupId: edge.fromWizardGroupId, //todo[Anton] this one is not passing here\r\n length: length,\r\n qtCatName: edge.qtCatName,\r\n featureId: edge.backsplashFeatureId ? edge.backsplashFeatureId : edge.featureId,\r\n shouldShowEyeBall: edge.shouldShowEyeBall !== undefined ? edge.shouldShowEyeBall : true,\r\n }));\r\n });\r\n\r\n return featuresPassed\r\n}\r\n\r\n/**\r\n * Prepare CrownMoldings from sqft\r\n * @param sqftPassedData {object} // data that comes from sqft\r\n * @param shapeType {string}\r\n * @returns featuresPassed [array]\r\n */\r\nconst prepareCrownMoldings = (sqftPassedData, shapeType) => {\r\n const featuresPassed = [];\r\n sqftPassedData.countertops\r\n .filter(shape => shape.type === shapeType)\r\n .forEach(crownMolding => {\r\n const length = crownMolding.length || crownMolding.squareFeet;\r\n featuresPassed.push(Object.assign(\r\n crownMolding, {\r\n partId: crownMolding.partId || shapeType,\r\n length: length,\r\n qtCatName: crownMolding.qtCatName,\r\n }));\r\n });\r\n\r\n return featuresPassed\r\n}\r\n\r\n/**\r\n * Prepare Edges and Backsplashes from sqft\r\n * @param sqftPassedData {object} // data that comes from sqft\r\n * @param shapeType {string}\r\n * @param featuresPassed {array}\r\n * @returns featuresPassed [array]\r\n */\r\nconst prepareEdgesAndBacksplashesManual = (sqftPassedData, shapeType, featuresPassed) => {\r\n let sqftData = [];\r\n switch (shapeType) {\r\n case \"edge\":\r\n sqftData = sqftPassedData.edges;\r\n break\r\n case \"backsplash\":\r\n sqftData = sqftPassedData.backsplashes;\r\n break\r\n }\r\n sqftData\r\n .forEach(edge => {\r\n const edgeLength = edge.length;\r\n const alreadyAdded = featuresPassed.find(addedEdge => {\r\n return addedEdge.attachedToParentId && (addedEdge.featureId === edge.featureId)\r\n });\r\n if (alreadyAdded) {\r\n alreadyAdded.length += edgeLength;\r\n } else {\r\n featuresPassed.push(Object.assign(edge, {featureId: edge.featureId, partId: edge.partId, length: edgeLength}));\r\n }\r\n });\r\n\r\n return featuresPassed\r\n}\r\n\r\n/**\r\n * //todo it is better to rewrite this fake price logic and calculate the price right in the cart\r\n * Get fake price for display\r\n * @param parentKey {object} // data that comes from sqft\r\n * @param featurePassed {object} // data that comes from sqft\r\n * @param sqftPassedData {object} // data that comes from sqft\r\n * @param cartItems\r\n * @param quoteIndex\r\n * @returns featuresPassed [array]\r\n */\r\nconst getFakePriceFromCalculator = (parentKey, featurePassed, sqftPassedData, cartItems, quoteIndex) => {\r\n let fakePrice ;\r\n /** If the number of slabs is greater than one, set the price of all other materials to zero, as only the cost of slabs will be calculated. */\r\n if (FEATURES_WITH_0_VALUE_FOR_THE_SLABS[parentKey]) {\r\n const slabAlreadyInTheCart = cartItems.find(cartItem => {\r\n return (cartItem.sqftId) && (cartItem.partId === SQFT_FEATURES.slabs) && (cartItem.currentQuote === quoteIndex)\r\n })\r\n if (sqftPassedData.slabImagesTotalArea.length > 0 || slabAlreadyInTheCart) {\r\n const activeSlabsExist = sqftPassedData.slabImagesTotalArea.some(slabImageAreaGroup => !slabImageAreaGroup.isDisabledInPopup);\r\n if (activeSlabsExist) {\r\n fakePrice = 0;\r\n }\r\n }\r\n /** Applying the hardcoded price for slabs, which was set in the slab popup. */\r\n } else if (parentKey === SQFT_FEATURES.slabs) {\r\n if (featurePassed.pricePerArea) {\r\n fakePrice = parseFloat(featurePassed.pricePerArea) * getQuantityFromCalculator(parentKey, featurePassed, sqftPassedData);\r\n }\r\n }\r\n\r\n return fakePrice\r\n}\r\n\r\n/**\r\n * Returns parse sqft passed feature id and returns feature or null\r\n * @param featurePassed {object} // data that comes from sqft\r\n * @param parentKey {string} //\r\n * @param featureGroup {object} featureGroup\r\n * @param layout {object}\r\n * @returns feature {object}\r\n */\r\nconst getFeatureFromCalculatorPassedId = (featurePassed, parentKey, featureGroup, layout) => {\r\n let feature = null;\r\n let idToFind = null;\r\n switch (parentKey) {\r\n case \"edges\":\r\n case \"backsplashes\":\r\n case \"countertop\":\r\n case \"center_island_countertop\":\r\n case \"slabs\":\r\n case SHAPE_PART_ID.slabPlaceHolder:\r\n idToFind = +featurePassed.featureId;\r\n break\r\n default:\r\n idToFind = featurePassed.featureId ? featurePassed.featureId: null;\r\n }\r\n if (idToFind) {\r\n feature = layout.getFeatureById(idToFind, true);\r\n if (!feature && featurePassed.slabParentPartId) {\r\n const slabParentFeatureGroup = layout.getFeatureGroupByPartId(featurePassed.slabParentPartId);\r\n if (slabParentFeatureGroup) {\r\n feature = slabParentFeatureGroup.getFeatureById(featurePassed.featureId, true);\r\n }\r\n }\r\n if (!feature && featurePassed.partId) {\r\n const slabParentFeatureGroup = layout.getFeatureGroupByPartId(featurePassed.partId);\r\n if (slabParentFeatureGroup) {\r\n feature = slabParentFeatureGroup.getFeatureById(featurePassed.featureId, true);\r\n }\r\n }\r\n // const navFeatures = getNavItems(featureGroup);//layout.designNavigationItems(featureGroup, {}, \"\", false, true);\r\n //\r\n // const navFeature = navFeatures.find(navItem => navItem.part.dbFeature.id === idToFind);\r\n // if (navFeature) {\r\n // feature = navFeature.part;\r\n // } else if (parentKey === \"slabs\") {\r\n // feature = layout.getFeatureById(idToFind);\r\n // } else if (parentKey === \"top_cabinet\" || parentKey === \"bottom_cabinet\") {\r\n // feature = layout.getFeatureById(idToFind, true);\r\n // }\r\n }\r\n\r\n return feature;\r\n}\r\n\r\n/**\r\n * Returns parse sqft passed feature id and returns feature or null\r\n * @param featurePassed {object} // data that comes from sqft\r\n // * @param previouslyAddedSqftFeatures {object} //\r\n * @param previouslyAddedSqftFeatures\r\n * @param featureGroup {object} //\r\n * @param parentKey {string} //\r\n * @param activeQuoteIndex {number} //\r\n * @param isCountertop {boolean} //\r\n * @param sqftFromFeature {object} //\r\n * @param cartItems {object} //\r\n * @param layout {object} //\r\n * @returns feature {object}\r\n */\r\nconst getFeatureFromSQFT = (\r\n featurePassed,\r\n previouslyAddedSqftFeatures,\r\n featureGroup,\r\n parentKey,\r\n activeQuoteIndex,\r\n isCountertop,\r\n sqftFromFeature,\r\n cartItems,\r\n layout,\r\n) => {\r\n let isSqftFromFeature = false;\r\n const previouslyAddedSqftFeature = previouslyAddedSqftFeatures.find(existing => {\r\n return featurePassed.id && (existing.sqftId === featurePassed.id) && (existing.currentQuote === activeQuoteIndex)\r\n });\r\n let feature = getFeatureFromCalculatorPassedId(featurePassed, parentKey, featureGroup, layout);\r\n\r\n if (cartItems.length && !feature) {\r\n const alreadyAdded = cartItems.find(cartItem => {\r\n return (cartItem.sqftId) && (cartItem.sqftId === featurePassed.id) && (cartItem.currentQuote === activeQuoteIndex)\r\n })\r\n const hasSamePartIdWithCartFeature = alreadyAdded && featureGroup.part.partId === alreadyAdded.cartFeature.partId\r\n if (hasSamePartIdWithCartFeature) {\r\n feature = alreadyAdded.cartFeature;\r\n }\r\n }\r\n\r\n const hasSamePartIdWithPreviouslyAddedFeature = previouslyAddedSqftFeature && previouslyAddedSqftFeature.partId === featureGroup.part.partId\r\n if (!feature && hasSamePartIdWithPreviouslyAddedFeature) {\r\n feature = previouslyAddedSqftFeature.feature;\r\n }\r\n if (!feature && (isCountertop || parentKey === \"backsplashes\") && sqftFromFeature\r\n && (sqftFromFeature.cartFeature.partId === featureGroup.part.partId)) {\r\n feature = sqftFromFeature.cartFeature;\r\n }\r\n\r\n const state = store.getState();\r\n const {wizardActiveItem, wizardIsActive} = state.wizardState;\r\n\r\n let fromWizardGroupId = featurePassed.fromWizardGroupId;\r\n\r\n if (!fromWizardGroupId && wizardIsActive && wizardActiveItem) {\r\n const featureGroup = layout.getFeatureGroupByPartId(featurePassed.partId);\r\n if (featureGroup) {\r\n const wizardSteps = getWizardGroupsFromTheWizard(featureGroup.dbName || featureGroup.partName);\r\n if (wizardSteps.length) {\r\n // we don't set it to featurePassed, as we need to have all navItems in the dropdown, here we just find\r\n // at least something from the wizard\r\n fromWizardGroupId = wizardSteps[0].stepGroups[0].id;\r\n }\r\n }\r\n }\r\n\r\n const allNavItems = fromWizardGroupId\r\n ? getNavItemsFromTheWizard(featureGroup, \"\", {}, fromWizardGroupId)\r\n : layout.designNavigationItems(featureGroup, {}, \"\", false, true);\r\n\r\n // console.log(\"allNavItems\", allNavItems);\r\n\r\n if (!feature && sqftFromFeature && (\r\n ((parentKey === \"backsplashes\") && sqftFromFeature.cartFeature.partId.includes(\"countertop\"))\r\n || (isCountertop && sqftFromFeature.cartFeature.partId.includes(\"backsplash\"))\r\n || (isCountertop && sqftFromFeature.cartFeature.partId.includes(\"countertop\")\r\n && featureGroup.part.partId !== sqftFromFeature.cartFeature.partId) // case if 2 countertops\r\n )) {\r\n const name1 = sqftFromFeature.cartFeature.getSplittedFeatureName();\r\n const navItem = allNavItems.find(navItem => {\r\n return navItem.part.getSplittedFeatureName() === name1;\r\n });\r\n if (navItem) {\r\n feature = navItem.part;\r\n }\r\n }\r\n if (!feature && featureGroup.part.activeFeature && (!fromWizardGroupId || allNavItems.some(navItem => {\r\n return navItem.part.dbFeature.sharedFeatureName === featureGroup.part.activeFeature.dbFeature.sharedFeatureName\r\n }))) {\r\n feature = featureGroup.part.activeFeature;\r\n }\r\n if (!feature && featurePassed.featureId) {\r\n // we added a real feature with id - go and find it - cases when we load feature from different visualizer\r\n const allNavItems2 = layout.designNavigationItems(featureGroup, {}, \"\", false, \"all\", [], {returnAllFeatures: true});\r\n const foundNavItem = allNavItems2.find(nItem => nItem.part.dbFeature.id === featurePassed.featureId);\r\n if (foundNavItem) {\r\n feature = foundNavItem.part;\r\n }\r\n }\r\n if (!feature && allNavItems.length) {\r\n feature = allNavItems[0].part;\r\n }\r\n\r\n return [feature, isSqftFromFeature, featurePassed.fromWizardGroupId];\r\n}\r\n","import {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {injectIntl} from \"react-intl\";\r\n\r\nconst QtCategoryName = (props) => {\r\n\r\n const {qtCategoryName, intl, fabricatorData} = props;\r\n\r\n return getQtCategoryName(qtCategoryName, intl, fabricatorData)\r\n};\r\n\r\nQtCategoryName.propTypes = {\r\n qtCategoryName: PropTypes.string,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n fabricatorData: store.fabricatorState,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(QtCategoryName)\r\n)\r\n\r\nexport const getQtCategoryName = (qtCategoryName, intl, fabricatorData) => {\r\n if ((fabricatorData.isLowes || fabricatorData.isCaesarStone) && intl.messages) {\r\n if (intl.locale === \"fr-FR\" && intl.messages[\"transDoc.customDisplayName_FR.\" + qtCategoryName]) {\r\n return intl.formatMessage({id: \"transDoc.customDisplayName_FR.\" + qtCategoryName})\r\n } else if (intl.locale === \"pl-PL\" && intl.messages[\"transDoc.customTranslateName_PL.\" + qtCategoryName]) {\r\n return intl.formatMessage({id: \"transDoc.customTranslateName_PL.\" + qtCategoryName})\r\n }\r\n }\r\n\r\n return qtCategoryName\r\n}\r\n","import Label from \"../../shapes/overlays/label\";\r\nimport {getShapeFeatureId} from \"../../../../../helpers/featureHelper\";\r\n\r\nconst SHAPE_LABELS = ['center_island_countertop', 'countertop'];\r\nexport const updateShape = (partId, shape, wizardGroup = null) => {\r\n shape.setPartId(partId);\r\n shape.setFeatureId(getShapeFeatureId(partId));\r\n if (!SHAPE_LABELS.includes(partId)) {\r\n shape.setType(partId);\r\n } else {\r\n shape.setType(undefined);\r\n }\r\n if (wizardGroup) {\r\n shape.setProperty(\"fromWizardGroupId\", wizardGroup.id);\r\n }\r\n};\r\n\r\nexport const initLabel = (labelText, partId, shape) => {\r\n let firstShapeLine = shape.getLines()[0];\r\n\r\n if(firstShapeLine.labelOverlay !== null) {\r\n firstShapeLine.labelOverlay.setLabelText(labelText);\r\n } else {\r\n firstShapeLine.labelOverlay = new Label();\r\n firstShapeLine.labelOverlay.init(firstShapeLine, labelText, partId);\r\n }\r\n};\r\n\r\nexport const initTitle = (labelText, partId, shape) => {\r\n let thirdShapeLine = shape.getLines()[2];\r\n thirdShapeLine.titleOverlay = new Label({\r\n labelTextColor: 'rgba(165, 174, 183, 0.66)',\r\n isTitle: true,\r\n lineOffset: 20\r\n });\r\n thirdShapeLine.titleOverlay.init(thirdShapeLine, labelText, partId);\r\n};\r\n","import flatMap from 'lodash/flatMap';\r\n\r\nimport store from \"./../../store\";\r\nimport * as types from \"../../actions/actionTypes\";\r\nimport LayoutCommon from \"./layoutCommon\";\r\nimport {SQFT_FEATURES} from \"../sqft/constants\";\r\nimport {getSlabsFeatureGroup} from \"../../misc/helpers\";\r\nimport {setActivePreset} from \"../../actions/actionFunctions\";\r\n// import {getBvGroupFeatures} from \"../../api/server-api\";\r\n\r\nexport default class LayoutCommonNew extends LayoutCommon {\r\n\r\n isNewLayout = true;\r\n\r\n // /**\r\n // * Returns feature\r\n // * @param neededId {number}\r\n // * @param withOtherGroups {boolean}\r\n // * @returns feature {object}\r\n // */\r\n // getFeatureById(neededId, withOtherGroups = false) {\r\n // let allFeatures = this.getAllFeatures(withOtherGroups);\r\n // for (let i = 0; i < allFeatures.length; i++) {\r\n // if (allFeatures[i].dbFeature.id === neededId) {\r\n // return allFeatures[i];\r\n // }\r\n // }\r\n // return null\r\n // }\r\n\r\n // /**\r\n // * Returns feature\r\n // * @param skuNumber {string}\r\n // * @param featureGroupPartId {string}\r\n // * @returns feature {object}\r\n // */\r\n // getFeatureBySku(skuNumber, featureGroupPartId= \"\") {\r\n // if (featureGroupPartId) {\r\n // const featureGroupFound = this.getFeatureGroupByPartId(featureGroupPartId);\r\n // if (featureGroupFound) {\r\n // for (let i = 0; i < featureGroupFound.features.length; i++) {\r\n // if (featureGroupFound.features[i].dbFeature.sku === skuNumber) {\r\n // return featureGroupFound.features[i];\r\n // }\r\n // }\r\n // }\r\n // }\r\n // let allFeatures = this.getAllFeatures();\r\n // for (let i = 0; i < allFeatures.length; i++) {\r\n // if (allFeatures[i].dbFeature.sku === skuNumber) {\r\n // return allFeatures[i];\r\n // }\r\n // }\r\n // return null\r\n // }\r\n\r\n /**\r\n * @param partId {string}\r\n * @param compressedFeature {object}\r\n * @param featuresToLoad {Array} // only if layout is changed - we need to load features to changed feature group\r\n * @return featureLoaded {featureInterface}\r\n */\r\n getFeatureFromAllLayouts = (partId, compressedFeature, featuresToLoad) => {\r\n const {dbFeatureId} = compressedFeature;\r\n const parentItems = this.getFeatures(true);\r\n let childSubPart = null;\r\n let featureLoaded = null;\r\n parentItems.forEach(parentGroup => {\r\n if (childSubPart) {\r\n return\r\n }\r\n if (partId === SQFT_FEATURES.slabs) {\r\n childSubPart = getSlabsFeatureGroup(this)\r\n } else if (parentGroup) {\r\n childSubPart = parentGroup.subParts().find(subPart => subPart.part.partId === partId);\r\n }\r\n if (childSubPart && childSubPart.part.features) {\r\n featureLoaded = childSubPart.part.getFeatureById(dbFeatureId, true);\r\n if (!featureLoaded) { // if feature isn't found in the current layout, let's find it in another layouts\r\n let allFeatures = [];\r\n Object.keys(this.layoutNames).forEach((layoutType) => {\r\n if (layoutType !== \"All\") {\r\n allFeatures = [...allFeatures, ...childSubPart.part.featuresList[layoutType]]\r\n }\r\n });\r\n featureLoaded = allFeatures.find((feature) => feature.dbFeature.id === dbFeatureId);\r\n if (!featureLoaded\r\n && (document.kvConfig.visualizerType === \"Kitchen\" || document.kvConfig.visualizerType === \"kvScene\")\r\n && this.qtCategories && this.qtCategories.some(qtCat => qtCat.qtCategoryHasBeenChanged)\r\n && featuresToLoad.length\r\n ) {\r\n // console.info(\"Cart feature is not loaded, trying in change categories:\", dbFeatureId);\r\n this.qtCategories.forEach(qtCat => {\r\n const changedSubPart = qtCat.subParts.find(subPart => subPart.part.partId === partId);\r\n if (changedSubPart) {\r\n // console.info(\"Cart feature is not loaded, found subpart:\", cartItem);\r\n const needToLoadFeature = featuresToLoad.find(dbFeature => dbFeature.id === dbFeatureId);\r\n if (needToLoadFeature) {\r\n changedSubPart.part.setGroupFeatures([needToLoadFeature], 0, false)\r\n }\r\n featureLoaded = childSubPart.part.features.find((feature) => feature.dbFeature.id === dbFeatureId);\r\n // if (featureLoaded) {\r\n // console.info(\"Cart feature is not loaded, it's ok, we found it:\", dbFeatureId, featureLoaded);\r\n // }\r\n }\r\n })\r\n }\r\n if (!featureLoaded) {\r\n if ((partId === \"slabs\") && compressedFeature && compressedFeature.partId) {\r\n const featureGroup = this.getFeatureGroupByPartId(compressedFeature.partId);\r\n if (featureGroup) {\r\n featureLoaded = featureGroup.getFeatureById(dbFeatureId, true);\r\n }\r\n }\r\n }\r\n if (!featureLoaded) {\r\n console.error(\"Cart feature is not loaded:\", partId, dbFeatureId);\r\n }\r\n }\r\n // console.log('featureLoaded', featureLoaded);\r\n }\r\n });\r\n return featureLoaded\r\n }\r\n\r\n\r\n /**\r\n *\r\n * @param bvState {object}\r\n * @param isCartAndUserStatedUpdateNeeded {boolean}\r\n * @param useNames {boolean}\r\n * @param needToChangeLayout {boolean}\r\n * @param firstLoad {boolean}\r\n * @param isFake {boolean}\r\n */\r\n setActiveFeaturesFromObject(\r\n bvState,\r\n isCartAndUserStatedUpdateNeeded = false,\r\n useNames = false,\r\n needToChangeLayout = true,\r\n firstLoad = false,\r\n isFake = false\r\n ) {\r\n if (bvState) {\r\n\r\n const layout_type = +bvState.layout_type;\r\n needToChangeLayout = needToChangeLayout && (layout_type || layout_type === 0) && (layout_type !== +this.type);\r\n\r\n if (needToChangeLayout) {\r\n this.type = layout_type;\r\n }\r\n this.scene = bvState.scene || this.scene;\r\n\r\n console.log(\"bvState===>\", bvState);\r\n console.log(\"bvState firstLoad\", firstLoad);\r\n // to avoid checks below\r\n bvState.disabled_parts = bvState.disabled_parts || [];\r\n\r\n this.getFeatures()\r\n .forEach((parentGroup) => {\r\n let relatedItems = parentGroup.getRelatedItems();\r\n relatedItems.forEach((subPart) => {\r\n const partId = subPart.partId;\r\n let previouslySelectedItem = null;\r\n subPart.selectedFeaturesHistory.some(featureName => {\r\n previouslySelectedItem = subPart.getFeatureByPartName(featureName);\r\n return previouslySelectedItem\r\n });\r\n if (bvState.hasOwnProperty(partId) || previouslySelectedItem) {\r\n if (!bvState.disabled_parts.includes(partId)) {\r\n subPart.disabled = false\r\n }\r\n if (useNames) {\r\n const matchingFeature = (partId === \"backsplash\" && bvState[\"backsplash_type\"])\r\n ? subPart.getFeatureByBacksplashType(bvState[\"backsplash_type\"], bvState[\"backsplash\"])\r\n : subPart.getFeatureByPartName(bvState[partId]);\r\n if (matchingFeature) {\r\n subPart.activeFeature = matchingFeature;\r\n } else if (previouslySelectedItem) {\r\n subPart.activeFeature = previouslySelectedItem;\r\n }\r\n } else {\r\n subPart.activeFeature = subPart.getFeatureById(bvState[partId], true) || parentGroup.getDefaultFeature();\r\n }\r\n if (subPart.layerPositions && subPart.activeFeature) {\r\n // subPart.setLayerPositions(); // enabled // we have to set vanity on its layerPosition, grohe vanities have different sku so can not be found in the code below\r\n Object.keys(subPart.layerPositions).forEach(position => {\r\n const partIdPosition = partId + \"_\" + position;\r\n if (bvState.disabled_parts.includes(partIdPosition)) {\r\n subPart.layerPositions[position] = null;\r\n } else if (bvState[partIdPosition]) {\r\n subPart.layerPositions[position] = useNames\r\n ? subPart.getMatchingPositionFeature(position, subPart.activeFeature, isFake ? this : null)\r\n : subPart.getFeatureById(bvState[partIdPosition], true)\r\n } else if (!((position !== \"C\" && subPart.activeFeature.metaData.layerPosition === \"C\") || (subPart.activeFeature.metaData.layerPosition !== \"C\" && position === \"C\"))) {\r\n subPart.layerPositions[position] = subPart.getMatchingPositionFeature(position, subPart.activeFeature, isFake ? this : null)\r\n }\r\n })\r\n // } else if (subPart.hasAdditionalParts && (subPart.activeFeatureParts == null || !subPart.activeFeatureParts.length)) {\r\n // subPart.activeFeatureParts = subPart.setActiveFeatureParts();\r\n }\r\n subPart.placeholderChanged = !!subPart.activeFeature;\r\n // const {activeQuoteIndex} = store.getState().quotesState;\r\n // subPart.firstClick = !!subPart.activeFeature;\r\n // if (subPart.firstClick) {\r\n // console.log(\"subPart.firstClick\", subPart);\r\n // }\r\n }\r\n if (bvState.disabled_parts.includes(partId)) {\r\n subPart.disabled = true\r\n }\r\n if (!subPart.activeFeature) {\r\n // we might have features uploaded only for one room layout as in case of replacement tub on american_standard_master\r\n subPart.setDefault()\r\n }\r\n if (!subPart.disabled && subPart.layerPositions && Object.values(subPart.layerPositions).every(feature => !feature)) {\r\n subPart.setLayerPositions(); // mirror cases\r\n }\r\n if (subPart.activeFeature && firstLoad) {\r\n if (!subPart.activeFeature.notAvailableInVisualizer) {\r\n subPart.activeFeature.dbFeature.unlocked = true;\r\n }\r\n if (subPart.layerPositions) {\r\n Object.keys(subPart.layerPositions).forEach(position => {\r\n if (subPart.layerPositions[position]) {\r\n subPart.layerPositions[position].dbFeature.unlocked = true;\r\n }\r\n })\r\n }\r\n if (subPart.hasAdditionalParts && subPart.activeFeatureParts && subPart.activeFeatureParts.length) {\r\n subPart.activeFeatureParts.forEach(additionalFeature => {\r\n additionalFeature.dbFeature.unlocked = true;\r\n })\r\n }\r\n }\r\n })\r\n });\r\n\r\n if (needToChangeLayout) {\r\n this.changeLayout(this.getFeatures());\r\n }\r\n\r\n if (isCartAndUserStatedUpdateNeeded) {\r\n this.setCartStateAndUserStateFromBvState(bvState);\r\n }\r\n\r\n const layoutParts = this.designNavigationItems()\r\n .filter(parentGroup => parentGroup.part.categoryEnabled)\r\n .map((parentGroup) => parentGroup.part.partName);\r\n\r\n if (!this.isFakeLayout) {\r\n store.dispatch({\r\n type: types.SET_LAYOUT_DATA_PARTS,\r\n payload: {layoutParts}\r\n });\r\n }\r\n\r\n store.dispatch({\r\n type: types.UPDATE_CANVAS_COUNT\r\n });\r\n\r\n if (bvState.id) {\r\n store.dispatch(setActivePreset(bvState.id));\r\n }\r\n\r\n }\r\n }\r\n\r\n fixFeatureMetaData(dbFeature) {\r\n // if (Array.isArray(dbFeature.metaData.CropCoords) && !dbFeature.metaData.CropCoords[1] && dbFeature.metaData.CropCoords[0]) {\r\n // dbFeature.metaData.CropCoords = dbFeature.metaData.CropCoords[0].split(\",\"); // ['0, 460, 1060, 574'] -> ['0', ' 460', ' 1060', ' 574']\r\n // }\r\n if (!Array.isArray(dbFeature.metaData.RoomLayout) || !dbFeature.metaData.RoomLayout.length) {\r\n dbFeature.metaData.RoomLayout = [\"Layout1\"];\r\n } else {\r\n // console.log(\"dbFeature.metaData.RoomLayout\", dbFeature.metaData.RoomLayout);\r\n dbFeature.metaData.RoomLayout = dbFeature.metaData.RoomLayout.map((mValue) => {\r\n if (typeof mValue !== \"string\" || !mValue.includes(\"Layout\")) {\r\n mValue = \"Layout\" + mValue\r\n }\r\n return mValue\r\n })\r\n }\r\n Object.keys(dbFeature.metaData).forEach(key => {\r\n if (Array.isArray(dbFeature.metaData[key]) && (key !== \"CropCoords\")) {\r\n dbFeature.metaData[key] = flatMap(dbFeature.metaData[key], (metaValue => {\r\n if (typeof metaValue === \"string\") {\r\n if (metaValue.includes(\", \")) {\r\n return metaValue.split(\", \")\r\n } else if (metaValue.includes(\",\")) {\r\n return metaValue.split(\",\")\r\n }\r\n }\r\n return metaValue\r\n }));\r\n if (key === \"SortPosition\") {\r\n dbFeature.metaData[\"SortPositionNum\"] = +(dbFeature.metaData[key][0])\r\n }\r\n }\r\n });\r\n return dbFeature\r\n }\r\n\r\n}\r\n\r\n","import $ from 'jquery';\r\n\r\nimport values from 'lodash/values';\r\nimport find from 'lodash/find';\r\nimport orderBy from 'lodash/orderBy';\r\nimport isEqual from \"lodash/isEqual\";\r\n\r\nimport store from \"./../../store\";\r\nimport {\r\n fixDbFeatureProperties,\r\n getArrayOfIdsFromBvState,\r\n getSlabsFeatureGroup,\r\n} from \"../../misc/helpers\";\r\nimport {baseDashboardImagesPath} from \"../assets\";\r\nimport DesignNavigationItem from \"./designNavigationItem\";\r\nimport ActionTypes from \"../../misc/actionTypes\";\r\nimport {isFeatureEnabled, isVisibleForNavigation} from \"../../misc/displayLogic\";\r\nimport * as types from \"../../actions/actionTypes\";\r\nimport {setActiveQuoteIndex, setQuotes} from \"../../actions/roomsFunctions\";\r\nimport {\r\n restoreCart,\r\n setQtCategoriesLoaded,\r\n // toggleUseFabricatorCostPrices\r\n} from \"../../actions/actionFunctions\";\r\nimport {restoreContractValues} from \"../../actions/contractsActions\";\r\nimport {getBvFeatures} from \"../../api/server-api\";\r\nimport {dbFeatureRelatedFeaturesProperties, PartMenuType} from \"./constants\";\r\nimport {changeSqftFeaturesPopup} from \"../../actions/sqftFunctions\";\r\nimport {SQFT_FEATURES} from \"../sqft/constants\";\r\nimport {getLookId} from \"../look/lookNavigation/lookFunctions2\";\r\nimport {AVAILABLE_VISUALIZER_TYPES, IS_LIXIL_UI, IS_OFFLINE_MODE} from \"../../config\";\r\n// import {getBvGroupFeatures} from \"../../api/server-api\";\r\nimport {getCommonVisualizerType} from \"../../config\";\r\nimport {getCurrentLayout, getCurrentZIndexes} from \"../appLayout\";\r\nimport {LOOK_ROOM_TYPES} from \"../look/core/constants\";\r\nimport {getCurrentRoomType} from \"../appLayout\";\r\nimport Config from \"../../config\";\r\nimport {\r\n fixFeaturesResponse,\r\n getCartItemPartIdFix,\r\n getCompressedCartItems,\r\n getFeatureGroupsProperties, setFeatureGroupsProperties\r\n} from \"../../misc/backendFunctions\";\r\nimport {\r\n getAvailableSteps,\r\n getCompressedAllWizardValues\r\n} from \"../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\nimport {restoreAllWizardSelectedValues} from \"../../actions/wizardFunctions\";\r\nimport {replaceIncorrectSymbols} from \"../../misc/misc2\";\r\nimport {requestAfterRoomChange} from \"../look/lookNavigation/lookNavigationFunctions\";\r\nimport {updateCurrentQuote} from \"../../misc/quotesFunctions\";\r\nimport {\r\n getFeatureGroupFromWizardSteps,\r\n getUpdatedWizardId\r\n} from \"../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions2\";\r\nimport {updateExistingFeature} from \"./featuresFunctions\";\r\nimport {setReceiptSignature} from \"../../actions/printFunctions\";\r\n\r\nexport default class LayoutCommon {\r\n initialized = false;\r\n selectedLayoutFeatures = {};\r\n disabledClickablePartIds = [];\r\n allDbFeatures = {}; // is used for creating fake layouts and checking loaded features. Object! // {\"groupName\": []}\r\n\r\n /**\r\n * An hash-table of parts, so we can find easily needed part by its ID\r\n * @type {Object.}\r\n */\r\n parts = {};\r\n constructor() {}\r\n\r\n hasNavItemsLength(...props) {\r\n const subPart = props[0];\r\n if ((document.kvConfig.visualizerType === \"kvScene\") && (this.type === 3) && (subPart.part.partId === \"center_island_edge\")) {\r\n return false\r\n }\r\n if (!subPart || !this.isNewLayout || (this.type === 2 && (subPart.part.partId === \"oven\"))\r\n || (subPart.part.partId === \"shower_door\")) { // not sure if we can enable it on old kitchen and bathroom\r\n // added oven because it depends on the stove and should be recalculated each time on layout 2\r\n // added shower door as we need to calculate for current showersize\r\n return this.designNavigationItems(...props).length > 0\r\n }\r\n const propName = IS_LIXIL_UI\r\n ? \"all\"\r\n : props[4] ? \"qt\" : \"vis\"; // forQuotingTool or forVisualizer\r\n if (IS_LIXIL_UI) {\r\n props[4] = \"all\"\r\n }\r\n if (!subPart.part._navItemsCount) {\r\n subPart.part._navItemsCount = {}\r\n }\r\n if (!subPart.part._navItemsCount[this.type]) {\r\n subPart.part._navItemsCount[this.type] = {}\r\n }\r\n if (subPart.part._navItemsCount[this.type][propName] > 0) {\r\n return true\r\n }\r\n if (!subPart.part.allFeaturesReceived\r\n || !Number.isInteger(subPart.part._navItemsCount[this.type][propName])\r\n || !subPart.part._navItemsCount.checkedAfterReceived\r\n || (subPart.part.nextFeaturesPageToLoadArray && subPart.part.partId === \"vanity_countertop\")) {\r\n // added vanity_countertop because of the matching feature omggg\r\n subPart.part._navItemsCount[this.type][propName] = this.designNavigationItems(...props).length\r\n }\r\n if (subPart.part.allFeaturesReceived && !subPart.part._navItemsCount.checkedAfterReceived) {\r\n // stop calling navItems func after all features received and it is calculated\r\n subPart.part._navItemsCount.checkedAfterReceived = true;\r\n }\r\n return subPart.part._navItemsCount[this.type][propName] > 0\r\n }\r\n\r\n /**\r\n * Returns the designNavigationItems for the navigation bar\r\n * @param parentItem {DesignNavigationItem} if null is supplied will return the major designNavigationItems,\r\n * otherwise the children of the given parent item\r\n * @param filters {[navigationFilterValueInterface]}\r\n * @param searchText {string}\r\n * @param forFeature {object|boolean} // for new kitchen and bathroom it is forFeature, for old - withPlaceholders\r\n * @param withQuotingToolFeatures {boolean|string}\r\n * @param filterGroups {array}\r\n * @param restOptions {object} // firstOpenedFeature = null, firstOpenedConditions = null, returnAllFeatures = false, forActiveQTCategory = \"\"\r\n * @returns {Array.}\r\n */\r\n designNavigationItems(\r\n parentItem = null,\r\n filters = [],\r\n searchText = \"\",\r\n forFeature = null,\r\n withQuotingToolFeatures = false, // could be false(visualizer only), true(quotingtool only), or \"all\" - all features\r\n filterGroups = [],\r\n restOptions= {}\r\n ) {\r\n const {forActiveQTCategory, returnAllFeatures} = restOptions;\r\n //console.log('parentItem', parentItem);\r\n if (parentItem == null) {\r\n let partsToShow = this.enabledParts();\r\n if (!this.type) { // disable window on the small room layout\r\n partsToShow = partsToShow.filter(parentGroup => parentGroup.partName !== \"Window\");\r\n }\r\n if (document.kvConfig.visualizerType === \"KV\" || document.kvConfig.visualizerType === \"Kitchen\") {\r\n // disable center island\r\n const layoutAbbreviation = this.getCurrentLayoutAbbreviation();\r\n if (!layoutAbbreviation.includes(\"I\")) {\r\n partsToShow = partsToShow.filter(parentGroup => parentGroup.partName !== \"CenterIsland\");\r\n }\r\n }\r\n return orderBy(partsToShow, ['sortOrder']).map(parentGroup => parentGroup.navigationItem());\r\n }\r\n\r\n const thirdParam = this.isNewLayout ? forFeature || parentItem.part.activeFeature : forFeature // withPlaceholders\r\n\r\n const nItems = parentItem.part.navigationSubItems(\r\n filters,\r\n searchText,\r\n thirdParam,\r\n filterGroups,\r\n restOptions\r\n )\r\n // console.log(\"nItems\", nItems);\r\n const navItems = nItems\r\n .filter(feature => {\r\n if (!feature || !feature.part) {\r\n return false\r\n }\r\n if (!this.isNewLayout && !thirdParam && feature.part.partName\r\n && (feature.part.partName.includesCI('placeholder') || feature.part.partName.includesCI('Demo Model'))) {\r\n return false // exclude placeholders;\r\n }\r\n return isVisibleForNavigation(feature.part, withQuotingToolFeatures, forActiveQTCategory)\r\n });\r\n\r\n return withQuotingToolFeatures || returnAllFeatures\r\n ? this.getNotAvailableInVisualizerFeatures(navItems, parentItem.part, filters, searchText, forActiveQTCategory)\r\n : navItems.filter(item => !item.part.notAvailableInVisualizer && isFeatureEnabled(item.part, \"visualizer\"))\r\n }\r\n\r\n setGroupsItemsCount(bvGroups) {\r\n const features = this.getFeatures(true);\r\n const groupKeys = {};\r\n Object.keys(bvGroups).map(key => {\r\n groupKeys[key.toLowerCase()] = key;\r\n });\r\n // console.log(groupKeys);\r\n features.forEach(parentGroup => {\r\n if (parentGroup.menuType === PartMenuType.Simple) {\r\n const dbName = (parentGroup.dbName || parentGroup.partName).toLowerCase();\r\n parentGroup.counts = (groupKeys[dbName] && bvGroups[groupKeys[dbName]])\r\n ? bvGroups[groupKeys[dbName]].counts\r\n : null;\r\n parentGroup.totalFeaturesCount = (groupKeys[dbName] && bvGroups[groupKeys[dbName]])\r\n ? bvGroups[groupKeys[dbName]].totalFeaturesCount\r\n : null\r\n if (IS_OFFLINE_MODE) {\r\n parentGroup.allFeaturesReceived = true;\r\n parentGroup.realFeaturesReceived = true;\r\n }\r\n } else {\r\n parentGroup.relatedItems.forEach((relatedItem) => {\r\n const dbName = (relatedItem.dbName || relatedItem.partName).toLowerCase();\r\n if (relatedItem.partId !== \"wall_configuration\") {\r\n relatedItem.counts = (groupKeys[dbName] && bvGroups[groupKeys[dbName]])\r\n ? bvGroups[groupKeys[dbName]].counts\r\n : null;\r\n }\r\n relatedItem.totalFeaturesCount = (groupKeys[dbName] && bvGroups[groupKeys[dbName]])\r\n ? bvGroups[groupKeys[dbName]].totalFeaturesCount\r\n : null;\r\n if (!relatedItem.counts && !relatedItem.partId.includes(\"decor\")) {\r\n console.log(\"no relatedItem.counts\", relatedItem)\r\n }\r\n if (IS_OFFLINE_MODE) {\r\n relatedItem.allFeaturesReceived = true;\r\n relatedItem.realFeaturesReceived = true;\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n getNotAvailableInVisualizerFeatures = (filteredAvailableFeatures, subPart, filters, searchText, forActiveQTCategory = \"\") => {\r\n if (subPart.getParent && subPart.getParent().partName === \"Other\") { // not in visualizer features, they don't need another check\r\n return filteredAvailableFeatures\r\n }\r\n const notInVisualizerFeaturesThatLeft = subPart.features.filter(feature => {\r\n if (feature.partName && feature.partName.includes(\"laceholder\")) {\r\n return false\r\n }\r\n const featureSplittedName = feature.getSplittedFeatureName();\r\n return feature.notAvailableInVisualizer && isVisibleForNavigation(feature, true, forActiveQTCategory)\r\n && !filteredAvailableFeatures.some(countertop => {\r\n return countertop.part.getSplittedFeatureName() === featureSplittedName\r\n })\r\n })\r\n\r\n let allNotAvailableFeatures = subPart.getFeaturesBySearchText(subPart.getFilteredFeaturesByFilters(filters, notInVisualizerFeaturesThatLeft), searchText);\r\n allNotAvailableFeatures = subPart.returnUniqueNavFeatures\r\n ? subPart.returnUniqueNavFeatures(allNotAvailableFeatures)\r\n : allNotAvailableFeatures.map(_ => new DesignNavigationItem(_.featureName, _));\r\n\r\n return [\r\n ...filteredAvailableFeatures,\r\n ...allNotAvailableFeatures\r\n ]\r\n }\r\n\r\n /**\r\n * returns enabled parts\r\n */\r\n enabledParts(withShadow) {\r\n return this.getFeatures(withShadow).filter(parentGroup => parentGroup.categoryEnabled);\r\n }\r\n\r\n async selectLayout(type, oldType, currentState = null, scene = this.scene, callBack, isFake = false) {\r\n const firstLoad = false; // change if needed\r\n const features = this.getFeatures(true); // true here cause we need backgrounds also to set default!\r\n const currentType = oldType || this.type; // 1) remember previous selection\r\n\r\n // 2) save the current state using feature names, then restore it after the layout has changed\r\n currentState = currentState || this.getActiveFeaturesAsObject(true, false, true);\r\n\r\n if (getCurrentRoomType(this) === LOOK_ROOM_TYPES.as || Config.isVisualizerManagement()) {\r\n currentState.disabled_parts = [];\r\n }\r\n\r\n // 3) save selected features to recover them after layout change back (if they were not found after current set)\r\n this.selectedLayoutFeatures[currentType] = currentState;\r\n\r\n this.type = type; // 4) apply new Layout\r\n this.scene = currentType !== type ? \"1\" : scene; // 4) apply new scene // set first scene if layout is changed\r\n currentState.scene = this.scene; // 4) apply new scene\r\n currentState.layout_type = type; // 4) apply new layout_type\r\n\r\n features.forEach(parentGroup => {\r\n parentGroup.setDefault(this); // setting default after\r\n });\r\n\r\n this.setActiveFeaturesFromObject(currentState, false, true, false, firstLoad, isFake); // 6) set the layers from previous layout\r\n this.changeLayout(this.getFeatures()); // 7) set specific rules for each part\r\n if (!isFake) {\r\n $(window).trigger(ActionTypes.CHANGE_LAYOUT); // 8) refresh canvas\r\n this.updateLocalStorage();\r\n }\r\n if (callBack) {\r\n callBack()\r\n }\r\n console.log(\"this fake\", this);\r\n return Promise.resolve()\r\n }\r\n\r\n setItemsFromBvState = async (bvState,\r\n isCartAndUserStatedUpdateNeeded= false,\r\n additionalSet = (bvState) => bvState,\r\n firstLoad = false,\r\n forVisualizer\r\n ) => {\r\n const neededDbFeatures = getArrayOfIdsFromBvState(bvState).filter(dbFeatureId => {\r\n return !Object.keys(this.allDbFeatures).some(groupName => {\r\n return this.allDbFeatures[groupName].some(feature => feature.id === dbFeatureId)\r\n })\r\n });\r\n const response = neededDbFeatures.length\r\n ? await getBvFeatures(neededDbFeatures, null, false, forVisualizer)\r\n : {data: []}\r\n\r\n // console.log('getBvFeatures response->', responseFeatures);\r\n\r\n // this code is needed because we need to loadNewFeatures for already setted layout type\r\n bvState = bvState || {};\r\n const layout_type = +bvState.layout_type;\r\n const needToChangeLayout = (layout_type || layout_type === 0) && (layout_type !== +this.type);\r\n if (needToChangeLayout) {\r\n this.type = layout_type;\r\n }\r\n this.loadNewFeatures(response.data);\r\n if (typeof additionalSet === \"function\") {\r\n bvState = additionalSet(bvState);\r\n }\r\n this.setActiveFeaturesFromObject(bvState, isCartAndUserStatedUpdateNeeded, false, true, firstLoad);\r\n if (this.isNewLayout && firstLoad) {\r\n this.createCustomConfigurations();\r\n }\r\n await requestAfterRoomChange(this);\r\n $(window).trigger(ActionTypes.UPDATE_ALL_ITEMS);\r\n return response\r\n };\r\n\r\n changeLayout(features) {\r\n features.forEach(parentGroup => {\r\n parentGroup.changeLayout(this.type);\r\n parentGroup.relatedItems.forEach(ri => ri.changeLayout(this.type));\r\n });\r\n }\r\n\r\n getFeatures(withShadow = false) {\r\n return withShadow ? values(this.parts) : values(this.parts).filter(part => {\r\n return [\"Global Shadow\", \"Globals\", \"Other\", \"Background\", \"Backgrounds\"].every(groupName => part.partName !== groupName)\r\n });\r\n }\r\n\r\n fixFeatureBeforeLoad(dbFeature) {\r\n dbFeature = fixDbFeatureProperties(dbFeature);\r\n if (Array.isArray(dbFeature.metaData.RoomLayout)) {\r\n dbFeature = this.fixFeatureMetaData(dbFeature)\r\n }\r\n return dbFeature\r\n }\r\n\r\n loadNewFeatures(dbFeatures = [], forParentGroup = null, applyCustomConfigurations = true, forNextBvState = null) {\r\n //features could be also loaded directly to the part, check part.js -> setGroupFeatures method\r\n\r\n //dbFeatures can be an object! {features:[], relatedFeatures: []}\r\n const dbFeaturesArray = fixFeaturesResponse(dbFeatures);\r\n\r\n const parentGroups = this.getFeatures(true);\r\n let relatedFeatures = [];\r\n\r\n let loadedDbFeatures = null;\r\n if (forParentGroup && dbFeatures[0] && ((forParentGroup.dbName || forParentGroup.partName) === dbFeatures[0].groupName)\r\n && this.allDbFeatures[dbFeatures[0].groupName]) {\r\n loadedDbFeatures = this.allDbFeatures[dbFeatures[0].groupName].slice();\r\n // console.log(\"loadedDbFeatures\", loadedDbFeatures);\r\n }\r\n\r\n for (let i = 0; i < dbFeaturesArray.length; i++) {\r\n let dbFeature = dbFeaturesArray[i];\r\n if (!dbFeature) {\r\n continue;\r\n }\r\n dbFeatureRelatedFeaturesProperties.forEach(property => {\r\n if (Array.isArray(dbFeature[property]) && dbFeature[property].length) {\r\n dbFeature[property].forEach(relatedFeature => {\r\n if (relatedFeatures.some(relFeature => relFeature.id === relatedFeature.id)) {\r\n return\r\n }\r\n relatedFeatures.push(relatedFeature)\r\n });\r\n // console.log(\"dbFeature.relatedFeatures\", dbFeature.relatedFeatures);\r\n }\r\n })\r\n this.loadDbFeature(dbFeature, parentGroups, forParentGroup, loadedDbFeatures)\r\n }\r\n\r\n if (relatedFeatures.length) {\r\n for (let i = 0; i < relatedFeatures.length; i++) {\r\n this.loadDbFeature(relatedFeatures[i], parentGroups)\r\n }\r\n }\r\n\r\n if (document.kvConfig.visualizerType === \"bvLook\" && applyCustomConfigurations) {\r\n const isAsBathroomState = forNextBvState && forNextBvState.visualizerType === \"bvLook\" && forNextBvState.layout_type >= 10;\r\n this.createCustomConfigurations(isAsBathroomState);\r\n }\r\n\r\n return true\r\n }\r\n\r\n fixFeatureMetaData(dbFeature) {\r\n // it is needed only for bvScene - it has it's own method\r\n // dbFeature.metaData.RoomLayout = dbFeature.metaData.RoomLayout.map((mValue) => {\r\n // Object.values(LayoutType).map(val => val + \"\").forEach(stringNum => {\r\n // if (mValue === stringNum) {\r\n // mValue = \"Layout\" + mValue\r\n // }\r\n // })\r\n // return mValue\r\n // })\r\n return dbFeature\r\n }\r\n\r\n loadDbFeature(dbFeature, parentGroups, forParentGroup = null, allDbFeaturesToCheck = null) {\r\n if (!dbFeature || (dbFeature.employeesOnly && !document.kvConfig.isBackend)) {\r\n return;\r\n }\r\n const loadedDbFeatures = allDbFeaturesToCheck || this.allDbFeatures[dbFeature.groupName];\r\n if (loadedDbFeatures && loadedDbFeatures.length) {\r\n for (let i = 0; i < loadedDbFeatures.length; i++) {\r\n if (loadedDbFeatures[i].id === dbFeature.id) {\r\n // console.log(\"featureFound\", featureFound);\r\n updateExistingFeature(dbFeature, loadedDbFeatures[i], this);\r\n return;\r\n }\r\n }\r\n }\r\n dbFeature = this.fixFeatureBeforeLoad(dbFeature);\r\n let loaded = false;\r\n if (forParentGroup && !(document.kvConfig.visualizerType === \"bvLook\" && forParentGroup.partName === \"Towel\") // they should be in separate groups\r\n && (forParentGroup.dbName === dbFeature.groupName || forParentGroup.partName === dbFeature.groupName)) {\r\n loaded = forParentGroup.load(dbFeature);\r\n }\r\n if (!loaded) {\r\n for (let i = 0; i < parentGroups.length; i++) {\r\n const parentGroup = parentGroups[i];\r\n loaded = parentGroup.load(dbFeature);\r\n if (loaded) {\r\n break;\r\n }\r\n }\r\n if (!loaded && this.parts[\"Other\"]) {\r\n this.parts[\"Other\"].load(dbFeature);\r\n }\r\n }\r\n // dbFeature.isRelatedDbFeature ? this.allDbFeatures[dbFeature.groupName].unshift(dbFeature) : this.allDbFeatures[dbFeature.groupName].push(dbFeature);\r\n if (!this.allDbFeatures[dbFeature.groupName]) {\r\n this.allDbFeatures[dbFeature.groupName] = [];\r\n }\r\n this.allDbFeatures[dbFeature.groupName].push(dbFeature);\r\n }\r\n\r\n createCustomConfigurations(isAsBathroomState = null) {\r\n // after load callBack for each part(to set specific rules)\r\n this.getFeatures().forEach(parentGroup => {\r\n parentGroup.setSpecificRules ? parentGroup.setSpecificRules(isAsBathroomState) : null;\r\n });\r\n }\r\n\r\n setDefaultFeatures() {\r\n this.getFeatures(true).forEach(parentGroup => {\r\n parentGroup.setDefault(this);\r\n });\r\n }\r\n\r\n /**\r\n * Returns all features by text\r\n */\r\n\r\n getAllFeaturesByText(searchText) {\r\n let allFeatures = [];\r\n this.getFeatures().forEach((parentGroup) => {\r\n let subParts = parentGroup.subParts();\r\n subParts.forEach((subPart) => {\r\n allFeatures = [...allFeatures, ...subPart.part.features.filter(feature => feature.partName && feature.partName.toLowerCase().includes(searchText.toLowerCase()))]\r\n })\r\n });\r\n // console.log('allFeatures', allFeatures);\r\n return allFeatures\r\n }\r\n\r\n /**\r\n * Returns all features\r\n * @param withOtherGroups {boolean}\r\n */\r\n\r\n getAllFeatures(withOtherGroups = false) {\r\n let allFeatures = [];\r\n this.getFeatures(withOtherGroups).forEach((parentGroup) => {\r\n let subParts = parentGroup.subParts();\r\n subParts.forEach((subPart) => {\r\n allFeatures = [...allFeatures, ...subPart.part.features]\r\n })\r\n });\r\n // console.log('allFeatures', allFeatures);\r\n return allFeatures\r\n }\r\n\r\n /**\r\n * Returns feature\r\n * @param neededId {number}\r\n * @param withOtherGroups {boolean}\r\n * @returns feature {object}\r\n */\r\n getFeatureById(neededId, withOtherGroups = false) {\r\n let feature = null;\r\n this.getFeatures(withOtherGroups).forEach((parentGroup) => {\r\n if (!feature) {\r\n let subParts = parentGroup.subParts();\r\n subParts.forEach((subPart) => {\r\n if (!feature) {\r\n feature = subPart.part.getFeatureById(neededId, true);\r\n }\r\n })\r\n }\r\n });\r\n return feature\r\n }\r\n\r\n /**\r\n * Returns feature\r\n * @param skuNumber {string}\r\n * @param featureGroupPartId {string}\r\n * @param allLayouts {boolean}\r\n * @param withSharedFeatureName {boolean}\r\n * @returns feature {object}\r\n */\r\n getFeatureBySku(skuNumber, featureGroupPartId= \"\", allLayouts = false, withSharedFeatureName = false) {\r\n const propToSearch = withSharedFeatureName ? \"sharedFeatureName\" : \"sku\";\r\n if (featureGroupPartId) {\r\n const featureGroupFound = this.getFeatureGroupByPartId(featureGroupPartId);\r\n if (featureGroupFound) {\r\n if (featureGroupFound && featureGroupFound.activeFeature && featureGroupFound.activeFeature.dbFeature[propToSearch] === skuNumber) {\r\n return featureGroupFound.activeFeature\r\n }\r\n const searchFrom = featureGroupFound.getFeaturesForNavigationFrom\r\n ? featureGroupFound.getFeaturesForNavigationFrom({returnAllFeatures: allLayouts})\r\n : featureGroupFound.features;\r\n for (let i = 0; i < searchFrom.length; i++) {\r\n if (searchFrom[i].dbFeature[propToSearch] === skuNumber) {\r\n return searchFrom[i];\r\n }\r\n }\r\n }\r\n }\r\n const allParents = this.getFeatures();\r\n for (let i = 0; i < allParents.length; i++) {\r\n const subParts = allParents[i].subParts();\r\n for (let j = 0; j < subParts.length; j++) {\r\n const featureGroup = subParts[j].part;\r\n if (featureGroup.activeFeature) {\r\n if (featureGroup.activeFeature.dbFeature[propToSearch] === skuNumber) {\r\n return featureGroup.activeFeature\r\n }\r\n const features = [...featureGroup.features, ...featureGroup.featuresParts];\r\n const sameSkuFeatures = features.filter(feature => feature.dbFeature[propToSearch] === skuNumber);\r\n if (!sameSkuFeatures.length) {\r\n continue;\r\n }\r\n if (featureGroup.activeFeature.metaData[\"Side\"]) {\r\n const sameSide = sameSkuFeatures.find(feature => {\r\n return isEqual(feature.metaData[\"Side\"], featureGroup.activeFeature.metaData[\"Side\"])\r\n });\r\n if (sameSide) {\r\n return sameSide\r\n }\r\n }\r\n return sameSkuFeatures[0]\r\n } else {\r\n for (let k = 0; k < featureGroup.features.length; k++) {\r\n if (featureGroup.features[k].dbFeature[propToSearch] === skuNumber) {\r\n return featureGroup.features[k];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return null\r\n }\r\n\r\n /**\r\n * Returns active installations\r\n */\r\n getActiveInstallations() {\r\n const {instState} = store.getState();\r\n return Object.assign({}, instState, {instOpened: false});\r\n }\r\n\r\n addCartAndUserStatesToLocalStorage(bvState) {\r\n const {cartState, userState, sqftState, bathroomVisualizerState, wizardState, fabricatorState} = store.getState();\r\n\r\n bvState.cartState = Object.assign({}, cartState, {\r\n recentlyViewedItems: [],\r\n cartItems: getCompressedCartItems(cartState.cartItems),\r\n displayLogicCartItems: getCompressedCartItems(cartState.displayLogicCartItems),\r\n });\r\n\r\n const lookId = getLookId(bathroomVisualizerState.activePreset, bathroomVisualizerState.bvPresets);\r\n bvState.userState = userState;\r\n bvState.id = bathroomVisualizerState.activePreset;\r\n bvState.lookId = lookId;\r\n bvState.useSqftCartPopup = sqftState ? sqftState.sqftFeaturesPopup.enabled : false;\r\n bvState.useFabricatorCostPrices = fabricatorState.settings.useFabricatorCostPrices;\r\n if (wizardState.wizardIsActive) {\r\n bvState.allWizardsValues = getCompressedAllWizardValues(wizardState.allWizardsValues);\r\n }\r\n bvState = getFeatureGroupsProperties(bvState, this);\r\n return bvState\r\n }\r\n\r\n /**\r\n * Returns activeFeatures object\r\n */\r\n\r\n getStonesActiveFeatures() {\r\n return this.getActiveFeatures(true).filter(activeFeature => activeFeature.cartFeature && activeFeature.cartFeature.isStoneFeature)\r\n }\r\n\r\n addDisabledPartsToLocalStorage(bvState) {\r\n const disabledPartIds = this.getDisabledFeatures();\r\n if (disabledPartIds.length) {\r\n bvState.disabled_parts = disabledPartIds;\r\n }\r\n return bvState\r\n }\r\n\r\n /**\r\n * @param useNames {boolean}\r\n * @param returnAllData {boolean}\r\n * @param returnAllFeatures {boolean}\r\n */\r\n getActiveFeaturesAsObject(useNames = false, returnAllData = true, returnAllFeatures = false) {\r\n let bvState = {};\r\n let activeFeatures = this.getActiveFeatures(returnAllFeatures, false, true);\r\n // console.log('activeFeatures', activeFeatures);\r\n activeFeatures.forEach((activeFeature) => {\r\n if (!activeFeature.cartFeature) {\r\n return\r\n }\r\n bvState[activeFeature.partId] = useNames\r\n ? activeFeature.cartFeature.getMatchingFeatureName()\r\n : activeFeature.cartFeature.dbFeature.id;\r\n });\r\n\r\n bvState.visualizerType = this.visualizerType; // to apply correct visualizer on quote open after save\r\n bvState.toolVersion = document.kvConfig.toolVersion; // to apply correct visualizer on quote open after save\r\n bvState.navigationType = document.kvConfig.navigationType; // to open in dashboard correct UI;\r\n\r\n bvState = this.addSpecificPropertiesToLocalStorage(bvState, useNames, returnAllFeatures);\r\n bvState = this.addDisabledPartsToLocalStorage(bvState);\r\n bvState.bvStateVersion = 2; //todo to test\r\n\r\n if (returnAllData) {\r\n bvState.installations = this.getActiveInstallations();\r\n bvState = this.addCartAndUserStatesToLocalStorage(bvState);\r\n }\r\n\r\n return bvState\r\n }\r\n\r\n /**\r\n * @param dbFeatureId {number}\r\n * @param featureGroup {featureGroupInterface}\r\n * @param featuresToLoad {array}\r\n * @return {featureInterface}\r\n */\r\n getLoadedFeatureById = (dbFeatureId, featureGroup, featuresToLoad = []) => {\r\n let featureLoaded = featureGroup.features.find((feature) => feature.dbFeature.id === dbFeatureId);\r\n if (!featureLoaded && featureGroup.featuresParts) {\r\n featureLoaded = featureGroup.featuresParts.find((feature) => feature.dbFeature.id === dbFeatureId);\r\n }\r\n if (!featureLoaded) { // if feature isn't found in the current layout, let's find it in another layouts\r\n let allFeatures = [];\r\n Object.keys(this.layoutNames).forEach((layoutType) => {\r\n if (layoutType !== \"All\") {\r\n allFeatures = [...allFeatures, ...featureGroup.featuresList[layoutType]]\r\n }\r\n });\r\n featureLoaded = allFeatures.find((feature) => feature.dbFeature.id === dbFeatureId);\r\n if (!featureLoaded\r\n && (document.kvConfig.visualizerType === \"Kitchen\" || document.kvConfig.visualizerType === \"kvScene\")\r\n && this.qtCategories && this.qtCategories.some(qtCat => qtCat.qtCategoryHasBeenChanged)\r\n && featuresToLoad.length\r\n ) {\r\n // console.info(\"Cart feature is not loaded, trying in change categories:\", dbFeatureId);\r\n this.qtCategories.forEach(qtCat => {\r\n const changedSubPart = qtCat.subParts.find(subPart => {\r\n return subPart.part.partId === featureGroup.partId\r\n });\r\n if (changedSubPart) {\r\n // console.info(\"Cart feature is not loaded, found subpart:\", ci);\r\n const needToLoadFeature = featuresToLoad.find(dbFeature => dbFeature.id === dbFeatureId);\r\n if (needToLoadFeature) {\r\n changedSubPart.part.setGroupFeatures([needToLoadFeature], 0, false)\r\n }\r\n featureLoaded = featureGroup.features.find((feature) => {\r\n return feature.dbFeature.id === dbFeatureId\r\n });\r\n // if (featureLoaded) {\r\n // console.info(\"Cart feature is not loaded, it's ok, we found it:\", dbFeatureId, featureLoaded);\r\n // }\r\n }\r\n })\r\n }\r\n // console.log('featureLoaded', featureLoaded);\r\n if (!featureLoaded) {\r\n console.error(\"Cart feature is not loaded:\", dbFeatureId);\r\n }\r\n }\r\n return featureLoaded\r\n }\r\n\r\n /**\r\n * Get Cart Items From BvState\r\n * @param cartItems {Array}\r\n * @param featuresToLoad {Array} // only if layout is changed - we need to load features to changed feature group\r\n * @param checkAllLayouts {boolean}\r\n * @return {Array}\r\n */\r\n getCartItemsFromBvState(cartItems = [], featuresToLoad = [], checkAllLayouts = false) {\r\n // const slabGroup = getSimilarFeatureGroup(SQFT_FEATURES.slabs, SQFT_FEATURES.slabs);\r\n // parentItems.push(slabGroup);\r\n\r\n const setCustomPrices = (feature, fromCartItem) => {\r\n if (feature && feature.dbFeature && fromCartItem && fromCartItem.cartFeature && fromCartItem.cartFeature.hasOwnProperty(\"customCost\")) {\r\n feature.dbFeature.priceWasChanged = true;\r\n feature.dbFeature.cost = fromCartItem.cartFeature.customCost;\r\n feature.dbFeature.fabricatorCost = fromCartItem.cartFeature.customCost;\r\n feature.dbFeature.price = fromCartItem.cartFeature.customPrice;\r\n }\r\n }\r\n\r\n return cartItems\r\n .map(ci => {\r\n\r\n const layout = checkAllLayouts && ci.fromVisualizerType ? getCurrentLayout(ci.fromVisualizerType) : this;\r\n if (layout.isNewLayout) {\r\n const partId = getCartItemPartIdFix(ci.partId);\r\n let cartFeature = layout.getFeatureFromAllLayouts(ci.partId, ci.cartFeature, featuresToLoad);\r\n setCustomPrices(cartFeature, ci);\r\n let newCartItem = Object.assign({}, ci, {\r\n partId,\r\n currentQuote: ci.currentQuote || 0,\r\n cartFeature: cartFeature\r\n });\r\n if (ci.relatedProductParent) {\r\n newCartItem.relatedProductParent = layout.getFeatureFromAllLayouts(ci.relatedProductParent.partId, ci.relatedProductParent, featuresToLoad);\r\n }\r\n if (ci.bundleParentId) {\r\n newCartItem.bundleParentId = ci.bundleParentId;\r\n }\r\n if (Number.isInteger(newCartItem.fromWizardId)) {\r\n newCartItem.fromWizardId = getUpdatedWizardId(newCartItem.fromVisualizerType, newCartItem.fromWizardId)\r\n }\r\n if (cartFeature && cartFeature.dbFeature) { //if we couldn't find feature then we will try to restore it from old layout\r\n return newCartItem\r\n }\r\n }\r\n\r\n const parentItems = layout.getFeatures(true);\r\n const dbFeatureId = ci.cartFeature.dbFeatureId || ci.fabFeatId || (ci.cartFeature.dbFeature ? ci.cartFeature.dbFeature.id : null); //old logic support\r\n if (!dbFeatureId) {\r\n console.log(\"NO DB FEATURE ID\", ci);\r\n }\r\n const ciFeature = ci.cartFeature; // we have to remember what has come from backend to be able to restore custom price\r\n ci.cartFeature = ci.cartFeature || {};\r\n ci.partId = getCartItemPartIdFix(ci.partId);\r\n ci.currentQuote = ci.currentQuote || 0;\r\n let childSubPart = null;\r\n parentItems.forEach(parentGroup => {\r\n if (childSubPart || !parentGroup) {\r\n return\r\n }\r\n if (ci.partId === SQFT_FEATURES.slabs) {\r\n childSubPart = getSlabsFeatureGroup(layout);\r\n childSubPart = childSubPart.part ? childSubPart.part : childSubPart\r\n } else {\r\n //changed subParts() to relatedItems because on this task QCDES-2593\r\n childSubPart = parentGroup.relatedItems.find(relItem => relItem.partId === ci.partId);\r\n }\r\n if (childSubPart && childSubPart.features) {\r\n ci.cartFeature = layout.getLoadedFeatureById(dbFeatureId, childSubPart, featuresToLoad);\r\n }\r\n });\r\n setCustomPrices(ci.cartFeature, {cartFeature: ciFeature});\r\n if (Number.isInteger(ci.fromWizardId)) {\r\n ci.fromWizardId = getUpdatedWizardId(ci.fromVisualizerType, ci.fromWizardId)\r\n }\r\n if (!ci.cartFeature || !ci.cartFeature.dbFeature) {\r\n console.error(\"cartFeature not loaded!\", ci);\r\n }\r\n return ci\r\n })\r\n .filter(ci => ci.cartFeature && ci.cartFeature.dbFeature); //prevent error's that are caused by missing feature\r\n }\r\n\r\n bvStateHasLockedItems(bvState) {\r\n return this.getFeatures().some((parentGroup) => {\r\n let partDataHasLockedItems = false;\r\n if (parentGroup.menuType === 0 && parentGroup.partName !== \"Toilet\") {\r\n const partId = parentGroup.partId;\r\n if (bvState.hasOwnProperty(partId)) {\r\n const feature = parentGroup.getFeatureById(bvState[partId]);\r\n if (feature && !feature.dbFeature.unlocked) {\r\n // console.log('found!', feature);\r\n partDataHasLockedItems = true;\r\n }\r\n }\r\n } else {\r\n let subParts = parentGroup.relatedItems;\r\n subParts.forEach((subPart) => {\r\n const partId = subPart.partId;\r\n if (bvState.hasOwnProperty(partId)) {\r\n const feature = subPart.getFeatureById(bvState[partId]);\r\n if (feature && !feature.dbFeature.unlocked) {\r\n // console.log('found!', feature, index);\r\n partDataHasLockedItems = true;\r\n }\r\n // if (partId === \"shower_body\") {\r\n // }\r\n }\r\n })\r\n }\r\n return partDataHasLockedItems\r\n });\r\n }\r\n\r\n /**\r\n * @param qtCategories {array}\r\n * @return void // creates array of featureGroups features and loads them. skips already loaded\r\n */\r\n loadFeatureGroupFeatures = (qtCategories) => {\r\n let featureGroupFeatures = [];\r\n let needToLoadFeatureGroupsFeatures = [];\r\n // qtCategories.forEach(qtCategory => {\r\n // qtCategory.featureGroups.forEach(featureGroup => {\r\n // if (featureGroup.features && featureGroup.features.length) {\r\n // featureGroup.features.forEach(dbFeature => {\r\n // if (!dbFeature.metaData) {\r\n // console.log(\"no metadata found\", dbFeature);\r\n // }\r\n // })\r\n // }\r\n // });\r\n // });\r\n const parentParts = this.getFeatures();\r\n qtCategories\r\n .filter(qtCategory => {\r\n return qtCategory.enabled && qtCategory.featureGroups.some(featureGroup => featureGroup.enabled)\r\n })\r\n .forEach(qtCategory => {\r\n qtCategory.featureGroups\r\n .filter(featureGroup => {\r\n const groupName = featureGroup.groupName.toLowerCase();\r\n for (let i = 0; i < parentParts.length; i++) {\r\n const parentPart = parentParts[i];\r\n const subPartItems = parentPart.subParts();\r\n const item = subPartItems.find(subPartItem => {\r\n const dbName = (subPartItem.part.dbName || subPartItem.part.partName).toLowerCase();\r\n return groupName === dbName\r\n });\r\n if (item) {\r\n const navItems = this.designNavigationItems(item, {}, \"\", false, true);\r\n if (!navItems.length && !needToLoadFeatureGroupsFeatures.some(sPart => sPart.part.partId === item.part.partId)) {\r\n needToLoadFeatureGroupsFeatures.push(item);\r\n }\r\n // console.log(\"features already exist:\", groupName);\r\n return false\r\n }\r\n }\r\n return true\r\n })\r\n .forEach(featureGroup => {\r\n if (featureGroup.features && featureGroup.features.length) {\r\n featureGroupFeatures = [...featureGroupFeatures, ...featureGroup.features]\r\n }\r\n });\r\n });\r\n this.loadNewFeatures(featureGroupFeatures, null, false);\r\n return needToLoadFeatureGroupsFeatures\r\n };\r\n\r\n addSubPartProperties(subPart, featureGroup, qtCategory, isComplex = false) {\r\n subPart.part.qtCategoryName = qtCategory.name;\r\n subPart.part.featureGroupVisible = featureGroup.visible;\r\n subPart.part.featureGroupEnabled = featureGroup.enabled;\r\n subPart.part.displayType = featureGroup.displayType || 3;\r\n subPart.part.featureGroupEnabled = featureGroup.enabled;\r\n subPart.part.unitText = featureGroup.unitText;\r\n subPart.hasFeatures = featureGroup.hasFeatures;\r\n if (!isComplex) {\r\n subPart.part.customGroupDisplayName = featureGroup.customDisplayName;\r\n subPart.part.description = featureGroup.description;\r\n subPart.part.customDescription = featureGroup.customDescription;\r\n subPart.part.customImageUrl = featureGroup.customImageUrl ? baseDashboardImagesPath + featureGroup.customImageUrl : \"\";\r\n if ((this.visualizerType === AVAILABLE_VISUALIZER_TYPES.kvScene)) {\r\n if (subPart.part.partId === \"center_island_sink\") {\r\n const anotherFg = this.getFeatureGroupByPartId(\"sink\");\r\n if (anotherFg) {\r\n anotherFg.customGroupDisplayName = subPart.part.customGroupDisplayName;\r\n anotherFg.description = subPart.part.description;\r\n anotherFg.customDescription = subPart.part.customDescription;\r\n anotherFg.customImageUrl = subPart.part.customImageUrl;\r\n }\r\n } else if (subPart.part.partId === \"center_island_faucet\") {\r\n const anotherFg = this.getFeatureGroupByPartId(\"faucet\");\r\n if (anotherFg) {\r\n anotherFg.customGroupDisplayName = subPart.part.customGroupDisplayName;\r\n anotherFg.description = subPart.part.description;\r\n anotherFg.customDescription = subPart.part.customDescription;\r\n anotherFg.customImageUrl = subPart.part.customImageUrl;\r\n }\r\n }\r\n }\r\n }\r\n /*** HERE WE SET SAME PROPERTIES FOR SPECIFIC QT Category ***/\r\n let qtCatProperties = {\r\n qtCategoryId: qtCategory.id,\r\n qtCategoryName: qtCategory.name,\r\n featureGroupVisible: featureGroup.visible,\r\n featureGroupEnabled: featureGroup.enabled,\r\n // hasFeatures: featureGroup.hasFeatures, // NOT SURE WHERE WE NEED THAT\r\n }\r\n if (!isComplex) {\r\n qtCatProperties.customGroupDisplayName = featureGroup.customDisplayName;\r\n qtCatProperties.description = featureGroup.description;\r\n qtCatProperties.customDescription = featureGroup.customDescription;\r\n qtCatProperties.customImageUrl = featureGroup.customImageUrl ? baseDashboardImagesPath + featureGroup.customImageUrl : \"\";\r\n }\r\n if (!subPart.part.qtCatProperties) {\r\n subPart.part.qtCatProperties = {};\r\n }\r\n subPart.part.qtCatProperties[qtCategory.name] = qtCatProperties;\r\n }\r\n\r\n get qtCategories() {\r\n //NOTA BENE !!! kitchen layout has it's own get qtCategories() method\r\n return this.qtCategoriesList\r\n }\r\n\r\n setQtCategoriesSubparts(qtCategories) {\r\n const parentParts = [...this.getFeatures(), this.parts[\"Other\"]];\r\n // console.log('parentParts', parentParts);\r\n let hasFeaturePropertyName = getCommonVisualizerType(this.visualizerType);\r\n this.qtCategoriesList = qtCategories\r\n .map(qtCategory => { //todo remove this after we push staging backend\r\n if (Array.isArray(qtCategory.featureGroups)) {\r\n qtCategory.featureGroups = qtCategory.featureGroups.map((featureGroup) => {\r\n if (this.isNewLayout) { // ignoreHasFeaturesProperty\r\n featureGroup.hasFeatures = {\r\n bathroom: true,\r\n kitchen: true,\r\n fireplace: true,\r\n laundryroom: true,\r\n }\r\n } else if (!featureGroup.hasFeatures) {\r\n featureGroup.hasFeatures = {\r\n bathroom: featureGroup.hasBVFeatures,\r\n kitchen: featureGroup.hasKVFeatures,\r\n fireplace: true,\r\n laundryroom: true,\r\n }\r\n }\r\n if (featureGroup.hasFeatures[hasFeaturePropertyName] && Array.isArray(featureGroup.features)\r\n && (featureGroup.features.length > 0 && featureGroup.features.length < 50)\r\n && !featureGroup.features.some(dbFeature => isFeatureEnabled({dbFeature}, \"quotingTool\", \"\", hasFeaturePropertyName))) {\r\n // this is a fix we need to do on the backend! if features.length is more than 50 and they all are disabled\r\n // for QuotingTool - hasFeatures.bathroom should be false!\r\n featureGroup.hasFeatures[hasFeaturePropertyName] = false\r\n }\r\n return featureGroup\r\n })\r\n }\r\n return qtCategory\r\n })\r\n .filter(qtCategory => {\r\n return qtCategory.enabled // 1) remove disabled qtCategories\r\n && Array.isArray(qtCategory.featureGroups) && qtCategory.featureGroups.some((featureGroup) => {\r\n return featureGroup.hasFeatures && featureGroup.hasFeatures[hasFeaturePropertyName] // 1) remove qtCategories without visualizerTypeFeatures\r\n })\r\n })\r\n .sort((a, b) => a.order !== b.order ? a.order < b.order ? -1 : 1 : 0) // sort by order\r\n .map((qtCategory) => {\r\n let subParts = [];\r\n qtCategory.featureGroups\r\n .filter(featureGroup => {\r\n const featureGroupName = featureGroup.groupName.toLowerCase();\r\n return featureGroupName !== \"walls\"\r\n }) // remove walls featureGroup // clone.quotesflooring.com/visualizer#/ issue\r\n .sort((a, b) => a.order !== b.order ? a.order < b.order ? -1 : 1 : 0) // sort by order\r\n .forEach(featureGroup => {\r\n let subPart = null;\r\n const featureGroupName = featureGroup.groupName.toLowerCase();\r\n // if (featureGroupName === \"walls\") {\r\n // const wallsParent = parentParts.find(parentPart => parentPart.partName === \"Walls\");\r\n // if (wallsParent) {\r\n // subParts = [...subParts, ...wallsParent.subParts().map(wallsSubPart => {\r\n // this.addSubPartProperties(wallsSubPart, featureGroup, qtCategory, false);\r\n // return wallsSubPart\r\n // })];\r\n // }\r\n // } else {\r\n //\r\n // }\r\n for (let i = 0; i < parentParts.length; i++) {\r\n const parentPart = parentParts[i];\r\n const subPartItems = parentPart.relatedItems.map(_ => new DesignNavigationItem(_.partName, _));\r\n const item = subPartItems.find(subPartItem => {\r\n if (featureGroupName === \"shower pan\" && document.kvConfig.visualizerType === \"bvScene\") {\r\n const dbName = (subPartItem.part.dbName || \"\").toLowerCase();\r\n const dbName2 = (subPartItem.part.partName || \"\").toLowerCase();\r\n return featureGroupName === dbName || featureGroupName === dbName2\r\n } else if (featureGroupName === \"vanity\" && document.kvConfig.visualizerType === \"bvLook\") {\r\n return subPartItem.part.partId === 'vanity_cabinet'\r\n }\r\n const dbName = (subPartItem.part.dbName || subPartItem.part.partName).toLowerCase();\r\n // if (featureGroupName === dbName && (this.visualizerType === AVAILABLE_VISUALIZER_TYPES.kvScene)) {\r\n // if (dbName === \"sink\" && (subPartItem.part.partId === \"center_island_sink\")) {\r\n // return false // we should show back countertop sink instead of sink on the new Kitchen\r\n // } else if (dbName === \"faucet\" && (subPartItem.part.partId === \"center_island_faucet\")) {\r\n // return false // we should show back countertop faucet instead of faucet on the new Kitchen\r\n // }\r\n // }\r\n return featureGroupName === dbName\r\n });\r\n if (item) {\r\n subPart = item;\r\n this.addSubPartProperties(subPart, featureGroup, qtCategory, false);\r\n break;\r\n }\r\n }\r\n if (!subPart) { // add it to Other group\r\n subPart = this.addNonVisualizerSubPart(featureGroup.groupName);\r\n this.addSubPartProperties(subPart, featureGroup, qtCategory, false);\r\n }\r\n subParts.push(subPart)\r\n });\r\n\r\n const self = this;\r\n\r\n const defaultSubParts = subParts.filter(subPart => {\r\n return subPart && subPart.part.featureGroupEnabled\r\n && (subPart.part.featureGroupVisible || (!subPart.part.featureGroupVisible && document.kvConfig.isBackend))\r\n && subPart.hasFeatures && subPart.hasFeatures[hasFeaturePropertyName]\r\n });\r\n\r\n return {\r\n id: qtCategory.id,\r\n name: qtCategory.name,\r\n order: qtCategory.order,\r\n bgImageUrl: qtCategory.bgImageUrl,\r\n defaultSubParts, // is used for center island replacing\r\n _subParts: defaultSubParts, // remove featureGroups that are !enabled && !visible (eye ball) && has features\r\n get subParts() {\r\n return this._subParts.filter((subPart) => {\r\n const restOptions = window.location.hash.includes(\"#/materials\") ? {forActiveQTCategory: qtCategory.name} : {};\r\n return self.hasNavItemsLength(subPart, {}, \"\", null, true, [], restOptions)\r\n });\r\n },\r\n set subParts(newSubParts) {\r\n this._subParts = newSubParts\r\n }\r\n }\r\n })\r\n .filter(qtCategory => qtCategory.defaultSubParts.length); // this filter is added in case someone added wrong featureGroup\r\n\r\n if (!this.qtCategoriesList.length) {\r\n this.qtCategoriesList = null;\r\n }\r\n\r\n if (this.qtCategoriesList) {\r\n // here we set for every subPart if it is available in the QuotingTool(exist in some qtCategory)\r\n for (let i = 0; i < parentParts.length; i++) {\r\n const parentPart = parentParts[i];\r\n const subPartItems = parentPart.subParts();\r\n subPartItems.forEach(subPartItem => {\r\n subPartItem.part.existInQtCategory = this.qtCategoriesList.some(qtCategory => {\r\n return qtCategory.subParts.some(qtCategorySubPartNavItem => {\r\n return qtCategorySubPartNavItem.part.partId === subPartItem.part.partId\r\n })\r\n });\r\n // console.log(\"subPartItem.part.existInQtCategory\", subPartItem.part.partId, subPartItem.part.existInQtCategory);\r\n });\r\n }\r\n }\r\n\r\n store.dispatch(setQtCategoriesLoaded(this.visualizerType))\r\n\r\n }\r\n\r\n /**\r\n * Returns the actual value of the filter by its group and id\r\n * @param groupId {number}\r\n * @param filterValueId {number}\r\n */\r\n static filterValue(groupId, filterValueId) {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n if (!filterGroups.length)\r\n return null;\r\n const group = find(filterGroups, {id: groupId});\r\n if (!group)\r\n return null;\r\n const valueObj = find(group.values, {id: filterValueId});\r\n return valueObj ? valueObj.value.trim() : null;\r\n }\r\n\r\n /**\r\n * Returns the actual id of the filter by its group and name(filterValue)\r\n * @param groupId {number}\r\n * @param filterValue {string}\r\n */\r\n static getfilterValueIdByValue(groupId, filterValue) {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n if (!filterGroups.length)\r\n return null;\r\n const group = find(filterGroups, {id: groupId});\r\n if (!group)\r\n return null;\r\n const valueObj = find(group.values, {value: filterValue});\r\n return valueObj ? valueObj.id : null;\r\n }\r\n\r\n /**\r\n * Returns the child subPart according to passed partId\r\n * @param partId {string}\r\n */\r\n getSubPartByPartId(partId) {\r\n const parentItems = this.getFeatures(true);\r\n for (let i = 0; i < parentItems.length; i++) {\r\n const subParts = parentItems[i].subParts();\r\n const neededSubPart = subParts.find(subPart => subPart.part.partId === partId);\r\n if (neededSubPart) {\r\n return neededSubPart\r\n }\r\n }\r\n return null\r\n }\r\n\r\n /**\r\n * stores to localStorage object, for example {vanity_cabinet:12,shower_floor:74}\r\n */\r\n async updateLocalStorage() {\r\n if (IS_LIXIL_UI && !document.kvConfig.isWordpressPlugin) {\r\n return false // we are not restoring the state from the locale storage on lixil ui, so why do we keep it there\r\n }\r\n const {activeQuoteIndex} = store.getState().quotesState;\r\n const quotes = await updateCurrentQuote(null, undefined, true);\r\n if (!document.kvConfig.jobId) {\r\n try {\r\n window.localStorage.setItem(this.localStorageKey, JSON.stringify({\r\n ...quotes[activeQuoteIndex].data,\r\n quotes,\r\n activeQuoteIndex\r\n }));\r\n // console.log(\"updated LocalStorage\", window.localStorage);\r\n } catch (ex) { console.log(\"localStorage exception\", ex); }\r\n }\r\n }\r\n\r\n setCartStateAndUserStateFromBvState(bvState, featuresToLoad = []) {\r\n const {isLixil, settings} = store.getState().fabricatorState;\r\n\r\n setFeatureGroupsProperties(bvState, this);\r\n\r\n if (bvState.cartState && Array.isArray(bvState.cartState.cartItems)) {\r\n bvState.cartState.cartItems = this.getCartItemsFromBvState(bvState.cartState.cartItems, featuresToLoad, settings.allowVisualizerSwitching);\r\n if (Array.isArray(bvState.cartState.displayLogicCartItems) && bvState.cartState.displayLogicCartItems.length) {\r\n bvState.cartState.displayLogicCartItems = this.getCartItemsFromBvState(bvState.cartState.displayLogicCartItems, featuresToLoad, settings.allowVisualizerSwitching)\r\n .filter(ci => ci.cartFeature && ci.cartFeature.dbFeature && ci.cartFeature.dbFeature.displayLogic);\r\n }\r\n if (bvState.cartState.cartItems.length) {\r\n store.dispatch(restoreCart(bvState.cartState));\r\n }\r\n if (Array.isArray(bvState.cartState.allWizardsValues) && bvState.cartState.allWizardsValues.length) {\r\n store.dispatch(restoreAllWizardSelectedValues(bvState.cartState.allWizardsValues)); // after cart state\r\n }\r\n }\r\n if (bvState.userState && (!IS_LIXIL_UI || !isLixil || bvState.userState.userInfo.email)) { // if no email passed - we don't recover anything (guest checkout issue)\r\n store.dispatch({\r\n type: types.RESTORE_USER_STATE,\r\n payload: bvState.userState\r\n });\r\n }\r\n if (bvState.installations) {\r\n store.dispatch({\r\n type: types.SET_INST_LIST,\r\n payload: bvState.installations\r\n });\r\n }\r\n if (bvState.quotes) {\r\n store.dispatch(setQuotes(bvState.quotes));\r\n store.dispatch(setActiveQuoteIndex(bvState.activeQuoteIndex || 0));\r\n }\r\n if (!bvState.useSqftCartPopup && bvState.cartState && !bvState.cartState.cartItems.some(cartItem => cartItem.sqftId)) {\r\n store.dispatch(changeSqftFeaturesPopup({\r\n enabled: false\r\n }));\r\n }\r\n if (((typeof bvState.contractSigningValues === \"object\") && Object.keys(bvState.contractSigningValues).length)\r\n || ((typeof bvState.contractsValues === \"object\") && Object.keys(bvState.contractsValues).length)) {\r\n store.dispatch(restoreContractValues(\r\n bvState.contractSigningValues,\r\n bvState.savedInvoiceNumberOfPages,\r\n bvState.needToUpdateContract,\r\n bvState.contractsValues,\r\n ));\r\n }\r\n if (bvState.receiptSignature) {\r\n store.dispatch(setReceiptSignature(bvState.receiptSignature));\r\n }\r\n // if (bvState.useFabricatorCostPrices) { // per Alan, even if we saved with the cost price - we should see the retail prices on edit\r\n // store.dispatch(toggleUseFabricatorCostPrices(true));\r\n // }\r\n }\r\n\r\n resetEverything() {\r\n this.initialized = false;\r\n this.type = this.defaultType;\r\n const features = this.getFeatures();\r\n const currentState = store.getState();\r\n const {activeQuoteIndex} = currentState.quotesState;\r\n features.forEach(parentGroup => {\r\n if (parentGroup.relatedItems && parentGroup.relatedItems.length) {\r\n parentGroup.relatedItems.forEach((subPart) => {\r\n subPart.activeFeature = null;\r\n subPart.placeholderChanged = false;\r\n subPart.firstClick[activeQuoteIndex] = false;\r\n subPart.disabled = subPart.defaultDisabled;\r\n if (Array.isArray(subPart.activeFeatureParts) && subPart.activeFeatureParts.length) {\r\n subPart.activeFeatureParts = subPart.setActiveFeatureParts();\r\n }\r\n });\r\n }\r\n parentGroup.activeFeature = null;\r\n parentGroup.placeholderChanged = false;\r\n if (!parentGroup.firstClick) {\r\n parentGroup.firstClick = {};\r\n }\r\n parentGroup.firstClick[activeQuoteIndex] = false;\r\n parentGroup.setDefault(this);\r\n });\r\n this.changeLayout(features);\r\n const bvPresets = currentState.bathroomVisualizerState.bvPresets\r\n const loadByTheDefault = bvPresets && bvPresets.find(preset => preset.loadByTheDefault);\r\n if (loadByTheDefault) {\r\n this.setActiveFeaturesFromObject(loadByTheDefault);\r\n }\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Returns all of the layers, based on current configuration\r\n * @param placeholdersNeeded {boolean}\r\n * @param forceReturn {boolean}\r\n */\r\n getLayers(placeholdersNeeded, forceReturn= false) {\r\n if (!this.initialized && !forceReturn) {\r\n return [];\r\n }\r\n\r\n const features = this.enabledParts(true);\r\n let res = [];\r\n\r\n // console.log('features', features);\r\n\r\n features.forEach(parentGroup => {\r\n const layers = parentGroup.setLayers(this, placeholdersNeeded); // setLayers first! then set z-index\r\n // console.log('layers', layers);\r\n\r\n parentGroup.setZIndex(this.zIndexes[this.getCurrentLayoutName()]); // set zIndexes\r\n\r\n if (layers && layers.length) {\r\n res = res.concat(layers);\r\n }\r\n });\r\n\r\n if (this.addCustomLayers) {\r\n res = this.addCustomLayers(res);\r\n }\r\n\r\n const {canvasDimensions} = store.getState().bathroomVisualizerState;\r\n\r\n const zSort = this.isNewLayout ? \"desc\" : \"asc\";\r\n\r\n res = orderBy(res, ['zIndex'], [zSort]).map(layer => {\r\n // console.log('layer', layer);\r\n let layerToReturn = {\r\n zIndex: layer.zIndex,\r\n image: layer.bgImg(!!layer.cropCoords),\r\n coords: layer.coords || null,\r\n partId: layer.partId || \"\",\r\n layerPosition: layer.layerPosition || \"\",\r\n cropCoords: layer.cropCoords || null,\r\n }\r\n if (this.isNewLayout && layer.zIndex < 50000) {\r\n const zIndexesObject = getCurrentZIndexes(this.visualizerType);\r\n layerToReturn.layerDimensions = zIndexesObject.getLayerDimensions(layer, this.getCurrentLayoutName(), canvasDimensions)\r\n }\r\n return layerToReturn\r\n });\r\n\r\n return res;\r\n }\r\n\r\n /**\r\n * Returns {array} activeFeatures objects\r\n */\r\n getActiveFeatures(returnAllFeatures, withLayerPositions = false, withDisabled = false) {\r\n let activeFeatures = [];\r\n const receiveAllFeatures = returnAllFeatures || !!(this.qtCategories && this.qtCategories.length);\r\n this.getFeatures(receiveAllFeatures).forEach((parentGroup) => {\r\n // let subParts = parentGroup.subParts().filter(subPart => !subPart.part.disabled); // we need to store every item!\r\n\r\n if (parentGroup.menuType === 0) { // old logic for BV visualizer\r\n if (!parentGroup.disabled && parentGroup.placeholderChanged && parentGroup.activeFeature) {\r\n activeFeatures.push({\r\n selectionGroup: parentGroup.partName,\r\n partId: parentGroup.partId,\r\n quantity: 0,\r\n cartFeature: parentGroup.activeFeature,\r\n featureGroup: parentGroup\r\n });\r\n }\r\n }\r\n\r\n let subItems = parentGroup.relatedItems;\r\n const excluded = [\"fridge_shadow\"];\r\n if (!returnAllFeatures) {\r\n subItems = subItems.filter(subItem => {\r\n if (document.kvConfig.visualizerType === \"Bathroom\" && subItem.partId === \"shower_body\" && subItem.features.length) { // shower_body should always be!\r\n return true\r\n }\r\n return !excluded.includes(subItem.partId) && subItem.activeFeature && subItem.activeFeature.partName\r\n && !subItem.activeFeature.partName.includes(\"laceholder\")\r\n });\r\n }\r\n subItems.forEach((subItem) => {\r\n if (withLayerPositions && subItem.layerPositions) {\r\n Object.keys(subItem.layerPositions).forEach(position => {\r\n if (subItem.layerPositions[position] || withDisabled) {\r\n activeFeatures.push({\r\n selectionGroup: parentGroup.partName,\r\n partId: subItem.partId,\r\n quantity: 0,\r\n cartFeature: subItem.layerPositions[position] || null,\r\n featureGroup: subItem,\r\n layerPosition: position,\r\n });\r\n }\r\n })\r\n } else if (subItem.activeFeature && (withDisabled || !subItem.disabled)) {\r\n activeFeatures.push({\r\n selectionGroup: parentGroup.partName,\r\n partId: subItem.partId,\r\n quantity: 0,\r\n cartFeature: subItem.activeFeature || null,\r\n featureGroup: subItem\r\n });\r\n }\r\n })\r\n });\r\n // console.log('activeFeatures', activeFeatures);\r\n const qtCategories = this.qtCategories;\r\n if (!returnAllFeatures && qtCategories && qtCategories.length) {\r\n const subPartsObject = {};\r\n activeFeatures = activeFeatures.filter(activeFeature => {\r\n return qtCategories.some((qtCategory, qtCategoryIndex) => {\r\n if (!subPartsObject[qtCategoryIndex]) {\r\n subPartsObject[qtCategoryIndex] = qtCategory.subParts; // caching here, cause subParts requires to call getNavItems\r\n }\r\n return subPartsObject[qtCategoryIndex].some(subPart => {\r\n return subPart.part.partId === activeFeature.partId\r\n })\r\n })\r\n })\r\n }\r\n return activeFeatures\r\n }\r\n\r\n getActiveNames() {\r\n const allFeatures = this.getActiveFeatures(true);\r\n const excludedGroups = [\"Background\", \"Globals\", \"Other\", \"Others\"];\r\n const resultFeatures = allFeatures\r\n .filter(featureObject => {\r\n return featureObject.cartFeature && excludedGroups.every(excludedGroupName => featureObject.selectionGroup !== excludedGroupName)\r\n })\r\n .map(featureObject => {\r\n return {\r\n featureId: featureObject.cartFeature.dbFeature.id,\r\n parentName: featureObject.selectionGroup,\r\n groupName: featureObject.cartFeature.dbFeature.groupName,\r\n featureName: featureObject.cartFeature.getFeatureName()\r\n }\r\n })\r\n // console.log(\"resultFeatures\", resultFeatures);\r\n return resultFeatures\r\n }\r\n\r\n /**\r\n *\r\n * @param bvState {object}\r\n * @param setCartAndUserState {boolean}\r\n * @param useNames {boolean}\r\n * @param needToChangeLayout {boolean}\r\n * @param firstLoad {boolean}\r\n */\r\n setActiveFeaturesFromObject(bvState, setCartAndUserState = false, useNames = false, needToChangeLayout = true, firstLoad = false) {\r\n if (bvState) {\r\n\r\n const layout_type = +bvState.layout_type;\r\n needToChangeLayout = needToChangeLayout && (layout_type || layout_type === 0) && (layout_type !== +this.type);\r\n\r\n if (needToChangeLayout) {\r\n this.type = layout_type;\r\n }\r\n\r\n\r\n console.log(\"bvState===>\", bvState);\r\n\r\n // to avoid checks below\r\n bvState.disabled_parts = bvState.disabled_parts || [];\r\n\r\n this.getFeatures()\r\n .forEach((parentGroup) => {\r\n if (parentGroup.menuType === 0) {\r\n const partId = parentGroup.partId;\r\n const hasPreviouslySavedItem = this.selectedLayoutFeatures[layout_type]\r\n && this.selectedLayoutFeatures[layout_type][partId];\r\n if (bvState.hasOwnProperty(partId) || hasPreviouslySavedItem) {\r\n if (useNames) {\r\n parentGroup.activeFeature = parentGroup.getFeatureByPartName(bvState[partId]);\r\n if (!parentGroup.activeFeature && hasPreviouslySavedItem) {\r\n parentGroup.activeFeature = parentGroup.getFeatureByPartName(hasPreviouslySavedItem);\r\n }\r\n } else {\r\n parentGroup.activeFeature = parentGroup.getFeatureById(bvState[partId])\r\n || parentGroup.getDefaultFeature();\r\n }\r\n parentGroup.placeholderChanged = !!parentGroup.activeFeature;\r\n // const {activeQuoteIndex} = store.getState().quotesState;\r\n // parentGroup.firstClick = !!parentGroup.activeFeature;\r\n }\r\n if (parentGroup.activeFeature && firstLoad && !parentGroup.activeFeature.notAvailableInVisualizer) { // Leave non in vis features locked\r\n parentGroup.activeFeature.dbFeature.unlocked = true;\r\n }\r\n if (bvState.disabled_parts.includes(partId)) {\r\n parentGroup.disabled = true\r\n }\r\n } else {\r\n let relatedItems = parentGroup.getRelatedItems();\r\n relatedItems.forEach((subPart) => {\r\n const partId = subPart.partId;\r\n let previouslySelectedItem = null;\r\n subPart.selectedFeaturesHistory.some(featureName => {\r\n previouslySelectedItem = subPart.getFeatureByPartName(featureName);\r\n return previouslySelectedItem\r\n });\r\n if (bvState.hasOwnProperty(partId) || previouslySelectedItem) {\r\n if (!bvState.disabled_parts.includes(partId)) {\r\n subPart.disabled = false\r\n }\r\n if (useNames) {\r\n const matchingFeature = subPart.getFeatureByPartName(bvState[partId]);\r\n if (matchingFeature) {\r\n subPart.activeFeature = matchingFeature;\r\n } else if (previouslySelectedItem) {\r\n subPart.activeFeature = previouslySelectedItem;\r\n }\r\n } else {\r\n subPart.activeFeature = subPart.getFeatureById(bvState[partId]) || parentGroup.getDefaultFeature();\r\n }\r\n if (subPart.layerPositions && subPart.activeFeature) {\r\n // subPart.setLayerPositions()\r\n Object.keys(subPart.layerPositions).forEach(position => {\r\n const partIdPosition = partId + \"_\" + position;\r\n if (bvState[partIdPosition]) {\r\n subPart.layerPositions[position] = useNames\r\n ? subPart.getMatchingPositionFeature(position)\r\n : subPart.getFeatureById(bvState[partIdPosition], true)\r\n }\r\n })\r\n }\r\n subPart.placeholderChanged = !!subPart.activeFeature;\r\n // const {activeQuoteIndex} = store.getState().quotesState;\r\n // subPart.firstClick = !!subPart.activeFeature;\r\n // if (subPart.firstClick) {\r\n // console.log(\"subPart.firstClick\", subPart);\r\n // }\r\n }\r\n if (subPart.activeFeature && firstLoad && !subPart.activeFeature.notAvailableInVisualizer) {\r\n subPart.activeFeature.dbFeature.unlocked = true;\r\n if (subPart.selectedFeaturesHistory) {\r\n subPart.selectedFeaturesHistory.push(subPart.activeFeature.partName)\r\n }\r\n }\r\n if (bvState.disabled_parts.includes(partId)) {\r\n subPart.disabled = true\r\n }\r\n })\r\n }\r\n });\r\n\r\n if (needToChangeLayout) {\r\n this.changeLayout(this.getFeatures());\r\n }\r\n\r\n if (setCartAndUserState) {\r\n this.setCartStateAndUserStateFromBvState(bvState);\r\n }\r\n\r\n const layoutParts = this.designNavigationItems()\r\n .filter(parentGroup => parentGroup.part.categoryEnabled)\r\n .map((parentGroup) => parentGroup.part.partName);\r\n\r\n if (!this.isFakeLayout) {\r\n store.dispatch({\r\n type: types.SET_LAYOUT_DATA_PARTS,\r\n payload: {layoutParts}\r\n });\r\n }\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Sets bv features from url\r\n */\r\n parseUrl(bvState) {\r\n if (bvState.disabled_parts) {\r\n bvState.disabled_parts = bvState.disabled_parts.split(\",\");\r\n }\r\n console.log('restoring bvState from url...', bvState);\r\n return bvState\r\n }\r\n\r\n /**\r\n *\r\n * @param bvState {object}\r\n * @param useNames {boolean}\r\n * @param returnAllFeatures {boolean}\r\n * @returns bvState {object}\r\n */\r\n addSpecificPropertiesToLocalStorage(bvState, useNames = false, returnAllFeatures = false) {\r\n bvState.layout_type = this.type;\r\n bvState.scene = this.scene;\r\n if (this.isNewLayout) {\r\n bvState.bvStateVersion = 2;\r\n }\r\n this.getFeatures(returnAllFeatures).forEach((parentGroup) => {\r\n let relatedItems = parentGroup.getRelatedItems();\r\n relatedItems.forEach((subPart) => {\r\n if (subPart.layerPositions) {\r\n Object.keys(subPart.layerPositions).forEach(position => {\r\n if (subPart.layerPositions[position]) {\r\n bvState[subPart.partId + \"_\" + position] = useNames\r\n ? subPart.layerPositions[position].getSplittedFeatureName()\r\n : subPart.layerPositions[position].dbFeature.id\r\n }\r\n })\r\n }\r\n // this is used for adding these features to array of needed features form the backend on preset apply\r\n if (subPart.activeFeatureParts && subPart.activeFeatureParts.length) {\r\n subPart.activeFeatureParts.forEach((feature, featureIndex) => {\r\n bvState[subPart.partId + \"_part_\" + featureIndex] = useNames\r\n ? feature.getSplittedFeatureName()\r\n : feature.dbFeature.id\r\n })\r\n }\r\n if (subPart.partId === \"backsplash\" && subPart.getCurrentActiveFeatureType) {\r\n bvState[\"backsplash_type\"] = subPart.getCurrentActiveFeatureType();\r\n }\r\n })\r\n })\r\n // console.log('bvState', bvState);\r\n return bvState\r\n }\r\n\r\n getDisabledFeatures() {\r\n const disabledPartIds = [];\r\n this.getFeatures().forEach((parentGroup) => {\r\n if (parentGroup.menuType === 0) {\r\n if (parentGroup.disabled) {\r\n if (document.kvConfig.visualizerType === \"Bathroom\" && parentGroup.partName !== \"Toilet\") {\r\n disabledPartIds.push(parentGroup.partId);\r\n } else {\r\n disabledPartIds.push(parentGroup.partId);\r\n }\r\n }\r\n } else {\r\n parentGroup.relatedItems.forEach((subPart) => {\r\n if (subPart.disabled) {\r\n disabledPartIds.push(subPart.partId);\r\n } else if (subPart.layerPositions) {\r\n Object.keys(subPart.layerPositions).forEach(position => {\r\n if (!subPart.layerPositions[position]) {\r\n disabledPartIds.push(subPart.partId + \"_\" + position);\r\n }\r\n })\r\n }\r\n })\r\n }\r\n });\r\n // console.log('disabledPartIds', disabledPartIds);\r\n return disabledPartIds\r\n }\r\n\r\n /**\r\n * @param partId {string}\r\n * @returns featureGroup {object}\r\n */\r\n getFeatureGroupByPartId(partId) {\r\n if (!partId) {\r\n return null\r\n }\r\n let featureGroup = null;\r\n this.getFeatures(true).forEach(parentGroup => {\r\n if (featureGroup) {\r\n return\r\n }\r\n let relatedItems = parentGroup.relatedItems;\r\n relatedItems.forEach((relatedItem) => {\r\n if (featureGroup) {\r\n return\r\n }\r\n if (partId === relatedItem.partId) {\r\n featureGroup = relatedItem\r\n }\r\n })\r\n });\r\n return featureGroup\r\n }\r\n\r\n /**\r\n * @param groupName {string}\r\n * @returns featureGroup {object}\r\n */\r\n getFeatureGroupByGroupName(groupName) {\r\n if (!groupName) {\r\n return null\r\n }\r\n const strippedGroupName = replaceIncorrectSymbols(groupName || \"\").toLowerCase();\r\n let featureGroup = null;\r\n this.getFeatures(true).forEach(parentGroup => {\r\n if (featureGroup) {\r\n return\r\n }\r\n parentGroup.relatedItems.forEach((relatedItem) => {\r\n const strippedCurrentName = replaceIncorrectSymbols(relatedItem.dbName || relatedItem.partName || \"\").toLowerCase();\r\n if (strippedGroupName === strippedCurrentName\r\n || (strippedGroupName === \"vanity\" && strippedCurrentName === \"vanitie\")\r\n || (strippedGroupName === \"corner shelf\" && relatedItem.dbName === \"Small Corner Shelf\" && relatedItem.partName === \"Corner Shelf\")\r\n || (strippedGroupName === \"shower pan\"\r\n && ((relatedItem.dbName === \"Shower Pans\" && relatedItem.partName === \"Shower Pan\") || relatedItem.partName === \"ShowerPan\"))\r\n ) {\r\n featureGroup = relatedItem\r\n }\r\n })\r\n });\r\n return featureGroup\r\n }\r\n\r\n /**\r\n * @param partId {string}\r\n * @param inGeneral {boolean} // this prevents asking .subParts with asks navigation items which is redundant calculations\r\n * @returns {boolean}\r\n */\r\n partIdExistInQtCategory(partId, inGeneral = false) {\r\n if ((getCurrentRoomType(this) === LOOK_ROOM_TYPES.as) && partId === \"shower_door\" && (this.type === 3 || this.type === 6)) {\r\n return false\r\n }\r\n if (inGeneral) {\r\n return this.qtCategoriesList && this.qtCategoriesList.some(qtCat => {\r\n return qtCat.defaultSubParts && qtCat.defaultSubParts.some(sPart => sPart.part && sPart.part.partId === partId)\r\n })\r\n }\r\n return this.qtCategories && this.qtCategories.some(qtCat => {\r\n return qtCat.subParts && qtCat.subParts.some(sPart => sPart.part && sPart.part.partId === partId)\r\n })\r\n }\r\n\r\n /**\r\n * @param partId {string}\r\n * @param qtCategoryToSearch {string | null}\r\n * @param searchPartOfId {boolean | null}\r\n * @returns designNavigationItems {object}\r\n */\r\n getSubPartFromQtCategories(partId, qtCategoryToSearch = null, searchPartOfId = false) {\r\n\r\n const {wizardIsActive, wizardActiveItem, wizardSelectedValues} = store.getState().wizardState;\r\n if (wizardIsActive && wizardActiveItem) {\r\n const wizardSteps = getAvailableSteps(wizardActiveItem, wizardSelectedValues, true);\r\n return getFeatureGroupFromWizardSteps(wizardSteps, partId);\r\n }\r\n\r\n let countertopExist = null;\r\n let qtCategories = this.qtCategories;\r\n if (qtCategories) {\r\n if (qtCategoryToSearch) {\r\n qtCategories = qtCategories.filter(qtCategory => {\r\n return qtCategory.name.trim().toLowerCase() === qtCategoryToSearch.trim().toLowerCase()\r\n })\r\n //search in all qtCategories if wasn't found by qtCategoryToSearch\r\n if (qtCategories.length === 0) {\r\n qtCategories = this.qtCategories\r\n }\r\n }\r\n qtCategories.forEach(qtCategory => {\r\n if (!countertopExist) {\r\n const subParts = qtCategory.subParts;\r\n let neededSubPart;\r\n if (searchPartOfId) {\r\n neededSubPart = subParts.find(subPart => subPart.part.partId.includes(partId));\r\n } else {\r\n neededSubPart = subParts.find(subPart => subPart.part.partId === partId);\r\n }\r\n if (neededSubPart) {\r\n countertopExist = neededSubPart;\r\n }\r\n }\r\n });\r\n }\r\n return countertopExist\r\n }\r\n\r\n}\r\n\r\n","export const VISUALIZER_MANAGEMENT_ACTIONS = {\r\n getState: \"getState\",\r\n checkState: \"checkState\",\r\n setState: \"setState\",\r\n visualizerIsLoaded: \"visualizerIsLoaded\",\r\n closeVisualizerNavigation: \"closeVisualizerNavigation\",\r\n visualizerIsSaved: \"visualizerIsSaved\",\r\n}\r\n\r\nexport const DASHBOARD_MESSAGING_ACTIONS = {\r\n updateCartItems: \"updateCartItems\", // parent -> visualizer\r\n setCostPrices: \"setCostPrices\", // parent -> visualizer\r\n jobDataAfterUpdate: \"jobDataAfterUpdate\", // visualizer -> parent\r\n setReferralData: \"setReferralData\", // parent -> visualizer\r\n}\r\n","import workspace from \"../workspace\";\r\n//import Point from \"../shapes/point\";\r\nimport EventManager from \"../../store/sqftEventManager\";\r\nimport sqftConfig, {MIN_DISTANCE_BETWEEN_FREE_DRAW_POINTS} from \"../../store/sqftConfig\";\r\nimport {\r\n getIntersectCordsBetweenLines,\r\n getMidPoint,\r\n getMousePositionOnField,\r\n getPointDistance,\r\n getPointOnTheLine, inchesToMm, mmToInches, parseImperialFractionToDecimal,\r\n} from \"../../../../helpers/sqftHelper\";\r\nimport ShapeHelper, {getCountertopPartNames, getLineLengthNumberText} from \"../../../../helpers/shapeHelper\";\r\nimport Config from \"../../store/sqftConfig\";\r\nimport {createShapeFromPoints, createWallFromPointsV2} from \"../../../../helpers/freeDrawHelper\";\r\nimport NumberText from \"../workspace/text/numberText\";\r\nimport store from \"../../../../../../store\";\r\nimport {setSQFTActiveButton, setSQFTMenuOpened} from \"../../../../../../actions/sqftMenuFunctions\";\r\nimport config from \"../../store/sqftConfig\";\r\nimport RenderFreeDraw from \"../../helpers/renderFreeDraw\";\r\nimport COLOR_THEMES, {COLORS} from \"../../../../../../colorThemes\";\r\nimport {FREE_DRAW_TYPE, MEASURE_UNITS, SIDEBAR_NAVIGATION_CABINET_BUTTONS} from \"../../../../constants\";\r\nimport {getWallLockedPoint, getWallPoint} from \"../../helpers/wallHelper\";\r\nimport {getFreeDrawPoint, getLockedPoint, getLockPointPos} from \"../../helpers/freeDrawHelper\";\r\nimport sqftEventManager from \"../../store/sqftEventManager\";\r\nimport {\r\n isBackspaceKeyCode,\r\n isDeleteKeyCode,\r\n isLengthKeyCode,\r\n} from \"../../../../helpers/keyboardHelper\";\r\n\r\nconst FreeDraw = function() {\r\n let state = {\r\n isDrawFinished: false,\r\n addedPoints: [],\r\n dimensions: [],\r\n dimensionToMouse: null,\r\n drawLineToMouse: false,\r\n lineWidth: 2,\r\n lineColor: COLOR_THEMES[sqftConfig.activeTheme].primary,\r\n outlineColor: COLOR_THEMES[sqftConfig.activeTheme].primary,\r\n minLineLength: 15,\r\n drawType: FREE_DRAW_TYPE.shape,\r\n useLockedPoints: true,\r\n currentNumericInput: \"\",\r\n lockedAngleStep: 45\r\n };\r\n\r\n this.clickedBackSplashButton = null;\r\n this.arcLength = 0;\r\n this.angle = 0;\r\n this.getState = () => state\r\n\r\n const onMouseMove = (mousePos, e) => {\r\n void e;\r\n\r\n if (state.addedPoints.length > 0) {\r\n state.drawLineToMouse = true;\r\n\r\n if (!state.dimensionToMouse) {\r\n this.createDimensionToMouse();\r\n }\r\n this.updateMeasurementToMousePosition(mousePos);\r\n }\r\n\r\n if (state.currentNumericInput.length >= 1 ) {\r\n state.currentNumericInput = \"\";\r\n }\r\n }\r\n\r\n const onKeyDown = (code, e) => {\r\n if (window.lineInputFocused) {\r\n return false;\r\n }\r\n\r\n if (isLengthKeyCode(e)) {\r\n const newValue = state.currentNumericInput + e.key;\r\n\r\n if (newValue !== null) {\r\n state.currentNumericInput = newValue;\r\n state.dimensionToMouse.value = newValue;\r\n }\r\n console.log(\"currentNumericInput\", state.currentNumericInput);\r\n return true;\r\n }\r\n\r\n if (isBackspaceKeyCode(e) || isDeleteKeyCode(e)) {\r\n state.currentNumericInput = state.currentNumericInput.slice(0, -1);\r\n state.dimensionToMouse.value = sqftConfig.measureUnit === MEASURE_UNITS.Metric\r\n ? mmToInches(state.currentNumericInput)\r\n : state.currentNumericInput;\r\n console.log(\"currentNumericInput\", state.currentNumericInput);\r\n return true;\r\n }\r\n\r\n if (code === EventManager.keyCode.ENTER || code === EventManager.keyCode.NumpadEnter) {\r\n if (state.addedPoints.length > 0 && state.currentNumericInput) {\r\n this.createPointFromCurrentNumericInput();\r\n } else {\r\n state.isDrawFinished = true;\r\n this.drawFinish();\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n const onMouseDown = (mousePos) => {\r\n // var hoverPoint = workspace.getHoverPoint();\r\n // var hoverShape = workspace.getHoverShape();\r\n // if (hoverPoint || hoverShape) {\r\n // return true; // return true; // block all mouse-down events // we need dragging workspace\r\n // }\r\n state.currentNumericInput = \"\";\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n //todo pointV2 priority should be higher\r\n // const hoverPoint = workspace.getHoverPointV2();\r\n // const wall = WallsManager.getWallByPoint(hoverPoint);\r\n if (activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.wall) {\r\n this.drawWall(mousePos);\r\n return true;\r\n }\r\n };\r\n\r\n const onMouseUp = (mousePos) => {\r\n void mousePos;\r\n\r\n // this.checkForRestoreCursor();\r\n //\r\n // var hoverPoint = workspace.getHoverPoint();\r\n // var hoverShape = workspace.getHoverShape();\r\n // if (hoverPoint && !hoverPoint.angleIsChanged) {\r\n //\r\n // if (this.arcLength) {\r\n // hoverPoint.arcLength = this.arcLength;\r\n // hoverPoint.angle = 0;\r\n // } else if (this.angle) {\r\n // hoverPoint.angle = this.angle;\r\n // hoverPoint.arcLength = 0;\r\n // }\r\n // return true;\r\n // } else if (hoverShape) {\r\n // Menu.openMenu();\r\n // return true; // if click on shape, block reseting cursor, because we still need it http://jira.mozidev.com/browse/QC-956\r\n // }/* else {\r\n // deregisterEvents();\r\n // elements.designDefault.click();\r\n // }*/\r\n };\r\n\r\n this.createPointFromCurrentNumericInput = () => {\r\n const mousePos = sqftEventManager.getMousePos();\r\n const lastPoint = state.addedPoints[state.addedPoints.length - 1];\r\n let distance = parseImperialFractionToDecimal(state.currentNumericInput);\r\n distance = config.measureUnit === \"Imperial\" ? distance : mmToInches(distance);\r\n let newPoint;\r\n if (state.useLockedPoints && this.isPointExist()) {\r\n newPoint = getLockedPoint(lastPoint, mousePos, state.lockedAngleStep);\r\n } else {\r\n newPoint = getFreeDrawPoint(mousePos);\r\n }\r\n\r\n //we take full distance and subtract existing point distance from it.\r\n const segmentLength = getPointDistance(newPoint, lastPoint);\r\n const newCordsAtDistance = getPointOnTheLine(newPoint, lastPoint, distance - segmentLength);\r\n newPoint.setPosition(newCordsAtDistance);\r\n this.drawStart(mousePos, newPoint);\r\n }\r\n\r\n this.updateMeasurementToMousePosition = (mousePos) => {\r\n if (state.addedPoints.length > 0) {\r\n const mPosOnField = getMousePositionOnField(mousePos.x, mousePos.y);\r\n const lastPoint = state.addedPoints[state.addedPoints.length - 1];\r\n const distance = getPointDistance(mPosOnField, lastPoint);\r\n const reduxState = store.getState();\r\n const isWallsLockMode = reduxState.sqftMenuState.isWallsLockMode;\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n let midPoint;\r\n\r\n if (isWallsLockMode && activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.wall) {\r\n const lockedPointPos = getLockPointPos(lastPoint);\r\n const lockPointOnField = getMousePositionOnField(lockedPointPos.x, lockedPointPos.y);\r\n midPoint = getMidPoint(lockPointOnField, lastPoint);\r\n state.dimensionToMouse.pos.betweenPoints.pointTo = lockPointOnField\r\n } else {\r\n if (state.useLockedPoints) {\r\n const lockedPointPos = getLockPointPos(lastPoint, state.lockedAngleStep);\r\n const lockPointOnField = getMousePositionOnField(lockedPointPos.x, lockedPointPos.y);\r\n midPoint = getMidPoint(lockPointOnField, lastPoint);\r\n } else {\r\n midPoint = getMidPoint(mPosOnField, lastPoint);\r\n }\r\n\r\n state.dimensionToMouse.pos.betweenPoints.pointTo = getMousePositionOnField(mousePos.x, mousePos.y);\r\n }\r\n state.dimensionToMouse.pos.betweenPoints.pointFrom = lastPoint;\r\n state.dimensionToMouse.pos.x = midPoint.x;\r\n state.dimensionToMouse.pos.y = midPoint.y;\r\n state.dimensionToMouse.value = sqftConfig.measureUnit === MEASURE_UNITS.Metric ? inchesToMm(distance) : distance;\r\n\r\n // console.log(\"state.dimensionToMouse\", state.dimensionToMouse);\r\n // debugger // eslint-disable-line no-debugger\r\n }\r\n }\r\n\r\n this.init = function() {\r\n if (!state.isInited) {\r\n state.isInited = true;\r\n this.createDimensionToMouse();\r\n this.registerEvents();\r\n }\r\n };\r\n\r\n this.createDimensionToMouse = () => {\r\n state.dimensionToMouse = new NumberText(\r\n 0,\r\n {x: 0, y: 0},\r\n {shouldRenderFrameBorder: true, isLength: false},\r\n workspace,\r\n Function(),\r\n true\r\n );\r\n }\r\n\r\n this.registerEvents = () => {\r\n EventManager.addEvent(\r\n EventManager.events.RENDER,\r\n this.render,\r\n this,\r\n EventManager.priorities.SHAPE\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_DOWN,\r\n onMouseDown,\r\n this,\r\n EventManager.priorities.WALL\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_MOVE,\r\n onMouseMove,\r\n this,\r\n EventManager.priorities.IMAGE\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_UP,\r\n onMouseUp,\r\n this,\r\n EventManager.priorities.OVERALL\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.KEYDOWN,\r\n onKeyDown,\r\n this,\r\n EventManager.priorities.OVERALL\r\n );\r\n };\r\n\r\n this.hide = function(e) {\r\n if (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n };\r\n\r\n this.deregisterEvents = () => {\r\n EventManager.resetCursor(this);\r\n EventManager.removeEvent(this);\r\n state.isInited = false\r\n }\r\n\r\n this.destroy = (protect, revertBackAfterMouseUp) => {\r\n if (revertBackAfterMouseUp) {\r\n EventManager.removeEvent(this, EventManager.events.RENDER);\r\n this.isWaitingToRestoreCursor = true;\r\n } else {\r\n this.deregisterEvents();\r\n }\r\n this.hide();\r\n };\r\n\r\n const checkIfFirstPointHovered = () => {\r\n return state.addedPoints.length > 2 && state.addedPoints[0].modelCorePoint.mixins.movable.isHovering();\r\n }\r\n // const checkIfLastPointHovered = () => {\r\n // return state.addedPoints.length > 2 && state.addedPoints[state.addedPoints.length - 1].modelCorePoint.mixins.movable.isHovering();\r\n // }\r\n const checkIfThisIsSecondPoint = () => {\r\n return state.addedPoints.length === 1;\r\n }\r\n\r\n this.isPointExist = () => {\r\n return state.addedPoints.length >= 1;\r\n }\r\n\r\n this.isFitDistanceWithLastPoint = (point) => {\r\n if (state.addedPoints.length < 1) {\r\n return true\r\n }\r\n const distance = getPointDistance(point, state.addedPoints[state.addedPoints.length - 1]);\r\n\r\n return distance > MIN_DISTANCE_BETWEEN_FREE_DRAW_POINTS\r\n }\r\n this.isMousePosFitDistanceWithLastPoint = (mousePos) => {\r\n const mousePosOnField = getMousePositionOnField(mousePos.x, mousePos.y);\r\n return this.isFitDistanceWithLastPoint(mousePosOnField);\r\n }\r\n this.isFitDistanceWithLastPoint = (point) => {\r\n if (state.addedPoints.length < 1) {\r\n return true\r\n }\r\n const distance = getPointDistance(point, state.addedPoints[state.addedPoints.length - 1]);\r\n\r\n return distance > MIN_DISTANCE_BETWEEN_FREE_DRAW_POINTS\r\n }\r\n\r\n this.initDraw = (useLockedPoints) => {\r\n state.useLockedPoints = useLockedPoints\r\n }\r\n\r\n this.drawShape = (mousePos) => {\r\n if (checkIfFirstPointHovered()) {\r\n this.drawFinish();\r\n return;\r\n }\r\n\r\n let point;\r\n if (state.useLockedPoints && this.isPointExist()) {\r\n const lastPoint = state.addedPoints[state.addedPoints.length - 1];\r\n point = getLockedPoint(lastPoint, mousePos, state.lockedAngleStep);\r\n } else {\r\n point = getFreeDrawPoint(mousePos);\r\n }\r\n\r\n this.drawStart(mousePos, point);\r\n }\r\n\r\n this.drawWall = (mousePos) => {\r\n state.lineWidth = 10;\r\n state.lineColor = COLORS.gray;\r\n state.outlineColor = COLORS.gray4;\r\n state.drawType = FREE_DRAW_TYPE.wall\r\n if (checkIfThisIsSecondPoint()) {\r\n const wallPointLocked = getWallLockedPoint(state.addedPoints[0], mousePos, state.lockedAngleStep);\r\n this.drawStart(mousePos, wallPointLocked);\r\n this.drawFinish();\r\n } else {\r\n const wallPoint = getWallPoint(mousePos);\r\n this.drawStart(mousePos, wallPoint);\r\n }\r\n };\r\n\r\n this.drawStart = (mousePos, pointV2) => {\r\n if (state.isDrawFinished || !this.isMousePosFitDistanceWithLastPoint(mousePos)) {\r\n return\r\n }\r\n\r\n if (state.addedPoints.length > 0) {\r\n this.addLineDimensions(pointV2);\r\n }\r\n state.addedPoints.push(pointV2);\r\n state.dimensionToMouse ? state.dimensionToMouse.destroy() : null;\r\n state.dimensionToMouse = null;\r\n };\r\n\r\n this.addLineDimensions = (pointTo) => {\r\n //const prevPoint = state.addedPoints[state.addedPoints.length - 2];\r\n const pointFrom = state.addedPoints[state.addedPoints.length - 1];\r\n const numberText = getLineLengthNumberText(pointFrom, pointTo, workspace, this.setSegmentLengthFromNumberValue);//new NumberText(thicknessValue, posThickness, {}, this, this.setSegmentThicknessFromNumberValue);\r\n\r\n state.dimensions.push(numberText);\r\n };\r\n\r\n this.setSegmentLengthFromNumberValue = (value, numberText) => {\r\n value = Math.round10(+value / Config.getMeasureMultiplier(), -3);\r\n let miteredSection = numberText.parent;\r\n let miteredSegments = miteredSection.getSegments();\r\n let miteredSegment = miteredSegments.find(seg => seg.length === numberText);\r\n\r\n this.setSegmentLength(value, miteredSegment, miteredSection);\r\n };\r\n\r\n this.resetState = (shouldResetPoints = true) => {\r\n state.isDrawFinished = false;\r\n state.currentNumericInput = \"\";\r\n if (shouldResetPoints) {\r\n for (const addedPoint of state.addedPoints) {\r\n addedPoint.destroy();\r\n }\r\n }\r\n for (const dimension of state.dimensions) {\r\n dimension.destroy();\r\n }\r\n if (state.dimensionToMouse) {\r\n state.dimensionToMouse.destroy();\r\n }\r\n\r\n state.addedPoints = [];\r\n state.dimensions = [];\r\n };\r\n\r\n this.drawFinish = () => {\r\n //this.addLineDimensions(state.addedPoints[0], state.addedPoints[1]);\r\n //const reduxState = store.getState();\r\n //const activeButton = reduxState.sqftMenuState.activeButton;\r\n if (state.addedPoints.length > 2 || state.drawType === FREE_DRAW_TYPE.wall && state.addedPoints.length === 2) {\r\n const shapeCenter = ShapeHelper.getCenterPoint(state.addedPoints);\r\n let preparedPoints = [];\r\n switch (state.drawType) {\r\n case FREE_DRAW_TYPE.wall:\r\n this.createWall(state.addedPoints, shapeCenter);\r\n break;\r\n case FREE_DRAW_TYPE.shape:\r\n if (state.useLockedPoints) {\r\n this.changeFirstPointCoordinatesToCreate45or90DegAngleWithTheLastPoint();\r\n }\r\n for (const addedPoint of state.addedPoints) {\r\n addedPoint.x -= shapeCenter.x;\r\n addedPoint.y -= shapeCenter.y;\r\n preparedPoints.push(addedPoint);\r\n }\r\n\r\n this.createShape(preparedPoints, shapeCenter);\r\n store.dispatch(setSQFTMenuOpened(\"\"));\r\n store.dispatch(setSQFTActiveButton(\"\"));\r\n config.workspace.menuItemActive = \"\";\r\n this.deregisterEvents();\r\n break;\r\n }\r\n\r\n state.dimensionToMouse ? state.dimensionToMouse.destroy() : null;\r\n state.dimensionToMouse = null;\r\n }\r\n\r\n this.resetState(!(state.drawType === FREE_DRAW_TYPE.wall));\r\n // this.deregisterEvents();\r\n //\r\n // if (activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.wall) {\r\n // this.init();\r\n // }\r\n };\r\n\r\n this.changeFirstPointCoordinatesToCreate45or90DegAngleWithTheLastPoint = () => {\r\n if (state.addedPoints.length >= 2) {\r\n const firstPoint = state.addedPoints[0];\r\n const secondPoint = state.addedPoints[1];\r\n const lastPoint = state.addedPoints[state.addedPoints.length - 1];\r\n //const penultimatePoint = state.addedPoints[state.addedPoints.length - 2];\r\n const lockPointPos = getLockPointPos(lastPoint, state.lockedAngleStep, firstPoint.getPointField());\r\n const intersectionPoint = getIntersectCordsBetweenLines(\r\n firstPoint.getPointField(),\r\n secondPoint.getPointField(),\r\n lastPoint.getPointField(),\r\n lockPointPos,\r\n true,\r\n true\r\n );\r\n\r\n if (intersectionPoint) {\r\n const intersectionPointOnField = getMousePositionOnField(intersectionPoint.x, intersectionPoint.y);\r\n state.addedPoints[0].setPosition(intersectionPointOnField);\r\n }\r\n }\r\n }\r\n\r\n this.createShape = (preparedPoints, shapeCenter) => {\r\n const [countertopPartName] = getCountertopPartNames();\r\n const shapeId = createShapeFromPoints(\r\n preparedPoints,\r\n countertopPartName,\r\n false,\r\n shapeCenter,\r\n true,\r\n null,\r\n {},\r\n {\r\n minimumShapeArea: 25,\r\n maximumShapeArea: 100000,\r\n maximumLineDistance: 1000,\r\n }\r\n );\r\n void shapeId;\r\n }\r\n\r\n this.createWall = (preparedPoints, centerPoint) => {\r\n createWallFromPointsV2(preparedPoints, centerPoint, state.lockedAngleStep);\r\n }\r\n\r\n this.getOffset = function() {\r\n // //return {x: 0, y: 0};\r\n // var scale = sqftConfig.scale;\r\n // var workspacePos = workspace.getOffset();\r\n // debugger\r\n // if (parent) {\r\n // var _pos = parent.getPosition();\r\n // // if (sqftConfig.workspace.snapToGrid){\r\n // // _pos = parent.getSnappedPosition();\r\n // // }\r\n // var offset = {\r\n // x: workspacePos.x + (_pos.x * scale),\r\n // y: workspacePos.y + (_pos.y * scale)\r\n // }\r\n // } else {\r\n // return {x: 0, y: 0};\r\n // }\r\n // return offset;\r\n };\r\n this.render = (ctx) => RenderFreeDraw.render(ctx, this.getState())\r\n\r\n};\r\n\r\nexport default new FreeDraw()\r\n","import {baseNewImagesPath} from \"../../assets\";\r\n\r\nexport const applianceThumbnail = `${baseNewImagesPath}images/kv-icons/kv-filter-icons-stove.svg`;\r\nexport const centerIslandThumbnail = `${baseNewImagesPath}images/kv-icons/center_island_countertop.svg`;\r\nexport const countertopGroupThumbnail = `${baseNewImagesPath}images/kv-icons/vanity-countertop.svg`;\r\nexport const wallsThumbnail = `${baseNewImagesPath}images/bv_icons_new/Icons_Wall.svg`;\r\n\r\n/*layouts*/\r\nexport const LayoutThumbnails = {\r\n Layout1: `${baseNewImagesPath}images/kv-layout-thumbnails/SI.png`,\r\n Layout2: `${baseNewImagesPath}images/kv-layout-thumbnails/SNI.png`,\r\n Layout3: \"Layout3\",\r\n Layout4: \"Layout4\",\r\n Layout5: \"Layout5\",\r\n Layout6: \"Layout6\",\r\n Layout7: \"Layout7\",\r\n Layout8: \"Layout8\",\r\n Layout9: \"Layout9\",\r\n Layout10: \"Layout10\",\r\n Layout11: \"Layout11\",\r\n Layout12: \"Layout12\",\r\n Layout13: \"Layout13\",\r\n Layout14: \"Layout14\",\r\n Layout15: \"Layout15\",\r\n Layout16: \"Layout16\",\r\n Layout17: \"Layout17\",\r\n Layout18: \"Layout18\",\r\n};\r\n","import Appliance from \"../../parts/appliance\";\r\n\r\n/**\r\n * @returns array\r\n * */\r\nconst getHoodConditions = (cabinetParent, forCrownMolding = false) => {\r\n let conditions = [];\r\n const applianceParent = cabinetParent.layout.parts[Appliance.id];\r\n const hoodIsVisible = applianceParent && applianceParent.hood && applianceParent.hood.activeFeature && !applianceParent.hood.disabled;\r\n if (!forCrownMolding) {\r\n const microwaveIsVisible = applianceParent && applianceParent.microwave && applianceParent.microwave.activeFeature && !applianceParent.microwave.disabled;\r\n conditions.push({\r\n propName: \"Hood\",\r\n propValue: hoodIsVisible || ((cabinetParent.layout.type === 6) && microwaveIsVisible) ? \"H\" : \"C\"\r\n });\r\n if (hoodIsVisible && applianceParent.hood.activeFeature.metaData[\"Width\"]) {\r\n conditions.push({\r\n propName: \"Width\",\r\n propValue: applianceParent.hood.activeFeature.metaData[\"Width\"]\r\n });\r\n } else if (microwaveIsVisible && applianceParent.microwave.activeFeature.metaData[\"Width\"]) {\r\n conditions.push({\r\n propName: \"Width\",\r\n propValue: applianceParent.microwave.activeFeature.metaData[\"Width\"]\r\n });\r\n }\r\n }\r\n if (hoodIsVisible && applianceParent.hood.activeFeature.metaData[\"HoodHeight\"]) {\r\n conditions.push({\r\n propName: \"HoodHeight\",\r\n propValue: applianceParent.hood.activeFeature.metaData[\"HoodHeight\"]\r\n });\r\n }\r\n return conditions\r\n}\r\n\r\nexport default getHoodConditions\r\n","import {Part} from \"../part\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {countertopGroupThumbnail} from \"../assets\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\n\r\nimport Sink from \"../subparts/countertop/sink\";\r\nimport Faucet from \"../subparts/countertop/faucet\";\r\nimport Countertop from \"../subparts/countertop/countertop\";\r\nimport EdgeProfile from \"../subparts/countertop/edgeProfile\";\r\nimport Cutouts from \"../subparts/countertop/cutouts\";\r\nimport Radius from \"../subparts/countertop/radius\";\r\nimport {PLACEMENTS} from \"../../../kvComponent/core/constants\";\r\n\r\nexport default class CountertopGroup extends Part {\r\n static id = 'Countertop';\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'Countertop';\r\n this.partThumbnail = countertopGroupThumbnail;\r\n this.translateId = \"visualizer.kitchen.countertop\";\r\n\r\n // related items\r\n this.sink = null;\r\n this.faucet = null;\r\n this.countertop = null;\r\n this.edgeProfile = null;\r\n this.relatedGroupNames = [\"Faucet\", \"Sink\", \"Countertop\", \"Edge Profile\", \"Cutouts\", \"Radius\"];\r\n }\r\n\r\n load(dbFeature, loadFeature = true) {\r\n let relatedItemName = \"\",\r\n shouldLoadInDifferentGroups = false,\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Sink\":\r\n case \"Farnhousesink\":\r\n if (loadFeature && dbFeature.metaData && dbFeature.metaData[\"Placement\"] && dbFeature.metaData[\"Placement\"].includes(PLACEMENTS.Island)) {\r\n break;\r\n }\r\n shouldLoadInDifferentGroups = true;\r\n relatedItemName = \"sink\";\r\n RelatedItemClass = Sink;\r\n break;\r\n case \"Faucet\":\r\n if (loadFeature && dbFeature.metaData && dbFeature.metaData[\"Placement\"] && dbFeature.metaData[\"Placement\"].includes(PLACEMENTS.Island)) {\r\n break;\r\n }\r\n shouldLoadInDifferentGroups = true;\r\n relatedItemName = \"faucet\";\r\n RelatedItemClass = Faucet;\r\n break;\r\n case \"Countertop\":\r\n relatedItemName = \"countertop\";\r\n RelatedItemClass = Countertop;\r\n break;\r\n case \"Edge Profile\":\r\n case \"Edge\":\r\n shouldLoadInDifferentGroups = true;\r\n relatedItemName = \"edgeProfile\";\r\n RelatedItemClass = EdgeProfile;\r\n break;\r\n case \"Cutouts\":\r\n case \"cutouts\":\r\n relatedItemName = \"cutouts\";\r\n RelatedItemClass = Cutouts;\r\n break;\r\n case \"Radius\":\r\n relatedItemName = \"radius\";\r\n RelatedItemClass = Radius;\r\n break;\r\n }\r\n return this.loadCommon(relatedItemName, RelatedItemClass, dbFeature, loadFeature, shouldLoadInDifferentGroups)\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false;\r\n }\r\n\r\n handleSubPartClick() {\r\n\r\n }\r\n\r\n subParts(withHidden = true, hideWithoutFeatures = false) {\r\n return this.getRelatedItems()\r\n .filter(item => {\r\n if (hideWithoutFeatures && (item.partId === \"cutouts\" || item.partId === \"radius\")) {\r\n return false\r\n }\r\n return this.filterRelatedItem(item, withHidden)\r\n })\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n setSpecificRules() {\r\n if (this.edgeProfile) {\r\n this.edgeProfile.setEdgeNotInVisualizer()\r\n }\r\n }\r\n\r\n}\r\n","import axios from \"axios\";\r\n\r\nexport const AxiosInstance = axios.create({\r\n baseURL: document.kvConfig.domain || \"\",\r\n // timeout: 120000,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n }\r\n});\r\n\r\n// AxiosInstance.interceptors.response.use((response) => {\r\n// const {serverState} = store.getState();\r\n// if (!serverState.networkConnection) {\r\n// store.dispatch(setNetworkConnection(true))\r\n// }\r\n// return response;\r\n// }, (error) => {\r\n// // Do something with response error\r\n// if (error && error.toJSON && error.toJSON().message === \"Network Error\") {\r\n// store.dispatch(setNetworkConnection(false))\r\n// }\r\n// return Promise.reject(error);\r\n// });\r\n\r\nexport const leadApiGet = (url) => {\r\n return AxiosInstance.get(url)\r\n};\r\n\r\nexport const leadApiPost = (url, data, headers = null) => {\r\n return AxiosInstance.post(url, data, headers ? {headers} : null);\r\n}\r\n","import {IntermediatePart} from \"../../parts/intermediatePart\";\r\nimport {getFeatureIsLocked} from \"../../../../../misc/helpers\";\r\nimport store from \"../../../../../store\";\r\nimport {toggleNotCompatibleView} from \"../../../../../actions/selectionFunctions\";\r\nimport DesignNavigationItem from \"../../../../visComponents/designNavigationItem\";\r\n\r\nexport default class TubCommon extends IntermediatePart {\r\n\r\n constructor(isChild) {\r\n super(isChild);\r\n }\r\n\r\n navigationSubItems(filters, searchText) {\r\n const filteredAvailableFeatures = super.getFeaturesBySearchText(super.getFilteredFeaturesByFilters(filters), searchText);\r\n const featuresToDisplay = super.navigationSubItemsWithFilterMultipleConditions(this.getArrayOfConditions(), filteredAvailableFeatures);\r\n return featuresToDisplay.map(_ => new DesignNavigationItem(_.featureName, _));\r\n }\r\n\r\n disabledClick() {}\r\n\r\n applyFeatureIfNotCompatible() {\r\n const showerTubComboParent = this.getParent().getParent();\r\n showerTubComboParent.setShowerTubCombo();\r\n showerTubComboParent.setActiveTub(this.partId);\r\n }\r\n\r\n handleClick(ignoreLocked) {\r\n super.handleClick(ignoreLocked);\r\n\r\n if (this.notAvailableInVisualizer || getFeatureIsLocked(this)) {\r\n return\r\n }\r\n\r\n const showerTubComboParent = this.getParent().getParent();\r\n const currentBottomTub = showerTubComboParent.bottomTub;\r\n\r\n const showNotCompatibleViewConditions = !window.location.hash.includes(\"visualizer\") &&\r\n (!showerTubComboParent.showerTubComboIsActive || (\r\n (this.partId === \"walk_in_tub\" && currentBottomTub !== \"walk_in_tub\") || (this.partId !== \"walk_in_tub\" && currentBottomTub === \"walk_in_tub\")\r\n ));\r\n\r\n if (showNotCompatibleViewConditions) {\r\n store.dispatch(toggleNotCompatibleView(true));\r\n return;\r\n }\r\n\r\n this.applyFeatureIfNotCompatible();\r\n this.featureClicked();\r\n }\r\n\r\n getArrayOfConditions() {\r\n const showerSize = this.getParent().showerSize();\r\n return [{\r\n propName: 'ShowerSize',\r\n propValue: showerSize\r\n }];\r\n }\r\n\r\n setLayers(layout) {\r\n if (this.getParent().bottomTub !== this.partId) {\r\n super.hideLayers();\r\n return;\r\n }\r\n if (this.activeFeature && (this.activeFeature.matchesMetaForArrayOfConditions(this.getArrayOfConditions())\r\n || (this.activeFeature.notAvailableInVisualizer && this.placeholderFeature))) {\r\n return super.setLayers(layout);\r\n }\r\n\r\n this.setDefault();\r\n return super.setLayers(layout);\r\n }\r\n\r\n}\r\n","import {IntermediatePart} from \"../../parts/intermediatePart\";\r\nimport DesignNavigationItem from \"../../../../visComponents/designNavigationItem\";\r\nimport {Shower} from \"../../parts/shower\";\r\nimport {LayoutAbbreviation} from \"../../constants\";\r\nimport {getMetadataByDimensions, iIncludes} from \"../../../../../misc/utils\";\r\n\r\nexport default class ExternallWall extends IntermediatePart {\r\n\r\n constructor(isChild) {\r\n super(isChild);\r\n this.visible = true;\r\n this.activeFeatureBeforeAllWalls = null;\r\n this.selectedByUser = false;\r\n this.allWallsApplied = false;\r\n this.isStoneFeature = true;\r\n }\r\n\r\n navigationSubItems(filters, searchText) {\r\n const featuresToDisplay = super.getFeaturesBySearchText(this.getAvailableFeatures(filters), searchText);\r\n return featuresToDisplay.map(_ => new DesignNavigationItem(_.featureName, _));\r\n }\r\n\r\n getAvailableFeatures(filters) {\r\n const conditions = this.getArrayOfConditions();\r\n // console.log('condtitions', condtitions);\r\n const filteredAvailableFeatures = super.getFilteredFeaturesByFilters(filters);\r\n return super.navigationSubItemsWithFilterMultipleConditions(conditions, filteredAvailableFeatures);\r\n }\r\n\r\n setLayers(layout) {\r\n // this.wallName === \"ExtrusionWallLeft\" && console.log('this.getArrayOfConditions()', this.getArrayOfConditions());\r\n const shower = layout.parts[Shower.id];\r\n const wallParent = this.getParent();\r\n const conditions = this.getArrayOfConditions();\r\n // const layoutAbr = layout.getCurrentLayoutAbbreviation();\r\n if (this.activeFeature) {\r\n if (this.activeFeature.notAvailableInVisualizer && this.placeholderFeature) {\r\n super.setLayers(layout)\r\n } else if (shower.isComplete()) {\r\n if (this.wallName === \"ExtrusionWallLeft\" || !shower.showerBody.activeFeature.partName.includes(\"Complete\")) {\r\n super.hideLayers();\r\n return;\r\n } else if (this.activeFeature && !this.activeFeature.matchesMetaForArrayOfConditions(conditions)) {\r\n this.setDefault(layout) // set new default layer\r\n }\r\n } else if (!this.activeFeature.matchesMetaForArrayOfConditions(conditions)) {\r\n this.setDefault(layout) // set new default layer\r\n }\r\n if (this.wallName === \"ExtrusionWallLeft\") {\r\n const activeShower = wallParent.getActiveShowerGroup();\r\n const showerDimensions = activeShower.showerDimensions();\r\n if (showerDimensions === \"Pony\") {\r\n super.hideLayers();\r\n return;\r\n }\r\n if (!shower.isComplete()) {\r\n this.setShadowFeature();\r\n }\r\n }\r\n }\r\n if (this.shadowFeature) {\r\n const layoutAbr = layout.getCurrentLayoutAbbreviation();\r\n const matchesByBindings = this.shadowFeature.dbFeature.s3Bindings.some(binding => {\r\n return binding.layout === LayoutAbbreviation.All || binding.layout === layoutAbr\r\n });\r\n if (!this.shadowFeature.matchesMetaForArrayOfConditions(this.getShadowConditions()) || !matchesByBindings) {\r\n this.setShadowFeature();\r\n }\r\n }\r\n super.setLayers(layout)\r\n }\r\n\r\n setDefault(layout) {\r\n const layoutAbr = layout.getCurrentLayoutAbbreviation();\r\n const shower = layout.parts[Shower.id];\r\n if (!shower) {\r\n console.log('Ex Wall - no Shower');\r\n return null;\r\n }\r\n if (layoutAbr === LayoutAbbreviation.Large) {\r\n if ((shower.isComplete() && this.wallName === \"ExtrusionWallLeft\")\r\n || !shower.showerBody || !shower.showerBody.activeFeature\r\n || (shower.isComplete() && !shower.showerBody.activeFeature.partName.includes(\"Complete\"))) {\r\n return null;\r\n }\r\n }\r\n const filteredFeatures = this.getAvailableFeatures();\r\n // console.log('Ex Wall - setDefault', filteredFeatures);\r\n if (!super.tryToSetTheSameFeature(filteredFeatures, null, null, true)) {\r\n let hardCodedName = '';\r\n switch (layoutAbr) {\r\n case LayoutAbbreviation.Small:\r\n hardCodedName = 'Rafter';\r\n break;\r\n case LayoutAbbreviation.Large:\r\n hardCodedName = 'Sahara Autumn Porcelain Tile';\r\n break;\r\n }\r\n const hardCodedDefault = filteredFeatures.find((feature) => {\r\n return iIncludes(feature.dbFeature.displayName, hardCodedName);\r\n });\r\n const placeholderDefault = filteredFeatures.find((feature) => {\r\n return iIncludes(feature.dbFeature.displayName, \" - placeholder\");\r\n });\r\n this.activeFeature = hardCodedDefault || filteredFeatures[0];\r\n this.placeholderFeature = placeholderDefault;\r\n this.setShadowFeature();\r\n }\r\n }\r\n\r\n setZIndex(zIndexes) {\r\n\r\n const shower = zIndexes.Shower;\r\n const wallParent = this.getParent();\r\n\r\n if (zIndexes && this.wallName === \"ExtrusionWallLeft\") {\r\n // console.warn(`${this.wallName}: no wall, because we have a complete shower.`);\r\n if (wallParent.layout.parts[Shower.id].isComplete()) {\r\n return false;\r\n } else if (this.activeFeature) {\r\n const activeShowerGroup = wallParent.getActiveShowerGroup();\r\n const showerDimensions = getMetadataByDimensions(activeShowerGroup.showerDimensions());\r\n const zIndex = showerDimensions === \"Half\"\r\n ? shower.Custom60in[this.wallName + \"HalfWall\"]\r\n : shower.Custom60in[this.wallName];\r\n const zIndexShadow = showerDimensions === \"Half\"\r\n ? shower.Custom60in[this.wallName + \"ShadowHalfWall\"]\r\n : shower.Custom60in[this.wallName + \"Shadow\"];\r\n this.activeFeature.layer.zIndex = zIndex;\r\n if (this.placeholderFeature) {\r\n this.placeholderFeature.layer.zIndex = zIndex;\r\n }\r\n if (this.shadowFeature) {\r\n this.shadowFeature.layer.zIndex = zIndexShadow;\r\n }\r\n }\r\n } else {\r\n if (zIndexes && this.activeFeature) {\r\n this.activeFeature.layer.zIndex = shower.Custom60in[this.wallName];\r\n }\r\n if (zIndexes && this.placeholderFeature) {\r\n this.placeholderFeature.layer.zIndex = shower.Custom60in[this.wallName];\r\n }\r\n if (zIndexes && this.shadowFeature) {\r\n this.shadowFeature.layer.zIndex = shower.Custom60in[this.wallName + \"Shadow\"];\r\n }\r\n }\r\n }\r\n\r\n clickFromAllWalls(ignoreLocked) {\r\n if (!this.getParent().selectedByUser) {\r\n this.handleClick(ignoreLocked, 'all_walls')\r\n }\r\n }\r\n\r\n handleClick(ignoreLocked, clickFrom) {\r\n const parent = this.getParent();\r\n if (!parent.getParent().allWallsApplied && clickFrom !== 'all_walls') {\r\n parent.selectedByUser = true;\r\n }\r\n if (clickFrom !== 'context' && clickFrom !== 'all_walls') {\r\n const wallParent = this.getParent().getParent();\r\n const ponyWallFeature = wallParent.ponyWall && wallParent.ponyWall.features.find(feature => {\r\n return feature.partName === this.partName\r\n });\r\n if (ponyWallFeature) {\r\n ponyWallFeature.handleClick(ignoreLocked, 'context');\r\n }\r\n }\r\n super.handleClick(ignoreLocked);\r\n\r\n // if (parent.wallName === \"ExtrusionWallLeft\") {\r\n // const wallB = parent.getParent().layout.parts[\"Walls\"].part[\"wallB\"];\r\n // if (wallB.placeholderChanged && wallB.activeFeature.partName === this.partName) {\r\n // parent.selectedByUser = false;\r\n // }\r\n // } else {\r\n // const wallC = parent.getParent().layout.parts[\"Walls\"].part[\"wallC\"];\r\n // if (wallC.placeholderChanged && wallC.activeFeature.partName === this.partName) {\r\n // parent.selectedByUser = false;\r\n // }\r\n // }\r\n }\r\n\r\n // unCheckAllWalls(clickFrom) {\r\n // if (clickFrom === 'showerWall') {\r\n // this.allWallsApplied = false;\r\n // }\r\n // const tempSelectedByUser = this.selectedByUser;\r\n // if (this.activeFeatureBeforeAllWalls) {\r\n // this.activeFeatureBeforeAllWalls.handleClick();\r\n // this.activeFeatureBeforeAllWalls = null;\r\n // }\r\n // this.selectedByUser = tempSelectedByUser;\r\n // if (this.rememberToRecoverPlaceholder) {\r\n // this.placeholderChanged = false;\r\n // this.rememberToRecoverPlaceholder = false;\r\n // }\r\n // }\r\n}\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport Button from \"@mui/material/Button\";\r\n\r\nimport Analytics from './../../analytics';\r\nimport UiSelect from \"../ui/select\";\r\nimport {BACKSPLASH_TYPES} from \"../kvComponent/core/constants\";\r\nimport {KVSCENE_BACKSPLASH_TYPES} from \"../kvSceneComponent/core/constants\";\r\nimport {getCurrentLayout} from \"../appLayout\";\r\nimport {\r\n setActiveFeature,\r\n toggleSelectionFeatureInfo,\r\n toggleShowDescriptionCover,\r\n updateCanvasCount\r\n} from \"../../actions/actionFunctions\";\r\nimport WithClickCount from \"../look/hocs/withClickCount\";\r\nimport {loaderDisable, loaderEnable} from \"../ui/loaderView\";\r\nimport Navigation from \"../visComponents/navigation/navigation\";\r\nimport {setLookActiveFeature} from \"../../actions/lookFunctions\";\r\nimport {featureInterface} from \"../../interfaces/featureInterface\";\r\n\r\nclass BacksplashSelect extends Component {\r\n\r\n static propTypes = {\r\n // activePart: PropTypes.object.isRequired // Backsplash\r\n updateParent: PropTypes.func,\r\n useButtons: PropTypes.bool,\r\n activeFeature: PropTypes.shape(featureInterface),\r\n };\r\n\r\n handleBacksplashItemClick = async (type, maxClickCountReached) => {\r\n Analytics.sendClickEvent(\"backsplash-type-selected-\" + type);\r\n if (maxClickCountReached && maxClickCountReached()) {\r\n return false\r\n }\r\n const backsplashSubPart = this.getBacksplashPart();\r\n const currentActiveName = backsplashSubPart.activeFeature ? backsplashSubPart.activeFeature.getCountertopGroupsSplittedFeatureName() : \"\";\r\n let featureToClick = backsplashSubPart.getFeatureByBacksplashType(type);\r\n // console.log(\"featureToClick\", featureToClick);\r\n if (featureToClick && currentActiveName && (featureToClick.getCountertopGroupsSplittedFeatureName() !== currentActiveName)) {\r\n loaderEnable();\r\n await Navigation.searchFeaturesByName(backsplashSubPart, currentActiveName);\r\n loaderDisable();\r\n featureToClick = backsplashSubPart.getFeatureByBacksplashType(type);\r\n // console.log(\"featureToClick2\", featureToClick);\r\n }\r\n console.log(\"featureToClick\", featureToClick);\r\n if (featureToClick) {\r\n featureToClick.handleClick();\r\n this.props.setActiveFeature(featureToClick);\r\n // this.props.toggleShowDescriptionCover(false);\r\n this.forceUpdate();\r\n if (this.props.updateParent) {\r\n this.props.updateParent(featureToClick);\r\n }\r\n this.props.updateCanvasCount();\r\n }\r\n if (this.props.useButtons) {\r\n this.props.setLookActiveFeature(featureToClick);\r\n }\r\n };\r\n\r\n getBacksplashPart = () => {\r\n const layout = getCurrentLayout();\r\n const wallsParent = layout.parts[\"Walls\"];\r\n return wallsParent.relatedItems.find(relItem => relItem.partId === \"backsplash\");\r\n };\r\n\r\n getValueText = () => {\r\n if (this.props.bvOpened) { // visualizer\r\n return \r\n } else {\r\n if (this.props.windowWidth < 1160) {\r\n return \r\n } else if (this.props.windowWidth < 1600) {\r\n return \r\n } else {\r\n return \r\n }\r\n }\r\n };\r\n\r\n getBackplashTypes = () => {\r\n if (document.kvConfig.visualizerType === \"Kitchen\") {\r\n return BACKSPLASH_TYPES\r\n }\r\n if (this.props.fabricatorData.isEncore) {\r\n const backsplashSubPart = this.getBacksplashPart();\r\n if (backsplashSubPart) {\r\n return KVSCENE_BACKSPLASH_TYPES.filter(type => {\r\n return !!backsplashSubPart.getFeatureByBacksplashType(type, \"\", true)\r\n })\r\n }\r\n }\r\n return KVSCENE_BACKSPLASH_TYPES\r\n };\r\n\r\n renderButtons = (currentType) => {\r\n return (\r\n \r\n {(maxClickCountReached) => (\r\n
    \r\n \r\n \r\n \r\n
    \r\n {this.getBackplashTypes().map(backsplashType => {\r\n const isActive = currentType === backsplashType;\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 render() {\r\n const backsplashSubPart = this.getBacksplashPart();\r\n const currentType = backsplashSubPart.getCurrentActiveFeatureType();\r\n if (this.props.useButtons) {\r\n return this.renderButtons(currentType)\r\n }\r\n // console.log(\"backsplashSubPart\", );\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n const {lookActiveFeature} = store.lookState;\r\n const fabricatorData = store.fabricatorState;\r\n const {canvasCount} = store.bathroomVisualizerState;\r\n return {\r\n bvOpened: store.bathroomVisualizerState.bvOpened,\r\n windowWidth: store.serverState.windowWidth,\r\n lookActiveFeature: ownProps.activeFeature || lookActiveFeature, // update active button\r\n fabricatorData, // update active button\r\n canvasCount,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n toggleSelectionFeatureInfo,\r\n setActiveFeature,\r\n toggleShowDescriptionCover,\r\n updateCanvasCount,\r\n setLookActiveFeature,\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(BacksplashSelect)\r\n","import {Component} from 'react';\r\nimport $ from \"jquery\";\r\n\r\nimport Analytics from \"../../analytics\";\r\nimport {getCurrentLayout} from \"../appLayout\";\r\nimport {changeQTRoutePath, changeRoutePath} from \"../../misc/changeRoutePath\";\r\nimport store from \"../../store\";\r\nimport {featureIsMatchingQtCatName} from \"../../misc/categorySwitchingFunctions\";\r\nimport {showWizardInsteadOfQT} from \"../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\nimport {switchToWizardItem} from \"../qkbPages/materialsWizard/useChangeWizardStepRoute\";\r\n\r\nexport default class CommonFeatureItemsMethods extends Component {\r\n\r\n // this method is NOT used by SelectionMainList, only visualizers desktop & mobile navigations\r\n switchToFeatureInfo = (feature, analyticsLabel, setCameFromPage = \"shoppingcart\", scrollToRelatedFeatureId = null, fromCartItem = null) => {\r\n\r\n Analytics.sendClickEvent(analyticsLabel);\r\n const featureInfo = feature.part || feature;\r\n const featureParent = featureInfo.getParent();\r\n const selectionGroup = featureParent.getParent ? featureParent.getParent().partName : featureParent.partName;\r\n const {fabricatorState, wizardState} = store.getState();\r\n const {wizardList, wizardIsActive} = wizardState;\r\n\r\n const visType = fabricatorState.settings.allowVisualizerSwitching && fromCartItem && fromCartItem.fromVisualizerType\r\n ? fromCartItem.fromVisualizerType\r\n : document.kvConfig.visualizerType;\r\n const layout = getCurrentLayout(visType);\r\n\r\n const setCommonStuff = () => {\r\n this.props.toggleSelectionWindow(true, selectionGroup);\r\n this.props.toggleSelectionFeatureInfo(featureInfo, true);\r\n if (setCameFromPage === \"visualizer\") {\r\n this.props.toggleBathroomVisualizerOpen(false);\r\n }\r\n this.props.setCameFromPage(setCameFromPage);\r\n }\r\n\r\n if (showWizardInsteadOfQT(wizardList, wizardIsActive)) {\r\n if (fromCartItem && fromCartItem.fromWizardId) {\r\n const wizardItem = wizardList.find(wizItem => wizItem.id === fromCartItem.fromWizardId);\r\n if (wizardItem) {\r\n setCommonStuff();\r\n switchToWizardItem(wizardItem, fromCartItem.fromWizardStep, fromCartItem.currentQuote, fromCartItem.fromWizardGroupId);\r\n return;\r\n }\r\n }\r\n const wizardItem = wizardList[0];\r\n if (wizardItem) {\r\n setCommonStuff();\r\n switchToWizardItem(wizardItem);\r\n }\r\n return\r\n }\r\n\r\n let nextCatName = \"\";\r\n\r\n // /* set new index*/\r\n let nextSubPartIndex = 0;\r\n if (featureParent.getParent) {\r\n if (layout.qtCategories\r\n && fabricatorState.settings.useCategorySwitching\r\n && layout.qtCategories.filter(qtCat => qtCat.subParts.some(subPart => subPart.part.partId === featureInfo.partId)).length > 1\r\n && fromCartItem\r\n && layout.qtCategories.find(qtCategory => featureIsMatchingQtCatName(fromCartItem.cartFeature, qtCategory.name, true))) {\r\n const neededCat = layout.qtCategories.find(qtCategory => featureIsMatchingQtCatName(fromCartItem.cartFeature, qtCategory.name, true));\r\n nextCatName = neededCat.name;\r\n nextSubPartIndex = neededCat.subParts.findIndex(subPart => subPart.part.partId === featureInfo.partId);\r\n } else if (layout.qtCategories && fromCartItem && fromCartItem.fromQtCategory\r\n && layout.qtCategories.find(qtCategory => qtCategory.name === fromCartItem.fromQtCategory)) {\r\n nextCatName = fromCartItem.fromQtCategory;\r\n this.props.setQtActiveCategory(fromCartItem.fromQtCategory);\r\n const qtActiveCategory = layout.qtCategories.find(qtCategory => qtCategory.name === fromCartItem.fromQtCategory);\r\n nextSubPartIndex = qtActiveCategory.subParts.findIndex(subPart => {\r\n return (subPart.part.dbName === featureParent.partName) || (subPart.part.partName === featureParent.partName)\r\n });\r\n if ((!nextSubPartIndex || nextSubPartIndex < 0) && qtActiveCategory.qtCategoryHasBeenChanged) {\r\n [\"countertop\", \"edge\", \"faucet\", \"sink\", \"stovetop\"].forEach(partId => {\r\n if (featureParent.partId.includes(partId)) {\r\n nextSubPartIndex = qtActiveCategory.subParts.findIndex(subPart => subPart.part.partId.includes(partId));\r\n }\r\n })\r\n }\r\n } else if (layout.qtCategories && featureParent.qtCategoryName) {\r\n this.props.setQtActiveCategory(featureParent.qtCategoryName);\r\n const qtActiveCategory = layout.qtCategories.find(qtCategory => qtCategory.name === featureParent.qtCategoryName);\r\n nextSubPartIndex = qtActiveCategory.subParts.findIndex(subPart => {\r\n return (subPart.part.dbName === featureParent.partName) || (subPart.part.partName === featureParent.partName)\r\n });\r\n if ((!nextSubPartIndex || nextSubPartIndex < 0) && qtActiveCategory.qtCategoryHasBeenChanged) {\r\n [\"countertop\", \"edge\", \"faucet\", \"sink\", \"stovetop\"].forEach(partId => {\r\n if (featureParent.partId.includes(partId)) {\r\n nextSubPartIndex = qtActiveCategory.subParts.findIndex(subPart => subPart.part.partId.includes(partId));\r\n }\r\n })\r\n }\r\n } else {\r\n const subParts = featureParent.getParent().subParts(false); // we don't need not visible subParts on the materials page\r\n const featureParentName = featureParent.partName.replace(/ /g,\"-\").toLowerCase();\r\n nextSubPartIndex = subParts.findIndex(subPartItem => {\r\n return subPartItem.part.partName.replace(/ /g,\"-\").toLowerCase() === featureParentName\r\n });\r\n }\r\n }\r\n\r\n if (!nextSubPartIndex || nextSubPartIndex < 0) {\r\n nextSubPartIndex = 0;\r\n }\r\n\r\n this.props.changeActivePartRelatedItemIndex(nextSubPartIndex);\r\n setCommonStuff();\r\n if (!window.location.href.includes('materials')) {\r\n if (layout.qtCategories && nextCatName) {\r\n changeQTRoutePath(nextCatName, nextSubPartIndex);\r\n } else if (layout.qtCategories && featureParent.qtCategoryName) {\r\n changeQTRoutePath(featureParent.qtCategoryName, nextSubPartIndex);\r\n } else {\r\n changeRoutePath(featureParent.getParent ? featureParent.getParent() : featureParent, nextSubPartIndex)\r\n }\r\n }\r\n if (scrollToRelatedFeatureId) {\r\n setTimeout(() => {\r\n const $scrollableDiv = $(\".selection-main__info-scrollable\");\r\n const scrollToArea = document.querySelector(\".prod-associated\");\r\n const scrollToDiv = document.querySelector('[data-feature-id=\"'+scrollToRelatedFeatureId+'\"]');\r\n if ($scrollableDiv && scrollToArea && scrollToDiv) {\r\n const scrollTop = scrollToArea.offsetTop + scrollToDiv.offsetTop;\r\n // console.log(\"scrolling to div\", scrollTop);\r\n $scrollableDiv.animate({scrollTop}, 800);\r\n }\r\n }, 0);\r\n }\r\n };\r\n\r\n}\r\n","import React from 'react';\r\nimport {connect} from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport {getEventPosition} from \"../../../../misc/helpers\";\r\n\r\nclass BodySwipable extends React.Component {\r\n\r\n static propTypes = {\r\n className: PropTypes.string,\r\n scrollableSelector: PropTypes.string.isRequired,\r\n children: PropTypes.any.isRequired,\r\n }\r\n\r\n static defaultProps = {\r\n className: \"\",\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n // this.swipableElement = null;\r\n this.scrollableElement = null;\r\n this._isMounted = false;\r\n this.currentScrollLeft = 0;\r\n this.x = 0;\r\n this.y = 0;\r\n this.delta = 0;\r\n this.swipeActive = false;\r\n this.detectedSwipeLeft = false;\r\n this.detectedSwipeRight = false;\r\n this.state = {\r\n swipeActive: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n this.scrollableElement = this.getScrolllableElement();\r\n }\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n getScrolllableElement = () => {\r\n return this.props.scrollableRef && this.props.scrollableRef.current\r\n ? this.props.scrollableRef.current\r\n : document.querySelector(this.props.scrollableSelector);\r\n }\r\n\r\n handleOnMouseDown = (event) => {\r\n const {x, y} = getEventPosition(event);\r\n setTimeout(() => {\r\n if (!this._isMounted) {\r\n return false\r\n }\r\n this.x = x;\r\n this.y = y;\r\n this.swipeActive = true;\r\n this.detectedSwipeLeft = false;\r\n this.detectedSwipeRight = false;\r\n this.setState({\r\n swipeActive: true\r\n });\r\n if (!this.scrollableElement) {\r\n this.scrollableElement = this.getScrolllableElement();\r\n }\r\n this.currentScrollLeft = this.scrollableElement.scrollLeft;\r\n }, 0);\r\n };\r\n\r\n handleOnMouseMove = (event) => {\r\n if (this.swipeActive) {\r\n const {x, y} = getEventPosition(event);\r\n const tX = parseFloat((x - this.x).toFixed(2));\r\n const tY = parseFloat((y - this.y).toFixed(2));\r\n // console.log('tX', tX);\r\n\r\n if (!this.detectedSwipeRight || !this.detectedSwipeLeft) {\r\n if (Math.abs(parseFloat(tX)) >= this.delta) {\r\n if (parseFloat(tX) > this.delta) {\r\n this.detectedSwipeRight = true;\r\n } else if (parseFloat(tX) < -this.delta) {\r\n this.detectedSwipeLeft = true;\r\n }\r\n }\r\n }\r\n\r\n if ((this.detectedSwipeLeft || this.detectedSwipeRight) && Math.abs(tX) > Math.abs(tY)) {\r\n // console.log(\"this.detectedSwipeLeft\", this.detectedSwipeLeft);\r\n // console.log(\"this.detectedSwipeRight\", this.detectedSwipeRight);\r\n // console.log('Math.abs(tX)', Math.abs(tX));\r\n const scrollLeft = this.detectedSwipeLeft\r\n ? this.currentScrollLeft + Math.abs(tX)\r\n : this.currentScrollLeft - Math.abs(tX);\r\n // this.$scrollableElement.animate({scrollLeft}, 500);\r\n this.scrollableElement.scrollLeft = scrollLeft;\r\n }\r\n }\r\n };\r\n\r\n handleOnMouseUp = () => {\r\n setTimeout(() => {\r\n if (!this._isMounted) {\r\n return false\r\n }\r\n this.x = 0;\r\n this.y = 0;\r\n this.swipeActive = false;\r\n this.detectedSwipeLeft = false;\r\n this.detectedSwipeRight = false;\r\n this.setState({\r\n swipeActive: false\r\n })\r\n }, 0)\r\n };\r\n\r\n render() {\r\n // const disallowSwipe = this.$scrollableElement && this.$scrollableElement[0] &&\r\n // (this.$scrollableElement[0].scrollWidth < this.$scrollableElement[0].clientWidth);\r\n if (this.props.isMobile) {\r\n return
    {this.props.children}
    \r\n }\r\n return (\r\n this.swipableElement = node}\r\n className={this.props.className + \" swipable\" + (this.state.swipeActive ? \" swipable--active\" : \"\")}\r\n onMouseDown={this.handleOnMouseDown}\r\n onMouseMove={this.handleOnMouseMove}\r\n onMouseLeave={this.handleOnMouseUp}\r\n onMouseUp={this.handleOnMouseUp}>\r\n {this.props.children}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n navigationLoadingActive: store.navigationState.navigationLoadingActive,\r\n isMobile: store.serverState.isMobile,\r\n }\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(BodySwipable);\r\n","import React, {Component} from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from 'prop-types';\r\nimport $ from \"jquery\";\r\nimport {\r\n // FacebookShareButton,\r\n TwitterShareButton,\r\n // PinterestShareButton,\r\n} from 'react-share';\r\nimport {FormattedMessage} from \"react-intl\";\r\nimport takeRight from \"lodash/takeRight\";\r\n\r\nimport ActionTypes from \"../../misc/actionTypes\";\r\nimport Analytics from './../../analytics';\r\nimport UserLoginButton from './../ui/userLoginButton';\r\nimport {shareImageRebath, shareImage} from \"../bvComponent/core/assets\";\r\nimport SaveButton from \"./saveButton\";\r\nimport {toggleUserPopup} from \"../../actions/actionFunctions\";\r\nimport Config from \"../../config\";\r\n\r\nexport class ShareButton extends Component {\r\n\r\n static propTypes = {\r\n renderList: PropTypes.bool\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n shareListOpened: false,\r\n };\r\n this.clickShareAfterLogin = null;\r\n this.elements = {\r\n email: React.createRef(),\r\n facebook: React.createRef(),\r\n twitter: React.createRef(),\r\n pinterest: React.createRef(),\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n $(document).on(ActionTypes.USER_IS_LOGGED_IN, async () => { // click on current active item after unlock\r\n if (this.clickShareAfterLogin) {\r\n console.log('this.clickShareAfterLogin', this.clickShareAfterLogin);\r\n const shareButton = this.elements[this.clickShareAfterLogin];\r\n if (shareButton) {\r\n shareButton.current.click();\r\n }\r\n this.clickShareAfterLogin = null;\r\n }\r\n });\r\n $(window).on(ActionTypes.USER_POPUP_CLOSED, () => { // reset saved\r\n if (this.clickShareAfterLogin) {\r\n this.clickShareAfterLogin = null;\r\n }\r\n });\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.visualizerTutorialStep === 3 && this.props.visualizerTutorialStep === 2) {\r\n this.toggleShareList();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n $(document).off(ActionTypes.USER_IS_LOGGED_IN);\r\n $(window).off(ActionTypes.USER_POPUP_CLOSED);\r\n }\r\n\r\n renderImage = () => {\r\n // const canvas = document.getElementById(this.props.canvasId);\r\n // const imageUrl = canvas.toDataURL();\r\n const imageUrl = this.props.fabricatorData.isRebath\r\n ? encodeURIComponent(shareImageRebath)\r\n : encodeURIComponent(shareImage[document.kvConfig.visualizerType]);\r\n Analytics.sendClickEvent('share-button-pinterest');\r\n window.open(`//pinterest.com/pin/create/button/?url=${encodeURIComponent(this.props.shareUrl)}&media=${imageUrl}`, '_blank')\r\n };\r\n\r\n handleWrapperBlur = (e) => {\r\n if (!e.target.closest('.share-list__item .mobilebutton') && !e.target.closest('.share') && !this.clickShareAfterLogin) {\r\n this.toggleShareList();\r\n }\r\n };\r\n\r\n toggleShareList = () => {\r\n Analytics.sendClickEvent(this.state.shareListOpened ? 'share-list-toggle-closed' : 'share-list-toggle-opened');\r\n this.setState({\r\n shareListOpened: !this.state.shareListOpened\r\n }, () => {\r\n if (this.state.shareListOpened) {\r\n document.addEventListener('click', this.handleWrapperBlur);\r\n } else {\r\n document.removeEventListener('click', this.handleWrapperBlur);\r\n }\r\n })\r\n };\r\n\r\n checkForLoggedIn = (e) => {\r\n Analytics.sendClickEvent('share-button-' + e.target.dataset.share);\r\n if (!UserLoginButton.handleLoginClick({...this.props})) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this.clickShareAfterLogin = e.target.closest(this.props.renderList ? \".menu-dropdown__list-item\" : \".mobilebutton\").dataset.share;\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n faceBookButtonClick = (event) => {\r\n if (this.checkForLoggedIn(event)) {\r\n // const fbUrl = (Config.isMobile() || this.props.windowWidth < 991)\r\n // ? \"https://m.facebook.com/sharer/sharer.php?u=\"\r\n // : \"https://www.facebook.com/sharer/sharer.php?&p[url]=\";\r\n const fbUrl = \"https://facebook.com/sharer/sharer.php?u=\";\r\n const qfUrl = location.protocol + \"//\" + takeRight(window.location.hostname.split('.'), 2).join('.') + \"/url?u=\";\r\n const shareUrlSplitted = this.props.shareUrl.split(\".com\")\r\n if (Config.isDevMode()) {\r\n console.log(\"this.props.shareUrl\", this.props.shareUrl);\r\n console.log(\"shareUrlSplitted\", shareUrlSplitted);\r\n }\r\n window.open(\r\n fbUrl + qfUrl + shareUrlSplitted[0] + \".com\" + encodeURIComponent(shareUrlSplitted[1]),\r\n 'facebook-share-dialog',\r\n 'width=630,height=420'\r\n );\r\n\r\n // 'https://www.facebook.com/dialog/share?\\n' +\r\n // ' app_id=402959133605207&display=page&href='+this.props.shareUrl +\r\n // ' app_id=402959133605207&display=page&href=https%3A%2F%2Ffacebook.com%2Fdocs%2F&redirect_uri=https%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fexplorer',\r\n\r\n return false;\r\n }\r\n };\r\n\r\n getShareButtons = () => {\r\n const dashboardFramed = Config.isVisualizerManagement();\r\n const allPagesEnabled = !document.kvConfig.visualizerOnly;\r\n return (\r\n
      \r\n
    • \r\n \r\n email\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 {this.props.windowWidth >= 991 || dashboardFramed\r\n || (this.props.fabricatorData.checkout && this.props.goToCart && allPagesEnabled) ? null : (\r\n
    • \r\n \r\n
    • \r\n )}\r\n {/*
    • */}\r\n {/**/}\r\n {/*
    • */}\r\n
    \r\n )\r\n };\r\n\r\n getShareList = () => {\r\n return (\r\n
      \r\n
    • \r\n Email\r\n
    • \r\n
    • \r\n facebook\r\n
    • \r\n
    • \r\n pinterest\r\n
    • \r\n \r\n
    • \r\n Twitter\r\n
    • \r\n
      \r\n {/*
    • */}\r\n {/*Houzz
    • */}\r\n
    \r\n )\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n {this.props.renderList ? this.getShareList() : this.getShareButtons()}\r\n
    \r\n )\r\n }\r\n\r\n}\r\nconst mapStateToProps = (store) => ({\r\n fabricatorData: store.fabricatorState,\r\n windowWidth: store.serverState.windowWidth,\r\n visualizerTutorialStep: store.tutorialState.visualizerTutorialStep,\r\n isPhoneNumberValidated: store.userState.isPhoneNumberValidated,\r\n userIsLoggedIn: store.userState.userIsLoggedIn,\r\n shareUrl: store.serverState.shareUrl,\r\n});\r\nexport default connect(mapStateToProps, {\r\n toggleUserPopup\r\n})(ShareButton);\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {setMaterialsAgentTutorialFinished, showMaterialsAgentTutorial} from \"../../actions/tutorialFunctions\";\r\nimport WithPingPilotCheck from \"../look/hocs/withPingPilotCheck\";\r\n\r\nconst PingPilotButton = (props) => {\r\n\r\n const {design, showMaterialsAgentTutorial, setMaterialsAgentTutorialFinished, materialsAgentTutorialIsOpened,\r\n materialsAgentTutorialFinished, pingButton} = props;\r\n\r\n const pingButtonClick = () => {\r\n pingButton.click();\r\n if (materialsAgentTutorialIsOpened) {\r\n showMaterialsAgentTutorial(false);\r\n }\r\n if (!materialsAgentTutorialFinished) {\r\n setMaterialsAgentTutorialFinished(true);\r\n }\r\n }\r\n\r\n if (design === \"mainButton\") {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n
    \r\n );\r\n};\r\n\r\nARButtonGoogleWebXR.propTypes = {\r\n url: PropTypes.string,\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n visualizersLoaded: store.serverState.visualizersLoaded,\r\n cabinetsARBlobUrl: store.sqftState.cabinetsARBlobUrl,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default withRouter(\r\n injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(ARButtonGoogleWebXR)\r\n )\r\n);\r\n","import React, {Fragment} from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {injectIntl} from \"react-intl\";\r\n\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport SearchIcon from '@mui/icons-material/Search';\r\n\r\nimport LookViewTypeSwitcher from \"../../../../../../../look/lookNavigation/lookMain/lookViewTypeSwitcher\";\r\nimport {\r\n SIDEBAR_NAVIGATION_BUTTONS,\r\n SIDEBAR_NAVIGATION_BUTTONS_LEVEL3\r\n} from \"../../../../../../constants\";\r\nimport {\r\n setSQFTActiveButton,\r\n setSQFTActiveLevel3Button,\r\n setSQFTMenuOpened\r\n} from \"../../../../../../../../actions/sqftMenuFunctions\";\r\nimport {setLookActiveCategory} from \"../../../../../../../../actions/lookFunctions\";\r\nimport {showFilters} from \"../../../../../../../../actions/actionFunctions\";\r\nimport {setGroheFiltersSearchText} from \"../../../../../../../../actions/groheFunctions\";\r\nimport {getFeatureGroupName} from \"../../../../../../../../misc/helpers\";\r\nimport {getCurrentLayout} from \"../../../../../../../appLayout\";\r\n\r\nconst SQFTFeaturesHeader = (props) => {\r\n const { headerTitle, partId } = props;\r\n //const {searchInputValue , setSearchInput} = props;\r\n const { intl, setSQFTActiveButton, setSQFTMenuOpened, activeLevel3Button, setSQFTActiveLevel3Button,\r\n setLookActiveCategory, showFilters, isFiltersOpened, setGroheFiltersSearchText, fabricatorData } = props;\r\n\r\n const handleClose = () => {\r\n setSQFTMenuOpened(SIDEBAR_NAVIGATION_BUTTONS.move);\r\n setSQFTActiveButton(SIDEBAR_NAVIGATION_BUTTONS.move);\r\n }\r\n\r\n const handleSearchClick = (e) => {\r\n void e;\r\n if (activeLevel3Button === SIDEBAR_NAVIGATION_BUTTONS_LEVEL3.filters) {\r\n setSQFTActiveLevel3Button(null);\r\n setGroheFiltersSearchText(\"\");\r\n showFilters(false);\r\n } else {\r\n setLookActiveCategory(partId); // set filters featureGroup\r\n showFilters(!isFiltersOpened);\r\n setSQFTActiveLevel3Button(SIDEBAR_NAVIGATION_BUTTONS_LEVEL3.filters);\r\n }\r\n }\r\n\r\n // const handleInputChange = (e) => {\r\n // setSearchInput(e.target.value);\r\n // }\r\n let featureGroupName = \"\";\r\n if (partId) {\r\n const layout = getCurrentLayout();\r\n const featureGroup = layout.getFeatureGroupByPartId(partId);\r\n featureGroupName = getFeatureGroupName(featureGroup, intl, fabricatorData);\r\n }\r\n\r\n return (\r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n { headerTitle ? headerTitle : featureGroupName }\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\nSQFTFeaturesHeader.protoTypes = {\r\n featureTitleId: PropTypes.string,\r\n partId: PropTypes.string\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n activeLevel3Button: store.sqftMenuState.activeLevel3Button,\r\n isFiltersOpened: store.filterState.showFilters,\r\n fabricatorData: store.fabricatorState,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n setSQFTActiveButton,\r\n setSQFTMenuOpened,\r\n setSQFTActiveLevel3Button,\r\n setLookActiveCategory,\r\n showFilters,\r\n setGroheFiltersSearchText\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(SQFTFeaturesHeader)\r\n);\r\n","import * as types from './actionTypes';\r\n\r\nexport const setIframeIntegrationRequest = (iframeIntegrationRequest) => ({\r\n type: types.SET_IFRAME_INTEGRATION_REQUEST,\r\n payload: {iframeIntegrationRequest}\r\n})\r\n\r\nexport const setIframeIntegrationResponse = (iframeIntegrationResponse) => ({\r\n type: types.SET_IFRAME_INTEGRATION_RESPONSE,\r\n payload: {iframeIntegrationResponse}\r\n})\r\n","import React, {useState} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport ExpandMore from \"@mui/icons-material/ExpandMore\";\r\n\r\nimport FeatureThumbnail from \"../../visComponents/featureThumbnail\";\r\nimport FeatureName from \"../../visComponents/featureName\";\r\nimport LookFeaturePrice from \"../lookNavigation/lookMain/lookListFeature/lookFeaturePrice\";\r\nimport LookListMainFeatureActions from \"./listFeatureActions/lookListMainFeatureActions\";\r\nimport LookFeatureQuantity from \"./lookFeatureQuantity\";\r\nimport {cartItemInterface} from \"../../shoppingCart/cartItemInterface\";\r\nimport LookListBundleFeatures from \"./lookListBundleFeatures\";\r\nimport {cartItemInStock, featureIsBundle, getBundledFeatures} from \"../lookNavigation/lookFunctions2\";\r\nimport {IS_LIXIL_SERVERS, IS_PRODUCT_JOURNEY} from \"../../../config\";\r\nimport GroheCartItemActions from \"../grohe/groheCart/groheCartItemActions\";\r\nimport LookListMainFeatureCheckbox from \"./lookListMainFeatureCheckbox\";\r\nimport LookListMainFeatureShipping from \"./lookListMainFeatureShipping\";\r\nimport {getFeatureGroupName, getFeatureIsLocked} from \"../../../misc/helpers\";\r\nimport LookFeatureSku from \"../lookNavigation/lookMain/lookFeature/lookFeatureSku\";\r\n\r\nconst LookListMainFeature = (props) => {\r\n\r\n const {intl, cartItem, quantity, cartItems, isBundleChild, showUnlockCalculations, showCartItems, cItemsAddedToParentCart,\r\n isMobile, withShipping, isPhoneNumberValidated, fabricatorData} = props;\r\n\r\n const fabricatorSettings = fabricatorData.settings;\r\n const {cartFeature} = cartItem;\r\n const [bundleExpanded, setBundleExpanded] = useState(true);\r\n\r\n const outOfStock = (\r\n \r\n \r\n \r\n );\r\n\r\n const expandBundleButton = (\r\n setBundleExpanded(!bundleExpanded)}>\r\n \r\n \r\n );\r\n\r\n const relatedFeatures = getBundledFeatures(cartFeature);\r\n const isBundle = featureIsBundle(cartFeature, cartItems);\r\n const inStock = cartItemInStock(cartItem);\r\n const isBundleParent = isBundle && cartFeature.partId === \"shower_fixture\" && relatedFeatures.length > 1;\r\n\r\n const showPriceLocked = getFeatureIsLocked(cartFeature) || (fabricatorSettings.enableQuote && !isPhoneNumberValidated);\r\n\r\n return (\r\n
  • \r\n
    \r\n {withShipping ? null : }\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {isBundle\r\n ? : null}\r\n \r\n

    \r\n {IS_LIXIL_SERVERS\r\n ? \r\n : cartFeature.getParent ? getFeatureGroupName(cartFeature.getParent(), intl, fabricatorData) : null}\r\n

    \r\n {!withShipping ? (\r\n

    \r\n \r\n {/*{isInStock(lookActiveFeature) ? null : (*/}\r\n {/* */}\r\n {/* */}\r\n {/**/}\r\n {/*)}*/}\r\n

    \r\n ) : null}\r\n {withShipping ? : null}\r\n
    \r\n {(isMobile && withShipping) || !fabricatorSettings.showPricing ? null : (\r\n
    \r\n {isBundleParent ? null : (\r\n inStock ? : outOfStock\r\n )}\r\n
    \r\n )}\r\n {isBundle ? (\r\n
    \r\n {expandBundleButton}\r\n
    \r\n ) : null}\r\n {isBundleParent ? null : (\r\n
    \r\n \r\n
    \r\n )}\r\n {(isMobile && withShipping) || !fabricatorSettings.showPricing ? null\r\n : IS_PRODUCT_JOURNEY\r\n ? \r\n : }\r\n
    \r\n {isBundle && bundleExpanded ? : null}\r\n
  • \r\n )\r\n};\r\n\r\nLookListMainFeature.propTypes = {\r\n cartItem: PropTypes.shape(cartItemInterface).isRequired,\r\n withShipping: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n const {lookExpanded, lookViewType} = store.lookState;\r\n const {cartItems, cItemsAddedToParentCart} = store.cartState;\r\n const {showUnlockCalculations, showCartItems} = store.unlockCalculationsState;\r\n const {isMobile} = store.serverState;\r\n const {isPhoneNumberValidated} = store.userState;\r\n const fabricatorData = store.fabricatorState;\r\n\r\n return {\r\n lookExpanded,\r\n lookViewType,\r\n quantity: ownProps.cartItem.quantity,\r\n cartItems,\r\n showUnlockCalculations,\r\n showCartItems,\r\n cItemsAddedToParentCart,\r\n isMobile,\r\n fabricatorData,\r\n isPhoneNumberValidated,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookListMainFeature)\r\n)\r\n","import React, {PureComponent} from 'react';\r\nimport { hashHistory } from \"react-router\";\r\nimport classnames from 'classnames';\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nclass HomeButton extends PureComponent {\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default HomeButton\r\n","import React from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport $ from 'jquery';\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {\r\n toggleSelectionWindow, setCameFromPage, setQtActiveCategory, changeActivePartRelatedItemIndex\r\n} from \"../../actions/actionFunctions\";\r\nimport Analytics from './../../analytics';\r\nimport {getCurrentLayout} from \"../appLayout\";\r\nimport ProjectScopeFunctions from '../projectScope/projectScopeFunctions';\r\n\r\nclass MobileMenu extends ProjectScopeFunctions {\r\n\r\n static propTypes = {\r\n smallButton: PropTypes.bool,\r\n smallButtonClassName: PropTypes.string\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n toggle: false,\r\n showRelatedItems: false,\r\n showSubNav: false\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n $(document).off('click', this.handleMobileBlur);\r\n }\r\n\r\n handleItemClick = (bvDataPart) => {\r\n Analytics.sendClickEvent(\"mobile-menu-item\");\r\n const layout = getCurrentLayout();\r\n if(bvDataPart === \"Return to Website\") {\r\n this.setState({showSubNav: true});\r\n } else {\r\n $(document).off('click', this.handleMobileBlur);\r\n if (layout.qtCategories) {\r\n const qtCategory = layout.qtCategories.find(qtCategory => qtCategory.name === bvDataPart);\r\n this.goToMaterialsPageCommon(qtCategory.subParts[0].part, bvDataPart);\r\n } else {\r\n this.goToMaterialsPageCommon(layout.parts[bvDataPart].subParts(false)[0].part, bvDataPart);\r\n }\r\n }\r\n };\r\n\r\n handleBack = () => {\r\n if(this.state.showSubNav) {\r\n this.setState({showSubNav: false});\r\n } else {\r\n this.handleToggleDropdown();\r\n }\r\n };\r\n\r\n handleToggleDropdown = () => {\r\n Analytics.sendClickEvent(\"mobile-menu-toggle-\" + (this.state.toggle ? 'show': 'hide'));\r\n this.setState({\r\n toggle: !this.state.toggle,\r\n showSubNav: false\r\n }, () => {\r\n this.state.toggle\r\n ? $(document).on('click', this.handleMobileBlur)\r\n : $(document).off('click', this.handleMobileBlur)\r\n })\r\n };\r\n\r\n handleMobileBlur = (e) => {\r\n const navClick = e.target.closest('[class*=\"mobmenu\"]');\r\n const backButtonClick = e.target.closest('.ui-back');\r\n if (!navClick && !backButtonClick) {\r\n this.handleToggleDropdown();\r\n }\r\n };\r\n\r\n getMenuItems = () => {\r\n const layout = getCurrentLayout();\r\n if (!layout) {\r\n return []\r\n }\r\n if (this.props.mobileNav && this.props.mobileNav.length > 0 && window.location.href.includes(\"materials\")) {\r\n return [\"Return to Website\"]\r\n }\r\n let menu = (layout.qtCategories)\r\n ? layout.qtCategories.map(qtCategory => qtCategory.name)\r\n : [...this.props.layoutParts]\r\n if (this.props.mobileNav && this.props.mobileNav.length > 0) {\r\n menu.unshift(\r\n \"Return to Website\"\r\n );\r\n }\r\n return menu\r\n };\r\n\r\n render() {\r\n\r\n const menuItems = this.getMenuItems();\r\n\r\n return menuItems.length ? (\r\n
    \r\n {this.props.smallButton ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n {this.props.mobileNav && this.props.mobileNav.length > 0 ?\r\n \r\n : null }\r\n \r\n
    \r\n
    \r\n ) : null\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n layoutParts: store.stepsState.layoutParts,\r\n mobileNav: store.navigationState.mobileNav\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n toggleSelectionWindow,\r\n setCameFromPage,\r\n setQtActiveCategory,\r\n changeActivePartRelatedItemIndex\r\n})(MobileMenu);\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport {connect} from \"react-redux\";\r\nimport {injectIntl} from \"react-intl\";\r\n\r\nimport {toFixedFeatureCost, TAX_DISCOUNT_PCT, getFeatureUnit, getPriceWithCurrency} from \"../../../misc/helpers\";\r\nimport {cartItemInterface} from \"../../shoppingCart/cartItemInterface\";\r\nimport {getPriceWithIncluded} from \"../../../misc/priceFunctions\";\r\nimport FeaturePriceInput from \"./featurePriceInput\";\r\n\r\nconst FeatureInfoPrice = (props) => {\r\n\r\n let {\r\n mainFeaturePrice = false,\r\n selectionFeatureInfo,\r\n showDiscount = false,\r\n fabricatorData,\r\n isPhoneNumberValidated,\r\n intl,\r\n unitAfter,\r\n withTotalSlabCost,\r\n cartItemEditFeature,\r\n qtActiveCategory,\r\n showPrice,\r\n } = props;\r\n const fabricatorSettings = fabricatorData.settings;\r\n\r\n if (mainFeaturePrice && fabricatorSettings.leadCaptureShoppingCart && !isPhoneNumberValidated) {\r\n return null\r\n }\r\n\r\n if ((typeof showPrice !== 'undefined') && !showPrice && !(document.kvConfig.isBackend && selectionFeatureInfo && selectionFeatureInfo.dbFeature\r\n && selectionFeatureInfo.dbFeature.priceEditable)) {\r\n return null\r\n }\r\n\r\n selectionFeatureInfo = props.feature || selectionFeatureInfo;\r\n\r\n let quantity = 1;\r\n if (mainFeaturePrice) { // price is changing depending on quantity\r\n quantity = (props.accItemQuantity || (props.accItemQuantity === 0))\r\n ? props.accItemQuantity\r\n : props.selectionInfoQuantity || 1\r\n }\r\n const price = toFixedFeatureCost(selectionFeatureInfo, quantity, qtActiveCategory, withTotalSlabCost, cartItemEditFeature);\r\n const salePercentage = TAX_DISCOUNT_PCT;\r\n const priceOld = Math.trunc((price + price*salePercentage/100) * 100) / 100;\r\n\r\n if (mainFeaturePrice) {\r\n return (\r\n
    \r\n
    \r\n {getPriceWithIncluded(price, selectionFeatureInfo, fabricatorData, intl.messages)}\r\n
    \r\n {/*
    (${selectionFeatureInfo.dbFeature.unit || \"Each\"})
    */}\r\n
    \r\n )\r\n }\r\n\r\n const unit = getFeatureUnit(selectionFeatureInfo, intl, fabricatorData, quantity);\r\n\r\n const getPriceSection = () => {\r\n\r\n // if unitAfter then it is row item, we don't need it to show in row view\r\n if (!unitAfter && document.kvConfig.isBackend && selectionFeatureInfo && selectionFeatureInfo.dbFeature\r\n && selectionFeatureInfo.dbFeature.priceEditable) {\r\n return \r\n }\r\n\r\n return (\r\n
    \r\n \r\n {!price\r\n ? getPriceWithIncluded(price, selectionFeatureInfo, fabricatorData, intl.messages)\r\n : unitAfter\r\n ? getPriceWithCurrency(fabricatorSettings, price, selectionFeatureInfo)\r\n : `${getPriceWithCurrency(fabricatorSettings, price, selectionFeatureInfo)} (${unit})`}\r\n \r\n {price && unitAfter ? ({unit}) : null}\r\n
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n {showDiscount && price ? {getPriceWithCurrency(fabricatorSettings, priceOld, selectionFeatureInfo)} : null}\r\n {getPriceSection()}\r\n {showDiscount && price ? (\r\n \r\n {`${intl.formatMessage({id: \"quotingTool.featureInfo.discountSavePercent\"})} ${getPriceWithCurrency(fabricatorSettings, Math.trunc((priceOld - price) * 100) / 100, selectionFeatureInfo)} (${salePercentage}%)`}\r\n \r\n ) : null}\r\n
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n selectionFeatureInfo: store.selectionState.selectionFeatureInfo,\r\n featureInfoCount: store.selectionState.featureInfoCount, // to update component when price is changed\r\n fabricatorData: store.fabricatorState,\r\n isPhoneNumberValidated: store.userState.isPhoneNumberValidated,\r\n selectionInfoQuantity: store.selectionState.selectionInfoQuantity,\r\n qtActiveCategory: store.qtState.qtActiveCategory,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n\r\n};\r\n\r\nFeatureInfoPrice.propTypes = {\r\n feature: PropTypes.object,\r\n mainFeaturePrice: PropTypes.bool,\r\n accItemQuantity: PropTypes.number,\r\n size: PropTypes.string,\r\n unitAfter: PropTypes.bool,\r\n withTotalSlabCost: PropTypes.bool,\r\n showPrice: PropTypes.bool,\r\n cartItemEditFeature: PropTypes.shape(cartItemInterface),\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(FeatureInfoPrice)\r\n);\r\n","export const getListItemHeight = (props) => {\r\n\r\n const {isMobile, selectionWindowView, itemsList} = props;\r\n\r\n // console.log(\"itemsList\", itemsList);\r\n\r\n if (isMobile || !itemsList || !itemsList.current) {\r\n return 0\r\n }\r\n let widthPercentage = 32.3;\r\n switch(selectionWindowView) {\r\n case 1:\r\n widthPercentage = 32.3;\r\n break;\r\n case 2:\r\n widthPercentage = 24;\r\n break;\r\n case 3:\r\n widthPercentage = 19;\r\n break;\r\n default:\r\n break;\r\n }\r\n return Math.round(itemsList.current.clientWidth*widthPercentage/100);\r\n\r\n};\r\n\r\nexport const shouldReplaceSelectionInfoFeature = (selectedFeature) => {\r\n if ((document.kvConfig.visualizerType === \"bvScene\" || document.kvConfig.visualizerType === \"bvLook\")\r\n && selectedFeature.getParent) {\r\n const featureG = selectedFeature.getParent();\r\n if (featureG && featureG.oneLayerPosition && featureG.activeFeature\r\n && (featureG.activeFeature.dbFeature.id !== selectedFeature.dbFeature.id)\r\n && featureG.activeFeature.getMatchingFeatureName && selectedFeature.getMatchingFeatureName\r\n && (featureG.activeFeature.getMatchingFeatureName() === selectedFeature.getMatchingFeatureName())) {\r\n selectedFeature = featureG.activeFeature; // we changed left change to right in nav position modal\r\n }\r\n }\r\n return selectedFeature\r\n}\r\n","import React, {Component, Fragment} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport {\r\n setCameFromPage,\r\n toggleSelectionFeatureInfo\r\n} from \"../../../actions/actionFunctions\";\r\n\r\nimport {UserPopupTypes} from \"../../visComponents/constants\";\r\nimport Analytics from \"../../../analytics\";\r\nimport {getFeatureIsLocked, toFixedFeatureCost} from '../../../misc/helpers';\r\nimport FeatureThumbnail from \"../../visComponents/featureThumbnail\";\r\nimport FeatureName from \"../../visComponents/featureName\";\r\nimport FeatureCartItemsCount from \"../featureCartItemsCount\";\r\nimport {getPriceWithIncluded} from \"../../../misc/priceFunctions\";\r\nimport Config from \"../../../config\";\r\nimport {wizardGroupInterface} from \"../../../interfaces/wizardItemInterface\";\r\nimport {shouldReplaceSelectionInfoFeature} from \"../../qkbPages/materialsCommon/materialsCommonFunctions\";\r\nimport SuperAdminFeatureToolSettingsButton from \"../../qkbPages/superAdmin/SuperAdminFeatureToolSettingsButton\";\r\nimport {getDifferentToolSettings} from \"../../qkbPages/superAdmin/adminFunctions\";\r\n// import MaterialsWizardAddToCartAndSkipButton\r\n// from \"../../qkbPages/materialsWizard/materialsWizardAddToCartAndSkipButton\";\r\n\r\nclass SelectionGridItem extends Component {\r\n\r\n static propTypes = {\r\n currentFeature: PropTypes.object.isRequired,\r\n handleFeatureClick: PropTypes.func.isRequired,\r\n checkIfFeatureSelected: PropTypes.func.isRequired,\r\n styles: PropTypes.object.isRequired,\r\n handleUserLoginClick: PropTypes.func.isRequired,\r\n isWizard: PropTypes.bool,\r\n wizardGroup: PropTypes.shape(wizardGroupInterface),\r\n };\r\n\r\n // handleInfoClick = () => {\r\n // const {isPhoneNumberValidated, fabricatorData, currentFeature, handleUserLoginClick} = this.props;\r\n // const fabricatorSettings = fabricatorData.settings;\r\n //\r\n // if ((fabricatorSettings.leadCaptureOnQuote && !(document.kvConfig.isBackend && document.kvConfig.jobId && document.kvConfig.canSaveQuote)) && (!currentFeature.part.dbFeature.unlocked && !isPhoneNumberValidated)){\r\n // handleUserLoginClick();\r\n // } else {\r\n // toggleSelectionFeatureInfo(currentFeature.part);\r\n // }\r\n // };\r\n\r\n goToFeatureInfo = () => {\r\n const selectedFeature = shouldReplaceSelectionInfoFeature(this.props.currentFeature.part);\r\n this.props.toggleSelectionFeatureInfo(selectedFeature);\r\n this.props.setCameFromPage(\"materials\"); // no more visualizer or shoppingcart switch\r\n };\r\n\r\n render() {\r\n\r\n const {currentFeature, fabricatorData, isPhoneNumberValidated, styles, showAdvancedQuoting, qtActiveCategory, intl,\r\n language, isWizard, wizardGroup} = this.props;\r\n const selected = this.props.checkIfFeatureSelected(currentFeature.part);\r\n const fabricatorSettings = this.props.fabricatorData.settings;\r\n const featureIsLocked = getFeatureIsLocked(currentFeature.part);\r\n\r\n const hidePriceNoCart = isWizard && wizardGroup && wizardGroup.hidePriceNoCart;\r\n const wizardSkipAndAddToCartButtonVisible = isWizard && wizardGroup && (wizardGroup.skipProductInfo || hidePriceNoCart);\r\n\r\n const getQuoteEnabled = fabricatorSettings.enableQuote && !featureIsLocked;\r\n const quoteOrUnlockButtonVisible = (featureIsLocked || (getQuoteEnabled && !isPhoneNumberValidated))\r\n && !wizardSkipAndAddToCartButtonVisible;\r\n\r\n const showPrice = fabricatorSettings.showPricing && !fabricatorData.hideCheckoutBreakdownCost && !featureIsLocked\r\n && !fabricatorData.hidePricesFromUser && !hidePriceNoCart;\r\n\r\n const isAddToCartButtonVisible = selected && fabricatorSettings.showPricing && !featureIsLocked && !quoteOrUnlockButtonVisible && !showAdvancedQuoting\r\n && !wizardSkipAndAddToCartButtonVisible;\r\n\r\n const infoButtonVisible = !wizardSkipAndAddToCartButtonVisible;\r\n\r\n const price = toFixedFeatureCost(currentFeature.part, 1, qtActiveCategory);\r\n\r\n return (\r\n
    this.props.handleFeatureClick(currentFeature, event)}\r\n onDoubleClick={infoButtonVisible ? this.goToFeatureInfo : null}>\r\n \r\n \r\n {currentFeature.part.vanitySize ?\r\n {currentFeature.part.vanitySize}\" : null\r\n }\r\n \r\n {selected ? (\r\n
    \r\n {isAddToCartButtonVisible ? (\r\n \r\n ) : null}\r\n {/*{wizardSkipAndAddToCartButtonVisible*/}\r\n {/* ? */}\r\n {/* : null}*/}\r\n {quoteOrUnlockButtonVisible ? (\r\n \r\n ) : null}\r\n {infoButtonVisible ? : null}\r\n
    \r\n ) : null}\r\n {/*{currentFeature.part.notAvailableInVisualizer ? (*/}\r\n {/*Not in Visualizer*/}\r\n {/*) : null}*/}\r\n
    \r\n {showPrice ? (\r\n \r\n {getPriceWithIncluded(price, currentFeature.part, fabricatorData, intl.messages)}\r\n \r\n ) : null}\r\n {featureIsLocked ? null : }\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {language} = store.serverState;\r\n const {adminToolSettingsPopupVisible} = store.adminState;\r\n return {\r\n isPhoneNumberValidated: store.userState.isPhoneNumberValidated,\r\n fabricatorData: store.fabricatorState,\r\n filterGroups: store.filterState.filterGroups,\r\n showAdvancedQuoting: store.advancedQuotingState.showAdvancedQuoting,\r\n qtActiveCategory: store.qtState.qtActiveCategory,\r\n language,\r\n adminToolSettingsPopupVisible,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n toggleSelectionFeatureInfo,\r\n setCameFromPage\r\n}\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(SelectionGridItem)\r\n);\r\n","import PropTypes from \"prop-types\";\r\n\r\nexport const shiftFilterTitleInterface = {\r\n shiftTitleIndex: PropTypes.number,\r\n filterValue: PropTypes.object.isRequired,\r\n elementIndex: PropTypes.number,\r\n positionTop: PropTypes.number,\r\n columnPosition: PropTypes.number,\r\n type: PropTypes.string\r\n};\r\n","import React, {useEffect} from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {getCurrentLayout} from \"../appLayout\";\r\nimport {setStaticCanvasImage} from \"../../actions/visualizerFunctions\";\r\nimport {getRoomImageFromQtCategory} from \"../../misc/categorySwitchingFunctions\";\r\nimport {getCommonVisualizerType} from \"../../config\";\r\n\r\nconst HardcodedCanvasImage = (props) => {\r\n\r\n const {disableLoader, enableLoader, staticCanvasImage, fabricatorData, qtActiveCategory, setStaticCanvasImage,\r\n activePartRelatedItemIndex, activeQuoteIndex, cartItems, visualizerIsChanging} = props;\r\n\r\n useEffect(() => {\r\n // console.log(\"qtActiveCategory\", qtActiveCategory);\r\n if (!fabricatorData.settings.useCategorySwitching || !qtActiveCategory || !window.location.href.includes(\"materials\")) {\r\n return null\r\n }\r\n\r\n const layout = getCurrentLayout();\r\n if (!layout.qtCategories) {\r\n return null\r\n }\r\n const currentRoomName = qtActiveCategory.trim().toLowerCase();\r\n const currentQtCat = layout.qtCategories.find(qtCategory => qtCategory.name === qtActiveCategory);\r\n\r\n const {fabricatorSubscriptions} = fabricatorData;\r\n\r\n if (currentRoomName !== getCommonVisualizerType().toLowerCase()\r\n && currentQtCat\r\n && currentQtCat.subParts[activePartRelatedItemIndex]\r\n && currentQtCat.subParts[activePartRelatedItemIndex].part.partId !== \"room\"\r\n && (!fabricatorData.settings.allowVisualizerSwitching || !fabricatorSubscriptions.some(subscription => subscription && subscription.service.toLowerCase() === currentRoomName))) {\r\n // allowVisualizerSwitching is turned off - show image, or check, if there are no available visualizers with clicked room\r\n setStaticCanvasImage(getRoomImageFromQtCategory(qtActiveCategory, fabricatorData.settings));\r\n } else if (staticCanvasImage) {\r\n setStaticCanvasImage(\"\");\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [qtActiveCategory])\r\n\r\n useEffect(() => {\r\n if (visualizerIsChanging) {\r\n return\r\n }\r\n setStaticCanvasImage(getRoomImageFromQtCategory(\"\", activeQuoteIndex));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [activeQuoteIndex, cartItems, visualizerIsChanging]) // update when visualizer is switched\r\n\r\n if (!staticCanvasImage) {\r\n return null\r\n }\r\n\r\n return (\r\n
    \r\n disableLoader ? disableLoader() : null}\r\n onLoadStart={() => enableLoader ? enableLoader() : null}\r\n alt=\"\"\r\n src={staticCanvasImage} />\r\n
    \r\n )\r\n};\r\n\r\nHardcodedCanvasImage.propTypes = {\r\n enableLoader: PropTypes.func,\r\n disableLoader: PropTypes.func,\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {staticCanvasImage} = store.bathroomVisualizerState;\r\n const fabricatorData = store.fabricatorState;\r\n const {qtActiveCategory} = store.qtState;\r\n const {activePartRelatedItemIndex} = store.selectionState;\r\n const {activeQuoteIndex} = store.quotesState;\r\n const {cartItems} = store.cartState;\r\n const {visualizerIsChanging} = store.serverState;\r\n\r\n return {\r\n staticCanvasImage,\r\n fabricatorData,\r\n qtActiveCategory,\r\n activePartRelatedItemIndex,\r\n activeQuoteIndex,\r\n cartItems,\r\n visualizerIsChanging,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setStaticCanvasImage\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(HardcodedCanvasImage);\r\n","import React from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\nimport {loaderDisable, loaderEnable} from \"./loaderView\";\r\nimport {getNavigationButtons} from \"../../api/server-api\";\r\nimport NoInternetIcon from \"./icons/noInternetIcon\";\r\n\r\nconst NoInternetOverlay = (props) => {\r\n\r\n // const {networkConnection, showAdvancedQuoting, isMobile} = props;\r\n const {networkConnection} = props;\r\n\r\n if (networkConnection) { // show only if internet is offline\r\n return null\r\n }\r\n\r\n const retryConnectionClick = async () => {\r\n loaderEnable();\r\n await getNavigationButtons(true);\r\n loaderDisable();\r\n }\r\n\r\n return (\r\n //
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {networkConnection, isMobile} = store.serverState;\r\n const {showAdvancedQuoting} = store.advancedQuotingState;\r\n return {\r\n networkConnection,\r\n isMobile,\r\n showAdvancedQuoting,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(NoInternetOverlay)\r\n","import React, {Fragment} from \"react\";\r\n\r\nexport default {\r\n \"vanity_faucet\": (\r\n \r\n ),\r\n \"bathtub_fixture\": (\r\n \r\n ),\r\n \"bathtub_body\": (\r\n \r\n ),\r\n // \"shower_fixture\": (\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 \"shower_fixture\": (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"shower_head\": (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"shower_arm\": (\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"shower_head_bundle\": (\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 \"shower_door\": (\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 \"shower_wall\": (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"shower_pan_combo\": (\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 \"hand_shower_kit\": (\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 \"replacement_tub\": (\r\n \r\n \r\n \r\n \r\n ),\r\n \"toilet\": (\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"vanity_sink\": (\r\n \r\n \r\n \r\n \r\n ),\r\n \"vanity_pedestal_sink\": (\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"vanity_countertop\": (\r\n \r\n \r\n \r\n \r\n ),\r\n \"submenu_accessories\": (\r\n \r\n \r\n \r\n ),\r\n \"vanity_cabinet\": (\r\n \r\n ),\r\n \"vanity_console\": (\r\n \r\n \r\n \r\n ),\r\n \"vanity_legs\": (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"vanity_middle\": (\r\n \r\n ),\r\n \"vanity_washstand\": (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"vanity_ptrap\": (\r\n \r\n ),\r\n \"soap_dish\": (\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 \"glass_holder\": (\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 \"paper_holder\": (\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 \"robe_hook\": (\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 \"towel_bar\": (\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 \"towel_ring\": (\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 \"corner_shelf\": (\r\n \r\n ),\r\n \"grab_bar\": (\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"shower_seats\": (\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 //*** KITCHEN ICONS ***//\r\n \"faucet\": (\r\n \r\n ),\r\n \"backsplash\": (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"sink\": (\r\n \r\n \r\n \r\n \r\n ),\r\n \"top_cabinet\": (\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"bottom_cabinet\": (\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"hood\": (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"countertop\": (\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"crown_molding\": (\r\n \r\n ),\r\n \"range\": (\r\n \r\n \r\n \r\n ),\r\n \"oven\": (\r\n \r\n \r\n \r\n ),\r\n \"fridge\": (\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"handle\": (\r\n \r\n ),\r\n \"stove\": (\r\n \r\n ),\r\n \"center_island_stovetop\": (\r\n \r\n ),\r\n \"center_island_countertop\": (\r\n \r\n ),\r\n \"center_island_faucet\": (\r\n \r\n ),\r\n \"center_island_sink\": (\r\n \r\n \r\n \r\n \r\n ),\r\n \"floor\": (\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 \"bathroom_floor\": (\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 \"kitchen_floor\": (\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 \"edge_profile\": (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"center_island_edge\": (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"vanity_backsplash\": (\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n \"wall_union\": (\r\n \r\n ),\r\n};\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport {getPriceWithCurrency, toFixedPrice} from \"../../../../../misc/helpers\";\r\nimport {featureInterface} from \"../../../../../interfaces/featureInterface\";\r\nimport LookFeaturePrice from \"./lookFeaturePrice\";\r\n\r\nconst LookFeaturePairPrice = (props) => {\r\n\r\n const {lookFeature, fabricatorSettings} = props;\r\n\r\n if (fabricatorSettings.showSalePrices && (typeof lookFeature.dbFeature.fabricatorCost == \"number\")\r\n && (lookFeature.dbFeature.fabricatorCost !== lookFeature.dbFeature.cost)) {\r\n return (\r\n
    \r\n \r\n {/* old price is cost property, the new one is fabricatorCost*/}\r\n {getPriceWithCurrency(fabricatorSettings, toFixedPrice(lookFeature.dbFeature.cost), lookFeature)}\r\n \r\n \r\n \r\n \r\n
    \r\n )\r\n }\r\n\r\n return \r\n};\r\n\r\nLookFeaturePairPrice.propTypes = {\r\n lookFeature: PropTypes.shape(featureInterface),\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {settings} = store.fabricatorState;\r\n return {\r\n fabricatorSettings: settings,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(LookFeaturePairPrice)\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport Button from \"@mui/material/Button\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\n\r\nimport Analytics, {PRODUCT_JOURNEY_ANALYTIC_EVENTS} from \"../../../../../analytics\";\r\nimport {enableSquareFootage, setSqftFromFeature, setSquareFootageGroup} from \"../../../../../actions/sqftFunctions\";\r\nimport {setCameFromPage} from \"../../../../../actions/actionFunctions\";\r\nimport {GroheSQFTIcon} from \"../../../../common/icons\";\r\nimport {featureInterface} from \"../../../../../interfaces/featureInterface\";\r\nimport {canShowSqftButtonForFeature, canShowSqftCabinetButtonForFeature} from \"../../../../../misc/helpers\";\r\nimport {SQFT_GROUP} from \"../../../../sqft/constants\";\r\n\r\nconst GroheFeatureSQFTButton = (props) => {\r\n\r\n const {featureOpened, shopPageOpened, setCameFromPage, setSqftFromFeature, className, isIcon, intl,\r\n fabricatorSettings, enableSquareFootage, setSquareFootageGroup} = props;\r\n\r\n if (featureOpened) {\r\n if (!canShowSqftButtonForFeature(featureOpened, fabricatorSettings) && !canShowSqftCabinetButtonForFeature(featureOpened, fabricatorSettings)) {\r\n return null\r\n }\r\n }\r\n\r\n const handleSQFTButtonClick = () => {\r\n Analytics.sendClickEvent(shopPageOpened\r\n ? PRODUCT_JOURNEY_ANALYTIC_EVENTS.shopSQFTButton\r\n : PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeatureSQFT);\r\n if (featureOpened) {\r\n setSqftFromFeature({cartFeature: featureOpened});\r\n setCameFromPage(featureOpened);\r\n }\r\n // change url to get cabinets group\r\n // const sqftUrl = (featureOpened && canShowSqftCabinetButtonForFeature(featureOpened, fabricatorSettings))\r\n // ? ROUTES.sqft + \"?cabinets=1\"\r\n // : ROUTES.sqft\r\n // history.push(sqftUrl);\r\n\r\n // use redux to get cabinets group\r\n if (featureOpened && canShowSqftCabinetButtonForFeature(featureOpened, fabricatorSettings)) {\r\n setSquareFootageGroup(SQFT_GROUP.cabinets)\r\n }\r\n enableSquareFootage(true);\r\n };\r\n\r\n if (isIcon) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n )\r\n};\r\n\r\nGroheFeatureSQFTButton.propTypes = {\r\n featureOpened: PropTypes.shape(featureInterface),\r\n className: PropTypes.string,\r\n isIcon: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {shopPageOpened} = store.shopState;\r\n const {settings} = store.fabricatorState;\r\n return {\r\n shopPageOpened,\r\n fabricatorSettings: settings,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setCameFromPage,\r\n setSqftFromFeature,\r\n setSquareFootageGroup,\r\n enableSquareFootage,\r\n};\r\n\r\nexport default withRouter(\r\n injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(GroheFeatureSQFTButton)\r\n )\r\n)\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport ErrorIcon from \"@mui/icons-material/Error\";\r\n\r\n\r\nconst GroheFeatureSoldOut = (props) => {\r\n const {disabled, intl, fabricatorData} = props;\r\n if (!disabled) {\r\n return null\r\n }\r\n\r\n return (\r\n
    \r\n {fabricatorData.isAmericanStandard ? null : (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n
    \r\n )\r\n};\r\n\r\nGroheFeatureSoldOut.propTypes = {\r\n disabled: PropTypes.bool\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const fabricatorData = store.fabricatorState;\r\n return {\r\n fabricatorData\r\n }\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(GroheFeatureSoldOut)\r\n)\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\n// import FeatureDescription from \"../../../../visComponents/featureDescription\";\r\nimport FeatureName from \"../../../../visComponents/featureName\";\r\n\r\nimport SvgIcon from \"@mui/material/SvgIcon\";\r\nimport {GroheLockIcon} from \"../../../../common/icons\";\r\nimport Analytics, {PRODUCT_JOURNEY_ANALYTIC_EVENTS} from \"../../../../../analytics\";\r\nimport {setLookOverlayOpened} from \"../../../../../actions/lookFunctions\";\r\nimport {LOOK_OVERLAYS} from \"../../../core/constants\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\n\r\n\r\nconst GroheFeatureLockedBadge = (props) => {\r\n\r\n const {lookActiveFeature, setLookOverlayOpened} = props;\r\n\r\n if (!lookActiveFeature) {\r\n return null\r\n }\r\n\r\n const lockedButtonClick = () => {\r\n Analytics.sendClickEvent(PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeatureLockedBadge);\r\n setLookOverlayOpened(LOOK_OVERLAYS.leadCapture);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n {/*{lookActiveFeature.dbFeature.sku ? (*/}\r\n {/*

    */}\r\n {/* \r\n {/*

    */}\r\n {/*) : null}*/}\r\n {/*{lookActiveFeature.dbFeature.description ? (*/}\r\n {/*
    */}\r\n {/* */}\r\n {/*
    */}\r\n {/*) : null}*/}\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 = (store) => {\r\n const {lookActiveFeature} = store.lookState;\r\n\r\n return {\r\n lookActiveFeature,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookOverlayOpened,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(GroheFeatureLockedBadge)\r\n","import * as types from \"./actionTypes\";\r\n\r\nexport const setGroheWizardOpened = (wizardOpened = false) => ({\r\n type: types.SET_GROHE_WIZARD_OPENED,\r\n payload: {wizardOpened}\r\n});\r\n\r\nexport const setGroheWizardName = (wizardName = false) => ({\r\n type: types.SET_GROHE_WIZARD_NAME,\r\n payload: {wizardName}\r\n});\r\n\r\nexport const setGroheWizardStep = (wizardStep = false) => ({\r\n type: types.SET_GROHE_WIZARD_STEP,\r\n payload: {wizardStep}\r\n});\r\n","import React, {useEffect, useState, Fragment} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport {getCurrentLayout} from \"../../../../appLayout\";\r\nimport MaterialSpinner from \"../../../../ui/materialSpinner\";\r\nimport LookVirtualizedList from \"./lookVirtualizedList\";\r\nimport {useIsMounted, usePrevious} from \"../../../../../misc/helperHooks\";\r\nimport GroheVirtualizedList from \"../../../grohe/groheNavigation/groheFeatures/groheVirtualizedList\";\r\nimport {getFeatureGroupName, getFeatureIsLocked} from \"../../../../../misc/helpers\";\r\nimport {LOOK_NAVIGATION_LIST_TYPES, LOOK_OVERLAYS} from \"../../../core/constants\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\nimport {getLixilRequiredNotIncludedFeatures} from \"../../../grohe/groheNavigation/groheFunctions\";\r\nimport {setGroheRequiredButNotIncludedFeature} from \"../../../../../actions/groheFunctions\";\r\nimport LookFeatureRemoveButton from \"../lookFeatureRemoveButton\";\r\nimport WithUpdateLookCartItem from \"../../../hocs/withUpdateLookCartItem\";\r\nimport LookListFeature from \"../lookListFeature/lookListFeature\";\r\nimport LookFiltersReset from \"../../lookFilters/lookFiltersReset\";\r\nimport {\r\n getReorderedItems,\r\n getNavigationItemsLists,\r\n getSortedNavItems,\r\n pricingIsLocked, getReplacedNavItemsWithUnlockedFeatures\r\n} from \"../../lookNavigationFunctions\";\r\nimport {setLookLockedTutorial} from \"../../../../../actions/lookFunctions\";\r\nimport {scrolledVerticalToTheEnd} from \"../../../../visComponents/navigation/navUtils\";\r\nimport {checkIfLookFeaturesReceived, getAdditionalFeaturesOnScroll} from \"../../../../../api/look-api\";\r\nimport NavigationLoader from \"../../../ui/navigationLoader\";\r\n// import {COUNTERTOP_GROUP} from \"../../../../kvComponent/core/constants\";\r\nimport {\r\n checkIfNeedToReceiveFeaturesIfFiltersApplied,\r\n getFeaturesFromBackendWithFilters\r\n} from \"../../../../../misc/filtersFunctions\";\r\nimport LookMainCategoryLoading from \"./lookMainCategoryLoading\";\r\nimport Analytics from \"../../../../../analytics\";\r\nimport {getAnalyticsEcommerceItem} from \"../../../../../analyticsEcommerceParams\";\r\nimport {setNavigationLoading} from \"../../../../../actions/navigationFunctions\";\r\n\r\n\r\nconst LookMainCategory = (props) => {\r\n\r\n const {lookActiveFeature, lookViewType, lookActiveCategory, contentHeight, isMobile, filterGroups, intl,\r\n fabricatorData, groheFiltersSearchText, selectedFilters, requiredButNotIncludedFeature, navigationCount,\r\n setGroheRequiredButNotIncludedFeature, lookActiveFeaturePositionInList, lookViewTypeWasChanged, lookLockedTutorial,\r\n setLookLockedTutorial, allFeaturesWereLoaded, contextMenu, wizardActiveItem, navigationLoadingActive,\r\n setNavigationLoading, isPhoneNumberValidated, lookOverlayOpened} = props;\r\n\r\n const [navItemsLists, setNavItemsLists] = useState([]);\r\n const [firstOpenedFeature, setFirstOpenedFeature] = useState(null);\r\n const [firstOpenedConditions, setFirstOpenedConditions] = useState(null);\r\n\r\n const [shouldRunAnalytics, setShouldRunAnalytics] = useState(false);\r\n\r\n const isMounted = useIsMounted();\r\n const prevActiveCategory = usePrevious(lookActiveCategory);\r\n\r\n const layout = getCurrentLayout();\r\n const featureGroup = lookActiveFeature ? lookActiveFeature.getParent() : layout.getFeatureGroupByPartId(lookActiveCategory);\r\n\r\n // const [, forceUpdate] = useReducer(x => x + 1, 0);\r\n\r\n const setReceivedFeatures = async () => {\r\n if (lookActiveCategory && isMounted()) {\r\n let forFeature = lookActiveFeature;\r\n if (featureGroup && !featureGroup.allFeaturesReceived && !featureGroup.requestInProgress) {\r\n setShouldRunAnalytics(true);\r\n checkIfLookFeaturesReceived(featureGroup);\r\n return // we will update this component when navigationCount is changed\r\n }\r\n if (Array.isArray(selectedFilters) && selectedFilters.length && featureGroup && !featureGroup.requestInProgress) {\r\n const checkPassed = checkIfNeedToReceiveFeaturesIfFiltersApplied(selectedFilters, featureGroup);\r\n if (checkPassed) {\r\n setNavigationLoading(true);\r\n await getFeaturesFromBackendWithFilters(featureGroup, checkPassed.arrayOfNeededFiltersToReceive);\r\n if (!isMounted()) {\r\n return\r\n }\r\n setNavigationLoading(false);\r\n }\r\n }\r\n if (!forFeature && featureGroup && isMobile && !IS_PRODUCT_JOURNEY) {\r\n forFeature = featureGroup.activeFeature\r\n }\r\n let navFeatures;\r\n if (requiredButNotIncludedFeature) {\r\n navFeatures = getLixilRequiredNotIncludedFeatures(requiredButNotIncludedFeature).map((feature) => ({part: feature}))\r\n setNavItemsLists([{\r\n type: LOOK_NAVIGATION_LIST_TYPES.regular,\r\n navItems: navFeatures\r\n }]);\r\n } else if (featureGroup) {\r\n const firstFeature = firstOpenedFeature && firstOpenedFeature.partId === lookActiveCategory ? firstOpenedFeature : null;\r\n const firstConditions = firstOpenedFeature && firstOpenedFeature.partId === lookActiveCategory ? firstOpenedConditions : null;\r\n navFeatures = layout.designNavigationItems(\r\n {part: featureGroup},\r\n selectedFilters,\r\n groheFiltersSearchText,\r\n forFeature,\r\n \"all\", // added for non lixil fabricators to display not in visualizer features\r\n filterGroups,\r\n {firstFeature, firstConditions},\r\n );\r\n\r\n if (featureGroup.partId === \"vanity_sink\" && contextMenu.clickedOnItem) {\r\n if (contextMenu.clickedOnItem === \"vanity_pedestal_sink\") {\r\n navFeatures = navFeatures.filter(navItem => {\r\n return navItem.part.metaData[\"MountType\"] && navItem.part.metaData[\"MountType\"].includes(\"ST\")\r\n })\r\n } else if (contextMenu.clickedOnItem === \"vanity_sink\") {\r\n navFeatures = navFeatures.filter(navItem => {\r\n return !navItem.part.metaData[\"MountType\"] || !navItem.part.metaData[\"MountType\"].includes(\"ST\")\r\n })\r\n }\r\n }\r\n\r\n navFeatures = getReplacedNavItemsWithUnlockedFeatures(navFeatures, filterGroups);\r\n\r\n // here we sort features\r\n navFeatures = getReorderedItems(navFeatures, lookActiveFeature, lookActiveCategory, featureGroup);\r\n\r\n if (!wizardActiveItem && lookActiveCategory\r\n && (!prevActiveCategory || (prevActiveCategory !== lookActiveCategory) || shouldRunAnalytics)) {\r\n if (shouldRunAnalytics) {\r\n setShouldRunAnalytics(false);\r\n }\r\n Analytics.sendEcommerceEvent(\"view_item_list\", {\r\n item_list_id: featureGroup.partId,\r\n item_list_name: featureGroup.dbName || featureGroup.partName || \"\",\r\n items: navFeatures.map((navItem, navItemIndex) => getAnalyticsEcommerceItem(navItem.part, 1, navItemIndex))\r\n });\r\n }\r\n\r\n if (typeof lookActiveFeaturePositionInList === \"number\") { // swap places with clicked position (is used only for cases when 1) option click 2) navigation item click)\r\n const currentPositionInList = navFeatures.findIndex(navItem => navItem.part.dbFeature.id === lookActiveFeature.dbFeature.id);\r\n if (currentPositionInList >= 0 && currentPositionInList !== lookActiveFeaturePositionInList) {\r\n [navFeatures[currentPositionInList], navFeatures[lookActiveFeaturePositionInList]] = [navFeatures[lookActiveFeaturePositionInList], navFeatures[currentPositionInList]]\r\n }\r\n }\r\n\r\n const nItemsLists = getNavigationItemsLists(navFeatures, lookActiveFeature);\r\n\r\n if (fabricatorData.settings.leadCapture && !lookLockedTutorial.finished && !isPhoneNumberValidated\r\n && !IS_PRODUCT_JOURNEY && featureGroup.allFeaturesReceived && !(isMobile && lookActiveFeature)\r\n && !wizardActiveItem && !(lookOverlayOpened && (lookOverlayOpened === LOOK_OVERLAYS.intro))) {\r\n let firstLockedIndex, firstUnlockedIndex;\r\n if (nItemsLists.length === 1) {\r\n firstLockedIndex = nItemsLists[0].navItems.findIndex(navItem => getFeatureIsLocked(navItem.part));\r\n firstUnlockedIndex = nItemsLists[0].navItems.findIndex(navItem => !getFeatureIsLocked(navItem.part));\r\n }\r\n setLookLockedTutorial({\r\n visible: true,\r\n withGrid: nItemsLists.length === 1,\r\n firstLockedIndex,\r\n firstUnlockedIndex,\r\n })\r\n }\r\n\r\n setNavItemsLists(nItemsLists);\r\n }\r\n //console.log(\"navItems\", navItems);\r\n // forceUpdate(1);\r\n // setTimeout(() => {\r\n // if (isMounted()) {\r\n // forceUpdate(1);\r\n // }\r\n // }, 500)\r\n // setTimeout(() => {\r\n // if (isMounted()) {\r\n // forceUpdate(1);\r\n // }\r\n // }, 1500)\r\n // setTimeout(() => {\r\n // if (isMounted()) {\r\n // forceUpdate(1);\r\n // }\r\n // }, 3000)\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setReceivedFeatures();\r\n return () => {\r\n if (requiredButNotIncludedFeature && lookActiveFeature) {\r\n let reqFeatures = getLixilRequiredNotIncludedFeatures(requiredButNotIncludedFeature);\r\n reqFeatures.push(requiredButNotIncludedFeature);\r\n if (!reqFeatures.find(navItem => navItem.dbFeature.id === lookActiveFeature.dbFeature.id)) {\r\n setGroheRequiredButNotIncludedFeature(null);\r\n }\r\n } else if(requiredButNotIncludedFeature && !lookActiveFeature) {\r\n setGroheRequiredButNotIncludedFeature(null);\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [lookActiveCategory, groheFiltersSearchText, selectedFilters, requiredButNotIncludedFeature,\r\n setGroheRequiredButNotIncludedFeature, navigationCount, lookOverlayOpened]);\r\n\r\n useEffect(() => {\r\n if (lookActiveCategory) {\r\n setFirstOpenedFeature(lookActiveFeature);\r\n if (lookActiveFeature && lookActiveFeature.getParent) {\r\n setFirstOpenedConditions(lookActiveFeature.getParent().getArrayOfConditions(true))\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [lookActiveCategory]);\r\n\r\n // if (!visualizersLoadedLength) {\r\n // return \r\n // }\r\n\r\n if (wizardActiveItem) { // why we need this render? not sure. probably because of the useEffect, didn't removed for now\r\n return null\r\n }\r\n\r\n if (IS_PRODUCT_JOURNEY && !lookActiveFeature) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n if (featureGroup && !featureGroup.allFeaturesReceived) {\r\n return \r\n }\r\n\r\n let featureGroupName = \"\";\r\n if (IS_PRODUCT_JOURNEY) {\r\n featureGroupName = getFeatureGroupName(featureGroup, intl, fabricatorData);\r\n }\r\n\r\n const showFeaturesOnly = lookActiveCategory && !layout.partIdExistInQtCategory(lookActiveCategory, true); // to prevent calculating features on each render\r\n // const showAllWallsCheckbox = lookActiveFeature && showFeaturesOnly && LOOK_WALLS_ONLY.includes(lookActiveFeature.partId);\r\n\r\n const desRecNavItemList = navItemsLists.find(navItemList => navItemList.type === LOOK_NAVIGATION_LIST_TYPES.designRec);\r\n const regularNavItemList = navItemsLists.find(navItemList => navItemList.type === LOOK_NAVIGATION_LIST_TYPES.regular);\r\n const notMatchingNavItemList = navItemsLists.filter(navItemList => navItemList.type === LOOK_NAVIGATION_LIST_TYPES.notMatchingMeta);\r\n\r\n if (!regularNavItemList) {\r\n return null\r\n }\r\n\r\n const onScrollHandler = async (scrollObject) => {\r\n if (!featureGroup || allFeaturesWereLoaded.includes(document.kvConfig.visualizerType)) {\r\n return;\r\n }\r\n if (featureGroup.getRealFeaturesReceivedProperty() || !scrolledVerticalToTheEnd(scrollObject)) {\r\n return\r\n }\r\n setNavigationLoading(true);\r\n await getAdditionalFeaturesOnScroll(featureGroup);\r\n await setReceivedFeatures();\r\n await new Promise(resolve => setTimeout(resolve, 300));\r\n setNavigationLoading(false);\r\n }\r\n\r\n const onEventScrollHandler = (event) => {\r\n onScrollHandler(event.target)\r\n }\r\n\r\n if (IS_PRODUCT_JOURNEY) {\r\n let allProducts = regularNavItemList.navItems;\r\n if (desRecNavItemList && desRecNavItemList.navItems) {\r\n allProducts = [...desRecNavItemList.navItems, ...regularNavItemList.navItems];\r\n }\r\n if (notMatchingNavItemList && notMatchingNavItemList.length) {\r\n notMatchingNavItemList.forEach(navItemList => {\r\n allProducts = [...allProducts, ...navItemList.navItems];\r\n })\r\n }\r\n const {isLixil, pricingLocked} = pricingIsLocked();\r\n if (!isLixil && pricingLocked) {\r\n allProducts = getSortedNavItems(allProducts);\r\n }\r\n return (\r\n \r\n {isMobile ? null : (\r\n \r\n
    \r\n {featureGroupName} ({regularNavItemList.navItems.length})\r\n {/*{showAllWallsCheckbox ? (*/}\r\n {/*
    */}\r\n {/* */}\r\n {/*
    */}\r\n {/*) : null}*/}\r\n {/*{!showAllWallsCheckbox && lookActiveFeature && lookActiveFeature.getParent().canBeDisabled && showFeaturesOnly ? (*/}\r\n {lookActiveFeature && lookActiveFeature.getParent().canBeDisabled && showFeaturesOnly ? (\r\n
    \r\n \r\n
    \r\n ) : null}\r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {navigationLoadingActive ? : null}\r\n
    \r\n )\r\n }\r\n\r\n return (\r\n \r\n {(updateLookCartItem) => {\r\n\r\n if (!selectedFilters.length && !desRecNavItemList && !notMatchingNavItemList.length && regularNavItemList) {\r\n // simple list, react virtualized, all as usual\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n {navigationLoadingActive ? : null}\r\n
    \r\n )\r\n }\r\n\r\n return (\r\n \r\n
    \r\n {desRecNavItemList || selectedFilters.length ? (\r\n \r\n

    \r\n \r\n

    \r\n {selectedFilters.length && (!desRecNavItemList || !desRecNavItemList.navItems.length) ? (\r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n ) : null}\r\n {desRecNavItemList ? (\r\n
    \r\n {desRecNavItemList.navItems.map(navItem => {\r\n return \r\n })}\r\n
    \r\n ) : null}\r\n
    \r\n ) : null}\r\n {regularNavItemList.navItems.length ? (\r\n \r\n

    \r\n {regularNavItemList.navTranslate && notMatchingNavItemList.length ? : null}\r\n {regularNavItemList.navTranslate && notMatchingNavItemList.length ? \" \" : null}\r\n \r\n

    \r\n
    \r\n {regularNavItemList.navItems.map(navItem => {\r\n return \r\n })}\r\n
    \r\n
    \r\n ) : null}\r\n {notMatchingNavItemList.length ? notMatchingNavItemList.map((navItemList) => {\r\n return (\r\n \r\n

    \r\n \r\n

    \r\n
    \r\n {navItemList.navItems.map(navItem => {\r\n return \r\n })}\r\n
    \r\n
    \r\n )\r\n }) : null}\r\n
    \r\n {navigationLoadingActive ? : null}\r\n
    \r\n )\r\n }}\r\n
    \r\n )\r\n};\r\n\r\nLookMainCategory.propTypes = {\r\n contentHeight: PropTypes.number\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookActiveFeature, lookViewType, lookActiveCategory, lookActiveFeaturePositionInList, lookViewTypeWasChanged,\r\n navigationCount, lookLockedTutorial, contextMenu, lookOverlayOpened} = store.lookState;\r\n const {visualizersLoaded, isMobile, allFeaturesWereLoaded} = store.serverState;\r\n const partId = lookActiveFeature ? lookActiveFeature.getParent().partId : \"\";\r\n const {selectedFilters, filterGroups} = store.filterState;\r\n const {groheFiltersSearchText, requiredButNotIncludedFeature} = store.groheState;\r\n const {wizardActiveItem} = store.wizardState;\r\n const {navigationLoadingActive} = store.navigationState;\r\n const {isPhoneNumberValidated} = store.userState;\r\n // const {activePreset} = store.bathroomVisualizerState;\r\n\r\n return {\r\n isMobile,\r\n lookActiveFeature,\r\n lookViewType,\r\n lookActiveCategory,\r\n lookViewTypeWasChanged,\r\n visualizersLoadedLength: visualizersLoaded.length,\r\n partId,\r\n fabricatorData: store.fabricatorState,\r\n filterGroups,\r\n groheFiltersSearchText,\r\n selectedFilters,\r\n requiredButNotIncludedFeature,\r\n lookActiveFeaturePositionInList,\r\n navigationCount,\r\n lookLockedTutorial,\r\n allFeaturesWereLoaded,\r\n contextMenu,\r\n wizardActiveItem,\r\n navigationLoadingActive,\r\n isPhoneNumberValidated,\r\n lookOverlayOpened,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setGroheRequiredButNotIncludedFeature,\r\n setLookLockedTutorial,\r\n setNavigationLoading,\r\n};\r\n\r\nexport default injectIntl (\r\n connect(mapStateToProps, mapDispatchToProps)(LookMainCategory)\r\n);\r\n","import React, {Fragment, useEffect, useRef} from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport {injectIntl} from \"react-intl\";\r\n\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport ReplayIcon from '@mui/icons-material/Replay';\r\nimport {setLookRestoreState, updateNavigationCount} from \"../../../../../actions/lookFunctions\";\r\nimport WithZoomToFeature from \"../../../hocs/withZoomToFeature\";\r\nimport LookCanvasContext from \"../../../lookCanvasContext\";\r\n// import LookFeatureRevertButtonModal from \"./lookFeatureRevertButtonModal\";\r\nimport {getCurrentLayout} from \"../../../../appLayout\";\r\nimport WithUpdateLookCartItem from \"../../../hocs/withUpdateLookCartItem\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\n\r\n\r\nconst LookFeatureRevertButton = (props) => {\r\n\r\n const {lookActiveFeature, intl, updateNavigationCount, lookRestoreState, setLookRestoreState, isMobile,\r\n lookActiveCategory, currentActiveFeature} = props;\r\n const anchorRef = useRef(null);\r\n // const [showRevertModal, setShowRevertModal] = useState(false);\r\n\r\n useEffect(() => {\r\n if (((!isMobile && lookActiveFeature) || (isMobile && lookActiveCategory)) && !lookRestoreState) {\r\n const layout = getCurrentLayout();\r\n setLookRestoreState(layout.getActiveFeaturesAsObject(false, false, true));\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [lookActiveFeature, lookActiveCategory])\r\n\r\n if (!isMobile && !lookActiveFeature) {\r\n return null\r\n }\r\n\r\n if (isMobile && !lookActiveCategory) {\r\n return null\r\n }\r\n\r\n const layout = getCurrentLayout();\r\n const featureGroup = lookActiveFeature ? lookActiveFeature.getParent() : layout.getFeatureGroupByPartId(lookActiveCategory);\r\n\r\n if (!featureGroup) {\r\n return null\r\n }\r\n\r\n const revertButtonClick = (zoomToFeatureGroup, updateLookCartItem) => {\r\n if (!lookRestoreState) {\r\n return false\r\n }\r\n const layout = getCurrentLayout();\r\n layout.setActiveFeaturesFromObject(lookRestoreState);\r\n if (!isMobile) {\r\n zoomToFeatureGroup(featureGroup.partId);\r\n setLookRestoreState(null);\r\n }\r\n updateNavigationCount();\r\n updateLookCartItem(featureGroup.lookActiveFeature, true);\r\n };\r\n\r\n const disabled = !lookRestoreState\r\n || !lookRestoreState[featureGroup.partId]\r\n || (currentActiveFeature && (lookRestoreState[featureGroup.partId] === currentActiveFeature.dbFeature.id))\r\n\r\n return (\r\n \r\n {(imageCanvas) => (\r\n \r\n {(zoomToFeatureGroup) => (\r\n \r\n {(updateLookCartItem) => {\r\n\r\n if (IS_PRODUCT_JOURNEY) {\r\n return isMobile ? (\r\n revertButtonClick(zoomToFeatureGroup, updateLookCartItem)}>\r\n \r\n \r\n ) : (\r\n
    \r\n setShowRevertModal(true)}\r\n // onMouseLeave={() => setShowRevertModal(false)}\r\n onClick={() => revertButtonClick(zoomToFeatureGroup, updateLookCartItem)}>\r\n \r\n \r\n \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n \r\n setShowRevertModal(true)}\r\n // onMouseLeave={() => setShowRevertModal(false)}\r\n onClick={() => revertButtonClick(zoomToFeatureGroup, updateLookCartItem)}>\r\n \r\n \r\n {/*{isMobile ? null : (*/}\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\nLookFeatureRevertButton.propTypes = {\r\n // lookFeature: PropTypes.shape(featureInterface),\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookActiveFeature, lookRestoreState, lookActiveCategory} = store.lookState;\r\n const {isMobile} = store.serverState;\r\n\r\n let currentActiveFeature = lookActiveFeature;\r\n if (isMobile && lookActiveCategory) {\r\n const layout = getCurrentLayout();\r\n const featureGroup = layout.getFeatureGroupByPartId(lookActiveCategory);\r\n currentActiveFeature = featureGroup ? featureGroup.activeFeature : null;\r\n }\r\n\r\n return {\r\n lookActiveCategory,\r\n lookActiveFeature,\r\n lookRestoreState,\r\n isMobile,\r\n currentActiveFeature,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n updateNavigationCount,\r\n setLookRestoreState,\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookFeatureRevertButton)\r\n)\r\n","import React, {Fragment} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport Button from \"@mui/material/Button\";\r\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\r\n\r\nimport {\r\n setWizardActiveStep,\r\n setWizardSelectedValues,\r\n setWizardShowFeatureSection\r\n} from \"../../../../../actions/wizardFunctions\";\r\nimport {getCurrentGroups, getCurrentWizardNavItems} from \"./lookWizardFunctions\";\r\nimport LookWizardContentFinalPrice from \"./lookWizardContentFinalPrice\";\r\nimport GroheWizardCompletedButtons from \"../../../grohe/groheNavigation/groheWizard/groheWizardCompletedButtons\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\nimport GroheMobileFooterFiltersButton from \"../../../grohe/groheMobile/groheMobileFooterFiltersButton\";\r\nimport GroheMobileFooterViewButton from \"../../../grohe/groheMobile/groheMobileFooterViewButton\";\r\nimport WithUpdateLookCartItem from \"../../../hocs/withUpdateLookCartItem\";\r\n\r\nconst LookWizardContentButtons = (props) => {\r\n\r\n const {wizardActiveItem, wizardActiveStep, setWizardActiveStep, wizardSelectedValues, setWizardSelectedValues,\r\n isMobile, intl, filterGroups, wizardShowFeatureSection, setWizardShowFeatureSection,\r\n groheActiveFeatureQuantity} = props;\r\n\r\n if (!wizardActiveItem) {\r\n return null\r\n }\r\n\r\n const currentGroups = getCurrentGroups(wizardActiveItem, wizardActiveStep, wizardSelectedValues);\r\n const wizardGroup = currentGroups[0];\r\n\r\n const onSkipClick = () => {\r\n // const featureGroup = getFeatureGroupFromWizardGroup(wizardGroup);\r\n // if (featureGroup && featureGroup.activeFeature) {\r\n // disableFeature(featureGroup.activeFeature, updateLookCartItem);\r\n // updateCanvasCount();\r\n // }\r\n setWizardSelectedValues({\r\n [wizardActiveStep]: {\r\n wizardGroup,\r\n }\r\n });\r\n setWizardActiveStep(wizardActiveStep + 1);\r\n }\r\n\r\n const startAgain = () => {\r\n setWizardSelectedValues({}, true);\r\n setWizardActiveStep(0);\r\n }\r\n\r\n const previousClick = () => {\r\n // const newValues = Object.assign({}, wizardSelectedValues);\r\n // delete newValues[wizardActiveStep];\r\n // delete newValues[wizardActiveStep - 1];\r\n // setWizardSelectedValues(newValues, true);\r\n setWizardActiveStep(wizardActiveStep - 1)\r\n }\r\n\r\n const nextClick = () => {\r\n if (!wizardSelectedValues[wizardActiveStep]) {\r\n onSkipClick();\r\n } else {\r\n if (IS_PRODUCT_JOURNEY) {\r\n setWizardSelectedValues({\r\n [wizardActiveStep]: {\r\n ...(wizardSelectedValues[wizardActiveStep] || {}),\r\n quantity: groheActiveFeatureQuantity,\r\n }\r\n });\r\n }\r\n setWizardActiveStep(wizardActiveStep + 1);\r\n }\r\n }\r\n\r\n const returnClick = () => {\r\n setWizardShowFeatureSection(false);\r\n }\r\n\r\n // const closeWizardClick = () => {\r\n // Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookWizardCompletedClose);\r\n // history.push(getLookIdUrl());\r\n // };\r\n\r\n const skipEnabled = wizardActiveStep > -1 && currentGroups.length === 1 && wizardGroup.notRequired;\r\n const isCompletedStep = wizardActiveStep > -1 && !currentGroups.length;\r\n\r\n let nextDisabled = !wizardSelectedValues[wizardActiveStep];\r\n if (nextDisabled && currentGroups.length === 1 && wizardGroup.nodeType === \"group\") {\r\n const navItems = getCurrentWizardNavItems(wizardSelectedValues, wizardActiveStep, wizardActiveItem, wizardGroup, null, filterGroups);\r\n nextDisabled = !!navItems.length;\r\n }\r\n\r\n if (isMobile) {\r\n\r\n if (IS_PRODUCT_JOURNEY) {\r\n\r\n if (wizardActiveStep === -1) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n if (isCompletedStep) {\r\n return \r\n }\r\n\r\n return (\r\n \r\n {isCompletedStep || currentGroups.length > 1 ? null : (\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n {wizardShowFeatureSection ? null : (\r\n \r\n {skipEnabled ? (\r\n \r\n ) : null}\r\n \r\n \r\n )}\r\n \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n {(wizardActiveStep > -1 && currentGroups.length) ? (\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {skipEnabled ? (\r\n
    \r\n \r\n \r\n \r\n
    \r\n ) : null}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n ) : null}\r\n
    \r\n )\r\n }\r\n\r\n return (\r\n \r\n
    \r\n {(wizardActiveStep === -1) ? (\r\n \r\n ) : null}\r\n {(wizardActiveStep > -1 && currentGroups.length) ? (\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {isCompletedStep && IS_PRODUCT_JOURNEY ? (\r\n \r\n ) : null}\r\n {isCompletedStep && !IS_PRODUCT_JOURNEY ? (\r\n \r\n ) : null}\r\n
    \r\n
    \r\n {skipEnabled ? (\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {isCompletedStep && IS_PRODUCT_JOURNEY ? : null}\r\n {/*{isCompletedStep ? (*/}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/*) : null}*/}\r\n
    \r\n
    \r\n )\r\n\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n // const {activePreset, bvPresets} = store.bathroomVisualizerState;\r\n const {wizardActiveItem, wizardActiveStep, wizardSelectedValues, wizardShowFeatureSection} = store.wizardState;\r\n const {isMobile} = store.serverState;\r\n const {filterGroups} = store.filterState;\r\n // const fabricatorData = store.fabricatorState;\r\n const {groheActiveFeatureQuantity} = store.groheState;\r\n\r\n return {\r\n // activePreset,\r\n // bvPresets,\r\n wizardActiveItem,\r\n wizardActiveStep,\r\n wizardSelectedValues,\r\n isMobile,\r\n filterGroups,\r\n wizardShowFeatureSection,\r\n // fabricatorData,\r\n groheActiveFeatureQuantity,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setWizardActiveStep,\r\n setWizardSelectedValues,\r\n setWizardShowFeatureSection\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)((props) => {\r\n return (\r\n \r\n {(updateLookCartItem) => }\r\n \r\n )\r\n })\r\n)\r\n","import flatMap from 'lodash/flatMap';\r\nimport find from 'lodash/find';\r\nimport some from 'lodash/some';\r\nimport findIndex from 'lodash/findIndex';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\n\r\nimport * as types from '../actions/actionTypes';\r\n//import instList from '../bvcomponents/installation/instHardCode';\r\n\r\nconst initialState = {\r\n instOpened: false,\r\n instList: [],\r\n defaultInstallations: [],\r\n};\r\n\r\nlet __installations = [];\r\n\r\nexport default function (state = initialState, action) {\r\n\r\n switch (action.type) {\r\n case types.ADD_TO_CART:\r\n return __tryAddToInstallation(state, action.payload.cartItems);\r\n case types.REMOVE_FROM_CART:\r\n return __tryRemoveFromInstallations(state, action.payload.cartItem);\r\n case types.TOGGLE_INST_OPENED:\r\n case types.SET_INST_LIST:\r\n case types.SET_DEFAULT_INST_LIST:\r\n return Object.assign({}, state, {\r\n ...action.payload\r\n });\r\n case types.REMOVE_INSTALLATION_SERVICE_FROM_CART:\r\n return __toggleInstallationServiceUsage(state, action.payload);\r\n }\r\n\r\n return state;\r\n\r\n}\r\n\r\nexport function getInstallationsTotalCost(instList) {\r\n let cost = 0;\r\n flatMap(instList, group => group.services)\r\n .forEach(s => {\r\n if (s.selected) {\r\n cost += getInstallationCost(s);\r\n }\r\n });\r\n\r\n return cost;\r\n}\r\n\r\nexport function getInstallationCost(installationService) {\r\n return installationService.hourly * installationService.price;\r\n}\r\n\r\nfunction __toggleInstallationServiceUsage(state, {installationService}) {\r\n const {instList} = state;\r\n for (let i = 0; i < instList.length; i++){\r\n for (let j = 0; j < instList[i].services.length; j++) {\r\n const service = instList[i].services[j];\r\n if ((service.fabricatorFeature_id === installationService.fabricatorFeature_id)\r\n && (service.fabricatorInstallation_id === installationService.fabricatorInstallation_id)){\r\n service.selected = !service.selected;\r\n return {...state, instList: cloneDeep(instList)};\r\n }\r\n }\r\n }\r\n\r\n return state;\r\n}\r\n\r\nfunction __tryAddToInstallation(state, cartItems) {\r\n let hasChanges = false;\r\n const {instList} = state;\r\n\r\n cartItems.filter(cartItem => cartItem.quantity).forEach(cartItem => {\r\n const ID = cartItem.cartFeature.dbFeature.id;\r\n const allInstallations = __getInstallations(state.defaultInstallations);\r\n const installations = allInstallations.filter(inst => {\r\n return inst && (inst.fabricatorFeature_id === ID)\r\n });\r\n\r\n if (installations.length) {\r\n let instGroup = find(instList, {title: cartItem.selectionGroup});\r\n if (!instGroup) {\r\n instGroup = {\r\n title: cartItem.selectionGroup,\r\n services: [],\r\n description: 'Do you wand to add installation for ' + cartItem.selectionGroup,\r\n enabled: false\r\n };\r\n instList.push(instGroup);\r\n }\r\n\r\n installations.forEach(installation => {\r\n const service = some(instGroup.services, {\r\n // fabricatorFeature_id: id, // removed this check cause they are different, but we need to remove duplicates\r\n fabricatorInstallation_id: installation.fabricatorInstallation_id\r\n });\r\n if (!service) {\r\n const selected = installation.autoAddWithProduct;\r\n instGroup.services.push({\r\n fabricatorFeature_id: cartItem.cartFeature.dbFeature.id,\r\n title: installation.installationName,\r\n hourly: installation.defaultQuantity || 1,\r\n price: installation.price,\r\n description: installation.description,\r\n fabricatorInstallation_id: installation.fabricatorInstallation_id,\r\n selected,\r\n autoAddWithProduct: installation.autoAddWithProduct,\r\n defaultQuantity: installation.defaultQuantity,\r\n hideQuantity: installation.hideQuantity,\r\n unit: installation.unit\r\n });\r\n if (selected) {\r\n instGroup.enabled = true;\r\n }\r\n hasChanges = true;\r\n }\r\n });\r\n }\r\n });\r\n\r\n return hasChanges ? {...state, instList: cloneDeep(instList)} : state;\r\n}\r\n\r\nfunction __tryRemoveFromInstallations(state, cartItem) {\r\n const {instList} = state;\r\n const ID = cartItem.cartFeature.dbFeature.id;\r\n const allInstallations = __getInstallations(state.defaultInstallations);\r\n const installations = allInstallations.filter(inst => {\r\n return inst.fabricatorFeature_id === ID\r\n });\r\n if (installations.length) {\r\n installations.forEach(installation => {\r\n let instGroupIdx = findIndex(instList, {title: cartItem.selectionGroup});\r\n if (instGroupIdx !== -1) {\r\n const serviceIdx = findIndex(instList[instGroupIdx].services, {\r\n fabricatorFeature_id: cartItem.cartFeature.dbFeature.id,\r\n fabricatorInstallation_id: installation.fabricatorInstallation_id\r\n });\r\n if (serviceIdx !== -1) {\r\n instList[instGroupIdx].services.splice(serviceIdx, 1);\r\n if (!instList[instGroupIdx].services.length) {\r\n // remove group as well\r\n instList.splice(instGroupIdx, 1);\r\n return {...state, instList: cloneDeep(instList)};\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n return {...state, instList: cloneDeep(instList)};\r\n}\r\n\r\nfunction __getInstallations(defaultInstallations) {\r\n if (defaultInstallations && defaultInstallations.length && __installations && !__installations.length) {\r\n __installations = flatMap(defaultInstallations, i => i.installations);\r\n __installations = __installations.filter(i => {\r\n return i && (i.autoAddWithProduct || i.customerAdd || (i.employeesOnly && document.kvConfig.isBackend));\r\n })\r\n }\r\n\r\n return __installations;\r\n}\r\n\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport PrintDocumentInfoFabricator from \"./printDocumentInfoFabricator\";\r\n\r\nexport const getAddressFromObject = (userInfo) => {\r\n let displayAddress = \"\";\r\n [userInfo.city, userInfo.state, userInfo.postal].forEach(addressPart => { // 1) city 2) provence 3) postal\r\n if (addressPart) {\r\n if (displayAddress) {\r\n displayAddress += \", \"\r\n }\r\n displayAddress += addressPart\r\n }\r\n });\r\n return displayAddress\r\n}\r\n\r\nconst PrintDocumentInfo = (props) => {\r\n const {styles, userInfo, fabricatorData, assignQuotePopupCustomer, employeeSelected, messages} = props;\r\n\r\n const {View, Text} = window.ReactPdfRenderer;\r\n\r\n const customerName = assignQuotePopupCustomer\r\n ? assignQuotePopupCustomer.fullName\r\n : userInfo.firstName + (userInfo.lastName ? (\" \" + userInfo.lastName) : \"\")\r\n const customerEmail = assignQuotePopupCustomer ? assignQuotePopupCustomer.email : userInfo.email || \"\"\r\n const customerPhone = userInfo.phoneNumber\r\n ? userInfo.country && !userInfo.phoneNumber.includes(`+${userInfo.country.dialCode} `)\r\n ? `+${userInfo.country.dialCode} ${userInfo.phoneNumber}`\r\n : userInfo.phoneNumber\r\n : \"\";\r\n const customerAddress = getAddressFromObject(userInfo);\r\n const customerHasShippingAddress = userInfo.shipping && ([\"address1\", \"city\", \"postal\"].some(key => {\r\n return userInfo.shipping[key] && (userInfo[key] !== userInfo.shipping[key])\r\n }));\r\n let shippingAddress = \"\";\r\n if (customerHasShippingAddress) {\r\n shippingAddress = getAddressFromObject(userInfo.shipping);\r\n }\r\n const threeColumns = (employeeSelected || (customerHasShippingAddress && !fabricatorData.isCaesarStone))\r\n && !fabricatorData.isAmericanStandard;\r\n\r\n return (\r\n \r\n \r\n {messages[\"receipt.mainInfo.customerInformation\"]}\r\n {customerName}\r\n {userInfo.address1 ? {userInfo.address1} : null}\r\n {customerAddress ? {customerAddress} : null}\r\n {customerEmail}\r\n {customerPhone}\r\n \r\n {threeColumns ? (\r\n \r\n {!fabricatorData.isCaesarStone && (shippingAddress || userInfo.shipping.address1)\r\n ? {messages[\"receipt.mainInfo.billingAddress\"]}\r\n : null}\r\n {!fabricatorData.isCaesarStone && userInfo.shipping.address1\r\n ? {userInfo.shipping.address1}\r\n : null}\r\n {!fabricatorData.isCaesarStone && shippingAddress\r\n ? {shippingAddress}\r\n : null}\r\n {employeeSelected ? (\r\n \r\n {messages[\"receipt.mainInfo.salesPerson\"]}\r\n \r\n ) : null}\r\n {employeeSelected ? {employeeSelected.fullName} : null}\r\n \r\n ) : null}\r\n \r\n \r\n )\r\n};\r\n\r\nPrintDocumentInfo.propTypes = {\r\n userInfo: PropTypes.object.isRequired,\r\n fabricatorData: PropTypes.object.isRequired,\r\n assignQuotePopupCustomer: PropTypes.object,\r\n styles: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default PrintDocumentInfo\r\n","export const getFeatureUnit = (cartFeature, fabricatorData, messages, locale, quantity) => {\r\n const dbFeature = cartFeature.dbFeature;\r\n if ((fabricatorData.isLowes || fabricatorData.isCaesarStone) && locale === \"fr-FR\" && messages[\"transDoc.units_FR.\" + dbFeature.sharedFeatureName]) {\r\n if ((messages[\"transDoc.units_FR.\" + dbFeature.sharedFeatureName] === \"pieds carrés\") && dbFeature.unit === \"Each\") {\r\n return \"unité\"\r\n }\r\n return messages[\"transDoc.units_FR.\" + dbFeature.sharedFeatureName]\r\n }\r\n if (dbFeature.unit) {\r\n let lowercasedUnit = dbFeature.unit.toLowerCase();\r\n return lowercasedUnit === \"each\" || lowercasedUnit === \"unit\"\r\n ? quantity === 1\r\n ? messages[\"quotingTool.featureInfo.defaultQuantity\"]\r\n : messages[\"quotingTool.featureInfo.defaultQuantityMultiple\"]\r\n : dbFeature.unit\r\n }\r\n if (cartFeature.isStoneFeature) {\r\n return messages[\"shoppingCart.fetureInCartDefaultQuantitySQFT\"]\r\n }\r\n return messages[\"shoppingCart.fetureInCartDefaultQuantity\"]\r\n};\r\n\r\nexport const getCartItemName = (cartFeature, fabricatorData, messages, locale) => {\r\n const dbFeature = cartFeature.dbFeature;\r\n if (fabricatorData.isLowes || fabricatorData.isCaesarStone) {\r\n if (locale === \"fr-FR\" && messages[\"transDoc.customDisplayName_FR.\"+ dbFeature.sharedFeatureName]) {\r\n return messages[\"transDoc.customDisplayName_FR.\"+ dbFeature.sharedFeatureName]\r\n } else if (locale === \"pl-PL\" && messages[\"transDoc.customTranslateName_PL.\"+ dbFeature.sharedFeatureName]) {\r\n return messages[\"transDoc.customTranslateName_PL.\"+ dbFeature.sharedFeatureName]\r\n }\r\n }\r\n\r\n if ((dbFeature.sharedFeatureName === \"additionalCartItem.minimumCharge\")) {\r\n if (fabricatorData.isCaesarStone) {\r\n return `${messages[dbFeature.sharedFeatureName]} (${cartFeature.fromFeatureName})`\r\n }\r\n return messages[dbFeature.sharedFeatureName]\r\n }\r\n\r\n if (!cartFeature.getFeatureName) {\r\n return cartFeature._customDisplayName || cartFeature.customDisplayName || \"\"\r\n }\r\n\r\n return cartFeature.getFeatureName()\r\n};\r\n","export const GROHE_CONFIG = {\r\n sidebarWidth: {\r\n desktop: 306.5,\r\n mobile: 360,\r\n },\r\n similarProductsWidth: {\r\n desktop: 307.5,\r\n // mobile: 360,\r\n },\r\n mainBarWidth: {\r\n desktop: 412,\r\n }\r\n};\r\n","import PropTypes from \"prop-types\";\r\n\r\nexport const filterGroupInterface = {\r\n id: PropTypes.number.isRequired,\r\n name: PropTypes.string,\r\n type: PropTypes.string,\r\n values: PropTypes.array,\r\n visualType: PropTypes.string,\r\n}\r\n\r\nexport const filterValueInterface = {\r\n id: PropTypes.number.isRequired,\r\n additionalImages: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\r\n displayText: PropTypes.string,\r\n filterGroup_id: PropTypes.number,\r\n icon: PropTypes.string,\r\n lockedInWizard: PropTypes.bool,\r\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\r\n}\r\n\r\nexport const navigationFilterValueInterface = {\r\n filterId: PropTypes.number.isRequired,\r\n filterGroupId: PropTypes.number.isRequired,\r\n}\r\n","import 'whatwg-fetch';\r\n\r\nconst shouldUseKvConfigDomain = document.location.hostname === 'localhost'\r\n || document.location.hostname.includes(\"192.168\")\r\n || document.location.hostname.includes(\"bs-local.com\") //browserstack\r\n || window.location.href.includes(\"testprod\")\r\n || document.kvConfig.isWordpressPlugin;\r\n\r\nexport const HOST_NAME = document.kvConfig.domain && shouldUseKvConfigDomain\r\n ? document.kvConfig.domain : \"\";\r\n\r\nexport function handleHttpError(response) {\r\n if (response.status === 400) { // bad request\r\n return response.json()\r\n .then(json => {\r\n checkApiError(json);\r\n //console.log(400, json);\r\n return Promise.resolve({__error__: true});\r\n });\r\n }\r\n\r\n if (!response.ok) {\r\n return response.json()\r\n .then(json => Promise.reject(json ? json.message : response.statusMessage));\r\n }\r\n\r\n return response;\r\n}\r\n\r\nfunction checkApiError(response) {\r\n let errorMessage = response.error || response.errorMessage\r\n || (response.errors && Array.isArray(response.errors) ? response.errors.join(',') : null);\r\n if (!errorMessage) {\r\n return;\r\n }\r\n\r\n //dispatch({type: ActionTypes.HTTP_ERROR, payload: errorMessage});\r\n}\r\n\r\nexport function getResponse(response) {\r\n if (!response)\r\n return null;\r\n if (response.json)\r\n return response.json();\r\n return response;\r\n}\r\n\r\n\r\nexport const get = (url) => {\r\n return fetch(HOST_NAME + url, {\r\n // return fetch('http://localhost:3000/localdata', {\r\n headers: {\r\n 'Accept': 'application/json'\r\n }\r\n })\r\n .then(handleHttpError)\r\n .then(response => getResponse(response))\r\n .catch(reason => Promise.reject(reason));\r\n};\r\n\r\nexport const post = (url, data, { signal, domain } = {}) => {\r\n const isFormData = Object.prototype.toString.call(data) === '[object FormData]';\r\n const headers = {\r\n 'Accept': 'application/json'\r\n };\r\n if (!isFormData) {\r\n headers['Content-Type'] = 'application/json';\r\n }\r\n\r\n return fetch(domain ? domain + url : HOST_NAME + url, {\r\n method: 'post',\r\n body: isFormData ? data : JSON.stringify(data),\r\n headers: new Headers(headers),\r\n signal: signal,\r\n })\r\n .then(handleHttpError)\r\n .then(response => getResponse(response))\r\n .catch(reason => {\r\n if (reason.name === 'AbortError') {\r\n console.log('Fetch aborted');\r\n } else {\r\n return Promise.reject(reason);\r\n }\r\n });\r\n};\r\n","import vert from '!raw-loader!./vertex.glsl';\r\nimport frag from '!raw-loader!./fragment.glsl';\r\n\r\nfunction loadTexture(gl, oc) {\r\n const texture = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D, texture);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, oc); // This is the important line!\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\r\n gl.bindTexture(gl.TEXTURE_2D, null);\r\n return texture;\r\n}\r\n\r\nfunction setArrays(gl, prog) {\r\n let vertex_buffer = gl.createBuffer();\r\n const vertices = [-1.0, -1.0, 1.0, -1.0, -1.0, 1.0,\r\n 1.0, 1.0, 1.0, -1.0, -1.0, 1.0,\r\n ];\r\n gl.bindBuffer(gl.ARRAY_BUFFER, vertex_buffer);\r\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);\r\n let coord = gl.getAttribLocation(prog, \"coords\");\r\n gl.vertexAttribPointer(coord, 2, gl.FLOAT, false, 0, 0);\r\n gl.enableVertexAttribArray(coord);\r\n return [coord, vertex_buffer];\r\n}\r\n\r\nfunction prepareWebGL(gl, width, height) {\r\n let vertSh = gl.createShader(gl.VERTEX_SHADER);\r\n gl.shaderSource(vertSh, vert);\r\n gl.compileShader(vertSh);\r\n let fragSh = gl.createShader(gl.FRAGMENT_SHADER);\r\n gl.shaderSource(fragSh, frag);\r\n gl.compileShader(fragSh);\r\n let prog = gl.createProgram();\r\n gl.attachShader(prog, vertSh);\r\n gl.attachShader(prog, fragSh);\r\n gl.linkProgram(prog);\r\n gl.useProgram(prog);\r\n gl.viewport(0,0, width, height);\r\n return prog;\r\n}\r\n\r\nlet webglCanvas = document.createElement(\"canvas\");\r\n\r\nconst enhanceCanvas = (canvasElement, useNewCanvas = false) => {\r\n\r\n let wgl = useNewCanvas ? document.createElement('canvas') : webglCanvas;\r\n\r\n if (!wgl.gl || useNewCanvas) {\r\n wgl.width = canvasElement.width;\r\n wgl.height = canvasElement.height;\r\n wgl.gl = wgl.getContext(\"webgl\");\r\n wgl.prog = prepareWebGL(wgl.gl, canvasElement.width, canvasElement.height);\r\n setArrays(wgl.gl, wgl.prog);\r\n const uSampler = wgl.gl.getUniformLocation(wgl.prog, 'uSampler');\r\n wgl.gl.uniform1i(uSampler, 0);\r\n }\r\n\r\n let gl = wgl.gl;\r\n const texture = loadTexture(gl, canvasElement);\r\n let ctx = canvasElement.getContext('2d');\r\n\r\n // render\r\n gl.activeTexture(gl.TEXTURE0);\r\n gl.bindTexture(gl.TEXTURE_2D, texture);\r\n gl.clearColor(0.0, 0.0, 0.0, 1.0);\r\n gl.clear(gl.COLOR_BUFFER_BIT);\r\n gl.drawArrays(gl.TRIANGLES, 0, 6);\r\n ctx.drawImage(wgl, 0, 0, wgl.width, wgl.height, 0, 0, canvasElement.width, canvasElement.height);\r\n // render end\r\n\r\n}\r\n\r\nexport default enhanceCanvas\r\n","/**\r\n * Moves an element to a new position with a specified speed and returns a Promise that resolves when the animation is complete.\r\n * @param {HTMLElement} element - The element to move.\r\n * @param {number} newX - The new X-coordinate of the element.\r\n * @param {number} newY - The new Y-coordinate of the element.\r\n * @param {number} speed - The speed in pixels per second.\r\n * @returns {Promise} A Promise that resolves when the animation is complete.\r\n */\r\nimport {distanceToInches, parseImperialFractionToDecimal} from \"./sqftHelper\";\r\nimport EventManager from \"../components/canvas/store/sqftEventManager\";\r\nimport sqftConfig from \"../components/canvas/store/sqftConfig\";\r\nimport {MEASURE_UNITS} from \"../constants\";\r\n\r\nexport const moveElement = (element, newX, newY, speed) => {\r\n return new Promise(resolve => {\r\n // Get the current coordinates of the element\r\n const oldX = element.offsetLeft;\r\n const oldY = element.offsetTop;\r\n\r\n // Calculate the distance between the old and new coordinates\r\n const distanceX = newX - oldX;\r\n const distanceY = newY - oldY;\r\n\r\n // Calculate the duration of the animation based on the speed\r\n const duration = Math.sqrt(distanceX ** 2 + distanceY ** 2) / speed;\r\n\r\n // Set the element to the initial position\r\n element.style.position = \"absolute\";\r\n element.style.left = oldX + \"px\";\r\n element.style.top = oldY + \"px\";\r\n\r\n // Animate the element to the new position\r\n const startTime = performance.now();\r\n function animate(currentTime) {\r\n const elapsedTime = currentTime - startTime;\r\n const progress = Math.min(elapsedTime / duration, 1);\r\n const x = oldX + distanceX * progress;\r\n const y = oldY + distanceY * progress;\r\n element.style.left = x + \"px\";\r\n element.style.top = y + \"px\";\r\n if (progress < 1) {\r\n requestAnimationFrame(animate);\r\n } else {\r\n resolve(); // Animation complete, resolve the Promise\r\n }\r\n }\r\n requestAnimationFrame(animate);\r\n });\r\n}\r\n\r\nexport const delay = (time) => {\r\n return new Promise(resolve => setTimeout(resolve, time));\r\n}\r\n\r\nexport function createAdjustableInput({\r\n position = { x: 0, y: 0 },\r\n initialValue = \"\",\r\n min = 1,\r\n max = 1000,\r\n orientation = \"horizontal\",\r\n onChange = () => {},\r\n onClose = () => {},\r\n step = 1,\r\n longPressInterval = 50,\r\n longPressDelay = 200,\r\n }) {\r\n const objectName = { name: 'lineInput' }; // Unique identifier for EventManager\r\n let isClosed = false; // Flag to prevent duplicate close calls\r\n\r\n const inputWrapper = document.createElement(\"div\"); // Wrapper for input and buttons\r\n inputWrapper.className = \"line-input\";\r\n inputWrapper.style.position = \"absolute\";\r\n inputWrapper.style.left = `${position.x}px`;\r\n inputWrapper.style.top = `${position.y}px`;\r\n\r\n // Set orientation class\r\n if (orientation === \"horizontal\") {\r\n inputWrapper.classList.add(\"line-input-horizontal\");\r\n } else if (orientation === \"vertical\") {\r\n inputWrapper.classList.add(\"line-input-vertical\");\r\n }\r\n\r\n // Create input field\r\n const input = document.createElement(\"input\");\r\n input.type = \"text\";\r\n input.className = \"line-input-field\";\r\n input.setAttribute(\"min\", min.toString());\r\n input.setAttribute(\"max\", max.toString());\r\n input.value = initialValue;\r\n\r\n // Adjust input value within [min, max] bounds and trigger onChange\r\n const adjustInputValue = (step) => {\r\n let currentValue = parseImperialFractionToDecimal(input.value);\r\n currentValue += step;\r\n currentValue = Math.max(min, Math.min(currentValue, max)); // Ensure within bounds\r\n input.value = currentValue;\r\n onChange(currentValue);\r\n input.dispatchEvent(new Event(\"change\")); // Trigger change event for UI updates\r\n\r\n if (sqftConfig.measureUnit === MEASURE_UNITS.Imperial) {\r\n input.value = distanceToInches(currentValue).replace(\"\\\"\", \"\");\r\n } else {\r\n input.value = currentValue;\r\n }\r\n };\r\n\r\n let longPressTimeout;\r\n let delayTimeout;\r\n const startLongPress = (step) => {\r\n adjustInputValue(step);\r\n delayTimeout = setTimeout(() => {\r\n longPressTimeout = setInterval(() => adjustInputValue(step), longPressInterval);\r\n }, longPressDelay);\r\n };\r\n const stopLongPress = () => {\r\n clearInterval(longPressTimeout);\r\n clearTimeout(delayTimeout);\r\n input.focus();\r\n };\r\n\r\n // Create increment button with long press functionality\r\n const incrementButton = document.createElement(\"button\");\r\n incrementButton.className = \"increment-button\";\r\n incrementButton.textContent = \"▲\";\r\n incrementButton.onmousedown = () => startLongPress(step);\r\n incrementButton.onmouseup = stopLongPress;\r\n incrementButton.onmouseleave = stopLongPress;\r\n\r\n // Create decrement button with long press functionality\r\n const decrementButton = document.createElement(\"button\");\r\n decrementButton.className = \"decrement-button\";\r\n decrementButton.textContent = \"▼\";\r\n decrementButton.onmousedown = () => startLongPress(-step);\r\n decrementButton.onmouseup = stopLongPress;\r\n decrementButton.onmouseleave = stopLongPress;\r\n\r\n // Append elements to wrapper\r\n inputWrapper.appendChild(input);\r\n inputWrapper.appendChild(incrementButton);\r\n inputWrapper.appendChild(decrementButton);\r\n\r\n // Use onchange instead of input for final validation after user finishes typing\r\n input.onchange = (event) => {\r\n let value = parseImperialFractionToDecimal(event.target.value);\r\n value = Math.max(min, Math.min(value, max)); // Ensure within bounds\r\n input.value = value;\r\n onChange(value);\r\n };\r\n\r\n // Close input when pressing Enter or if blurred outside of increment/decrement buttons\r\n const closeInput = () => {\r\n if (isClosed) return; // Prevent duplicate calls\r\n isClosed = true;\r\n\r\n onClose();\r\n inputWrapper.remove();\r\n EventManager.removeEvent(objectName);\r\n document.removeEventListener(\"mousedown\", handleOutsideClick);\r\n };\r\n\r\n input.addEventListener(\"keydown\", (event) => {\r\n if (event.key === \"Enter\") {\r\n input.blur(); // Explicitly trigger blur to ensure onchange fires\r\n closeInput();\r\n }\r\n });\r\n\r\n const handleOutsideClick = (event) => {\r\n if (!inputWrapper.contains(event.target)) {\r\n closeInput();\r\n }\r\n };\r\n\r\n // Add event to close input on MOUSE_DOWN outside, unless the input is focused\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_DOWN,\r\n closeInput,\r\n objectName,\r\n EventManager.priorities.OVERALL\r\n );\r\n document.addEventListener(\"mousedown\", handleOutsideClick);\r\n\r\n return inputWrapper;\r\n}\r\n","import config from \"../../../../store/sqftConfig\";\r\nimport {isIE} from \"../../../../../../helpers/sqftHelper\";\r\n\r\nexport default class DrawImage {\r\n\r\n static renderImage = (svgImageId, ctx, x, y, width, height, isCentered = true, isScale = true) => {\r\n let scale = config.scale;\r\n let svg = document.getElementById(svgImageId);\r\n if (!svg) {\r\n console.error(\"svg with id not found\", svgImageId);\r\n return\r\n }\r\n let img = new Image(),\r\n xml = new XMLSerializer().serializeToString(svg), // get svg data\r\n svg64 = btoa(xml); // make it base64\r\n let posX = x;\r\n let posY = y;\r\n let svgImageDataURI = \"\";\r\n\r\n img.src = 'data:image/svg+xml;base64,' + svg64; // set it as the source of the img element\r\n if (isScale) {\r\n width = width / config.scale * config.defaultScale;\r\n height = height / config.scale * config.defaultScale;\r\n }\r\n if (isCentered) {\r\n posX -= width / 2 ;\r\n posY -= height / 2;\r\n }\r\n\r\n if (isIE()) {\r\n svgImageDataURI = atob(this.getSrc(img).replace(/data:image\\/svg\\+xml;base64,/, ''));\r\n }\r\n if (!isIE()) {\r\n ctx.drawImage(img, posX, posY , width * scale, height * scale);\r\n } else if(svgImageDataURI) {\r\n ctx.drawSvg(svgImageDataURI, posX, posY + 1, 0, 0);\r\n }\r\n };\r\n\r\n // static isIE() {\r\n // return(/Trident/i).test(window.navigator.appVersion);\r\n // }\r\n\r\n static getSrc(htmlImg) {\r\n if(htmlImg) {\r\n let src = htmlImg.getAttribute('src');\r\n if(src) {\r\n return src;\r\n }\r\n src = htmlImg.getAttribute(\"style\");\r\n if(src) {\r\n return src.replace(/background-image: url\\(\"\\/api\\/SqFtCalc\\/GetImage\\?url=/g, \"\").replace(/\"\\);/g, \"\");\r\n }\r\n }\r\n return \"\";\r\n }\r\n}\r\n","import {getClosestPoint, getIntersectCords, getMousePositionOnField} from \"../../../../../../helpers/sqftHelper\";\r\nimport store from \"../../../../../../../../store\";\r\n\r\nexport const getHorizontalLineIntersectionPoints = (mousePos, shape, lines = shape.getLines()) => {\r\n const mousePosOnFiled = getMousePositionOnField(mousePos.x, mousePos.y);\r\n const serverState = store.getState().serverState;\r\n const pos = shape.getPosition();\r\n\r\n const mousePosOnShape = {x: mousePosOnFiled.x - pos.x, y: mousePosOnFiled.y - pos.y};\r\n let verticalLinePoint1 = {x: -serverState.windowWidth, y: Math.round10(mousePosOnShape.y, -1)};\r\n let verticalLinePoint2 = {x: serverState.windowWidth, y: Math.round10(mousePosOnShape.y, -1)};\r\n let [intersectionXPointAndLine1, intersectionXPointAndLine2] = getClosestIntersectionPoints(\r\n lines, verticalLinePoint1, verticalLinePoint2, mousePosOnShape\r\n );\r\n\r\n if (intersectionXPointAndLine1 && intersectionXPointAndLine2) {\r\n intersectionXPointAndLine1.intersectionCords = {x: Math.round10(intersectionXPointAndLine1.intersectionCords.x, -1), y: Math.round10(mousePosOnFiled.y - pos.y, -1)};\r\n intersectionXPointAndLine2.intersectionCords = {x: Math.round10(intersectionXPointAndLine2.intersectionCords.x, -1), y: Math.round10(mousePosOnFiled.y - pos.y, -1)};\r\n\r\n return [intersectionXPointAndLine1, intersectionXPointAndLine2]\r\n }\r\n\r\n return []\r\n}\r\n\r\nexport const getVerticalLineIntersectionPoints = (mousePos, shape, lines = shape.getLines()) => {\r\n const mousePosOnFiled = getMousePositionOnField(mousePos.x, mousePos.y);\r\n const serverState = store.getState().serverState;\r\n const pos = shape.getPosition();\r\n\r\n const mousePosOnShape = {x: mousePosOnFiled.x - pos.x, y: mousePosOnFiled.y - pos.y};\r\n //let verticalLinePoint1 = {x: -serverState.windowWidth, y: mousePosOnShape.y};\r\n //let verticalLinePoint2 = {x: serverState.windowWidth, y: mousePosOnShape.y};\r\n\r\n let verticalLinePoint1 = {x: Math.round10(mousePosOnFiled.x - pos.x, -1), y: -serverState.windowHeight};\r\n let verticalLinePoint2 = {x: Math.round10(mousePosOnFiled.x - pos.x, -1), y: serverState.windowHeight};\r\n // let verticalLinePoint1 = {x: Math.ceil10(mousePosOnFiled.x - pos.x, 2), y: -serverState.windowHeight};\r\n // let verticalLinePoint2 = {x: Math.ceil10(mousePosOnFiled.x - pos.x, 2), y: serverState.windowHeight};\r\n\r\n let [intersectionPointAndLine1, intersectionPointAndLine2] = getClosestIntersectionPoints(\r\n lines, verticalLinePoint1, verticalLinePoint2, mousePosOnShape\r\n );\r\n\r\n if (intersectionPointAndLine1 && intersectionPointAndLine2) {\r\n intersectionPointAndLine1.intersectionCords = {x: Math.round10(mousePosOnFiled.x - pos.x, -1), y: Math.round10(intersectionPointAndLine1.intersectionCords.y, -1)};\r\n intersectionPointAndLine2.intersectionCords = {x: Math.round10(mousePosOnFiled.x - pos.x, -1), y: Math.round10(intersectionPointAndLine2.intersectionCords.y, -1)};\r\n // let intersectionPoint1 = {x: Math.ceil10(mousePosOnFiled.x - pos.x, 2), y: intersectionXPoint1.y};\r\n // let intersectionPoint2 = {x: Math.ceil10(mousePosOnFiled.x - pos.x, 2), y: intersectionXPoint2.y};\r\n\r\n return [intersectionPointAndLine1, intersectionPointAndLine2]\r\n }\r\n\r\n return []\r\n}\r\n\r\n/**\r\n * Return only two closest points from the array of intersectionPointsAndLines\r\n * @param {*} lines\r\n * @param {*} intersectionPoint1\r\n * @param {*} intersectionPoint2\r\n * @param {*} closestPont\r\n * @return {array} [{intersectionPoint, line}]\r\n */\r\nexport const getClosestIntersectionPoints = (lines, intersectionPoint1, intersectionPoint2, closestPont) => {\r\n let intersectionPointsAndLines = getIntersectionPointsAndLines(lines, intersectionPoint1, intersectionPoint2)\r\n if (intersectionPointsAndLines.length >= 1) {\r\n let intersectionPoints = intersectionPointsAndLines.map(pointAndLine => pointAndLine.intersectionCords);\r\n let closestPont1 = getClosestPoint(closestPont, intersectionPoints);\r\n let intersectionPointsAndLinesWithout1Point = intersectionPointsAndLines.filter(pointAndLine => pointAndLine.intersectionCords !== closestPont1);\r\n intersectionPoints = intersectionPointsAndLinesWithout1Point.map(pointAndLine => pointAndLine.intersectionCords);\r\n\r\n let closestPont2 = getClosestPoint(closestPont, intersectionPoints);\r\n\r\n return intersectionPointsAndLines.filter(pointAndLine => {\r\n return pointAndLine.intersectionCords === closestPont1 || pointAndLine.intersectionCords === closestPont2\r\n });\r\n }\r\n\r\n return intersectionPointsAndLines\r\n}\r\n\r\n/**\r\n * Return all intersectionsPointsAndLines between lines and two coords\r\n * @param {*} lines\r\n * @param {*} intersectionPoint1\r\n * @param {*} intersectionPoint2\r\n * @return {array} [{intersectionPoint, line}]\r\n */\r\nexport const getIntersectionPointsAndLines = (lines, intersectionPoint1, intersectionPoint2) => {\r\n let intersectionPoints = [];\r\n\r\n lines.forEach((line) => {\r\n let intersectionCords = getIntersectCords(\r\n Math.round10(line.from.x, -1), Math.round10(line.from.y, -1),\r\n Math.round10(line.to.x, -1), Math.round10(line.to.y, -1),\r\n Math.round10(intersectionPoint1.x, -1), Math.round10(intersectionPoint1.y, -1),\r\n Math.round10(intersectionPoint2.x, -1), Math.round10(intersectionPoint2.y, -1),\r\n false\r\n );\r\n if (intersectionCords) {\r\n intersectionPoints.push({intersectionCords, line});\r\n }\r\n });\r\n\r\n return intersectionPoints\r\n}\r\n\r\n/**\r\n *\r\n * @param circleX {int}\r\n * @param circleY {int}\r\n * @param circleRadius {int}\r\n * @param lineX1 {int}\r\n * @param lineY1 {int}\r\n * @param lineX2 {int}\r\n * @param lineY2 {int}\r\n * @return {null|{y1: *, x1: *, y2: *, x2: *}|{x: *, y: *}}\r\n */\r\nexport const getCircleLineIntersection = (circleX, circleY, circleRadius, lineX1, lineY1, lineX2, lineY2) => {\r\n const dx = lineX2 - lineX1;\r\n const dy = lineY2 - lineY1;\r\n const a = dx * dx + dy * dy;\r\n const b = 2 * (dx * (lineX1 - circleX) + dy * (lineY1 - circleY));\r\n const c = circleX * circleX + circleY * circleY + lineX1 * lineX1 + lineY1 * lineY1\r\n - 2 * (circleX * lineX1 + circleY * lineY1) - circleRadius * circleRadius;\r\n const delta = b * b - 4 * a * c;\r\n\r\n if (delta < 0) {\r\n return null; // no intersection\r\n } else if (delta === 0) {\r\n // the line is tangent to the circle\r\n const t = -b / (2 * a);\r\n const intersectionX = lineX1 + t * dx;\r\n const intersectionY = lineY1 + t * dy;\r\n return { x: intersectionX, y: intersectionY };\r\n } else {\r\n // the line intersects the circle at two points\r\n const t1 = (-b + Math.sqrt(delta)) / (2 * a);\r\n const t2 = (-b - Math.sqrt(delta)) / (2 * a);\r\n const intersection1X = lineX1 + t1 * dx;\r\n const intersection1Y = lineY1 + t1 * dy;\r\n const intersection2X = lineX1 + t2 * dx;\r\n const intersection2Y = lineY1 + t2 * dy;\r\n return { x1: intersection1X, y1: intersection1Y, x2: intersection2X, y2: intersection2Y };\r\n }\r\n}\r\n","import {\r\n getMidPoint,\r\n getPointOnTheLine,\r\n} from \"../../../helpers/sqftHelper\";\r\nimport COLOR_THEMES from \"../../../../../colorThemes\";\r\nimport sqftConfig from \"../store/sqftConfig\";\r\n\r\nexport default class RenderCabinets {\r\n\r\n /**\r\n * @param points {[{x:int, y:int}]}\r\n * @param distance {int}\r\n * @return {[DiagonalPointsForTheSquareInterface]}\r\n */\r\n static getDiagonalPointsForTheSquare = (points, distance) => {\r\n let returnPoints = [];\r\n for (const pointIndex in points) {\r\n if (points.hasOwnProperty(pointIndex)) {\r\n const len = points.length;\r\n const current = points[+pointIndex];\r\n const previous = points[(+pointIndex + len - 1) % len];\r\n const next = points[(+pointIndex + 1) % len];\r\n\r\n const linePoint1 = getPointOnTheLine(current, previous, distance);\r\n const linePoint2 = getPointOnTheLine(current, next, distance);\r\n const diagonalPoint = getMidPoint(linePoint1, linePoint2);\r\n\r\n returnPoints.push({\r\n currentPoint: current,\r\n diagonalPoint: diagonalPoint\r\n });\r\n }\r\n }\r\n\r\n return returnPoints\r\n }\r\n\r\n /**\r\n * @param points {[{x:int, y:int}]}\r\n * @param distance {int}\r\n * @param linePointsIds {[]}\r\n * @return {[DiagonalPointsForTheSquareInterface]}\r\n */\r\n static getDiagonalPointsForTheLine = (points, distance, linePointsIds) => {\r\n const diagonalSquarePoint = RenderCabinets.getDiagonalPointsForTheSquare(points, distance);\r\n\r\n return diagonalSquarePoint.filter(squarePoint => {\r\n return linePointsIds.some(linePointId => {\r\n return linePointId === squarePoint.currentPoint.id\r\n });\r\n })\r\n }\r\n\r\n static renderCrownMolding = (ctx, crownMoldingPoints) => {\r\n //render diagonal lines\r\n ctx.beginPath();\r\n ctx.moveTo(crownMoldingPoints[0].diagonalPoint.x, crownMoldingPoints[0].diagonalPoint.y);\r\n for (const crownMoldingPoint of crownMoldingPoints) {\r\n ctx.lineWidth = 2;\r\n ctx.lineTo(crownMoldingPoint.diagonalPoint.x, crownMoldingPoint.diagonalPoint.y);\r\n }\r\n ctx.lineTo(crownMoldingPoints[0].diagonalPoint.x, crownMoldingPoints[0].diagonalPoint.y);\r\n ctx.stroke();\r\n ctx.closePath();\r\n\r\n //render border\r\n for (const crownMoldingPoint of crownMoldingPoints) {\r\n ctx.beginPath();\r\n ctx.lineWidth = 2;\r\n ctx.moveTo(crownMoldingPoint.currentPoint.x, crownMoldingPoint.currentPoint.y);\r\n ctx.lineTo(crownMoldingPoint.diagonalPoint.x, crownMoldingPoint.diagonalPoint.y);\r\n ctx.closePath();\r\n ctx.stroke();\r\n }\r\n }\r\n\r\n static renderEndCap = (ctx, line) => {\r\n //render thick line\r\n const fromPointField = line.from.getPointField();\r\n const toPointField = line.to.getPointField();\r\n ctx.beginPath();\r\n ctx.moveTo(fromPointField.x, fromPointField.y);\r\n ctx.lineWidth = 6;\r\n ctx.strokeStyle = COLOR_THEMES[sqftConfig.activeTheme].primary_hover;\r\n ctx.lineTo(toPointField.x, toPointField.y);\r\n ctx.stroke();\r\n ctx.closePath();\r\n }\r\n}\r\n","import uuid from \"uuid\";\r\nimport $ from \"jquery\";\r\n\r\nimport COLOR_THEMES from \"../../../store/colorThemes\";\r\nimport Config from \"../../../store/sqftConfig\";\r\nimport {\r\n getAngleBetweenTwoPoints,\r\n getMidPoint, getMinInArray, getParallelPoints,\r\n getPointDistance, getPointField, getSectionPartPoint, isDisabledInPopupWithParents,\r\n measureDistanceToInches, numToLetter,\r\n orientation\r\n} from \"../../../../../helpers/sqftHelper\";\r\nimport point from \"../point\";\r\nimport EventManager from \"../../../store/sqftEventManager\";\r\nimport workspace from \"../../workspace\";\r\n//import TranslatesProvider from \"../../../../../translatesProvider\";\r\nimport MiteredSegment from \"../shapeParts/mitered/miteredSegment\";\r\nimport NumberText from \"../../workspace/text/numberText\";\r\nimport DrawImage from \"../../workspace/textBox/draw/drawImage\";\r\nimport store from \"../../../../../../../store\";\r\nimport sqftConfig from \"../../../store/sqftConfig\";\r\nimport {\r\n isDisabledInPopupShouldBeHidden, MITERED_OVERLAY_TYPE,\r\n SIDEBAR_BUTTONS_MENU,\r\n SIDEBAR_NAVIGATION_BUTTONS\r\n} from \"../../../../../constants\";\r\nimport RenderFigures from \"../../../helpers/renderFigures\";\r\nimport sqftSlabManager from \"../../../store/sqftSlabManager\";\r\nimport {getQtCatName} from \"../../../../../helpers/sqftQuotesHelper\";\r\n\r\nexport default class MiteredOverlay {\r\n id;\r\n sectionIndex;\r\n line;\r\n self = this;\r\n qtCatName = null;\r\n featureId = null;\r\n type = null; //mitered || underlayment\r\n state = {\r\n mousePos: {},\r\n mouseDown: false,\r\n mouseDownPosition: null,\r\n isHoveringPoint: false,\r\n hoveredPoint: null,\r\n isHoveredOverText: false,\r\n hoveredText: {\r\n area:[],\r\n midPoint: {x: 0, y: 0},\r\n pointsDistance: 0,\r\n points: {point1: null, point2: null},\r\n orientation: 0\r\n },\r\n midPoint: {\r\n x: 0,\r\n y: 0,\r\n },\r\n height: 1.5,\r\n heightMetric: 40,\r\n thickness: 4,\r\n thicknessMetric: 40,\r\n maxSegmentPriority: 0\r\n };\r\n design = {\r\n //initialSize: 30,\r\n minMiteredSize: 1,\r\n measurementMargin: 30, //11,\r\n dragPointMargin: 28,\r\n rulerMargin: 33,\r\n heightMargin: 60,\r\n sectionIndexMargin: 95,\r\n sectionArrowWidth: 30,\r\n letterMargin: 18,\r\n thicknessMargin: -18,\r\n movePointOffset: 15,\r\n lineTextColor: COLOR_THEMES[Config.activeTheme].primary,\r\n fontColor: COLOR_THEMES[Config.activeTheme].primary,\r\n deleteFillStyle: \"#e77f8d\", //\"rgba(253,2,33, 0.5)\",\r\n fontFamily: 'playbold',\r\n fontHeight: 16\r\n };\r\n miteredPoints = []; // array of points\r\n _segments = []; // array of MiteredSegments\r\n miteredTextParameters = []; //array of objects\r\n heightNumberText = {}; //array of objects\r\n\r\n constructor(line, sectionIndex, type) {\r\n this.line = line;\r\n this.sectionIndex = sectionIndex;\r\n this.type = type;\r\n this.id = uuid();\r\n this.qtCatName = getQtCatName();\r\n }\r\n\r\n setMiteredPoints = (value) => { this.miteredPoints = value; }\r\n getSegments = () => { return this._segments; }\r\n getParent = () => { return this.line; }\r\n setSegments = (value) => { this._segments = value; }\r\n setFeatureId = (value) => { this.featureId = value; }\r\n\r\n movePointInOrStop = (point1, axis, diff, biggestLineCord, smallestLineCord, stopPointLeft, stopPointRight, moveStopPoints) => {\r\n //stop on other move points\r\n let smallestPointStopped = null;\r\n let biggestPointStopped = null;\r\n if (point1[axis] - diff < stopPointLeft[axis]) {\r\n smallestLineCord = stopPointLeft[axis] + this.design.minMiteredSize;\r\n smallestPointStopped = stopPointLeft;\r\n if(moveStopPoints) {\r\n let lengthDiff = point1[axis] - stopPointLeft[axis] - diff;\r\n this.movePoint(-lengthDiff, point1[axis] - diff, stopPointLeft, true);\r\n this.moveMeasurements(stopPointLeft);\r\n smallestLineCord = stopPointLeft[axis];\r\n }\r\n } else if (point1[axis] - diff > stopPointRight[axis]) {\r\n biggestLineCord = stopPointRight[axis] - this.design.minMiteredSize;\r\n biggestPointStopped = stopPointRight;\r\n if(moveStopPoints) {\r\n let lengthDiff = point1[axis] - stopPointRight[axis] - diff;\r\n this.movePoint(-lengthDiff, lengthDiff, stopPointRight, true);\r\n this.moveMeasurements(stopPointRight);\r\n biggestLineCord = stopPointRight[axis];\r\n }\r\n }\r\n\r\n // keep inside line\r\n if (point1[axis] - diff >= biggestLineCord) {\r\n point1[axis] = biggestLineCord;\r\n } else if (point1[axis] - diff <= smallestLineCord) {\r\n point1[axis] = smallestLineCord;\r\n } else {\r\n point1[axis] -= diff;\r\n }\r\n\r\n return [smallestPointStopped, biggestPointStopped]\r\n };\r\n\r\n getMousePosPointDiff = (diff, point, mousePos, sameOrientation = false) => {\r\n if(Config.measureUnit === \"Metric\") {\r\n let offset = 0;\r\n switch(this.line.getOrientation()) {\r\n case orientation.HORIZONTAL:\r\n offset = sameOrientation ? mousePos.x - point.getPointField().x : mousePos.y - point.getPointField().y;\r\n break;\r\n case orientation.VERTICAL:\r\n offset = sameOrientation? mousePos.y - point.getPointField().y : mousePos.x - point.getPointField().x;\r\n break;\r\n case orientation.NORTHWEST:\r\n case orientation.SOUTHEAST:\r\n break;\r\n case orientation.NORTHEAST:\r\n case orientation.SOUTHWEST:\r\n break;\r\n }\r\n if(!(-this.design.movePointOffset / 2 > offset || offset > 3 * this.design.movePointOffset)) {\r\n diff = diff / Config.millimetersMultiplier;\r\n }\r\n }\r\n\r\n return diff\r\n };\r\n\r\n getPoints = () => { return this.miteredPoints; };\r\n getMiteredTextParameter = () => { return this.miteredTextParameters; };\r\n isMiteredPointMoving = () => { return this.state.mouseDown};\r\n\r\n destroy = (protect) => {\r\n if(!protect) {\r\n EventManager.removeEvent(this);\r\n this.miteredPoints.forEach((point) => point.destroy());\r\n this._segments.forEach((segment) => {\r\n segment.length.destroy();\r\n if (segment.thickness) {\r\n segment.thickness.destroy();\r\n }\r\n });\r\n this.heightNumberText.destroy();\r\n\r\n if (this.type === MITERED_OVERLAY_TYPE.mitered) {\r\n workspace.miteredController.deleteSection(this);\r\n } else if (this.type === MITERED_OVERLAY_TYPE.underlayment) {\r\n workspace.underlaymentController.deleteSection(this);\r\n }\r\n }\r\n };\r\n\r\n init = (importData = null) => {\r\n if (this.line.overlay) {\r\n this.line.overlay.destroy();\r\n }\r\n if(!importData) {\r\n this.preparePoints(false);\r\n }\r\n this.prepareMeasurements(importData);\r\n this.prepareHeight(importData);\r\n this.initEvents();\r\n\r\n //points\r\n this.miteredPoints.forEach((point, index) => {\r\n if (index === 0 || index === this.miteredPoints.length - 1) {\r\n this.initPoint(point, 'blank');\r\n } else {\r\n this.initPoint(point, 'white-circle');\r\n }\r\n });\r\n\r\n // todo fix bumpout rotation and remove this\r\n $('.button--angle').addClass('button--disabled');\r\n /////////////////////////////////////////\r\n };\r\n initEvents = () => {\r\n EventManager.addEvent(\r\n EventManager.events.RENDER,\r\n this.render,\r\n this,\r\n EventManager.priorities.SEGMENT\r\n );\r\n //todo priority\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_MOVE,\r\n this.onMouseMove,\r\n this,\r\n EventManager.priorities.SEGMENT\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_DOWN,\r\n this.onMouseDown,\r\n this,\r\n EventManager.priorities.SEGMENT\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_UP,\r\n this.onMouseUp,\r\n this,\r\n EventManager.priorities.SEGMENT\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_LEAVE,\r\n this.onMouseLeave,\r\n this,\r\n EventManager.priorities.OVERALL\r\n );\r\n };\r\n deregisterEvents = () => {\r\n EventManager.removeEvent(this);\r\n this.heightNumberText.deregisterEvents();\r\n for (let segment of this._segments ) {\r\n segment.length.deregisterEvents();\r\n if (segment.thickness) {\r\n segment.thickness.deregisterEvents();\r\n }\r\n }\r\n };\r\n reInitEvents = () => {\r\n this.initEvents();\r\n this.heightNumberText.reInitEvents();\r\n for (let segment of this._segments ) {\r\n segment.length.reInitEvents();\r\n if (segment.thickness) {\r\n segment.thickness.reInitEvents();\r\n }\r\n }\r\n };\r\n\r\n getMiteredTotalArea = () => {\r\n let totalArea = 0,\r\n lineLength = Config.measureUnit === \"Metric\" ? this.line.getLineLengthMm() : this.line.getLineLength(),\r\n height = Config.measureUnit === \"Metric\" ? this.state.heightMetric : this.state.height;\r\n //segmentsLength = 0,\r\n //minThicknessToCount = Config.measureUnit === \"Metric\" ? 40 : 1;\r\n\r\n // for (let segment of this._segments) {\r\n // if (segment instanceof MiteredSegment) {\r\n // if(segment.thickness.value >= minThicknessToCount ) {\r\n // let segmentLength = Config.measureUnit === \"Metric\"\r\n // ? inchesToMm(segment.length.value)\r\n // : this.line.addDecimalToLength(measureDistanceToInches(segment.length.value));\r\n //\r\n // segmentsLength += +segment.thickness.value + +segmentLength\r\n // }\r\n // }\r\n // }\r\n\r\n //totalArea = height * (lineLength + segmentsLength);\r\n totalArea = height * (lineLength);\r\n\r\n return totalArea;\r\n };\r\n\r\n export = () => {\r\n return {\r\n miteredPoints : this.miteredPoints.map((point) => {\r\n return point.export();\r\n }),\r\n state: this.state,\r\n _segments: this._segments.map((segment) => {\r\n return segment.exportSegment()\r\n }),\r\n }\r\n };\r\n\r\n import = (line, importMitered) => {\r\n for (const importPoint of importMitered.miteredPoints) {\r\n const preparePoint = new point();\r\n preparePoint.import(importPoint);\r\n\r\n this.miteredPoints.push(preparePoint);\r\n }\r\n this.state = importMitered.state;\r\n this.state = importMitered.state;\r\n };\r\n\r\n preparePoints = (shouldAddTwoPointsInTheMiddle = false) => {\r\n let point33 = getSectionPartPoint(this.line.from, this.line.to, 2),\r\n point66 = getSectionPartPoint(this.line.from, this.line.to, 1/2);\r\n let [fromPointWithIndent, toPointWithIndent] = this.line.getLinePointsWithoutCorners();\r\n const miteredPoints = [\r\n new point(fromPointWithIndent.x, fromPointWithIndent.y),\r\n ...(shouldAddTwoPointsInTheMiddle ? [new point(point33.x, point33.y), new point(point66.x, point66.y)] : []),\r\n new point(toPointWithIndent.x, toPointWithIndent.y)\r\n ];\r\n\r\n this.setMiteredPoints(miteredPoints);\r\n };\r\n\r\n prepareMeasurements = (importData = null) => {\r\n this.miteredPoints.forEach((point, index) => {\r\n let next = index + 1;\r\n if(this.miteredPoints[next]) {\r\n this.addMeasurementBetweenPoints(point, this.miteredPoints[next], importData ? importData._segments[index] : null);\r\n }\r\n });\r\n };\r\n\r\n prepareHeight = (importData = null) => {\r\n const midPoint = getMidPoint(this.line.from, this.line.to),\r\n lineDirection = this.line.getLineDirection(),\r\n fontHeight = this.design.fontHeight;\r\n\r\n let xMarginHeight = 0,\r\n yMarginHeight = -this.design.heightMargin - fontHeight,\r\n angle = getAngleBetweenTwoPoints(this.line.from, this.line.to);\r\n\r\n switch (lineDirection.orientation) {\r\n case \"horizontal\": {\r\n if (lineDirection.newDirection === \"west\") {\r\n angle += 180\r\n yMarginHeight = this.design.heightMargin + fontHeight;\r\n }\r\n break;\r\n }\r\n case \"vertical\": {\r\n break;\r\n }\r\n // todo rotation\r\n case \"NORTHWEST\": { break;}\r\n case \"NORTHEAST\": { break;}\r\n case \"SOUTHWEST\": { break;}\r\n case \"SOUTHEAST\": { break;}\r\n default:\r\n break;\r\n }\r\n\r\n let posHeight = {\r\n // betweenPoints: {\r\n // pointFrom: this.line.from,\r\n // pointTo: this.line.to\r\n // },\r\n x: midPoint.x,\r\n y: midPoint.y,\r\n xOffset: xMarginHeight,\r\n yOffset: yMarginHeight,\r\n orientation: this.line.getLineDirectionV2(),\r\n angle: angle\r\n };\r\n let design = {\r\n valuePrefix: workspace.intl.formatMessage({id: \"sqft.navigation.mitered.height\"}) + \": \",\r\n };\r\n\r\n let heightValue = importData\r\n ? importData._segments[0]\r\n ? importData._segments[0].height\r\n : null\r\n : Config.measureUnit === \"Metric\" ? this.state.heightMetric : this.state.height;\r\n\r\n this.heightNumberText = new NumberText(heightValue, posHeight, design, this, this.setSegmentHeightFromNumberValue);\r\n };\r\n\r\n updateMinMaxPoints = () => {\r\n let [fromPointWithIndent, toPointWithIndent] = this.line.getLinePointsWithoutCorners();\r\n // Minimum and maximum values for limiting points\r\n const minX = Math.min(fromPointWithIndent.x, toPointWithIndent.x);\r\n const minY = Math.min(fromPointWithIndent.y, toPointWithIndent.y);\r\n const maxX = Math.max(fromPointWithIndent.x, toPointWithIndent.x);\r\n const maxY = Math.max(fromPointWithIndent.y, toPointWithIndent.y);\r\n\r\n // Limiting points within specified boundaries\r\n for (const miteredPoint of this.miteredPoints) {\r\n miteredPoint.x = Math.max(minX, Math.min(maxX, miteredPoint.x));\r\n miteredPoint.y = Math.max(minY, Math.min(maxY, miteredPoint.y));\r\n }\r\n\r\n // Move the nearest points to the specified minimum and maximum values\r\n let startPoint = this.miteredPoints[0],\r\n endPoint = this.miteredPoints[this.miteredPoints.length - 1];\r\n\r\n startPoint.x = fromPointWithIndent.x;\r\n startPoint.y = fromPointWithIndent.y;\r\n endPoint.x = toPointWithIndent.x;\r\n endPoint.y = toPointWithIndent.y;\r\n\r\n this.updateSegmentsLength();\r\n this.updateSegmentThicknessPos();\r\n }\r\n\r\n addMeasurementBetweenPoints = (point1, point2, importSegment = null) => {\r\n let angle = getAngleBetweenTwoPoints(this.line.from, this.line.to);\r\n const midPoint = getMidPoint(point1, point2),\r\n lineDirection = this.line.getLineDirection(),\r\n fontHeight = this.design.fontHeight,\r\n // distance = Config.measureUnit === \"Metric\"\r\n // ? distanceToMillimeters(getPointDistance(point1, point2))\r\n // : getPointDistance(point1, point2)\r\n\r\n distance = getPointDistance(point1, point2),\r\n point1Index = this.miteredPoints.indexOf(point1),\r\n point2Index = this.miteredPoints.indexOf(point2);\r\n\r\n void point2Index;\r\n let yOffset = -this.design.measurementMargin - fontHeight,\r\n xOffset = 0;\r\n // thicknessXOffsetValue = 0,\r\n // xMarginLine = 0,\r\n // yMarginLine = 0,\r\n // thicknessYOffsetValue = 0;\r\n\r\n switch (lineDirection.orientation) {\r\n case \"horizontal\": {\r\n if (lineDirection.newDirection === \"west\") {\r\n angle += 180\r\n yOffset = this.design.heightMargin - fontHeight;\r\n }\r\n //yOffset = lineDirection.newDirection === \"west\" ? this.design.measurementMargin + fontHeight : -this.design.measurementMargin -fontHeight;\r\n\r\n // yMarginLine = (lineDirection.newDirection === \"west\" ? this.design.thicknessMargin : -this.design.thicknessMargin);\r\n //\r\n // thicknessXOffsetValue = (lineDirection.newDirection === \"east\" ? 15 : 15);\r\n // thicknessYOffsetValue = (lineDirection.newDirection === \"east\" ? 16 : -14);\r\n break;\r\n }\r\n case \"vertical\": {\r\n //xOffset = (lineDirection.newDirection === \"south\" ? this.design.measurementMargin + 10 : -this.design.measurementMargin - 10);\r\n\r\n // xMarginLine = (lineDirection.newDirection === \"south\" ? this.design.thicknessMargin: -this.design.thicknessMargin);\r\n //\r\n // thicknessXOffsetValue = (lineDirection.newDirection === \"north\" ? 35 : -16);\r\n // thicknessYOffsetValue = (lineDirection.newDirection === \"north\" ? 5 : 6);\r\n break;\r\n }\r\n //TODO rotation\r\n case \"NORTHWEST\": { break; }\r\n case \"NORTHEAST\": { break; }\r\n case \"SOUTHWEST\": { break; }\r\n case \"SOUTHEAST\": { break; }\r\n default: break;\r\n }\r\n\r\n let pos = {\r\n x: midPoint.x,\r\n y: midPoint.y,\r\n xOffset: xOffset,\r\n yOffset: yOffset,\r\n orientation: this.line.getLineDirectionV2(),\r\n angle: angle,\r\n };\r\n\r\n // let posThickness = {\r\n // x: midPoint.x,\r\n // y: midPoint.y,\r\n // xOffset: thicknessXOffsetValue + xMarginLine,\r\n // yOffset: thicknessYOffsetValue + yMarginLine,\r\n // orientation: this.line.getLineDirectionV2()\r\n // };\r\n\r\n let design = {\r\n isLength: true\r\n };\r\n\r\n let lengthText = new NumberText(distance, pos, design, this, this.setSegmentLengthFromNumberValue);\r\n let height = importSegment\r\n ? importSegment.height && importSegment.height\r\n : Config.measureUnit === \"Metric\" ? this.state.heightMetric : this.state.height;\r\n // let thicknessValue = importSegment && importSegment.thickness\r\n // ? importSegment.thickness\r\n // : Config.measureUnit === \"Metric\" ? this.state.thicknessMetric : this.state.thickness;\r\n //let thickness = new NumberText(thicknessValue, posThickness, {}, this, this.setSegmentThicknessFromNumberValue);\r\n let segment = new MiteredSegment(lengthText, height, null);\r\n // todo logic combining miteredPoints and segments\r\n this._segments.splice(point1Index, 0, segment);\r\n };\r\n\r\n getPointDistance(point, pos) {\r\n let pointField = point.getPointField();\r\n\r\n return Math.sqrt(Math.pow(pointField.x - pos.x, 2) + Math.pow(pointField.y - pos.y, 2))\r\n }\r\n\r\n getMaxLength = () => {\r\n return Config.measureUnit === \"Metric\"\r\n ? measureDistanceToInches(this.line.getLineLength()).millimeters // ? distanceToMillimeters(inchesToMm(segment.length.value))\r\n : this.line.getLineLength();\r\n }\r\n\r\n getPointBetweenCords = (mousePos) => {\r\n const closest = this.miteredPoints.reduce((a, b) => {\r\n return this.getPointDistance(a, mousePos) < this.getPointDistance(b, mousePos) ? a : b\r\n });\r\n const closestIndex = this.miteredPoints.indexOf(closest);\r\n let secondPoint = null;\r\n let isPrev = false;\r\n let lineDirection = this.line.getLineDirection();\r\n\r\n if(!this.miteredPoints[closestIndex + 1]) {\r\n secondPoint = this.miteredPoints[closestIndex - 1];\r\n isPrev = true;\r\n } else if(!this.miteredPoints[closestIndex - 1]) {\r\n secondPoint = this.miteredPoints[closestIndex + 1];\r\n isPrev = false;\r\n } else {\r\n let prevPoint = this.miteredPoints[closestIndex - 1];\r\n let nextPoint = this.miteredPoints[closestIndex + 1];\r\n let closestPointField = closest.getPointField();\r\n\r\n // todo logic\r\n //isPrev = this.getPointDistance(prevPoint, mousePos) < this.getPointDistance(nextPoint, mousePos);\r\n switch (lineDirection.orientation) {\r\n case \"horizontal\": {\r\n isPrev = lineDirection.newDirection === \"east\" ? mousePos.x < closestPointField.x : mousePos.x > closestPointField.x;\r\n break;\r\n }\r\n case \"vertical\": {\r\n isPrev = lineDirection.newDirection === \"north\" ? mousePos.y > closestPointField.y : mousePos.y < closestPointField.y;\r\n break;\r\n }\r\n //TODO rotation\r\n case \"NORTHWEST\": { break; }\r\n case \"NORTHEAST\": { break; }\r\n case \"SOUTHWEST\": { break; }\r\n case \"SOUTHEAST\": { break; }\r\n default: break;\r\n }\r\n\r\n secondPoint = isPrev ? prevPoint : nextPoint;\r\n }\r\n\r\n return [closest, secondPoint, isPrev];\r\n };\r\n\r\n addPointBetweenPoints = (closest, secondPoint, isPrev) => {\r\n const midPoint = getMidPoint(closest, secondPoint);\r\n const newPoint = new point(midPoint.x, midPoint.y);\r\n this.initPoint(newPoint);\r\n const closestIndex = this.miteredPoints.indexOf(closest);\r\n\r\n this.miteredPoints.splice(isPrev ? closestIndex : closestIndex + 1, 0, newPoint);\r\n\r\n return newPoint;\r\n };\r\n\r\n getSegmentBetweenPoints = (point1, point2) => {\r\n const point1Index = this.miteredPoints.indexOf(point1);\r\n const point2Index = this.miteredPoints.indexOf(point2);\r\n\r\n return this._segments[point2Index > point1Index ? point1Index : point2Index];\r\n };\r\n\r\n getSegmentPointsBySegment = (segment) => {\r\n const segmentIndex = this._segments.indexOf(segment);\r\n\r\n return [this.miteredPoints[segmentIndex], this.miteredPoints[segmentIndex + 1]];\r\n };\r\n\r\n removeMeasurementBetweenPoints = (closest, secondPoint, isPrev) => {\r\n const closestIndex = this.miteredPoints.indexOf(closest);\r\n const removeIndex = isPrev ? closestIndex - 2: closestIndex + 2;\r\n\r\n this._segments[removeIndex].length.destroy();\r\n if (this._segments[removeIndex].thickness) {\r\n this._segments[removeIndex].thickness.destroy();\r\n }\r\n this._segments.splice(removeIndex, 1);\r\n };\r\n\r\n deletePoint = (point) => {\r\n const pointIndex = this.miteredPoints.indexOf(point);\r\n\r\n //add new segment\r\n this.addMeasurementBetweenPoints(this.miteredPoints[pointIndex -1], this.miteredPoints[pointIndex +1]);\r\n\r\n //remove previous and next segment\r\n this._segments[pointIndex ].length.destroy();\r\n this._segments[pointIndex +1].length.destroy();\r\n if (this._segments[pointIndex].thickness) {\r\n this._segments[pointIndex].thickness.destroy();\r\n }\r\n if (this._segments[pointIndex + 1].thickness) {\r\n this._segments[pointIndex + 1].thickness.destroy();\r\n }\r\n this._segments.splice(pointIndex, 1);\r\n this._segments.splice(pointIndex, 1);\r\n\r\n //remove point\r\n this.miteredPoints.splice(pointIndex, 1);\r\n\r\n point.destroy();\r\n };\r\n\r\n resetHoveredPoint = () => {\r\n this.state.hoveredPoint = null;\r\n this.state.mouseDown = false;\r\n };\r\n\r\n\r\n moveMeasurements = (point) => {\r\n const pointIndex = this.miteredPoints.indexOf(point);\r\n\r\n // let length = Config.measureUnit === \"Metric\"\r\n // ? inchesToMm(getPointDistance(point, this.miteredPoints[pointIndex + 1 ]))\r\n // : getPointDistance(point, this.miteredPoints[pointIndex + 1 ]);\r\n //\r\n // let length2 = Config.measureUnit === \"Metric\"\r\n // ? inchesToMm(getPointDistance(point, this.miteredPoints[pointIndex - 1 ]))\r\n // : getPointDistance(point, this.miteredPoints[pointIndex - 1 ]);\r\n\r\n //move left and right measurements if they exist\r\n if (this.miteredPoints[pointIndex - 1 ]) {\r\n const midPoint2 = getMidPoint(point, this.miteredPoints[pointIndex - 1 ]);\r\n let length2 = getPointDistance(point, this.miteredPoints[pointIndex - 1 ]);\r\n this._segments[pointIndex - 1].length.pos.x = midPoint2.x;\r\n this._segments[pointIndex - 1].length.pos.y = midPoint2.y;\r\n this._segments[pointIndex - 1].length.value = length2;\r\n if (this._segments[pointIndex - 1].thickness) {\r\n this._segments[pointIndex - 1].thickness.pos.x = midPoint2.x;\r\n this._segments[pointIndex - 1].thickness.pos.y = midPoint2.y;\r\n }\r\n }\r\n if (this.miteredPoints[pointIndex + 1 ]) {\r\n const midPoint = getMidPoint(point, this.miteredPoints[pointIndex + 1 ]);\r\n let length = getPointDistance(point, this.miteredPoints[pointIndex + 1 ]);\r\n this._segments[pointIndex].length.pos.x = midPoint.x;\r\n this._segments[pointIndex].length.pos.y = midPoint.y;\r\n this._segments[pointIndex].length.value = length;\r\n if (this._segments[pointIndex].thickness) {\r\n this._segments[pointIndex].thickness.pos.x = midPoint.x;\r\n this._segments[pointIndex].thickness.pos.y = midPoint.y;\r\n }\r\n }\r\n };\r\n\r\n initPoint = (point, layout = 'white-circle') => {\r\n point.init(this);\r\n point.layout = layout;\r\n };\r\n\r\n getOffset = () => {\r\n return this.line.getOffset();\r\n };\r\n\r\n moveMitered = (xDiff = 0, yDiff = 0) => {\r\n for (let miteredPoint of this.miteredPoints ) {\r\n miteredPoint.x -= xDiff;\r\n miteredPoint.y -= yDiff;\r\n }\r\n this.heightNumberText.pos.x -= xDiff;\r\n this.heightNumberText.pos.y -= yDiff;\r\n for (let segment of this._segments ) {\r\n segment.length.pos.x -= xDiff;\r\n segment.length.pos.y -= yDiff;\r\n if (segment.thickness) {\r\n segment.thickness.pos.x -= xDiff;\r\n segment.thickness.pos.y -= yDiff;\r\n }\r\n }\r\n };\r\n\r\n setNewLineWidth = () => {\r\n this.updateCornerPoints();\r\n this.updateSectionHeightPos();\r\n this.updateSegmentsLength();\r\n this.updateSegmentThicknessPos();\r\n };\r\n\r\n updateCornerPoints = () => {\r\n this.miteredPoints[0].x = this.line.from.x\r\n this.miteredPoints[0].y = this.line.from.y\r\n this.miteredPoints[this.miteredPoints.length - 1].x = this.line.to.x\r\n this.miteredPoints[this.miteredPoints.length - 1].y = this.line.to.y\r\n };\r\n\r\n updateSectionHeightPos = () => {\r\n const midPoint = getMidPoint(this.line.from, this.line.to);\r\n this.heightNumberText.pos.x = midPoint.x;\r\n this.heightNumberText.pos.y = midPoint.y;\r\n };\r\n\r\n updateSegmentsLength = () => {\r\n for (let segmentIndex in this._segments ) {\r\n if (this._segments.hasOwnProperty(segmentIndex)) {\r\n const midPoint = getMidPoint(this.miteredPoints[+segmentIndex], this.miteredPoints[+segmentIndex + 1]);\r\n let length = getPointDistance(this.miteredPoints[+segmentIndex], this.miteredPoints[+segmentIndex + 1]);\r\n this._segments[+segmentIndex].length.pos.x = midPoint.x;\r\n this._segments[+segmentIndex].length.pos.y = midPoint.y;\r\n this._segments[+segmentIndex].length.value = length;\r\n this.setSegmentLength(length, this._segments[segmentIndex], this);\r\n }\r\n }\r\n };\r\n\r\n updateSegmentThicknessPos = () => {\r\n for (let segmentIndex in this._segments ) {\r\n if (this._segments.hasOwnProperty(segmentIndex) && this.miteredPoints[+segmentIndex + 1]) {\r\n const midPoint = getMidPoint(this.miteredPoints[+segmentIndex], this.miteredPoints[+segmentIndex + 1]);\r\n if (this._segments[+segmentIndex].thickness) {\r\n this._segments[+segmentIndex].thickness.pos.x = midPoint.x;\r\n this._segments[+segmentIndex].thickness.pos.y = midPoint.y;\r\n }\r\n }\r\n }\r\n };\r\n\r\n setSegmentLengthFromNumberValue = (value, numberText) => {\r\n value = Math.round10(+value / Config.getMeasureMultiplier(), -3);\r\n let miteredSection = numberText.parent;\r\n let miteredSegments = miteredSection.getSegments();\r\n let miteredSegment = miteredSegments.find(seg => seg.length === numberText);\r\n\r\n this.setSegmentLength(value, miteredSegment, miteredSection);\r\n };\r\n\r\n setSegmentLength = (value, segment, miteredSection) => {\r\n //update segment and maxSegment priority\r\n segment.setPriority(++this.state.maxSegmentPriority);\r\n this.resizeMiteredSegment(value, segment);\r\n\r\n // we need to recreate slab shape so we delete existing it\r\n sqftSlabManager.deleteSlabBacksplashByLine(this.line);\r\n if (this.type === MITERED_OVERLAY_TYPE.mitered) {\r\n workspace.miteredController.updateSection(miteredSection);\r\n } else if (this.type === MITERED_OVERLAY_TYPE.underlayment) {\r\n workspace.underlaymentController.updateSection(miteredSection);\r\n }\r\n };\r\n\r\n setSegmentHeightFromNumberValue = (value, numberText) => {\r\n const newValue = +value\r\n let miteredSection = numberText.parent;\r\n this.setSegmentHeight(newValue, miteredSection);\r\n };\r\n\r\n setSegmentHeight = (newValue, miteredSection) => {\r\n let segments = miteredSection.getSegments();\r\n sqftConfig.measureUnit === \"Metric\"\r\n ? miteredSection.state.heightMetric = newValue\r\n : miteredSection.state.height = newValue;\r\n\r\n miteredSection.heightNumberText.value = newValue;\r\n segments.map((segment) => {\r\n segment.height = newValue\r\n });\r\n\r\n // we need to recreate slab shape so we delete existing it\r\n sqftSlabManager.deleteSlabBacksplashByLine(this.line);\r\n if (this.type === MITERED_OVERLAY_TYPE.mitered) {\r\n workspace.miteredController.updateSection(miteredSection);\r\n } else if (this.type === MITERED_OVERLAY_TYPE.underlayment) {\r\n workspace.underlaymentController.updateSection(miteredSection);\r\n }\r\n }\r\n\r\n setSegmentThicknessFromNumberValue = (value, numberText) => {\r\n const newValue = +value\r\n let miteredSection = numberText.parent;\r\n let miteredSegments = miteredSection.getSegments();\r\n let miteredSegment = miteredSegments.find(seg => seg.thickness === numberText);\r\n\r\n this.setSegmentThickness(newValue, miteredSegment, miteredSection);\r\n if (this.type === MITERED_OVERLAY_TYPE.mitered) {\r\n workspace.miteredController.updateSection(miteredSection);\r\n } else if (this.type === MITERED_OVERLAY_TYPE.underlayment) {\r\n workspace.underlaymentController.updateSection(miteredSection);\r\n }\r\n };\r\n\r\n setSegmentThickness = (newValue, miteredSegment, miteredSection) => {\r\n sqftConfig.measureUnit === \"Metric\"\r\n ? miteredSection.state.thicknessMetric = newValue\r\n : miteredSection.state.thickness = newValue;\r\n miteredSegment.thickness.value = newValue;\r\n\r\n if (this.type === MITERED_OVERLAY_TYPE.mitered) {\r\n workspace.miteredController.updateSection(miteredSection);\r\n } else if (this.type === MITERED_OVERLAY_TYPE.underlayment) {\r\n workspace.underlaymentController.updateSection(miteredSection);\r\n }\r\n }\r\n\r\n getSegmentByNumberText = (numberText) => {\r\n let segmentIndex = this._segments.map(seg => seg.length).indexOf(numberText);\r\n\r\n return this._segments[segmentIndex];\r\n };\r\n\r\n getResizedSegmentsWithoutPriority = (segment) => {\r\n let segmentIndex = this._segments.indexOf(segment);\r\n let closestLeft = this._segments[segmentIndex -1 ]\r\n ? this._segments[segmentIndex -1 ].priority === 0\r\n : null;\r\n let closestRight = this._segments[segmentIndex +1 ]\r\n ? this._segments[segmentIndex +1 ].priority === 0\r\n : null;\r\n\r\n return {closestLeft, closestRight};\r\n };\r\n\r\n getResizedSegmentsFreeSpace = (segment) => {\r\n let segmentIndex = this._segments.indexOf(segment);\r\n let closestLeft = this._segments[segmentIndex -1 ];\r\n let closestRight = this._segments[segmentIndex +1 ];\r\n\r\n return {closestLeft, closestRight};\r\n };\r\n\r\n getResizedSegmentsByPriority = (segment) => {\r\n let segmentIndex = this._segments.indexOf(segment);\r\n let minPrevSegment = null;\r\n let minNextSegment = null;\r\n if(this._segments[segmentIndex -1 ]) {\r\n let prevSegments = this._segments.slice(0, segmentIndex);\r\n minPrevSegment = getMinInArray(prevSegments, 'priority');\r\n }\r\n if(this._segments[segmentIndex +1 ]) {\r\n let nextSegments = this._segments.slice(segmentIndex + 1);\r\n minNextSegment = getMinInArray(nextSegments.reverse(), 'priority'); // reverse array to get closest element\r\n }\r\n\r\n return {minPrevSegment, minNextSegment};\r\n };\r\n\r\n movePointWithMouse = (mousePos, point1) => {\r\n let scale = workspace.getScale();\r\n let xDiff = (this.state.mouseDownPosition.x - mousePos.x) / scale;\r\n let yDiff = (this.state.mouseDownPosition.y - mousePos.y) / scale;\r\n\r\n //debugger\r\n yDiff = this.getMousePosPointDiff(yDiff, point1, mousePos, true);\r\n xDiff = this.getMousePosPointDiff(xDiff, point1, mousePos, true);\r\n\r\n this.movePoint(xDiff, yDiff, point1);\r\n this.moveMeasurements(point1);\r\n\r\n this.state.mouseDownPosition.y = mousePos.y;\r\n this.state.mouseDownPosition.x = mousePos.x;\r\n };\r\n\r\n // first resize free space then segments without and with priority\r\n resizeMiteredSegment = (value, segment) => {\r\n if (!this.resizeMiteredSegmentFreeSpace(value, segment)){\r\n if (!this.resizeMiteredSegmentWithoutPriority(value, segment)) {\r\n this.resizeMiteredSegmentWithPriority(value, segment);\r\n }\r\n }\r\n };\r\n\r\n resizeMiteredSegmentWithPriority = (value, segment) => {\r\n let yDiff = 0,\r\n xDiff = 0,\r\n lineDirection = this.line.getLineDirection(),\r\n {minPrevSegment, minNextSegment} = this.getResizedSegmentsByPriority(segment),\r\n segmentIndex = this._segments.indexOf(segment),\r\n minNextSegmentIndex = this._segments.indexOf(minNextSegment),\r\n minPrevSegmentIndex = this._segments.indexOf(minPrevSegment),\r\n\r\n [segmentPoint1, segmentPoint2] = this.getSegmentPointsBySegment(segment),\r\n pointDistance = getPointDistance(segmentPoint1, segmentPoint2);\r\n\r\n // move only to one side with lowest priority\r\n if (minPrevSegment ? minPrevSegment.priority : 0 > minNextSegment ? minNextSegment.priority : 0) {\r\n minPrevSegment = null\r\n } else if(minPrevSegment ? minPrevSegment.priority : 0 < minNextSegment ? minNextSegment.priority : 0) {\r\n minNextSegment = null\r\n }\r\n\r\n let moveAllNextPoints = (xDiff, yDiff) => {\r\n let index = segmentIndex;\r\n while(minNextSegmentIndex > index) {\r\n let [segmentBetweenPoint1, segmentBetweenPoint2] = this.getSegmentPointsBySegment(this._segments[index]);\r\n this.movePoint(xDiff, yDiff, segmentBetweenPoint2, true);\r\n this.moveMeasurements(segmentBetweenPoint2);\r\n index++\r\n\r\n void segmentBetweenPoint1;\r\n }\r\n };\r\n\r\n let moveAllPrevPoints = (xDiff, yDiff) => {\r\n let index = segmentIndex;\r\n while(minPrevSegmentIndex < index) {\r\n let [segmentBetweenPoint1, segmentBetweenPoint2] = this.getSegmentPointsBySegment(this._segments[index]);\r\n this.movePoint(xDiff, yDiff, segmentBetweenPoint1, true);\r\n this.moveMeasurements(segmentBetweenPoint1);\r\n index--\r\n\r\n void segmentBetweenPoint2;\r\n }\r\n };\r\n switch(this.line.getOrientation()) {\r\n case orientation.HORIZONTAL:\r\n if (minPrevSegment && minNextSegment) {\r\n xDiff = lineDirection.newDirection === \"east\" ? value - pointDistance: -value + pointDistance;\r\n moveAllPrevPoints(xDiff / 2);\r\n\r\n xDiff = lineDirection.newDirection === \"east\" ? -value + pointDistance: value - pointDistance;\r\n moveAllNextPoints(xDiff / 2);\r\n } else if(minPrevSegment && !minNextSegment) {\r\n xDiff = lineDirection.newDirection === \"east\" ? value - pointDistance: -value + pointDistance;\r\n moveAllPrevPoints(xDiff);\r\n } else if(!minPrevSegment && minNextSegment) {\r\n xDiff = lineDirection.newDirection === \"east\" ? -value + pointDistance: value - pointDistance;\r\n moveAllNextPoints(xDiff);\r\n }\r\n\r\n break;\r\n case orientation.VERTICAL:\r\n if (minPrevSegment && minNextSegment) {\r\n yDiff = lineDirection.newDirection === \"east\" ? value - pointDistance : -value + pointDistance;\r\n moveAllPrevPoints(xDiff, yDiff / 2);\r\n\r\n yDiff = lineDirection.newDirection === \"east\" ? -value + pointDistance: value - pointDistance;\r\n moveAllNextPoints(xDiff, yDiff / 2);\r\n } else if(minPrevSegment && !minNextSegment) {\r\n yDiff = lineDirection.newDirection === \"east\" ? value - pointDistance : -value + pointDistance;\r\n moveAllPrevPoints(xDiff, yDiff);\r\n } else if(!minPrevSegment && minNextSegment) {\r\n yDiff = lineDirection.newDirection === \"east\" ? -value + pointDistance: value - pointDistance;\r\n moveAllNextPoints(xDiff, yDiff);\r\n }\r\n break;\r\n case orientation.NORTHWEST:\r\n case orientation.SOUTHEAST:\r\n break;\r\n case orientation.NORTHEAST:\r\n case orientation.SOUTHWEST:\r\n break;\r\n }\r\n };\r\n\r\n resizeMiteredSegmentWithoutPriority = (value, segment) => {\r\n let {closestLeft, closestRight} = this.getResizedSegmentsWithoutPriority(segment);\r\n //resize segments only if they are without priority\r\n if(!closestLeft && !closestRight) {\r\n return false\r\n }\r\n\r\n let yDiff = 0,\r\n xDiff = 0,\r\n lineDirection = this.line.getLineDirection(),\r\n [segmentPoint1, segmentPoint2] = this.getSegmentPointsBySegment(segment),\r\n pointDistance = getPointDistance(segmentPoint1, segmentPoint2);\r\n\r\n switch(this.line.getOrientation()) {\r\n case orientation.HORIZONTAL:\r\n if(closestLeft && closestRight) {\r\n xDiff = lineDirection.newDirection === \"east\" ? value - pointDistance: -value + pointDistance;\r\n this.movePoint(xDiff / 2, yDiff, segmentPoint1, true);\r\n this.moveMeasurements(segmentPoint1);\r\n\r\n xDiff = lineDirection.newDirection === \"east\" ? -value + pointDistance: value - pointDistance;\r\n this.movePoint(xDiff / 2, yDiff, segmentPoint2, true);\r\n this.moveMeasurements(segmentPoint2);\r\n\r\n } else if(closestLeft && !closestRight) {\r\n xDiff = lineDirection.newDirection === \"east\" ? value - pointDistance: -value + pointDistance;\r\n this.movePoint(xDiff, yDiff, segmentPoint1, true);\r\n this.moveMeasurements(segmentPoint1);\r\n\r\n } else if(!closestLeft && closestRight) {\r\n xDiff = lineDirection.newDirection === \"east\" ? -value + pointDistance: value - pointDistance;\r\n this.movePoint(xDiff, yDiff, segmentPoint2, true);\r\n this.moveMeasurements(segmentPoint2);\r\n }\r\n\r\n break;\r\n case orientation.VERTICAL:\r\n if(closestLeft && closestRight) {\r\n yDiff = lineDirection.newDirection === \"north\" ? -value + pointDistance: value - pointDistance;\r\n this.movePoint(xDiff / 2, yDiff, segmentPoint1, true);\r\n this.moveMeasurements(segmentPoint1);\r\n\r\n yDiff = lineDirection.newDirection === \"north\" ? value - pointDistance : -value + pointDistance;\r\n this.movePoint(xDiff / 2, yDiff, segmentPoint2, true);\r\n this.moveMeasurements(segmentPoint2);\r\n\r\n } else if(closestLeft && !closestRight) {\r\n yDiff = lineDirection.newDirection === \"north\" ? -value + pointDistance: value - pointDistance;\r\n this.movePoint(xDiff, yDiff, segmentPoint1, true);\r\n this.moveMeasurements(segmentPoint1);\r\n\r\n } else if(!closestLeft && closestRight) {\r\n yDiff = lineDirection.newDirection === \"north\" ? value - pointDistance : -value + pointDistance;\r\n this.movePoint(xDiff, yDiff, segmentPoint2, true);\r\n this.moveMeasurements(segmentPoint2);\r\n }\r\n break;\r\n case orientation.NORTHWEST:\r\n case orientation.SOUTHEAST:\r\n break;\r\n case orientation.NORTHEAST:\r\n case orientation.SOUTHWEST:\r\n break;\r\n }\r\n\r\n return true\r\n };\r\n\r\n resizeMiteredSegmentFreeSpace = (value, segment) => {\r\n let {closestLeft, closestRight} = this.getResizedSegmentsFreeSpace(segment);\r\n //if segments exist skip resizing\r\n if (!closestLeft || !closestRight) {\r\n let yDiff = 0,\r\n xDiff = 0,\r\n lineDirection = this.line.getLineDirection(),\r\n [segmentPoint1, segmentPoint2] = this.getSegmentPointsBySegment(segment),\r\n [smallestLinePoint, biggestLinePoint] = this.line.getLinePointsWithoutCorners(),\r\n pointDistance = getPointDistance(segmentPoint1, segmentPoint2);\r\n\r\n // todo move skip into function\r\n switch(this.line.getOrientation()) {\r\n case orientation.HORIZONTAL:\r\n if(!closestLeft && closestRight) {\r\n xDiff = lineDirection.newDirection === \"east\" ? value - pointDistance: -value + pointDistance;\r\n // skip if there is no whitespace\r\n if(lineDirection.newDirection === \"east\" ){\r\n if(segmentPoint1.x - xDiff <= smallestLinePoint.x || segmentPoint1.x === smallestLinePoint.x){\r\n return false\r\n } else if(Math.round(segmentPoint1.x) === smallestLinePoint.x){\r\n segmentPoint1.x = smallestLinePoint.x;\r\n return false\r\n }\r\n } else {\r\n if(segmentPoint1.x - xDiff >= biggestLinePoint.x || segmentPoint1.x === biggestLinePoint.x){\r\n return false\r\n } else if(Math.round(segmentPoint1.x) === biggestLinePoint.x){\r\n segmentPoint1.x = biggestLinePoint.x;\r\n return false\r\n }\r\n }\r\n this.movePoint(xDiff, yDiff, segmentPoint1, true);\r\n this.moveMeasurements(segmentPoint1);\r\n\r\n } else if(closestLeft && !closestRight) {\r\n xDiff = lineDirection.newDirection === \"east\" ? -value + pointDistance: value - pointDistance;\r\n if(lineDirection.newDirection === \"east\" ){\r\n if(segmentPoint2.x - xDiff >= biggestLinePoint.x){\r\n return false\r\n } else if(Math.round(segmentPoint2.x) === biggestLinePoint.x){\r\n segmentPoint2.x = biggestLinePoint.x;\r\n return false\r\n }\r\n } else {\r\n if(segmentPoint2.x - xDiff <= smallestLinePoint.x){\r\n return false\r\n } else if(Math.round(segmentPoint2.x) === smallestLinePoint.x){\r\n segmentPoint2.x = smallestLinePoint.x;\r\n return false\r\n }\r\n }\r\n this.movePoint(xDiff, yDiff, segmentPoint2, true);\r\n this.moveMeasurements(segmentPoint2);\r\n }\r\n\r\n break;\r\n case orientation.VERTICAL:\r\n if(!closestLeft && closestRight) {\r\n yDiff = lineDirection.newDirection === \"north\" ? -value + pointDistance: value - pointDistance;\r\n // skip if there is no whitespace\r\n if(lineDirection.newDirection === \"north\" ){\r\n if(segmentPoint1.y - yDiff >= biggestLinePoint.y){\r\n return false\r\n } else if(Math.round(segmentPoint1.y) === biggestLinePoint.y){\r\n segmentPoint1.y = biggestLinePoint.y;\r\n return false\r\n }\r\n } else {\r\n if(segmentPoint1.y - yDiff <= smallestLinePoint.y){\r\n return false\r\n } else if(Math.round(segmentPoint1.y) === smallestLinePoint.y){\r\n segmentPoint1.y = smallestLinePoint.y;\r\n return false\r\n }\r\n }\r\n this.movePoint(xDiff, yDiff, segmentPoint1, true);\r\n this.moveMeasurements(segmentPoint1);\r\n\r\n } else if(closestLeft && !closestRight) {\r\n yDiff = lineDirection.newDirection === \"north\" ? value - pointDistance : -value + pointDistance;\r\n // skip if there is no whitespace and fix round position\r\n if(lineDirection.newDirection === \"north\" ){\r\n if(segmentPoint2.y - yDiff <= smallestLinePoint.y){\r\n return false\r\n } else if(Math.round(segmentPoint2.y) === smallestLinePoint.y){\r\n segmentPoint2.y = smallestLinePoint.y;\r\n return false\r\n }\r\n } else {\r\n if(segmentPoint2.y - yDiff >= biggestLinePoint.y){\r\n return false\r\n } else if(Math.round(segmentPoint2.y) === biggestLinePoint.y){\r\n segmentPoint2.y = biggestLinePoint.y;\r\n return false\r\n }\r\n }\r\n this.movePoint(xDiff, yDiff, segmentPoint2, true);\r\n this.moveMeasurements(segmentPoint2);\r\n }\r\n break;\r\n case orientation.NORTHWEST:\r\n case orientation.SOUTHEAST:\r\n break;\r\n case orientation.NORTHEAST:\r\n case orientation.SOUTHWEST:\r\n break;\r\n }\r\n }\r\n\r\n return false\r\n };\r\n\r\n /**\r\n * @deprecated\r\n */\r\n getLeftRightStopPoint = (point1) => {\r\n let o = this.line.getOrientation(),\r\n lineDirection = this.line.getLineDirection(),\r\n toCornerLength = this.line.to.getArcLength() || this.line.get45CornerLegDistance(),\r\n prevLine = this.line.getParent().getPrevLine(this.line),\r\n fromCornerLength = prevLine.to.getArcLength() || prevLine.get45CornerLegDistance(),\r\n toCornerMargin = 0,\r\n fromCornerMargin = 0,\r\n axis = null,\r\n index = this.miteredPoints.indexOf(point1),\r\n stopPointLeft = null,\r\n stopPointRight = null,\r\n biggestLinePoint = null,\r\n smallestLinePoint = null;\r\n\r\n if (o === orientation.VERTICAL) {\r\n toCornerMargin = lineDirection.newDirection === \"north\" ? -fromCornerLength : -toCornerLength;\r\n fromCornerMargin = lineDirection.newDirection === \"north\" ? +toCornerLength : +fromCornerLength;\r\n biggestLinePoint = this.line.getBiggestYPoint().y + toCornerMargin;\r\n smallestLinePoint = this.line.getSmallestYPoint().y + fromCornerMargin;\r\n axis = y;\r\n } else if(o === orientation.HORIZONTAL) {\r\n toCornerMargin = lineDirection.newDirection === \"east\" ? -toCornerLength : -fromCornerLength;\r\n fromCornerMargin = lineDirection.newDirection === \"east\" ? +fromCornerLength : +toCornerLength;\r\n biggestLinePoint = this.line.getBiggestXPoint().x + toCornerMargin;\r\n smallestLinePoint = this.line.getSmallestXPoint().x + fromCornerMargin;\r\n axis = x;\r\n } else {\r\n //todo\r\n }\r\n\r\n void axis; void biggestLinePoint; void smallestLinePoint;\r\n void index; void stopPointLeft; void stopPointRight;\r\n };\r\n\r\n movePoint = (xDiff, yDiff, point1, moveStopPoints = false) => {\r\n let o = this.line.getOrientation(),\r\n lineDirection = this.line.getLineDirection(),\r\n // toCornerLength = this.line.to.getArcLength() || this.line.get45CornerLegDistance(),\r\n // prevLine = this.line.getParent().getPrevLine(this.line),\r\n // fromCornerLength = prevLine.to.getArcLength() || prevLine.get45CornerLegDistance(),\r\n pointIndex = this.miteredPoints.indexOf(point1),\r\n //toCornerMargin = 0,\r\n //fromCornerMargin = 0,\r\n stopPointLeft = null,\r\n stopPointRight = null,\r\n smallestPointStopped = null,\r\n biggestPointStopped = null,\r\n biggestLinePoint = null,\r\n smallestLinePoint = null\r\n ;\r\n\r\n //do'nt move first and las point\r\n if (pointIndex === 0 || pointIndex === this.miteredPoints.length - 1) {\r\n return []\r\n }\r\n\r\n if (o === orientation.VERTICAL) {\r\n //line biggest and smallest points\r\n biggestLinePoint = Object.assign({}, this.line.getBiggestYPoint().pos);\r\n smallestLinePoint = Object.assign({}, this.line.getSmallestYPoint().pos);\r\n // stop point on overline move\r\n if (lineDirection.newDirection === \"north\" ) {\r\n //toCornerMargin = -fromCornerLength;\r\n //fromCornerMargin = +toCornerLength;\r\n //biggestLinePoint.y += toCornerMargin;\r\n //smallestLinePoint.y += fromCornerMargin;\r\n stopPointLeft = this.miteredPoints[pointIndex + 1] ? this.miteredPoints[pointIndex + 1] : smallestLinePoint;\r\n stopPointRight = this.miteredPoints[pointIndex - 1] ? this.miteredPoints[pointIndex - 1] : biggestLinePoint;\r\n } else {\r\n //toCornerMargin = -toCornerLength;\r\n //fromCornerMargin = +fromCornerLength;\r\n //biggestLinePoint.y += toCornerMargin;\r\n //smallestLinePoint.y += fromCornerMargin;\r\n stopPointLeft = this.miteredPoints[pointIndex - 1] ? this.miteredPoints[pointIndex - 1] : smallestLinePoint;\r\n stopPointRight = this.miteredPoints[pointIndex + 1] ? this.miteredPoints[pointIndex + 1] : biggestLinePoint;\r\n }\r\n\r\n [smallestPointStopped, biggestPointStopped] = this.movePointInOrStop(\r\n point1, 'y', yDiff,\r\n biggestLinePoint.y,\r\n smallestLinePoint.y,\r\n stopPointLeft,\r\n stopPointRight,\r\n moveStopPoints\r\n );\r\n } else if (o === orientation.HORIZONTAL) {\r\n //line biggest and smallest points\r\n biggestLinePoint = Object.assign({}, this.line.getBiggestXPoint().pos);\r\n smallestLinePoint = Object.assign({}, this.line.getSmallestXPoint().pos);\r\n // stop point on overline move if it is not mitered then it should'nt go overline\r\n if (lineDirection.newDirection === \"east\" ) {\r\n //toCornerMargin = -toCornerLength;\r\n //fromCornerMargin = +fromCornerLength;\r\n //biggestLinePoint.x += toCornerMargin;\r\n //smallestLinePoint.x += fromCornerMargin;\r\n stopPointLeft = this.miteredPoints[pointIndex - 1] ? this.miteredPoints[pointIndex - 1] : smallestLinePoint;\r\n stopPointRight = this.miteredPoints[pointIndex + 1] ? this.miteredPoints[pointIndex + 1] : biggestLinePoint;\r\n } else {\r\n //toCornerMargin = -fromCornerLength;\r\n //fromCornerMargin = +toCornerLength;\r\n //biggestLinePoint.x += toCornerMargin;\r\n //smallestLinePoint.x += fromCornerMargin;\r\n stopPointLeft = this.miteredPoints[pointIndex + 1] ? this.miteredPoints[pointIndex + 1] : smallestLinePoint;\r\n stopPointRight = this.miteredPoints[pointIndex - 1] ? this.miteredPoints[pointIndex - 1] : biggestLinePoint;\r\n }\r\n // stop point on overline move\r\n [smallestPointStopped, biggestPointStopped] = this.movePointInOrStop(\r\n point1, 'x', xDiff,\r\n biggestLinePoint.x,\r\n smallestLinePoint.x,\r\n stopPointLeft,\r\n stopPointRight,\r\n moveStopPoints\r\n );\r\n } else {\r\n //todo rotation\r\n // const nextLine = parent.getNextLine(self);\r\n // const prevLine = parent.getPrevLine(self);\r\n // moveDiagonalLine(self, nextLine, prevLine, this.state.movePointDistance, yDiff, o);\r\n // this.state.mouseDownPosition = mousePos;\r\n }\r\n\r\n return [smallestPointStopped, biggestPointStopped]\r\n // self.from = lockPointToCanvas(self.from); // removed locking because of this issue http://jira.mozidev.com/browse/QC-802\r\n // self.to = lockPointToCanvas(self.to);\r\n };\r\n\r\n render = (ctx) => {\r\n if (isDisabledInPopupShouldBeHidden() && isDisabledInPopupWithParents(this)) {\r\n return\r\n }\r\n this.renderTopBlueLine(ctx);\r\n this.renderRuler(ctx);\r\n this.renderLetter(ctx);\r\n //this.renderThickness(ctx);\r\n this.renderHeight(ctx);\r\n this.renderSectionIndex(ctx);\r\n // this.renderMeasurements(ctx);\r\n };\r\n\r\n //blue line between middle points\r\n renderTopBlueLine = (ctx) => {\r\n let renderFrom = this.line.calculateRenderPosition(this.miteredPoints[0]),\r\n renderTo = this.line.calculateRenderPosition(this.miteredPoints[this.miteredPoints.length - 1]);\r\n\r\n ctx.beginPath();\r\n ctx.moveTo(renderFrom.x, renderFrom.y);\r\n ctx.lineTo(renderTo.x, renderTo.y);\r\n ctx.lineWidth = 8;\r\n if(EventManager.getCursor().indexOf(\"delete\") >= 0 && this.line.isHovering() && !this.state.isHoveringPoint) {\r\n ctx.strokeStyle = this.design.deleteFillStyle;\r\n } else {\r\n ctx.strokeStyle = this.design.lineTextColor;\r\n }\r\n ctx.stroke();\r\n ctx.closePath();\r\n };\r\n\r\n renderRuler = (ctx) => {\r\n const pointsToRender = this.miteredPoints.map((point) => {\r\n return this.line.calculateRenderPosition(point);\r\n });\r\n\r\n ctx.beginPath();\r\n pointsToRender.forEach((point, index) => {\r\n let next = index + 1;\r\n if (pointsToRender[next]) {\r\n const [parallelPointFrom, parallelPointTo] = getParallelPoints(point, pointsToRender[next], -this.design.rulerMargin);\r\n this.drawArrow( ctx,\r\n parallelPointFrom.x,\r\n parallelPointFrom.y,\r\n parallelPointTo.x,\r\n parallelPointTo.y\r\n );\r\n }\r\n });\r\n\r\n ctx.lineWidth = 1;\r\n ctx.strokeStyle = this.design.lineTextColor;\r\n ctx.stroke();\r\n ctx.closePath();\r\n };\r\n\r\n // text is rendered from number text\r\n renderHeight = (ctx) => {\r\n let [fromPointWithIndent, toPointWithIndent] = this.line.getLinePointsWithoutCorners(),\r\n renderFrom = getPointField(fromPointWithIndent.x, fromPointWithIndent.y, this),\r\n renderTo = getPointField(toPointWithIndent.x, toPointWithIndent.y, this);\r\n\r\n ctx.beginPath();\r\n\r\n const [parallelPointFrom, parallelPointTo] = getParallelPoints(renderFrom, renderTo, -this.design.heightMargin);\r\n this.drawFlatArrow( ctx,\r\n parallelPointFrom.x,\r\n parallelPointFrom.y,\r\n parallelPointTo.x,\r\n parallelPointTo.y\r\n );\r\n\r\n ctx.lineWidth = 1;\r\n ctx.strokeStyle = this.design.lineTextColor;\r\n ctx.stroke();\r\n ctx.closePath();\r\n };\r\n\r\n renderLetter = (ctx) => {\r\n let fontHeight = this.design.fontHeight,\r\n font = fontHeight + \"px \" + this.design.fontFamily;\r\n\r\n ctx.beginPath();\r\n ctx.font = font;\r\n ctx.textAlign = \"center\";\r\n ctx.fillStyle = this.design.fontColor;\r\n\r\n const pointsToRender = this.miteredPoints.map((point) => {\r\n return this.line.calculateRenderPosition(point);\r\n });\r\n\r\n pointsToRender.forEach((point, index) => {\r\n let next = index + 1;\r\n if (pointsToRender[next]) {\r\n const [parallelPointFrom, parallelPointTo] = getParallelPoints(point, pointsToRender[next], -this.design.letterMargin);\r\n let letter = numToLetter(next);\r\n let midPoint = getMidPoint(parallelPointFrom, parallelPointTo);\r\n let mText = ctx.measureText(letter);\r\n ctx.wrapText(letter, midPoint.x, midPoint.y, mText, fontHeight);\r\n }\r\n });\r\n\r\n ctx.lineWidth = 1;\r\n ctx.strokeStyle = this.design.lineTextColor;\r\n ctx.stroke();\r\n ctx.closePath();\r\n };\r\n\r\n renderThickness = (ctx) => {\r\n let lineDirection = this.line.getLineDirection(),\r\n fontHeight = this.design.fontHeight,\r\n font = fontHeight + \"px \" + this.design.fontFamily,\r\n xMarginLine = 0,\r\n yMarginLine = 0,\r\n xMarginImage = 0,\r\n yMarginImage = 0,\r\n xMarginValue = 0,\r\n yMarginValue = 0,\r\n pointField = {};\r\n void xMarginValue;\r\n void yMarginValue;\r\n\r\n switch (lineDirection.orientation) {\r\n case \"horizontal\": {\r\n yMarginLine = (lineDirection.newDirection === \"west\" ? this.design.thicknessMargin : -this.design.thicknessMargin);\r\n\r\n xMarginImage = (lineDirection.newDirection === \"east\" ? -20 : -20);\r\n yMarginImage = (lineDirection.newDirection === \"east\" ? 0 : -30);\r\n\r\n xMarginValue = (lineDirection.newDirection === \"east\" ? 15 : 15);\r\n yMarginValue = (lineDirection.newDirection === \"east\" ? 16 : -14);\r\n\r\n break;\r\n }\r\n case \"vertical\": {\r\n xMarginLine = (lineDirection.newDirection === \"south\" ? this.design.thicknessMargin: -this.design.thicknessMargin);\r\n\r\n xMarginImage = (lineDirection.newDirection === \"north\" ? 0 : -50);\r\n yMarginImage = (lineDirection.newDirection === \"north\" ? -10 : -10);\r\n\r\n xMarginValue = (lineDirection.newDirection === \"north\" ? 35 : -16);\r\n yMarginValue = (lineDirection.newDirection === \"north\" ? 5 : 6);\r\n break;\r\n }\r\n // todo rotation\r\n case \"NORTHWEST\": { break;}\r\n case \"NORTHEAST\": { break;}\r\n case \"SOUTHWEST\": { break;}\r\n case \"SOUTHEAST\": { break;}\r\n default:\r\n break;\r\n }\r\n\r\n ctx.beginPath();\r\n ctx.font = font;\r\n ctx.textAlign = \"center\";\r\n ctx.fillStyle = this.design.fontColor;\r\n\r\n this.miteredPoints.forEach((point, index) => {\r\n let next = index + 1;\r\n if(this.miteredPoints[next]) {\r\n let midPoint = getMidPoint(\r\n this.line.calculateRenderPosition(point),\r\n this.line.calculateRenderPosition(this.miteredPoints[next])\r\n );\r\n let segment = this.getSegmentBetweenPoints(point, this.miteredPoints[next]);\r\n let thicknessValue = segment.thickness.value;\r\n let mText = ctx.measureText(thicknessValue.toString());\r\n\r\n void mText;\r\n //debugger\r\n pointField.x = midPoint.x + xMarginLine;\r\n pointField.y = midPoint.y + yMarginLine;\r\n\r\n // blue line\r\n ctx.moveTo(pointField.x, pointField.y);\r\n ctx.lineTo(pointField.x - xMarginLine, pointField.y - yMarginLine);\r\n\r\n // thickness image\r\n DrawImage.renderImage('thickness', ctx,\r\n pointField.x + xMarginImage,\r\n pointField.y + yMarginImage,\r\n 8,\r\n 8,\r\n true,\r\n true\r\n );\r\n\r\n // thickness value rendered from NumberText\r\n // ctx.wrapText(\r\n // thicknessValue.toString(),\r\n // pointField.x + xMarginValue,\r\n // pointField.y + yMarginValue,\r\n // mText,\r\n // fontHeight\r\n // );\r\n }\r\n });\r\n\r\n ctx.lineWidth = 1;\r\n ctx.strokeStyle = this.design.lineTextColor;\r\n ctx.stroke();\r\n ctx.closePath();\r\n };\r\n\r\n renderSectionIndexOld = (ctx) => {\r\n let lineDirection = this.line.getLineDirection(),\r\n renderTo = this.line.calculateRenderPosition(this.line.to),\r\n renderFrom = this.line.calculateRenderPosition(this.line.from),\r\n fontHeight = this.design.fontHeight - 3,\r\n font = fontHeight + \"px \" + this.design.fontFamily,\r\n xMargin = 0,\r\n yMargin = 0,\r\n xOffset = 15,\r\n yOffset = 15,\r\n xWidth = 0,\r\n yWidth = 0,\r\n xMarginValue = 0,\r\n yMarginValue = 0,\r\n renderPos;\r\n\r\n const scale = Config.scale;\r\n let text = ('0' + this.sectionIndex).slice(-2);\r\n let mText = ctx.measureText(text);\r\n\r\n void xMargin;\r\n void yMargin;\r\n void scale;\r\n ctx.beginPath();\r\n ctx.font = font;\r\n ctx.textAlign = \"center\";\r\n ctx.fillStyle = this.design.fontColor;\r\n\r\n switch (lineDirection.orientation) {\r\n case \"horizontal\": {\r\n //measurement arrow offset\r\n yWidth = -this.design.sectionArrowWidth / 2;\r\n yMargin = (lineDirection.newDirection === \"east\" ? -this.design.sectionArrowWidth : this.design.sectionArrowWidth);\r\n yOffset = 0;\r\n\r\n // text and value\r\n xMarginValue = (lineDirection.newDirection === \"east\" ? -this.design.sectionIndexMargin: -this.design.sectionIndexMargin);\r\n renderPos = (lineDirection.newDirection === \"east\" ? renderFrom: renderTo);\r\n\r\n //render double circle\r\n RenderFigures.renderDoubleCircle(ctx, {x: renderPos.x + xMarginValue, y: renderPos.y + yMarginValue }, 12, 2);\r\n\r\n //render value\r\n ctx.save();\r\n ctx.translate(renderPos.x + xMarginValue, renderPos.y + yMarginValue);\r\n ctx.rotate(-Math.PI / 2);\r\n ctx.fillStyle = \"#fff\";\r\n ctx.wrapText(text, 2, 4, mText, fontHeight); // (text, x, y - additional offset\r\n ctx.restore();\r\n break;\r\n }\r\n case \"vertical\": {\r\n //measurement arrow offset\r\n xWidth = -this.design.sectionArrowWidth / 2;\r\n xMargin = (lineDirection.newDirection === \"north\" ? -this.design.sectionIndexMargin: this.design.sectionIndexMargin);\r\n xOffset = 0;\r\n\r\n // text and value\r\n yMarginValue = (lineDirection.newDirection === \"north\" ? -this.design.sectionIndexMargin : -this.design.sectionIndexMargin);\r\n renderPos = (lineDirection.newDirection === \"north\" ? renderTo: renderFrom);\r\n\r\n //render double circle\r\n RenderFigures.renderDoubleCircle(ctx,\r\n {x: renderPos.x + xMarginValue, y: renderPos.y + yMarginValue },\r\n 12,\r\n 2\r\n );\r\n\r\n //render value\r\n ctx.fillStyle = \"#fff\";\r\n // (text, +1, +4 - additional number offset\r\n ctx.wrapText(text, renderPos.x + xMarginValue + 1, renderPos.y + yMarginValue + 4, mText, fontHeight);\r\n break;\r\n }\r\n // todo rotation\r\n case \"NORTHWEST\": { break;}\r\n case \"NORTHEAST\": { break;}\r\n case \"SOUTHWEST\": { break;}\r\n case \"SOUTHEAST\": { break;}\r\n default:\r\n break;\r\n }\r\n\r\n //render measurement arrow\r\n this.drawFlatArrow( ctx,\r\n renderPos.x + xMarginValue - xWidth + xOffset,\r\n renderPos.y + yMarginValue - yWidth + yOffset,\r\n renderPos.x + xMarginValue + xWidth + xOffset,\r\n renderPos.y + yMarginValue + yWidth + yOffset\r\n );\r\n\r\n ctx.lineWidth = 1;\r\n ctx.strokeStyle = this.design.lineTextColor;\r\n ctx.stroke();\r\n ctx.closePath();\r\n };\r\n\r\n renderSectionIndex = (ctx) => {\r\n let lineDirection = this.line.getLineDirection(),\r\n midPoint = getMidPoint(this.line.to, this.line.from),\r\n fontHeight = this.design.fontHeight - 3,\r\n font = fontHeight + \"px \" + this.design.fontFamily,\r\n xMarginValue = 0,\r\n yMarginValue = 0,\r\n renderPos = this.line.calculateRenderPosition({\r\n pos: {x: midPoint.x, y: midPoint.y}\r\n });\r\n\r\n const scale = Config.scale;\r\n void scale;\r\n\r\n let text = ('0' + this.sectionIndex).slice(-2);\r\n let mText = ctx.measureText(text);\r\n\r\n ctx.beginPath();\r\n ctx.font = font;\r\n ctx.textAlign = \"center\";\r\n ctx.fillStyle = this.design.fontColor;\r\n\r\n switch (lineDirection.orientation) {\r\n case \"horizontal\": {\r\n // text and value\r\n yMarginValue = (lineDirection.newDirection === \"east\" ? -this.design.sectionIndexMargin: this.design.sectionIndexMargin);\r\n\r\n //render double circle\r\n RenderFigures.renderDoubleCircle(ctx, {x: renderPos.x + xMarginValue, y: renderPos.y + yMarginValue }, 12, 2);\r\n\r\n //render value\r\n ctx.fillStyle = \"#fff\";\r\n // (text, +1, +4 - additional number offset\r\n ctx.wrapText(text, renderPos.x + xMarginValue + 1, renderPos.y + yMarginValue + 4, mText, fontHeight);\r\n break;\r\n }\r\n case \"vertical\": {\r\n // text and value\r\n xMarginValue = (lineDirection.newDirection === \"north\" ? -this.design.sectionIndexMargin : this.design.sectionIndexMargin + fontHeight);\r\n\r\n //render double circle\r\n RenderFigures.renderDoubleCircle(ctx, {x: renderPos.x + xMarginValue, y: renderPos.y + yMarginValue }, 12, 2);\r\n\r\n //render value\r\n ctx.save();\r\n ctx.translate(renderPos.x + xMarginValue, renderPos.y + yMarginValue);\r\n ctx.rotate(-Math.PI / 2);\r\n ctx.fillStyle = \"#fff\";\r\n ctx.wrapText(text, 2, 4, mText, fontHeight); // (text, x, y - additional offset\r\n ctx.restore();\r\n break;\r\n }\r\n // todo rotation\r\n case \"NORTHWEST\": { break;}\r\n case \"NORTHEAST\": { break;}\r\n case \"SOUTHWEST\": { break;}\r\n case \"SOUTHEAST\": { break;}\r\n default:\r\n break;\r\n }\r\n\r\n ctx.lineWidth = 1;\r\n ctx.strokeStyle = this.design.lineTextColor;\r\n ctx.stroke();\r\n ctx.closePath();\r\n };\r\n\r\n drawArrow = (context, fromX, fromY, toX, toY) => {\r\n let headLen = 10, // length of head in pixels\r\n dx = toX - fromX,\r\n dy = toY - fromY,\r\n angle = Math.atan2(dy, dx);\r\n\r\n context.moveTo(fromX, fromY);\r\n context.lineTo(toX, toY);\r\n context.lineTo(toX - headLen * Math.cos(angle - Math.PI / 6), toY - headLen * Math.sin(angle - Math.PI / 6));\r\n context.moveTo(toX, toY);\r\n context.lineTo(toX - headLen * Math.cos(angle + Math.PI / 6), toY - headLen * Math.sin(angle + Math.PI / 6));\r\n\r\n context.moveTo(fromX, fromY);\r\n context.lineTo(fromX + headLen * Math.cos(angle - Math.PI / 6), fromY + headLen * Math.sin(angle - Math.PI / 6));\r\n context.moveTo(fromX, fromY);\r\n context.lineTo(fromX + headLen * Math.cos(angle + Math.PI / 6), fromY + headLen * Math.sin(angle + Math.PI / 6));\r\n };\r\n\r\n drawFlatArrow = (context, fromX, fromY, toX, toY) => {\r\n let headLen = 5, // length of head in pixels\r\n dx = toX - fromX,\r\n dy = toY - fromY,\r\n angle = Math.atan2(dy, dx);\r\n\r\n context.moveTo(fromX, fromY);\r\n context.lineTo(toX, toY);\r\n context.lineTo(toX - headLen * Math.cos(angle - Math.PI / 2), toY - headLen * Math.sin(angle - Math.PI / 2));\r\n context.moveTo(toX, toY);\r\n context.lineTo(toX - headLen * Math.cos(angle + Math.PI / 2), toY - headLen * Math.sin(angle + Math.PI / 2));\r\n\r\n context.moveTo(fromX, fromY);\r\n context.lineTo(fromX + headLen * Math.cos(angle - Math.PI / 2), fromY + headLen * Math.sin(angle - Math.PI / 2));\r\n context.moveTo(fromX, fromY);\r\n context.lineTo(fromX + headLen * Math.cos(angle + Math.PI / 2), fromY + headLen * Math.sin(angle + Math.PI / 2));\r\n };\r\n\r\n onMouseMove = (mousePos, e) => {\r\n void e;\r\n for (const point of this.miteredPoints) {\r\n if(this.isMouseOverPoint(mousePos, point)) {\r\n if (this.state.mouseDown) {\r\n this.movePointWithMouse(mousePos, point);\r\n if (this.type === MITERED_OVERLAY_TYPE.mitered) {\r\n workspace.miteredController.updateSection(this);\r\n } else if (this.type === MITERED_OVERLAY_TYPE.underlayment) {\r\n workspace.underlaymentController.updateSection(this);\r\n }\r\n }\r\n\r\n return this.state.mouseDown;\r\n }\r\n }\r\n };\r\n\r\n isMouseOverPoint = (mousePos, point) => {\r\n this.state.isHoveringPoint = !!point.isOverPointField();\r\n // console.log(\"point\", point.id);\r\n // console.log(\"this.state.hoveredPoint\", this.state.hoveredPoint.id);\r\n // console.log(\"mousePos\", this.state.isHoveringPoint);\r\n return this.state.isHoveringPoint || this.state.mouseDown && this.state.hoveredPoint && point.id === this.state.hoveredPoint.id;\r\n };\r\n\r\n onMouseUp = (mousePos, e) => {\r\n void mousePos;\r\n void e;\r\n if(this.state.mouseDown) {\r\n this.state.mouseDown = false;\r\n this.state.mouseDownPosition = null;\r\n }\r\n };\r\n\r\n onMouseDown = (mousePos, e) => {\r\n void e;\r\n const reduxState = store.getState();\r\n const menuOpened = reduxState.sqftMenuState.menuOpened;\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n\r\n if (activeButton === SIDEBAR_NAVIGATION_BUTTONS.edge\r\n || activeButton === SIDEBAR_BUTTONS_MENU.delete\r\n ) {\r\n //do nothing if we want to remove or add edge\r\n } else if (this.state.isHoveringPoint) {\r\n this.state.mouseDown = true;\r\n // this.state.movePointDistance = getPointDistance(this.from, this.to);\r\n //todo move point\r\n this.state.mouseDownPosition = mousePos;\r\n for (const point in this.miteredPoints) {\r\n if (this.miteredPoints[point].isOverPointField(mousePos)) {\r\n this.state.hoveredPoint = this.miteredPoints[point]\r\n }\r\n }\r\n\r\n return true;\r\n } else if (this.line.isHovering() && menuOpened === SIDEBAR_NAVIGATION_BUTTONS.mitered) {\r\n //console.log('line is hovering');\r\n let [closest, secondPoint, isPrev] = this.getPointBetweenCords(mousePos);\r\n let newPoint = this.addPointBetweenPoints(closest, secondPoint, isPrev);\r\n if (isPrev) {\r\n this.addMeasurementBetweenPoints(newPoint, secondPoint);\r\n this.addMeasurementBetweenPoints(closest, newPoint);\r\n } else {\r\n this.addMeasurementBetweenPoints(closest, newPoint);\r\n this.addMeasurementBetweenPoints(newPoint, secondPoint);\r\n }\r\n this.removeMeasurementBetweenPoints(closest, secondPoint, isPrev);\r\n\r\n workspace.miteredController.updateSection(this);\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n onMouseLeave = () => {\r\n this.state.isHoveringPoint = false;\r\n this.state.mouseDown = false;\r\n this.state.hoveredPoint = null;\r\n }\r\n}\r\n","import workspace from \"../../core/workspace\";\r\nimport store from \"./../../../../../../store\";\r\nimport SlabWorkspace from \"./slabWorkspace\";\r\nimport {getPointField} from \"../../../../helpers/sqftHelper\";\r\nimport sqftShape from \"../shapes/sqftShape\";\r\nimport {isDisabledInPopupShouldBeHidden, SHAPE_PART_ID, SQFT_MODE} from \"../../../../constants\";\r\nimport config from \"../../store/sqftConfig\";\r\nimport workspaceControllers from \"../../store/workspaceControllers\";\r\nimport RenderFigures from \"../../helpers/renderFigures\";\r\nimport RenderParts from \"../../helpers/renderParts\";\r\n\r\nexport const renderSlabRightPart = (ctx, isFullRender = false) => {\r\n let slabState = store.getState().sqftSlabState;\r\n let croppedImages = slabState.croppedSlabImages;\r\n let scale = workspace.getScale();\r\n let slabWorkspacePos = SlabWorkspace.getCenter();\r\n let shapes = workspace.getShapes();\r\n\r\n //this will render shapes without rotation\r\n shapes.forEach((shape) => {\r\n if (!(shape instanceof sqftShape)\r\n || shape.rotatedDegreesSlab !== 0\r\n || (isDisabledInPopupShouldBeHidden() && shape.isDisabledInPopup)\r\n || shape.partId === SHAPE_PART_ID.slabPlaceHolder\r\n ) {\r\n return\r\n }\r\n let pos = shape.getRegularPosition();\r\n //let posSlab = shape.shapeSlab.__absolutePos ? shape.getSlabAbsolutePosition() : shape.getSlabPosition();\r\n let posSlab = shape.shapeSlab.getPosition();\r\n let shapeRegularPointField = getPointField(pos.x, pos.y, workspace);\r\n let shapeSlabPointField = getPointField(posSlab.x, posSlab.y, SlabWorkspace);\r\n\r\n let staticOffset = {\r\n x: shapeRegularPointField.x - slabWorkspacePos.x + ctx.canvas.width / 2,\r\n y: shapeRegularPointField.y - slabWorkspacePos.y\r\n };\r\n ctx.save();\r\n !isFullRender ? clearSlabLeftPart(ctx) : null;\r\n\r\n //render borders only for core shapes\r\n ctx.beginPath();\r\n if (shape.partId === SHAPE_PART_ID.seamPiece) {\r\n shape.shapeSlab.renderLinesWithoutStroke(ctx, staticOffset, SQFT_MODE.regular);\r\n ctx.lineWidth = 0;\r\n ctx.strokeStyle = 'rgba(0,0,0,0.0)';\r\n } else {\r\n shape.shapeSlab.renderLinesWithoutStroke(ctx, staticOffset, SQFT_MODE.regular);\r\n //if (isFullRender) {\r\n // console.log(\"scale\", scale);\r\n // console.log(\"ctx.canvas.width / 2\", ctx.canvas.width / 2);\r\n // console.log(\"pos\", pos);\r\n // console.log(\"slabWorkspacePos2\", slabWorkspacePos);\r\n // console.log(\"offset = workspace.getOffset();\", workspace.getOffset());\r\n // console.log(\"shapeRegularPointField\", shapeRegularPointField);\r\n // console.log(\"staticOffset\", staticOffset);\r\n //}\r\n }\r\n ctx.closePath();\r\n ctx.stroke();\r\n\r\n //do not clip shapes with seam (clip only children)\r\n if (shape.isWithShapePieces()) {\r\n ctx.restore();\r\n return\r\n }\r\n ctx.clip();\r\n for (let slabIndex in croppedImages) {\r\n let movableImage = croppedImages[slabIndex];\r\n const movableImagePosition = movableImage.getPosition();\r\n let movableImagePointField = getPointField(movableImagePosition.x, movableImagePosition.y, SlabWorkspace);\r\n let movableImageSize = movableImage.getSize();\r\n\r\n // ctx.translate(\r\n // staticOffset.x + (movableImagePointField.x - shapeSlabPointField.x),\r\n // staticOffset.y + (movableImagePointField.y - shapeSlabPointField.y)\r\n // );\r\n // console.log(\"movableImagePosition\", movableImagePosition);\r\n // console.log(\"movableImage pos\", movableImage.pos);\r\n // console.log(\"posSlab\", posSlab);\r\n // console.log(\"pos\", pos);\r\n // console.log(\"shapeRegularPointField\", shapeRegularPointField);\r\n // console.log(\"movableImagePointField\", movableImagePointField);\r\n // console.log(\"shapeSlabPointField\", shapeSlabPointField);\r\n\r\n // debugger // eslint-disable-line no-debugger\r\n // ctx.rotate(90 * Math.PI / 180);\r\n\r\n ctx.drawImage(\r\n movableImage.getImage(),\r\n //shape.pos.x * scale, shape.pos.y * scale,\r\n ctx.canvas.width / 2 + (movableImagePointField.x - shapeSlabPointField.x + shapeRegularPointField.x) - slabWorkspacePos.x,\r\n (movableImagePointField.y - shapeSlabPointField.y + shapeRegularPointField.y) - slabWorkspacePos.y,\r\n movableImageSize.width * scale,\r\n movableImageSize.height * scale\r\n );\r\n }\r\n ctx.restore();\r\n });\r\n\r\n //this will render shapes with rotation ( it is translate point field to shape center and rotate it with images)\r\n shapes.forEach((shape) => {\r\n if (!(shape instanceof sqftShape)\r\n || shape.rotatedDegreesSlab === 0\r\n || (isDisabledInPopupShouldBeHidden() && shape.isDisabledInPopup)\r\n || shape.partId === SHAPE_PART_ID.slabPlaceHolder\r\n ) {\r\n return\r\n }\r\n let pos = shape.getRegularPosition();\r\n let posSlab = shape.shapeSlab.getPosition();\r\n let shapeRegularPointField = getPointField(pos.x, pos.y, workspace);\r\n let shapeSlabPointField = getPointField(posSlab.x, posSlab.y, SlabWorkspace);\r\n\r\n let staticOffset = {\r\n x: shapeRegularPointField.x - slabWorkspacePos.x + ctx.canvas.width / 2,\r\n y: shapeRegularPointField.y - slabWorkspacePos.y\r\n };\r\n\r\n let shapeCenter = shape.getCenter();\r\n //todo check if this can be used instead of shapeCenter()\r\n //let shapeCenterSlab = ShapeHelper.getCenterPoint(points, true);\r\n //void shapeCenterSlab;\r\n\r\n let shapeCenterOffset = {x: 0, y: 0};\r\n shapeCenterOffset.x = shapeCenter.x * scale\r\n shapeCenterOffset.y = shapeCenter.y * scale\r\n\r\n //console.log(\"pos\", pos);\r\n //console.log(\"shapeRegularPointField\", shapeRegularPointField);\r\n //console.log(\"shapeSlabPointField\", shapeSlabPointField);\r\n //console.log(\"shapeCenter\", shapeCenter);\r\n //console.log(\"staticOffset\", staticOffset);\r\n //console.log(\"shapeCenterOffset\", shapeCenterOffset);\r\n ctx.save();\r\n !isFullRender ? clearSlabLeftPart(ctx) : null;\r\n ctx.translate(staticOffset.x + shapeCenterOffset.x, staticOffset.y + shapeCenterOffset.y);\r\n ctx.rotate(shape.rotatedDegreesSlab * Math.PI / 180);\r\n //render borders only for core shapes\r\n ctx.beginPath();\r\n if (shape.partId === SHAPE_PART_ID.seamPiece) {\r\n shape.shapeSlab.renderLinesWithoutStroke(ctx, {x: -shapeCenterOffset.x, y: -shapeCenterOffset.y}, SQFT_MODE.slab);\r\n ctx.lineWidth = 0;\r\n ctx.strokeStyle = 'rgba(0,0,0,0.0)';\r\n //ctx.lineWidth = 3; //test mode\r\n //ctx.strokeStyle = 'rgba(0,0,0)'; //test mode\r\n } else {\r\n shape.shapeSlab.renderLinesWithoutStroke(ctx, {x: -shapeCenterOffset.x, y: -shapeCenterOffset.y}, SQFT_MODE.slab);\r\n }\r\n ctx.closePath();\r\n ctx.stroke();\r\n\r\n //do not clip shapes with seam (clip only children)\r\n if (shape.isWithShapePieces()) {\r\n ctx.restore();\r\n return\r\n }\r\n ctx.clip();\r\n for (let slabIndex in croppedImages) {\r\n let movableImage = croppedImages[slabIndex];\r\n const movableImagePosition = movableImage.getPosition();\r\n let movableImagePointField = getPointField(movableImagePosition.x, movableImagePosition.y, SlabWorkspace);\r\n let movableImageSize = movableImage.getSize();\r\n\r\n ctx.drawImage(\r\n movableImage.getImage(),\r\n -shapeCenterOffset.x + (movableImagePointField.x - shapeSlabPointField.x),\r\n -shapeCenterOffset.y + (movableImagePointField.y - shapeSlabPointField.y),\r\n movableImageSize.width * scale,\r\n movableImageSize.height * scale\r\n // ctx.canvas.width / 2 + (movableImagePointField.x - shapeSlabPointField.x + shapeRegularPointField.x) - slabWorkspacePos.x,\r\n // (movableImagePointField.y - shapeSlabPointField.y + shapeRegularPointField.y) - slabWorkspacePos.y,\r\n // movableImage.pos.x * scale,\r\n // movableImage.pos.y * scale,\r\n );\r\n }\r\n ctx.restore();\r\n renderDevMode(ctx, shape);\r\n });\r\n};\r\n\r\nconst clearSlabLeftPart = (ctx) => {\r\n ctx.beginPath();\r\n ctx.rect(ctx.canvas.width / 2, 0, ctx.canvas.width, ctx.canvas.height);\r\n ctx.closePath();\r\n ctx.stroke();\r\n ctx.clip();\r\n}\r\n\r\nexport const renderSlabWorkspace = (ctx) => {\r\n drawSlabRightPart(ctx);\r\n drawSlabMidDivider(ctx);\r\n};\r\n\r\nconst drawSlabMidDivider = (ctx) => {\r\n ctx.beginPath();\r\n ctx.strokeStyle = '#d5d5d5';\r\n ctx.lineWidth = 1;\r\n ctx.moveTo(SlabWorkspace.getRightPartWidth(ctx), 0);\r\n ctx.lineTo(SlabWorkspace.getRightPartWidth(ctx), ctx.canvas.height);\r\n ctx.stroke();\r\n};\r\n\r\nconst drawSlabRightPart = (ctx) => {\r\n ctx.fillStyle = '#ffffff';\r\n ctx.rect(SlabWorkspace.getRightPartWidth(ctx), 0, ctx.canvas.width, ctx.canvas.height);\r\n ctx.fill();\r\n};\r\n\r\nconst renderDevMode = (ctx, shape) => {\r\n if (config.isDevMode()) {\r\n // render pos\r\n ctx.save();\r\n ctx.beginPath();\r\n let pf = getPointField(shape.pos.x, shape.pos.y);\r\n ctx.arc(pf.x, pf.y, 5, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n ctx.closePath();\r\n\r\n //render shape center\r\n ctx.beginPath();\r\n let shapeCenter = shape.getCenter();\r\n const pos = getPointField(shapeCenter.x, shapeCenter.y, this);\r\n ctx.arc(pos.x, pos.y, 12, 0, 2 * Math.PI);\r\n\r\n ctx.stroke();\r\n ctx.closePath();\r\n ctx.restore();\r\n }\r\n}\r\n\r\nexport const renderMeasurementsAroundSnappedShapes = (ctx) => {\r\n for (const snappedShapeGroup of workspaceControllers.snappedShapeGroups.getResources()) {\r\n const shapes = workspaceControllers.snappedShapeGroups.getSnappedShapes(snappedShapeGroup);\r\n if (shapes.length > 1) { //we will render only shape group if it has two shapes\r\n const measurementPoints = workspaceControllers.snappedShapeGroups.getMeasurementPoints(snappedShapeGroup);\r\n renderMeasurementArrows(ctx, measurementPoints);\r\n renderMeasurementLength(ctx, measurementPoints);\r\n //console.log(\"measurementPoints\", measurementPoints);\r\n\r\n //this is for the test purposes\r\n // const measurementPoints2 = sqftShapeManager.getShapesContourPointsPointField(shapes);\r\n // console.log(\"measurementPoints2\", measurementPoints2);\r\n // renderMeasurementArrows(ctx, measurementPoints2);\r\n // renderMeasurementLength(ctx, measurementPoints2);\r\n }\r\n }\r\n}\r\n\r\nexport const renderMeasurementArrows = (ctx, measurementPoints) => {\r\n RenderFigures.drawArrowsAroundPoints(ctx, measurementPoints);\r\n}\r\n\r\nexport const renderMeasurementLength = (ctx, measurementPoints) => {\r\n RenderParts.drawMeasurementAroundPoints(ctx, measurementPoints);\r\n}\r\n","class SlabAdditionalShape {\r\n line;\r\n backsplashShapeId;\r\n\r\n constructor(line, backsplashShapeId) {\r\n this.line = line;\r\n this.backsplashShapeId = backsplashShapeId;\r\n }\r\n}\r\n\r\nexport default SlabAdditionalShape;\r\n","import workspace from \"./workspace\";\r\nimport sqftShape from \"./shapes/sqftShape\";\r\n//todo sqft-react\r\n// import {setDataToQt} from \"../postMessage\";\r\n\r\nexport default new function() {\r\n\r\n var _self = this;\r\n\r\n this.store = {\r\n shapes: [],\r\n cfg: {},\r\n exportData: null\r\n };\r\n\r\n this.init = function() {\r\n // $('#saveHistory').click(_self.rememberShapes);\r\n // $('#restoreHistory').click(_self.restoreShapesFromHistory);\r\n // $('#consoleShapesFromHistory').click(_self.consoleShapesFromHistory);\r\n window.clearHistory = function() {\r\n this.store.shapes = [];\r\n this.store.exportData = null;\r\n }\r\n };\r\n // this.addEvent = function(eventName, eventData) {\r\n // switch (eventName) {\r\n // case \"newShape\":\r\n // _self.store.shapes.push(eventData);\r\n // break;\r\n // }\r\n // };\r\n this.getHistoryStore = function () {\r\n return _self.store\r\n };\r\n this.rememberShapes = function() {\r\n _self.store.shapes = [];\r\n workspace.getShapes().forEach(function (shape) {\r\n if (!shape.attachedToShape && shape.type !== \"appliances\" && shape.getLines) {\r\n shape.lines = [];\r\n shape.getLines().forEach(function (line) {\r\n line.historyPointFeatures = line.getPointsFeatures();\r\n shape.lines.push(line);\r\n });\r\n }\r\n shape.historyPosition = shape.pos;\r\n _self.store.shapes.push(shape);\r\n });\r\n // console.log('saved', _self.store.shapes);\r\n _self.store.exportData = window.exportData;\r\n };\r\n this.rememberConfig = function(cfg) {\r\n _self.store.cfg = cfg;\r\n };\r\n this.restoreShapesFromHistory = function() {\r\n // console.log('_self.store.shapes', _self.store.shapes);\r\n workspace.removeAllShapes();\r\n _self.store.shapes.forEach(function (newShape) {\r\n if (newShape.lines) {\r\n workspace.addShape(newShape.lines, newShape.shapeType, newShape.historyPosition, newShape.partId, newShape.layoutName);\r\n } else {\r\n workspace.addImage(\r\n newShape.historyProps.image,\r\n newShape.historyProps.width,\r\n newShape.historyProps.height,\r\n newShape.historyProps.attachedTo,\r\n newShape.historyProps.hoverShape,\r\n newShape.historyProps.type,\r\n newShape.historyProps.subType,\r\n newShape.historyProps.historyCallBack,\r\n newShape.historyPosition\r\n );\r\n }\r\n });\r\n _self.store.shapes.forEach(function (newShape) { // go again through all attached shapes and render lines text\r\n if (!newShape.lines) {\r\n newShape.historyProps.historyCallBack()\r\n }\r\n });\r\n // console.log('setted!', workspace.getShapes());\r\n Object.assign(_self.store.exportData, _self.store.cfg);\r\n setDataToQt(_self.store.exportData, true);\r\n setTimeout(function () {\r\n _self.store.exportData = window.exportData;\r\n }, 0);\r\n };\r\n // this.consoleShapesFromHistory = function() {\r\n // console.log('_self.store.shapes', _self.store.shapes);\r\n // };\r\n this.checkForChangesApplied = function () { // this is called after cancel click\r\n // console.log('_self.store.exportData', _self.store.exportData);\r\n // console.log('window.exportData',window.exportData);\r\n let currentShapes = workspace.getShapes();\r\n\r\n //if (_self.store.exportData && (JSON.stringify(_self.store.exportData) !== JSON.stringify(window.exportData))) {\r\n // return true; // check for exportData\r\n //}\r\n\r\n if (currentShapes.length !== _self.store.shapes.length) {\r\n return true; // check for appliances, etc.\r\n }\r\n\r\n let shapesChanged = false;\r\n\r\n workspace.getShapes().forEach(function (shape) { // go through each shape && check for its changes\r\n //if (!shape.attachedToShape && shape.type !== \"appliances\") {\r\n if (shape instanceof sqftShape) {\r\n\r\n var historyShape = _self.store.shapes.find(function (historyShapetoFind) {\r\n return historyShapetoFind.id === shape.id\r\n });\r\n\r\n if (!historyShape) {\r\n shapesChanged = true\r\n }\r\n\r\n shape.getLines().forEach(function (line, index) {\r\n if (historyShape && historyShape.lines && historyShape.lines[index] && JSON.stringify(line.getPointsFeatures()) !== JSON.stringify(historyShape.lines[index].historyPointFeatures)) {\r\n shapesChanged = true\r\n }\r\n });\r\n }\r\n });\r\n\r\n return shapesChanged || false\r\n }\r\n};\r\n","import $ from 'jquery';\r\nimport clone from 'lodash/clone';\r\n\r\nimport eventManager from \"../../store/sqftEventManager\";\r\nimport config from \"../../store/sqftConfig\";\r\nimport workspace from \"../workspace\";\r\nimport {inchesToMm} from \"../../../../helpers/sqftHelper\";\r\nimport SqftStore from \"../../store/sqftStore\";\r\nimport {iconplusPurple} from \"../../../../assetsSQFT\";\r\nimport sqftShapeManager from \"../../store/sqftShapeManager\";\r\n//import TranslatesProvider from \"./../../translatesProvider\";\r\n\r\nexport default new function() {\r\n //private variables\r\n var self = this,\r\n //cursorImage = null,\r\n elements = {\r\n navRadius: $('#nav_radius'),\r\n overlay: $('#radius-overlay'),\r\n arcButtons: $('.lightbox-option-rectangular[data-arc]'),\r\n angleButtons: $('.lightbox-option-rectangular[data-angle]'),\r\n designDefault: $('#design-default'),\r\n closeButton: $('#radius-overlay .lightbox-cancel-button'),\r\n cornerContainer: $('#corner'),\r\n radiusContainer: $('#radius'),\r\n measure: $('[data-measure]')\r\n },\r\n maxRadius = 18,\r\n corners = 60;\r\n\r\n this.clickedBackSplashButton = null;\r\n this.cursorImage = null;\r\n this.isWaitingToRestoreCursor = false;\r\n\r\n //public variables\r\n this.arcLength = 0;\r\n this.angle = 0;\r\n //private events\r\n\r\n this.angleButton_onClick = function() {\r\n self.deregisterEvents();\r\n SqftStore.radius.arcLength = 0;\r\n SqftStore.radius.angle = $(this).attr('data-angle');\r\n self.handleButtonClick($(this));\r\n $('.lightbox-option-selected').removeClass('lightbox-option-selected');\r\n $(this).addClass('lightbox-option-selected');\r\n };\r\n this.arcButton_onClick = function() {\r\n this.deregisterEvents();\r\n SqftStore.radius.angle = 0;\r\n SqftStore.radius.arcLength = $(this).attr('data-arc');\r\n self.handleButtonClick($(this));\r\n $('.lightbox-option-selected').removeClass('lightbox-option-selected');\r\n $(this).addClass('lightbox-option-selected');\r\n };\r\n\r\n this.handleButtonClick = function(item) {\r\n\r\n self.setHighlighting();\r\n self.clickedEdgeButton = item;\r\n self.setCursorImage();\r\n\r\n if (window.innerWidth < 991 && !config.tutorialIsRunning) {\r\n //Menu.hideSideBarContent(); // hide sidebar menu\r\n }\r\n\r\n // elements.overlay.hide();\r\n };\r\n\r\n this.deregisterEvents = function() {\r\n eventManager.resetCursor(self);\r\n eventManager.removeEvent(self);\r\n elements.navRadius.removeClass('steps-scope-config-button-selected');\r\n // QCDES-1139 fix\r\n //SqftStore.radius.arcLength = 0;\r\n //SqftStore.radius.angle = 0;\r\n config.highlight.points = false;\r\n };\r\n\r\n function createRadiusElements() {\r\n let html = '';\r\n for (let i = 1; i <= maxRadius; i++) {\r\n html +=\r\n ('
    \\n' +\r\n '
    \\n' +\r\n ' \\n' +\r\n '
    ' +\r\n ' '+ i +'\" ' +\r\n ' '+ TranslatesProvider.translate(\"sqft.navigation.radius.radiusItem\") + '' +\r\n '
    \\n' +\r\n '
    ');\r\n }\r\n elements.radiusContainer.html(html);\r\n elements.arcButtons = $('.lightbox-option-rectangular[data-arc]');\r\n }\r\n\r\n function createCornerElements() {\r\n let html = '';\r\n for (let i = 3; i <= corners; i += 3) {\r\n html += ('
    \\n' +\r\n '
    \\n' +\r\n ' \\n' +\r\n ' \\n' +\r\n '
    \\n' +\r\n '
    '+ i +'\"
    \\n' +\r\n '
    ');\r\n }\r\n elements.cornerContainer.html(html);\r\n elements.angleButtons = $('.lightbox-option-rectangular[data-angle]');\r\n }\r\n this.onMeasureUnitChange = () => {\r\n //nodes.buttons.radius\r\n elements.arcButtons.each(function () {\r\n switch(config.measureUnit) {\r\n case \"Metric\":\r\n $(this).find('[data-value=\"radius\"]').html(inchesToMm(+this.dataset.arc) + config.getMeasureUnitPostfix());\r\n break;\r\n case \"Imperial\":\r\n default:\r\n $(this).find('[data-value=\"radius\"]').html(+this.dataset.arc + config.getMeasureUnitPostfix());\r\n }\r\n });\r\n\r\n // nodes.buttons.corner\r\n elements.angleButtons.each(function () {\r\n switch(config.measureUnit) {\r\n case \"Metric\":\r\n $(this).find('[data-value=\"corner\"]').html(inchesToMm(+this.dataset.angle) + config.getMeasureUnitPostfix());\r\n break;\r\n case \"Imperial\":\r\n default:\r\n $(this).find('[data-value=\"corner\"]').html(+this.dataset.angle + config.getMeasureUnitPostfix());\r\n }\r\n });\r\n\r\n elements.measure.each(function () {\r\n switch(config.measureUnit) {\r\n case \"Metric\":\r\n $(this).html($(this).data('metric'));\r\n break;\r\n case \"Imperial\":\r\n default:\r\n $(this).html($(this).data('imperial'));\r\n }\r\n });\r\n };\r\n\r\n this.setCursorImage = function () {\r\n var item = self.clickedEdgeButton, // remember it to restore after moving canvas cursor switch\r\n bounds = 18,\r\n imgWidth = bounds,\r\n imgHeight = bounds;\r\n\r\n var domImg = document.createElement('img');\r\n domImg.crossOrigin = \"Anonymous\";\r\n\r\n var $img = $(domImg);\r\n $img.css({\r\n position: 'absolute',\r\n width: '1px',\r\n height: '1px'\r\n });\r\n $img.attr({\r\n 'data-id': item//.attr('data-id')\r\n });\r\n $img.on('load', function() {\r\n setImage(domImg);\r\n });\r\n $img.appendTo($('body'));\r\n $img.attr('src', iconplusPurple);\r\n\r\n function setImage(domImg) {\r\n var bounds = 18;\r\n let ratio;\r\n if(imgWidth > imgHeight) {\r\n ratio = imgHeight / imgWidth;\r\n imgWidth = bounds;\r\n imgHeight = bounds * ratio;\r\n } else {\r\n ratio = imgWidth / imgHeight;\r\n imgHeight = bounds;\r\n imgWidth = bounds * ratio;\r\n }\r\n eventManager.setCursor('edge-select', self, true);\r\n self.cursorImage = { image: domImg, width: imgWidth, height: imgHeight };\r\n self.registerEvents();\r\n }\r\n };\r\n\r\n this.setHighlighting = function () {\r\n eventManager.stealCursor(true); // remove all other cursors\r\n workspace.setAllowEdges(false); // removing sizing lines\r\n workspace.setAllowBumpoutEdges(false); // removing bumpout lines\r\n workspace.setAllowMiteredEdges(false); // removing mitered lines\r\n config.highlight.lines = false; // disable lines highlighting\r\n config.highlight.type = ''; // disable lines highlighting\r\n config.highlight.id = null; // disable lines highlighting\r\n };\r\n\r\n this.registerEvents = function() {\r\n eventManager.setCursor('radius-select', self, true);\r\n config.highlight.points = true;\r\n eventManager.addEvent(\r\n eventManager.events.RENDER,\r\n self.renderCursor,\r\n self,\r\n eventManager.priorities.OVERALL\r\n );\r\n eventManager.addEvent(\r\n eventManager.events.MOUSE_DOWN,\r\n self.onMouseDown,\r\n self,\r\n eventManager.priorities.OVERALL\r\n );\r\n eventManager.addEvent(\r\n eventManager.events.MOUSE_UP,\r\n self.onMouseUp,\r\n self,\r\n eventManager.priorities.OVERALL\r\n );\r\n };\r\n this.onMouseDown = function() {\r\n let hoverPoint = workspace.getHoverPoint();\r\n //let hoverShape = workspace.getHoverShape();\r\n let hoverMiteredPoint = workspace.getHoverMiteredPoint();\r\n\r\n //update hoverPoint from miteredHoverPoint\r\n if(hoverMiteredPoint) {\r\n let miteredOverlay = hoverMiteredPoint.getParent();\r\n if(\r\n miteredOverlay && miteredOverlay.line && miteredOverlay.line.to\r\n && (miteredOverlay.line.to.isOverPointField()\r\n || miteredOverlay.line.from.isOverPointField())\r\n ){\r\n hoverPoint = miteredOverlay.line.to.isOverPointField() || miteredOverlay.line.from.isOverPointField()\r\n }\r\n }\r\n\r\n if (hoverPoint) {\r\n return true; // return true; // block all mouse-down events // we need dragging workspace\r\n }\r\n };\r\n this.checkForRestoreCursor = function() {\r\n if (self.isWaitingToRestoreCursor) {\r\n self.isWaitingToRestoreCursor = false;\r\n eventManager.removeEvent(self, eventManager.events.MOUSE_UP); //remove mouse up, it will be added in setCursorImage\r\n self.setHighlighting();\r\n self.setCursorImage();\r\n }\r\n };\r\n this.onMouseUp = function(mousePos) {\r\n void mousePos;\r\n self.checkForRestoreCursor();\r\n\r\n let hoverPoint = workspace.getHoverPoint(),\r\n hoverShape = workspace.getHoverShape(),\r\n hoverSegmentCorner;\r\n\r\n //click on purple line\r\n if (hoverShape) {\r\n hoverSegmentCorner = hoverShape.getHoverSegmentCorner();\r\n if (hoverSegmentCorner) {\r\n hoverPoint = hoverSegmentCorner.line.to\r\n }\r\n }\r\n\r\n if (hoverPoint && !hoverPoint.angleIsChanged && hoverPoint.isFitSize()) {\r\n if (SqftStore.radius.arcLength) {\r\n hoverPoint.arcLength = SqftStore.radius.arcLength;\r\n hoverPoint.featureId = clone(SqftStore.radius.featureId);\r\n hoverPoint.angle = 0;\r\n\r\n } else if (SqftStore.radius.angle) {\r\n hoverPoint.angle = SqftStore.radius.angle;\r\n hoverPoint.featureId = clone(SqftStore.radius.featureId);\r\n hoverPoint.arcLength = 0;\r\n }\r\n //update mitered points\r\n sqftShapeManager.updateMinMaxMiteredPoints(hoverShape);\r\n //reset seam shape changes in the slab mode\r\n sqftShapeManager.resetShapeChangesInTheSlabMode(hoverShape);\r\n //update hoverMiteredPoint position\r\n let hoverMiteredPoint = workspace.getHoverMiteredPoint();\r\n if (hoverMiteredPoint) {\r\n hoverMiteredPoint.getParent().movePoint(0, 0, hoverMiteredPoint);\r\n hoverMiteredPoint.getParent().moveMeasurements(hoverMiteredPoint);\r\n //todo sqft-react\r\n //Menu.miteredController.updateInfo();\r\n }\r\n return false;\r\n } else if (hoverShape) {\r\n //Menu.openMenu();\r\n //return true; // if click on shape, block reseting cursor, because we still need it http://jira.mozidev.com/browse/QC-956\r\n }/* else {\r\n deregisterEvents();\r\n elements.designDefault.click();\r\n }*/\r\n\r\n };\r\n this.destroy = function(protect, revertBackAfterMouseUp) {\r\n if (revertBackAfterMouseUp) {\r\n eventManager.removeEvent(self, eventManager.events.RENDER); //remove render only, but wait for mouse up to set cursor again\r\n this.isWaitingToRestoreCursor = true;\r\n } else {\r\n this.deregisterEvents();\r\n }\r\n this.hide();\r\n };\r\n this.hide = function(e) {\r\n if(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n //Menu.hideSideBarContent(); // hide sidebar menu\r\n };\r\n\r\n //public functions\r\n this.init = function() {\r\n // elements.navRadius.click(navRadius_onClick);\r\n createRadiusElements();\r\n createCornerElements();\r\n\r\n elements.arcButtons.click(self.arcButton_onClick);\r\n elements.angleButtons.click(self.angleButton_onClick);\r\n };\r\n\r\n this.renderCursor = function(ctx) {\r\n // if((this.arcLength > 0) && ($(window).width() > 768)) {\r\n // var mPos = eventManager.LastKnownMousePos;\r\n // if(mPos) {\r\n // ctx.save();\r\n // ctx.font = \"18px \" + config.activeFontBold;\r\n // ctx.fillStyle = \"#B263A8\";\r\n // ctx.fillText(\"r\" + new Fraction(this.arcLength) + \"\\\"\", mPos.x + (12 * config.scale), mPos.y + 9);\r\n // ctx.restore();\r\n // }\r\n // }\r\n if(self.cursorImage && self.cursorImage.image && (this.arcLength > 0 || this.angle > 0) && ($(window).width() > 768)) {\r\n var mPos = eventManager.LastKnownMousePos;\r\n if(mPos) {\r\n ctx.drawImage(self.cursorImage.image, mPos.x + 10, mPos.y + 10, self.cursorImage.width, self.cursorImage.height);\r\n }\r\n }\r\n };\r\n};\r\n","import {SHAPE_PART_ID, SQFT_APPLIANCES} from \"../constants\";\r\nimport store from \"../../../store\";\r\nimport workspace from \"../components/canvas/core/workspace\";\r\nimport sqftShape from \"../components/canvas/core/shapes/sqftShape\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport MovableImage from \"../components/canvas/core/shapes/movableImage\";\r\nimport {\r\n containsHEBeforeExtension,\r\n findGLBLink,\r\n get3dURLsForFeature,\r\n getCategoryFromMetadata,\r\n getThirdPartyAR3DMetaData,\r\n getUrlMatchingByColor,\r\n isHoodShape,\r\n} from \"./sqft3dArHelper\";\r\nimport workspaceControllers from \"../components/canvas/store/workspaceControllers\";\r\nimport sqftShapeManager from \"../components/canvas/store/sqftShapeManager\";\r\nimport {featureThumbnailUrl} from \"../../../misc/helpers\";\r\nimport {checkIfLookFeaturesReceived} from \"../../../api/look-api\";\r\n// import Misc from \"../../../misc/misc\";\r\n// import {isTouchDevice} from \"../../../misc/utils\";\r\n\r\nexport const DEFAULT_COUNTERTOP_HEIGHT = 34;\r\nexport const DEFAULT_BACKSPLASH_HEIGHT = 18;\r\nexport const MIN_CABINET_HOOD_HEIGHT = 30;\r\n\r\nexport class CabinetsSet {\r\n\r\n /**\r\n * NOT USED\r\n * @param displayDoorsOnly\r\n * @param shouldDisplayFramedDoors\r\n * @return {{doors_only: boolean, positions, should_display_framed_doors: boolean}}\r\n */\r\n static prepareCabinetsSet(displayDoorsOnly = false, shouldDisplayFramedDoors = false) {\r\n const cabinetPositions = CabinetsSet.prepareCabinetsPositions();\r\n const countertopPositions = CountertopPositions.prepareCountertopPositions();\r\n const wallPositions = WallPositions.prepareWallPositions();\r\n const cabinetSet = {\r\n \"doors_only\": displayDoorsOnly,\r\n \"should_display_framed_doors\": shouldDisplayFramedDoors,\r\n \"positions\": [...cabinetPositions, ...countertopPositions, ...wallPositions]\r\n }\r\n\r\n // add countertop if bottom_cabinets exist\r\n // if (cabinetSet.positions.some(position => position.partId === SHAPE_PART_ID.lower_cabinet_boxes)) {\r\n // let texture = \"https://static6.depositphotos.com/1031174/647/i/450/depositphotos_6477080-stock-photo-grungy-background.jpg\";\r\n // const state = store.getState();\r\n // if (state.sqftState.selectedCountertop) {\r\n // const layout = getCurrentLayout();\r\n // const countertopFeature = layout.getFeatureById(state.sqftState.selectedCountertop, true);\r\n // if (countertopFeature && countertopFeature.dbFeature.thirdPartyAR3DUrls) {\r\n // const URLByFeatureName = get3dURLsForFeature(countertopFeature);\r\n // texture = URLByFeatureName ? URLByFeatureName : countertopFeature.dbFeature.thirdPartyAR3DUrls[0]\r\n // }\r\n // }\r\n //\r\n // cabinetSet.countertop = {\r\n // \"main\": \"https://quotecountertops.com/video/sqft/cabinets/Quarter Round_Main Body.glb\",\r\n // \"edge\": \"https://quotecountertops.com/video/sqft/cabinets/Quarter Round_Edge.glb\",\r\n // \"corner\": \"https://quotecountertops.com/video/sqft/cabinets/Quarter Round_Corner.glb\",\r\n // \"texture\": texture\r\n // }\r\n // }\r\n\r\n return cabinetSet\r\n }\r\n\r\n static async prepareCabinetsPositions(shouldDisplayFramedDoors = false) {\r\n const layout = getCurrentLayout();\r\n const shapes = workspace.getShapes();\r\n\r\n const results = [];\r\n for (const shape of shapes) {\r\n if (shape instanceof sqftShape) {\r\n let absolutePos = shape.shapeAbsolute.getAbsolutePosition();\r\n let shapePosition = absolutePos ? absolutePos : shape.getPosition();\r\n\r\n const relatedParentFeature = layout.getFeatureById(shape.relatedParentFeatureId, true);\r\n if (relatedParentFeature) {\r\n let shapeDbFeature = relatedParentFeature.getFeatureRelatedFeatures().find(relatedFeature => relatedFeature.id === shape.featureId);\r\n if (!shapeDbFeature) {\r\n const shapeFeature = layout.getFeatureById(shape.featureId, true);\r\n if (shapeFeature) {\r\n shapeDbFeature = shapeFeature.dbFeature;\r\n }\r\n }\r\n results.push(CabinetsSet.prepareRegularCabinetSet(shape, shapePosition, shapeDbFeature, relatedParentFeature, shouldDisplayFramedDoors));\r\n } else {\r\n console.log(\"3d model cannot be prepared, its parent not found shape.relatedParentFeatureId:\", shape.relatedParentFeatureId);\r\n }\r\n } else if (shape instanceof MovableImage) {\r\n let absolutePos = shape.shapeAbsolute.getAbsolutePosition();\r\n const shapePosition = absolutePos ? absolutePos : shape.getPosition();\r\n const featureGroup = layout.getFeatureGroupByPartId(shape.subType);\r\n if (!featureGroup.allFeaturesReceived && !featureGroup.requestInProgress) {\r\n await checkIfLookFeaturesReceived(featureGroup);\r\n }\r\n const shapeFeature = layout.getFeatureById(shape.featureId);\r\n\r\n if (shapeFeature) {\r\n results.push(CabinetsSet.prepareImageCabinetSet(shape, shapePosition, shapeFeature));\r\n }\r\n }\r\n }\r\n\r\n return results.filter(cabinetSet => cabinetSet !== null);\r\n }\r\n\r\n /**\r\n * Adjust model position based on shape position, dimensions, and rotation.\r\n * @returns {Object} Updated model position.\r\n * @param shapePosition\r\n * @param shapeWidth\r\n * @param shapeDepth\r\n * @param rotatedDegrees\r\n */\r\n static adjustApplianceModelPosition(shapePosition, shapeWidth, shapeDepth, rotatedDegrees) {\r\n // Convert degrees to radians and account for the model's initial -90 degree rotation offset\r\n const radians = (Math.PI / 180) * (rotatedDegrees - 90);\r\n\r\n // Calculate the center of the shape, used as the base point for rotation\r\n const centerX = shapePosition.x + shapeWidth / 2;\r\n const centerZ = shapePosition.y + shapeDepth / 2;\r\n\r\n // Calculate the offsets for X and Z axes based on the current rotation angle\r\n const offsetX = (shapeWidth / 2) * Math.cos(radians);\r\n const offsetZ = (shapeDepth / 2) * Math.sin(radians);\r\n\r\n // Apply Z-axis correction dynamically based on the sine of the rotation angle\r\n const zCorrection = shapeDepth * Math.sin(radians);\r\n const xCorrection = (shapeWidth - shapeDepth) / 2 * Math.cos(radians); //7\r\n\r\n // Return the updated position of the model\r\n return {\r\n x: centerX - offsetX + xCorrection, // Corrected X position after rotation\r\n y: shapePosition.y, // Y position remains unchanged (fixed height)\r\n z: centerZ - offsetZ + zCorrection, // Corrected Z position with dynamic adjustment\r\n rotatedDegrees: rotatedDegrees - 90\r\n };\r\n }\r\n\r\n /**\r\n * This function corrects shape position because shape rotation in sqft is made around shape center\r\n * while baking models script rotates shapes around top left corner, so we need to move shape a bit.\r\n * @param rotatedDegrees\r\n * @param position\r\n * @param width\r\n * @param height\r\n * @return {{x: *, y: *}}\r\n */\r\n static getShapeCorrectedPos = (rotatedDegrees, position, width, height) => {\r\n // get radians\r\n let thetaRad = -(rotatedDegrees * Math.PI / 180);\r\n\r\n // left top corner pos (shape pos)\r\n let xInit = position.x;\r\n let yInit = position.y;\r\n\r\n // shape center after rotation\r\n let xCenterBAfterRotation = xInit + width / 2 * Math.cos(thetaRad) - height / 2 * Math.sin(thetaRad);\r\n let yCenterBAfterRotation = yInit + width / 2 * Math.sin(thetaRad) + height / 2 * Math.cos(thetaRad);\r\n\r\n // initial shape center\r\n let xCenterBInitial = xInit + width / 2;\r\n let yCenterBInitial = yInit + height / 2;\r\n\r\n // shape center - shape center after rotation\r\n let deltaX = xCenterBInitial - xCenterBAfterRotation;\r\n let deltaY = yCenterBInitial - yCenterBAfterRotation;\r\n\r\n return {\r\n x: rotatedDegrees > 0\r\n ? position.x + deltaX\r\n : position.x,\r\n y: rotatedDegrees > 0\r\n ? position.y + deltaY\r\n : position.y\r\n }\r\n }\r\n\r\n static prepareRegularCabinetSet = (shape, shapePosition, shapeDbFeature, relatedParentFeature, shouldDisplayFramedDoors) => {\r\n if (shapeDbFeature) {\r\n //console.log(\"shapeDbFeatureFeature.thirdPartyAR3DUrls\", shapeDbFeature.thirdPartyAR3DUrls);\r\n }\r\n\r\n if (!shapeDbFeature || !shapeDbFeature.thirdPartyAR3DUrls) {\r\n return null\r\n }\r\n\r\n const shapeWidth = shape.shapeCabinet ? shape.shapeCabinet.getShapeWidth() : shape.getWidth();\r\n //if it is cube then we can set target width and resize it\r\n const targetWidth = shape.getLines().length === 4 ? shape.getSize().width : shape.getWidth();\r\n const shapeHeight = shape.shapeCabinet ? shape.shapeCabinet.getShapeHeight() : shape.getHeight();\r\n const shapeDepth = shape.shapeCabinet ? shape.shapeCabinet.getShapeDepth() : shape.getDepth();\r\n const targetDepth = shape.getLines().length === 4 ? shape.getSize().height : shape.getHeight();\r\n\r\n //We are sending top left corner position.\r\n const originPointOnWorkspace = shape.getOriginPointOnWorkspace();\r\n const url = getUrlMatchingByColor(shapeDbFeature, relatedParentFeature);\r\n const material_url = getUrlMatchingByColor(relatedParentFeature.dbFeature, relatedParentFeature); //todo remove\r\n const posY = CabinetsHelper.getCabinetPosY(shape, shapeDbFeature, url, shapeHeight);\r\n const shapeLayout = shape.shapeParams.shapeLayout;\r\n const threeDPos = { x: originPointOnWorkspace.x, y: posY, z: originPointOnWorkspace.y };\r\n const handles = CabinetsHelper.getHandles(shape, threeDPos, shape.rotatedDegrees, targetWidth, targetDepth, shapeHeight);\r\n\r\n // log parent feature material\r\n // if (!material_url) {\r\n // console.log(\"material wasn't found for the feature\", shapeDbFeature.id);\r\n // console.log(\"relatedParentFeature.dbFeature.id\", relatedParentFeature.dbFeature.id);\r\n // console.log(\"relatedParentFeature.dbFeature.thirdPartyAR3DUrls\", relatedParentFeature.dbFeature.thirdPartyAR3DUrls);\r\n // }\r\n\r\n return {\r\n \"shapeId\": shape.id,\r\n \"partId\": shape.parentPartId ? shape.parentPartId : shape.partId,\r\n \"is_filler\": shape.shapeParams.isSpacer,\r\n \"x\": threeDPos.x,\r\n \"y\": threeDPos.y, // height between floor and roof. 0 is floor\r\n \"z\": threeDPos.z,\r\n \"rotation\": shape.rotatedDegrees,\r\n \"url\": url,\r\n \"material_url\": material_url,\r\n //\"url\": \"https://master_new_1512.quoteremodel.com/content/Views/visualizers/images/sqft-icons/3d/cabinet.glb\",\r\n \"framed\": shouldDisplayFramedDoors,\r\n \"frame_width\": 0.75,\r\n \"frame_height\": 0.25,\r\n \"target_width\": targetWidth,\r\n \"target_depth\": targetDepth,\r\n \"target_height\": shapeHeight,\r\n \"width\": shapeWidth,\r\n \"height\": shapeHeight, //in sqft wee cabinets from top so we can see this value\r\n \"depth\": shapeDepth,\r\n \"contour_points\": shape.getPointsCoords(),\r\n \"original_points\": shape.getOriginalPointsCoords(),\r\n \"featureId\": shapeDbFeature.id,\r\n \"parentFeatureId\": relatedParentFeature.dbFeature.id,\r\n \"shapeLayout\": shapeLayout,\r\n \"handles\": handles,\r\n // \"url\": shapeDbFeatureFeature && shapeDbFeatureFeature.thirdPartyAR3DUrls\r\n // ? shapeDbFeatureFeature.thirdPartyAR3DUrls[0]\r\n // : \"https://qc-3dfiles.s3.amazonaws.com/ar-composer/W3030.glb\" //localGlb\r\n //: \"https://dv84u4f1bblk2.cloudfront.net/6cp14aef9e7rfg6gds5orh1cej7ctlvq.glb\"\r\n }\r\n }\r\n\r\n static prepareImageCabinetSet = (shape, shapePosition, shapeFeature) => {\r\n if (!shapeFeature || !shapeFeature.dbFeature || !shapeFeature.dbFeature.thirdPartyAR3DUrls) {\r\n return null\r\n }\r\n //console.log(\"shapeDbFeatureFeature.thirdPartyAR3DUrls\", shapeFeature.dbFeature.thirdPartyAR3DUrls);\r\n\r\n const shapeWidth = +shape.getWidth();\r\n const shapeHeight = +shape.getThickness();\r\n const shapeDepth = +shape.getHeight();\r\n let appliancePosition = CabinetsSet.adjustApplianceModelPosition(shapePosition, shapeWidth, shapeDepth, shape.rotatedDegrees);\r\n\r\n const url = findGLBLink(shapeFeature.dbFeature.thirdPartyAR3DUrls);\r\n\r\n //rise hood to the level of top cabinets\r\n const yPos = shapeFeature.partId === SQFT_APPLIANCES.hood ? DEFAULT_COUNTERTOP_HEIGHT + DEFAULT_BACKSPLASH_HEIGHT : 0;\r\n\r\n // hardcode to create countertop over the dishwasher\r\n const partId = shapeFeature.partId === SHAPE_PART_ID.dishwasher ? SHAPE_PART_ID.lower_cabinet_boxes: shapeFeature.partId;\r\n // we need to hide the hood behind the top cabinet\r\n //const zPos = shapeFeature.partId === SHAPE_PART_ID.hood ? appliancePosition.y - 0.5 : appliancePosition.y;\r\n\r\n return {\r\n \"featureId\": shapeFeature.dbFeature.id,\r\n \"shapeId\": shape.id,\r\n \"partId\": partId,\r\n \"x\": appliancePosition.x,\r\n \"y\": yPos, //todo (shape bottom cabinet height + distance between bottom and top cabinets)\r\n \"z\": appliancePosition.z,\r\n \"rotation\": appliancePosition.rotatedDegrees,\r\n \"url\": url,\r\n \"width\": shapeWidth,\r\n \"height\": shapeHeight, //in sqft wee cabinets from top so we can see this value\r\n \"depth\": shapeDepth,\r\n }\r\n }\r\n}\r\n\r\nexport class CountertopPositions {\r\n\r\n static prepareCountertopPositions() {\r\n const countertopPositions = [];\r\n const partIdsCoveredByCountertop = [SHAPE_PART_ID.lower_cabinet_boxes, SHAPE_PART_ID.dishwasher];\r\n\r\n /**\r\n * This function will search and return texture in thirdPartyAR3DUrls\r\n * and if it is not found will return large thumbnail\r\n * @return {string}\r\n */\r\n const getCountertopTexture = () => {\r\n //let textureUrl = \"https://qc-3dfiles.s3.amazonaws.com/ar-textures/Absolute White - MSI - Marble - color - 1 - 0.16 - 0.33.png\";\r\n let textureUrl = \"https://features-thumbnails.s3-accelerate.amazonaws.com/feature-env_ReBath_c174af44-eb6f-4a48-9f41-19709afff8b0.png\";\r\n const state = store.getState();\r\n if (state.sqftState.selectedCountertop) {\r\n const layout = getCurrentLayout();\r\n const countertopFeature = layout.getFeatureById(state.sqftState.selectedCountertop, true);\r\n //const isMobile = Misc.isMobile() || isTouchDevice();\r\n if (countertopFeature) {\r\n if (countertopFeature.dbFeature.thirdPartyAR3DUrls) {\r\n const URLByFeatureName = get3dURLsForFeature(countertopFeature);\r\n textureUrl = URLByFeatureName ? URLByFeatureName : countertopFeature.dbFeature.thirdPartyAR3DUrls[0];\r\n } else {\r\n textureUrl = featureThumbnailUrl(countertopFeature);\r\n }\r\n }\r\n }\r\n return textureUrl;\r\n };\r\n\r\n const textureUrl = getCountertopTexture();\r\n const snappedShapeGroups = workspaceControllers.snappedShapeGroups.getResources();\r\n\r\n // Function to group shapes by partId, height, and handle gaps\r\n const groupShapes = (shapes) => {\r\n let currentGroup = [];\r\n let lastHeight = null;\r\n\r\n for (const shape of shapes) {\r\n const shapeHeight = shape.shapeCabinet && shape.shapeCabinet.getShapeHeight\r\n ? shape.shapeCabinet.getShapeHeight()\r\n : DEFAULT_COUNTERTOP_HEIGHT;\r\n const isDishwasher = shape.subType === SHAPE_PART_ID.dishwasher;\r\n const isValidShape = partIdsCoveredByCountertop.includes(shape.partId) ||\r\n partIdsCoveredByCountertop.includes(shape.parentPartId) ||\r\n partIdsCoveredByCountertop.includes(shape.subType)\r\n\r\n if (!isValidShape) {\r\n if (currentGroup.length > 0) {\r\n CountertopPositions.prepareCountertopForGroup(currentGroup, textureUrl, countertopPositions, lastHeight);\r\n currentGroup = [];\r\n }\r\n lastHeight = null;\r\n continue;\r\n }\r\n\r\n if (shapeHeight !== lastHeight && !isDishwasher) {\r\n if (currentGroup.length > 0) {\r\n CountertopPositions.prepareCountertopForGroup(currentGroup, textureUrl, countertopPositions, lastHeight);\r\n currentGroup = [];\r\n }\r\n }\r\n\r\n lastHeight = shapeHeight;\r\n currentGroup.push(shape);\r\n }\r\n\r\n if (currentGroup.length > 0) {\r\n CountertopPositions.prepareCountertopForGroup(currentGroup, textureUrl, countertopPositions, lastHeight);\r\n }\r\n };\r\n\r\n // Prepare countertops for the snapped lower_cabinet_boxes\r\n for (const snappedShapeGroup of snappedShapeGroups) {\r\n let shapes = workspaceControllers.snappedShapeGroups.getSnappedShapes(snappedShapeGroup);\r\n\r\n //shapes = shapes.filter(shp => shp.partId !== SHAPE_PART_ID.upper_cabinet_boxes);\r\n // shapes = shapes.filter(shp =>\r\n // partIdsCoveredByCountertop.includes(shp.partId)\r\n // || partIdsCoveredByCountertop.includes(shp.parentPartId)\r\n // || partIdsCoveredByCountertop.includes(shp.subType)\r\n // );\r\n\r\n shapes.sort((a, b) => {\r\n const posA = a.getPosition();\r\n const posB = b.getPosition();\r\n const tolerance = 15; // x tolerance for defining \"one line\"\r\n\r\n if (Math.abs(posA.x - posB.x) <= tolerance) {\r\n return posA.y - posB.y;\r\n }\r\n\r\n return posA.x - posB.x;\r\n });\r\n\r\n if (shapes.length > 0) {\r\n groupShapes(shapes);\r\n }\r\n }\r\n\r\n // Prepare countertops for the single cabinets\r\n const shapes = workspace.getShapes();\r\n const countertopCabinets = shapes.filter(shp =>\r\n partIdsCoveredByCountertop.includes(shp.partId)\r\n || partIdsCoveredByCountertop.includes(shp.parentPartId)\r\n || partIdsCoveredByCountertop.includes(shp.subType)\r\n );\r\n\r\n for (const countertopCabinet of countertopCabinets) {\r\n if (countertopCabinet.shapeAbsolute.getSnappedShapeGroup() === null) {\r\n const countertopCabinetHeight = countertopCabinet.shapeCabinet && countertopCabinet.shapeCabinet.getShapeHeight\r\n ? countertopCabinet.shapeCabinet.getShapeHeight()\r\n : DEFAULT_COUNTERTOP_HEIGHT;\r\n\r\n CountertopPositions.prepareCountertopForGroup(\r\n [countertopCabinet],\r\n textureUrl,\r\n countertopPositions,\r\n countertopCabinetHeight\r\n );\r\n }\r\n }\r\n\r\n return countertopPositions;\r\n }\r\n static prepareCountertopForGroup = (snappedShapes, textureUrl, countertopPositions, shapeHeight) => {\r\n const measurementPoints = sqftShapeManager.getMinMaxShapesPointsOnWorkspace(snappedShapes);\r\n const contours = sqftShapeManager.getShapesContourPointsOnWorkspace(snappedShapes, true);\r\n\r\n if (contours.length === 0) {\r\n console.error(\"contourPoints is empty\");\r\n return;\r\n }\r\n\r\n for (const contourPoints of contours) {\r\n const overhang = sqftShapeManager.getShapesOverhangOnWorkspace(contourPoints, snappedShapes);\r\n\r\n if (measurementPoints.length > 0) {\r\n const width = measurementPoints[1].x - measurementPoints[0].x;\r\n const height = measurementPoints[2].y - measurementPoints[1].y;\r\n\r\n countertopPositions.push({\r\n 'partId': 'countertop',\r\n 'x': contourPoints[0].x,\r\n 'y': shapeHeight,\r\n 'z': contourPoints[0].y,\r\n 'width': width,\r\n 'height': height,\r\n 'edge_url': 'https://quotecountertops.com/video/sqft/countertop_edges/Eased Countertop.glb',\r\n 'texture_url': textureUrl,\r\n 'contour_points': contourPoints,\r\n 'overhang': overhang\r\n });\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class WallPositions {\r\n static prepareWallPositions() {\r\n const walls = workspaceControllers.walls.getResources();\r\n const getWallTexture = () => {\r\n let textureUrl = \"https://qc-3dfiles.s3.amazonaws.com/ar-textures/Absolute White - MSI - Marble - color - 1 - 0.16 - 0.33.png\";\r\n const state = store.getState();\r\n if (state.sqftState.selectedWall) {\r\n const layout = getCurrentLayout();\r\n const wallFeature = layout.getFeatureById(state.sqftState.selectedWall, true);\r\n if (wallFeature) {\r\n if (wallFeature.dbFeature.thirdPartyAR3DUrls) {\r\n const URLByFeatureName = get3dURLsForFeature(wallFeature);\r\n textureUrl = URLByFeatureName ? URLByFeatureName : wallFeature.dbFeature.thirdPartyAR3DUrls[0];\r\n } else {\r\n textureUrl = featureThumbnailUrl(wallFeature);\r\n }\r\n }\r\n }\r\n return textureUrl;\r\n };\r\n \r\n return walls.map(wall => {\r\n return {\r\n \"partId\": \"wall\",\r\n \"texture_url\": getWallTexture(),\r\n \"height\": 100.0,\r\n \"contour_points\": wall.getPoints().map(point => point.getPosition())\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport class CabinetsHelper {\r\n static getHighestCabinetValue(partId = SHAPE_PART_ID.upper_cabinet_boxes) {\r\n const shapes = workspace.getShapes();\r\n if (shapes.length === 0) {\r\n return 0;\r\n }\r\n\r\n return shapes.reduce((acc, current) => {\r\n let currentShapeHeight = 0;\r\n\r\n if (current.partId === partId) {\r\n if (current instanceof sqftShape) {\r\n currentShapeHeight = current.shapeCabinet.getShapeHeight();\r\n } else if (current instanceof MovableImage) {\r\n currentShapeHeight = current.getThickness();\r\n }\r\n }\r\n\r\n if (currentShapeHeight > acc) {\r\n return currentShapeHeight;\r\n }\r\n\r\n return acc;\r\n }, 0);\r\n }\r\n\r\n static getCabinetPosYFromShape (shape) {\r\n const layout = getCurrentLayout();\r\n const relatedParentFeature = layout.getFeatureById(shape.relatedParentFeatureId, true);\r\n if (relatedParentFeature) {\r\n let shapeDbFeature = relatedParentFeature.getFeatureRelatedFeatures().find(relatedFeature => relatedFeature.id === shape.featureId);\r\n if (!shapeDbFeature) {\r\n const shapeFeature = layout.getFeatureById(shape.featureId, true);\r\n if (shapeFeature) {\r\n shapeDbFeature = shapeFeature.dbFeature\r\n }\r\n }\r\n const shapeHeight = shape.shapeCabinet ? shape.shapeCabinet.getShapeHeight() : shape.getHeight();\r\n const url = getUrlMatchingByColor(shapeDbFeature, relatedParentFeature);\r\n\r\n return CabinetsHelper.getCabinetPosY(shape, shapeDbFeature, url, shapeHeight)\r\n }\r\n\r\n return 0\r\n }\r\n\r\n static getCabinetPosY(shape, shapeDbFeature, url, shapeHeight) {\r\n let posY = 0\r\n const metaData = getThirdPartyAR3DMetaData(shapeDbFeature, url);\r\n const category = getCategoryFromMetadata(metaData);\r\n\r\n if (shape.partId === SHAPE_PART_ID.upper_cabinet_boxes || shape.parentPartId === SHAPE_PART_ID.upper_cabinet_boxes) {\r\n // //todo (shape bottom cabinet height + distance between bottom and top cabinets)\r\n posY = DEFAULT_COUNTERTOP_HEIGHT + DEFAULT_BACKSPLASH_HEIGHT;\r\n\r\n //set hood cabinet height to the level of highest upper_cabinet value\r\n const isHoodCabinet = category === \"Hood\" || containsHEBeforeExtension(url) || shapeHeight <= DEFAULT_BACKSPLASH_HEIGHT;\r\n if (isHoodCabinet) {\r\n const snappedWithShape = shape.shapeAbsolute.getSnappedWithShape();\r\n\r\n //const snappedShapes = workspaceControllers.snappedShapeGroups.getSnappedShapes(shape.shapeAbsolute.snappedShapeGroup);\r\n let upperCabinetHighestCabinetValue;\r\n // todo might be issues here, it is better to search for the closest cabinet\r\n if (snappedWithShape && !isHoodShape(snappedWithShape) && snappedWithShape.partId === SHAPE_PART_ID.upper_cabinet_boxes) {\r\n upperCabinetHighestCabinetValue = Math.max(MIN_CABINET_HOOD_HEIGHT, parseFloat(snappedWithShape.shapeCabinet.getShapeHeight()));\r\n } else {\r\n upperCabinetHighestCabinetValue = Math.max(MIN_CABINET_HOOD_HEIGHT, parseFloat(CabinetsHelper.getHighestCabinetValue(SHAPE_PART_ID.upper_cabinet_boxes)));\r\n }\r\n posY = DEFAULT_COUNTERTOP_HEIGHT + DEFAULT_BACKSPLASH_HEIGHT + upperCabinetHighestCabinetValue - shapeHeight;\r\n //upper cabinets was raised in 3d models\r\n // hardcode for cabinets that is raised in the model\r\n // if (startsFromH(shapeDbFeature.sharedFeatureName)) {\r\n // posY = posY - 30 + shapeHeight\r\n // }\r\n }\r\n\r\n //set upper cabinet height to the level of tall cabinets\r\n const tallCabinetHighestCabinetValue = parseFloat(CabinetsHelper.getHighestCabinetValue(SHAPE_PART_ID.tall_cabinet_boxes));\r\n if (tallCabinetHighestCabinetValue) {\r\n posY = tallCabinetHighestCabinetValue - shapeHeight;\r\n }\r\n }\r\n return posY\r\n }\r\n\r\n static getHandles(shape) {\r\n for (const line of shape.getLines()) {\r\n const handleId = line.getHandleId()\r\n if (handleId) {\r\n const handle3dURL = line.getHandle3dURL();\r\n //todo we need to create handle for each of the position in ar3dFile\r\n return [\r\n {\r\n handle3dURL,\r\n partId: shape.partId,\r\n // pos: {\r\n // x: pos.x + targetWidth / 2,\r\n // y: pos.y + targetHeight / 2,\r\n // z: pos.z + targetDepth,\r\n // }\r\n }\r\n // ,\r\n // {\r\n // handle3dURL,\r\n // partId: shape.partId,\r\n // }, {\r\n // handle3dURL,\r\n // partId: shape.partId,\r\n // }\r\n ]\r\n }\r\n }\r\n }\r\n}\r\n","import store from \"../../../../../store\";\r\nimport {changeResource, deleteAllResources} from \"../../../../../actions/sqftResourceFunctions\";\r\nimport {deleteAllMiteredSections} from \"../../../../../actions/sqftMiteredFunctions\";\r\nimport workspace from \"../core/workspace\";\r\nimport {RESOURCE_TYPE} from \"../../../constants\";\r\n\r\nconst sqftResourcesManager = {\r\n deleteAllResources: () => {\r\n store.dispatch(deleteAllResources());\r\n },\r\n deleteAllMiteredSections: () => {\r\n const reduxState = store.getState();\r\n const miteredSections = reduxState.sqftMiteredState.miteredSections;\r\n if (miteredSections.length) {\r\n store.dispatch(deleteAllMiteredSections());\r\n }\r\n },\r\n getAttachedToLineResource: (line) => {\r\n return workspace.getAttachedTo(line)\r\n },\r\n updateAttachedToLineResource: (attachedToResource) => {\r\n store.dispatch(changeResource(RESOURCE_TYPE.attachedToLine, attachedToResource));\r\n },\r\n getLineByAttachedItemId: (id) => {\r\n const state = store.getState();\r\n const attachedToLineResources = state.sqftResourceState.attachedToLine;\r\n const attachedItem = attachedToLineResources.find(attachedToLine => attachedToLine.id === id);\r\n if (attachedItem) {\r\n return workspace.getLineById(attachedItem.attachedToId);\r\n }\r\n },\r\n deleteAttachedItemById: (id) => {\r\n const line = sqftResourcesManager.getLineByAttachedItemId(id);\r\n\r\n if (line) {\r\n line.deleteAttachedItem();\r\n }\r\n }\r\n}\r\n\r\nexport default sqftResourcesManager\r\n","import workspace from \"../../workspace\";\r\n\r\nclass ShapeAbsolute {\r\n __shape;\r\n __intersectionPoints = [];\r\n __minLengthToIntersectionPoints;\r\n __absolutePos = null;\r\n __snappedWithShape = null;\r\n __snappedShapeGroup = null;\r\n\r\n constructor(shape) {\r\n this.__shape = shape;\r\n }\r\n setParentId(parentId) {\r\n this.__shape.shapeParent = parentId\r\n }\r\n setRotationDegreesSlab(rotationDegrees) {\r\n this.__shape.rotatedDegreesSlab = rotationDegrees\r\n }\r\n setAbsolutePos = (pos) => {\r\n this.__absolutePos = pos;\r\n };\r\n getAbsolutePosition = () => {\r\n return this.__absolutePos;\r\n };\r\n getIntersectionPoints = () => { return this.__intersectionPoints; };\r\n setIntersectionsPoints = (points) => { this.__intersectionPoints = points; };\r\n\r\n setSnappedWithShape = (shape) => { this.__snappedWithShape = shape}\r\n getSnappedWithShape = () => { return this.__snappedWithShape }\r\n\r\n setSnappedShapeGroup = (shapeGroup) => { this.__snappedShapeGroup = shapeGroup}\r\n getSnappedShapeGroup = () => { return this.__snappedShapeGroup }\r\n\r\n setMinLengthToIntersectionPoints = (length) => {\r\n this.__minLengthToIntersectionPoints = length;\r\n };\r\n\r\n import = (data) => {\r\n if (data.snappedWithShape && data.snappedWithShape.id) {\r\n const snappedWithShape = workspace.getShapeById(data.snappedWithShape.id);\r\n this.setSnappedWithShape(snappedWithShape);\r\n }\r\n\r\n this.setAbsolutePos(data ? data.absolutePosition : null);\r\n this.setIntersectionsPoints(data ? data.intersectionPoints : null);\r\n this.setSnappedShapeGroup(data ? data.snappedShapeGroup : null);\r\n }\r\n export = () => {\r\n const snappedWithShape = this.getSnappedWithShape();\r\n\r\n return {\r\n absolutePosition: this.getAbsolutePosition(),\r\n intersectionPoints: this.getIntersectionPoints(),\r\n snappedWithShape: snappedWithShape ? snappedWithShape.id : null,\r\n snappedShapeGroup: this.getSnappedShapeGroup(),\r\n }\r\n }\r\n}\r\n\r\nexport default ShapeAbsolute\r\n","import {getPointBetweenPoints, getPointDistance, orientation} from \"../helpers/sqftHelper\";\r\n\r\nconst setLinePoints = (movingLine, newFrom, newTo) => {\r\n movingLine.from.x = newFrom.x;\r\n movingLine.from.y = newFrom.y;\r\n movingLine.to.x = newTo.x;\r\n movingLine.to.y = newTo.y;\r\n};\r\n\r\n/**\r\n * Given a three lines detects moving points and sets correct new points X and Y values.\r\n * @param {Object} movingLine current moving line\r\n * @param {Object} nextLine\r\n * @param {Object} prevLine\r\n * @param {number} baseLineDistance -state value, that is overwritten on each mouseDown event\r\n * @param {number} yDiff Y difference of mouse move\r\n * @param {number} lineOrientation movingLine orientation\r\n */\r\nexport default function (\r\n movingLine,\r\n nextLine,\r\n prevLine,\r\n baseLineDistance,\r\n yDiff,\r\n lineOrientation\r\n) {\r\n let newFrom = {}, newTo = {}, diff;\r\n\r\n // 1) move line\r\n switch(lineOrientation) {\r\n case orientation.SOUTHEAST:\r\n case orientation.NORTHEAST:\r\n diff = -yDiff;\r\n break;\r\n case orientation.SOUTHWEST:\r\n case orientation.NORTHWEST:\r\n diff = yDiff;\r\n break;\r\n }\r\n newFrom = getPointBetweenPoints(movingLine.from, prevLine.from, diff);\r\n newTo = getPointBetweenPoints(movingLine.to, nextLine.to, diff);\r\n setLinePoints(movingLine, newFrom, newTo);\r\n const pointDistance2 = getPointDistance(newFrom, newTo);\r\n\r\n // 2) fix points corrections\r\n if (baseLineDistance !== pointDistance2) {\r\n switch(lineOrientation) {\r\n case orientation.SOUTHWEST:\r\n if (pointDistance2 < baseLineDistance) {\r\n const delta = (baseLineDistance - pointDistance2) / 4; //for ex. 26 - 25.4 = 0.6\r\n newFrom = {x: movingLine.from.x + delta, y: movingLine.from.y - delta};\r\n newTo = {x: movingLine.to.x - delta, y: movingLine.to.y + delta};\r\n } else {\r\n const delta = (pointDistance2 - baseLineDistance) / 4; //for ex. 26 - 25.4 = 0.6\r\n newFrom = {x: movingLine.from.x - delta, y: movingLine.from.y + delta};\r\n newTo = {x: movingLine.to.x + delta, y: movingLine.to.y - delta};\r\n }\r\n break;\r\n case orientation.SOUTHEAST:\r\n if (pointDistance2 < baseLineDistance) {\r\n const delta = (baseLineDistance - pointDistance2) / 4; //for ex. 26 - 25.4 = 0.6\r\n newFrom = {x: movingLine.from.x - delta, y: movingLine.from.y - delta};\r\n newTo = {x: movingLine.to.x + delta, y: movingLine.to.y + delta};\r\n } else {\r\n const delta = (pointDistance2 - baseLineDistance) / 4; //for ex. 26 - 25.4 = 0.6\r\n newFrom = {x: movingLine.from.x + delta, y: movingLine.from.y + delta};\r\n newTo = {x: movingLine.to.x - delta, y: movingLine.to.y - delta};\r\n }\r\n break;\r\n case orientation.NORTHEAST:\r\n if (pointDistance2 < baseLineDistance) {\r\n const delta = (baseLineDistance - pointDistance2) / 4; //for ex. 26 - 25.4 = 0.6\r\n newFrom = {x: movingLine.from.x - delta, y: movingLine.from.y + delta};\r\n newTo = {x: movingLine.to.x + delta, y: movingLine.to.y - delta};\r\n } else {\r\n const delta = (pointDistance2 - baseLineDistance) / 4; //for ex. 26 - 25.4 = 0.6\r\n newFrom = {x: movingLine.from.x + delta, y: movingLine.from.y - delta};\r\n newTo = {x: movingLine.to.x - delta, y: movingLine.to.y + delta};\r\n }\r\n break;\r\n case orientation.NORTHWEST:\r\n if (pointDistance2 < baseLineDistance) {\r\n const delta = (baseLineDistance - pointDistance2) / 4; //for ex. 26 - 25.4 = 0.6\r\n newFrom = {x: movingLine.from.x + delta, y: movingLine.from.y + delta};\r\n newTo = {x: movingLine.to.x - delta, y: movingLine.to.y - delta};\r\n } else {\r\n const delta = (pointDistance2 - baseLineDistance) / 4; //for ex. 26 - 25.4 = 0.6\r\n newFrom = {x: movingLine.from.x - delta, y: movingLine.from.y - delta};\r\n newTo = {x: movingLine.to.x + delta, y: movingLine.to.y + delta};\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n setLinePoints(movingLine, newFrom, newTo);\r\n }\r\n}\r\n","import {getPointOnTheLine} from \"../../../../../helpers/sqftHelper\";\r\n\r\nexport const mathRound = (value) => Math.round(value * 100) / 100;\r\n\r\nfunction horizontalEastLineExpand(prevLine, nextLine, diff) {\r\n prevLine.from.x = mathRound(prevLine.from.x - diff/2);\r\n prevLine.to.x = mathRound(prevLine.to.x - diff/2);\r\n nextLine.from.x = mathRound(nextLine.from.x + diff/2);\r\n nextLine.to.x = mathRound(nextLine.to.x + diff/2);\r\n if(prevLine.isWithBumpout()) {\r\n prevLine.bumpoutOverlay.moveBumpout(diff / 2, 0);\r\n }\r\n if(nextLine.isWithBumpout()) {\r\n nextLine.bumpoutOverlay.moveBumpout(-diff / 2, 0);\r\n }\r\n if(prevLine.isWithMitered()) {\r\n prevLine.miteredOverlay.moveMitered(diff / 2, 0);\r\n }\r\n if(nextLine.isWithMitered()) {\r\n nextLine.miteredOverlay.moveMitered(-diff / 2, 0);\r\n }\r\n}\r\nfunction horizontalWestLineExpand(prevLine, nextLine, diff) {\r\n prevLine.from.x = mathRound(prevLine.from.x + diff/2);\r\n prevLine.to.x = mathRound(prevLine.to.x + diff/2);\r\n nextLine.from.x = mathRound(nextLine.from.x - diff/2);\r\n nextLine.to.x = mathRound(nextLine.to.x - diff/2);\r\n if(prevLine.isWithBumpout()) {\r\n prevLine.bumpoutOverlay.moveBumpout(-diff / 2, 0);\r\n }\r\n if(nextLine.isWithBumpout()) {\r\n nextLine.bumpoutOverlay.moveBumpout(diff / 2, 0);\r\n }\r\n if(prevLine.isWithBumpout()) {\r\n prevLine.miteredOverlay.moveMitered(-diff / 2, 0);\r\n }\r\n if(nextLine.isWithBumpout()) {\r\n nextLine.miteredOverlay.moveMitered(diff / 2, 0);\r\n }\r\n}\r\nfunction verticalSouthLineExpand(prevLine, nextLine, diff) {\r\n prevLine.from.y = mathRound(prevLine.from.y - diff/2);\r\n prevLine.to.y = mathRound(prevLine.to.y - diff/2);\r\n nextLine.from.y = mathRound(nextLine.from.y + diff/2);\r\n nextLine.to.y = mathRound(nextLine.to.y + diff/2);\r\n if(prevLine.isWithBumpout()) {\r\n prevLine.bumpoutOverlay.moveBumpout(0, diff / 2);\r\n }\r\n if(nextLine.isWithBumpout()) {\r\n nextLine.bumpoutOverlay.moveBumpout(0,-diff / 2);\r\n }\r\n}\r\nfunction verticalNorthLineExpand(prevLine, nextLine, diff) {\r\n prevLine.from.y = mathRound(prevLine.from.y + diff/2);\r\n prevLine.to.y = mathRound(prevLine.to.y + diff/2);\r\n nextLine.from.y = mathRound(nextLine.from.y - diff/2);\r\n nextLine.to.y = mathRound(nextLine.to.y - diff/2);\r\n if(prevLine.isWithBumpout()) {\r\n prevLine.bumpoutOverlay.moveBumpout(0,-diff / 2);\r\n }\r\n if(nextLine.isWithBumpout()) {\r\n nextLine.bumpoutOverlay.moveBumpout(0,diff / 2);\r\n }\r\n}\r\nexport default function(line, diff, isWallsLockMode) {\r\n // console.log(\"line\", line, diff);\r\n const lineDirection = line.getLineDirection();\r\n const shape = line.getParent();\r\n const prevLine = shape.getPrevLine(line);\r\n const nextLine = shape.getNextLine(line);\r\n switch (shape.shapeType) {\r\n case \"square\":\r\n if (lineDirection.orientation === \"horizontal\") {\r\n if (lineDirection.newDirection === \"east\") {\r\n horizontalEastLineExpand(prevLine, nextLine, diff);\r\n } else if (lineDirection.newDirection === \"west\") {\r\n horizontalWestLineExpand(prevLine, nextLine, diff);\r\n }\r\n } else if (lineDirection.orientation === \"vertical\") {\r\n if (lineDirection.newDirection === \"south\") {\r\n verticalSouthLineExpand(prevLine, nextLine, diff);\r\n } else if (lineDirection.newDirection === \"north\") {\r\n verticalNorthLineExpand(prevLine, nextLine, diff);\r\n }\r\n }\r\n break;\r\n case \"wideangle\": {\r\n const rotatedDegrees = line.getParent().rotatedDegrees;\r\n if (lineDirection.orientation === \"horizontal\") {\r\n if (lineDirection.newDirection === \"east\") {\r\n if (rotatedDegrees === 180 || rotatedDegrees === 270) {\r\n prevLine.from.x = mathRound(prevLine.from.x - diff);\r\n prevLine.to.x = mathRound(prevLine.to.x - diff);\r\n } else {\r\n nextLine.from.x = mathRound(nextLine.from.x + diff);\r\n nextLine.to.x = mathRound(nextLine.to.x + diff);\r\n }\r\n } else if (lineDirection.newDirection === \"west\") {\r\n const nextLineDirection = nextLine.getLineDirection();\r\n if (nextLineDirection.newDirection === \"north\") {\r\n if (rotatedDegrees === 90) {\r\n prevLine.from.x = mathRound(prevLine.from.x + diff);\r\n prevLine.to.x = mathRound(prevLine.to.x + diff);\r\n } else if (rotatedDegrees === 180 || rotatedDegrees === 270) {\r\n nextLine.from.x = mathRound(nextLine.from.x - diff);\r\n nextLine.to.x = mathRound(nextLine.to.x - diff);\r\n } else {\r\n horizontalWestLineExpand(prevLine, nextLine, diff);\r\n }\r\n } else {\r\n prevLine.from.x = mathRound(prevLine.from.x + diff);\r\n prevLine.to.x = mathRound(prevLine.to.x + diff);\r\n }\r\n }\r\n } else if (lineDirection.orientation === \"vertical\") {\r\n if (lineDirection.newDirection === \"south\") {\r\n const prevLineDirection = prevLine.getLineDirection();\r\n if (prevLineDirection.newDirection === \"west\") {\r\n nextLine.from.y = mathRound(nextLine.from.y + diff);\r\n nextLine.to.y = mathRound(nextLine.to.y + diff);\r\n } else {\r\n if (rotatedDegrees === 90 || rotatedDegrees === 180) {\r\n prevLine.from.y = mathRound(prevLine.from.y - diff);\r\n prevLine.to.y = mathRound(prevLine.to.y - diff);\r\n } else if (rotatedDegrees === 270) {\r\n nextLine.from.y = mathRound(nextLine.from.y + diff);\r\n nextLine.to.y = mathRound(nextLine.to.y + diff);\r\n } else {\r\n verticalSouthLineExpand(prevLine, nextLine, diff);\r\n }\r\n }\r\n } else if (lineDirection.newDirection === \"north\") {\r\n if (rotatedDegrees === 90 || rotatedDegrees === 180) {\r\n nextLine.from.y = mathRound(nextLine.from.y - diff);\r\n nextLine.to.y = mathRound(nextLine.to.y - diff);\r\n } else {\r\n prevLine.from.y = mathRound(prevLine.from.y + diff);\r\n prevLine.to.y = mathRound(prevLine.to.y + diff);\r\n }\r\n }\r\n } else {\r\n const pointOnTheLineFrom = getPointOnTheLine(line.from, line.to, diff / 2);\r\n const pointOnTheLineTo = getPointOnTheLine(line.to, line.from, diff / 2);\r\n line.to.x = pointOnTheLineTo.x;\r\n line.to.y = pointOnTheLineTo.y;\r\n line.from.x = pointOnTheLineFrom.x;\r\n line.from.y = pointOnTheLineFrom.y;\r\n }\r\n break;\r\n }\r\n case \"horseshoe\": {\r\n const rotatedDegrees = line.getParent().rotatedDegrees;\r\n const prevLineDirection = prevLine.getLineDirection();\r\n const nextLineDirection = nextLine.getLineDirection();\r\n\r\n console.log(\"-------------------------------\");\r\n console.log(\"line\", line);\r\n console.log(\"diff\", diff);\r\n console.log(\"shape.shapeType\", shape.shapeType);\r\n console.log(\"lineDirection.orientation\", lineDirection.orientation);\r\n console.log(\"lineDirection.newDirection\", lineDirection.newDirection);\r\n console.log(\"prevLineDirection.newDirection\", prevLineDirection.newDirection);\r\n console.log(\"nextLineDirection.newDirection\", nextLineDirection.newDirection);\r\n console.log(\"rotatedDegrees\", rotatedDegrees);\r\n if (lineDirection.orientation === \"horizontal\") {\r\n if (lineDirection.newDirection === \"east\") {\r\n if (prevLineDirection.newDirection === \"north\") {\r\n if (rotatedDegrees === 90) {\r\n nextLine.from.x = mathRound(nextLine.from.x + diff);\r\n nextLine.to.x = mathRound(nextLine.to.x + diff);\r\n } else if (rotatedDegrees === 180) {\r\n horizontalEastLineExpand(prevLine, nextLine, diff);\r\n } else if (rotatedDegrees === 270) {\r\n prevLine.from.x = mathRound(prevLine.from.x - diff);\r\n prevLine.to.x = mathRound(prevLine.to.x - diff);\r\n } else {\r\n horizontalEastLineExpand(prevLine, nextLine, diff);\r\n horizontalWestLineExpand(...line.getPairedLines(), diff);\r\n }\r\n } else if (rotatedDegrees === 90) {\r\n nextLine.from.x = mathRound(nextLine.from.x + diff);\r\n nextLine.to.x = mathRound(nextLine.to.x + diff);\r\n } else {\r\n horizontalEastLineExpand(prevLine, nextLine, diff);\r\n horizontalWestLineExpand(...line.getPairedLines(), diff);\r\n }\r\n } else if (lineDirection.newDirection === \"west\") {\r\n if (prevLineDirection.newDirection === \"south\") {\r\n if (rotatedDegrees === 90) {\r\n prevLine.from.x = mathRound(prevLine.from.x + diff);\r\n prevLine.to.x = mathRound(prevLine.to.x + diff);\r\n } else if (rotatedDegrees === 180) {\r\n horizontalWestLineExpand(prevLine, nextLine, diff);\r\n horizontalEastLineExpand(...line.getPairedLines(), diff);\r\n } else if (rotatedDegrees === 270) {\r\n nextLine.from.x = mathRound(nextLine.from.x - diff);\r\n nextLine.to.x = mathRound(nextLine.to.x - diff);\r\n } else {\r\n horizontalWestLineExpand(prevLine, nextLine, diff);\r\n }\r\n } else if (rotatedDegrees === 270) {\r\n nextLine.from.x = mathRound(nextLine.from.x - diff);\r\n nextLine.to.x = mathRound(nextLine.to.x - diff);\r\n } else {\r\n horizontalWestLineExpand(prevLine, nextLine, diff);\r\n horizontalEastLineExpand(...line.getPairedLines(), diff);\r\n }\r\n }\r\n } else if (lineDirection.orientation === \"vertical\") {\r\n if (lineDirection.newDirection === \"south\") {\r\n if (rotatedDegrees === 180) {\r\n prevLine.from.y = mathRound(prevLine.from.y - diff);\r\n prevLine.to.y = mathRound(prevLine.to.y - diff);\r\n } else {\r\n if (nextLineDirection.newDirection === \"west\") {\r\n if (rotatedDegrees === 270) {\r\n verticalSouthLineExpand(prevLine, nextLine, diff);\r\n verticalNorthLineExpand(...line.getPairedLines(), diff);\r\n } else {\r\n nextLine.from.y = mathRound(nextLine.from.y + diff);\r\n nextLine.to.y = mathRound(nextLine.to.y + diff);\r\n }\r\n } else {\r\n verticalSouthLineExpand(prevLine, nextLine, diff);\r\n verticalNorthLineExpand(...line.getPairedLines(), diff);\r\n }\r\n }\r\n } else if (lineDirection.newDirection === \"north\") {\r\n if (prevLineDirection.newDirection === \"west\") {\r\n if (rotatedDegrees === 90) {\r\n verticalNorthLineExpand(prevLine, nextLine, diff);\r\n verticalSouthLineExpand(...line.getPairedLines(), diff);\r\n } else if (rotatedDegrees === 180) {\r\n nextLine.from.y = mathRound(nextLine.from.y - diff);\r\n nextLine.to.y = mathRound(nextLine.to.y - diff);\r\n } else {\r\n prevLine.from.y = mathRound(prevLine.from.y + diff);\r\n prevLine.to.y = mathRound(prevLine.to.y + diff);\r\n }\r\n } else if (rotatedDegrees === 180) {\r\n nextLine.from.y = mathRound(nextLine.from.y - diff);\r\n nextLine.to.y = mathRound(nextLine.to.y - diff);\r\n } else {\r\n verticalNorthLineExpand(prevLine, nextLine, diff);\r\n verticalSouthLineExpand(...line.getPairedLines(), diff);\r\n }\r\n }\r\n } else {\r\n const pointOnTheLineFrom = getPointOnTheLine(line.from, line.to, diff / 2);\r\n const pointOnTheLineTo = getPointOnTheLine(line.to, line.from, diff / 2);\r\n line.to.x = pointOnTheLineTo.x;\r\n line.to.y = pointOnTheLineTo.y;\r\n line.from.x = pointOnTheLineFrom.x;\r\n line.from.y = pointOnTheLineFrom.y;\r\n }\r\n break;\r\n }\r\n default: {\r\n if (isWallsLockMode) {\r\n const prevPrevLine = shape.getPrevLine(prevLine);\r\n const nextNextLine = shape.getNextLine(nextLine);\r\n const prevPrevLineDirection = prevPrevLine.getLineDirection();\r\n const nextNextLineDirection = nextNextLine.getLineDirection();\r\n\r\n const pointOnTheLineFrom = getPointOnTheLine(line.from, line.to, diff / 2);\r\n const pointOnTheLineTo = getPointOnTheLine(line.to, line.from, diff / 2);\r\n const deltaX = pointOnTheLineFrom.x - line.from.x;\r\n const deltaY = pointOnTheLineFrom.y - line.from.y;\r\n\r\n //move line point\r\n line.to.x = pointOnTheLineTo.x;\r\n line.to.y = pointOnTheLineTo.y;\r\n line.from.x = pointOnTheLineFrom.x;\r\n line.from.y = pointOnTheLineFrom.y;\r\n\r\n //move prevLine point\r\n prevLine.from.x += deltaX;\r\n prevLine.from.y += deltaY;\r\n // return prevLine coordinate back to its axis if the line was\r\n if (prevPrevLineDirection.orientation === \"horizontal\") {\r\n prevLine.from.y -= deltaY;\r\n }\r\n if (prevPrevLineDirection.orientation === \"vertical\") {\r\n prevLine.from.x -= deltaX;\r\n }\r\n\r\n // move nextLine point\r\n nextLine.to.x -= deltaX;\r\n nextLine.to.y -= deltaY;\r\n // return nextLine coordinate back to its axis if the line was\r\n if (nextNextLineDirection.orientation === \"horizontal\") {\r\n nextLine.to.y += deltaY;\r\n }\r\n if (nextNextLineDirection.orientation === \"vertical\") {\r\n nextLine.to.x += deltaX;\r\n }\r\n\r\n } else {\r\n const pointOnTheLineFrom = getPointOnTheLine(line.from, line.to, diff / 2);\r\n const pointOnTheLineTo = getPointOnTheLine(line.to, line.from, diff / 2);\r\n line.to.x = pointOnTheLineTo.x;\r\n line.to.y = pointOnTheLineTo.y;\r\n line.from.x = pointOnTheLineFrom.x;\r\n line.from.y = pointOnTheLineFrom.y;\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const getMaxResizeWidth = (line) => {\r\n const shape = line.getParent();\r\n switch (shape.shapeType) {\r\n case \"square\":\r\n case \"wideangle\":\r\n default:\r\n break;\r\n case \"horseshoe\":\r\n // const prevLineDirection = prevLine.getLineDirection();\r\n // const nextLineDirection = nextLine.getLineDirection();\r\n // const rotatedDegrees = line.getParent().rotatedDegrees;\r\n // if (lineDirection.orientation === \"horizontal\") {\r\n // if (lineDirection.newDirection === \"east\") {\r\n // if (prevLineDirection.orientation === \"vertical\" && prevLineDirection.newDirection === \"south\"\r\n // && nextLineDirection.orientation === \"vertical\" && nextLineDirection.newDirection === \"north\"\r\n // //&& rotatedDegrees !== 180\r\n // ) {\r\n // const maxRightX = shape.getNextLine(nextLine).to.x;\r\n // const maxLeftX = shape.getPrevLine(prevLine).from.x;\r\n // return maxRightX - maxLeftX - 2; // 1 per each line, line can't be 0\r\n // }\r\n // } else if (lineDirection.newDirection === \"west\") {\r\n // if (prevLineDirection.orientation === \"vertical\" && prevLineDirection.newDirection === \"north\"\r\n // && nextLineDirection.orientation === \"vertical\" && nextLineDirection.newDirection === \"south\"\r\n // //&& rotatedDegrees !== 0\r\n // ) {\r\n // const maxRightX = shape.getPrevLine(prevLine).from.x;\r\n // const maxLeftX = shape.getNextLine(nextLine).to.x;\r\n // return maxRightX - maxLeftX - 2; // 1 per each line, line can't be 0\r\n // }\r\n // }\r\n // } else if (lineDirection.orientation === \"vertical\") {\r\n // if (lineDirection.newDirection === \"south\") {\r\n // if (prevLineDirection.orientation === \"horizontal\" && prevLineDirection.newDirection === \"west\"\r\n // && nextLineDirection.orientation === \"horizontal\" && nextLineDirection.newDirection === \"east\"\r\n // //&& rotatedDegrees !== 90\r\n // ) {\r\n // const maxTopY = shape.getPrevLine(prevLine).from.y;\r\n // const maxBottomY = shape.getNextLine(nextLine).to.y;\r\n // return maxBottomY - maxTopY - 2; // 1 per each line, line can't be 0\r\n // }\r\n // } else if (lineDirection.newDirection === \"north\") {\r\n // if (prevLineDirection.orientation === \"horizontal\" && prevLineDirection.newDirection === \"east\"\r\n // && nextLineDirection.orientation === \"horizontal\" && nextLineDirection.newDirection === \"west\"\r\n // // && rotatedDegrees !== 270\r\n // ) {\r\n // const maxTopY = shape.getNextLine(nextLine).to.y;\r\n // const maxBottomY = shape.getPrevLine(prevLine).from.y;\r\n // return maxBottomY - maxTopY - 2; // 1 per each line, line can't be 0\r\n // }\r\n // }\r\n // }\r\n break;\r\n }\r\n return \"9999\";\r\n};\r\n","import {getPointField} from \"../../../helpers/sqftHelper\";\r\nimport EventManager from \"../store/sqftEventManager\";\r\nimport {FREE_DRAW_TYPE, SIDEBAR_NAVIGATION_CABINET_BUTTONS, SIDEBAR_SHAPE_BUTTONS} from \"../../../constants\";\r\nimport store from \"../../../../../store\";\r\nimport {getLockPointPos} from \"./freeDrawHelper\";\r\n\r\nexport default class RenderFreeDraw {\r\n\r\n static drawLines = (ctx, points) => {\r\n for (let i = 0; i < points.length; i++) {\r\n if (points[i + 1] !== undefined) {\r\n let posX = points[i].modelCorePoint.mixins.movable.posX;\r\n let posY = points[i].modelCorePoint.mixins.movable.posY;\r\n let pointField = getPointField(posX, posY);\r\n\r\n posX = points[i + 1].modelCorePoint.mixins.movable.posX;\r\n posY = points[i + 1].modelCorePoint.mixins.movable.posY;\r\n let nextPointField = getPointField(posX, posY);\r\n // let pointField = points[i].getPointCords();\r\n // let nextPointField = points[i + 1].getPointCords();\r\n if (i === 0) {\r\n ctx.moveTo(pointField.x, pointField.y);\r\n }\r\n ctx.lineTo(nextPointField.x, nextPointField.y);\r\n }\r\n }\r\n }\r\n\r\n static drawLastLine = (ctx, state) => {\r\n let posX = state.addedPoints[0].modelCorePoint.mixins.movable.posX;\r\n let posY = state.addedPoints[0].modelCorePoint.mixins.movable.posY;\r\n let pointField = getPointField(posX, posY);\r\n\r\n ctx.lineTo(pointField.x, pointField.y);\r\n }\r\n\r\n static drawLineFromPointV2ToMouse = (ctx, pointV2, shouldUseLockedMode = false) => {\r\n const reduxState = store.getState();\r\n const isWallsLockMode = reduxState.sqftMenuState.isWallsLockMode;\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n\r\n if ((shouldUseLockedMode && isWallsLockMode && activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.wall)\r\n || (shouldUseLockedMode && activeButton === SIDEBAR_SHAPE_BUTTONS.freeDraw)\r\n ) {\r\n RenderFreeDraw.drawLineFromPointV2ToMouseLocked(ctx, pointV2);\r\n } else {\r\n RenderFreeDraw.drawLineFromPointV2ToMouseFree(ctx, pointV2);\r\n }\r\n }\r\n\r\n static drawLineFromPointV2ToMouseFree = (ctx, pointV2) => {\r\n ctx.beginPath();\r\n let posX = pointV2.modelCorePoint.mixins.movable.posX;\r\n let posY = pointV2.modelCorePoint.mixins.movable.posY;\r\n let pointField = getPointField(posX, posY);\r\n ctx.moveTo(pointField.x, pointField.y);\r\n\r\n const mousePos = EventManager.LastKnownMousePos;\r\n ctx.lineTo(mousePos.x, mousePos.y);\r\n ctx.stroke();\r\n ctx.closePath();\r\n }\r\n\r\n static drawLineFromPointV2ToMouseLocked = (ctx, pointV2, lockedAngleStep = 45 ) => {\r\n const lockPointPos = getLockPointPos(pointV2, lockedAngleStep);\r\n\r\n ctx.beginPath();\r\n let posX = pointV2.modelCorePoint.mixins.movable.posX;\r\n let posY = pointV2.modelCorePoint.mixins.movable.posY;\r\n let pointField = getPointField(posX, posY);\r\n ctx.moveTo(pointField.x, pointField.y);\r\n\r\n ctx.lineTo(lockPointPos.x, lockPointPos.y);\r\n ctx.stroke();\r\n ctx.closePath();\r\n }\r\n\r\n // static renderCursor = (ctx) => {\r\n // if (RenderFreeDraw.cursorImage && this.cursorImage.image && (this.arcLength > 0 || this.angle > 0) && ($(window).width() > 768)) {\r\n // let mPos = EventManager.LastKnownMousePos;\r\n // if (mPos) {\r\n // ctx.drawImage(this.cursorImage.image, mPos.x + 10, mPos.y + 10, this.cursorImage.width, this.cursorImage.height);\r\n // }\r\n // }\r\n // };\r\n\r\n static renderLinesBetweenPoints = (ctx, state) => {\r\n ctx.beginPath();\r\n RenderFreeDraw.drawLines(ctx, state.addedPoints);\r\n ctx.stroke();\r\n // if (state.isDrawFinished) {\r\n // RenderFreeDraw.drawLastLine(ctx, state);\r\n // } else\r\n if (state.drawLineToMouse && state.addedPoints.length !== 0 ) {\r\n RenderFreeDraw.drawLineFromPointV2ToMouse(ctx, state.addedPoints[state.addedPoints.length -1], state.useLockedPoints)\r\n }\r\n };\r\n\r\n static render = (ctx, state) => {\r\n RenderFreeDraw.renderLines(ctx, state);\r\n //RenderFreeDraw.updateDimensionToMouse(ctx, state);\r\n };\r\n\r\n static renderLines = (ctx, state) => {\r\n //RenderFreeDraw.renderCursor(ctx);\r\n if (state.drawType === FREE_DRAW_TYPE.wall) {\r\n ctx.lineWidth = state.lineWidth + 2;\r\n ctx.strokeStyle = state.outlineColor;\r\n RenderFreeDraw.renderLinesBetweenPoints(ctx, state);\r\n }\r\n ctx.lineWidth = state.lineWidth;\r\n ctx.strokeStyle = state.lineColor;\r\n RenderFreeDraw.renderLinesBetweenPoints(ctx, state);\r\n };\r\n\r\n // static renderDimensionToMouse = (ctx, state) => {\r\n // if (state.dimensionToMouse.value > state.minLineLength) {\r\n // state.dimensionToMouse.pos.betweenPoints.pointFrom = state.addedPoints[state.addedPoints.length - 1]\r\n // state.dimensionToMouse.pos.betweenPoints.pointTo = getMousePositionOnField(\r\n // EventManager.LastKnownMousePos.x,\r\n // EventManager.LastKnownMousePos.y\r\n // );\r\n // //state.dimensionToMouse.render(ctx);\r\n // }\r\n // };\r\n}\r\n","import uuid from \"uuid\";\r\nimport clone from 'lodash/clone';\r\n\r\nimport {pnpolyArray} from \"../../../../../lib/pnpoly\";\r\nimport {\r\n getParallelPoints,\r\n getPointBetweenPoints, getPointOnTheLine, isInnerCorner,\r\n measureDistanceToInches\r\n} from \"../../../../../helpers/sqftHelper\";\r\nimport sqftConfig from \"../../../store/sqftConfig\";\r\nimport store from \"../../../../../../../store\";\r\nimport {deleteResourceAttachedTo} from \"../../../../../../../actions/sqftResourceFunctions\";\r\nimport {RESOURCE_TYPE} from \"../../../../../constants\";\r\nimport workspace from \"../../workspace\";\r\nimport MiteredController from \"../../controls/mitered\";\r\nimport {addMiteredSection} from \"../../../../../../../actions/sqftMiteredFunctions\";\r\n\r\nexport default class LineCorner {\r\n\r\n line;\r\n id;\r\n _state = {\r\n mouseDown: false,\r\n isHovering: false,\r\n isCornerLineHovering: false,\r\n withEdge: false,\r\n withBacksplash: false,\r\n withWall: false,\r\n withId: null,\r\n backsplashHeight: null,\r\n isWithMitered: false,\r\n };\r\n attachedShape = null;\r\n miteredOverlay = null;\r\n design = {\r\n additionalOutlineHoverWidth: 3,\r\n };\r\n\r\n constructor(line) {\r\n this.line = line;\r\n this.id = uuid.v4(); //line.id;\r\n }\r\n\r\n get state() {\r\n return this._state;\r\n }\r\n\r\n set state(value) {\r\n this._state = value;\r\n }\r\n\r\n isWithMitered = () => {\r\n return this.state.isWithMitered\r\n }\r\n\r\n getAttachedShape() {\r\n return this.attachedShape;\r\n }\r\n\r\n getAttachedItems() {\r\n let isAnyItemsAttached = false;\r\n for (const attachedItemKey in this._state.attachedItems) {\r\n if (this._state.attachedItems[attachedItemKey]) {\r\n isAnyItemsAttached = true\r\n }\r\n }\r\n return this._state.withEdge\r\n || this._state.withBacksplash\r\n || this._state.withWall\r\n || this._state.withId\r\n || isAnyItemsAttached\r\n }\r\n\r\n deleteAttachedItem = () => {\r\n this.state.withEdge = false;\r\n this.state.withBacksplash = false;\r\n this.state.withWall = false;\r\n this.state.withId = null;\r\n this.state.attachedShape = null;\r\n store.dispatch(deleteResourceAttachedTo(RESOURCE_TYPE.attachedToLine, this));\r\n //this.state.overlay.removeLineText(); // todo\r\n };\r\n\r\n getLength(){\r\n return this.line.to.angle\r\n }\r\n\r\n getLineLength() {\r\n return this.line.addDecimalToLength(measureDistanceToInches(this.line.to.angle));\r\n }\r\n\r\n getLineLengthMm() {\r\n return measureDistanceToInches(this.line.to.angle).millimeters;\r\n }\r\n\r\n getParent() {\r\n return this.line.getParent()\r\n }\r\n\r\n addEdgeToCornerLine = (edgeName, id) => {\r\n this.state.withEdge = true;\r\n this.state.withBacksplash = false;\r\n this.state.withWall = false;\r\n this.state.withId = id;\r\n\r\n //self.overlay.renderEdgeText(edgeName); //todo\r\n };\r\n\r\n addBacksplashToCornerLine = (backsplashName, type, featureId, backsplashHeight) => {\r\n if (type === \"wall\") {\r\n this.state.withWall = true;\r\n this.state.withBacksplash = false;\r\n } else {\r\n this.state.withBacksplash = true;\r\n this.state.withWall = false;\r\n }\r\n this.state.withEdge = false;\r\n this.state.withId = featureId;\r\n this.state.backsplashHeight = backsplashHeight;\r\n //self.overlay.renderBacksplashText(backsplashName, type); //todo\r\n };\r\n\r\n getBacksplashHeight = () => {\r\n return this.state.backsplashHeight\r\n }\r\n\r\n addMiteredToCornerLine = () => {\r\n for (const attachedItemKey in state.attachedItems) {\r\n this.state.attachedItems[attachedItemKey] = false\r\n }\r\n if (!this.state.isWithMitered) {\r\n this.deleteAttachedItem();\r\n //if (this.getOrientation() === orientation.VERTICAL || this.getOrientation() === orientation.HORIZONTAL) {\r\n this.state.isWithMitered = true;\r\n if (workspace.miteredController === null) {\r\n workspace.miteredController = new MiteredController();\r\n }\r\n this.miteredOverlay = workspace.miteredController.createMiteredOverlay(this);\r\n this.miteredOverlay.init();\r\n\r\n return this.miteredOverlay;\r\n }\r\n\r\n return this.miteredOverlay\r\n };\r\n\r\n updateCornerHoverState(mousePos){\r\n this.state.isHovering = false;\r\n this.state.isCornerLineHovering = false;\r\n\r\n if(this.line.to.angle > 0 && this.isMouseOverAngle(mousePos)) {\r\n //console.log('mouse over outline angle');\r\n this.state.isHovering = true;\r\n }\r\n\r\n if(this.line.to.angle > 0 && this.isMouseOverCornerLine(mousePos)) {\r\n //console.log('mouse over angle purple line');\r\n this.state.isCornerLineHovering = true;\r\n }\r\n }\r\n\r\n export() {\r\n return {\r\n id: this.id,\r\n _state: clone(this._state),\r\n miteredOverlay: this.miteredOverlay ? this.miteredOverlay.export() : null,\r\n }\r\n }\r\n\r\n import(data) {\r\n this.id = data.id;\r\n this._state = data._state;\r\n if (data.miteredOverlay) {\r\n //addMiteredToLine\r\n if (workspace.miteredController === null) {\r\n workspace.miteredController = new MiteredController();\r\n }\r\n this.miteredOverlay = workspace.miteredController.createMiteredOverlay(this);\r\n this.miteredOverlay.import(this, data.mitered);\r\n this.state.isWithMitered = true;\r\n store.dispatch(addMiteredSection(this.miteredOverlay));\r\n }\r\n }\r\n\r\n isMouseOverAngle(mousePos) {\r\n //console.log('state.angleLinePoints', state.angleLinePoints);\r\n let field = this.getOutlineAngleLineField();\r\n let isHovering = pnpolyArray(field, mousePos)\r\n || pnpolyArray([field[0], field[2], field[1], field[3]], mousePos);\r\n\r\n return isHovering || this.state.mouseDown;\r\n }\r\n\r\n isMouseOverCornerLine(mousePos) {\r\n let field = this.getAngleLineField();\r\n let isHovering = pnpolyArray(field, mousePos)\r\n || pnpolyArray([field[0], field[2], field[1], field[3]], mousePos);\r\n\r\n return isHovering || this.state.mouseDown ;\r\n }\r\n\r\n getAngleLineField() {\r\n const angleLinePoints = this.getAnglePoints();\r\n const design = this.line.getDesign();\r\n let lineField;\r\n\r\n if( angleLinePoints.cordCornerFrom === undefined ) {\r\n return {}\r\n }\r\n\r\n let outlineMargin = design.outlineWidth + this.design.additionalOutlineHoverWidth;\r\n\r\n // line /\r\n if(angleLinePoints.cordCornerFrom.y < angleLinePoints.cordCornerTo.y && angleLinePoints.cordCornerFrom.x > angleLinePoints.cordCornerTo.x\r\n || angleLinePoints.cordCornerFrom.y > angleLinePoints.cordCornerTo.y && angleLinePoints.cordCornerFrom.x < angleLinePoints.cordCornerTo.x\r\n ){\r\n lineField = [\r\n [angleLinePoints.cordCornerFrom.x + outlineMargin, angleLinePoints.cordCornerFrom.y + outlineMargin],\r\n [angleLinePoints.cordCornerTo.x + outlineMargin, angleLinePoints.cordCornerTo.y + outlineMargin],\r\n [angleLinePoints.cordCornerFrom.x - outlineMargin, angleLinePoints.cordCornerFrom.y - outlineMargin],\r\n [angleLinePoints.cordCornerTo.x - outlineMargin, angleLinePoints.cordCornerTo.y - outlineMargin],\r\n ];\r\n // line \\\r\n } else {\r\n lineField = [\r\n [angleLinePoints.cordCornerTo.x + outlineMargin, angleLinePoints.cordCornerTo.y - outlineMargin],\r\n [angleLinePoints.cordCornerFrom.x + outlineMargin, angleLinePoints.cordCornerFrom.y - outlineMargin],\r\n [angleLinePoints.cordCornerTo.x - outlineMargin, angleLinePoints.cordCornerTo.y + outlineMargin],\r\n [angleLinePoints.cordCornerFrom.x - outlineMargin, angleLinePoints.cordCornerFrom.y + outlineMargin],\r\n ];\r\n }\r\n\r\n return lineField\r\n }\r\n\r\n getOutlineAngleLineField() {\r\n const angleLinePoints = this.getAnglePoints();\r\n const design = this.line.getDesign();\r\n let lineField;\r\n\r\n if( angleLinePoints.cord1 === undefined ) {\r\n return {}\r\n }\r\n\r\n let outlineMargin = design.outlineWidth + this.design.additionalOutlineHoverWidth;\r\n\r\n // line /\r\n if(angleLinePoints.cord2.y < angleLinePoints.cord3.y && angleLinePoints.cord2.x > angleLinePoints.cord3.x\r\n || angleLinePoints.cord2.y > angleLinePoints.cord3.y && angleLinePoints.cord2.x < angleLinePoints.cord3.x\r\n ){\r\n lineField = [\r\n [angleLinePoints.cord2.x + outlineMargin, angleLinePoints.cord2.y + outlineMargin],\r\n [angleLinePoints.cord3.x + outlineMargin, angleLinePoints.cord3.y + outlineMargin],\r\n [angleLinePoints.cord2.x - outlineMargin, angleLinePoints.cord2.y - outlineMargin],\r\n [angleLinePoints.cord3.x - outlineMargin, angleLinePoints.cord3.y - outlineMargin],\r\n ];\r\n // line \\\r\n } else {\r\n lineField = [\r\n [angleLinePoints.cord3.x + outlineMargin, angleLinePoints.cord3.y - outlineMargin],\r\n [angleLinePoints.cord2.x + outlineMargin, angleLinePoints.cord2.y - outlineMargin],\r\n [angleLinePoints.cord3.x - outlineMargin, angleLinePoints.cord3.y + outlineMargin],\r\n [angleLinePoints.cord2.x - outlineMargin, angleLinePoints.cord2.y + outlineMargin],\r\n ];\r\n }\r\n\r\n return lineField\r\n }\r\n\r\n getAnglePoints() {\r\n const lineDirection = this.line.getParent().getAngleDirection(this.line),\r\n renderTo = this.line.calculateRenderPosition(this.line.to),\r\n renderFrom = this.line.calculateRenderPosition(this.line.from),\r\n nextLine = this.line.getParent().getNextLine(this.line),\r\n nextLineRenderTo = nextLine.calculateRenderPosition(nextLine.to),\r\n design = this.line.getDesign();\r\n\r\n let angleLinePoints = {};\r\n\r\n switch (lineDirection.orientation) {\r\n case \"horizontal\":\r\n case \"vertical\":\r\n case \"NORTHWEST\":\r\n case \"NORTHEAST\":\r\n case \"SOUTHWEST\":\r\n case \"SOUTHEAST\": {\r\n nextLine.setLinePoints();\r\n if (this.line.drawLineTo === undefined || this.line.drawLineFrom === undefined) {\r\n this.line.setLinePoints();\r\n }\r\n\r\n const cord1 = this.line.drawLineTo;\r\n const cord4 = getPointOnTheLine(nextLine.drawLineFrom, nextLine.drawLineTo, design.outlineMargin); // +design.outlineMargin is to prevent overlapping\r\n\r\n // purple corner line\r\n // const renderTo = this.line.calculateRenderPosition(this.line.to);\r\n // const renderFrom = this.line.calculateRenderPosition(this.line.from);\r\n // const radiusMultiplier = Math.sqrt( Math.pow(this.getLength(), 2) * 2) * sqftConfig.scale;\r\n // const nextLineRenderTo = this.line.calculateRenderPosition(nextLine.to);\r\n\r\n const radiusMultiplier = Math.sqrt( Math.pow(this.line.to.angle, 2) * 2);\r\n const radius = radiusMultiplier * sqftConfig.scale;\r\n const isLineCornerInner = isInnerCorner(this.line.getParent(), renderFrom, renderTo, nextLineRenderTo);\r\n const pointIndent = isLineCornerInner ? 4 : -4;\r\n const pointOnTheBlueLine = getPointBetweenPoints(renderTo, renderFrom, radius / 2 + pointIndent);\r\n const pointOnTheBlueNextLine = getPointBetweenPoints(renderTo, nextLineRenderTo, radius / 2 + pointIndent);\r\n const [cord2] = getParallelPoints(renderFrom, pointOnTheBlueLine,-design.outlineMargin);\r\n const [cord3] = getParallelPoints(nextLineRenderTo, pointOnTheBlueNextLine, design.outlineMargin);\r\n\r\n const cordCornerIndent = isLineCornerInner && this.line.to.angle < design.outlineMargin\r\n ? 0\r\n : -3;\r\n const cordCornerFrom = getPointOnTheLine(cord2, cord3, cordCornerIndent * sqftConfig.scale); // set offset from corner\r\n const cordCornerTo = getPointOnTheLine(cord3, cord2, cordCornerIndent * sqftConfig.scale); // set offset from corner\r\n // v2\r\n //let [cordCornerTo, cordCornerFrom] = getParallelPoints(pointOnTheBlueLine, pointOnTheBlueNextLine, -9);\r\n\r\n angleLinePoints = {\r\n cord1: {\r\n x: cord1.x,\r\n y: cord1.y\r\n },\r\n cord2: {\r\n x: cord2.x,\r\n y: cord2.y\r\n },\r\n cord3: {\r\n x: cord3.x,\r\n y: cord3.y\r\n },\r\n cord4: {\r\n x: cord4.x,\r\n y: cord4.y\r\n },\r\n cordCornerFrom: {\r\n x: cordCornerFrom.x,\r\n y: cordCornerFrom.y\r\n },\r\n cordCornerTo: {\r\n x: cordCornerTo.x,\r\n y: cordCornerTo.y\r\n }\r\n };\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n //wtf?\r\n angleLinePoints.cord2.width = sqftConfig.fieldWidth;\r\n angleLinePoints.cord3.width = sqftConfig.fieldWidth;\r\n angleLinePoints.cord2.height = sqftConfig.fieldWidth;\r\n angleLinePoints.cord3.height = sqftConfig.fieldWidth;\r\n\r\n return angleLinePoints;\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nclass UiSelect extends Component {\r\n\r\n static propTypes = {\r\n type: PropTypes.number,\r\n selectItems: PropTypes.array.isRequired,\r\n itemClick: PropTypes.func,\r\n valueText: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\r\n value: PropTypes.any,\r\n withCheckboxes: PropTypes.bool,\r\n className: PropTypes.string,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n toggle: false,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('click', this.handleWrapperBlur);\r\n }\r\n\r\n handleToggleDropdown = () => {\r\n this.setState({\r\n toggle: !this.state.toggle\r\n }, () => {\r\n setTimeout(() => {\r\n this.state.toggle\r\n ? window.addEventListener('click', this.handleWrapperBlur)\r\n : window.removeEventListener('click', this.handleWrapperBlur)\r\n }, 0)\r\n })\r\n };\r\n\r\n handleItemClick = (selectItem) => {\r\n this.handleToggleDropdown();\r\n this.props.itemClick(selectItem);\r\n };\r\n\r\n handleWrapperBlur = (e) => {\r\n const disallowClasses = [\".ui-checkbox, .ui-checkbox__label\", \".ui-select2__dropdown\",\r\n \".ui-select2__dropdown-back\", \".ui-select2__dropdown-list-item\", \".ui-select__dropdown\",\r\n \".ui-select__dropdown-back\", \".ui-select__dropdown-list-item\"];\r\n if (this.state.toggle && !disallowClasses.some(cls => e.target.closest(cls))) {\r\n this.handleToggleDropdown();\r\n }\r\n };\r\n\r\n getSelectText = (itemText) => {\r\n switch (itemText) {\r\n case \"4in\":\r\n case \"6in\":\r\n case \"18in\":\r\n case \"Full\":\r\n return \r\n default:\r\n return itemText\r\n }\r\n };\r\n\r\n render() {\r\n\r\n const baseClass = this.props.type === 1 ? \"ui-select\" : \"ui-select\"+this.props.type;\r\n const dropDownStyles = this.state.toggle\r\n ? { height: this.props.selectItems.length * (this.props.withCheckboxes ? 40 : 34)}\r\n : {};\r\n\r\n return (\r\n
    \r\n
    \r\n {this.props.valueText}\r\n {this.props.value ? (\r\n {this.getSelectText(this.props.value)}\r\n ) : null}\r\n
    \r\n
    \r\n
      \r\n {this.props.children || this.props.selectItems.map((selectItem, index) => {\r\n return (\r\n
    • this.handleItemClick(selectItem)}\r\n className={baseClass+\"__dropdown-list-item\"}>\r\n {this.getSelectText(selectItem.text || selectItem)}\r\n
    • \r\n )\r\n })}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n windowWidth: store.serverState.windowWidth,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n})(UiSelect);\r\n","//********* FILTERS *********//\r\nimport * as types from \"./actionTypes\";\r\n\r\nexport const setAvailableFilterValues = (availableFilterValues) => ({\r\n type: types.SET_AVAILABLE_FILTER_VALUES,\r\n payload: {availableFilterValues}\r\n});\r\n\r\nexport const updateFiltersCount = () => ({\r\n type: types.UPDATE_FILTERS_COUNT\r\n})\r\n","import invert from 'lodash/invert';\r\nimport snakeCase from 'lodash/snakeCase';\r\n\r\nimport LayoutCommonNew from \"../../visComponents/layoutCommonNew\";\r\n\r\nimport {LayoutType, LayoutAbbreviation, METADATA, ShowerHeadTypes} from \"./constants\";\r\nimport zIndexes from \"./zIndex\";\r\n\r\nimport Other from \"./parts/other\";\r\nimport NonVisualizerSubPart from \"./subparts/nonVisualizerSubPart\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\nimport Background from \"./parts/background\";\r\nimport {ShowerAccessories} from \"./parts/showerAccessories\";\r\nimport {Toilet} from \"./parts/toilet\";\r\nimport {WindowParent} from \"./parts/windowParent\";\r\nimport Floor from \"./parts/floor\";\r\nimport Walls from \"./parts/walls\";\r\nimport {Shower} from \"./parts/shower\";\r\nimport {Vanity} from \"./parts/vanity\";\r\nimport {ShowerTubCombo} from \"./parts/showerTubCombo\";\r\nimport Globals from \"./parts/globals\";\r\nimport {Bathtub} from \"./parts/bathtub\";\r\nimport {AVAILABLE_VISUALIZER_TYPES} from \"../../../config\";\r\nimport {Accessories} from \"./parts/accessories\";\r\n\r\nexport class Layout extends LayoutCommonNew {\r\n\r\n /**\r\n * @type {int}\r\n */\r\n defaultType = LayoutType.Layout1;\r\n type = this.defaultType;\r\n scene = \"1\";\r\n visualizerType = AVAILABLE_VISUALIZER_TYPES.bvLook;\r\n localStorageKey = \"bvLookState\";\r\n layersBinding = \"BathroomV5\";\r\n layoutNames = LayoutAbbreviation;\r\n layoutTypes = LayoutType;\r\n zIndexes = zIndexes.layouts;\r\n excludedPartIdsFromHover = [\"background_bg\", \"walls_ceiling\", \"front_wall_crop\", \"left_wall_crop\",\r\n \"right_wall_crop\", \"shower_wall_mirror\", \"window_body\", \"shower_screen\", \"skirting_board\"];\r\n checkMorePointsPartIds = [\"vanity_faucet\", \"vanity_sink\", \"shower_fixture\", \"bathtub_fixture\", \"towel_bar\",\r\n \"robe_hook\", \"towel_ring\", \"soap_dish\", \"corner_shelf\"];\r\n\r\n constructor(props) {\r\n super(props);\r\n this.parts[Background.id] = new Background();\r\n this.parts[Walls.id] = new Walls();\r\n this.parts[Vanity.id] = new Vanity();\r\n this.parts[Shower.id] = new Shower();\r\n this.parts[ShowerTubCombo.id] = new ShowerTubCombo();\r\n this.parts[ShowerAccessories.id] = new ShowerAccessories();\r\n this.parts[Accessories.id] = new Accessories();\r\n this.parts[Bathtub.id] = new Bathtub();\r\n this.parts[Toilet.id] = new Toilet();\r\n this.parts[Floor.id] = new Floor();\r\n this.parts[WindowParent.id] = new WindowParent();\r\n // this.parts[Ceiling.id] = new Ceiling();\r\n this.parts[Globals.id] = new Globals();\r\n this.parts[Other.id] = new Other();\r\n Object.values(this.parts).forEach(part => part.layout = this);\r\n }\r\n\r\n fixFeatureMetaData(dbFeature) {\r\n dbFeature.metaData.RoomLayout = dbFeature.metaData.RoomLayout.map((mValue) => {\r\n mValue = (mValue || \"\").replace(\"Look \", \"\").replace(\"Layout\", \"\");\r\n if (+mValue >= 10) {\r\n if (document.kvConfig.userId === 140067) {\r\n mValue = (+mValue - 10) + \"\"\r\n } else {\r\n dbFeature.isFromAsRoom = true;\r\n }\r\n }\r\n if (!mValue.includes(\"Layout\")) {\r\n mValue = \"Layout\" + mValue\r\n }\r\n return mValue\r\n });\r\n // [\"ShowerSize\", \"SplitWallType\"].forEach(metaName => { // splitWallType should not use 0 as all\r\n [\"ShowerSize\"].forEach(metaName => {\r\n if (Array.isArray(dbFeature.metaData[metaName])) {\r\n if (dbFeature.metaData[metaName].includes(\"0\")) {\r\n dbFeature.metaData[metaName] = [METADATA.ALL]\r\n } else if (dbFeature.metaData[metaName].includes(\"30\")) {\r\n dbFeature.metaData[metaName] = dbFeature.metaData[metaName].map(metaValue => {\r\n if (metaValue === \"30\") { // we have 30 and 36, but they should be the same. we decided to make all 36 as the shower body\r\n return \"36\"\r\n }\r\n return metaValue\r\n })\r\n }\r\n }\r\n });\r\n if (Array.isArray(dbFeature.metaData[\"Side\"]) && dbFeature.metaData[\"Side\"].length) {\r\n dbFeature.metaData.layerPosition = dbFeature.metaData[\"Side\"][0]\r\n }\r\n Object.keys(dbFeature.metaData).forEach(key => {\r\n if (Array.isArray(dbFeature.metaData[key]) && (key !== \"CropCoords\")) {\r\n dbFeature.metaData[key] = dbFeature.metaData[key].flatMap(metaValue => {\r\n if (typeof metaValue === \"string\") {\r\n if (metaValue.includes(\", \")) {\r\n return metaValue.split(\", \")\r\n } else if (metaValue.includes(\",\")) {\r\n return metaValue.split(\",\")\r\n }\r\n }\r\n return metaValue\r\n })\r\n }\r\n });\r\n return dbFeature\r\n }\r\n\r\n getCurrentLayoutName(type = this.type) {\r\n return invert(LayoutType)[type];\r\n }\r\n\r\n getCurrentLayoutAbbreviation() {\r\n return LayoutAbbreviation[this.getCurrentLayoutName()]\r\n }\r\n\r\n addNonVisualizerSubPart(featureGroupName){\r\n const otherParent = this.parts[Other.id];\r\n const partId = snakeCase(featureGroupName);\r\n let relatedItem = otherParent.relatedItems.find(relatedItem => relatedItem.partId === partId);\r\n if (!relatedItem) {\r\n relatedItem = new NonVisualizerSubPart(true, partId, featureGroupName);\r\n relatedItem.getParent = () => otherParent;\r\n otherParent.relatedItems.push(relatedItem);\r\n }\r\n return new DesignNavigationItem(relatedItem.partName, relatedItem)\r\n }\r\n\r\n addSpecificPropertiesToLocalStorage(bvState, useNames, returnAllFeatures= false) {\r\n const shower = this.parts[Shower.id];\r\n const showerTubCombo = this.parts[ShowerTubCombo.id];\r\n bvState[\"shower_head_type\"] = shower ? shower[\"shower_head_type\"] : \"\";\r\n bvState[\"shower_hand_type\"] = shower ? shower[\"shower_hand_type\"] : \"\";\r\n const vanityParent = this.parts[Vanity.id];\r\n bvState[\"vanity_type\"] = vanityParent ? vanityParent[\"vanity_type\"] : \"\";\r\n bvState.shower_tub_combo_is_active = shower.showerTubComboIsActive();\r\n bvState.bottom_tub = showerTubCombo.bottomTub;\r\n bvState.shower_floor_is_active = shower.showerFloorIsActive;\r\n return super.addSpecificPropertiesToLocalStorage(bvState, useNames, returnAllFeatures)\r\n }\r\n\r\n setActiveFeaturesFromObject(bvState, isCartAndUserStatedUpdateNeeded, useNames,\r\n needToChangeLayout, firstLoad, isFake) {\r\n const shower = this.parts[Shower.id];\r\n const showerTubCombo = this.parts[ShowerTubCombo.id];\r\n\r\n if (shower && bvState && bvState[\"shower_head_type\"]) {\r\n if (bvState[\"shower_head_type\"] === ShowerHeadTypes.shower_arm && !bvState[\"shower_arm\"] && bvState[\"shower_fixture\"]) {\r\n bvState[\"shower_head_type\"] = ShowerHeadTypes.shower_fixture; // fix for existing logic\r\n }\r\n shower.setShowerHeadType(bvState[\"shower_head_type\"]);\r\n }\r\n if (shower && bvState && bvState[\"shower_hand_type\"]) {\r\n shower.setShowerHandType(bvState[\"shower_hand_type\"]);\r\n }\r\n const vanityParent = this.parts[Vanity.id];\r\n vanityParent[\"vanity_type\"] = bvState[\"vanity_type\"]; // set it in any case! for standalone sink we are disabling vanity_type\r\n if (bvState[\"shower_tub_combo_is_active\"]) {\r\n showerTubCombo.setShowerTubCombo();\r\n if (bvState.bottom_tub) {\r\n showerTubCombo.bottomTub = bvState.bottom_tub\r\n }\r\n } else if (showerTubCombo.showerTubComboIsActive) {\r\n showerTubCombo.showerTubComboIsActive = false\r\n }\r\n if (bvState[\"shower_floor_is_active\"]) {\r\n shower.showerFloorIsActive = bvState[\"shower_floor_is_active\"];\r\n }\r\n return super.setActiveFeaturesFromObject(bvState, isCartAndUserStatedUpdateNeeded, useNames, needToChangeLayout, firstLoad, isFake)\r\n }\r\n\r\n}\r\n","import {Part} from \"../part\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport { showerAccessoriesThumbnail } from '../../../bvComponent/core/assets';\r\nimport LargeCornerSeat from \"../subparts/showerAccessories/largeCornerSeat\";\r\nimport SoapDish from \"../subparts/showerAccessories/soapDish\";\r\nimport CornerCaddie from \"../subparts/showerAccessories/cornerCaddie\";\r\nimport LargeCornerCaddie from \"../subparts/showerAccessories/largeCornerCaddie\";\r\nimport GrabBar from \"../subparts/showerAccessories/grabBar\";\r\nimport CornerShelf from \"../subparts/showerAccessories/cornerShelf\";\r\nimport ShowerPod from \"../subparts/showerAccessories/showerPod\";\r\nimport Seats from \"../subparts/showerAccessories/seats\";\r\nimport ShowerRod from \"../subparts/showerAccessories/showerRod\";\r\nimport ToiletBrush from \"../subparts/showerAccessories/toiletBrush\";\r\nimport PaperHolder from \"../subparts/showerAccessories/paperHolder\";\r\nimport RobeHook from \"../subparts/showerAccessories/robeHook\";\r\nimport TowelBar from \"../subparts/showerAccessories/towelBar\";\r\nimport TowelRing from \"../subparts/showerAccessories/towelRing\";\r\nimport GlassHolder from \"../subparts/showerAccessories/glassHolder\";\r\nimport TowelRack from \"../subparts/showerAccessories/towelRack\";\r\nimport Wainscoting from \"../subparts/showerAccessories/wainscoting\";\r\nimport Towel from \"../subparts/showerAccessories/towel\";\r\nimport TowelTowelRing from \"../subparts/showerAccessories/towelTowelRing\";\r\nimport TowelTowelBar from \"../subparts/showerAccessories/towelTowelBar\";\r\nimport TowelTowelHook from \"../subparts/showerAccessories/towelTowelHook\";\r\n\r\nexport class ShowerAccessories extends Part {\r\n static id = 'Shower Accessories';\r\n\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partThumbnail = showerAccessoriesThumbnail;\r\n this.partName = 'Shower Accessories';\r\n this.translateId = \"visualizer.bathroom.accessories\";\r\n this.relatedItems = [];\r\n\r\n // related items\r\n this.soapDish = null;\r\n this.largeCornerSeat = null;\r\n this.largeCornerCaddie = null;\r\n this.cornerCaddie = null;\r\n this.smallCornerShelf = null;\r\n this.grabBar = null;\r\n this.showerPod = null;\r\n this.seats = null;\r\n this.showerRod = null;\r\n this.robeHook = null;\r\n this.paperHolder = null;\r\n this.toiletBrush = null;\r\n this.towelBar = null;\r\n this.towel = null;\r\n this.towelTowelRing = null;\r\n this.towelTowelBar = null;\r\n this.towelTowelHook = null;\r\n\r\n //current active caddie type\r\n this.caddie_type = \"corner_shelf\";\r\n this.relatedGroupNames = [\"Soap Dish\", \"Large Corner Seat\", \"Large Corner Caddie\", \"Corner Caddie\", \"Grab Bar\",\r\n \"Robe Hook\", \"Paper Holder\", \"Toilet Brush\", \"Shower Rod\", \"Corner Shelf\", \"Shower Pod\", \"Seats\", \"Towel Bar\",\r\n \"Towel Rack\", \"Towel Ring\", \"Glass Holder\", \"Wainscoting\"];\r\n }\r\n load(dbFeature, loadFeature = true) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Soap Dish\":\r\n relatedItemName = \"soapDish\";\r\n RelatedItemClass = SoapDish;\r\n break;\r\n case \"Large Corner Seat\":\r\n relatedItemName = \"largeCornerSeat\";\r\n RelatedItemClass = LargeCornerSeat;\r\n break;\r\n case \"Large Corner Caddie\":\r\n relatedItemName = \"largeCornerCaddie\";\r\n RelatedItemClass = LargeCornerCaddie;\r\n break;\r\n case \"Corner Caddie\":\r\n relatedItemName = \"cornerCaddie\";\r\n RelatedItemClass = CornerCaddie;\r\n break;\r\n case \"Grab Bar\":\r\n relatedItemName = \"grabBar\";\r\n RelatedItemClass = GrabBar;\r\n break;\r\n case \"Robe Hook\":\r\n relatedItemName = \"robeHook\";\r\n RelatedItemClass = RobeHook;\r\n break;\r\n case \"Paper Holder\":\r\n relatedItemName = \"paperHolder\";\r\n RelatedItemClass = PaperHolder;\r\n break;\r\n case \"Toilet Brush\":\r\n relatedItemName = \"toiletBrush\";\r\n RelatedItemClass = ToiletBrush;\r\n break;\r\n case \"Shower Rod\":\r\n relatedItemName = \"showerRod\";\r\n RelatedItemClass = ShowerRod;\r\n break;\r\n case \"Corner Shelf\":\r\n case \"Small Corner Shelf\":\r\n relatedItemName = \"cornerShelf\";\r\n RelatedItemClass = CornerShelf;\r\n break;\r\n case \"Shower Pod\":\r\n case \"Storage Pod\":\r\n case \"Storage Pods\":\r\n relatedItemName = \"showerPod\";\r\n RelatedItemClass = ShowerPod;\r\n break;\r\n case \"Seats\":\r\n case \"flip-Up Seat\":\r\n case \"Flip-Up Seat\":\r\n relatedItemName = \"seats\";\r\n RelatedItemClass = Seats;\r\n break;\r\n case \"Towel Bar\":\r\n relatedItemName = \"towelBar\";\r\n RelatedItemClass = TowelBar;\r\n break;\r\n case \"Towel Rack\":\r\n relatedItemName = \"towelRack\";\r\n RelatedItemClass = TowelRack;\r\n break;\r\n case \"Towel Ring\":\r\n relatedItemName = \"towelRing\";\r\n RelatedItemClass = TowelRing;\r\n break;\r\n case \"Towel\":\r\n case \"towel\":\r\n case \"Towels\": {\r\n if (dbFeature.metaData && Array.isArray(dbFeature.metaData[\"MountPosition\"]) && dbFeature.metaData[\"MountPosition\"].length) {\r\n if (dbFeature.metaData[\"MountPosition\"][0] === \"TowelRing\") {\r\n relatedItemName = \"towelTowelRing\";\r\n RelatedItemClass = TowelTowelRing;\r\n } else if (dbFeature.metaData[\"MountPosition\"][0] === \"TowelBar\" || dbFeature.metaData[\"MountPosition\"][0] === \"TowelTowelBar\") {\r\n relatedItemName = \"towelTowelBar\";\r\n RelatedItemClass = TowelTowelBar;\r\n } else if (dbFeature.metaData[\"MountPosition\"][0] === \"TowelHook\") {\r\n relatedItemName = \"towelTowelHook\";\r\n RelatedItemClass = TowelTowelHook;\r\n } else {\r\n relatedItemName = \"towel\";\r\n RelatedItemClass = Towel;\r\n }\r\n } else {\r\n relatedItemName = \"towel\";\r\n RelatedItemClass = Towel;\r\n }\r\n break;\r\n }\r\n case \"Glass Holder\":\r\n relatedItemName = \"glassHolder\";\r\n RelatedItemClass = GlassHolder;\r\n break;\r\n case \"Wainscoting\":\r\n relatedItemName = \"wainscoting\";\r\n RelatedItemClass = Wainscoting;\r\n break;\r\n\r\n }\r\n return this.loadCommon(relatedItemName, RelatedItemClass, dbFeature, loadFeature)\r\n }\r\n\r\n}\r\n\r\n","import {IntermediatePart} from \"../../intermediatePart\";\r\nimport {METADATA} from \"../../constants\";\r\nimport {Shower} from \"../../parts/shower\";\r\n\r\nexport default class EnclosureCommon extends IntermediatePart {\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n load(dbFeature) {\r\n if (!dbFeature.metaData[\"BathType\"]) {\r\n dbFeature.metaData[\"BathType\"] = [METADATA.BathtubWithEnclosures]; // remove enclosure top and bottom\r\n }\r\n return super.load(dbFeature);\r\n }\r\n\r\n disabledClick() {\r\n const bathParent = this.getParent();\r\n if (bathParent[\"bathTubBody\"]) {\r\n bathParent[\"bathTubBody\"].disabled = this.disabled || !bathParent[\"bathTubBody\"].canBeEnabled(); // true or check if it can be enabled;\r\n }\r\n [\"enclosureTop\", \"enclosureBottom\"].forEach(relName => {\r\n if (bathParent[relName] && (bathParent[relName].partId !== this.partId)) {\r\n bathParent[relName].disabled = this.disabled;\r\n }\r\n })\r\n }\r\n\r\n setLayers(layout) {\r\n if (this.partId === \"skirting_board\") {\r\n return super.setLayers(layout);\r\n }\r\n const bathtubParent = this.getParent();\r\n if (!bathtubParent || !bathtubParent.bathTubBody || !bathtubParent.bathTubBody.activeFeature\r\n || !bathtubParent.bathTubBody.activeFeature.metaData[\"BathType\"]\r\n || !bathtubParent.bathTubBody.activeFeature.metaData[\"BathType\"].includes(METADATA.BathtubWithEnclosures)) {\r\n super.hideLayers();\r\n return;\r\n }\r\n super.setLayers(layout);\r\n }\r\n\r\n getArrayOfConditions() {\r\n const conditions = super.getArrayOfConditions();\r\n const bathtubParent = this.getParent();\r\n conditions.push({\r\n propName: \"BathType\",\r\n propValue: bathtubParent && bathtubParent.bathTubBody && bathtubParent.bathTubBody.activeFeature\r\n ? bathtubParent.bathTubBody.activeFeature.metaData[\"BathType\"]\r\n : METADATA.BathtubWithoutEnclosures // remove Enclosure Top\r\n });\r\n if (this.partId === \"skirting_board\") {\r\n const layout = bathtubParent.layout;\r\n const showerParent = layout.parts[Shower.id];\r\n const showerSize = showerParent.showerSize();\r\n if (showerParent && showerSize) {\r\n conditions.push({\r\n propName: \"ShowerSize\",\r\n propValue: showerSize\r\n });\r\n }\r\n }\r\n return conditions\r\n }\r\n\r\n}\r\n","import {IntermediatePart} from \"../../intermediatePart\";\r\nimport {getCurrentRoomType} from \"../../../../appLayout\";\r\nimport {LOOK_ROOM_TYPES, VANITY_TYPES} from \"../../constants\";\r\n\r\nexport default class VanityCommon extends IntermediatePart {\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n getArrayOfConditions() {\r\n const vanityParent = this.getParent();\r\n let conditions = super.getArrayOfConditions(); //roomLayout\r\n let vanitySize = vanityParent.counterTopSize(this);\r\n if (this.partId === \"vanity_mirror\") {\r\n const currentVanityTypeFeatureGroup = vanityParent.relatedItems.find(relItem => relItem.partId === vanityParent.vanity_type);\r\n if (currentVanityTypeFeatureGroup && currentVanityTypeFeatureGroup.layerPositions) {\r\n if (vanitySize === \"24\" || (Array.isArray(vanitySize) && vanitySize.includes(\"24\"))) {\r\n if (currentVanityTypeFeatureGroup.layerPositions[\"L\"] && currentVanityTypeFeatureGroup.layerPositions[\"R\"]) {\r\n conditions.push({\r\n propName: \"MirrorShape\",\r\n propValue: \"24D\"\r\n });\r\n } else if (currentVanityTypeFeatureGroup.layerPositions[\"C\"]) {\r\n conditions.push({\r\n propName: \"MirrorShape\",\r\n propValue: \"24S\"\r\n });\r\n }\r\n }\r\n }\r\n }\r\n if (this.partId === \"vanity_backsplash\") {\r\n const activeSideMeta = vanityParent.getActiveMatchingMetaFromRelatedItem(vanityParent.vanity_type, \"Side\");\r\n if (activeSideMeta && activeSideMeta.includes(\"C\")) {\r\n conditions.push({\r\n propName: \"Side\",\r\n propValue: activeSideMeta\r\n });\r\n }\r\n }\r\n if (vanitySize && (getCurrentRoomType() === LOOK_ROOM_TYPES.as)\r\n && !(this.partId === \"vanity_countertop\" && vanityParent.vanity_type !== VANITY_TYPES.vanity_cabinet)) {\r\n conditions.push({\r\n propName: \"VanitySize\",\r\n propValue: vanitySize\r\n })\r\n }\r\n return conditions\r\n }\r\n\r\n}\r\n","import {getMissingFeaturesAndClickThem} from \"./lookNavigation/lookNavigationFunctions\";\r\n\r\nexport const featureCanChangeShowerSize = (feature) => {\r\n if (!feature) {\r\n return false\r\n }\r\n return feature.partId === \"shower_pan_combo\" || feature.partId === \"walk_in_tub\" || feature.partId === \"shower_body\"\r\n}\r\n\r\nconst neededFeatureGroupsToCheckOnShowerSizeChange = document.kvConfig.toolVersion === 5\r\n ? [\"shower_pan_combo\", \"shower_interior_wall\", \"left_wall\", \"right_wall\", \"bathroom_floor\", \"shower_fixture\"]\r\n : [\"shower_wall\", \"split_wall\", \"left_wall_splitter\", \"bathroom_floor\", \"front_wall\", \"shower_fixture\"];\r\n\r\n/**\r\n * Checks needed features on ShowerSize change\r\n * @param clickedFeature {object}\r\n * @returns {promise}\r\n */\r\nexport const searchForSameNameWallsBeforeFeatureApply = async (clickedFeature) => {\r\n if (!clickedFeature.getParent) {\r\n return\r\n }\r\n const showerPanComboParent = clickedFeature.getParent();\r\n if (clickedFeature.metaData[\"ShowerSize\"] && clickedFeature.metaData[\"ShowerSize\"][0] && showerPanComboParent.activeFeature\r\n && showerPanComboParent.activeFeature.metaData[\"ShowerSize\"]\r\n && (showerPanComboParent.activeFeature.metaData[\"ShowerSize\"][0] !== clickedFeature.metaData[\"ShowerSize\"][0])) {\r\n\r\n const showerParent = showerPanComboParent.getParent();\r\n const layout = showerParent.layout;\r\n\r\n let missingFeatures = [];\r\n const newSizeCondition = {\r\n propName: \"ShowerSize\",\r\n propValue: clickedFeature.metaData[\"ShowerSize\"][0]\r\n };\r\n neededFeatureGroupsToCheckOnShowerSizeChange.forEach((partId) => {\r\n const featureGroup = layout.getFeatureGroupByPartId(partId);\r\n if (featureGroup && featureGroup.activeFeature && !featureGroup.activeFeature.matchesMetaForCondition(newSizeCondition)) {\r\n const navigationItemName = featureGroup.activeFeature.getSplittedFeatureName();\r\n const newConditions = featureGroup.getArrayOfConditions().map(condition => {\r\n if (condition.propName === \"ShowerSize\") {\r\n return newSizeCondition\r\n }\r\n return condition\r\n });\r\n const featureFound = featureGroup.features.find(feature => {\r\n return (feature.getSplittedFeatureName() === navigationItemName) && feature.matchesMetaForArrayOfConditions(newConditions)\r\n });\r\n if (!featureFound &&\r\n !(featureGroup && featureGroup.alreadyRequestedFeatureNames && featureGroup.alreadyRequestedFeatureNames.includes(navigationItemName))) {\r\n missingFeatures.push({\r\n relatedItem: featureGroup,\r\n navigationItemName,\r\n setCurrentFeature: false\r\n })\r\n }\r\n }\r\n });\r\n if (missingFeatures.length) {\r\n await getMissingFeaturesAndClickThem(missingFeatures, true)\r\n }\r\n }\r\n\r\n return Promise.resolve();\r\n}\r\n","import flatten from \"lodash/flatten\";\r\n\r\nimport {loaderDisable, loaderEnable} from \"../bvcomponents/ui/loaderView\";\r\nimport {getCurrentLayout} from \"../bvcomponents/appLayout\";\r\nimport {getBathroomVisualizerData, getBvGroupFeatures, getBvGroups, getQtCategories} from \"../api/server-api\";\r\nimport Config from \"../config\";\r\nimport store from \"../store\";\r\nimport {setWizardIsActive} from \"../actions/wizardFunctions\";\r\nimport {addVisualizersLoaded, updateCanvasCount} from \"../actions/actionFunctions\";\r\nimport {getParsedWizardList} from \"../bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardFunctions2\";\r\n\r\nexport const loadAdditionalVisualizerGroups = async (visualizerType) => {\r\n switch (visualizerType) {\r\n case \"bvLook\": {\r\n const additionalFeatures = await Promise.all([\r\n getBvGroupFeatures(\"Decor\", 0, 2000, [], \"\", \"\", null, false, visualizerType),\r\n getBvGroupFeatures(\"Attachment\", 0, 2000, [], \"\", \"\", null, false, visualizerType),\r\n getBvGroupFeatures(\"Towel\", 0, 2000, [], \"\", \"\", null, false, visualizerType),\r\n ]);\r\n // console.log(\"additionalFeatures\", flatten(additionalFeatures));\r\n return flatten(additionalFeatures)\r\n }\r\n // to do add here Kitchen ? not sure\r\n default:\r\n return []\r\n }\r\n}\r\n\r\nexport const parseWizardResponse = (mainResponse, qtCategoriesResponse, visualizerType = null) => {\r\n const useWizard = (Array.isArray(qtCategoriesResponse) && qtCategoriesResponse.some(qtCat => qtCat.useWizard))\r\n // || !Array.isArray(qtCategoriesResponse) || !qtCategoriesResponse.length)\r\n && mainResponse && (mainResponse.wizardData || mainResponse.wizardDataV2)\r\n && getParsedWizardList(mainResponse, true).length > 0;\r\n store.dispatch(setWizardIsActive(useWizard, visualizerType));\r\n}\r\n\r\nconst loadVisualizer = async (visualizerType) => {\r\n try {\r\n window.requestInProcess = true;\r\n loaderEnable();\r\n const layout = getCurrentLayout(visualizerType);\r\n const mainResponse = await Promise.all([\r\n getBathroomVisualizerData(30, true, visualizerType),\r\n getQtCategories(layout.getCurrentLayoutAbbreviation(), visualizerType)\r\n ]);\r\n if (Config.isDevMode()) {\r\n console.log('loadVisualizer mainResponse-->', mainResponse);\r\n }\r\n const groupsResponse = await getBvGroups(visualizerType);\r\n if (Config.isDevMode()) {\r\n console.log('loadVisualizer groupsResponse-->', groupsResponse);\r\n }\r\n const additionalFeatures = await loadAdditionalVisualizerGroups(visualizerType);\r\n layout.loadNewFeatures(Object.assign({}, mainResponse[0], {\r\n features: [...mainResponse[0].features, ...additionalFeatures]\r\n }));\r\n layout.setGroupsItemsCount(groupsResponse.data);\r\n // if (qtCategories.length) { //todo the most painful part // reactivate needed\r\n // this.loadQtCategoriesFeatures(qtCategories); // load features from feature groups\r\n // }\r\n layout.createCustomConfigurations();\r\n layout.setGroupsItemsCount(groupsResponse.data); // not sure why we need it two items but ok, let it be\r\n layout.setDefaultFeatures();\r\n if (Array.isArray(mainResponse[1]) && mainResponse[1].length) {\r\n layout.setQtCategoriesSubparts(mainResponse[1]); // set QtCategories subParts(wait until defaults are set)\r\n // this.loadQtCategoriesFeatures(qtCategories); // load features from feature groups second time!!\r\n // after qtCategories are set (because we need partIdExistInQtCategory logic)\r\n }\r\n parseWizardResponse(mainResponse[0], mainResponse[1], visualizerType);\r\n // const needToLoadDefaultPreset = !document.kvConfig.jobId; // we should apply saved preset, we don't need the default one\r\n const needToLoadDefaultPreset = true; // we should apply this preset because if it's the first time - then it should apply\r\n if (needToLoadDefaultPreset && Array.isArray(mainResponse[0].defaults)) {\r\n const roomPreset = mainResponse[0].defaults.find(preset => preset.loadByTheDefault);\r\n if (roomPreset) {\r\n const layout_type = +roomPreset.layout_type;\r\n const needToChangeLayout = (layout_type || layout_type === 0) && (layout_type !== +layout.type);\r\n if (needToChangeLayout) {\r\n // await this.changeLayout(layout_type, true)\r\n }\r\n await layout.setItemsFromBvState(\r\n roomPreset, false, (bvState) => bvState, true, visualizerType\r\n )\r\n }\r\n }\r\n\r\n layout.initialized = true;\r\n console.log(\"new layout initialized\", layout);\r\n window.requestInProcess = false;\r\n store.dispatch(addVisualizersLoaded(layout.visualizerType));\r\n store.dispatch(updateCanvasCount());\r\n\r\n return true\r\n\r\n } catch (error) {\r\n loaderDisable();\r\n console.log(\"error\", error);\r\n return false\r\n }\r\n}\r\n\r\nexport default loadVisualizer\r\n","import orderBy from \"lodash/orderBy\";\r\nimport {Part} from \"../part\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {cabinetThumbnail} from \"../../../kvComponent/core/assets\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\n\r\nimport Handle from \"../subparts/cabinet/handle\";\r\nimport TopCabinet from \"../subparts/cabinet/topCabinet\";\r\nimport TallCabinet from \"../subparts/cabinet/tallCabinet\";\r\nimport CrownMolding from \"../subparts/cabinet/crownMolding\";\r\nimport BottomCabinet from \"../subparts/cabinet/bottomCabinet\";\r\nimport {setActiveFeaturesBeforeAllWalls} from \"../../../look/lookNavigation/lookNavigationFunctions\";\r\nimport {CABINET_GROUP} from \"../../../kvComponent/core/constants\";\r\nimport BottomHandle from \"../subparts/cabinet/bottomHandle\";\r\nimport TopHandle from \"../subparts/cabinet/topHandle\";\r\nimport DoorHandle from \"../subparts/cabinet/doorHandle\";\r\nimport DrawerHandle from \"../subparts/cabinet/drawerHandle\";\r\n\r\nexport default class Cabinet extends Part {\r\n static id = 'Cabinet';\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'Cabinet';\r\n this.partThumbnail = cabinetThumbnail;\r\n this.partThumbnailSize = \"70%\";\r\n this.translateId = \"visualizer.kitchen.cabinet\";\r\n\r\n // related items\r\n this.handle = null;\r\n this.bottomHandle = null;\r\n this.topHandle = null;\r\n this.topCabinet = null;\r\n this.doorHandle = null;\r\n this.drawerHandle = null;\r\n this.crownMolding = null;\r\n this.relatedGroupNames = [\"Handle\", \"Bottom Handle\", \"Top Handle\", \"Bottom Cabinet\", \"Top Cabinet\", \"Crown Molding\",\r\n \"Door Handle\", \"Drawer Handle\"];\r\n }\r\n\r\n load(dbFeature, loadFeature = true) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Handle\":\r\n relatedItemName = \"handle\";\r\n RelatedItemClass = Handle;\r\n break;\r\n case \"Top Handle\":\r\n relatedItemName = \"topHandle\";\r\n RelatedItemClass = TopHandle;\r\n break;\r\n case \"Bottom Handle\":\r\n relatedItemName = \"bottomHandle\";\r\n RelatedItemClass = BottomHandle;\r\n break;\r\n case \"Bottom Cabinet\":\r\n relatedItemName = \"bottomCabinet\";\r\n RelatedItemClass = BottomCabinet;\r\n break;\r\n case \"Top Cabinet\":\r\n relatedItemName = \"topCabinet\";\r\n RelatedItemClass = TopCabinet;\r\n break;\r\n case \"Tall Cabinet\":\r\n relatedItemName = \"tallCabinet\";\r\n RelatedItemClass = TallCabinet;\r\n break;\r\n case \"Crown Molding\":\r\n relatedItemName = \"crownMolding\";\r\n RelatedItemClass = CrownMolding;\r\n break;\r\n case \"Door Handle\":\r\n relatedItemName = \"doorHandle\";\r\n RelatedItemClass = DoorHandle;\r\n break;\r\n case \"Drawer Handle\":\r\n relatedItemName = \"drawerHandle\";\r\n RelatedItemClass = DrawerHandle;\r\n break;\r\n }\r\n return this.loadCommon(relatedItemName, RelatedItemClass, dbFeature, loadFeature)\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false;\r\n }\r\n\r\n getRelatedItems() {\r\n return orderBy(this.relatedItems, 'layerPriority');\r\n }\r\n\r\n subParts(withHidden = true, hideWithoutFeatures = false) {\r\n return this.getRelatedItems()\r\n .filter(item => this.filterRelatedItem(item, withHidden))\r\n .filter(item => {\r\n if ((item.partId === \"crown_molding\" || item.partId === \"top_handle\") && hideWithoutFeatures && item.allFeaturesReceived) {\r\n return item.navigationSubItems({}, \"\").length\r\n }\r\n return item\r\n })\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n handleSubPartClick() {\r\n\r\n }\r\n\r\n getTopCabinetType() {\r\n if (this.topCabinet && this.topCabinet.activeFeature) {\r\n if (this.topCabinet.activeFeature.dbFeature.metaData[\"Cabinet\"]) {\r\n return this.topCabinet.activeFeature.dbFeature.metaData[\"Cabinet\"][0]\r\n } else {\r\n // console.log(\"no topCabinet metaData!\", this.topCabinet.activeFeature);\r\n return \"\"\r\n }\r\n }\r\n return \"\"\r\n }\r\n\r\n // getTopCabinetLayout() {\r\n //\r\n // if (this.topCabinet && this.topCabinet.activeFeature) {\r\n // if (this.topCabinet.activeFeature.dbFeature.metaData[\"Cabinet\"]) {\r\n // return this.topCabinet.activeFeature.dbFeature.metaData[\"Cabinet\"][0]\r\n // } else {\r\n // // console.log(\"no topCabinet metaData!\", this.topCabinet.activeFeature);\r\n // return \"\"\r\n // }\r\n // }\r\n // return \"ALL\"\r\n // }\r\n\r\n getBottomCabinetType() {\r\n if (this.bottomCabinet && this.bottomCabinet.activeFeature) {\r\n if (this.bottomCabinet.activeFeature.dbFeature.metaData[\"Cabinet\"]) {\r\n return this.bottomCabinet.activeFeature.dbFeature.metaData[\"Cabinet\"][0]\r\n } else {\r\n // console.log(\"no bottomCabinet metaData!\", this.bottomCabinet.activeFeature);\r\n return \"\"\r\n }\r\n }\r\n return \"\"\r\n }\r\n\r\n getTopCabinetApplianceType() {\r\n if (this.topCabinet && this.topCabinet.activeFeature) {\r\n if (this.topCabinet.activeFeature.dbFeature.metaData[\"Appliance\"]) {\r\n return this.topCabinet.activeFeature.dbFeature.metaData[\"Appliance\"][0]\r\n } else {\r\n // console.log(\"no Appliance metaData!\", this.topCabinet.activeFeature);\r\n return \"Hood\"\r\n }\r\n }\r\n return \"Hood\"\r\n }\r\n\r\n getTopCabinetShadowLayout() {\r\n if (this.topCabinet && this.topCabinet.activeFeature && this.topCabinet.activeFeature.dbFeature.metaData[\"CabinetLayout\"]) {\r\n return this.topCabinet.activeFeature.dbFeature.metaData[\"CabinetLayout\"][0]\r\n }\r\n return \"\"\r\n }\r\n\r\n getBottomCabinetApplianceType() {\r\n if (this.bottomCabinet && this.bottomCabinet.activeFeature) {\r\n if (this.bottomCabinet.activeFeature.dbFeature.metaData[\"Appliance\"]) {\r\n return this.bottomCabinet.activeFeature.dbFeature.metaData[\"Appliance\"][0]\r\n } else {\r\n // console.log(\"no Appliance metaData!\", this.bottomCabinet.activeFeature);\r\n return \"Range\"\r\n }\r\n }\r\n return \"Range\"\r\n }\r\n\r\n setPrevioslySelected() {\r\n setActiveFeaturesBeforeAllWalls(CABINET_GROUP);\r\n }\r\n\r\n}\r\n","import {postLixilCalendar, postLixilGetSalesRep} from \"../api/lixil-api\";\r\nimport {defaultTimeValue} from \"./appointmentReducer\";\r\nimport {getLixilCampaignInfo, LIXIL_PRODUCT_TYPES} from \"../lixilLogic/lixilActions\";\r\n\r\nexport const SET_APPOINTMENT_DATE = \"SET_APPOINTMENT_DATE\";\r\nexport const SET_APPOINTMENT_TIME = \"SET_APPOINTMENT_TIME\";\r\nexport const SET_APPOINTMENT_TIME_STEP_ACTIVE = \"SET_APPOINTMENT_TIME_STEP_ACTIVE\";\r\nexport const SET_AVAILABLE_APPOINTMENTS = \"SET_AVAILABLE_APPOINTMENTS\";\r\nexport const SET_APPOINTMENTS_NOT_AVAILABLE = \"SET_APPOINTMENTS_NOT_AVAILABLE\";\r\nexport const SET_SALES_REP_ID = \"SET_SALES_REP_ID\";\r\nexport const setAppointmentDate = (date) => ({\r\n type: SET_APPOINTMENT_DATE,\r\n payload: date\r\n});\r\n\r\nexport const setAppointmentTime = (time = \"\", timeSlot = \"\") => ({\r\n type: SET_APPOINTMENT_TIME,\r\n payload: {time, timeSlot}\r\n});\r\n\r\nexport const setAppointmentTimeStepActive = (timeStepIsActive) => ({\r\n type: SET_APPOINTMENT_TIME_STEP_ACTIVE,\r\n payload: timeStepIsActive\r\n});\r\n\r\nexport const setAvailableAppointments = (availableAppointmentDates) => {\r\n return (dispatch, getState) => {\r\n const {appointmentDate, appointmentTimeSlot} = getState().appointmentState;\r\n let payload = {\r\n availableAppointmentDates\r\n };\r\n if (appointmentDate) {\r\n const formattedToMatchApiDate = formatCalendarDateToMatchAvailableDate(new Date(appointmentDate));\r\n const selectedLixilDateObject = availableAppointmentDates.find(dateObject => {\r\n return dateObject.salesRepAppointmentDate === formattedToMatchApiDate\r\n });\r\n if (!selectedLixilDateObject) {\r\n payload.appointmentDate = \"\";\r\n payload.appointmentTimeSlot = defaultTimeValue;\r\n } else if (!selectedLixilDateObject.salesRepsInSlots.some(timeSlotObject => timeSlotObject.timeSlot === appointmentTimeSlot)) {\r\n payload.appointmentTimeSlot = defaultTimeValue;\r\n }\r\n }\r\n dispatch({\r\n type: SET_AVAILABLE_APPOINTMENTS,\r\n payload\r\n });\r\n }\r\n};\r\n\r\nexport const setAppointmentsNotAvailable = (appointmentsNotAvailable) => ({\r\n type: SET_APPOINTMENTS_NOT_AVAILABLE,\r\n payload: {appointmentsNotAvailable}\r\n});\r\n\r\nexport const setSalesRepId = (salesRepID) => ({\r\n type: SET_SALES_REP_ID,\r\n payload: {salesRepID}\r\n});\r\n\r\nconst getCommonLixilPostData = (store) => {\r\n const {userState, wizardState} = store;\r\n const {userInfo, userLocation} = userState;\r\n\r\n const productId = wizardState.wizardSelectedValues\r\n && wizardState.wizardSelectedValues[1]\r\n && wizardState.wizardSelectedValues[1].selectedFeature\r\n ? wizardState.wizardSelectedValues[1].selectedFeature.id\r\n : 1;\r\n\r\n const productName = getLixilCampaignInfo(store).Product === LIXIL_PRODUCT_TYPES.srBathing\r\n ? LIXIL_PRODUCT_TYPES.srBathing\r\n : \"BR\";\r\n\r\n return {\r\n contactData: {\r\n email: userInfo.email,\r\n firstName: userInfo.firstName,\r\n installationAddress: userInfo.address,\r\n lastName: userInfo.lastName,\r\n phone: userInfo.phone,\r\n zipcode: userLocation.postal || userInfo.postal,\r\n \"city\": userLocation.city,\r\n \"direction\": userLocation.direction,\r\n \"state\": userLocation.state,\r\n \"streetName\": userLocation.streetName,\r\n \"streetNumber\": userLocation.streetNumber,\r\n },\r\n productInfo: {\r\n productId,\r\n productName,\r\n }\r\n }\r\n}\r\n\r\n export const checkLixilCalendar = () => {\r\n return async (dispatch, getState) => {\r\n\r\n const postCalendarData = getCommonLixilPostData(getState());\r\n\r\n // 1) register user\r\n const postCalendarResponse = await postLixilCalendar(postCalendarData);\r\n console.log(\"postCalendarResponse\", postCalendarResponse);\r\n\r\n if (postCalendarResponse && postCalendarResponse.data && postCalendarResponse.data.salesRepAvailability) {\r\n // dispatch(setAppointmentsNotAvailable(false)); // faraday reponse not available for this address\r\n // removed, it should be set when user submitted the form, if they opened calendar and left - it should be noAppt\r\n dispatch(setAvailableAppointments(postCalendarResponse.data.salesRepAvailability.availableSalesReps));\r\n return true\r\n }\r\n\r\n // dispatch(setAvailableAppointments([\r\n // {\r\n // \"salesRepAppointmentDate\": \"2024-03-18\",\r\n // \"salesRepsInSlots\": [\r\n // {\r\n // \"slotEndTime\": \"string\",\r\n // \"slotStartTime\": \"string\",\r\n // \"timeSlot\": \"string\"\r\n // }\r\n // ]\r\n // }\r\n // ]));\r\n\r\n // return !(postCalendarResponse && postCalendarResponse.data && postCalendarResponse.data.salesRepAvailability)\r\n return false\r\n }\r\n }\r\n\r\nexport const getLixilSalesRep = () => {\r\n return async (dispatch, getState) => {\r\n\r\n const store = getState();\r\n const {appointmentState} = store;\r\n\r\n let postData = getCommonLixilPostData(store);\r\n\r\n postData.date = formatCalendarDateToMatchAvailableDate(appointmentState.appointmentDate);\r\n // postData.consultationTime = appointmentState.appointmentTime;\r\n // postData.timeSlotId = 1;\r\n postData.timeSlot = appointmentState.appointmentTimeSlot;\r\n\r\n // 1) register user\r\n const postSalesRepResponse = await postLixilGetSalesRep(postData);\r\n console.log(\"postSalesRepResponse\", postSalesRepResponse);\r\n\r\n if (postSalesRepResponse && postSalesRepResponse.data && postSalesRepResponse.data.salesRepID) {\r\n dispatch(setSalesRepId(postSalesRepResponse.data.salesRepID));\r\n }\r\n\r\n // return !(postCalendarResponse && postCalendarResponse.data && postCalendarResponse.data.salesRepAvailability)\r\n return false\r\n }\r\n}\r\n\r\nexport const formatCalendarDateToMatchAvailableDate = (calendarDate, withSlashes = false) => {\r\n\r\n let day = \"\"+calendarDate.getDate();\r\n let month = \"\"+(calendarDate.getMonth() + 1); // +1 because getMonth returns starting from 0 (January is 0)\r\n let year = \"\"+calendarDate.getFullYear();\r\n\r\n day = day.length === 1 ? \"0\" + day : day;\r\n month = month.length === 1 ? \"0\" + month : month;\r\n\r\n if (withSlashes) {\r\n return month + \"/\" + day + \"/\" + year\r\n }\r\n\r\n return year + \"-\" + month + \"-\" + day\r\n}\r\n\r\nexport const getSelectedLixilDateObject = (appDate, availableAppointmentDates) => {\r\n const formattedToMatchApiDate = formatCalendarDateToMatchAvailableDate(appDate);\r\n const selectedLixilDateObject = availableAppointmentDates.find(dateObject => {\r\n return dateObject.salesRepAppointmentDate === formattedToMatchApiDate\r\n });\r\n if (!selectedLixilDateObject) {\r\n console.log(\"no selected day? try better search, something is incorrect\", );\r\n return null\r\n }\r\n return selectedLixilDateObject\r\n}\r\n","import values from 'lodash/values';\r\nimport invert from 'lodash/invert';\r\nimport snakeCase from 'lodash/snakeCase';\r\n\r\nimport {Bathtub} from \"./parts/bathtub\";\r\nimport FloorNew from \"./parts/floorNew\";\r\nimport {Vanity} from \"./parts/vanity\";\r\nimport {Window} from \"./parts/window\";\r\nimport {Ceiling} from \"./parts/ceiling\";\r\nimport {Toilet} from \"./parts/toilet\";\r\nimport {Shower} from \"./parts/shower\";\r\nimport {ShowerTubCombo} from \"./parts/showerTubCombo\";\r\nimport GlobalShadow from \"./parts/globalShadow\";\r\nimport {Wall} from \"./parts/wall\";\r\nimport ExternallWall from \"./subparts/wall/externallWall\";\r\nimport Layer from \"../../visComponents/layer\";\r\nimport Z from './parts/zIndex';\r\nimport {LayoutType, LayoutAbbreviation, bathTubTypeToString, ShowerComboTubType}\r\n from \"./constants\";\r\n\r\nimport {\r\n largeLayoutShadow,\r\n smallLayoutShadow,\r\n shower30inWallShadow,\r\n LayoutThumbnails\r\n} from './assets';\r\nimport LayoutCommon from \"../../visComponents/layoutCommon\";\r\nimport Other from \"./parts/other\";\r\nimport NonVisualizerSubPart from \"./subparts/nonVisualizerSubPart\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\nimport {ShowerAccessories} from \"./parts/showerAccessories\";\r\nimport store from \"../../../store\";\r\nimport {AVAILABLE_VISUALIZER_TYPES} from \"../../../config\";\r\n\r\nexport class Layout extends LayoutCommon {\r\n\r\n /**\r\n * @type {int}\r\n */\r\n defaultType = LayoutType.Large;\r\n type = this.defaultType;\r\n localStorageKey = \"bvState\";\r\n layersBinding = \"Bathroom\";\r\n visualizerType = AVAILABLE_VISUALIZER_TYPES.Bathroom;\r\n layoutNames = LayoutAbbreviation;\r\n layoutTypes = LayoutType;\r\n layoutThumbnails = LayoutThumbnails;\r\n zIndexes = Z.layouts;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.parts[Vanity.id] = new Vanity();\r\n this.parts[Shower.id] = new Shower();\r\n this.parts[ShowerTubCombo.id] = new ShowerTubCombo();\r\n this.parts[ShowerAccessories.id] = new ShowerAccessories();\r\n this.parts[Bathtub.id] = new Bathtub();\r\n this.parts[Toilet.id] = new Toilet();\r\n this.parts[Wall.id] = new Wall(); // wall should render it's layers only after vanity & shower\r\n this.parts[FloorNew.id] = new FloorNew();\r\n this.parts[Ceiling.id] = new Ceiling();\r\n this.parts[Window.id] = new Window();\r\n this.parts[GlobalShadow.id] = new GlobalShadow();\r\n this.parts[Other.id] = new Other();\r\n\r\n values(this.parts).forEach(part => part.layout = this);\r\n }\r\n\r\n resetEverything() {\r\n const features = this.getFeatures();\r\n const {activeQuoteIndex} = store.getState().quotesState;\r\n features.forEach(parentGroup => {\r\n if (parentGroup instanceof Shower) {\r\n parentGroup.activeSubType_ = \"Custom\";\r\n } else if (parentGroup instanceof ShowerTubCombo) {\r\n parentGroup.showerTubComboIsActive = false;\r\n parentGroup.bottomTub = ShowerComboTubType.bathtub_liner;\r\n }\r\n parentGroup.setDefault(this);\r\n parentGroup.placeholderChanged = false;\r\n parentGroup.firstClick[activeQuoteIndex] = false;\r\n // if (parentGroup instanceof Shower && parentGroup.showerBody.featuresParts) {\r\n // parentGroup.showerBody.featuresParts = {};\r\n // }\r\n if (parentGroup.relatedItems && parentGroup.relatedItems.length) {\r\n parentGroup.relatedItems.forEach((subPart) => {\r\n if (subPart.partId !== 'shower_body') {\r\n subPart.placeholderChanged = false;\r\n subPart.firstClick[activeQuoteIndex] = false;\r\n }\r\n subPart.disabled = subPart.defaultDisabled;\r\n if (Array.isArray(subPart.activeFeatureParts) && subPart.activeFeatureParts.length) {\r\n subPart.activeFeatureParts = subPart.setActiveFeatureParts();\r\n }\r\n if (subPart instanceof ExternallWall) {\r\n subPart.selectedByUser = false\r\n }\r\n });\r\n }\r\n });\r\n this.changeLayout(features);\r\n }\r\n\r\n getCurrentLayoutName(type = this.type) {\r\n return invert(LayoutType)[type];\r\n }\r\n\r\n getCurrentLayoutAbbreviation() {\r\n return LayoutAbbreviation[this.getCurrentLayoutName()]\r\n }\r\n\r\n addCustomLayers = (res) => {\r\n // add global shadow\r\n const globalShadowParent = this.parts[GlobalShadow.id]; // if no global shadow uploaded - take the hardcoded one\r\n if (!globalShadowParent.categoryEnabled || (globalShadowParent.activeFeature\r\n && (!globalShadowParent.activeFeature.layer || !globalShadowParent.activeFeature.layer.src))) {\r\n if (this.type === LayoutType.Large) {\r\n res.push(new Layer(\"bv\", Z.layouts.Large.Global_Shadow_Overlay, largeLayoutShadow, false));\r\n } else if (this.type === LayoutType.Small) {\r\n res.push(new Layer(\"bv\", Z.layouts.Small.Global_Shadow_Overlay, smallLayoutShadow, false));\r\n }\r\n }\r\n\r\n // add right ex wall shadow for complete showers\r\n const shower = this.parts[Shower.id];\r\n if (shower.showerSize() === \"30in\" && shower.activeSubType_ === \"Complete\" && !shower.showerTubComboIsActive() && this.type === LayoutType.Large) {\r\n res.push(new Layer(\"bv\", Z.layouts.Large.Shower.Custom60in.ExtrusionWallRightShadow, shower30inWallShadow, false));\r\n }\r\n return res\r\n }\r\n\r\n /**\r\n * Sets bv features from url\r\n */\r\n\r\n parseUrl(bvState) {\r\n if (bvState.disabled_parts) {\r\n bvState.disabled_parts = bvState.disabled_parts.split(\",\");\r\n }\r\n if (bvState.shower_floor_is_active) {\r\n bvState.shower_floor_is_active = bvState.shower_floor_is_active === \"true\"\r\n }\r\n if (bvState.shower_tub_combo_is_active) {\r\n bvState.shower_tub_combo_is_active = bvState.shower_tub_combo_is_active === \"true\"\r\n }\r\n if (bvState.shower_interior_wall_accent_parts) {\r\n bvState.shower_interior_wall_accent_parts = Number.isInteger(bvState.shower_interior_wall_accent_parts)\r\n ? [bvState.shower_interior_wall_accent_parts]\r\n : bvState.shower_interior_wall_accent_parts.split(\",\")\r\n }\r\n if (bvState.shower_interior_wall_parts) {\r\n bvState.shower_interior_wall_parts = Number.isInteger(bvState.shower_interior_wall_parts)\r\n ? [bvState.shower_interior_wall_parts]\r\n : bvState.shower_interior_wall_parts.split(\",\")\r\n }\r\n if (bvState.left_shower_wall_type) {\r\n switch (bvState.left_shower_wall_type) {\r\n case 30:\r\n case \"30\":\r\n case \"30X8\":\r\n bvState.left_shower_wall_type = \"30X8\";\r\n break;\r\n case 15:\r\n case \"15\":\r\n case \"15X4\":\r\n bvState.left_shower_wall_type = \"15X4\";\r\n break;\r\n case \"Pony\":\r\n bvState.left_shower_wall_type = \"Pony\";\r\n break;\r\n }\r\n }\r\n if (bvState[\"caddie_type\"] && this.parts[ShowerAccessories.id]) {\r\n this.parts[ShowerAccessories.id].caddie_type = bvState[\"caddie_type\"];\r\n }\r\n return bvState\r\n // console.log('restoring bvState from url...', bvState);\r\n }\r\n\r\n /**\r\n *\r\n * @param bvState {object}\r\n * @param setCartAndUserState {boolean}\r\n * @param useNames {boolean}\r\n * @param needToChangeLayout {boolean}\r\n * @param firstLoad {boolean}\r\n */\r\n setActiveFeaturesFromObject(bvState, setCartAndUserState = false, useNames = false, needToChangeLayout = true, firstLoad = false) {\r\n if (bvState) {\r\n\r\n const layout_type = +bvState.layout_type;\r\n needToChangeLayout = needToChangeLayout && (layout_type || layout_type === 0) && (layout_type !== +this.type);\r\n\r\n if (needToChangeLayout) {\r\n this.type = layout_type;\r\n }\r\n\r\n const vanity = this.parts[Vanity.id];\r\n const shower = this.parts[Shower.id];\r\n const showerTubCombo = this.parts[ShowerTubCombo.id];\r\n // const bathtub = this.parts[Bathtub.id];\r\n\r\n // to avoid checks below\r\n bvState.disabled_parts = bvState.disabled_parts || [];\r\n\r\n // const {activeQuoteIndex} = store.getState().quotesState;\r\n\r\n this.getFeatures()\r\n .forEach((parentGroup) => {\r\n if (parentGroup.menuType === 0 && parentGroup.partName !== \"Toilet\") {\r\n const partId = parentGroup.partId;\r\n const hasPreviouslySavedItem = this.selectedLayoutFeatures[layout_type]\r\n && this.selectedLayoutFeatures[layout_type][partId];\r\n if (bvState.hasOwnProperty(partId) || hasPreviouslySavedItem) {\r\n if (useNames) {\r\n parentGroup.activeFeature = parentGroup.getFeatureByPartName(bvState[partId]);\r\n if (!parentGroup.activeFeature && hasPreviouslySavedItem) {\r\n parentGroup.activeFeature = parentGroup.getFeatureByPartName(hasPreviouslySavedItem);\r\n }\r\n } else {\r\n parentGroup.activeFeature = parentGroup.getFeatureById(bvState[partId])\r\n || parentGroup.getDefaultFeature();\r\n }\r\n parentGroup.placeholderChanged = !!parentGroup.activeFeature;\r\n // parentGroup.firstClick[activeQuoteIndex] = !!parentGroup.activeFeature; // this makes steps selected! removed\r\n }\r\n if (parentGroup.activeFeature && firstLoad && !parentGroup.activeFeature.notAvailableInVisualizer) { // Leave non in vis features locked\r\n parentGroup.activeFeature.dbFeature.unlocked = true;\r\n }\r\n parentGroup.disabled = bvState.disabled_parts.includes(partId)\r\n } else {\r\n let subParts = parentGroup.relatedItems;\r\n subParts.forEach((subPart) => {\r\n const partId = subPart.partId;\r\n const hasPreviouslySavedItem = this.selectedLayoutFeatures[layout_type]\r\n && this.selectedLayoutFeatures[layout_type][partId];\r\n if (bvState.hasOwnProperty(partId) || hasPreviouslySavedItem) {\r\n if (useNames) {\r\n subPart.activeFeature = subPart.getFeatureByPartName(bvState[partId]);\r\n if (!subPart.activeFeature && hasPreviouslySavedItem) {\r\n subPart.activeFeature = subPart.getFeatureByPartName(hasPreviouslySavedItem);\r\n }\r\n } else {\r\n subPart.activeFeature = subPart.getFeatureById(bvState[partId]) || parentGroup.getDefaultFeature();\r\n }\r\n subPart.placeholderChanged = !!subPart.activeFeature;\r\n // subPart.firstClick[activeQuoteIndex] = !!subPart.activeFeature // this makes steps selected! removed\r\n if (partId === \"shower_body\") {\r\n subPart.showerBodySelectedByUser = true\r\n }\r\n }\r\n if (subPart.activeFeature && firstLoad && !subPart.activeFeature.notAvailableInVisualizer) {\r\n subPart.activeFeature.dbFeature.unlocked = true;\r\n }\r\n if (firstLoad) {\r\n subPart.placeholderChanged = true;\r\n }\r\n subPart.disabled = bvState.disabled_parts.includes(partId);\r\n })\r\n }\r\n });\r\n\r\n const partPredicate = (part, value) => useNames ? part.partName === value : +part.dbFeature.id === +value;\r\n Object.keys(bvState)\r\n .forEach((bvStateKey) => {\r\n if (bvStateKey === \"vanity_type\") {\r\n vanity.activeSubType_ = bvState.vanity_type.charAt(0).toUpperCase() + bvState.vanity_type.substr(1);\r\n }\r\n if (bvStateKey === \"shower_type\") {\r\n shower.activeSubType_ = bvState.shower_type.charAt(0).toUpperCase() + bvState.shower_type.substr(1);\r\n if (bvState.shower_type === \"complete\" && bvState.shower_parts.length) {\r\n shower.showerBody.activeFeatureParts = bvState.shower_parts.map(shower_part_id => {\r\n return shower.showerBody.featuresParts.find(_ => partPredicate(_, shower_part_id));\r\n });\r\n }\r\n }\r\n if (bvStateKey === \"shower_interior_wall_parts\") {\r\n if (bvState.shower_interior_wall_parts.length && shower.showerInteriorWall) {\r\n shower.showerInteriorWall.activeFeatureParts = bvState.shower_interior_wall_parts\r\n .map((shower_accent_wall_part_id) => {\r\n let accordingPart = shower.showerInteriorWall.featuresParts.find(_ => partPredicate(_, shower_accent_wall_part_id));\r\n if (!accordingPart) {\r\n const showerFeature = shower.showerInteriorWall.features.find(_ => partPredicate(_, bvState.shower_interior_wall));\r\n if (showerFeature) {\r\n const availableParts = shower.showerInteriorWall.setActiveFeatureParts(showerFeature);\r\n if (availableParts.length) {\r\n accordingPart = availableParts[0]\r\n }\r\n }\r\n }\r\n return accordingPart;\r\n });\r\n }\r\n }\r\n if (bvStateKey === \"shower_interior_wall_accent_parts\") {\r\n if (bvState.shower_interior_wall_accent_parts.length && shower.showerInteriorWallAccent) {\r\n shower.showerInteriorWallAccent.activeFeatureParts = bvState.shower_interior_wall_accent_parts\r\n .map((shower_accent_wall_part_id) => {\r\n return shower.showerInteriorWallAccent.featuresParts.find(_ => partPredicate(_, shower_accent_wall_part_id));\r\n });\r\n }\r\n }\r\n if (bvStateKey === \"shower_floor_is_active\") {\r\n shower.showerFloorIsActive = bvState[bvStateKey];\r\n }\r\n if (bvStateKey === \"shower_tub_combo_is_active\") {\r\n showerTubCombo.showerTubComboIsActive = bvState[bvStateKey];\r\n if (bvState[bvStateKey] && bvState.bottom_tub) {\r\n showerTubCombo.bottomTub = bvState.bottom_tub\r\n }\r\n if (bvState[bvStateKey] && bvState.left_shower_wall_type) {\r\n showerTubCombo.leftShowerWallType = bvState.left_shower_wall_type\r\n }\r\n }\r\n });\r\n\r\n if (needToChangeLayout) {\r\n this.changeLayout(this.getFeatures());\r\n }\r\n\r\n if (setCartAndUserState) {\r\n this.setCartStateAndUserStateFromBvState(bvState);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param bvState {object}\r\n * @param useNames {boolean}\r\n * @returns bvState {object}\r\n */\r\n addSpecificPropertiesToLocalStorage(bvState, useNames = false) {\r\n\r\n const bathTub = this.parts[Bathtub.id];\r\n const shower = this.parts[Shower.id];\r\n const showerTubCombo = this.parts[ShowerTubCombo.id];\r\n\r\n bvState.layout_type = this.type;\r\n\r\n Object.keys(bvState).forEach((bvStateKey) => {\r\n // console.log('bvStateKey', bvStateKey);\r\n if (bvStateKey === 'bathtub') {\r\n bvState.bathtub_type = bathTubTypeToString(bathTub.activeSubType_).toLowerCase();\r\n }\r\n if (bvStateKey === 'shower_body') {\r\n bvState.shower_type = shower.activeSubType_.toLowerCase();\r\n bvState.shower_floor_is_active = shower.showerFloorIsActive;\r\n if (bvState.shower_type === \"complete\") {\r\n bvState.shower_parts = shower.showerBody.activeFeatureParts\r\n .filter(activeFeaturePart => activeFeaturePart)\r\n .map(activeFeaturePart => {\r\n return useNames ? activeFeaturePart.partName : activeFeaturePart.dbFeature.id\r\n });\r\n }\r\n bvState.shower_tub_combo_is_active = shower.showerTubComboIsActive();\r\n if (bvState.shower_tub_combo_is_active) {\r\n bvState.bottom_tub = showerTubCombo.bottomTub;\r\n bvState.left_shower_wall_type = showerTubCombo.leftShowerWallType;\r\n }\r\n }\r\n if (bvStateKey === 'shower_interior_wall') {\r\n bvState.shower_interior_wall_parts = shower.showerInteriorWall.activeFeatureParts\r\n .filter(activeFeaturePart => activeFeaturePart)\r\n .map(activeFeaturePart => {\r\n return useNames ? activeFeaturePart.partName : activeFeaturePart.dbFeature.id\r\n });\r\n }\r\n if (bvStateKey === 'shower_interior_wall_accent') {\r\n bvState.shower_interior_wall_accent_parts = shower.showerInteriorWallAccent.activeFeatureParts\r\n .filter(activeFeaturePart => activeFeaturePart && activeFeaturePart.dbFeature)\r\n .map(activeFeaturePart => {\r\n return useNames ? activeFeaturePart.partName : activeFeaturePart.dbFeature.id\r\n });\r\n }\r\n if (bvStateKey === 'vanity') {\r\n bvState.vanity_type = this.parts[Vanity.id].activeSubType_.toLowerCase();\r\n }\r\n });\r\n // console.log('bvState', bvState);\r\n if (bvState[\"pony_wall\"]) {\r\n if (!bvState[\"pony_wall_glass\"] && shower.ponyWallGlass\r\n && shower.ponyWallGlass.activeFeature && shower.ponyWallGlass.activeFeature.dbFeature.id) {\r\n const feature = shower.ponyWallGlass.activeFeature;\r\n bvState[\"pony_wall_glass\"] = useNames ? feature.partName : feature.dbFeature.id\r\n }\r\n }\r\n if (bvState[\"large_corner_caddie\"] || bvState[\"corner_caddie\"] || bvState[\"small_corner_shelf\"]) {\r\n const showerAccessoriesParent = this.parts[ShowerAccessories.id];\r\n if (showerAccessoriesParent) {\r\n bvState.caddie_type = this.parts[ShowerAccessories.id].caddie_type;\r\n }\r\n }\r\n return bvState\r\n }\r\n\r\n addNonVisualizerSubPart(featureGroupName){\r\n const otherParent = this.parts[Other.id];\r\n const partId = snakeCase(featureGroupName);\r\n let relatedItem = otherParent.relatedItems.find(relatedItem => relatedItem.partId === partId);\r\n if (!relatedItem) {\r\n relatedItem = new NonVisualizerSubPart(true, partId, featureGroupName);\r\n relatedItem.getParent = () => otherParent;\r\n otherParent.relatedItems.push(relatedItem);\r\n }\r\n return new DesignNavigationItem(relatedItem.partName, relatedItem)\r\n }\r\n\r\n excludedIndexesFromHover = (layoutType) => {\r\n return [\r\n this.zIndexes[layoutType].Global_Shadow_Overlay, // exclude Global Shadow\r\n this.zIndexes[layoutType].Window_Covering, // exclude Window Coverings\r\n this.zIndexes[layoutType].Ceiling_Lights, // exclude Ceiling_Lights\r\n // this.zIndexes[layoutType].Shower.Custom60in.Wall, // exclude Shower Wall\r\n this.zIndexes[layoutType].Shower.Custom60in.Glass, // exclude Shower Glass\r\n // && layerHovering.layer.zIndex !== Z.this.zIndexes[layoutType].Shower.Custom60in.ExtrusionWallRight // exclude Shower ExtrusionWallRight\r\n // && layerHovering.layer.zIndex !== Z.this.zIndexes[layoutType].Shower.Custom60in.ExtrusionWallLeft // exclude Shower ExtrusionWallLeft\r\n this.zIndexes[layoutType].Shower.Custom60in.Overlay, // exclude Shower Overlay\r\n this.zIndexes[layoutType].Shower.Steam60in.Overlay, // exclude Shower Overlay\r\n this.zIndexes[layoutType].Shower.Custom60in.ExtrusionWallRightShadow, // exclude Right Shower Wall Shadow\r\n this.zIndexes[layoutType].Shower.Custom60in.ExtrusionWallLeftShadow, // exclude Left Shower Wall Shadow\r\n this.zIndexes[layoutType].Shower.Custom60in.ExtrusionWallLeftShadowHalfWall, // exclude Left Shower Wall Shadow\r\n this.zIndexes[layoutType].Shower.Custom60in.ShowerDrain, // exclude Shower Drain\r\n this.zIndexes[layoutType].Shower.Custom60in.PonyWallCapShadow, // exclude Pony Wall Cap Shadow\r\n this.zIndexes[layoutType].Shower.Custom60in.WallShadow, // exclude Shower Interior shadow\r\n this.zIndexes[layoutType].Shower.Custom60in.PonyWallShadow, // exclude Pony Wall Overlay\r\n this.zIndexes[layoutType].Shower.Custom60in.ThresholdShadow, // exclude ThresholdShadow\r\n this.zIndexes[layoutType].Shower.Custom60in.FloorShadow, // exclude ThresholdShadow\r\n ]\r\n }\r\n\r\n}\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport Analytics from './../../analytics';\r\nimport COLOR_THEMES from \"../../colorThemes\";\r\n\r\nconst CheckBox = (props) => {\r\n const {checked, text, onChecked, disabled, textOnly, activeTheme} = props;\r\n return (\r\n
    !disabled && !textOnly && Analytics.sendClickEvent(\"checkbox - \" + text, checked) && onChecked(!checked)}>\r\n
    \r\n {textOnly ? null :\r\n \r\n \r\n \r\n }\r\n {checked ?\r\n
    \r\n :
    }\r\n
    \r\n
    {text}
    \r\n
    \r\n );\r\n};\r\n\r\nCheckBox.displayName = 'CheckBox';\r\n\r\nCheckBox.propTypes = {\r\n checked: PropTypes.bool,\r\n disabled: PropTypes.bool,\r\n textOnly: PropTypes.bool,\r\n text: PropTypes.any,\r\n onChecked: PropTypes.func,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n activeTheme: store.serverState.activeTheme,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CheckBox)\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from \"react-redux\";\r\nimport {setNavigationViewType} from \"../../../../actions/navigationFunctions\";\r\n\r\nclass SelectionMobileViewSwitchers extends Component {\r\n\r\n static propTypes = {\r\n switchers: PropTypes.arrayOf(PropTypes.number).isRequired,\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.props.switchers.includes(2) ? (\r\n \r\n ) : null}\r\n {this.props.switchers.includes(3) ? (\r\n \r\n ) : null}\r\n {this.props.switchers.includes(4) ? (\r\n \r\n ) : null}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n navigationViewType: store.navigationState.navigationViewType,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n setNavigationViewType\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SelectionMobileViewSwitchers);","import React from 'react';\r\nimport * as uuid from \"uuid\";\r\n\r\nimport NavigationItem from \"./navigationItem\";\r\nimport {UserPopupTypes} from \"../constants\";\r\nimport {getFeatureCost, getFeatureIsLocked, isIE} from \"../../../misc/helpers\";\r\nimport Walls from \"../../kvComponent/core/parts/walls\";\r\nimport Cabinet from \"../../kvComponent/core/parts/cabinet\";\r\nimport CountertopGroup from \"../../kvComponent/core/parts/countertopGroup\";\r\nimport CenterIsland from \"../../kvComponent/core/parts/centerIsland\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport {getBvGroupFeatures} from \"../../../api/server-api\";\r\nimport LoadingBar from '../../../lib/react-redux-loading-bar';\r\nimport CommonFeatureItemsMethods from \"../commonFeatureItemsMethods\";\r\nimport {checkIfNeedToReceiveFeaturesIfFiltersApplied} from \"../../../misc/filtersFunctions\";\r\nimport {\r\n displayMaterialsWizardGroupAsFeature,\r\n getMissingWizardFeatures\r\n} from \"../../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\nimport {getAdditionalFeaturesOnScroll} from \"../../../api/look-api\";\r\nimport Config from \"../../../config\";\r\n\r\nexport default class NavigationItemsList extends CommonFeatureItemsMethods { // this class is used for both Desktop & Mobile navigations to avoid method's duplicating\r\n\r\n constructor(props) {\r\n window.itemClickCount = window.itemClickCount || 0;\r\n window.allowClickLeadCapturePopup = true;\r\n super(props);\r\n }\r\n\r\n componentDidMount() {\r\n this.reorderItems(this.props);\r\n const childItem = this.props.childItem && this.props.childItem.part;\r\n if (childItem && childItem.partId.includes(\"countertop\") && this.props.selectedFilters.length && !this.props.activeNavigationFilter) {\r\n const checkPassed = checkIfNeedToReceiveFeaturesIfFiltersApplied(this.props.selectedFilters, childItem);\r\n if (checkPassed) {\r\n this.getFeaturesFromBackendWithFilters(childItem, checkPassed.arrayOfNeededFiltersToReceive, 1);\r\n }\r\n }\r\n }\r\n\r\n itemClick = (item, featureIsLocked, event) => {\r\n const fabricatorSettings = this.props.fabricatorData.settings;\r\n if( !this.props.userIsLoggedIn && fabricatorSettings.clickLeadCapture && (++window.itemClickCount >= fabricatorSettings.clickLeadCount) && window.allowClickLeadCapturePopup) {\r\n this.handleUserLoginClick(UserPopupTypes.NewDesign);\r\n return;\r\n }\r\n this.props.onItemClick(item, false, featureIsLocked, event);\r\n this.forceUpdate();\r\n };\r\n\r\n getActiveFeatureName = (uniquePartNamesArray, parentId, childName, isCabinet = false) => {\r\n const layout = getCurrentLayout();\r\n const parent = layout.parts[parentId];\r\n const activeFeature = parent && parent[childName] && parent[childName].activeFeature;\r\n if (activeFeature) {\r\n uniquePartNamesArray.unshift(activeFeature.getSplittedFeatureName(isCabinet))\r\n }\r\n return uniquePartNamesArray\r\n };\r\n\r\n getSelectedWallIndexes = (childItem, features, selectedFirstItemIndex) => {\r\n if (this.props.isWizard && this.props.currentGroups && displayMaterialsWizardGroupAsFeature(this.props.currentGroups)) {\r\n return []\r\n }\r\n const layout = getCurrentLayout();\r\n let otherSelectedWallsIndexes = [];\r\n let uniquePartNamesArray = [];\r\n const kitchenCabinetPartIds = [\"top_cabinet\", \"bottom_cabinet\", \"center_island_cabinet\"];\r\n if (childItem && childItem.part && childItem.part.isStoneFeature) {\r\n uniquePartNamesArray = layout.getStonesActiveFeatures().map((activeFeature) => {\r\n return activeFeature.cartFeature.getSplittedFeatureName()\r\n });\r\n switch (childItem.part.partId) {\r\n case \"backsplash\": {\r\n const parentItem = childItem.part.getParent();\r\n const rightWall = parentItem && parentItem.rightWall;\r\n if (rightWall && rightWall.activeFeature) {\r\n uniquePartNamesArray.unshift(rightWall.activeFeature.getSplittedFeatureName())\r\n }\r\n uniquePartNamesArray = this.getActiveFeatureName(uniquePartNamesArray, CenterIsland.id, \"countertop\");\r\n uniquePartNamesArray = this.getActiveFeatureName(uniquePartNamesArray, CountertopGroup.id, \"countertop\");\r\n break;\r\n }\r\n case \"countertop\": {\r\n uniquePartNamesArray = this.getActiveFeatureName(uniquePartNamesArray, Walls.id, \"backsplash\");\r\n uniquePartNamesArray = this.getActiveFeatureName(uniquePartNamesArray, CenterIsland.id, \"countertop\");\r\n break;\r\n }\r\n case \"center_island_countertop\": {\r\n uniquePartNamesArray = this.getActiveFeatureName(uniquePartNamesArray, Walls.id, \"backsplash\");\r\n uniquePartNamesArray = this.getActiveFeatureName(uniquePartNamesArray, CountertopGroup.id, \"countertop\");\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n } else if (childItem && childItem.part && (kitchenCabinetPartIds.includes(childItem.part.partId))) {\r\n switch (childItem.part.partId) {\r\n case \"top_cabinet\": {\r\n uniquePartNamesArray = this.getActiveFeatureName(uniquePartNamesArray, CenterIsland.id, \"cabinet\");\r\n uniquePartNamesArray = this.getActiveFeatureName(uniquePartNamesArray, Cabinet.id, \"bottomCabinet\", true);\r\n break;\r\n }\r\n case \"bottom_cabinet\": {\r\n uniquePartNamesArray = this.getActiveFeatureName(uniquePartNamesArray, CenterIsland.id, \"cabinet\");\r\n uniquePartNamesArray = this.getActiveFeatureName(uniquePartNamesArray, Cabinet.id, \"topCabinet\", true);\r\n break;\r\n }\r\n case \"center_island_cabinet\": {\r\n uniquePartNamesArray = this.getActiveFeatureName(uniquePartNamesArray, Cabinet.id, \"topCabinet\", true);\r\n uniquePartNamesArray = this.getActiveFeatureName(uniquePartNamesArray, Cabinet.id, \"bottomCabinet\", true);\r\n break;\r\n }\r\n }\r\n }\r\n // console.log(\"uniquePartNamesArray\", uniquePartNamesArray);\r\n if (uniquePartNamesArray.length) {\r\n uniquePartNamesArray = isIE()\r\n ? uniquePartNamesArray.reduce(function(a,b){if(a.indexOf(b)<0)a.push(b);return a;},[])\r\n : [...uniquePartNamesArray.reduce((p,c) => p.set(c,true),new Map()).keys()]; //remove duplicates\r\n // console.log('uniquePartNamesArray', uniquePartNamesArray);\r\n uniquePartNamesArray.forEach((uniquePartName) => {\r\n let foundIndex = features.findIndex(feature => feature.part && (feature.part.getSplittedFeatureName() === uniquePartName));\r\n if (foundIndex < 0) {\r\n foundIndex = features.findIndex(feature => {\r\n if (!feature.part) {\r\n return false\r\n }\r\n if (childItem.part.partId === \"backsplash\") {\r\n // example: countertop - \"Dymo White 12X24 Glossy\", backsplash - \"Dymo White 12X24 Glossy 4in l\"\r\n return feature.part.partName.includes(uniquePartName)\r\n }\r\n return feature.part.partName === uniquePartName\r\n });\r\n }\r\n if (foundIndex > -1 && selectedFirstItemIndex !== foundIndex) {\r\n otherSelectedWallsIndexes.push(foundIndex);\r\n }\r\n });\r\n }\r\n // console.log(\"otherSelectedWallsIndexes\", otherSelectedWallsIndexes);\r\n return otherSelectedWallsIndexes\r\n };\r\n\r\n getLockedFeature = (activeFeature) => {\r\n const filterValues = activeFeature.part.dbFeature && activeFeature.part.dbFeature.filterValueIDs;\r\n if (filterValues) {\r\n return Object.keys(filterValues).some((filterKey) => {\r\n const filterGroup = this.props.filterGroups.find(group => group.id === +filterKey);\r\n const filterValue = filterGroup && filterGroup.values && filterGroup.values.find(value => value.id === filterValues[filterKey][0]);\r\n return filterValue && filterValue.lockedInWizard\r\n });\r\n }\r\n return false\r\n };\r\n\r\n getActiveItemIndex = (props) => {\r\n const showPlaceHolders = document.bvConfig ? document.bvConfig.showPlaceholders : false;\r\n let isActiveItemIndex = null;\r\n if (props.childItem && props.childItem.part.activeFeature) {\r\n isActiveItemIndex = props.features.findIndex((item) => {\r\n if(item && item.part)\r\n return props.childItem.part.activeFeatureId(showPlaceHolders) === item.part.id()\r\n })\r\n } else if (props.parentItem.part.activeFeature) {\r\n isActiveItemIndex = props.features.findIndex((item) => {\r\n if(item && item.part)\r\n return props.parentItem.part.activeFeatureId(showPlaceHolders) === item.part.id()\r\n })\r\n }\r\n return isActiveItemIndex\r\n };\r\n\r\n getReorderedItems = (indexesToReplace, props, selectedExist = false, isQuotingTool = false) => {\r\n let reOrderedFeatures = props.features;\r\n const featuresToPlaceFirst = indexesToReplace.map(index => reOrderedFeatures[index]).reverse();\r\n const sorted = this.getSortedFeatures(reOrderedFeatures, selectedExist, isQuotingTool);\r\n featuresToPlaceFirst.forEach((navItemToReplace) => {\r\n const currentIndex = sorted.findIndex(navItem => navItem.part.dbFeature.id === navItemToReplace.part.dbFeature.id)\r\n if (currentIndex > -1) {\r\n sorted.splice(currentIndex, 1);\r\n sorted.splice(0, 0, navItemToReplace);\r\n }\r\n });\r\n // console.log(\"sorted\", sorted);\r\n return sorted\r\n };\r\n\r\n checkForSelectedAccessories = (activeFeature, selected) => {\r\n const accessories = [\"large_corner_caddie\", \"corner_caddie\", \"small_corner_shelf\", \"large_corner_seat\"];\r\n if (accessories.includes(activeFeature.partId)) {\r\n if (activeFeature.partId === \"large_corner_seat\") {\r\n if (activeFeature.getParent().getParent().caddie_type === \"large_corner_caddie\") {\r\n selected = false\r\n }\r\n } else if (activeFeature.getParent().getParent().caddie_type !== activeFeature.partId) {\r\n selected = false\r\n }\r\n }\r\n return selected\r\n };\r\n\r\n getFeaturePropertyToSort = (navItem, property) => {\r\n if (property === \"name\") {\r\n return navItem.part.getFeatureName()\r\n }\r\n if (property === \"SortPositionNum\") {\r\n return navItem.part.metaData[property] || 99999;\r\n }\r\n return navItem.part[property];\r\n }\r\n\r\n getNavItemsSortedByProperty = (navItems, property, property2) => {\r\n const order = \"asc\";\r\n // console.log(\"navItems - navItems\", navItems);\r\n navItems = navItems.sort((a,b) => {\r\n let prop1 = this.getFeaturePropertyToSort(a, property);\r\n let prop2 = this.getFeaturePropertyToSort(b, property);\r\n let prop3 = this.getFeaturePropertyToSort(a, property2);\r\n let prop4 = this.getFeaturePropertyToSort(b, property2);\r\n return order === \"asc\"\r\n ? (prop1 > prop2) ? 1 : (prop1 < prop2) ? -1 : (prop3 > prop4) ? 1 : (prop3 < prop4) ? -1 : 0\r\n : (prop1 < prop2) ? 1 : (prop1 > prop2) ? -1 : (prop3 < prop4) ? 1 : (prop3 > prop4) ? -1 : 0\r\n })\r\n // console.log(\"navItems\", navItems);\r\n return navItems\r\n };\r\n\r\n getSortedFeatures = (features, selectedExist = false, isQuotingTool = false) => {\r\n if (this.props.isWizard && this.props.currentGroups && displayMaterialsWizardGroupAsFeature(this.props.currentGroups)) {\r\n return features\r\n }\r\n const {fabricatorData} = this.props;\r\n const fabricatorSettings = fabricatorData.settings;\r\n let newFeatures = [...features.filter(feature => feature && feature.part && feature.part.dbFeature)];\r\n let selectedFeature = null;\r\n if (selectedExist && (!isQuotingTool || (newFeatures[0] && this.checkIfFeatureSelected(newFeatures[0].part, newFeatures[0].part.getParent())))) {\r\n selectedFeature = newFeatures[0];\r\n newFeatures.splice(0, 1);\r\n }\r\n if ((fabricatorSettings.leadCapture && !(document.kvConfig.isBackend && document.kvConfig.jobId && document.kvConfig.canSaveQuote)) && !this.props.isPhoneNumberValidated) {\r\n const unLockedFeatures = newFeatures\r\n .filter(navItem => !getFeatureIsLocked(navItem.part))\r\n .map(navItem => {\r\n navItem.part.featurePrice = getFeatureCost(navItem.part, 1);\r\n return navItem\r\n })\r\n const lockedFeatures = newFeatures\r\n .filter(navItem => getFeatureIsLocked(navItem.part))\r\n .map(navItem => {\r\n navItem.part.featurePrice = getFeatureCost(navItem.part, 1);\r\n return navItem\r\n })\r\n newFeatures = fabricatorSettings.showPricing ? [\r\n ...this.getNavItemsSortedByProperty(unLockedFeatures, \"featurePrice\", \"name\"),\r\n ...this.getNavItemsSortedByProperty(lockedFeatures, \"featurePrice\", \"name\")\r\n ] : [...unLockedFeatures, ...lockedFeatures];\r\n } else if (fabricatorSettings.showPricing && !fabricatorData.hideCheckoutBreakdownCost && !fabricatorData.hidePricesFromUser) {\r\n newFeatures = newFeatures.map(navItem => {\r\n navItem.part.featurePrice = getFeatureCost(navItem.part, 1);\r\n return navItem\r\n })\r\n newFeatures = this.getNavItemsSortedByProperty(newFeatures, \"featurePrice\", \"name\")\r\n } else {\r\n const propertyToSort = newFeatures.some(navItem => navItem.part.metaData[\"SortPositionNum\"]) ? \"SortPositionNum\" : \"name\";\r\n newFeatures = this.getNavItemsSortedByProperty(newFeatures, propertyToSort, \"\");\r\n if (!isQuotingTool && newFeatures.some(navItem => navItem.part.useMatchesFailedNavigation)) {\r\n newFeatures = this.getNavItemsSortedByProperty(newFeatures, \"matchesMetaFailed\");\r\n }\r\n }\r\n if (isQuotingTool) {\r\n // newFeatures = this.getNavItemsSortedByProperty(newFeatures, \"notAvailableInVisualizer\", \"_customDisplayName\")\r\n const inVisFeatures = newFeatures.filter(navFeature => !navFeature.part.notAvailableInVisualizer);\r\n const notInVisFeatures = newFeatures.filter(navFeature => navFeature.part.notAvailableInVisualizer);\r\n newFeatures = [\r\n ...inVisFeatures,\r\n // ...this.getNavItemsSortedByProperty(notInVisFeatures, \"featurePrice\", \"name\")\r\n ...notInVisFeatures\r\n ];\r\n }\r\n if (selectedExist && selectedFeature) {\r\n newFeatures.unshift(selectedFeature)\r\n }\r\n return newFeatures\r\n };\r\n\r\n getNavItemsList = (isMobile) => {\r\n const fabricatorSettings = this.props.fabricatorData.settings;\r\n const showPlaceHolders = document.bvConfig ? document.bvConfig.showPlaceholders : false;\r\n const elements = [];\r\n\r\n const features = this.state.reorderedFeatures.filter(feature => feature);\r\n // console.log('features', features);\r\n\r\n for (let i = 0; i < features.length; i++ ) {\r\n const currentFeature = features[i];\r\n const currentParent = this.props.childItem || this.props.parentItem;\r\n\r\n let isActive = false;\r\n if (((fabricatorSettings.leadCapture && !(document.kvConfig.isBackend && document.kvConfig.jobId && document.kvConfig.canSaveQuote)) && !this.props.isPhoneNumberValidated)\r\n || (showPlaceHolders && currentParent.part.placeholderFeature && !currentParent.part.placeholderChanged)) {\r\n isActive = currentFeature && this.props.activeFeature && currentParent\r\n && currentParent.part.firstClick[this.props.activeQuoteIndex]\r\n && this.props.activeFeature.dbFeature.id === currentFeature.part.id();\r\n } else {\r\n isActive = currentFeature && this.props.activeFeature && this.props.activeFeature.dbFeature.id === currentFeature.part.id();\r\n }\r\n\r\n if (isActive) {\r\n isActive = this.checkForSelectedAccessories(this.props.activeFeature, isActive);\r\n }\r\n\r\n let isPulsating = false;\r\n if ((fabricatorSettings.leadCapture && !(document.kvConfig.isBackend && document.kvConfig.jobId && document.kvConfig.canSaveQuote)) && !this.props.isPhoneNumberValidated\r\n && currentFeature && currentFeature.part.dbFeature.unlocked\r\n && (!this.props.activeFeature || (this.props.childItem && (!this.props.childItem.part.firstClick[this.props.activeQuoteIndex] || !this.props.activeFeature.dbFeature.unlocked)))) {\r\n isPulsating = true\r\n }\r\n\r\n let currentFeatureCartItemsCount = 0;\r\n const currentFeatureId = currentFeature && currentFeature.part.dbFeature.id;\r\n const matchingCartItem = this.props.cartItems.find((cartItem) => {\r\n return currentFeatureId === (cartItem.cartFeature.dbFeature && cartItem.cartFeature.dbFeature.id)\r\n && (cartItem.currentQuote === this.props.activeQuoteIndex);\r\n });\r\n if (matchingCartItem) {\r\n currentFeatureCartItemsCount = matchingCartItem.quantity\r\n }\r\n\r\n elements.push(\r\n this.switchToFeatureInfo(\r\n currentFeature, \"nav-item-info-clicked\", \"visualizer\"\r\n )}\r\n fabricatorData={this.props.fabricatorData}\r\n largeThumbnail={!isMobile && (this.props.navigationViewType === 2)}\r\n currentFeatureCartItemsCount={currentFeatureCartItemsCount}\r\n existInQtCategory={this.props.existInQtCategory}\r\n />\r\n );\r\n }\r\n\r\n return elements\r\n\r\n };\r\n\r\n getLoadingFeatures = () => (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n\r\n // onDesktopNavigationScroll = ({clientHeight, clientWidth, scrollHeight, scrollLeft, scrollTop, scrollWidth}) => {\r\n onDesktopNavigationScroll = ({clientWidth, scrollLeft, scrollWidth}) => {\r\n // console.log(\"clientHeight\", clientHeight);\r\n // console.log(\"clientWidth\", clientWidth);\r\n // console.log(\"scrollHeight\", scrollHeight);\r\n // console.log(\"scrollLeft\", scrollLeft);\r\n // console.log(\"scrollTop\", scrollTop);\r\n // console.log(\"scrollWidth\", scrollWidth);\r\n // console.log(\"=================\");\r\n if ((scrollWidth - Math.ceil(scrollLeft) === clientWidth) || (scrollWidth - Math.floor(scrollLeft) === clientWidth)) {\r\n this.getNewFeaturesOnScroll(scrollLeft);\r\n }\r\n };\r\n\r\n onMobileNavigationScroll = ({clientHeight, scrollHeight, scrollTop}) => {\r\n if ((scrollHeight - Math.ceil(scrollTop) === clientHeight) || (scrollHeight - Math.floor(scrollTop) === clientHeight)) {\r\n this.getNewFeaturesOnScroll(scrollTop)\r\n }\r\n };\r\n\r\n getFeaturesFromBackendWithFilters = (childItem, counterTopFiltersIdsReceived, finalScrollPosition = 1, existingFilterObject = null) => {\r\n const filterObject = existingFilterObject || {\r\n uuid: uuid.v4(),\r\n filterIds: counterTopFiltersIdsReceived, // array of arrays, ex. [[56],[1122,1313]] etc.\r\n featuresReceived: 0,\r\n page: 0\r\n };\r\n if (!existingFilterObject) {\r\n childItem.filterIdsReceived.push(filterObject);\r\n }\r\n\r\n const featuresCountToReceive = 5000;\r\n\r\n if (!this.featureReceivingStarted) {\r\n this.setState({\r\n additionalFeaturesLoading: true\r\n });\r\n this.featureReceivingStarted = true;\r\n getBvGroupFeatures(\r\n childItem.dbName || childItem.partName,\r\n filterObject.page,\r\n featuresCountToReceive,\r\n counterTopFiltersIdsReceived\r\n )\r\n .then((response) => {\r\n if (response && response.length) {\r\n console.log(\"response.data with filters\", response);\r\n childItem.setGroupFeatures(response, featuresCountToReceive, false);\r\n childItem.filterIdsReceived = childItem.filterIdsReceived.map((filtersReceivedObject) => {\r\n if (filtersReceivedObject.uuid === filterObject.uuid) {\r\n filtersReceivedObject.featuresReceived += response.length;\r\n if (response.length < featuresCountToReceive) {\r\n filtersReceivedObject.allFeaturesWithFiltersReceived = true;\r\n } else {\r\n filtersReceivedObject.page++;\r\n }\r\n }\r\n return filtersReceivedObject\r\n });\r\n }\r\n this.finishScrollRequest(finalScrollPosition);\r\n });\r\n }\r\n };\r\n\r\n finishScrollRequest = (finalScrollPosition, shouldUpdateNavItems = true) => {\r\n this.setState({\r\n additionalFeaturesLoading: false\r\n }, () => {\r\n if (shouldUpdateNavItems) {\r\n this.needToUpdate = finalScrollPosition;\r\n this.props.parentUpdate();\r\n }\r\n this.featureReceivingStarted = false;\r\n });\r\n }\r\n\r\n getNewFeaturesOnScroll = async (finalScrollPosition, parentItemPassed = null) => {\r\n\r\n const {useNewWizardFeaturesRequestsLogic, wizardGroup, currentParent} = this.props;\r\n\r\n if (useNewWizardFeaturesRequestsLogic) {\r\n if (this.featureReceivingStarted || currentParent.requestInProgress) {\r\n return;\r\n }\r\n this.featureReceivingStarted = true;\r\n this.setState({\r\n additionalFeaturesLoading: true\r\n });\r\n getMissingWizardFeatures(this.state.reorderedFeatures, wizardGroup, currentParent)\r\n .then(shouldUpdateNavItems => this.finishScrollRequest(finalScrollPosition, shouldUpdateNavItems));\r\n return;\r\n }\r\n\r\n const parentItem = parentItemPassed || this.props.childItem || this.props.parentItem;\r\n if (!parentItem.part) {\r\n return\r\n }\r\n if (this.props.selectedFilters.length) {\r\n const checkPassed = checkIfNeedToReceiveFeaturesIfFiltersApplied(this.props.selectedFilters, parentItem.part, true);\r\n console.log(\"checkPassed\", checkPassed);\r\n if (checkPassed) {\r\n this.getFeaturesFromBackendWithFilters(parentItem.part, checkPassed.filterIds, finalScrollPosition, checkPassed);\r\n }\r\n return\r\n }\r\n if (!parentItem.part.getRealFeaturesReceivedProperty() && !this.featureReceivingStarted) {\r\n this.featureReceivingStarted = true;\r\n this.setState({\r\n additionalFeaturesLoading: true\r\n });\r\n\r\n const additionalFeaturesOnScroll = await getAdditionalFeaturesOnScroll(parentItem.part);\r\n if (Config.isDevMode()) {\r\n console.log(\"additionalFeaturesOnScroll\", additionalFeaturesOnScroll);\r\n }\r\n\r\n this.finishScrollRequest(finalScrollPosition);\r\n }\r\n };\r\n\r\n}\r\n","import {MODULE_CONTEXT_MENU_DIRECTIONS} from \"../../constants\";\r\n\r\nexport const topCabinetModuleSystem = [\r\n [\"18_18_25\", \"18_18_26\"],\r\n [\"18_36_4\", \"18_36_5\"],\r\n [\"36_36_1\"],\r\n [\"18_36_4\", \"18_18_26\", \"18_18_28\"],\r\n [\"18_36_4\", \"18_36_5\"],\r\n [\"18_18_25\", \"18_18_26\"],\r\n [\"18_36_4\", \"18_36_5\"],\r\n [\"36_36_1\"]\r\n];\r\n\r\nexport const bottomCabinetModuleSystem = [\r\n [],\r\n [\"36_12_41\", \"36_24_10\"],\r\n [\"24_12_44\", \"12_36_8\", \"24_12_46\", \"24_12_48\"],\r\n [\"12_36_6\", \"24_36_3\"],\r\n [\"12_36_6\", \"24_12_45\", \"24_24_18\"],\r\n [\"36_36_1\"],\r\n [\"36_12_41\", \"36_24_10\"],\r\n [\"36_12_41\", \"36_12_42\", \"36_12_43\"]\r\n];\r\n\r\nexport const getModuleCombinations = (moduleContextMenuModulePart, direction = MODULE_CONTEXT_MENU_DIRECTIONS.Vertical) => {\r\n // width-height-id\r\n switch (moduleContextMenuModulePart) {\r\n case \"1\":\r\n switch (direction) {\r\n case MODULE_CONTEXT_MENU_DIRECTIONS.Vertical:\r\n return [\"12_36_6-12_36_7-12_36_8\", \"18_36_4-18_36_5\", \"24_36_2-12_36_8\", \"12_36_6-24_36_3\"];\r\n case MODULE_CONTEXT_MENU_DIRECTIONS.Horizontal:\r\n return [\"36_12_41-36_12_42-36_12_43\", \"36_18_19-36_18_20\", \"36_24_9-36_12_43\", \"36_12_41-36_24_10\"];\r\n default:\r\n return []\r\n }\r\n case \"2\":\r\n switch (direction) {\r\n case MODULE_CONTEXT_MENU_DIRECTIONS.Vertical:\r\n return [\"12_36_6-12_36_7\"];\r\n case MODULE_CONTEXT_MENU_DIRECTIONS.Horizontal:\r\n return [\"24_24_15-24_12_48\", \"24_24_17-24_12_44\", \"24_18_21-24_18_23\", \"24_12_44-24_12_46-24_12_48\"];\r\n default:\r\n return []\r\n }\r\n case \"3\":\r\n switch (direction) {\r\n case MODULE_CONTEXT_MENU_DIRECTIONS.Vertical:\r\n return [\"12_36_7-12_36_8\"];\r\n case MODULE_CONTEXT_MENU_DIRECTIONS.Horizontal:\r\n return [\"24_24_16-24_12_49\", \"24_24_18-24_12_45\", \"24_18_22-24_18_24\", \"24_12_45-24_12_47-24_12_49\"];\r\n default:\r\n return []\r\n }\r\n case \"4\":\r\n return [\"18_24_11-18_12_54\", \"18_24_13-18_12_50\", \"18_18_25-18_18_27\", \"18_12_50-18_12_52-18_12_54\"];\r\n case \"5\":\r\n return [\"18_24_12-18_12_55\", \"18_24_14-18_12_51\", \"18_18_26-18_18_28\", \"18_12_51-18_12_53-18_12_55\"];\r\n case \"6\": // left 18\r\n return [\"12_18_29-12_18_32\", \"12_24_35-12_12_62\", \"12_24_38-12_12_56\", \"12_12_56-12_12_59-12_12_62\"];\r\n case \"7\": // center 18\r\n return [\"12_18_30-12_18_33\", \"12_24_36-12_12_63\", \"12_24_39-12_12_57\", \"12_12_57-12_12_60-12_12_63\"];\r\n case \"8\": // right 18\r\n return [\"12_18_31-12_18_34\", \"12_24_37-12_12_64\", \"12_24_40-12_12_58\", \"12_12_58-12_12_61-12_12_64\"];\r\n case \"9\":\r\n switch (direction) {\r\n case MODULE_CONTEXT_MENU_DIRECTIONS.Vertical:\r\n return [\"18_24_11-18_24_12\", \"24_24_15-12_24_37\", \"24_24_16-12_24_35\", \"12_24_35-12_24_36-12_24_37\"];\r\n case MODULE_CONTEXT_MENU_DIRECTIONS.Horizontal:\r\n return [\"36_12_41-36_12_42\"];\r\n default:\r\n return []\r\n }\r\n case \"10\":\r\n switch (direction) {\r\n case MODULE_CONTEXT_MENU_DIRECTIONS.Vertical:\r\n return [\"18_24_13-18_24_14\", \"24_24_17-12_24_40\", \"24_24_18-12_24_38\", \"12_24_38-12_24_39-12_24_40\"];\r\n case MODULE_CONTEXT_MENU_DIRECTIONS.Horizontal:\r\n return [\"36_12_42-36_12_43\"];\r\n default:\r\n return []\r\n }\r\n case \"11\":\r\n return [\"18_12_50-18_12_52\"];\r\n case \"12\":\r\n return [\"18_12_51-18_12_53\"];\r\n case \"13\":\r\n return [\"18_12_52-18_12_54\"];\r\n case \"14\":\r\n return [\"18_12_53-18_12_55\"];\r\n case \"15\":\r\n return [\"12_24_35-12_24_36\", \"24_12_44-24_12_46\"];\r\n case \"16\":\r\n return [\"12_24_36-12_24_37\", \"24_12_45-24_12_47\"];\r\n case \"17\":\r\n return [\"12_24_38-12_24_39\", \"24_12_46-24_12_48\"];\r\n case \"18\":\r\n return [\"12_24_39-12_24_40\", \"24_12_47-24_12_49\"];\r\n case \"19\":\r\n return [\"24_18_21-12_18_31\", \"24_18_22-12_18_29\", \"18_18_25-18_18_26\", \"12_18_29-12_18_30-12_18_31\"];\r\n case \"20\":\r\n return [\"24_18_23-12_18_34\", \"24_18_24-12_18_32\", \"18_18_27-18_18_28\", \"12_18_32-12_18_33-12_18_34\"];\r\n case \"21\":\r\n return [\"12_18_29-12_18_30\"];\r\n case \"22\":\r\n return [\"12_18_30-12_18_31\"];\r\n case \"23\":\r\n return [\"12_18_32-12_18_33\"];\r\n case \"24\":\r\n return [\"12_18_33-12_18_34\"];\r\n case \"35\":\r\n return [\"12_12_56-12_12_59\"];\r\n case \"36\":\r\n return [\"12_12_57-12_12_60\"];\r\n case \"37\":\r\n return [\"12_12_58-12_12_61\"];\r\n case \"38\":\r\n return [\"12_12_59-12_12_62\"];\r\n case \"39\":\r\n return [\"12_12_60-12_12_63\"];\r\n case \"40\":\r\n return [\"12_12_61-12_12_64\"];\r\n case \"41\":\r\n return [\"24_12_44-12_12_58\", \"24_12_45-12_12_56\", \"12_12_56-12_12_57-12_12_58\"];\r\n case \"42\":\r\n return [\"24_12_46-12_12_61\", \"24_12_47-12_12_59\", \"12_12_59-12_12_60-12_12_61\"];\r\n case \"43\":\r\n return [\"24_12_48-12_12_64\", \"24_12_49-12_12_62\", \"12_12_62-12_12_63-12_12_64\"];\r\n case \"44\":\r\n return [\"12_12_56-12_12_57\"];\r\n case \"45\":\r\n return [\"12_12_57-12_12_58\"];\r\n case \"46\":\r\n return [\"12_12_59-12_12_60\"];\r\n case \"47\":\r\n return [\"12_12_60-12_12_61\"];\r\n case \"48\":\r\n return [\"12_12_62-12_12_63\"];\r\n case \"49\":\r\n return [\"12_12_63-12_12_64\"];\r\n case \"50\":\r\n case \"51\":\r\n case \"52\":\r\n case \"53\":\r\n case \"54\":\r\n case \"55\":\r\n case \"56\":\r\n case \"57\":\r\n case \"58\":\r\n case \"59\":\r\n case \"60\":\r\n case \"61\":\r\n case \"62\":\r\n case \"63\":\r\n case \"64\": // no where to split more!\r\n default:\r\n return []\r\n }\r\n};","import {Part} from \"../part\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {applianceThumbnail} from \"../assets\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {PLACEMENTS} from \"../constants\";\r\n\r\nimport Fridge from \"../subparts/appliances/fridge\";\r\nimport FridgeShadow from \"../subparts/appliances/fridgeShadow\";\r\nimport Hood from \"../subparts/appliances/hood\";\r\nimport Dishwasher from \"../subparts/appliances/dishwasher\";\r\nimport Microwave from \"../subparts/appliances/microwave\";\r\nimport Range from \"../subparts/appliances/range\";\r\n\r\nexport default class Appliance extends Part {\r\n static id = 'Appliances';\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'Appliances';\r\n this.partThumbnail = applianceThumbnail;\r\n this.partThumbnailSize = \"70%\";\r\n this.translateId = \"visualizer.kitchen.appliance\";\r\n\r\n // related items\r\n this.fridge = null;\r\n this.fridgeShadow = null;\r\n this.hood = null;\r\n this.microwave = null;\r\n this.range = null;\r\n this.dishwasher = null;\r\n }\r\n\r\n load(dbFeature) {\r\n let relatedItemName = \"\",\r\n shouldLoadInDifferentGroups = false,\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Fridge\":\r\n relatedItemName = \"fridge\";\r\n RelatedItemClass = Fridge;\r\n break;\r\n case \"Fridge Shadow\":\r\n relatedItemName = \"fridgeShadow\";\r\n RelatedItemClass = FridgeShadow;\r\n break;\r\n case \"Hood\":\r\n relatedItemName = \"hood\";\r\n RelatedItemClass = Hood;\r\n break;\r\n case \"Dishwasher\":\r\n relatedItemName = \"dishwasher\";\r\n RelatedItemClass = Dishwasher;\r\n break;\r\n case \"Microwave\":\r\n relatedItemName = \"microwave\";\r\n RelatedItemClass = Microwave;\r\n break;\r\n case \"Range\":\r\n // we still need to keep NotInVisualizer Ranges here\r\n if ((dbFeature.metaData[\"Placement\"] && dbFeature.metaData[\"Placement\"].includes(PLACEMENTS.Countertop)) || !dbFeature.metaData[\"Placement\"]) {\r\n if (!dbFeature.metaData[\"Placement\"]) {\r\n shouldLoadInDifferentGroups = true;\r\n }\r\n relatedItemName = \"range\";\r\n RelatedItemClass = Range;\r\n }\r\n break;\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].load(dbFeature);\r\n return !shouldLoadInDifferentGroups;\r\n }\r\n return false\r\n }\r\n\r\n navigationItem() {\r\n return new DesignNavigationItem('Appliance', this);\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false;\r\n }\r\n\r\n handleSubPartClick() {\r\n\r\n }\r\n\r\n}\r\n","import {Part} from \"../part\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {centerIslandThumbnail} from \"../assets\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {PLACEMENTS} from \"../constants\";\r\n\r\nimport Cabinet from \"../subparts/centerIsland/cabinet\";\r\nimport Countertop from \"../subparts/centerIsland/countertop\";\r\nimport Chairs from \"../subparts/centerIsland/chairs\";\r\nimport Faucet from \"../subparts/centerIsland/faucet\";\r\nimport Sink from \"../subparts/centerIsland/sink\";\r\nimport Handle from \"../subparts/centerIsland/handle\";\r\nimport CenterIslandShadow from \"../subparts/centerIsland/centerIslandshadow\";\r\nimport Stovetop from \"../subparts/centerIsland/stovetop\";\r\nimport Range from \"../subparts/centerIsland/range\";\r\nimport Edge from \"../subparts/centerIsland/edge\";\r\nimport ChairsShadow from \"../subparts/centerIsland/chairsShadow\";\r\n\r\nexport default class CenterIsland extends Part {\r\n static id = 'CenterIsland';\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'CenterIsland';\r\n this.partThumbnail = centerIslandThumbnail;\r\n this.translateId = \"visualizer.kitchen.center_island\";\r\n\r\n // related items\r\n this.cabinet = null;\r\n this.countertop = null;\r\n this.chairs = null;\r\n this.edge = null;\r\n this.faucet = null;\r\n this.sink = null;\r\n this.range = null;\r\n this.centerIslandshadow = null;\r\n }\r\n\r\n load(dbFeature) {\r\n let relatedItemName = \"\",\r\n shouldLoadInDifferentGroups = false,\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Center Island\":\r\n relatedItemName = \"cabinet\";\r\n RelatedItemClass = Cabinet;\r\n break;\r\n case \"Center Island Countertop\":\r\n relatedItemName = \"countertop\";\r\n RelatedItemClass = Countertop;\r\n break;\r\n case \"Center Island Handle\":\r\n relatedItemName = \"handle\";\r\n RelatedItemClass = Handle;\r\n break;\r\n case \"Chair Shadow\":\r\n relatedItemName = \"chairsShadow\";\r\n RelatedItemClass = ChairsShadow;\r\n break;\r\n case \"Chair\":\r\n relatedItemName = \"chairs\";\r\n RelatedItemClass = Chairs;\r\n break;\r\n case \"Center Island Shadow\":\r\n relatedItemName = \"centerIslandshadow\";\r\n RelatedItemClass = CenterIslandShadow;\r\n break;\r\n case \"Faucet\":\r\n if ((dbFeature.metaData[\"Placement\"] && dbFeature.metaData[\"Placement\"].includes(PLACEMENTS.Island)) || !dbFeature.metaData[\"Placement\"]) {\r\n if (!dbFeature.metaData[\"Placement\"]) {\r\n shouldLoadInDifferentGroups = true;\r\n }\r\n relatedItemName = \"faucet\";\r\n RelatedItemClass = Faucet;\r\n }\r\n break;\r\n case \"Sink\":\r\n if ((dbFeature.metaData[\"Placement\"] && dbFeature.metaData[\"Placement\"].includes(PLACEMENTS.Island)) || !dbFeature.metaData[\"Placement\"]) {\r\n if (!dbFeature.metaData[\"Placement\"]) {\r\n shouldLoadInDifferentGroups = true;\r\n }\r\n relatedItemName = \"sink\";\r\n RelatedItemClass = Sink;\r\n }\r\n break;\r\n case \"Stovetop\":\r\n if ((dbFeature.metaData[\"Placement\"] && dbFeature.metaData[\"Placement\"].includes(PLACEMENTS.Island)) || !dbFeature.metaData[\"Placement\"]) {\r\n if (!dbFeature.metaData[\"Placement\"]) {\r\n shouldLoadInDifferentGroups = true;\r\n }\r\n relatedItemName = \"stovetop\";\r\n RelatedItemClass = Stovetop;\r\n }\r\n break;\r\n case \"Range\":\r\n if ((dbFeature.metaData[\"Placement\"] && dbFeature.metaData[\"Placement\"].includes(PLACEMENTS.Island)) || !dbFeature.metaData[\"Placement\"]) {\r\n if (!dbFeature.metaData[\"Placement\"]) {\r\n shouldLoadInDifferentGroups = true;\r\n }\r\n relatedItemName = \"range\";\r\n RelatedItemClass = Range;\r\n }\r\n break;\r\n case \"Edge Profile\":\r\n shouldLoadInDifferentGroups = true;\r\n relatedItemName = \"edge\";\r\n RelatedItemClass = Edge;\r\n break;\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].load(dbFeature);\r\n return !shouldLoadInDifferentGroups;\r\n }\r\n return false\r\n }\r\n\r\n navigationItem() {\r\n return new DesignNavigationItem('Center Island', this);\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false;\r\n }\r\n\r\n subParts(withHidden = true) {\r\n return this.relatedItems\r\n .filter(item => {\r\n if (item.partId === \"center_island_handle\") {\r\n item.visible = item.features.filter(f => f.matchesMetaForArrayOfConditions(item.getArrayOfConditions())).length;\r\n }\r\n return this.filterRelatedItem(item, withHidden)\r\n })\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n handleSubPartClick() {\r\n\r\n }\r\n\r\n getCabinetType() {\r\n return this.cabinet && this.cabinet.activeFeature\r\n ? this.cabinet.activeFeature.dbFeature.metaData[\"Cabinet\"]\r\n : \"\"\r\n }\r\n\r\n getChairType() {\r\n return this.chairs && this.chairs.activeFeature\r\n ? this.chairs.activeFeature.dbFeature.metaData[\"Chair\"]\r\n : \"\"\r\n }\r\n\r\n}\r\n","import React, {useEffect, useState} from \"react\"\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport {getImagePromiseFromLayout} from \"../../misc/getCanvasImageFromLayout\";\r\nimport LoadingSpinner from \"../ui/loadingSpinner\";\r\nimport {useIsMounted} from \"../../misc/helperHooks\";\r\nimport {createFakeLayout} from \"../appLayout\";\r\n\r\nconst LayoutNavigationItem = (props) => {\r\n\r\n const {keyType, layout, handleLayoutItemClick, isMobile, imageOnly} = props;\r\n const type = layout.layoutTypes[keyType];\r\n const [thumbnailUrl, setThumbnailUrl] = useState(\r\n layout.layoutThumbnails && layout.layoutThumbnails[keyType] ? layout.layoutThumbnails[keyType] : \"\"\r\n );\r\n const isMounted = useIsMounted();\r\n\r\n useEffect(() => {\r\n if (!thumbnailUrl) {\r\n const getLayoutThumbnail = async () => {\r\n const fakeLayout = layout.type === type ? layout : createFakeLayout(layout, keyType, layout.scene);\r\n if (layout.type !== type) {\r\n const currentState = layout.getActiveFeaturesAsObject(true, false, true); // get current selected features\r\n await fakeLayout.selectLayout(type, layout.type, currentState, layout.scene, null, true);\r\n }\r\n getImagePromiseFromLayout(fakeLayout)\r\n .then(response => {\r\n // console.log(\"response\", response);\r\n if (isMounted()) {\r\n setThumbnailUrl(response);\r\n }\r\n })\r\n\r\n }\r\n getLayoutThumbnail();\r\n }\r\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n if (imageOnly) {\r\n return \"item.type\"/\r\n }\r\n\r\n if (isMobile) {\r\n const layoutItemWidth = (window.innerWidth / 4 - 10);\r\n const persentageOfWidth = layoutItemWidth * 100 / 720;\r\n const height = 405 * persentageOfWidth / 100;\r\n\r\n return (\r\n
  • handleLayoutItemClick(type)}\r\n >\r\n
    \r\n {thumbnailUrl ? \"item.type\"/ : }\r\n
    \r\n
  • \r\n )\r\n }\r\n\r\n return (\r\n
  • handleLayoutItemClick ? handleLayoutItemClick(type) : null}\r\n style={{backgroundImage: `url(${thumbnailUrl})`}}>\r\n {thumbnailUrl ? null : }\r\n
  • \r\n );\r\n}\r\n\r\nLayoutNavigationItem.propTypes = {\r\n keyType: PropTypes.string.isRequired,\r\n layout: PropTypes.object.isRequired,\r\n handleLayoutItemClick: PropTypes.func,\r\n isMobile: PropTypes.bool,\r\n imageOnly: PropTypes.bool,\r\n}\r\n\r\nexport default LayoutNavigationItem\r\n","import React, {Component} from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport Analytics from './../../analytics';\r\nimport UserLoginButton from './../ui/userLoginButton';\r\nimport {toggleUserPopup, changeMessageBoxState, showSchedulerPopup} from \"../../actions/actionFunctions\";\r\nimport {loaderDisable, loaderEnable} from \"../ui/loaderView\";\r\nimport {saveQuote} from \"../../api/server-api\";\r\nimport {QuoteRequestType, UserPopupTypes} from \"../visComponents/constants\";\r\nimport {renderMessagePopup} from \"../../api/api-popups\";\r\n\r\nclass ScheduleButton extends Component {\r\n\r\n static propTypes = {\r\n buttonLayoutId: PropTypes.oneOf([\"mobileButton\", \"designButtonMenu\", \"mobileNavigationMenu\"]).isRequired,\r\n scheduleButtonOnClick: PropTypes.func\r\n };\r\n\r\n handleScheduleButtonClick = () => {\r\n if (this.props.scheduleButtonOnClick) {\r\n this.props.scheduleButtonOnClick(); // close design button list, etc.\r\n }\r\n const fabricatorSettings = this.props.fabricatorSettings;\r\n Analytics.sendClickEvent(this.getAnalyticsEvent());\r\n if (!this.props.isPhoneNumberValidated) {\r\n UserLoginButton.handleLoginClick({\r\n ...this.props,\r\n userPopupType: UserPopupTypes.Schedule\r\n });\r\n return;\r\n }\r\n if (fabricatorSettings.enableCalendarForScheduling) {\r\n this.props.showSchedulerPopup(true)\r\n } else {\r\n loaderEnable(\"loader.appointmentText\", \"loader.appointmentTitle\");\r\n saveQuote({submit: true, quoteRequestType: QuoteRequestType.ScheduleAnAppointment})\r\n .then(() => {\r\n loaderDisable();\r\n renderMessagePopup(\"userPopup.messageBox.appointmentRequested\");\r\n });\r\n }\r\n };\r\n\r\n getAnalyticsEvent = () => {\r\n switch (this.props.buttonLayoutId) {\r\n case \"mobileButton\":\r\n default:\r\n return \"schedule-appointment-main-button\";\r\n case \"designButtonMenu\":\r\n return \"design-buttons-schedule-button\";\r\n case \"mobileNavigationMenu\":\r\n return \"menu-option-clicked-design-consultation\";\r\n }\r\n };\r\n\r\n getSchedulingButton =() => {\r\n switch (this.props.buttonLayoutId) {\r\n case \"mobileButton\":\r\n default:\r\n return (\r\n \r\n );\r\n case \"designButtonMenu\":\r\n return (\r\n
  • \r\n \r\n
  • \r\n );\r\n case \"mobileNavigationMenu\":\r\n return (\r\n
  • \r\n )\r\n }\r\n };\r\n\r\n render() {\r\n return this.props.fabricatorSettings.enableScheduling ? this.getSchedulingButton() : null\r\n }\r\n\r\n}\r\nconst mapStateToProps = (store) => ({\r\n userIsLoggedIn: store.userState.userIsLoggedIn,\r\n isPhoneNumberValidated: store.userState.isPhoneNumberValidated,\r\n fabricatorSettings: store.fabricatorState.settings\r\n});\r\nexport default connect(mapStateToProps, {\r\n toggleUserPopup,\r\n changeMessageBoxState,\r\n showSchedulerPopup\r\n})(ScheduleButton);\r\n","import {Component} from 'react';\r\n\r\nexport default class Tutorial extends Component {\r\n\r\n changeHighlightRingPosition = (selector, stateProperty = \"ringStyles\") => {\r\n const highlightElement = document.querySelector(selector);\r\n if (highlightElement) {\r\n const rect = highlightElement.getBoundingClientRect();\r\n this.setState({\r\n [stateProperty]: {\r\n left: rect.left,\r\n top: rect.top,\r\n }\r\n })\r\n }\r\n };\r\n\r\n}\r\n","import values from 'lodash/values';\r\nimport invert from 'lodash/invert';\r\nimport snakeCase from 'lodash/snakeCase';\r\n\r\nimport LayoutCommon from \"../../visComponents/layoutCommon\";\r\n\r\nimport {LayoutType, LayoutAbbreviation} from \"./constants\";\r\nimport zIndexes from \"./zIndex\";\r\n\r\nimport Other from \"./parts/other\";\r\nimport NonVisualizerSubPart from \"./subparts/nonVisualizerSubPart\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\nimport Background from \"./parts/background\";\r\nimport {ShowerAccessories} from \"./parts/showerAccessories\";\r\nimport {Toilet} from \"./parts/toilet\";\r\n// import {WindowParent} from \"./parts/windowParent\";\r\nimport Floor from \"./parts/floor\";\r\nimport Walls from \"./parts/walls\";\r\nimport {Shower} from \"./parts/shower\";\r\nimport {Vanity} from \"./parts/vanity\";\r\nimport {ShowerTubCombo} from \"./parts/showerTubCombo\";\r\nimport Globals from \"./parts/globals\";\r\nimport {Bathtub} from \"./parts/bathtub\";\r\nimport {AVAILABLE_VISUALIZER_TYPES, IS_BATHROOM_OLD_BV_SCENE} from \"../../../config\";\r\n\r\nexport class Layout extends LayoutCommon {\r\n\r\n /**\r\n * @type {int}\r\n */\r\n defaultType = LayoutType.Layout1;\r\n type = this.defaultType;\r\n scene = \"1\";\r\n visualizerType = AVAILABLE_VISUALIZER_TYPES.bvScene;\r\n localStorageKey = \"bvSceneState\";\r\n layersBinding = IS_BATHROOM_OLD_BV_SCENE ? \"Bathroom\" : \"BathroomV5\";\r\n layoutNames = LayoutAbbreviation;\r\n layoutTypes = LayoutType;\r\n zIndexes = zIndexes.layouts;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.parts[Background.id] = new Background();\r\n this.parts[Walls.id] = new Walls();\r\n this.parts[Vanity.id] = new Vanity();\r\n this.parts[Shower.id] = new Shower();\r\n this.parts[ShowerTubCombo.id] = new ShowerTubCombo();\r\n this.parts[ShowerAccessories.id] = new ShowerAccessories();\r\n this.parts[Bathtub.id] = new Bathtub();\r\n this.parts[Toilet.id] = new Toilet();\r\n this.parts[Floor.id] = new Floor();\r\n // this.parts[WindowParent.id] = new WindowParent();\r\n // this.parts[Ceiling.id] = new Ceiling();\r\n this.parts[Globals.id] = new Globals();\r\n this.parts[Other.id] = new Other();\r\n values(this.parts).forEach(part => part.layout = this);\r\n }\r\n\r\n fixFeatureMetaData(dbFeature) {\r\n dbFeature.metaData.RoomLayout = dbFeature.metaData.RoomLayout.map((mValue) => {\r\n Object.values(LayoutType).map(val => val + \"\").forEach(stringNum => {\r\n if (mValue === stringNum) {\r\n mValue = \"Layout\" + mValue\r\n }\r\n })\r\n return mValue\r\n })\r\n return dbFeature\r\n }\r\n\r\n getCurrentLayoutName(type = this.type) {\r\n return invert(LayoutType)[type];\r\n }\r\n\r\n getCurrentLayoutAbbreviation() {\r\n return LayoutAbbreviation[this.getCurrentLayoutName()]\r\n }\r\n\r\n addNonVisualizerSubPart(featureGroupName){\r\n const otherParent = this.parts[Other.id];\r\n const partId = snakeCase(featureGroupName);\r\n let relatedItem = otherParent.relatedItems.find(relatedItem => relatedItem.partId === partId);\r\n if (!relatedItem) {\r\n relatedItem = new NonVisualizerSubPart(true, partId, featureGroupName);\r\n relatedItem.getParent = () => otherParent;\r\n otherParent.relatedItems.push(relatedItem);\r\n }\r\n return new DesignNavigationItem(relatedItem.partName, relatedItem)\r\n }\r\n\r\n excludedIndexesFromHover = (layoutType) => {\r\n return [\r\n this.zIndexes[layoutType].Background.BackgroundBG, // exclude Globals\r\n ...Object.keys(this.zIndexes[layoutType].Globals).map(key => this.zIndexes[layoutType].Globals[key])\r\n ]\r\n }\r\n\r\n}\r\n","import uuid from \"uuid\";\r\n\r\nimport * as types from '../actions/actionTypes';\r\nimport featureIsMatchingDisplayLogic from \"../misc/displayLogic\";\r\nimport {COUNTERTOP_GROUP} from \"../bvcomponents/kvComponent/core/constants\";\r\nimport {getMinimumChargeCartItem} from \"../actions/shoppingCartFunctions\";\r\nimport {FEATURE_STONE, getFeatureType} from \"../misc/helpers\";\r\nimport {IS_LIXIL_UI} from \"../config\";\r\nimport {getFeaturePriceProperty} from \"../misc/priceFunctions\";\r\nimport {SQFT_FEATURES} from \"../bvcomponents/sqft/constants\";\r\n\r\nconst initialState = {\r\n cartItems: [],\r\n displayLogicCartItems: [], // read only (is needed to check them every time cart is changed)\r\n applyPopupOpened: false,\r\n activeApplyPopupItems: [],\r\n questionNoClicked: false,\r\n cameFromPage: '',\r\n recentlyViewedItems: [],\r\n checkoutPopupVisible: false,\r\n orderCompletePopupVisible: false,\r\n depositVisible: false,\r\n depositCallback: null,\r\n state: 'design',\r\n showMobileQuotes: false,\r\n showAllQuotesCartItemsList: true,\r\n cartFooterActiveButtonIndex: 0,\r\n cartItemEditFeature: null,\r\n lookRemovedCartItems: [],\r\n cItemsAddedToParentCart: [], // ArrayOf {id: \"string\", quantity: number}\r\n sureTax: 0, // comes in response of sureTax API\r\n sureTaxLoading: false, // shows loader in columns section\r\n manualTaxEntered: false, // if it is true - show always the same manual tax\r\n deliveryList: [], // calculates depending on features shipping cost // {cost, title: \"\", delivery: \"\", code: \"\"}\r\n markUpLogic: \"\", // {retail: {value: 10, type: \"mark_up\"}, cost: {value: 10, type: \"mark_down\"}, discount: {}}\r\n};\r\n\r\nexport const supportedCountries = [{\r\n name: 'USA',\r\n zipCodeRg: /^\\d{5}([ \\-]\\d{4})?$/\r\n}, {\r\n name: 'Canada',\r\n zipCodeRg: /^[ABCEGHJKLMNPRSTVXY]\\\\d[ABCEGHJ-NPRSTV-Z][ ]?\\\\d[ABCEGHJ-NPRSTV-Z]\\\\d$/\r\n}, {\r\n name: 'UK',\r\n zipCodeRg: /^GIR[ ]?0AA|((AB|AL|B|BA|BB|BD|BH|BL|BN|BR|BS|BT|CA|CB|CF|CH|CM|CO|CR|CT|CV|CW|DA|DD|DE|DG|DH|DL|DN|DT|DY|E|EC|EH|EN|EX|FK|FY|G|GL|GY|GU|HA|HD|HG|HP|HR|HS|HU|HX|IG|IM|IP|IV|JE|KA|KT|KW|KY|L|LA|LD|LE|LL|LN|LS|LU|M|ME|MK|ML|N|NE|NG|NN|NP|NR|NW|OL|OX|PA|PE|PH|PL|PO|PR|RG|RH|RM|S|SA|SE|SG|SK|SL|SM|SN|SO|SP|SR|SS|ST|SW|SY|TA|TD|TF|TN|TQ|TR|TS|TW|UB|W|WA|WC|WD|WF|WN|WR|WS|WV|YO|ZE)(\\d[\\dA-Z]?[ ]?\\d[ABD-HJLN-UW-Z]{2}))|BFPO[ ]?\\d{1,4}$/\r\n}];\r\nexport const supportedCountriesList = [\"USA\", \"Canada\", \"UK\"];\r\n\r\nfunction checkForAddToCartFeaturesWithDisplayLogic(cartItems, displayLogicCartItems, currentQuote = 0, allWizardsValues) {\r\n cartItems = cartItems.filter(cartItem => {\r\n return !displayLogicCartItems.some(displayLogicCartItem => {\r\n return (cartItem.cartFeature.dbFeature.id === displayLogicCartItem.cartFeature.dbFeature.id)\r\n && (cartItem.currentQuote === currentQuote)\r\n })\r\n }); // clear existing display logic items for this quote, we will add them below\r\n displayLogicCartItems.forEach((displayLogicCartItem) => {\r\n const {quantity, isMatching} = featureIsMatchingDisplayLogic(displayLogicCartItem.cartFeature, cartItems, currentQuote, allWizardsValues);\r\n if (isMatching) {\r\n cartItems = [...cartItems, Object.assign({}, displayLogicCartItem, {\r\n quantity,\r\n currentQuote,\r\n id: uuid.v4(), // to make sure we have different cart items in different quotes\r\n })]\r\n }\r\n });\r\n return cartItems\r\n}\r\n\r\nfunction removeFakePriceFromCartItems(cartItems) {\r\n cartItems = cartItems.map((cartItem) => {\r\n if (cartItem.displayFakePrice === 0) {\r\n cartItem.displayFakePrice = null\r\n }\r\n return cartItem\r\n });\r\n return cartItems\r\n}\r\n\r\nconst checkLowesHardcodedRulesItems = (cartItems, fabricatorSettings) => {\r\n cartItems = cartItems.filter(cItem => !cItem.isMinimumCharge); // 1) remove already added, and calculate again\r\n const countertopItems = cartItems.filter(cItem => COUNTERTOP_GROUP.includes(cItem.partId)); // 2) countertop group only\r\n\r\n const MINIMUM_SQFT = 23;\r\n const MINIMUM_SQFT_2 = 27;\r\n\r\n if (countertopItems.length) {\r\n const totalQuantity = countertopItems.reduce(((accumulator, cItem) => accumulator + cItem.quantity), 0); // 3) get all quantities\r\n if (totalQuantity <= MINIMUM_SQFT) {\r\n cartItems.push(getMinimumChargeCartItem(countertopItems[0], true)) // 4) add hardcoded 300$\r\n } else if ((totalQuantity >= (MINIMUM_SQFT + 1)) && (totalQuantity <= (MINIMUM_SQFT_2 -1))) { // 5) between 23 and 27 - add additional countertops\r\n let theMostValuableCartItem = countertopItems[0];\r\n countertopItems.forEach(cItem => {\r\n let currentMostFeatureCost = getFeaturePriceProperty(theMostValuableCartItem.cartFeature, fabricatorSettings) * theMostValuableCartItem.quantity;\r\n let cartItemCost = getFeaturePriceProperty(cItem.cartFeature, fabricatorSettings) * cItem.quantity;\r\n if (cartItemCost > currentMostFeatureCost) { // 6) find with the biggest price added\r\n theMostValuableCartItem = cItem\r\n }\r\n });\r\n cartItems.push(getMinimumChargeCartItem(theMostValuableCartItem, false, MINIMUM_SQFT_2 - totalQuantity)) // 7) add hardcoded items\r\n }\r\n }\r\n // console.log(\"cartItems2\", cartItems);\r\n return cartItems\r\n}\r\n\r\nconst checkCaesHardcodedRulesItems = (cartItems) => {\r\n // console.log(\"cartItems before\", cartItems);\r\n cartItems = cartItems.filter(cItem => !cItem.isMinimumCharge); // 1) remove already added, and calculate again\r\n const countertopItems = cartItems.filter(cItem => COUNTERTOP_GROUP.includes(cItem.partId)); // 2) countertop group only\r\n let uniqueSharedNames = [];\r\n countertopItems.forEach(cItem => {\r\n if (!uniqueSharedNames.includes(cItem.cartFeature.dbFeature.sharedFeatureName)) {\r\n uniqueSharedNames.push(cItem.cartFeature.dbFeature.sharedFeatureName)\r\n }\r\n });\r\n const MINIMUM_CAES_SQFT = 25;\r\n\r\n if (uniqueSharedNames.length) {\r\n uniqueSharedNames.forEach(uniqueSharedName => {\r\n const matchingItems = countertopItems.filter(cItem => cItem.cartFeature.dbFeature.sharedFeatureName === uniqueSharedName);\r\n const totalQuantity = matchingItems.reduce(((accumulator, cItem) => accumulator + cItem.quantity), 0); // 3) get all quantities\r\n if (totalQuantity < MINIMUM_CAES_SQFT) {\r\n cartItems.push(getMinimumChargeCartItem(matchingItems[0], false, MINIMUM_CAES_SQFT - totalQuantity))\r\n }\r\n })\r\n }\r\n // console.log(\"cartItems2\", cartItems);\r\n return cartItems\r\n}\r\n\r\nconst allowMinimumChargeConditions = (fabricatorState) => {\r\n return fabricatorState && fabricatorState.settings.showPricing\r\n && !fabricatorState.hideCheckoutBreakdownCost && !fabricatorState.hidePricesFromUser\r\n && document.kvConfig.visualizerType === \"Kitchen\" || document.kvConfig.visualizerType === \"kvScene\"\r\n}\r\n\r\nconst checkHardcodedRulesItems = (fabricatorState, cartItems) => {\r\n if (allowMinimumChargeConditions(fabricatorState)) {\r\n // console.log(\"cartItems\", cartItems);\r\n // console.log(\"fabricatorState\", fabricatorState);\r\n // console.log(\"fabricatorState.settings.language\", fabricatorState.settings.language);\r\n if (fabricatorState.isLowes) {\r\n cartItems = checkLowesHardcodedRulesItems(cartItems, fabricatorState.settings);\r\n } else if (fabricatorState.isCaesarStone && (fabricatorState.settings.language !== \"en-AU\")) {\r\n cartItems = checkCaesHardcodedRulesItems(cartItems)\r\n }\r\n }\r\n return cartItems\r\n}\r\n\r\n/**\r\n * Recalculate slab in cart\r\n * @param {{}} cartItems\r\n * return bool\r\n */\r\nexport const isRecalculateSlabsInCartNeeded = (cartItems) => {\r\n return cartItems.some(cartItem => {\r\n return cartItem.cartFeature && FEATURE_STONE === getFeatureType(cartItem.cartFeature.dbFeature)\r\n });\r\n}\r\n\r\n/**\r\n * Recalculate slab in cart\r\n * @param cartItems {object}\r\n * @returns cartItems {object}\r\n */\r\nconst recalculateSlabsInCart = (cartItems) => {\r\n for (const cartItem of cartItems) {\r\n if (FEATURE_STONE !== getFeatureType(cartItem.cartFeature.dbFeature)) {\r\n continue;\r\n }\r\n const similarFeatures = cartItems.filter((cItem) => {\r\n const isSameNameFeature = cItem.cartFeature.getFeatureName() === cartItem.cartFeature.getFeatureName();\r\n const isBiggestFeature = cItem.isBiggestFeature;\r\n const isQuantityAddedToBiggestFeature = cItem.isQuantityAddedToBiggestFeature;\r\n return isSameNameFeature && (isBiggestFeature || isQuantityAddedToBiggestFeature) // select only features from sqft\r\n });\r\n let biggestFeature = similarFeatures.find(cartItem => cartItem.isBiggestFeature);\r\n if (!biggestFeature && cartItem.isQuantityAddedToBiggestFeature) {\r\n cartItem.isBiggestFeature = true;\r\n }\r\n if (cartItem.isBiggestFeature) {\r\n cartItem.quantity = similarFeatures.reduce((sum, cItem) => {\r\n return cItem.displayFakeQuantity !== undefined\r\n ? cItem.displayFakeQuantity + sum\r\n : cItem.quantity + sum\r\n }, 0);\r\n }\r\n }\r\n return cartItems\r\n}\r\n// const checkStonePricingLogic = (cartItems) => { //TODO[Artem] edit features not working :(\r\n// if (cartItems.some(cartItem => {\r\n// return cartItem.cartFeature && Array.isArray(cartItem.cartFeature.dbFeature.stonePricingId) && cartItem.cartFeature.dbFeature.stonePricingId.length\r\n// })) {\r\n// let commonSharedFeatureNames = []; // {sharedName: \"\", totalQuantity: 0, biggestFeature, sqftFeatures: []}\r\n// cartItems.forEach(cartItem => {\r\n// if (!cartItem.initialQuantity) {\r\n// cartItem.initialQuantity = cartItem.quantity;\r\n// }\r\n// if (cartItem.cartFeature && Array.isArray(cartItem.cartFeature.dbFeature.stonePricingId)\r\n// && cartItem.cartFeature.dbFeature.stonePricingId.length) {\r\n// const alreadyAdded = commonSharedFeatureNames.find(sharedObject => {\r\n// return sharedObject.sharedName === cartItem.cartFeature.dbFeature.sharedFeatureName\r\n// });\r\n// if (!alreadyAdded) {\r\n// commonSharedFeatureNames.push({\r\n// sharedName: cartItem.cartFeature.dbFeature.sharedFeatureName,\r\n// totalQuantity: cartItem.initialQuantity,\r\n// sqftFeatures: [cartItem],\r\n// biggestFeature: cartItem,\r\n// })\r\n// } else {\r\n// alreadyAdded.sqftFeatures.push(cartItem);\r\n// alreadyAdded.totalQuantity += cartItem.initialQuantity;\r\n// if (!alreadyAdded.biggestFeature) {\r\n// alreadyAdded.biggestFeature = cartItem;\r\n// } else if (cartItem.cartFeature.partId === \"countertop\") {\r\n// if (alreadyAdded.biggestFeature.partId !== \"countertop\" || (alreadyAdded.biggestFeature.initialQuantity < cartItem.initialQuantity)) {\r\n// alreadyAdded.biggestFeature = cartItem;\r\n// }\r\n// } else if (cartItem.cartFeature.partId === \"center_island_countertop\") {\r\n// if ((alreadyAdded.biggestFeature.partId !== \"countertop\" && alreadyAdded.biggestFeature.partId !== \"center_island_countertop\")\r\n// || (alreadyAdded.biggestFeature.partId === \"center_island_countertop\" && alreadyAdded.biggestFeature.initialQuantity < cartItem.initialQuantity)) {\r\n// alreadyAdded.biggestFeature = cartItem;\r\n// }\r\n// } else if ((alreadyAdded.biggestFeature.partId !== \"countertop\") && (alreadyAdded.biggestFeature.partId !== \"center_island_countertop\")\r\n// && alreadyAdded.biggestFeature.initialQuantity < cartItem.initialQuantity) { // backsplash\r\n// alreadyAdded.biggestFeature = cartItem;\r\n// }\r\n// }\r\n// }\r\n// });\r\n// if (commonSharedFeatureNames.length) { // 2) set each feature new fake quantity\r\n// commonSharedFeatureNames.forEach(sharedObject => {\r\n// sharedObject.sqftFeatures.forEach(cartItem => {\r\n// cartItem.displayFakeQuantity = cartItem.initialQuantity;\r\n// if (sharedObject.biggestFeature && (cartItem.id === sharedObject.biggestFeature.id)) {\r\n// cartItem.quantity = sharedObject.totalQuantity;\r\n// } else {\r\n// cartItem.quantity = 0;\r\n// }\r\n// });\r\n// });\r\n// }\r\n// }\r\n// return cartItems\r\n// }\r\n\r\nexport default function(state = initialState, action) {\r\n\r\n switch(action.type) {\r\n\r\n case types.ADD_TO_CART: {\r\n const actionCartItems = action.payload.cartItems;\r\n let stateCartItems = state.cartItems;\r\n if (IS_LIXIL_UI) {\r\n stateCartItems = stateCartItems.map(stateCartItem => {\r\n const sameCartItemIndex = actionCartItems.findIndex(newCartItem => {\r\n return newCartItem.cartFeature && stateCartItem.cartFeature &&\r\n (newCartItem.cartFeature.dbFeature.sku && stateCartItem.cartFeature.dbFeature.sku\r\n ? (newCartItem.cartFeature.dbFeature.sku === stateCartItem.cartFeature.dbFeature.sku)\r\n : (newCartItem.cartFeature.dbFeature.sharedFeatureName\r\n && stateCartItem.cartFeature.dbFeature.sharedFeatureName\r\n && (newCartItem.cartFeature.dbFeature.sharedFeatureName === stateCartItem.cartFeature.dbFeature.sharedFeatureName)))\r\n })\r\n if (sameCartItemIndex > -1) {\r\n if (stateCartItem.addedBy !== actionCartItems[sameCartItemIndex].addedBy) {\r\n stateCartItem.quantity = actionCartItems[sameCartItemIndex].quantity || 1;\r\n stateCartItem.addedBy = actionCartItems[sameCartItemIndex].addedBy;\r\n } else {\r\n stateCartItem.quantity += actionCartItems[sameCartItemIndex].quantity || 1;\r\n }\r\n actionCartItems.splice(sameCartItemIndex, 1);\r\n }\r\n return stateCartItem\r\n })\r\n }\r\n let newCartItems = [...stateCartItems, ...actionCartItems];\r\n\r\n if (state.displayLogicCartItems.length) {\r\n const currentQuote = actionCartItems.length\r\n ? actionCartItems[0].currentQuote\r\n : newCartItems.length\r\n ? newCartItems[0].currentQuote\r\n : 0;\r\n newCartItems = checkForAddToCartFeaturesWithDisplayLogic(newCartItems, state.displayLogicCartItems, currentQuote, action.payload.allWizardsValues);\r\n }\r\n newCartItems = checkHardcodedRulesItems(action.payload.fabricatorState, newCartItems);\r\n // newCartItems = checkStonePricingLogic(newCartItems);\r\n return Object.assign({}, state, {\r\n cartItems: newCartItems\r\n });\r\n }\r\n case types.SET_STATE_TO_QUOTE:\r\n return Object.assign({}, state, {\r\n state: \"quote\"\r\n });\r\n\r\n case types.ADD_DISPLAY_LOGIC_CART_ITEM:\r\n return Object.assign({}, state, {\r\n displayLogicCartItems: [...state.displayLogicCartItems.filter((oldCartItem) => {\r\n return (oldCartItem.cartFeature.dbFeature.id !== action.payload.cartItem.cartFeature.dbFeature.id)\r\n // && (oldCartItem.currentQuote !== action.payload.cartItem.currentQuote)\r\n // removed, why it is added? we can have different add to cart features in the same quote\r\n }), action.payload.cartItem]\r\n });\r\n\r\n case types.ADD_TO_RECENTLY_VIEWED:\r\n // console.log('action.payload.cartItem', action.payload.cartItem);\r\n return Object.assign({}, state, {\r\n recentlyViewedItems: (state.recentlyViewedItems.every(oldItem => oldItem.dbFeature.id !== action.payload.feature.dbFeature.id))\r\n ? [...state.recentlyViewedItems, action.payload.feature]\r\n : [...state.recentlyViewedItems]\r\n });\r\n\r\n case types.CHANGE_CART_QUANTITY: {\r\n // console.log('action.payload.cartItem', action.payload.cartItem);\r\n let newCartItems = [...state.cartItems.map((cartItem) => {\r\n if (cartItem.id === action.payload.cartItem.id) {\r\n cartItem.quantity = action.payload.quantity;\r\n if (action.payload.removeFakeQuantity && Number.isInteger(cartItem.displayFakeQuantity)) {\r\n cartItem.displayFakeQuantity = null;\r\n }\r\n } else if (cartItem.bundleParentId && (cartItem.bundleParentId === action.payload.cartItem.id)) {\r\n const quantity = action.payload.cartItem.cartFeature.dbFeature.bundledFeatureQuantities\r\n ? action.payload.cartItem.cartFeature.dbFeature.bundledFeatureQuantities[cartItem.cartFeature.dbFeature.id] || 1\r\n : 1;\r\n cartItem.quantity = quantity * action.payload.quantity;\r\n }\r\n return cartItem\r\n })];\r\n if (state.displayLogicCartItems.length) {\r\n newCartItems = checkForAddToCartFeaturesWithDisplayLogic(newCartItems, state.displayLogicCartItems, action.payload.cartItem.currentQuote, action.payload.allWizardsValues)\r\n }\r\n newCartItems = checkHardcodedRulesItems(action.payload.fabricatorState, newCartItems);\r\n // newCartItems = checkStonePricingLogic(newCartItems);\r\n return Object.assign({}, state, {\r\n cartItems: newCartItems\r\n });\r\n }\r\n\r\n case types.CHANGE_CART_FEATURE: {\r\n // console.log('action.payload.cartItem', action.payload.cartItem);\r\n let newCartItems = [...state.cartItems.map((cartItem) => {\r\n return (cartItem.id === action.payload.cartItem.id) ? action.payload.cartItem : cartItem\r\n })];\r\n if (!action.payload.skipOtherRules) { // if we change note text for example, we don't need to recalculate other cart items\r\n newCartItems = checkHardcodedRulesItems(action.payload.fabricatorState, newCartItems);\r\n }\r\n return Object.assign({}, state, {\r\n cartItems: newCartItems\r\n });\r\n }\r\n\r\n case types.REMOVE_FROM_CART: {\r\n // console.log('action.payload.cartItem', action.payload.cartItem);\r\n // console.log('state.cartItems', state.cartItems);\r\n const cartItemToDeleteIndex = state.cartItems.findIndex((cartItem) => cartItem.id === action.payload.cartItem.id);\r\n if (cartItemToDeleteIndex > -1) {\r\n state.cartItems.splice(cartItemToDeleteIndex, 1);\r\n }\r\n let newCartItems = [...state.cartItems];\r\n if (state.displayLogicCartItems.length) {\r\n newCartItems = checkForAddToCartFeaturesWithDisplayLogic(newCartItems, state.displayLogicCartItems, action.payload.cartItem.currentQuote, action.payload.allWizardsValues)\r\n }\r\n newCartItems = checkHardcodedRulesItems(action.payload.fabricatorState, newCartItems);\r\n if (isRecalculateSlabsInCartNeeded(state.cartItems)) {\r\n newCartItems = recalculateSlabsInCart(newCartItems);\r\n }\r\n\r\n // removeFakePriceFromCartItems if we have slabs\r\n if (action.payload.cartItem && action.payload.cartItem.partId === SQFT_FEATURES.slabs) {\r\n const isSlabsStillExistInCart = newCartItems.some(newCartItem => newCartItem.partId === SQFT_FEATURES.slabs)\r\n if (!isSlabsStillExistInCart) {\r\n newCartItems = removeFakePriceFromCartItems(newCartItems);\r\n }\r\n }\r\n\r\n newCartItems = newCartItems.filter((cartItem) => {\r\n return !cartItem.bundleParentId || newCartItems.some(cI => cI.id === cartItem.bundleParentId)\r\n })\r\n // newCartItems = checkStonePricingLogic(newCartItems);\r\n return Object.assign({}, state, {\r\n cartItems: newCartItems\r\n });\r\n }\r\n\r\n case types.TOGGLE_APPLY_POPUP:\r\n return Object.assign({}, state, {\r\n applyPopupOpened: action.payload.applyPopupOpened,\r\n activeApplyPopupItems: action.payload.activeApplyPopupItems.map((activeApplyPopupItem) => {\r\n const existingCartItemIndex = state.cartItems.findIndex(cartItem => {\r\n return cartItem.cartFeature.dbFeature.id === activeApplyPopupItem.cartFeature.dbFeature.id\r\n });\r\n if (existingCartItemIndex > -1) {\r\n activeApplyPopupItem.quantity = state.cartItems[existingCartItemIndex].quantity; // if cart already have item, return it's quantity\r\n }\r\n return activeApplyPopupItem\r\n }).filter(item => {\r\n return !(item.partId === \"top_cabinet\"\r\n && action.payload.activeApplyPopupItems.some(item => item.partId === \"top_cabinet_module_0\"));\r\n\r\n })\r\n });\r\n\r\n case types.CLICK_QUESTION_NO:\r\n case types.CAME_FROM_PAGE:\r\n case types.SHOW_ORDER_COMPLETE_POPUP:\r\n case types.TOGGLE_SHOW_MOBILE_QUOTES:\r\n case types.TOGGLE_SHOW_ALL_QUOTES_CART_ITEMS_LIST:\r\n case types.SET_CART_FOOTER_ACTIVE_BUTTON_INDEX:\r\n case types.SET_CART_ITEM_EDIT_FEATURE:\r\n case types.SET_LOOK_REMOVED_CART_ITEMS:\r\n case types.CHANGE_ALL_CART_ITEMS:\r\n case types.SET_SURE_TAX:\r\n case types.SET_DELIVERY_LIST:\r\n case types.SET_SURE_TAX_LOADING:\r\n case types.SET_MARK_UP_LOGIC:\r\n return Object.assign({}, state, {\r\n ...action.payload\r\n });\r\n case types.RESTORE_CART: {\r\n if (action.payload.cartState && action.payload.cartState.cartItems) {\r\n action.payload.cartState.cartItems = checkHardcodedRulesItems(action.payload.fabricatorState, action.payload.cartState.cartItems);\r\n // action.payload.cartState.cartItems = checkStonePricingLogic(action.payload.cartState.cartItems);\r\n }\r\n let displayLogicCartItems = action.payload.cartState && action.payload.cartState.displayLogicCartItems\r\n ? action.payload.cartState.displayLogicCartItems\r\n : [];\r\n if ((displayLogicCartItems && displayLogicCartItems.length) || state.displayLogicCartItems.length) {\r\n action.payload.cartState.displayLogicCartItems = [...displayLogicCartItems, ...state.displayLogicCartItems.filter((oldCartItem) => {\r\n return !displayLogicCartItems.some(newCi => newCi.cartFeature.dbFeature.id === oldCartItem.cartFeature.dbFeature.id)\r\n })];\r\n // cases when someone loaded display logic in bathroom, then saved kitchen quote, and when the kitchen is restored they are loaded to kitchen\r\n action.payload.cartState.cartItems = checkForAddToCartFeaturesWithDisplayLogic(action.payload.cartState.cartItems, action.payload.cartState.displayLogicCartItems, 0, action.payload.allWizardsValues)\r\n }\r\n return Object.assign({}, state, {\r\n ...action.payload.cartState,\r\n checkoutPopupVisible: false,\r\n orderCompletePopupVisible: false,\r\n });\r\n }\r\n case types.CLEAR_CART:\r\n return {...state, cartItems: []};\r\n case types.SHOW_CHECKOUT_POPUP:\r\n return {...state, checkoutPopupVisible: action.payload.show};\r\n case types.SHOW_DEPOSIT:\r\n return {...state, depositVisible: action.payload.show, depositCallback: action.payload.callback};\r\n case types.SET_CART_ITEMS_ADDED_TO_PARENT_CART: {\r\n const cItemsAddedToParentCart = [...state.cItemsAddedToParentCart];\r\n action.payload.cartItems.forEach(cartItem => {\r\n const existing = cItemsAddedToParentCart.find(cItem => cItem.id === cartItem.id);\r\n if (existing) {\r\n existing.quantity += cartItem.quantity;\r\n } else {\r\n cItemsAddedToParentCart.push({\r\n id: cartItem.id,\r\n quantity: cartItem.quantity,\r\n })\r\n }\r\n });\r\n return {...state, cItemsAddedToParentCart};\r\n }\r\n case types.SET_LOOK_OPENED:\r\n case types.SET_LOOK_PAGE_OPENED:\r\n return state.cartItemEditFeature ? {...state, cartItemEditFeature: null} : state\r\n case types.SET_LOOK_ACTIVE_CATEGORY:\r\n return (state.cartItemEditFeature && !action.payload.lookActiveCategory && !action.payload.isMobile)\r\n ? {...state, cartItemEditFeature: null} : state\r\n case types.SET_LOOK_ACTIVE_FEATURE:\r\n return (state.cartItemEditFeature && !action.payload.lookActiveFeature) ? {...state, cartItemEditFeature: null} : state\r\n case types.TOGGLE_SELECTION_WINDOW:\r\n // exit editing on change route\r\n return (state.cartItemEditFeature && !action.payload.selectionOpened) ? {...state, cartItemEditFeature: null} : state\r\n case types.CHANGE_SELECTION_ACTIVE_PART_RELATED_INDEX:\r\n // exit editing on change step\r\n return state.cartItemEditFeature && !action.payload.isSameStep ? {...state, cartItemEditFeature: null} : state\r\n case types.SET_WIZARD_ACTIVE_STEP:\r\n case types.SET_WIZARD_SELECTED_VALUES: {\r\n let newState = state;\r\n if (state.displayLogicCartItems.length) {\r\n let newCartItems = state.cartItems;\r\n newCartItems = checkForAddToCartFeaturesWithDisplayLogic(newCartItems, state.displayLogicCartItems, action.payload.quoteIndex, action.payload.allWizardsValues)\r\n newState = {...state, cartItems: newCartItems}\r\n }\r\n if ((action.type === types.SET_WIZARD_ACTIVE_STEP) && state.cartItemEditFeature) {\r\n newState = {...state, cartItemEditFeature: null}\r\n }\r\n return newState\r\n }\r\n case types.SET_MANUAL_TAX: {\r\n if (!state.manualTaxEntered) {\r\n state.manualTaxEntered = true;\r\n }\r\n state.sureTax = +action.payload.manualTax;\r\n return state\r\n }\r\n }\r\n\r\n return state;\r\n}\r\n","import React from \"react\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst UserFieldErrors = (props) => {\r\n\r\n const {property, userInfoErrors} = props;\r\n\r\n const errorsExist = Array.isArray(userInfoErrors[property]) && userInfoErrors[property].length;\r\n if (!errorsExist) {\r\n return null\r\n }\r\n\r\n return (\r\n
    \r\n {userInfoErrors[property].map((error) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n })}\r\n
    \r\n )\r\n};\r\n\r\nUserFieldErrors.propTypes = {\r\n property: PropTypes.string.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {userInfo, userInfoErrors} = store.userState;\r\n return {\r\n userInfo,\r\n userInfoErrors,\r\n // fabricatorData: store.fabricatorState,\r\n };\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps)(UserFieldErrors)\r\n)\r\n","import React, {useEffect, useState} from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport Axios from \"axios\";\r\nimport $ from \"jquery\";\r\n\r\nimport LoadingSpinner from \"../../ui/loadingSpinner\";\r\nimport {baseNewImagesPath} from \"../../assets\";\r\nimport {IS_LIXIL_UI} from \"../../../config\";\r\n\r\nconst getPrivacyPolicyUrl = (fabricatorData) => {\r\n if (fabricatorData.isRebath) {\r\n return \"rebathTerms.html\"\r\n } else if (fabricatorData.isLowes) {\r\n return \"lowesTerms.html\"\r\n } else if (fabricatorData.isNhance) {\r\n return \"nhanceTerms.html\"\r\n }\r\n return \"qcTerms.html\"\r\n}\r\n\r\nconst PrivacyPolicyTerms = (props) => {\r\n\r\n const {fabricatorData} = props;\r\n const [terms, setTerms] = useState(null);\r\n\r\n const privacyPolicyUrl = getPrivacyPolicyUrl(fabricatorData);\r\n\r\n useEffect(() => {\r\n const getTerms = async () => {\r\n const termsResponse = await Axios.get(baseNewImagesPath + \"privacyPolicy/\" + privacyPolicyUrl);\r\n if (termsResponse && termsResponse.data) {\r\n setTerms(termsResponse.data)\r\n }\r\n }\r\n getTerms();\r\n\r\n window.anchorScroll = (anchor) => {\r\n const $scrollableDiv = $(IS_LIXIL_UI ? \".grohe-lead__content\" : \".user-popup-terms\");\r\n const scrollToDiv = document.querySelector(`[data-anchor=${anchor}]`);\r\n // const scrollTop = $scrollToDiv ? $scrollToDiv.position().top - 50 : 0;\r\n const scrollTop = scrollToDiv ? scrollToDiv.offsetTop - 60 : 0;\r\n if (scrollTop) {\r\n $scrollableDiv.animate({scrollTop}, 1000);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return terms ?
    : \r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const fabricatorData = store.fabricatorState;\r\n return {\r\n fabricatorData\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(PrivacyPolicyTerms)\r\n","import {closeSQFTTool} from \"../helpers/sqftHelperUi\";\r\nimport {getFeatureUrl} from \"../../look/lookNavigation/lookFunctions2\";\r\nimport {clearAllMenusEvents} from \"../components/canvas/core/workspace/workspaceEvents\";\r\nimport Analytics from \"../../../analytics\";\r\nimport isObject from \"lodash/isObject\";\r\nimport {SQFT_FEATURES} from \"../constants\";\r\nimport {IS_LIXIL_UI} from \"../../../config\";\r\nimport {isFirefox} from \"../../../misc/helpers\";\r\nimport {setShowAddedToTheCartSuccess} from \"../../../actions/groheFunctions\";\r\nimport {setSqftFromFeature} from \"../../../actions/sqftFunctions\";\r\nimport {setCameFromPage} from \"../../../actions/actionFunctions\";\r\nimport {useChangeWizardStepRoute} from \"../../qkbPages/materialsWizard/useChangeWizardStepRoute\";\r\nimport {useHistory} from \"react-router-dom\";\r\nimport store from \"../../../store\";\r\n\r\nexport const useCloseSQFTCalc = () => {\r\n const {changeWizardStepRoute} = useChangeWizardStepRoute();\r\n const history = useHistory();\r\n const state = store.getState();\r\n const {cameFromPage} = state.cartState\r\n\r\n const closeLixilUi = (cameFromPage, shouldChangeWizardToNextStep) => {\r\n closeSQFTTool(cameFromPage, shouldChangeWizardToNextStep, changeWizardStepRoute);\r\n const {wizardIsActive} = store.getState().wizardState;\r\n\r\n if (!wizardIsActive) {\r\n window.setTimeout(() => {\r\n store.dispatch(setShowAddedToTheCartSuccess(true));\r\n }, 300)\r\n history.push(getFeatureUrl(cameFromPage));\r\n history.push(`/cart`);\r\n }\r\n }\r\n\r\n const closeSQFTCalc = (shouldChangeWizardToNextStep = true) => {\r\n // if (payload && payload.measureUnit) {\r\n // props.setSqftMeasureUnit(payload.measureUnit);\r\n // }\r\n //this.sendPostMessageToSqft(SQFT_POST_MESSAGE_ACTIONS.stopRender);\r\n\r\n clearAllMenusEvents();\r\n Analytics.sendClickEvent('sqft-close');\r\n store.dispatch(setSqftFromFeature(null));\r\n\r\n const leaveSqft = () => {\r\n if (isObject(cameFromPage) && cameFromPage.partId && cameFromPage.partId !== SQFT_FEATURES.slabs) {\r\n if (IS_LIXIL_UI) {\r\n closeLixilUi(cameFromPage, shouldChangeWizardToNextStep)\r\n } else {\r\n closeSQFTTool(\"materials\", shouldChangeWizardToNextStep, changeWizardStepRoute);\r\n }\r\n //props.toggleSelectionFeatureInfo(cameFromPage);\r\n } else {\r\n const redirectToPage = cameFromPage && cameFromPage !== \"sqft\" ? cameFromPage : \"materials\"\r\n closeSQFTTool(redirectToPage, shouldChangeWizardToNextStep, changeWizardStepRoute);\r\n }\r\n store.dispatch(setCameFromPage(\"sqft\"));\r\n };\r\n\r\n if (isFirefox()) {\r\n setTimeout(() => {\r\n leaveSqft();\r\n }, 0)\r\n } else {\r\n leaveSqft();\r\n }\r\n }\r\n\r\n return {closeSQFTCalc}\r\n};\r\n","import * as PropTypes from \"prop-types\";\r\n\r\nexport const customerInterface = {\r\n id: PropTypes.number,\r\n fullName: PropTypes.string,\r\n email: PropTypes.string,\r\n};\r\n\r\nexport const employeeInterface = {\r\n id: PropTypes.number,\r\n fullName: PropTypes.string,\r\n};\r\n","import React from \"react\";\r\n\r\nexport const initialContext = {\r\n inputsValidated: true,\r\n customerError: \"\",\r\n selectedContracts: [], // [\"id\"]\r\n}\r\n\r\nexport default React.createContext(initialContext);\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport UiIcon from \"../ui/icons/uiIcon\";\r\n\r\nexport const subPartIsDone = (relatedIem, activeQuoteIndex, cartItems = []) => {\r\n const {placeholderChanged, activeFeature, activeNotInVisualizerFeature, firstClick} = relatedIem;\r\n const selectedFeature = activeFeature || activeNotInVisualizerFeature;\r\n return cartItems.some(cartItem => {\r\n return (cartItem.partId === relatedIem.partId) && (cartItem.currentQuote === activeQuoteIndex) && !cartItem.cartFeature.dbFeature.autoAddToCart\r\n }) || (placeholderChanged && firstClick[activeQuoteIndex] && selectedFeature && !selectedFeature.partName.includes(\"laceholder\"))\r\n}\r\n\r\nconst SubPartDoneCheckMark = (props) => {\r\n\r\n const {placeholderChanged, activeFeature, activeNotInVisualizerFeature, firstClick, activeQuoteIndex, partId, cartItems} = props;\r\n\r\n const selected = subPartIsDone(\r\n {placeholderChanged, activeFeature, activeNotInVisualizerFeature, firstClick, partId},\r\n activeQuoteIndex,\r\n cartItems\r\n );\r\n\r\n if (!selected) {\r\n return null\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n};\r\n\r\nSubPartDoneCheckMark.propTypes = {\r\n relatedItem: PropTypes.object.isRequired,\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n return {\r\n activeQuoteIndex: store.quotesState.activeQuoteIndex,\r\n activeFeature: ownProps.relatedItem.activeFeature,\r\n activeNotInVisualizerFeature: ownProps.relatedItem.activeNotInVisualizerFeature,\r\n firstClick: ownProps.relatedItem.firstClick,\r\n placeholderChanged: ownProps.relatedItem.placeholderChanged,\r\n partId: ownProps.relatedItem.partId,\r\n cartItems: store.cartState.cartItems,\r\n fabricatorData: store.fabricatorState\r\n };\r\n};\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SubPartDoneCheckMark)\r\n","import React, { Fragment } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { FormattedMessage, injectIntl } from \"react-intl\";\r\n\r\nimport Button from \"@mui/material/Button\";\r\nimport SvgIcon from \"@mui/material/SvgIcon\";\r\nimport { Look3DIcon, LookAugmentRealityIcon } from \"../../common/icons\";\r\nimport { LOOK_FEATURE_CONTENT } from \"../../look/core/constants\";\r\nimport COLOR_THEMES from \"../../../colorThemes\";\r\nimport config from \"../../sqft/components/canvas/store/sqftConfig\";\r\nimport {\r\n changeSqftFeaturesPopup,\r\n setAPIErrorMessage,\r\n setSqftCabinetsGlb,\r\n setSQFTViewMode\r\n} from \"../../../actions/sqftFunctions\";\r\nimport { setAbortController, setSQFTAr3dPopup } from \"../../../actions/sqftMenuFunctions\";\r\nimport { SQFT_VIEW_MODE } from \"../../sqft/constants\";\r\nimport { setCabinetGLBFromCabinetsSet } from \"../../sqft/helpers/sqft3dArHelper\";\r\nimport {setMultiLoader} from \"../../../actions/actionFunctions\";\r\n\r\nexport const SqftFeaturesPopup3dButtons = (props) => {\r\n const { changeSqftFeaturesPopup, isMobile, setSQFTViewMode } = props;\r\n\r\n const threeDButtonClick = async () => {\r\n changeSqftFeaturesPopup({\r\n opened: false,\r\n sqftPassedData: null\r\n });\r\n // if (SQFTViewMode === SQFT_VIEW_MODE.threeDMode) {\r\n // setMultiLoader({activeStep: 0, visible: true, finished: false});\r\n // }\r\n setSQFTViewMode(SQFT_VIEW_MODE.threeDMode);\r\n await setCabinetGLBFromCabinetsSet().then(r => void r);\r\n // setSQFTAr3dPopup({isOpened: true, contentType: SQFT_AR3D_POPUP_CONTENT_TYPE.threeD})\r\n // await setCabinetGLBFromCabinetsSet().then(r => void r);\r\n }\r\n\r\n const arButtonClick = async () => {\r\n changeSqftFeaturesPopup({\r\n opened: false,\r\n sqftPassedData: null\r\n });\r\n // if (SQFTViewMode === SQFT_VIEW_MODE.augmentedReality) {\r\n // setMultiLoader({activeStep: 0, visible: true, finished: false});\r\n // }\r\n setSQFTViewMode(SQFT_VIEW_MODE.augmentedReality);\r\n await setCabinetGLBFromCabinetsSet().then(r => void r);\r\n // setSQFTAr3dPopup({isOpened: true, contentType: SQFT_AR3D_POPUP_CONTENT_TYPE.ar})\r\n // await setCabinetGLBFromCabinetsSet().then(r => void r);\r\n }\r\n\r\n const threeDButtonID = isMobile ? 'sqft.popup.button.3dButtonMobile' : 'sqft.popup.button.3dButton';\r\n const augButtonID = isMobile ? 'sqft.popup.button.augButtonMobile' : 'sqft.popup.button.augButton';\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {isMobile} = store.serverState;\r\n return {\r\n isMobile,\r\n abortRequestController: store.sqftState.abortRequestController,\r\n cabinetsGlb: store.sqftState.cabinetsGlb,\r\n SQFTViewMode: store.sqftState.SQFTViewMode,\r\n };\r\n};\r\nconst mapDispatchToProps = {\r\n setSqftCabinetsGlb,\r\n setSQFTAr3dPopup,\r\n changeSqftFeaturesPopup,\r\n setAPIErrorMessage,\r\n setAbortController,\r\n setSQFTViewMode,\r\n setMultiLoader,\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(SqftFeaturesPopup3dButtons)\r\n)\r\n","import React from \"react\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport InputAdornment from \"@mui/material/InputAdornment\";\r\nimport FormControl from \"@mui/material/FormControl\";\r\nimport InputLabel from \"@mui/material/InputLabel\";\r\nimport FormHelperText from \"@mui/material/FormHelperText\";\r\nimport getCreditCardType from \"../grohe/groheCart/getCreditCardType\";\r\nimport {onInputBlur, onInputChange, useInputsValidation} from \"./inputFunctions\";\r\n\r\n\r\nconst LookInput = (props) => {\r\n\r\n const {property, inputValue, setInputValue, intl, errorsObject, changeErrorsObject, getValidationErrors,\r\n inputsValidated, isRequired, blockClassName} = props;\r\n\r\n const onBlur = (event) => {\r\n onInputBlur(event, property, setInputValue, errorsObject, changeErrorsObject, getValidationErrors);\r\n };\r\n\r\n const onChange = (event) => {\r\n onInputChange(event, property, setInputValue, errorsObject, changeErrorsObject, getValidationErrors);\r\n };\r\n\r\n useInputsValidation(inputsValidated, onBlur, inputValue);\r\n\r\n const errorsExist = errorsObject && Array.isArray(errorsObject[property]) && !!errorsObject[property].length;\r\n\r\n const type = property !== \"email\" && property !== \"password\" ? \"text\" : property;\r\n\r\n if (property === \"cardNumber\") {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n {getCreditCardType(inputValue).icon}\r\n \r\n ) : null}\r\n label={intl.formatMessage({id: \"look.inputs.\" + property})}\r\n onChange={onChange}\r\n onBlur={onBlur}\r\n error={errorsExist}\r\n variant=\"outlined\" />\r\n {errorsExist ? (\r\n \r\n \r\n \r\n ) : null}\r\n \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n};\r\n\r\nLookInput.propTypes = {\r\n property: PropTypes.string.isRequired,\r\n setInputValue: PropTypes.func.isRequired,\r\n isRequired: PropTypes.bool,\r\n // validation below\r\n inputsValidated: PropTypes.bool,\r\n errorsObject: PropTypes.object, // userInfoErrorsLike\r\n changeErrorsObject: PropTypes.func,\r\n getValidationErrors: PropTypes.func,\r\n blockClassName: PropTypes.string,\r\n};\r\n\r\nexport default injectIntl(LookInput)\r\n","import {useEffect} from \"react\";\r\n\r\nexport const onInputBlur = (event, property, setInputValue, errorsObject, changeErrorsObject, getValidationErrors) => {\r\n const value = (event && event.target && event.target.value ? event.target.value : \"\").trim();\r\n setInputValue(property, value); // set trimmed version\r\n if (changeErrorsObject && getValidationErrors) {\r\n const errors = getValidationErrors(property, value);\r\n if (errors.length) {\r\n changeErrorsObject({\r\n [property]: errors\r\n })\r\n } else if (!errors.length && errorsObject && errorsObject[property]) {\r\n changeErrorsObject({\r\n [property]: errors\r\n })\r\n }\r\n }\r\n}\r\n\r\nexport const onInputChange = (event, property, setInputValue, errorsObject, changeErrorsObject, getValidationErrors) => {\r\n const value = event.target.value;\r\n setInputValue(property, value);\r\n if (errorsObject && errorsObject[property] && getValidationErrors) {\r\n const errors = getValidationErrors(property, value);\r\n if (!errors.length && changeErrorsObject) {\r\n changeErrorsObject({\r\n [property]: errors\r\n })\r\n }\r\n }\r\n};\r\n\r\nexport const useInputsValidation = (inputsValidated, onBlur, inputValue) => {\r\n useEffect(() => {\r\n if (!inputsValidated) {\r\n onBlur({\r\n target: {\r\n value: inputValue\r\n }\r\n });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [inputsValidated]);\r\n};\r\n","/**\r\n * @param forFeature {featureInterface}\r\n * @param toolSettings {array}\r\n * @returns {{postDiffData, featuresToUpdate}}\r\n */\r\nexport const getEditFeaturesRequestData = (forFeature, toolSettings) => {\r\n let postDiffData = null, featuresToUpdate = [];\r\n const toolSettingsDiff = getDifferentToolSettings(toolSettings, forFeature.dbFeature.updatedToolSettings || forFeature.dbFeature.toolSettings)\r\n if (!toolSettingsDiff.length) {\r\n return {postDiffData, featuresToUpdate} // we didn't change anything, no need to post\r\n }\r\n featuresToUpdate = getSameNameFeatures(forFeature);\r\n postDiffData = {\r\n \"edit\": toolSettingsDiff.map(toolSetting => {\r\n return {\r\n \"FabricatorFeatureIds\": featuresToUpdate.map(f => f.dbFeature.id),\r\n \"EnableVisualizer\": toolSetting[\"enableVisualizer\"],\r\n \"EnableQuotingTool\": toolSetting[\"enableQuotingTool\"],\r\n \"Tool\": toolSetting.tool,\r\n }\r\n })\r\n }\r\n return {postDiffData, featuresToUpdate}\r\n}\r\n\r\n/**\r\n * @param forFeature {featureInterface}\r\n * @returns featureInterface[]\r\n */\r\nconst getSameNameFeatures = (forFeature) => {\r\n const featureGroup = forFeature.getParent();\r\n let features = [forFeature];\r\n const nameToCompare = forFeature.getMatchingFeatureName();\r\n Object.keys(featureGroup.featuresList).forEach(layoutType => {\r\n [...featureGroup.featuresList[layoutType], ...featureGroup.featuresPartsList[layoutType]].forEach(feature => {\r\n if (nameToCompare === feature.getMatchingFeatureName() && !features.some(f => {\r\n return f.dbFeature.id === feature.dbFeature.id\r\n })) {\r\n features.push(feature);\r\n }\r\n })\r\n });\r\n return features\r\n}\r\n\r\n/**\r\n * @param newToolSettings {array}\r\n * @param oldToolSettings {array}\r\n * @returns array\r\n */\r\nexport const getDifferentToolSettings = (newToolSettings, oldToolSettings) => {\r\n return newToolSettings.filter(toolSetting => {\r\n const existingObject = oldToolSettings.find(set => set.tool === toolSetting.tool)\r\n if (!existingObject) {\r\n return true\r\n }\r\n return (existingObject[\"enableVisualizer\"] !== toolSetting[\"enableVisualizer\"])\r\n || (existingObject[\"enableQuotingTool\"] !== toolSetting[\"enableQuotingTool\"])\r\n })\r\n}\r\n","import React from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport {SIDEBAR_LAYOUTS_BUTTONS} from \"../../../../../constants\";\r\nimport Square from \"../../../../canvas/core/shapes/layouts/square\";\r\nimport WideAngle from \"../../../../canvas/core/shapes/layouts/wideAngle\";\r\nimport Horseshoe from \"../../../../canvas/core/shapes/layouts/horseshoe\";\r\nimport Rectangle from \"../../../../canvas/core/shapes/layouts/rectangle\";\r\nimport RectangleIsland from \"../../../../canvas/core/shapes/layouts/rectangleIsland\";\r\nimport WideAngleReverted from \"../../../../canvas/core/shapes/layouts/wideAngleReverted\";\r\nimport workspace from \"../../../../canvas/core/workspace\";\r\nimport eventManager from \"../../../../canvas/store/sqftEventManager\";\r\nimport config from \"../../../../canvas/store/sqftConfig\";\r\nimport {toggleChangeLayoutPopup, updateSQFTCalculations} from \"../../../../../../../actions/sqftFunctions\";\r\nimport store from \"../../../../../../../store\";\r\nimport {setSQFTRoomLayouts} from \"../../../../../../../actions/sqftMenuFunctions\";\r\nimport {getCountertopPartNames} from \"../../../../../helpers/shapeHelper\";\r\n\r\nexport const setNewLayout = (layoutName) => {\r\n workspace.removeAllShapes();\r\n eventManager.stealCursor(true);\r\n window.setNextLayout = layoutName;\r\n const [countertopPartName, centerIslandPartName] = getCountertopPartNames();\r\n\r\n switch (layoutName) {\r\n case \"S\":\r\n case \"SP\":\r\n workspace.addShape(new Rectangle(), 'square', null, countertopPartName, layoutName);\r\n break;\r\n case \"SI\":\r\n case \"SPI\":\r\n workspace.addShape(new RectangleIsland(config.shapeSize), 'square', null, countertopPartName, layoutName);\r\n break;\r\n case \"SN\":\r\n case \"SNI\":\r\n case \"SPN\":\r\n case \"SPNI\":\r\n workspace.addShape(new WideAngleReverted(config.shapeSize), 'wideangle', null, countertopPartName, layoutName);\r\n break;\r\n case \"L\":\r\n case \"LI\":\r\n workspace.addShape(new WideAngle(config.shapeSize), 'wideangle', null, countertopPartName, layoutName);\r\n break;\r\n case \"LN\":\r\n case \"LNI\":\r\n workspace.addShape(new Horseshoe(config.shapeSize), 'horseshoe', null, countertopPartName, layoutName);\r\n break;\r\n default:\r\n break;\r\n }\r\n if (layoutName.includes(\"I\")) {\r\n workspace.addShape(new Square(config.shapeSize, true), 'square', null, centerIslandPartName, layoutName);\r\n }\r\n\r\n // todo sqft-react remove?\r\n // nodes.layoutButtons.forEach(function (layoutButton) {\r\n // layoutButton.classList.remove(\"shapes-icon--active\");\r\n // });\r\n // document.querySelector(\"[data-layout='\"+layoutName+\"']\").classList.add(\"shapes-icon--active\");\r\n\r\n if (window.innerHeight < 480 && window.innerWidth < 991) {\r\n // todo sqft-react\r\n //Menu.hideSidebarSide();\r\n //Menu.hideSideBarContent();\r\n }\r\n const state = store.getState();\r\n const updateCalculations = state.sqftState.updateCalculations;\r\n\r\n store.dispatch(updateSQFTCalculations(updateCalculations + 1));\r\n};\r\n\r\nexport const setRoomLayouts = (itemName) => {\r\n const state = store.getState();\r\n const roomLayouts = state.sqftMenuState.roomLayouts;\r\n const activeRoomIndex = state.sqftMenuState.activeRoomIndex;\r\n const updatedRoomLayouts = [...roomLayouts];\r\n const roomLayoutIndex = updatedRoomLayouts.findIndex(roomLayout => roomLayout.roomIndex === activeRoomIndex);\r\n if (roomLayoutIndex >= 0) {\r\n updatedRoomLayouts[roomLayoutIndex].layoutName = itemName;\r\n setSQFTRoomLayouts(updatedRoomLayouts);\r\n } else {\r\n setSQFTRoomLayouts([...roomLayouts, {roomIndex: activeRoomIndex, layoutName: itemName}]);\r\n }\r\n}\r\n\r\nconst SqftNavLayouts = (props) => {\r\n // other popups, modals and so on\r\n const {menuOpened, activeButton, roomLayouts, activeRoomIndex, setSQFTRoomLayouts} = props;\r\n const expanded = activeButton && menuOpened === \"layouts\";\r\n // const buttonRefs = useRef({});\r\n\r\n const handleButtonClick = async (event, itemName) => {\r\n console.log(\"itemName\", itemName);\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const shapesLength = workspace.getShapes().length;\r\n const isRoomHasLayout = roomLayouts.some(roomLayout => roomLayout.roomIndex === activeRoomIndex);\r\n\r\n if (isRoomHasLayout || shapesLength) {\r\n callChangeLayoutDataPopup(itemName, true);\r\n setRoomLayouts(itemName);\r\n } else {\r\n setNewLayout(itemName);\r\n setSQFTRoomLayouts([...roomLayouts, {roomIndex: activeRoomIndex, layoutName: itemName}]);\r\n }\r\n };\r\n\r\n //todo\r\n const callChangeLayoutDataPopup = (layoutName, applyLayoutOnSqft = false) => {\r\n props.toggleChangeLayoutPopup(true, layoutName, applyLayoutOnSqft);\r\n // window.parent.postMessage({\r\n // action: SQFT_POST_MESSAGE_ACTIONS.callChangeLayoutDataPopup,\r\n // payload: {\r\n // layoutName,\r\n // applyLayoutOnSqft\r\n // }\r\n // }, \"*\");\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {expanded ?\r\n SIDEBAR_LAYOUTS_BUTTONS.map((item, index) => (\r\n
    \r\n
    \r\n\r\n )\r\n\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n menuOpened: store.sqftMenuState.menuOpened,\r\n activeButton: store.sqftMenuState.activeButton,\r\n activeRoomType: store.sqftMenuState.activeRoomType,\r\n roomLayouts: store.sqftMenuState.roomLayouts,\r\n qtActiveCategory: store.qtState.qtActiveCategory,\r\n quotes: store.quotesState.quotes,\r\n activeRoomIndex: store.sqftMenuState.activeRoomIndex,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n toggleChangeLayoutPopup,\r\n setSQFTRoomLayouts,\r\n};\r\n\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SqftNavLayouts);\r\n","import Misc from \"../../../config\";\r\nimport {isTouchDevice} from \"../../../misc/utils\";\r\n\r\nexport function exportSceneToGLB (scene, shouldReturnURL) {\r\n const exporter = new window.GLTFExporter();\r\n\r\n return new Promise((resolve, reject) => {\r\n exporter.parse(\r\n scene,(result) => {\r\n //const blob = new Blob([result], { type: 'model/gltf-binary' });\r\n const blob = new Blob([JSON.stringify(result)], {type: 'text/plain'});\r\n resolve(shouldReturnURL ? URL.createObjectURL(blob) : blob);\r\n },\r\n (error) => reject(error)\r\n );\r\n });\r\n}\r\n\r\nexport async function exportSceneToUSDZ(scene, shouldReturnURL) {\r\n const exporter = new window.USDZExporter();\r\n\r\n try {\r\n const arraybuffer = await exporter.parseAsync(scene);\r\n const blob = new Blob( [ arraybuffer ], { type: 'application/octet-stream' } );\r\n\r\n return shouldReturnURL ? URL.createObjectURL(blob) : blob;\r\n } catch (error) {\r\n console.error('Error exporting scene to USDZ:', error);\r\n }\r\n}\r\n\r\nexport async function handleDownloadUSDZ (scene) {\r\n if (!scene) {\r\n console.error('Scene is not available for export.');\r\n return;\r\n }\r\n\r\n try {\r\n const usdzUrl = await exportSceneToUSDZ(scene);\r\n\r\n // open Quick Look\r\n const link = Object.assign(document.createElement('a'), {\r\n download: 'asset.usdz',\r\n rel: \"ar\",\r\n href: usdzUrl,\r\n textContent: \"View in AR\"\r\n });\r\n\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n } catch (error) {\r\n console.error('Failed to export scene to USDZ:', error);\r\n }\r\n}\r\n\r\nexport function blobToBase64 (blob) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onloadend = () => resolve(reader.result.split(',')[1]); // Убираем часть \"data:...\"\r\n reader.onerror = (error) => reject(error);\r\n reader.readAsDataURL(blob);\r\n });\r\n}\r\n\r\nexport function compressMeshForMobileDevices(mesh) {\r\n if (mesh) {\r\n let originalMaterial = mesh.material;\r\n\r\n const isMobile = Misc.isMobile() || isTouchDevice();\r\n\r\n if (isMobile) {\r\n // Resize all texture maps\r\n [\"map\", \"metalnessMap\", \"normalMap\", \"aoMap\", \"roughnessMap\", \"displacementMap\"].forEach((map) => {\r\n if (originalMaterial[map]) {\r\n resizeExistingTexture(originalMaterial[map], 512); //Texture max sizw\r\n //originalMaterial[map] = this.compressTexture(originalMaterial[map]);\r\n }\r\n });\r\n\r\n //Optimize filtering for performance\r\n if (originalMaterial.map) {\r\n originalMaterial.map.anisotropy = 1;\r\n originalMaterial.map.generateMipmaps = false;\r\n originalMaterial.map.minFilter = window.THREE.LinearFilter;\r\n originalMaterial.map.magFilter = window.THREE.LinearFilter;\r\n }\r\n\r\n originalMaterial.needsUpdate = true;\r\n }\r\n }\r\n}\r\n\r\nexport async function resizeExistingTexture(texture, maxSize = 512) {\r\n const image = texture.image;\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n\r\n // Calculate new size while maintaining aspect ratio\r\n let width = image.width;\r\n let height = image.height;\r\n if (width > maxSize || height > maxSize) {\r\n if (width > height) {\r\n height *= maxSize / width;\r\n width = maxSize;\r\n } else {\r\n width *= maxSize / height;\r\n height = maxSize;\r\n }\r\n }\r\n\r\n // Resize the texture using Canvas\r\n canvas.width = Math.round(width);\r\n canvas.height = Math.round(height);\r\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n\r\n // Create an ImageBitmap to ensure WebGL compatibility\r\n const imageBitmap = await createImageBitmap(canvas);\r\n\r\n // Replace the original image in the texture\r\n texture.image = imageBitmap;\r\n texture.needsUpdate = true;\r\n}\r\n\r\nexport function compressTexture(texture, quality = 0.9) {\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n const image = texture.image;\r\n\r\n canvas.width = image.width;\r\n canvas.height = image.height;\r\n ctx.drawImage(image, 0, 0, image.width, image.height);\r\n\r\n const webpDataUrl = canvas.toDataURL('image/webp', quality);\r\n\r\n const compressedTexture = new THREE.TextureLoader().load(webpDataUrl);\r\n compressedTexture.needsUpdate = true;\r\n\r\n return compressedTexture;\r\n}\r\n","import React, {useEffect} from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport {setMultiLoader} from \"../../actions/actionFunctions\";\r\nimport MultiLoaderSteps from \"./multiLoaderSteps\";\r\nimport MaterialSpinner from \"./materialSpinner\";\r\n\r\nconst MultiLoader = (props) => {\r\n\r\n const {multiLoader, setMultiLoader, useCabinetLoader} = props;\r\n\r\n useEffect(() => {\r\n setMultiLoader({finished: false, activeStep: 0, visible: true});\r\n return () => {\r\n setMultiLoader({finished: true, activeStep: 0});\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n // useEffect(() => {\r\n // if (multiLoader.activeStep > multiLoader.renderSteps.length) {\r\n // setTimeout(() => {\r\n // setMultiLoader({visible: false});\r\n // }, 500)\r\n // }\r\n // // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // }, [multiLoader.activeStep]);\r\n\r\n if (!multiLoader.visible) {\r\n return null\r\n }\r\n\r\n if (multiLoader.finished) {\r\n return \r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n};\r\n\r\nMultiLoader.propTypes = {\r\n useCabinetLoader: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {multiLoader} = store.loaderState;\r\n return {\r\n multiLoader,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setMultiLoader,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MultiLoader)\r\n","import { useState, useEffect, useMemo } from 'react';\r\nimport { checkIfLookFeaturesReceived } from \"../../../api/look-api\";\r\nimport { getCurrentLayout } from \"../../appLayout\";\r\n\r\nconst useFetchFeatures = (partIds,\r\n searchText = \"\",\r\n shouldGetModelsOnlyWithThirdPartyAR3DUrls = false,\r\n selectedFilters\r\n) => {\r\n const [featuresData, setFeaturesData] = useState({});\r\n const [isLoading, setIsLoading] = useState(true);\r\n\r\n const layout = useMemo(() => getCurrentLayout(), []);\r\n\r\n useEffect(() => {\r\n const fetchAllRows = async () => {\r\n setIsLoading(true);\r\n const newFeaturesData = {};\r\n\r\n for (const partId of partIds) {\r\n const featureGroup = layout.getFeatureGroupByPartId(partId);\r\n let navItems = [];\r\n\r\n if (featureGroup) {\r\n // If features are not received and no request is in progress, wait for the promise\r\n if (!featureGroup.allFeaturesReceived && !featureGroup.requestInProgress) {\r\n await checkIfLookFeaturesReceived(featureGroup);\r\n }\r\n\r\n navItems = layout.designNavigationItems(\r\n { part: featureGroup },\r\n selectedFilters,\r\n searchText,\r\n null,\r\n \"all\",\r\n [],\r\n { firstFeature: null, firstConditions: null },\r\n )\r\n\r\n if (shouldGetModelsOnlyWithThirdPartyAR3DUrls) {\r\n navItems = navItems.filter(feature => {\r\n return feature.part\r\n && feature.part.dbFeature\r\n && Array.isArray(feature.part.dbFeature.thirdPartyAR3DUrls)\r\n && feature.part.dbFeature.thirdPartyAR3DUrls.length > 0\r\n })\r\n }\r\n }\r\n\r\n newFeaturesData[partId] = {\r\n rows: navItems,\r\n featureGroup: featureGroup,\r\n };\r\n }\r\n\r\n setFeaturesData(newFeaturesData);\r\n setIsLoading(false);\r\n };\r\n\r\n fetchAllRows();\r\n }, [partIds, searchText, layout, shouldGetModelsOnlyWithThirdPartyAR3DUrls, selectedFilters]);\r\n\r\n return { featuresData, isLoading };\r\n};\r\n\r\nexport default useFetchFeatures;\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {injectIntl} from \"react-intl\";\r\n\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport ListIcon from \"@mui/icons-material/List\";\r\nimport ViewStreamIcon from '@mui/icons-material/ViewStream';\r\nimport ViewModuleIcon from '@mui/icons-material/ViewModule';\r\n\r\nimport {setLookViewType} from \"../../../../actions/lookFunctions\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS} from \"../../../../analytics\";\r\n\r\nconst LookViewTypeSwitcher = (props) => {\r\n\r\n const {intl, lookExpanded, lookViewType, setLookViewType, isMobile} = props;\r\n\r\n const listButtonClick = () => {\r\n const newViewType = lookViewType === 4 ? 1 : lookViewType + 1;\r\n Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookMenuHeaderViewType + newViewType);\r\n setLookViewType(newViewType);\r\n };\r\n\r\n const getViewIcon = () => {\r\n switch (lookViewType) {\r\n case 1:\r\n default:\r\n return \r\n case 2:\r\n return \r\n case 3:\r\n return \r\n case 4:\r\n return \r\n }\r\n }\r\n\r\n return (\r\n \r\n {getViewIcon(lookViewType)}\r\n \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookExpanded, lookViewType} = store.lookState;\r\n const {isMobile} = store.serverState;\r\n return {\r\n lookExpanded,\r\n lookViewType,\r\n isMobile,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookViewType\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookViewTypeSwitcher)\r\n)\r\n","import React, {useEffect, useMemo, useState} from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport { Grid } from 'react-virtualized';\r\nimport 'react-virtualized/styles.css';\r\nimport {injectIntl} from 'react-intl';\r\nimport PropTypes from \"prop-types\";\r\nimport uniqBy from \"lodash/uniqBy\";\r\n\r\nimport {getCurrentLayout} from \"../../../../../../../appLayout\";\r\nimport {featureInterface} from \"../../../../../../../../interfaces/featureInterface\";\r\nimport SqftFeaturesChecker from \"./SqftFeaturesChecker\";\r\nimport SqftOptionsLoading from \"./SqftOptionsLoading\";\r\nimport SqftOptionsRelatedItemRow from \"./SqftOptionsRelatedItemRow\";\r\nimport {\r\n getFilteredRelatedFeatures,\r\n getRelatedFeaturesFromLayout,\r\n} from \"../../../../../../../../misc/helpers\";\r\nimport {getSortedFeatures} from \"../../../../../../helpers/featureHelper\";\r\nimport {loaderDisable, loaderEnable} from \"../../../../../../../ui/loaderView\";\r\nimport {getGridColumnDimensions, useGridDimensions} from \"../../../commonTools/featuresGrid/gridDimensions\";\r\n\r\nconst SqftOptionsRelatedItemList = (props) => {\r\n const { windowHeight, isMobile, activeFeature, itemClickCallback, partId, shouldSortByWidth, searchInputValue,\r\n reCacheMenuCounter, lookViewType, selectedFilters, groheFiltersSearchText } = props;\r\n const [activeItemIndex, setActiveItemIndex] = React.useState(0);\r\n\r\n const [loading, setLoading] = useState(true);\r\n const [parentFeature, setParentFeature] = useState(null);\r\n\r\n const {gridWidth, gridHeight} = useGridDimensions(windowHeight, isMobile);\r\n\r\n const layout = useMemo(() => getCurrentLayout(), []);\r\n const featureGroup = useMemo(() => layout.getFeatureGroupByPartId(partId), [layout, partId]);\r\n\r\n useEffect(() => {\r\n if (featureGroup) {\r\n setLoading(!featureGroup.allFeaturesReceived);\r\n if (!featureGroup.allFeaturesReceived) {\r\n loaderEnable();\r\n }\r\n } else {\r\n setLoading(false);\r\n }\r\n }, [featureGroup]);\r\n\r\n useEffect(() => {\r\n if (!featureGroup) {\r\n setParentFeature(null);\r\n return;\r\n }\r\n\r\n let parentFeature;\r\n\r\n if (featureGroup.activeFeature) {\r\n parentFeature = featureGroup.activeFeature;\r\n } else if (!featureGroup.allFeaturesReceived) {\r\n setParentFeature(null);\r\n return;\r\n }\r\n\r\n if (!featureGroup.activeFeature) {\r\n //featureGroup.setDefault(layout, true);\r\n parentFeature = featureGroup.activeFeature ? featureGroup.activeFeature : featureGroup.activeNotInVisualizerFeature;\r\n }\r\n\r\n setParentFeature(parentFeature);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [featureGroup, layout, activeFeature, partId, loading, reCacheMenuCounter]);\r\n\r\n if (!featureGroup) {\r\n return \r\n }\r\n\r\n if (loading) {\r\n return (\r\n {\r\n if (featureGroup.allFeaturesReceived) {\r\n setLoading(false);\r\n loaderDisable();\r\n }\r\n }} />\r\n )\r\n }\r\n\r\n if (!parentFeature) {\r\n console.log(\"selected feature matched by name not found\", partId);\r\n console.log(\"parentFeature\", parentFeature);\r\n return null;\r\n }\r\n\r\n const relatedFeatures = parentFeature.getFeatureRelatedFeatures();\r\n\r\n if (!Array.isArray(relatedFeatures) || !relatedFeatures.length) {\r\n console.log(\"relatedFeatures are missing\", relatedFeatures);\r\n console.log(\"parentFeature\", parentFeature);\r\n return null;\r\n }\r\n\r\n // Helper function to replace abbreviations in search text\r\n const expandSearchText = (text) => {\r\n return text\r\n .replace(/\\bh(\\d)/gi, 'Height $1')\r\n .replace(/\\bw(\\d)/gi, 'Width $1')\r\n .replace(/\\bd(\\d)/gi, 'Depth $1')\r\n .replace(/\\bh\\b/gi, 'Height')\r\n .replace(/\\bw\\b/gi, 'Width')\r\n .replace(/\\bd\\b/gi, 'Depth');\r\n };\r\n const expandedGroheFiltersSearchText = expandSearchText(groheFiltersSearchText);\r\n\r\n //Now let's search for the related features\r\n const {noFeaturesFound, relatedFeaturesFound} = getRelatedFeaturesFromLayout(\r\n relatedFeatures,\r\n parentFeature,\r\n expandedGroheFiltersSearchText,\r\n selectedFilters\r\n );\r\n if (noFeaturesFound.length) {\r\n console.log(\"ERROR: noFeaturesFound\", noFeaturesFound);\r\n }\r\n\r\n let relatedItemsList = getFilteredRelatedFeatures(relatedFeaturesFound);\r\n relatedItemsList = uniqBy(relatedItemsList, (feature) => feature.dbFeature.id);\r\n let emptyUrlsLog = [];\r\n\r\n relatedItemsList = relatedItemsList.filter(feature => {\r\n if (!feature.dbFeature.thirdPartyAR3DUrls) {\r\n //todo we can remove this searchInputValue and search by filters\r\n if (searchInputValue && feature.getFeatureName().toLowerCase().includes(searchInputValue.toLowerCase())\r\n || !searchInputValue\r\n ) {\r\n emptyUrlsLog.push(feature.dbFeature.sharedFeatureName);\r\n }\r\n } else {\r\n return feature;\r\n }\r\n });\r\n\r\n // const relatedGroups = createRelatedGroups(relatedItemsList, [], activeQuoteIndex, intl, fabricatorData)\r\n // void relatedGroups\r\n // console.log(\"relatedGroups\", relatedGroups);\r\n //\r\n // const groupName = parentFeature.dbFeature.groupName;\r\n // void groupName;\r\n\r\n if (emptyUrlsLog.length > 0) {\r\n console.log(`Features with empty thirdPartyAR3DUrls: ${emptyUrlsLog.join(', ')}`);\r\n }\r\n\r\n if (shouldSortByWidth) {\r\n relatedItemsList = getSortedFeatures(relatedItemsList);\r\n }\r\n\r\n const {columnCount, rowHeight} = getGridColumnDimensions(lookViewType);\r\n\r\n const columnWidth = Math.floor(gridWidth / columnCount) - 8 / columnCount; // Ensure width is an integer to avoid overflow\r\n const rowCount = Math.ceil(relatedItemsList.length / columnCount);\r\n\r\n return (\r\n
    \r\n {\r\n {\r\n const index = rowIndex * columnCount + columnIndex;\r\n if (index >= relatedItemsList.length) return null;\r\n return (\r\n \r\n )\r\n }}\r\n />\r\n }\r\n
    \r\n )\r\n};\r\n\r\nSqftOptionsRelatedItemList.propTypes = {\r\n activeFeature: PropTypes.shape(featureInterface),\r\n partId: PropTypes.string,\r\n shouldSortByWidth: PropTypes.bool,\r\n itemClickCallback: PropTypes.func,\r\n //searchInputValue: PropTypes.string\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const { menuOpened, reCacheMenuCounter } = store.sqftMenuState;\r\n const { visualizersLoaded } = store.serverState;\r\n const { windowHeight, isMobile } = store.serverState;\r\n const { activeQuoteIndex } = store.quotesState;\r\n const { sqftFromFeature } = store.sqftState;\r\n const { lookViewType } = store.lookState;\r\n const {groheFiltersSearchText} = store.groheState;\r\n const {selectedFilters} = store.filterState;\r\n\r\n return {\r\n menuOpened,\r\n windowHeight,\r\n isMobile,\r\n activeQuoteIndex,\r\n visualizersLoadedLength: visualizersLoaded.length,\r\n fabricatorData: store.fabricatorState,\r\n sqftFromFeature,\r\n reCacheMenuCounter,\r\n groheFiltersSearchText,\r\n selectedFilters,\r\n lookViewType,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n};\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(SqftOptionsRelatedItemList)\r\n)\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst LookVirtualizedListLoadingItem = (props) => {\r\n\r\n const {style, currentType, lookExpanded} = props;\r\n\r\n return (\r\n
  • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {currentType === 1 ? (\r\n
    \r\n
    \r\n
    \r\n ) : null}\r\n
    \r\n
  • \r\n )\r\n};\r\n\r\nLookVirtualizedListLoadingItem.propTypes = {\r\n style: PropTypes.object,\r\n viewType: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n const {lookExpanded, lookViewType} = store.lookState;\r\n const {isMobile} = store.serverState;\r\n const {viewType} = ownProps;\r\n\r\n return {\r\n lookExpanded,\r\n currentType: viewType || lookViewType,\r\n isMobile,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(LookVirtualizedListLoadingItem)\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport SvgIcon from \"@mui/material/SvgIcon\";\r\n\r\nimport {featureInterface} from \"../../../../../interfaces/featureInterface\";\r\nimport {GroheLockIconSmall} from \"../../../../common/icons\";\r\nimport {pricingIsLocked} from \"../../lookNavigationFunctions\";\r\nimport {getCurrentLayout} from \"../../../../appLayout\";\r\nimport {setLookOverlayOpened} from \"../../../../../actions/lookFunctions\";\r\nimport {LOOK_OVERLAYS} from \"../../../core/constants\";\r\n\r\nconst LookFeaturePriceLocked = (props) => {\r\n\r\n const {lookFeature, lockedText, setLookOverlayOpened} = props;\r\n\r\n let {showPrice} = pricingIsLocked();\r\n if (showPrice && lookFeature) {\r\n const layout = getCurrentLayout();\r\n showPrice = layout.partIdExistInQtCategory(lookFeature.partId);\r\n }\r\n\r\n const handlePriceLockClick = () => {\r\n console.log(\"lookFeature\", lookFeature);\r\n setLookOverlayOpened(LOOK_OVERLAYS.leadCapture);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n\r\n};\r\n\r\nLookFeaturePriceLocked.propTypes = {\r\n lookFeature: PropTypes.shape(featureInterface),\r\n lockedText: PropTypes.string,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n fabricatorData: store.fabricatorState,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookOverlayOpened\r\n}\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookFeaturePriceLocked)\r\n)\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\n\r\nimport {setSelectedFilters, showFilters} from \"../../../../actions/actionFunctions\";\r\nimport GroheFiltersSearchInputAsync from \"../../grohe/groheNavigation/groheFilters/groheFiltersSearchInputAsync\";\r\nimport LookFiltersList from \"./lookFiltersList\";\r\nimport LookFiltersReset from \"./lookFiltersReset\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS} from \"../../../../analytics\";\r\nimport {setSQFTActiveLevel3Button} from \"../../../../actions/sqftMenuFunctions\";\r\n\r\n\r\nconst LookFilters = (props) => {\r\n const { wrapperStyles, filtersOpened, intl, showFilters, lookActiveCategory, isMobile, lookActiveFeature,\r\n selectedFilters, groheFiltersSearchText } = props;\r\n const { isRelatedItemsFilters, shouldCloseLevel3Sidebar, setSQFTActiveLevel3Button } = props;\r\n\r\n const closeFilterClick = () => {\r\n Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeaturesFiltersClose);\r\n showFilters(!filtersOpened);\r\n if (shouldCloseLevel3Sidebar) {\r\n setSQFTActiveLevel3Button(null);\r\n }\r\n };\r\n\r\n if (!lookActiveCategory) {\r\n return null\r\n }\r\n\r\n //console.log(\"availableFilters\", availableFilters);\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n {selectedFilters.length || groheFiltersSearchText ? : null}\r\n
    \r\n
    \r\n )\r\n};\r\n\r\nLookFilters.propTypes = {\r\n wrapperStyles: PropTypes.object,\r\n isRelatedItemsFilters: PropTypes.bool,\r\n shouldCloseLevel3Sidebar: PropTypes.bool\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookActiveCategory, lookActiveFeature} = store.lookState;\r\n const {showFilters, selectedFilters} = store.filterState;\r\n const {isMobile} = store.serverState;\r\n const {groheFiltersSearchText} = store.groheState;\r\n\r\n return {\r\n filtersOpened: showFilters,\r\n selectedFilters,\r\n lookActiveCategory,\r\n lookActiveFeature,\r\n isMobile,\r\n groheFiltersSearchText,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n showFilters,\r\n setSelectedFilters,\r\n setSQFTActiveLevel3Button,\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookFilters)\r\n);\r\n","import React from \"react\";\r\nimport {FormattedMessage} from \"react-intl\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {useLocation} from \"react-router-dom\";\r\n\r\nimport {IS_PRODUCT_JOURNEY} from \"../../config\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS} from \"../../analytics\";\r\nimport {ROUTES} from \"../../routes\";\r\nimport {isIframe} from \"../../misc/helpers\";\r\nimport {UserPopupContent} from \"../visComponents/constants\";\r\nimport {setUserPopupContent} from \"../../actions/userFunctions\";\r\nimport {setLookOverlayOpened} from \"../../actions/lookFunctions\";\r\nimport {LOOK_OVERLAYS} from \"./core/constants\";\r\n\r\n\r\nconst LookPolicyLinks = (props) => {\r\n\r\n const {position, isSimple, lookPageOpened, isMobile, fabricatorData, setUserPopupContent, setLookOverlayOpened} = props;\r\n const location = useLocation();\r\n\r\n const openLink = (linkKey) => {\r\n const baseUrl = fabricatorData.isAmericanStandard\r\n ? \"https://www.americanstandard-us.com\"\r\n : window.location && window.location.ancestorOrigins && window.location.ancestorOrigins[\"0\"]\r\n ? window.location.ancestorOrigins[\"0\"]\r\n : \"https://grohe.us\";\r\n\r\n Analytics.sendClickEvent(lookPageOpened === ROUTES.list\r\n ? LOOK_JOURNEY_ANALYTIC_EVENTS.lookListPolicyLinks + linkKey\r\n : LOOK_JOURNEY_ANALYTIC_EVENTS.lookCanvasPolicyLinks + linkKey\r\n );\r\n\r\n switch (linkKey) {\r\n case \"terms\": {\r\n const openUrl = fabricatorData.isAmericanStandard\r\n ? baseUrl + \"/terms-of-use#Terms%20of%20Use\"\r\n : baseUrl + \"/legal-info\";\r\n return window.open(openUrl, \"_blank\");\r\n }\r\n case \"privacy\": {\r\n const openUrl = fabricatorData.isAmericanStandard\r\n ? baseUrl + \"/privacy-policy#Privacy\"\r\n : baseUrl + \"/privacy-policy\";\r\n return window.open(openUrl, \"_blank\");\r\n }\r\n // case \"socialPolicy\":\r\n // return window.open(baseUrl + \"/social-policy\", \"_blank\");\r\n // case \"legalInfo\":\r\n // return window.open(baseUrl + (fabricatorData.isAmericanStandard ? \"/lead-generation-policy\" : \"/legal-info\"), \"_blank\");\r\n case \"privacyQC\": {\r\n setUserPopupContent(UserPopupContent.terms);\r\n setLookOverlayOpened(LOOK_OVERLAYS.leadCapture, \"termsOnly\");\r\n break;\r\n }\r\n default:\r\n return\r\n }\r\n }\r\n\r\n const isLixil = isIframe() && fabricatorData.isLixil;\r\n\r\n return (\r\n
    \r\n
      \r\n {isLixil ? [\"terms\", \"privacy\"].map(linkKey => {\r\n return (\r\n
    • \r\n openLink(linkKey)}>\r\n \r\n \r\n
    • \r\n )\r\n }) : (\r\n
    • \r\n openLink(\"privacyQC\")}>\r\n \r\n \r\n
    • \r\n )}\r\n
    \r\n
    \r\n )\r\n};\r\n\r\nLookPolicyLinks.propTypes = {\r\n position: PropTypes.string,\r\n isSimple: PropTypes.bool\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookPageOpened} = store.lookState;\r\n const {isMobile} = store.serverState;\r\n const fabricatorData = store.fabricatorState;\r\n return {\r\n lookPageOpened,\r\n isMobile,\r\n fabricatorData\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setUserPopupContent,\r\n setLookOverlayOpened\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LookPolicyLinks)\r\n","import {connect} from \"react-redux\";\r\n\r\nimport {postMessageToParent} from \"../lookMessaging\";\r\nimport {GROHE_ON_OPEN_ACTION, GROHE_POST_MESSAGES_ACTIONS} from \"../iframeIntegration\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport {getTempIdForPostMessage, LIXIL_USER_QUERY_PARAMS} from \"../../../api/look-api\";\r\nimport {getLookId} from \"../lookNavigation/lookFunctions2\";\r\nimport {loaderEnable} from \"../../ui/loaderView\";\r\n\r\nconst WithLoginPostMessage = (props) => {\r\n\r\n const {children, lookReturnAction, activePreset, bvPresets, exisingTempId} = props;\r\n\r\n const loginPostMessage = async (sessionEnded = false) => {\r\n loaderEnable();\r\n const layout = getCurrentLayout();\r\n await layout.updateLocalStorage();\r\n\r\n let tempId = await getTempIdForPostMessage(lookReturnAction || GROHE_ON_OPEN_ACTION.saveQuote, exisingTempId);\r\n let lookUrl = window.location.href;\r\n\r\n if (sessionEnded) {\r\n const searchParams = new URLSearchParams(\r\n (window.location.search).replace(/amp;/g, \"\")\r\n || (window.location.hash).replace(/(.*)\\?/g, \"\")\r\n || \"\"\r\n );\r\n LIXIL_USER_QUERY_PARAMS.forEach(param => searchParams.delete(param));\r\n\r\n let stringifiedParams = searchParams.toString();\r\n let baseHref = window.location.origin + window.location.pathname;\r\n if (baseHref[baseHref.length - 1] === \"/\") {\r\n baseHref.slice(0, -1);\r\n }\r\n if (stringifiedParams && stringifiedParams.length && stringifiedParams[0] !== \"?\") {\r\n stringifiedParams = \"?\" + stringifiedParams;\r\n }\r\n lookUrl = baseHref + stringifiedParams + window.location.hash;\r\n\r\n }\r\n\r\n if (!lookUrl.includes(\"look-\")) {\r\n const withHashUrl = new URL(lookUrl);\r\n const lookId = getLookId(activePreset, bvPresets);\r\n withHashUrl.hash = `#/look-${lookId}`;\r\n lookUrl = withHashUrl.href;\r\n }\r\n\r\n console.log(\"returnUrl: \", lookUrl);\r\n\r\n postMessageToParent({\r\n \"EventType\": GROHE_POST_MESSAGES_ACTIONS.signIn,\r\n \"returnUrl\": lookUrl,\r\n \"tempID\": tempId\r\n });\r\n }\r\n\r\n return children(loginPostMessage)\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookReturnAction} = store.lookState;\r\n const {exisingTempId} = store.groheState;\r\n const {activePreset, bvPresets} = store.bathroomVisualizerState;\r\n\r\n return {\r\n lookReturnAction,\r\n activePreset,\r\n bvPresets,\r\n exisingTempId,\r\n }\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(WithLoginPostMessage)\r\n","import React, {useEffect} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {injectIntl} from \"react-intl\";\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport {setLookOpened,\r\n setSidebarModalOpened,\r\n setLookActiveFeature,\r\n setLookActiveCategory} from \"../../../../actions/lookFunctions\";\r\nimport LookSideBarLayoutButton from \"./lookSideBarLayoutButton\";\r\nimport LookSideBarSaveButton from \"./lookSideBarSaveButton\";\r\n// import LookSideBarHomeButton from \"./lookSideBarHomeButton\";\r\nimport LookSideBarEditButton from \"./lookSideBarEditButton\";\r\nimport LookSideBarMoreButton from \"./lookSideBarMoreButton\";\r\nimport LookSideBarFiltersButton from \"./lookSideBarFiltersButton\";\r\nimport {LOOK_INTRO_STEPS, LOOK_OVERLAYS} from \"../../core/constants\";\r\nimport {zoomCanvasOut} from \"../lookFunctions\";\r\nimport {setCanvasScale} from \"../../../../actions/actionFunctions\";\r\nimport LookSideBarPingPilotButton from \"./lookSideBarPingPilotButton\";\r\nimport LookSideBarRevertButton from \"./lookSideBarRevertButton\";\r\nimport WithUpdateLookCartItem from \"../../hocs/withUpdateLookCartItem\";\r\nimport {useShowRoomLayoutsButton} from \"../../../../misc/helperHooks\";\r\n\r\nconst LookSidebar = (props) => {\r\n\r\n const {popupCloseClick, imageCanvas, lookOverlayOpened, lookPageOpened, isMobile, introStep, lookOpened, setLookOpened,\r\n setCanvasScale, setLookActiveFeature, setLookActiveCategory, activePreset, visualizersLoadedLength} = props;\r\n\r\n const highLightForDemo = [LOOK_INTRO_STEPS.wallsAndFloor, LOOK_INTRO_STEPS.layoutsAndRooms, LOOK_INTRO_STEPS.saveAndMore];\r\n\r\n const stylePopups = [LOOK_OVERLAYS.stylePairing, LOOK_OVERLAYS.styleColor, LOOK_OVERLAYS.styleRemove, LOOK_OVERLAYS.styleRemoveBack];\r\n const stylePopupOnMobile = isMobile && stylePopups.some(popupType => popupType === lookOverlayOpened);\r\n\r\n useEffect(() => {\r\n // if (lookPageOpened || lookOverlayOpened) {\r\n if (lookPageOpened) {\r\n zoomCanvasOut(imageCanvas, setCanvasScale)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [lookPageOpened, lookOverlayOpened])\r\n\r\n const sidebarButtonClicked = () => { // closes opened menu and zooms out canvas\r\n if (lookOpened) {\r\n setLookOpened(null);\r\n setLookActiveCategory(\"\");\r\n setLookActiveFeature(null);\r\n }\r\n // revertFeatureBeforeChange(updateCanvasCount);\r\n zoomCanvasOut(imageCanvas, setCanvasScale);\r\n }\r\n\r\n const showRoomLayoutsButton = useShowRoomLayoutsButton(activePreset, isMobile, visualizersLoadedLength);\r\n\r\n return (\r\n \r\n )\r\n};\r\n\r\nLookSidebar.propTypes = {\r\n popupCloseClick: PropTypes.func,\r\n imageCanvas: PropTypes.object,\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookOpened, lookOverlayOpened, lookPageOpened, introStep} = store.lookState;\r\n const {activeTheme, isMobile, visualizersLoaded} = store.serverState;\r\n const {activePreset} = store.bathroomVisualizerState;\r\n\r\n return {\r\n lookOpened,\r\n activeTheme,\r\n lookOverlayOpened,\r\n isMobile,\r\n introStep,\r\n lookPageOpened,\r\n activePreset,\r\n visualizersLoadedLength: visualizersLoaded.length,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookOpened,\r\n setSidebarModalOpened,\r\n setCanvasScale,\r\n setLookActiveFeature,\r\n setLookActiveCategory,\r\n};\r\n\r\nexport default withRouter(\r\n injectIntl(connect(mapStateToProps, mapDispatchToProps)(LookSidebar))\r\n)\r\n","import React, {Fragment, useState} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport trim from \"lodash/trim\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport PhoneIcon from '@mui/icons-material/Phone';\r\nimport TextField from \"@mui/material/TextField\";\r\nimport CheckIcon from '@mui/icons-material/Check';\r\n\r\nimport {setUserPopupContent, setUserTwoFa} from \"../../../actions/userFunctions\";\r\nimport {LOOK_OVERLAYS} from \"../core/constants\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../config\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS, PRODUCT_JOURNEY_ANALYTIC_EVENTS} from \"../../../analytics\";\r\nimport {UserPopupContent} from \"../../visComponents/constants\";\r\nimport {ROUTES} from \"../../../routes\";\r\nimport {\r\n generateTwoFaAuthenticationToken,\r\n sendAuthenticationRequest,\r\n validateTwoFaAuthentication\r\n} from \"../../../api/user-api\";\r\nimport MaterialSpinner from \"../../ui/materialSpinner\";\r\nimport {changeUserInfo, setUserPhoneNumberValidated} from \"../../../actions/actionFunctions\";\r\n\r\nexport const sendAuthRequest = async (twoFALoading, analyticsLabel, userInfo, userIsLoggedIn, type, setUserTwoFa) => {\r\n if (twoFALoading) {\r\n return false\r\n }\r\n setUserTwoFa({\r\n twoFALoading: true\r\n });\r\n Analytics.sendClickEvent(analyticsLabel);\r\n const twoFAToken = await generateTwoFaAuthenticationToken();\r\n if (twoFAToken && userIsLoggedIn) {\r\n setUserTwoFa({ // set token to redux store, so the input can check it\r\n twoFAToken\r\n });\r\n await sendAuthenticationRequest(twoFAToken, `+${userInfo.country.dialCode} ${userInfo.phoneNumber}`, type);\r\n }\r\n setUserTwoFa({\r\n twoFALoading: false\r\n });\r\n}\r\n\r\nconst TwoFaCodeInput = (props) => {\r\n\r\n const {history, intl, setUserPhoneNumberValidated, userInfo, isPhoneNumberValidated, lookOverlayOpened,\r\n setUserPopupContent, userTwoFa, setUserTwoFa, closePopup, location} = props;\r\n const {twoFAToken, twoFALoading} = userTwoFa;\r\n\r\n const [authCode, setAuthCode] = useState(\"\");\r\n const [inValidCode, setInValidCode] = useState(\"\");\r\n const [isBlurred, setIsBlurred] = useState(false);\r\n\r\n const updatePhoneButtonClick = () => {\r\n if (twoFALoading) {\r\n return false\r\n }\r\n if (lookOverlayOpened === LOOK_OVERLAYS.leadCapture) {\r\n const analyticsLabel = IS_PRODUCT_JOURNEY\r\n ? PRODUCT_JOURNEY_ANALYTIC_EVENTS.leadCapturePopupTwoFAUpdatePhone\r\n : LOOK_JOURNEY_ANALYTIC_EVENTS.lookLeadCapturePopupTwoFAUpdatePhone;\r\n Analytics.sendClickEvent(analyticsLabel);\r\n setUserPopupContent(UserPopupContent.twoFA);\r\n return false\r\n }\r\n Analytics.sendClickEvent(PRODUCT_JOURNEY_ANALYTIC_EVENTS.cartTwoFAUpdatePhone);\r\n history.push(ROUTES.cartTwoFA);\r\n };\r\n\r\n const checkCode = async (newAuthCode) => {\r\n setUserTwoFa({\r\n twoFALoading: true\r\n });\r\n const validated = await validateTwoFaAuthentication(twoFAToken, newAuthCode, userInfo.phoneNumber);\r\n console.log(\"validated\", validated);\r\n setUserTwoFa({\r\n twoFALoading: false\r\n });\r\n Analytics.sendEvent(\"PhoneVerification\", validated ? \"Success\" : \"Failure\");\r\n if (validated) {\r\n setUserPhoneNumberValidated(true);\r\n const currentLocation = location.pathname;\r\n history.push(currentLocation + \"/phone-verified-thankyou\");\r\n setTimeout(() => {\r\n if (lookOverlayOpened === LOOK_OVERLAYS.leadCapture && closePopup) {\r\n history.push(currentLocation);\r\n closePopup();\r\n } else {\r\n history.push(ROUTES.cartTerms);\r\n }\r\n }, 2000);\r\n } else {\r\n setInValidCode(intl.formatMessage({id: \"look.inputs.errors.incorrectCode\"}));\r\n }\r\n }\r\n\r\n const onUserInputChange = (e) => {\r\n const newAuthCode = trim(e.target.value).replace(/[^0-9]/g, \"\");\r\n setAuthCode(newAuthCode);\r\n\r\n if (newAuthCode.length === 6) {\r\n if (inValidCode) {\r\n setInValidCode();\r\n }\r\n checkCode(newAuthCode);\r\n } else if (newAuthCode.length > 6) {\r\n setInValidCode(intl.formatMessage({id: \"look.inputs.errors.maxCode\"}));\r\n } else if (isBlurred && newAuthCode.length < 6) {\r\n setInValidCode(intl.formatMessage({id: \"look.inputs.errors.minCode\"}));\r\n } else if (inValidCode) {\r\n setInValidCode(\"\");\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n setIsBlurred(true)}\r\n error={!!inValidCode}\r\n helperText={inValidCode}\r\n variant=\"outlined\" />\r\n
    \r\n
    \r\n
    \r\n {isPhoneNumberValidated ? (\r\n \r\n \r\n \r\n ) : twoFALoading ? : (\r\n \r\n \r\n \r\n )}\r\n
    \r\n
    \r\n )\r\n};\r\n\r\nTwoFaCodeInput.propTypes = {\r\n closePopup: PropTypes.func\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {userInfo, isPhoneNumberValidated, userIsLoggedIn, userTwoFa} = store.userState;\r\n const {lookOverlayOpened} = store.lookState;\r\n\r\n return {\r\n lookOverlayOpened,\r\n userInfo,\r\n isPhoneNumberValidated,\r\n userIsLoggedIn,\r\n userTwoFa,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n changeUserInfo,\r\n setUserPhoneNumberValidated,\r\n setUserTwoFa,\r\n setUserPopupContent,\r\n};\r\n\r\nexport default injectIntl(\r\n withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(TwoFaCodeInput)\r\n )\r\n)\r\n","import React, {useMemo, useRef} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport $ from \"jquery\";\r\n\r\nimport CheckIcon from '@mui/icons-material/Check';\r\n\r\nimport FeatureName from \"../../../../visComponents/featureName\";\r\nimport {featureInterface} from \"../../../../../interfaces/featureInterface\";\r\nimport FeatureThumbnail from \"../../../../visComponents/featureThumbnail\";\r\nimport Config, {IS_LIXIL_SERVERS, IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\nimport {getCommonCoords, getFeatureCoords, getLayerCenter, navFeatureCLick, zoomCanvasOut} from \"../../lookFunctions\";\r\nimport {addToCart, setCanvasScale, updateCanvasCount} from \"../../../../../actions/actionFunctions\";\r\nimport {getCurrentLayout} from \"../../../../appLayout\";\r\nimport {LOOK_WALLS_ONLY} from \"../../../core/constants\";\r\n\r\nimport {enableRelatedFeature, getPropertyToMatchActiveFeature} from \"../../lookFunctions2\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS} from \"../../../../../analytics\";\r\nimport LookFeaturePrice from \"../lookListFeature/lookFeaturePrice\";\r\nimport {setWizardSelectedValues} from \"../../../../../actions/wizardFunctions\";\r\nimport {wizardGroupInterface} from \"../../../../../interfaces/wizardItemInterface\";\r\nimport LookWizardSectionListFeatureQuantity from \"./lookWizardSectionListFeatureQuantity\";\r\nimport {\r\n setLookActiveFeature,\r\n setLookAllWallsTutorial,\r\n setLookCompatabilityAlert\r\n} from \"../../../../../actions/lookFunctions\";\r\nimport LookAllWallsRadioButton from \"../lookAllWallsRadioButton\";\r\nimport {\r\n checkForCompatabilityAlert,\r\n clickOnSimilarFeatures,\r\n getApplyToLogic,\r\n getShowMatchRadio,\r\n} from \"../../lookNavigationFunctions\";\r\nimport LookListActiveFeatureMobileButton from \"../lookListFeature/lookListActiveFeatureMobileButton\";\r\nimport {getAnalyticsEcommerceItem} from \"../../../../../analyticsEcommerceParams\";\r\nimport {getCorrectedCenter, shouldZoomPartId, shouldZoomToTheBottom} from \"../../../hocs/withZoomToFeature\";\r\nimport {getFeatureIsLocked} from \"../../../../../misc/helpers\";\r\n\r\nconst LookWizardSectionListFeature = (props) => {\r\n\r\n const {wizardGroup, lookFeature, lookViewType, featureGroup, updateCanvasCount, style, setLookActiveFeature, navItems,\r\n isMobile, addToCart, qtActiveCategory, setCanvasScale, wizardSelectedValues, wizardActiveStep, setWizardSelectedValues,\r\n imageCanvas, maxClickCountReached, updateLookCartItem, setLookCompatabilityAlert, isLixil, groheActiveFeatureQuantity,\r\n lookAllWallsTutorial, setLookAllWallsTutorial, isPhoneNumberValidated, lookLockedTutorial, isEncore, canvasScale,\r\n isAllWallsTutorialItem} = props;\r\n\r\n const featureElement = useRef();\r\n\r\n const featureIsLocked = useMemo(() => {\r\n if (wizardGroup.skipLockDontApply) {\r\n return false\r\n }\r\n return getFeatureIsLocked(lookFeature)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [lookFeature, wizardGroup, isPhoneNumberValidated]);\r\n\r\n const applyWizardItemClick = async (zoomFeature) => {\r\n setWizardSelectedValues({\r\n [wizardActiveStep]: {\r\n wizardGroup,\r\n selectedFeature: lookFeature,\r\n partId: lookFeature.partId,\r\n singleFeature: navItems.length === 1,\r\n quantity: groheActiveFeatureQuantity\r\n }\r\n });\r\n\r\n if (wizardGroup && wizardGroup.skipLockDontApply) {\r\n return false\r\n }\r\n\r\n const layout = getCurrentLayout();\r\n if (zoomFeature) {\r\n\r\n const parent = featureGroup || zoomFeature.getParent();\r\n Analytics.sendEcommerceEvent(\"select_item\", {\r\n item_list_id: zoomFeature.partId,\r\n item_list_name: parent.dbName || parent.partName || \"\",\r\n items: [getAnalyticsEcommerceItem(zoomFeature, 1)],\r\n });\r\n\r\n const featureLabel = Analytics.getSkuForAnalytics(zoomFeature);\r\n const analyticsLabel = LOOK_JOURNEY_ANALYTIC_EVENTS.lookWizardListFeature + featureLabel;\r\n Analytics.sendClickEvent(analyticsLabel);\r\n\r\n const positionInList = navItems ? navItems.findIndex(navItem => navItem.part.dbFeature.id === lookFeature.dbFeature.id) : null;\r\n setLookActiveFeature(zoomFeature, positionInList); // to set feature screen options // allow for look journey too\r\n\r\n if (showMatchRadio) { // before nav feature click\r\n const applyToLogic = getApplyToLogic(lookFeature);\r\n if (applyToLogic && Array.isArray(applyToLogic.currentApplyToArray) && applyToLogic.currentApplyToArray.length) {\r\n await clickOnSimilarFeatures(zoomFeature, applyToLogic, true);\r\n }\r\n }\r\n navFeatureCLick(zoomFeature);\r\n enableRelatedFeature(zoomFeature, addToCart, qtActiveCategory);\r\n\r\n // const parent = zoomFeature.getParent();\r\n // if (parent.disabled) {\r\n // parent.disabled = false;\r\n // parent.disabledClick();\r\n // }\r\n if (wizardGroup.multipleAddToCart) {\r\n return\r\n }\r\n updateCanvasCount();\r\n if (imageCanvas && imageCanvas.current && imageCanvas.current.pinchZoom && !LOOK_WALLS_ONLY.includes(zoomFeature.partId)\r\n && shouldZoomPartId(zoomFeature.partId, isMobile)) {\r\n if (zoomFeature.matchesMetaForArrayOfConditions(parent.getArrayOfConditions())) {\r\n const commonCoords = getFeatureCoords(zoomFeature, true) || getCommonCoords(parent, zoomFeature, imageCanvas.current.canvas);\r\n const {center} = getCorrectedCenter(\r\n getLayerCenter(commonCoords, imageCanvas.current.canvas, isMobile),\r\n null, zoomFeature, imageCanvas, isMobile\r\n );\r\n if (center) {\r\n imageCanvas.current.pinchZoom.zoomToCenter(center, 0, false, layout.partIdExistInQtCategory(zoomFeature.partId));\r\n setCanvasScale(imageCanvas.current.pinchZoom.options.tapZoomFactor)\r\n }\r\n }\r\n } else if (canvasScale !== 1) {\r\n zoomCanvasOut(imageCanvas, setCanvasScale);\r\n if (shouldZoomToTheBottom(zoomFeature.partId)) {\r\n $(\"html, body\").animate({scrollTop: document.body.scrollHeight}, 500);\r\n }\r\n }\r\n if (!lookAllWallsTutorial.finished && showMatchRadio && !featureIsLocked && !lookFeature.notAvailableInVisualizer\r\n && featureElement && featureElement.current && !isEncore) {\r\n const applyToLogic = getApplyToLogic(lookFeature);\r\n if (applyToLogic) {\r\n setLookAllWallsTutorial({\r\n visible: true,\r\n // withGrid: navItems.length === 1,\r\n // positionInList,\r\n lookFeature,\r\n top: featureElement.current.getBoundingClientRect().top,\r\n left: featureElement.current.getBoundingClientRect().left,\r\n height: style.height,\r\n width: style.width,\r\n // firstLockedIndex,\r\n // firstUnlockedIndex,\r\n })\r\n }\r\n }\r\n }\r\n updateLookCartItem(zoomFeature);\r\n }\r\n\r\n // const [canRender, setCanRender] = useState(false);\r\n const listFeatureClick = (event) => {\r\n if (event.target.closest(\".look-icon--delete\") || event.target.closest(\".gm-ios-checkbox\") || lookLockedTutorial.visible || isAllWallsTutorialItem) {\r\n return\r\n }\r\n if (Config.isDevMode() && lookFeature) {\r\n console.log(\"lookFeature\", lookFeature, lookFeature.metaData);\r\n }\r\n let zoomFeature = lookFeature;\r\n if (maxClickCountReached()) { // fabricator settings click lead capture\r\n return false;\r\n }\r\n\r\n const compatabilityLogic = isLixil ? [] : checkForCompatabilityAlert(zoomFeature);\r\n if (compatabilityLogic.length) {\r\n Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookShowCompatabilityAlert);\r\n setLookCompatabilityAlert({\r\n visible: true,\r\n compatabilityLogic,\r\n clickedFeature: zoomFeature,\r\n applyFunction: applyWizardItemClick.bind(this, zoomFeature) // always apply features from this popup\r\n });\r\n return false\r\n }\r\n\r\n applyWizardItemClick(zoomFeature);\r\n }\r\n\r\n // const realFeatureGroup = (featureGroup || lookFeature.getParent())\r\n // const activeFeature = realFeatureGroup.activeNotInVisualizerFeature || realFeatureGroup.activeFeature;\r\n let isActive = false;\r\n if (wizardSelectedValues[wizardActiveStep] && wizardSelectedValues[wizardActiveStep].selectedFeature) {\r\n const propToMatch = getPropertyToMatchActiveFeature(wizardSelectedValues[wizardActiveStep].selectedFeature);\r\n isActive = lookFeature.dbFeature[propToMatch] === wizardSelectedValues[wizardActiveStep].selectedFeature.dbFeature[propToMatch]\r\n }\r\n const nameLength = IS_PRODUCT_JOURNEY ? 40 : 500;\r\n\r\n const showMatchRadio = getShowMatchRadio(lookFeature);\r\n const showAllWalls = isActive && showMatchRadio;\r\n\r\n return (\r\n
  • \r\n
    \r\n {isActive ? (IS_PRODUCT_JOURNEY && isMobile) ? (\r\n \r\n ) : (\r\n
    \r\n \r\n
    \r\n ) : null}\r\n \r\n {showAllWalls ? : null}\r\n
    \r\n
    \r\n \r\n \r\n \r\n {(wizardGroup.multipleAddToCart && !IS_PRODUCT_JOURNEY) || !IS_LIXIL_SERVERS ? null : (\r\n

    \r\n \r\n

    \r\n )}\r\n {wizardGroup.hidePriceNoCart ? null : (\r\n
    \r\n \r\n
    \r\n )}\r\n {wizardGroup.multipleAddToCart && !lookFeature.dbFeature.hideQuantity && !IS_PRODUCT_JOURNEY ? (\r\n
    \r\n \r\n
    \r\n ) : null}\r\n
    \r\n
  • \r\n )\r\n};\r\n\r\nLookWizardSectionListFeature.propTypes = {\r\n lookFeature: PropTypes.shape(featureInterface),\r\n featureGroup: PropTypes.object,\r\n viewType: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n wizardGroup: PropTypes.shape(wizardGroupInterface),\r\n style: PropTypes.object,\r\n imageCanvas: PropTypes.object.isRequired,\r\n maxClickCountReached: PropTypes.func,\r\n updateLookCartItem: PropTypes.func,\r\n navItems: PropTypes.array,\r\n isAllWallsTutorialItem: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookViewType, lookAllWallsTutorial, lookLockedTutorial} = store.lookState;\r\n const {isMobile} = store.serverState;\r\n const {activePreset, bvPresets, canvasScale} = store.bathroomVisualizerState;\r\n const {qtActiveCategory} = store.qtState;\r\n const {wizardSelectedValues, wizardActiveStep} = store.wizardState;\r\n const {cabinetsApplyTo} = store.navigationState;\r\n const {isLixil, isEncore} = store.fabricatorState;\r\n const {groheActiveFeatureQuantity} = store.groheState;\r\n const {isPhoneNumberValidated} = store.userState;\r\n\r\n return {\r\n lookViewType,\r\n isMobile,\r\n activePreset,\r\n bvPresets,\r\n qtActiveCategory,\r\n canvasScale,\r\n wizardSelectedValues,\r\n wizardActiveStep,\r\n cabinetsApplyTo,\r\n isLixil,\r\n groheActiveFeatureQuantity,\r\n lookAllWallsTutorial,\r\n isPhoneNumberValidated,\r\n lookLockedTutorial,\r\n isEncore,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n updateCanvasCount,\r\n addToCart,\r\n setCanvasScale,\r\n setWizardSelectedValues,\r\n setLookActiveFeature,\r\n setLookCompatabilityAlert,\r\n setLookAllWallsTutorial,\r\n};\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(LookWizardSectionListFeature)\r\n)\r\n","import React from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {FormattedMessage} from \"react-intl\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport {\r\n toggleSelectionWindow, toggleSelectionFeatureInfo, setCameFromPage,\r\n} from \"../../actions/actionFunctions\";\r\n\r\nimport Analytics from \"../../analytics\";\r\nimport {ROUTES} from \"../../routes\";\r\n\r\n\r\nconst ShoppingCartButton = (props) => {\r\n\r\n const {className, cartItems, setCameFromPage, selectionFeatureInfo, toggleSelectionFeatureInfo, toggleSelectionWindow,\r\n selectionOpened, selectionGroup, history, location} = props;\r\n\r\n const shCartButtonClick = () => {\r\n Analytics.sendClickEvent('go-to-shopping-cart');\r\n\r\n if (selectionOpened) {\r\n toggleSelectionWindow(false, selectionGroup);\r\n setCameFromPage(\"materials\");\r\n if (selectionFeatureInfo) {\r\n toggleSelectionFeatureInfo(null);\r\n }\r\n } else if (location && (location.pathname === ROUTES.home || location.pathname === ROUTES.quoteDesign)) {\r\n setCameFromPage(ROUTES.quoteDesign);\r\n }\r\n\r\n if (!window.location.href.includes('shoppingcart')) {\r\n history.push(ROUTES.shoppingcart);\r\n }\r\n\r\n };\r\n\r\n return (\r\n \r\n )\r\n\r\n}\r\n\r\nShoppingCartButton.propTypes = {\r\n text: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\r\n className: PropTypes.string\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {cartItems} = store.cartState;\r\n const {selectionFeatureInfo, selectionOpened, selectionGroup} = store.selectionState;\r\n\r\n return {\r\n cartItems,\r\n selectionFeatureInfo,\r\n selectionOpened,\r\n selectionGroup,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setCameFromPage,\r\n toggleSelectionFeatureInfo,\r\n toggleSelectionWindow,\r\n}\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(ShoppingCartButton)\r\n);\r\n","import React, {useEffect, useState} from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport {setLanguage} from \"../../actions/serverFunctions\";\r\nimport Config, {AVAILABLE_LANGUAGES, POST_MESSAGES} from \"../../config\";\r\nimport {isIframe} from \"../../misc/helpers\";\r\n\r\nconst LanguageSwitcher = (props) => {\r\n\r\n const {language, setLanguage, intl, fabricatorSettings} = props;\r\n const [dropdownVisible, setDropdownVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n return () => {\r\n window.removeEventListener('click', handleWrapperBlur)\r\n }\r\n }, []);\r\n\r\n if (!fabricatorSettings.showLanguageSelect || (!Config.isDevMode() && !document.kvConfig.isBackend)) {\r\n return null\r\n }\r\n\r\n const activeLanguage = language;\r\n\r\n const handleWrapperBlur = (e) => {\r\n const disallowClasses = [\".language\", \".language-list\"];\r\n if (!disallowClasses.some(cls => e.target.closest(cls))) {\r\n setDropdownVisible(false)\r\n }\r\n };\r\n\r\n const handleButtonClick = () => {\r\n const newVisible = !dropdownVisible;\r\n setDropdownVisible(newVisible);\r\n setTimeout(() => {\r\n newVisible\r\n ? window.addEventListener('click', handleWrapperBlur)\r\n : window.removeEventListener('click', handleWrapperBlur)\r\n }, 0)\r\n };\r\n\r\n const handleLocaleClick = (locale) => {\r\n setLanguage(locale);\r\n if (isIframe() && window.parent) {\r\n window.parent.postMessage({\r\n action: POST_MESSAGES.setIframeLanguage,\r\n payload: { language: locale }\r\n }, \"*\");\r\n }\r\n handleButtonClick();\r\n };\r\n\r\n const getLanguageName = (locale) => {\r\n switch (locale) {\r\n case \"en-US\":\r\n return intl.formatMessage({id: \"languageDropdown.english\"})\r\n case \"en-AU\":\r\n return intl.formatMessage({id: \"languageDropdown.australian\"})\r\n case \"fr-FR\":\r\n return intl.formatMessage({id: \"languageDropdown.french\"})\r\n case \"pl-PL\":\r\n return intl.formatMessage({id: \"languageDropdown.polish\"})\r\n case \"es-ES\":\r\n return intl.formatMessage({id: \"languageDropdown.spanish\"})\r\n default:\r\n return locale\r\n }\r\n };\r\n\r\n const styles = {\r\n height: dropdownVisible ? AVAILABLE_LANGUAGES.length * 50 : 0\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n {AVAILABLE_LANGUAGES.map((locale, languageIndex) => (\r\n
  • handleLocaleClick(locale)}>\r\n {getLanguageName(locale)}\r\n
  • \r\n ))}\r\n
    \r\n
    \r\n
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n language: store.serverState.language,\r\n fabricatorSettings: store.fabricatorState.settings\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLanguage,\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LanguageSwitcher)\r\n);\r\n","//********* TUTORIALS *********//\r\nimport * as types from \"./actionTypes\";\r\n\r\nexport const toggleShowAdvancedQuoting = (showAdvancedQuoting) => ({\r\n type: types.TOGGLE_SHOW_ADVANCED_QUOTING,\r\n payload: {showAdvancedQuoting}\r\n});\r\n\r\nexport const setAdvancedQuotingSearchItem = (advancedQuotingSearchItem) => ({\r\n type: types.SET_ADVANCED_QUOTING_SEARCH_ITEM,\r\n payload: {advancedQuotingSearchItem}\r\n});\r\n","import React, { Component } from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport { toggleInstOpened } from \"../../actions/actionFunctions\";\r\n\r\nimport InstList from \"./instList\";\r\nimport Analytics from './../../analytics';\r\n\r\nclass InstView extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n unmount: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n Analytics.sendClickEvent('installations-close');\r\n if (!nextProps.instOpened && this.props.instOpened) {\r\n this.setState({\r\n unmount: true\r\n }, () => {\r\n setTimeout(() => {\r\n this.setState({\r\n unmount: false\r\n })\r\n }, 500)\r\n })\r\n }\r\n\r\n }\r\n\r\n closeInstallationView = () => {\r\n this.props.toggleInstOpened(false);\r\n };\r\n\r\n render() {\r\n\r\n return (\r\n
    \r\n
    \r\n

    \r\n

    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n instOpened: store.instState.instOpened,\r\n instState: store.instState.instState\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n toggleInstOpened\r\n})(InstView);\r\n","import React from \"react\";\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {unlockPricing} from \"../../../actions/actionFunctions\";\r\nimport Analytics from \"../../../analytics\";\r\n\r\nclass FeatureInfoPriceLocked extends React.Component {\r\n\r\n static propTypes = {\r\n textOnly: PropTypes.bool\r\n }\r\n\r\n handlePriceLockClick = () => {\r\n Analytics.sendClickEvent('feature-info-price-unlock');\r\n this.props.unlockPricing();\r\n };\r\n\r\n render() {\r\n return this.props.textOnly ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = () => {\r\n return {\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n unlockPricing\r\n})(FeatureInfoPriceLocked);\r\n","import React, {Fragment} from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport {injectIntl} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport FeatureDescription from \"../../visComponents/featureDescription\";\r\n\r\nconst FeatureInfoDescription = (props) => {\r\n\r\n const {fabricatorData, intl, selectionFeatureInfo, feature, brief} = props;\r\n const activeFeature = feature || selectionFeatureInfo;\r\n\r\n let pros = [];\r\n let subDescription = activeFeature.dbFeature.subDescription;\r\n if ((fabricatorData.isLowes || fabricatorData.isCaesarStone) && intl.messages) {\r\n if (intl.locale === \"fr-FR\" && intl.messages[\"transDoc.subDescription_FR.\" + activeFeature.dbFeature.sharedFeatureName]) {\r\n subDescription = intl.formatMessage({id: \"transDoc.subDescription_FR.\" + activeFeature.dbFeature.sharedFeatureName})\r\n } else if (intl.locale === \"pl-PL\" && intl.messages[\"transDoc.customSubDescription_PL.\" + activeFeature.dbFeature.sharedFeatureName]) {\r\n subDescription = intl.formatMessage({id: \"transDoc.customSubDescription_PL.\" + activeFeature.dbFeature.sharedFeatureName})\r\n }\r\n }\r\n if (!brief && subDescription && subDescription.length > 0) {\r\n pros = subDescription.split('\\n').filter(n => n);\r\n }\r\n\r\n return (\r\n \r\n \r\n {pros.length ? (\r\n
      \r\n {pros.map((pros, index) => {\r\n return
    • {pros}
    • \r\n })}\r\n
    \r\n ) : null}\r\n
    \r\n );\r\n};\r\n\r\nFeatureInfoDescription.propTypes = {\r\n feature: PropTypes.object,\r\n brief: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n fabricatorData: store.fabricatorState,\r\n selectionFeatureInfo: store.selectionState.selectionFeatureInfo,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(FeatureInfoDescription)\r\n)\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from \"react-redux\";\r\n\r\nimport WithClickCount from \"../../look/hocs/withClickCount\";\r\nimport {wizardGroupInterface} from \"../../../interfaces/wizardItemInterface\";\r\nimport {setWizardSelectedValues} from \"../../../actions/wizardFunctions\";\r\nimport {getFeatureGroupFromWizardGroup} from \"../../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\nimport MaterialsWizardSqftButton from \"../../qkbPages/materialsWizard/materialsWizardSqftButton\";\r\nimport {getWizardFeatureAsync} from \"../../look/lookNavigation/lookMain/lookWizard/wizardFunctionsCommon\";\r\n\r\nconst SelectionGridWizardGroupItem = (props) => {\r\n\r\n const {wizardGroup, wizardActiveStep, setWizardSelectedValues, wizardSelectedValues, styles, isRowItem,\r\n handleFeatureClick} = props;\r\n\r\n const featureGroup = getFeatureGroupFromWizardGroup(wizardGroup);\r\n\r\n // const {customImageUrl, uploadedImageUrl} = wizardGroup;\r\n\r\n const isActive = wizardSelectedValues[wizardActiveStep] && wizardSelectedValues[wizardActiveStep].wizardGroup\r\n && wizardSelectedValues[wizardActiveStep].wizardGroup.id === wizardGroup.id;\r\n\r\n const wizardItemClick = async (maxClickCountReached) => {\r\n // Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookWizardParent + Analytics.getStringForAnalytics(wizardGroup.groupName));\r\n\r\n if (maxClickCountReached()) { // fabricator settings click lead capture\r\n return false;\r\n }\r\n\r\n // const layout = getCurrentLayout();\r\n // const featureGroup = getFeatureGroupFromWizardGroup(wizardGroup);\r\n // if (featureGroup && featureGroup.activeFeature) {\r\n // if (featureGroup.partId === \"vanity_sink\" && wizardGroup.productCartTitle\r\n // && wizardGroup.productCartTitle.includes(\"edestal\") && featureGroup.getParent().vanity_type) {\r\n // const navItems = layout.designNavigationItems({part: featureGroup});\r\n // const nextPedestal = navItems.find(navItem => Array.isArray(navItem.part.metaData[\"MountType\"]) && navItem.part.metaData[\"MountType\"].includes(\"ST\"));\r\n // if (nextPedestal) {\r\n // navFeatureCLick(nextPedestal.part);\r\n // } else {\r\n // navFeatureCLick(featureGroup.activeFeature);\r\n // }\r\n // }\r\n // navFeatureCLick(featureGroup.activeFeature);\r\n // }\r\n\r\n setWizardSelectedValues({\r\n [wizardActiveStep]: {\r\n wizardGroup,\r\n partId: featureGroup ? featureGroup.partId : \"\"\r\n }\r\n });\r\n console.log(\"wizardGroupwizardGroup\", wizardGroup);\r\n if (wizardGroup.clickOnLogic && wizardGroup.clickOnLogic.enabled && wizardGroup.clickOnLogic.feature\r\n && wizardGroup.clickOnLogic.groupName && handleFeatureClick) {\r\n const featureFound = await getWizardFeatureAsync(wizardGroup.clickOnLogic.feature, wizardGroup.clickOnLogic.groupName);\r\n console.log(\"clickOnLogic featureFound\", featureFound);\r\n if (featureFound) {\r\n handleFeatureClick({part: featureFound}, null, wizardGroup.clickOnLogic);\r\n }\r\n }\r\n }\r\n\r\n return (\r\n \r\n {(maxClickCountReached) => isRowItem ? (\r\n
    wizardItemClick(maxClickCountReached)}>\r\n
    \r\n {wizardGroup.customImageUrl ? (\r\n
    \r\n \"\"/\r\n
    \r\n ) : null}\r\n
    \r\n
    \r\n

    {wizardGroup.productCartTitle || wizardGroup.title || wizardGroup.groupName}

    \r\n
    {wizardGroup.productCartDescription}
    \r\n {window.location.href.includes(\"porcelanosa\") && wizardGroup.id === \"29\" ? ( // && wizardGroup.title === \"Xtone Underlayment\" // removed, they can rename\r\n
    \r\n \r\n
    \r\n ) : null}\r\n
    \r\n
    \r\n ) : (\r\n
    wizardItemClick(maxClickCountReached)}>\r\n
    \r\n {wizardGroup.customImageUrl\r\n ? \"\"/\r\n : null}\r\n
    \r\n
    \r\n {/*{showPrice ? (*/}\r\n {/* */}\r\n {/* {getPriceWithIncluded(price, currentFeature.part, fabricatorData, intl.messages)}\r\n {/**/}\r\n {/*) : null}*/}\r\n \r\n {wizardGroup.productCartTitle || wizardGroup.title || wizardGroup.groupName}\r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n )\r\n}\r\n\r\nSelectionGridWizardGroupItem.propTypes = {\r\n wizardGroup: PropTypes.shape(wizardGroupInterface),\r\n isRowItem: PropTypes.bool,\r\n handleFeatureClick: PropTypes.func,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {wizardActiveItem, wizardActiveStep, wizardSelectedValues} = store.wizardState;\r\n return {\r\n wizardActiveItem,\r\n wizardActiveStep,\r\n wizardSelectedValues,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setWizardSelectedValues\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SelectionGridWizardGroupItem);\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {s3FeatureImagePath, THUMBNAIL_SIZES} from \"../../misc/utils\";\r\nimport {baseNewImagesPath} from \"../assets\";\r\n\r\nconst NotInVisualizerView = (props) => {\r\n\r\n const getThumbnail = () => {\r\n\r\n if (!props.activeFeature) {\r\n return null\r\n }\r\n\r\n let src = \"\";\r\n let styles = {};\r\n if (props.activeFeature.dbFeature.thumbnailUrl) {\r\n src = s3FeatureImagePath(\r\n props.activeFeature.dbFeature.thumbnailUrl,\r\n props.isMobile ? THUMBNAIL_SIZES.small : THUMBNAIL_SIZES.medium\r\n );\r\n } else if (props.currentFeature && props.activeFeature.customThumbnail) {\r\n src = props.activeFeature.customThumbnail;\r\n } else {\r\n src = `${baseNewImagesPath}images/image-not-found.png`;\r\n }\r\n // if (props.isMobile) {\r\n // const height = (props.listItemHeight - 32) / 2;\r\n // styles.height = height;\r\n // styles.width = height;\r\n // }\r\n // console.log(\"listItemHeight\", );\r\n return (\r\n
    \r\n \"not-in-visualizer-thumbnail\"\r\n
    \r\n )\r\n }\r\n\r\n if (props.allVisualizerNotAvailable) {\r\n return (\r\n
    \r\n {getThumbnail()}\r\n \r\n \r\n \r\n

    \r\n \r\n

    \r\n
    \r\n )\r\n }\r\n\r\n const notAvailableAtAll = !props.activeFeature.dbFeature.s3Bindings || !props.activeFeature.dbFeature.s3Bindings.length;\r\n\r\n return !notAvailableAtAll ? (\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n ) : (\r\n
    \r\n {getThumbnail()}\r\n \r\n \r\n \r\n

    \r\n \r\n

    \r\n
    \r\n )\r\n};\r\n\r\nNotInVisualizerView.displayName = \"NotInVisualizerView\";\r\nNotInVisualizerView.propTypes = {\r\n goToBV: PropTypes.func,\r\n activeFeature: PropTypes.object,\r\n allVisualizerNotAvailable: PropTypes.bool,\r\n};\r\nexport default NotInVisualizerView\r\n","import {renderConfirmPopup} from \"../../../api/api-popups\";\r\nimport {ConfirmPopupTypes} from \"../../visComponents/constants\";\r\nimport store from \"../../../store\";\r\nimport {removeFromCart} from \"../../../actions/actionFunctions\";\r\n\r\n/**\r\n * Common func to call question popup\r\n * @param cartItem {cartItemInterface}\r\n * @param navItem {navItem}\r\n * @param quoteIndex {Number}\r\n * @param fromDelete {boolean}\r\n * @return {boolean}\r\n */\r\nexport const checkForDeletePopup = (cartItem, navItem, quoteIndex, fromDelete = false) => {\r\n const {fabricatorState, cartState} = store.getState();\r\n if (fabricatorState.settings.useCategorySwitching) {\r\n if (cartItem.partId === \"room\" && cartItem.cartFeature && (fromDelete || (navItem.part.dbFeature.id !== cartItem.cartFeature.dbFeature.id))\r\n && cartState.cartItems.some(cItem => cItem.partId !== \"room\" && cItem.currentQuote === quoteIndex)) {\r\n renderConfirmPopup(ConfirmPopupTypes.DeleteCartItemsPopup, {\r\n cartItem, // old\r\n navItem, // new\r\n fromDelete\r\n });\r\n return true\r\n }\r\n }\r\n return false\r\n}\r\n/**\r\n * Common func to remove features\r\n * @param quoteIndex {Number}\r\n * @return {boolean}\r\n */\r\nexport const removeCartItemsWithQuoteIndex = (quoteIndex) => {\r\n const {cartState} = store.getState();\r\n const cartItemsToRemove = cartState.cartItems.filter(cItem => cItem.currentQuote === quoteIndex);\r\n if (cartItemsToRemove.length) {\r\n cartItemsToRemove.forEach(cItem => {\r\n store.dispatch(removeFromCart(cItem));\r\n })\r\n }\r\n}\r\n\r\n/**\r\n * Cheks if we selected something from the previous wizard step\r\n * @param quoteIndex {number}\r\n * @param wizardItemId {number}\r\n * @param wizardStep {number}\r\n * @param applyFunction {function} // will be called on yes click\r\n * @return {boolean}\r\n */\r\nexport const checkForWizardPreviousChanges = (quoteIndex, wizardItemId, wizardStep, applyFunction) => {\r\n const {cartState} = store.getState();\r\n const cartItemsToRemove = cartState.cartItems.filter(cItem => {\r\n return cItem.currentQuote === quoteIndex && cItem.fromWizardId === wizardItemId && cItem.fromWizardStep > wizardStep\r\n });\r\n if (cartItemsToRemove.length) {\r\n console.log(\"cartItemsToRemove\", cartItemsToRemove);\r\n const finalFunction = () => {\r\n cartItemsToRemove.forEach(cItem => {\r\n store.dispatch(removeFromCart(cItem));\r\n })\r\n applyFunction()\r\n }\r\n renderConfirmPopup(ConfirmPopupTypes.ChangeWizardToPreviousStepSelection, {\r\n applyFunction: finalFunction.bind(this)\r\n });\r\n return true\r\n }\r\n return false\r\n}\r\n\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport ErrorIcon from \"@mui/icons-material/Error\";\r\n\r\n\r\nconst GroheFeatureNotInVisualizer = (props) => {\r\n const {intl, fabricatorData} = props;\r\n\r\n return (\r\n
    \r\n {fabricatorData.isAmericanStandard ? null : (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n
    \r\n )\r\n};\r\nconst mapStateToProps = (store) => {\r\n const fabricatorData = store.fabricatorState;\r\n return {\r\n fabricatorData\r\n }\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps)(GroheFeatureNotInVisualizer)\r\n)\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport GroheMobile3dButton from \"./groheMobile3dButton\";\r\nimport FeatureName from \"../../../../visComponents/featureName\";\r\nimport FeatureThumbnail from \"../../../../visComponents/featureThumbnail\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\nimport {getFeatureIsLocked} from \"../../../../../misc/helpers\";\r\nimport LookLockedButton from \"../../../lookNavigation/lookMain/lookLockedButton\";\r\nimport LookFeatureNotInStock from \"../../../lookNavigation/lookMain/lookFeature/lookFeatureNotInStock\";\r\nimport LookFeatureSku from \"../../../lookNavigation/lookMain/lookFeature/lookFeatureSku\";\r\n\r\nconst GroheMobileFeatureTop = (props) => {\r\n\r\n const {lookActiveFeature} = props;\r\n\r\n if (!lookActiveFeature) {\r\n return null\r\n }\r\n\r\n const featureIsLocked = getFeatureIsLocked(lookActiveFeature);\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n

    \r\n
    \r\n

    \r\n \r\n

    \r\n {!IS_PRODUCT_JOURNEY ? : null}\r\n
    \r\n
    \r\n {featureIsLocked ? : }\r\n
    \r\n
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookActiveFeature} = store.lookState;\r\n const {isPhoneNumberValidated} = store.userState; // to update component when user is logged in\r\n\r\n return {\r\n lookActiveFeature,\r\n isPhoneNumberValidated,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(GroheMobileFeatureTop)\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {featureInterface} from \"../../../../../interfaces/featureInterface\";\r\nimport {isInStock} from \"../../lookFunctions2\";\r\n\r\nconst LookFeatureNotInStock = (props) => {\r\n\r\n const {lookFeature} = props;\r\n\r\n if (isInStock(lookFeature)) {\r\n return null\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nLookFeatureNotInStock.propTypes = {\r\n lookFeature: PropTypes.shape(featureInterface),\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookActiveFeatureStockCount} = store.lookState;\r\n return {\r\n lookActiveFeatureStockCount,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(LookFeatureNotInStock)\r\n","import React, {useMemo} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {injectIntl} from \"react-intl\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport orderBy from \"lodash/orderBy\";\r\n\r\nimport MenuList from '@mui/material/MenuList';\r\n\r\nimport {getLookList} from \"../../../lookNavigation/lookFunctions\";\r\nimport {getFeatureGroupName} from \"../../../../../misc/helpers\";\r\nimport {setLookActiveCategory, setLookPageOpened} from \"../../../../../actions/lookFunctions\";\r\n// import GroheCategoriesMenuItemWizard from \"./groheCategoriesMenuItemWizard\";\r\nimport {setGroheWizardName} from \"../../../../../actions/groheQuotingToolFunctions\";\r\nimport GroheCategory from \"./groheCategory\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\nimport LookMainWizardList from \"../../../lookNavigation/lookMain/lookMainWizardList\";\r\nimport {ROUTES} from \"../../../../../routes\";\r\nimport MaterialSpinner from \"../../../../ui/materialSpinner\";\r\n\r\nconst GroheCategoriesMenu = (props) => {\r\n\r\n const {intl, fabricatorData, isAccessory, showWizardItems, location, visualizersLoadedLength,\r\n qtCategoriesLoadedLength} = props;\r\n\r\n const isShopPage = location.pathname.includes(ROUTES.shop);\r\n\r\n let featureGroups = useMemo(() => {\r\n return getLookList(false, true, false, isShopPage, true)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [visualizersLoadedLength, qtCategoriesLoadedLength, isShopPage]);\r\n const featureGroupNameSort = (lmFeature) => getFeatureGroupName(lmFeature.featureGroup, intl, fabricatorData)\r\n featureGroups = orderBy(featureGroups,[featureGroupNameSort], ['asc'])\r\n\r\n // console.log(\"featureGroups\", featureGroups);\r\n if (!featureGroups) {\r\n return null\r\n }\r\n\r\n const ACCESSORIES = [\"paper_holder\", \"robe_hook\", \"towel_bar\", \"towel_ring\"];\r\n const acc_groups = featureGroups.filter(parentObject => ACCESSORIES.includes(parentObject.partId));\r\n if (acc_groups.length && IS_PRODUCT_JOURNEY) {\r\n featureGroups = isAccessory ? acc_groups : featureGroups.filter(parentObject => !ACCESSORIES.includes(parentObject.partId));\r\n if (!isAccessory) {\r\n featureGroups.push({partId: \"submenu_accessories\"});\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n {!qtCategoriesLoadedLength ? : (\r\n \r\n {featureGroups.map(lmFeature => {\r\n return \r\n })}\r\n {showWizardItems ? : null}\r\n {/**/}\r\n \r\n )}\r\n
    \r\n )\r\n};\r\n\r\nGroheCategoriesMenu.propTypes = {\r\n isAccessory: PropTypes.bool,\r\n showWizardItems: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {visualizersLoaded} = store.serverState;\r\n const {qtCategoriesLoaded} = store.qtState;\r\n\r\n return {\r\n fabricatorData: store.fabricatorState,\r\n visualizersLoadedLength: visualizersLoaded.length,\r\n qtCategoriesLoadedLength: qtCategoriesLoaded.length,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookActiveCategory,\r\n setLookPageOpened,\r\n setGroheWizardName,\r\n};\r\n\r\nexport default withRouter(\r\n injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(GroheCategoriesMenu)\r\n )\r\n)\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {Grid} from \"react-virtualized\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport LookListFeature from \"../../../lookNavigation/lookMain/lookListFeature/lookListFeature\";\r\nimport {GROHE_CONFIG} from \"../../groheConfig\";\r\nimport LookWizardSectionListFeature from \"../../../lookNavigation/lookMain/lookWizard/lookWizardSectionListFeature\";\r\nimport {wizardGroupInterface} from \"../../../../../interfaces/wizardItemInterface\";\r\nimport LookVirtualizedListLoadingItem\r\n from \"../../../lookNavigation/lookMain/lookCategory/lookVirtualizedListLoadingItem\";\r\n\r\nconst GroheVirtualizedList = (props) => {\r\n\r\n const {lookViewType, windowHeight, renderList, isMobile, onScrollHandler, isWizard, wizardGroup, wizardActiveItem,\r\n imageCanvas, maxClickCountReached, updateLookCartItem, loadingCount} = props;\r\n\r\n const width = isMobile ? GROHE_CONFIG.sidebarWidth.mobile : GROHE_CONFIG.sidebarWidth.desktop;\r\n let height = isMobile ? windowHeight - (wizardActiveItem ? 98 : 48) : windowHeight - 120;\r\n if (loadingCount) {\r\n height = isMobile ? height + 58 : height + 37;\r\n }\r\n\r\n const columnWidth = lookViewType === 2 ? width / 3 : width;\r\n const columnCount = lookViewType === 2 ? 3 : 1;\r\n const rowCount = Math.ceil((loadingCount || renderList.length) / columnCount);\r\n\r\n const listSettings = {\r\n width,\r\n columnCount,\r\n columnWidth,\r\n rowCount,\r\n height,\r\n rowHeight: lookViewType === 1\r\n ? 120\r\n : 124,\r\n overscanRowCount: 3,\r\n showScrollingPlaceholder: false,\r\n useDynamicRowHeight: false,\r\n }\r\n\r\n const cellRenderer = ({columnIndex, key, rowIndex, style}) => {\r\n if (loadingCount) {\r\n return \r\n }\r\n const navItem = renderList[(listSettings.columnCount * rowIndex) + columnIndex];\r\n if (!navItem) {\r\n return null\r\n }\r\n if (isWizard) {\r\n return \r\n }\r\n return \r\n }\r\n\r\n const noRowsRenderer = () =>
    No Features found
    ;\r\n\r\n return (\r\n \r\n )\r\n};\r\n\r\nGroheVirtualizedList.propTypes = {\r\n imageCanvas: PropTypes.object,\r\n maxClickCountReached: PropTypes.func,\r\n updateLookCartItem: PropTypes.func,\r\n renderList: PropTypes.array,\r\n contentHeight: PropTypes.number,\r\n isMobile: PropTypes.bool,\r\n onScrollHandler: PropTypes.func,\r\n isWizard: PropTypes.bool,\r\n wizardGroup: PropTypes.shape(wizardGroupInterface),\r\n loadingCount: PropTypes.number,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookViewType} = store.lookState;\r\n const {windowHeight, isMobile} = store.serverState;\r\n const {wizardActiveItem} = store.wizardState;\r\n return {\r\n lookViewType,\r\n windowHeight,\r\n isMobile,\r\n wizardActiveItem,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(GroheVirtualizedList)\r\n","import React from \"react\";\r\n\r\nimport WithOverlay from \"../../popups/withOverlayHoc\";\r\nimport MaterialSpinner from \"../../ui/materialSpinner\";\r\nimport {COLORS} from \"../../../colorThemes\";\r\n\r\n\r\nconst NavigationLoader = (props) => {\r\n const {className = \"\"} = props;\r\n\r\n return (\r\n \r\n {() => (\r\n \r\n )}\r\n \r\n )\r\n};\r\n\r\nexport default NavigationLoader\r\n","import React, {Fragment} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\n\r\nimport {LOOK_FEATURE_CONTENT} from \"../../../core/constants\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\nimport LookFeatureInfoContent from \"./lookFeatureInfoContent\";\r\nimport LookFeatureInfo3d from \"./lookFeatureInfo3d\";\r\nimport {setLookMoreInfoOpened} from \"../../../../../actions/lookFunctions\";\r\nimport LookFeatureInfoButtons from \"./lookFeatureInfoButtons\";\r\nimport LookFeatureInfoAug from \"./lookFeatureInfoAug\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS, PRODUCT_JOURNEY_ANALYTIC_EVENTS} from \"../../../../../analytics\";\r\n\r\nconst LookFeatureInfo = (props) => {\r\n\r\n const {intl, lookActiveFeature, moreInfoOpened, moreInfoContent, setLookMoreInfoOpened, isMobile} = props;\r\n\r\n const backButtonClick = () => {\r\n Analytics.sendClickEvent(IS_PRODUCT_JOURNEY\r\n ? PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeatureInfoContentHeaderClose\r\n : LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeatureInfoContentHeaderClose\r\n );\r\n setLookMoreInfoOpened(\"\", LOOK_FEATURE_CONTENT.threeD);\r\n }\r\n\r\n const mainContent = () => {\r\n // if (!moreInfoOpened && !isMobile) { // always render on mobile\r\n if (!lookActiveFeature) { // always render on mobile\r\n return null\r\n }\r\n switch (moreInfoContent) {\r\n case LOOK_FEATURE_CONTENT.info:\r\n default:\r\n return \r\n case LOOK_FEATURE_CONTENT.threeD:\r\n case LOOK_FEATURE_CONTENT.aug:\r\n if (!moreInfoOpened) {\r\n return null\r\n }\r\n return (\r\n
    \r\n {isMobile && !IS_PRODUCT_JOURNEY ? null : (\r\n \r\n \r\n \r\n )}\r\n {moreInfoContent === LOOK_FEATURE_CONTENT.threeD ? : }\r\n {isMobile ? null : (\r\n \r\n

    \r\n \r\n

    \r\n {moreInfoContent === LOOK_FEATURE_CONTENT.threeD ? (\r\n

    \r\n \r\n

    \r\n ) : null}\r\n \r\n
    \r\n )}\r\n {isMobile && (moreInfoContent === LOOK_FEATURE_CONTENT.threeD) ? (\r\n

    \r\n \r\n

    \r\n ) : null}\r\n
    \r\n )\r\n }\r\n }\r\n\r\n const classNames = !IS_PRODUCT_JOURNEY && isMobile\r\n ? \"lm-content lm-content--filters\" + (!moreInfoOpened ? \" lm-content--slide-up\" : \"\")\r\n : \"lm-content__info\" + (moreInfoOpened ? \" lm-content__info--active lm-content__info--\" + moreInfoContent : \"\")\r\n\r\n return (\r\n
    \r\n {mainContent()}\r\n
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookActiveFeature, moreInfoOpened, moreInfoContent} = store.lookState;\r\n const {isMobile} = store.serverState;\r\n return {\r\n lookActiveFeature,\r\n moreInfoOpened,\r\n moreInfoContent,\r\n isMobile,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookMoreInfoOpened\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookFeatureInfo)\r\n)\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {\r\n getCartItemObject,\r\n getPriceWithCurrency,\r\n getQuotePriceWithTaxes,\r\n getTotalPrice,\r\n toFixedPrice\r\n} from \"../../../../../misc/helpers\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\n\r\nconst LookWizardContentFinalPrice = (props) => {\r\n\r\n const {wizardSelectedValues, fabricatorSettings, qtActiveCategory} = props;\r\n\r\n if (!fabricatorSettings.showPricing) {\r\n return null\r\n }\r\n\r\n const cartItemsToCount = (Object.keys(wizardSelectedValues)).reduce((total, step) => {\r\n const selectedValue = wizardSelectedValues[step];\r\n if (!selectedValue || !selectedValue.selectedFeature) {\r\n return total\r\n }\r\n const parentPositions = selectedValue.selectedFeature.getParent().layerPositions\r\n const quantity = parentPositions\r\n ? Object.keys(parentPositions).filter(pos => parentPositions[pos]).length\r\n : 1;\r\n return [...total, getCartItemObject(selectedValue.selectedFeature, quantity, qtActiveCategory)]\r\n }, []);\r\n console.log(\"cartItemsToCount\", cartItemsToCount);\r\n\r\n const totalPrice = getTotalPrice(null, false, cartItemsToCount, true);\r\n const grandTotal = getQuotePriceWithTaxes(totalPrice);\r\n\r\n return (\r\n
    \r\n {IS_PRODUCT_JOURNEY ? (\r\n \r\n :\r\n \r\n ) : null}\r\n {getPriceWithCurrency(fabricatorSettings, toFixedPrice(grandTotal), null, true)}\r\n
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {wizardSelectedValues} = store.wizardState;\r\n const {settings} = store.fabricatorState;\r\n const {qtActiveCategory} = store.qtState;\r\n\r\n return {\r\n wizardSelectedValues,\r\n fabricatorSettings: settings,\r\n qtActiveCategory,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(LookWizardContentFinalPrice)\r\n","import React, {Fragment} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport {getPriceWithCurrency, getQuotePriceWithTaxes, getTotalPrice} from \"../../../../misc/helpers\";\r\nimport GroheCartDeliveryColumn from \"./groheCartDeliveryColumn\";\r\n\r\nconst GroheCartColumns = (props) => {\r\n\r\n const {activeQuoteIndex, discountSections, fabricatorSettings, isPhoneNumberValidated, language, intl, isShort,\r\n showUnlockCalculations, showTotalItems} = props;\r\n\r\n const {isBackend, jobId, canSaveQuote} = document.kvConfig;\r\n const totalPrice = getTotalPrice();\r\n let grandTotal = getQuotePriceWithTaxes(totalPrice, discountSections);\r\n const pricingIsLocked = (fabricatorSettings.leadCaptureOnQuote || fabricatorSettings.leadCaptureShoppingCart)\r\n && !(isBackend && jobId && canSaveQuote) && !isPhoneNumberValidated;\r\n\r\n let allTaxes = totalPrice.priceTaxes.length\r\n ? totalPrice.priceTaxes\r\n : [{materialTax: totalPrice.materialTaxes}];\r\n let instTaxes = totalPrice.installationTaxes;\r\n // console.log(\"allTaxes\", allTaxes);\r\n // console.log(\"totalPrice\", totalPrice);\r\n // console.log(\"grandTotal\", grandTotal);\r\n\r\n // const showTaxes = (pricingIsLocked || allTaxes.some(tax => tax.materialTax > 0)) && (!showUnlockCalculations || showTotalItems.includes(\"tax\"));\r\n const showTaxes = !isShort;\r\n const showInstTaxes = instTaxes && (!showUnlockCalculations || showTotalItems.includes(\"tax\"));\r\n const showTotal = !isShort && (!showUnlockCalculations || showTotalItems.includes(\"total\"));\r\n\r\n let subTotalPrice = 0;\r\n // if (quotes.length > 1 && !showAllQuotesCartItemsList) {\r\n const quoteTotalPrice = getTotalPrice(activeQuoteIndex);\r\n // subTotalPrice = getQuotePriceWithTaxes(quoteTotalPrice, discountSections);\r\n subTotalPrice = quoteTotalPrice.materialPrice;\r\n allTaxes = quoteTotalPrice.priceTaxes.length\r\n ? quoteTotalPrice.priceTaxes\r\n : [{materialTax: quoteTotalPrice.materialTaxes}];\r\n instTaxes = quoteTotalPrice.installationTaxes;\r\n // }\r\n subTotalPrice = subTotalPrice.toFixed(2); // always round to 23.65, even if it is 23.00\r\n grandTotal = grandTotal.toFixed(2); // always round to 23.65, even if it is 23.00\r\n\r\n const getTaxColumn = (pricingIsLocked, taxObject, taxObjectIndex) => {\r\n // const showIncluded = !pricingIsLocked && (+taxObject.materialTax > 0);\r\n const taxTotal = taxObject.materialTax.toFixed(2); // always round to 23.65, even if it is 23.00\r\n // if (taxTotal <= 0) {\r\n // return null\r\n // }\r\n const taxName = taxObject.nameIntl && taxObject.nameIntl[language]\r\n ? taxObject.nameIntl[language]\r\n : taxObject.state || intl.formatMessage({id: \"grohe.cart.footer.tax\"})\r\n return (\r\n
    \r\n {taxName}\r\n
    \r\n {pricingIsLocked ? : getPriceWithCurrency(fabricatorSettings, taxTotal)}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n const LockedPrice = () => (\r\n {}}>\r\n \r\n \r\n )\r\n\r\n return (\r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n {pricingIsLocked ? : getPriceWithCurrency(fabricatorSettings, subTotalPrice)}\r\n
    \r\n
    \r\n {showTaxes ? allTaxes.map((taxObject, taxObjectIndex) => {\r\n return getTaxColumn(pricingIsLocked, taxObject, taxObjectIndex)\r\n }) : null}\r\n {showInstTaxes ? (\r\n
    \r\n \r\n {intl.formatMessage({id: \"grohe.cart.footer.instTax\"}) +\r\n (!pricingIsLocked && (+instTaxes > 0)\r\n ? intl.formatMessage({id: \"grohe.cart.footer.taxIncluded\"})\r\n : \"\")}\r\n \r\n
    \r\n {pricingIsLocked ? : getPriceWithCurrency(fabricatorSettings, instTaxes.toFixed(2))}\r\n
    \r\n
    \r\n ) : null}\r\n {/*{(quotes.length > 1) && !showAllQuotesCartItemsList && showTotal ? (*/}\r\n {/*
    */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/*
    */}\r\n {/* {pricingIsLocked ? : getPriceWithCurrency(fabricatorSettings, subTotalPrice)}*/}\r\n {/*
    */}\r\n {/*
    */}\r\n {/*) : null}*/}\r\n {isShort ? null : }\r\n {showTotal ? (\r\n
    \r\n \r\n \r\n \r\n
    \r\n {pricingIsLocked ? : getPriceWithCurrency(fabricatorSettings, grandTotal, null, true)}\r\n
    \r\n
    \r\n ) : null}\r\n
    \r\n )\r\n};\r\n\r\nGroheCartColumns.propTypes = {\r\n isShort: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {settings} = store.fabricatorState;\r\n const {discountSections} = store.priceWorksheetState;\r\n const {cartItems, showAllQuotesCartItemsList, sureTax} = store.cartState;\r\n const {isPhoneNumberValidated} = store.userState;\r\n const {language} = store.serverState;\r\n const {quotes, activeQuoteIndex} = store.quotesState;\r\n const {showUnlockCalculations, showTotalItems} = store.unlockCalculationsState;\r\n\r\n return {\r\n fabricatorSettings: settings,\r\n discountSections,\r\n cartItems,\r\n showAllQuotesCartItemsList,\r\n isPhoneNumberValidated,\r\n language,\r\n quotes,\r\n activeQuoteIndex,\r\n showUnlockCalculations,\r\n showTotalItems,\r\n sureTax, // to update when response received\r\n // deliveryList, // to update when delivery changed\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default injectIntl(\r\n withRouter(connect(mapStateToProps, mapDispatchToProps)(GroheCartColumns))\r\n)\r\n","import {useCallback, useEffect} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport {\r\n setWizardActiveItem,\r\n setWizardActiveStep,\r\n setWizardSelectedValues\r\n} from \"../../../../../actions/wizardFunctions\";\r\nimport {getActiveWizardItem} from \"./lookWizardFunctions\";\r\nimport {setLookCompatabilityAlert} from \"../../../../../actions/lookFunctions\";\r\n\r\nconst LookWizard = (props) => {\r\n\r\n const {wizardList, location, setWizardActiveItem, wizardActiveItem, setWizardActiveStep, setWizardSelectedValues,\r\n children, lookCompatabilityAlert, setLookCompatabilityAlert, wizardActiveStep} = props;\r\n\r\n const closeCompatability = useCallback(() => {\r\n setLookCompatabilityAlert({\r\n visible: false,\r\n compatabilityLogic: [],\r\n clickedFeature: null,\r\n applyFunction: null\r\n })\r\n }, [setLookCompatabilityAlert])\r\n\r\n useEffect(() => {\r\n console.log(\"wizardActiveItem\", wizardActiveItem);\r\n if (!wizardActiveItem) {\r\n const wizardItem = getActiveWizardItem(wizardList, location);\r\n console.log(\"wizardItem\", wizardItem);\r\n if (wizardItem) {\r\n setWizardActiveItem(wizardItem)\r\n }\r\n }\r\n return () => {\r\n setWizardActiveItem(null);\r\n setWizardActiveStep(-1);\r\n setWizardSelectedValues({}, true);\r\n if (lookCompatabilityAlert && lookCompatabilityAlert.visible) {\r\n closeCompatability()\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [wizardList])\r\n\r\n useEffect(() => {\r\n if (lookCompatabilityAlert && lookCompatabilityAlert.visible) {\r\n closeCompatability()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [wizardActiveStep, wizardActiveItem]);\r\n\r\n if (!wizardActiveItem) {\r\n return null\r\n }\r\n\r\n return children\r\n};\r\n\r\nLookWizard.propTypes = {\r\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]).isRequired,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {wizardList, wizardActiveItem, wizardActiveStep} = store.wizardState;\r\n const {lookCompatabilityAlert} = store.lookState;\r\n\r\n return {\r\n wizardList,\r\n wizardActiveItem,\r\n wizardActiveStep,\r\n lookCompatabilityAlert,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setWizardActiveItem,\r\n setWizardActiveStep,\r\n setWizardSelectedValues,\r\n setLookCompatabilityAlert,\r\n};\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(LookWizard)\r\n)\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {getCurrentGroups} from \"./lookWizardFunctions\";\r\n\r\n\r\nconst LookWizardContentTitle = (props) => {\r\n\r\n const {wizardActiveItem, wizardActiveStep, wizardSelectedValues} = props;\r\n\r\n const currentGroups = getCurrentGroups(wizardActiveItem, wizardActiveStep, wizardSelectedValues);\r\n\r\n if (wizardActiveStep === -1) {\r\n // return \r\n return wizardActiveItem.name\r\n }\r\n if (wizardActiveStep > -1 && currentGroups.length === 1) {\r\n return currentGroups[0].title\r\n }\r\n if (wizardActiveStep > -1 && !currentGroups.length) {\r\n return \r\n }\r\n if (wizardActiveStep === 0 && currentGroups.length > 1 && wizardActiveItem.startTitle) {\r\n return wizardActiveItem.startTitle\r\n }\r\n return null\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {wizardActiveItem, wizardActiveStep, wizardSelectedValues} = store.wizardState;\r\n return {\r\n wizardActiveItem,\r\n wizardActiveStep,\r\n wizardSelectedValues,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(LookWizardContentTitle)\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {getCurrentGroups} from \"./lookWizardFunctions\";\r\n\r\n\r\nconst LookWizardContentDescription = (props) => {\r\n\r\n const {wizardActiveItem, wizardActiveStep, wizardSelectedValues} = props;\r\n\r\n const currentGroups = getCurrentGroups(wizardActiveItem, wizardActiveStep, wizardSelectedValues);\r\n\r\n if (wizardActiveStep === -1) {\r\n return wizardActiveItem.description\r\n }\r\n if (wizardActiveStep > -1 && currentGroups.length === 1) {\r\n return currentGroups[0].description\r\n }\r\n if (wizardActiveStep > -1 && !currentGroups.length) {\r\n return \r\n }\r\n if (wizardActiveStep === 0 && currentGroups.length > 1 && wizardActiveItem.startDescription) {\r\n return wizardActiveItem.startDescription\r\n }\r\n return null\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {wizardActiveItem, wizardActiveStep, wizardSelectedValues} = store.wizardState;\r\n return {\r\n wizardActiveItem,\r\n wizardActiveStep,\r\n wizardSelectedValues,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(LookWizardContentDescription)\r\n","import React, {Fragment} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {injectIntl} from \"react-intl\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport LookWizardSection from \"./lookWizard/lookWizardSection\";\r\nimport {getActiveWizardItem, getAvailableSteps, getCurrentGroups} from \"./lookWizard/lookWizardFunctions\";\r\nimport {ROUTES} from \"../../../../routes\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../config\";\r\n\r\nimport GroheFeaturesHeader from \"../../grohe/groheNavigation/groheFeatures/groheFeaturesHeader\";\r\n\r\nconst LookMainWizardSections = (props) => {\r\n\r\n const {wizardList, location, wizardActiveStep, wizardSelectedValues, isMobile, contentHeight, wizardActiveItem,\r\n shopPageOpened, lookCompatabilityAlert, filtersOpened} = props;\r\n\r\n const showWizard = (shopPageOpened && wizardActiveItem) || (location && location.pathname && location.pathname.includes(ROUTES.wizard));\r\n // console.log(\"showWizard\", showWizard);\r\n if (!showWizard) {\r\n return null\r\n }\r\n\r\n const wizardItem = wizardActiveItem || getActiveWizardItem(wizardList, location);\r\n if (!wizardItem) {\r\n return null\r\n }\r\n\r\n const wizardSteps = getAvailableSteps(wizardItem, wizardSelectedValues);\r\n // console.log(\"wizardSteps\", wizardSteps);\r\n\r\n const currentGroups = getCurrentGroups(wizardItem, wizardActiveStep, wizardSelectedValues);\r\n const isCompletedStep = wizardActiveStep > -1 && !currentGroups.length;\r\n\r\n const wizardSections = (\r\n \r\n {wizardSteps.map((wizardStep, wizardStepIndex) => {\r\n const currentGroups = getCurrentGroups(wizardItem, wizardStepIndex, wizardSelectedValues);\r\n\r\n if (IS_PRODUCT_JOURNEY) {\r\n let classNames = \"grohe-features grohe-section--wizard\"\r\n + ((wizardActiveStep === wizardStepIndex) && !isCompletedStep ? \" grohe-features--opened\" : \"\")\r\n + (shopPageOpened ? \" grohe-section--shop\" : \"\");\r\n if (isMobile) {\r\n if (wizardActiveStep !== wizardStepIndex) {\r\n classNames += wizardActiveStep > wizardStepIndex && !isCompletedStep\r\n ? \" lm-section--slide-left\"\r\n : \" lm-section--slide-right\"\r\n }\r\n }\r\n return (\r\n
    \r\n \r\n
    1) ? \"\" : \" lm-content--no-scroll lm-content--product\")}>\r\n {currentGroups.length ? : null}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n if (isMobile) {\r\n let classNames = \"lm-content lm-content--features lm-content--wizard\";\r\n if (wizardActiveStep !== wizardStepIndex) {\r\n classNames += wizardActiveStep > wizardStepIndex && !isCompletedStep\r\n ? \" lm-section--slide-left lm-section--hidden\"\r\n : \" lm-section--slide-right lm-section--hidden\"\r\n }\r\n return (\r\n
    \r\n {currentGroups.length ? : null}\r\n
    \r\n )\r\n }\r\n let classNames = \"lm-section lm-section--feature lw-section lm-section--slide-right\";\r\n if (wizardActiveStep !== wizardStepIndex) {\r\n classNames += wizardActiveStep > wizardStepIndex && !isCompletedStep\r\n ? \" lm-section--slide-right-more lm-section--hidden\"\r\n : \" lm-section--slide-none lm-section--hidden\"\r\n }\r\n return (\r\n
    \r\n
    1 ? \"\" : \" lm-content--no-scroll\")\r\n + (filtersOpened || lookCompatabilityAlert.visible ? \" lm-content--slide-down\" : \"\")}>\r\n {currentGroups.length ? : null}\r\n
    \r\n
    \r\n )\r\n })}\r\n
    \r\n )\r\n\r\n if (IS_PRODUCT_JOURNEY && isMobile) {\r\n return (\r\n
    \r\n {wizardSections}\r\n
    \r\n )\r\n }\r\n\r\n return wizardSections\r\n\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {wizardList, wizardActiveStep, wizardSelectedValues, wizardActiveItem} = store.wizardState;\r\n const {isMobile} = store.serverState;\r\n const {shopPageOpened} = store.shopState;\r\n const {lookCompatabilityAlert} = store.lookState;\r\n const {filtersOpened} = store.groheState;\r\n\r\n return {\r\n wizardList,\r\n wizardActiveStep,\r\n wizardSelectedValues,\r\n isMobile,\r\n wizardActiveItem,\r\n shopPageOpened,\r\n lookCompatabilityAlert,\r\n filtersOpened,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n\r\n};\r\n\r\nexport default withRouter(\r\n injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookMainWizardSections)\r\n )\r\n)\r\n","import React, {useEffect, useRef} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport ErrorIcon from \"@mui/icons-material/Error\";\r\n\r\nimport {setLookCompatabilityAlert} from \"../../../../../actions/lookFunctions\";\r\nimport LookCompatabilitySectionButtons from \"./lookCompatabilitySectionButtons\";\r\nimport LookCompatabilitySectionContent from \"./lookCompatabilitySectionContent\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\nimport $ from \"jquery\";\r\n\r\nconst LookCompatabilitySection = (props) => {\r\n const {lookCompatabilityAlert, wrapperStyles, intl, isMobile} = props;\r\n\r\n const compatabilityContentElem = useRef();\r\n\r\n //console.log(\"availableFilters\", availableFilters);\r\n\r\n useEffect(() => {\r\n if (lookCompatabilityAlert.visible) {\r\n setTimeout(() => {\r\n if (compatabilityContentElem && compatabilityContentElem.current) {\r\n const buttons = $(compatabilityContentElem.current).find(\".look-popup__buttons\");\r\n if (buttons && buttons[0] && buttons[0].offsetTop) {\r\n $(compatabilityContentElem.current).animate({scrollTop: buttons[0].offsetTop}, 1300);\r\n }\r\n }\r\n }, 700);\r\n }\r\n }, [lookCompatabilityAlert])\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n

    \r\n \r\n

    \r\n
    \r\n

    \r\n \r\n

    \r\n \r\n \r\n
    \r\n
    \r\n )\r\n};\r\n\r\nLookCompatabilitySection.propTypes = {\r\n wrapperStyles: PropTypes.object\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookCompatabilityAlert, lookActiveFeature} = store.lookState;\r\n const {isMobile} = store.serverState;\r\n return {\r\n lookActiveFeature,\r\n lookCompatabilityAlert,\r\n isMobile,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookCompatabilityAlert\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookCompatabilitySection)\r\n);\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport {injectIntl} from \"react-intl\";\r\n\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\n\r\nimport {setLookOpened} from \"../../../../actions/lookFunctions\";\r\nimport {ROUTES} from \"../../../../routes\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS} from \"../../../../analytics\";\r\nimport {zoomCanvasOut} from \"../lookFunctions\";\r\nimport {setCanvasScale} from \"../../../../actions/actionFunctions\";\r\nimport LookCanvasContext from \"../../lookCanvasContext\";\r\n\r\nconst LookMainHeaderCloseButton = (props) => {\r\n\r\n const {intl, history, setLookOpened, setCanvasScale} = props;\r\n\r\n const closeButtonClick = (imageCanvas) => {\r\n Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookMenuHeaderClose);\r\n setLookOpened(false);\r\n zoomCanvasOut(imageCanvas, setCanvasScale);\r\n history.push(ROUTES.home);\r\n };\r\n\r\n return (\r\n \r\n {(imageCanvas) => (\r\n closeButtonClick(imageCanvas)}>\r\n \r\n \r\n )}\r\n \r\n )\r\n};\r\n\r\nconst mapStateToProps = () => {\r\n return {\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookOpened,\r\n setCanvasScale,\r\n};\r\n\r\nexport default withRouter(\r\n injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookMainHeaderCloseButton)\r\n )\r\n)\r\n","import React, {Fragment} from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport invert from \"lodash/invert\";\r\n\r\nimport {loaderEnable} from \"../ui/loaderView\";\r\nimport {\r\n toggleUserPopup, setCanvasId, setLayoutDataParts, setDefaultSelectionGroup, loadFilters, setCameFromPage,\r\n toggleBathroomVisualizerOpen, toggleSelectionFeatureInfo, changeMessageBoxState, addVisualizersLoaded\r\n} from \"../../actions/actionFunctions\";\r\n// import './assets/css/styles.css';\r\nimport {\r\n getBathroomVisualizerData,\r\n getBvGroups,\r\n getQtCategories,\r\n getNavigationButtons\r\n} from \"../../api/server-api\";\r\nimport ImageCanvasCommon from \"../visComponents/imageCanvasCommon\";\r\nimport {Layout} from \"./core/layout\";\r\nimport DesktopNavigation from \"./navigation/desktopNavigation\";\r\nimport MobileNavigation from \"./navigation/mobileNavigation\";\r\n// import MobileRotateButton from './common/mobileRotateButton';\r\nimport MainButtons from \"../common/mainButtons\";\r\nimport DemoPoints from \"../common/demoPoints/demoPoints\";\r\nimport MessageBox from \"../popups/messageBox\";\r\n\r\nimport Visualizer from \"../visComponents/visualizer\";\r\nimport VisualizerTutorial from \"../tutorials/visualizerTutorial\";\r\nimport {LayoutType} from \"./core/constants\";\r\nimport {showVisualizerTutorial} from \"../../actions/tutorialFunctions\";\r\nimport Copyright from \"../ui/copyright\";\r\nimport {IS_QKB_UI} from \"../../config\";\r\n\r\nexport const layout = new Layout();\r\n\r\nclass BathroomVisualizer extends Visualizer {\r\n\r\n static displayName = 'BathRoom visualizer';\r\n\r\n constructor(props) {\r\n super(props);\r\n this.layout = layout;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.visualizersLoaded.includes(this.layout.visualizerType)) {\r\n this.setSubscribers();\r\n return false\r\n }\r\n loaderEnable();\r\n Promise.all([\r\n getBathroomVisualizerData(),\r\n getQtCategories(this.layout.getCurrentLayoutAbbreviation())\r\n ]).then(baseResponse => {\r\n Promise.all([\r\n Promise.resolve(baseResponse[0]),\r\n getBvGroups(),\r\n Promise.resolve(baseResponse[1])\r\n ])\r\n .then((allResponse) => {\r\n const mainResponse = allResponse[0];\r\n const bvGroupsResponse = allResponse[1].data;\r\n const qtCategories = allResponse[2];\r\n this.layout.loadNewFeatures(mainResponse); // 1) set default (placeholders)\r\n this.layout.setGroupsItemsCount(bvGroupsResponse); // should be loaded before & after all features are received\r\n return this.setVisualizerInfo(mainResponse, bvGroupsResponse, qtCategories, invert(LayoutType));\r\n })\r\n .then(this.checkShareUrl)\r\n .then(this.onBvLoad)\r\n .then(this.finishLoading);\r\n });\r\n\r\n this.setSubscribers();\r\n getNavigationButtons();\r\n }\r\n\r\n render() {\r\n\r\n if (!IS_QKB_UI) {\r\n return null\r\n }\r\n\r\n const showPlaceHolders = document.bvConfig ? document.bvConfig.showPlaceholders : false;\r\n const fabricatorSettings = this.props.fabricatorSettings;\r\n const layers = this.layout.getLayers(showPlaceHolders);\r\n const layoutType = this.layout.getCurrentLayoutName();\r\n const isMobile = this.props.windowWidth < 991;\r\n const showOtherLayouts =\r\n (document.kvConfig.visualizerType === \"Bathroom\" || document.kvConfig.visualizerType === \"BV\")\r\n ? fabricatorSettings && (fabricatorSettings.showSmallDesignForClients\r\n || (fabricatorSettings.showSmallDesignFromDashboard && document.kvConfig.isBackend))\r\n : true;\r\n const showTutorial = this.checkToShowTutorial() && showOtherLayouts;\r\n\r\n return (\r\n
    \r\n
    \r\n {this.props.bvOpened || this.props.bvVisited ? (\r\n \r\n this.imageCanvas = node}\r\n layoutType={layoutType}\r\n layout={this.layout}\r\n width={this.props.canvasDimensions.width}\r\n height={this.props.canvasDimensions.height}\r\n useMouseHovering={this.props.useMouseHovering}\r\n useTouchZoom={this.props.useTouchZoom}\r\n />\r\n \r\n \r\n ) : null}\r\n \r\n {!this.state.demoPointClicked && this.props.canvasId ? (\r\n \r\n ) : null}\r\n
    \r\n {(this.layout.initialized && this.props.bvVisited) ? ( // keep navigation opened if someone got to QT and back\r\n isMobile ? (\r\n \r\n ) : (\r\n this.navBar = node}\r\n refreshCB={this.handleRefresh}\r\n setHoveredLayer={this.setHoveredLayer}\r\n canvasId={this.state.canvasId}\r\n renderGreenLayerByZindex={this.renderGreenLayerByZindex}\r\n toggleUserPopup={this.props.toggleUserPopup}\r\n changeMessageBoxState={this.changeMessageBoxState}\r\n setActiveFeature={this.setActiveFeature}\r\n activeFeature={this.state.activeFeature}\r\n fabricatorSettings={fabricatorSettings}\r\n setDemoPointClicked={this.setDemoPointClicked}\r\n />\r\n )\r\n ) : null}\r\n {/**/}\r\n {this.props.cookieAccepted ? : null}\r\n {showTutorial ? : null}\r\n
    \r\n )\r\n }\r\n}\r\nconst mapStateToProps = (store) => {\r\n const {cookieAccepted, windowWidth, visualizersLoaded} = store.serverState;\r\n const {bvOpened, bvVisited, canvasId, showRestorePopup, canvasDimensions, canvasCount} = store.bathroomVisualizerState;\r\n const {mobileNav, desktopNavigationOpened, activeNavigationParentName, activeNavigationChildName} = store.navigationState;\r\n const {isPhoneNumberValidated, userIsLoggedIn} = store.userState;\r\n const {visualizerTutorialIsOpened, visualizerTutorialFinished} = store.tutorialState;\r\n const {initialFlowRoomLayout, initialFlowRoom, initialFlowStep} = store.initialFlowState;\r\n return {\r\n bvOpened,\r\n bvVisited,\r\n mobileNav,\r\n isPhoneNumberValidated,\r\n userIsLoggedIn,\r\n windowWidth,\r\n canvasId,\r\n fabricatorSettings: store.fabricatorState.settings,\r\n desktopNavigationOpened,\r\n activeNavigationParentName,\r\n activeNavigationChildName,\r\n showRestorePopup,\r\n visualizerTutorialIsOpened,\r\n visualizerTutorialFinished,\r\n initialFlowRoomLayout,\r\n initialFlowRoom,\r\n initialFlowStep,\r\n cookieAccepted,\r\n canvasDimensions,\r\n visualizersLoaded,\r\n canvasCount,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n setCameFromPage,\r\n toggleBathroomVisualizerOpen,\r\n setDefaultSelectionGroup,\r\n setLayoutDataParts,\r\n toggleUserPopup,\r\n setCanvasId,\r\n loadFilters,\r\n toggleSelectionFeatureInfo,\r\n changeMessageBoxState,\r\n addVisualizersLoaded,\r\n showVisualizerTutorial\r\n})(BathroomVisualizer);\r\n","'use strict';\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.default = exports.LoadingBar = exports.TERMINATING_ANIMATION_DURATION = exports.ANIMATION_DURATION = exports.PROGRESS_INCREASE = exports.MAX_PROGRESS = exports.UPDATE_TIME = undefined;\r\n\r\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _react = require('react');\r\n\r\nvar _react2 = _interopRequireDefault(_react);\r\n\r\nvar _reactLifecyclesCompat = require('react-lifecycles-compat');\r\n\r\nvar _propTypes = require('prop-types');\r\n\r\nvar _reactRedux = require('react-redux');\r\n\r\nvar _loading_bar_ducks = require('./loading_bar_ducks');\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\r\n\r\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\r\n\r\nvar UPDATE_TIME = exports.UPDATE_TIME = 200;\r\nvar MAX_PROGRESS = exports.MAX_PROGRESS = 100;\r\nvar PROGRESS_INCREASE = exports.PROGRESS_INCREASE = 3;\r\nvar ANIMATION_DURATION = exports.ANIMATION_DURATION = UPDATE_TIME * 4;\r\nvar TERMINATING_ANIMATION_DURATION = exports.TERMINATING_ANIMATION_DURATION = UPDATE_TIME / 2;\r\n\r\nvar initialState = {\r\n percent: 0,\r\n status: 'hidden'\r\n};\r\n\r\nvar LoadingBar = function (_Component) {\r\n _inherits(LoadingBar, _Component);\r\n\r\n function LoadingBar() {\r\n var _ref;\r\n\r\n var _temp, _this, _ret;\r\n\r\n _classCallCheck(this, LoadingBar);\r\n\r\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key];\r\n }\r\n\r\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = LoadingBar.__proto__ || Object.getPrototypeOf(LoadingBar)).call.apply(_ref, [this].concat(args))), _this), _this.state = _extends({}, initialState), _this.reset = function () {\r\n _this.terminatingAnimationTimeoutId = null;\r\n _this.setState(initialState);\r\n }, _this.newPercent = function (percent, progressIncrease) {\r\n // Use cosine as a smoothing function\r\n // It could be any function to slow down progress near the ending 100%\r\n var smoothedProgressIncrease = progressIncrease * Math.cos(percent * (Math.PI / 2 / 100));\r\n\r\n return percent + smoothedProgressIncrease;\r\n }, _this.simulateProgress = function () {\r\n _this.setState(function (prevState, _ref2) {\r\n var maxProgress = _ref2.maxProgress,\r\n progressIncrease = _ref2.progressIncrease;\r\n var percent = prevState.percent;\r\n\r\n var newPercent = _this.newPercent(percent, progressIncrease);\r\n\r\n if (newPercent <= maxProgress) {\r\n percent = newPercent;\r\n }\r\n\r\n return { percent: percent };\r\n });\r\n }, _temp), _possibleConstructorReturn(_this, _ret);\r\n }\r\n\r\n _createClass(LoadingBar, [{\r\n key: 'componentDidMount',\r\n value: function componentDidMount() {\r\n if (this.state.status === 'starting') {\r\n this.start();\r\n }\r\n }\r\n }, {\r\n key: 'componentDidUpdate',\r\n value: function componentDidUpdate(prevProps, prevState) {\r\n if (prevState.status !== this.state.status) {\r\n if (this.state.status === 'starting') {\r\n this.start();\r\n }\r\n\r\n if (this.state.status === 'stopping') {\r\n this.stop();\r\n }\r\n }\r\n }\r\n }, {\r\n key: 'componentWillUnmount',\r\n value: function componentWillUnmount() {\r\n clearInterval(this.progressIntervalId);\r\n clearTimeout(this.terminatingAnimationTimeoutId);\r\n }\r\n }, {\r\n key: 'start',\r\n value: function start() {\r\n this.progressIntervalId = setInterval(this.simulateProgress, this.props.updateTime);\r\n this.setState({ status: 'running' });\r\n }\r\n }, {\r\n key: 'stop',\r\n value: function stop() {\r\n clearInterval(this.progressIntervalId);\r\n this.progressIntervalId = null;\r\n\r\n var terminatingAnimationDuration = this.isShown() || this.props.showFastActions ? TERMINATING_ANIMATION_DURATION : 0;\r\n\r\n this.terminatingAnimationTimeoutId = setTimeout(this.reset, terminatingAnimationDuration);\r\n\r\n this.setState({ percent: 100 });\r\n }\r\n }, {\r\n key: 'isShown',\r\n value: function isShown() {\r\n return this.state.percent > 0 && this.state.percent <= 100;\r\n }\r\n }, {\r\n key: 'buildStyle',\r\n value: function buildStyle() {\r\n var animationDuration = this.state.status === 'stopping' ? TERMINATING_ANIMATION_DURATION : ANIMATION_DURATION;\r\n\r\n var style = {\r\n opacity: '1',\r\n transform: 'scaleX(' + this.state.percent / 100 + ')',\r\n transformOrigin: 'left',\r\n transition: 'transform ' + animationDuration + 'ms linear',\r\n width: '100%',\r\n willChange: 'transform, opacity'\r\n\r\n // Use default styling if there's no CSS class applied\r\n };if (!this.props.className) {\r\n style.height = '3px';\r\n style.backgroundColor = 'red';\r\n style.position = 'absolute';\r\n }\r\n\r\n if (this.isShown()) {\r\n style.opacity = '1';\r\n } else {\r\n style.opacity = '0';\r\n }\r\n\r\n return _extends({}, style, this.props.style);\r\n }\r\n }, {\r\n key: 'render',\r\n value: function render() {\r\n if (this.state.status === 'hidden') {\r\n return _react2.default.createElement('div', null);\r\n } else if (this.props.renderComponent) {\r\n return this.props.renderComponent(Math.round(this.state.percent))\r\n }\r\n\r\n return _react2.default.createElement(\r\n 'div',\r\n { className: this.props.className },\r\n Math.round(this.state.percent)\r\n );\r\n }\r\n }], [{\r\n key: 'shouldStart',\r\n value: function shouldStart(props, state) {\r\n return props.loading > 0 && ['hidden', 'stopping'].indexOf(state.status) >= 0;\r\n }\r\n }, {\r\n key: 'shouldStop',\r\n value: function shouldStop(props, state) {\r\n return props.loading === 0 && ['starting', 'running'].indexOf(state.status) >= 0;\r\n }\r\n }, {\r\n key: 'getDerivedStateFromProps',\r\n value: function getDerivedStateFromProps(nextProps, prevState) {\r\n if (LoadingBar.shouldStart(nextProps, prevState)) {\r\n return { status: 'starting' };\r\n }\r\n\r\n if (LoadingBar.shouldStop(nextProps, prevState)) {\r\n return { status: 'stopping' };\r\n }\r\n\r\n return null;\r\n }\r\n }]);\r\n\r\n return LoadingBar;\r\n}(_react.Component);\r\n\r\nLoadingBar.propTypes = {\r\n className: _propTypes.string,\r\n loading: _propTypes.number,\r\n maxProgress: _propTypes.number,\r\n progressIncrease: _propTypes.number,\r\n showFastActions: _propTypes.bool,\r\n updateTime: _propTypes.number,\r\n scope: _propTypes.string,\r\n style: _propTypes.object,\r\n renderComponent: _propTypes.func\r\n};\r\nLoadingBar.defaultProps = {\r\n className: '',\r\n loading: 0,\r\n maxProgress: MAX_PROGRESS,\r\n progressIncrease: PROGRESS_INCREASE,\r\n showFastActions: false,\r\n style: {},\r\n updateTime: UPDATE_TIME,\r\n scope: _loading_bar_ducks.DEFAULT_SCOPE,\r\n renderComponent: null,\r\n};\r\n\r\n\r\nvar mapStateToProps = function mapStateToProps(state, ownProps) {\r\n return {\r\n loading: state.loadingBar[ownProps.scope || _loading_bar_ducks.DEFAULT_SCOPE]\r\n };\r\n};\r\n\r\n(0, _reactLifecyclesCompat.polyfill)(LoadingBar);\r\nvar ConnectedLoadingBar = (0, _reactRedux.connect)(mapStateToProps)(LoadingBar);\r\n\r\nexports.LoadingBar = LoadingBar;\r\nexports.default = ConnectedLoadingBar;\r\n","import {baseNewImagesPath} from \"../../assets\";\r\nimport {IS_LIXIL_UI} from \"../../../config\";\r\nimport styleHelpers from \"./styles/printDocumentStylesHelpers\";\r\nimport printDocumentStylesDiscounts from \"./styles/printDocumentStylesDiscounts\";\r\n\r\nexport const registerFonts = () => {\r\n const {Font} = window.ReactPdfRenderer;\r\n try {\r\n Font.register({\r\n family: \"Play\",\r\n src: `${baseNewImagesPath}fonts/play-regular.ttf`\r\n });\r\n Font.register({\r\n family: \"PlayBold\",\r\n src: `${baseNewImagesPath}fonts/play-bold.ttf`\r\n });\r\n Font.register({\r\n family: \"FrutigerLTStd-Light\",\r\n src: `${baseNewImagesPath}fonts/frutiger/FrutigerLTStd-Light.ttf`\r\n });\r\n Font.register({\r\n family: \"Frutiger-Roman\",\r\n src: `${baseNewImagesPath}fonts/frutiger/Frutiger-Roman.ttf`\r\n });\r\n Font.register({\r\n family: \"Roboto\",\r\n src: `${baseNewImagesPath}fonts/Roboto/Roboto-Regular.ttf`\r\n });\r\n Font.register({\r\n family: \"Roboto500\",\r\n src: `${baseNewImagesPath}fonts/Roboto/Roboto-Medium.ttf`\r\n });\r\n } catch (error) {\r\n console.log(\"error registering fonts\", error);\r\n }\r\n}\r\n\r\nexport default function getPrintColors(activeTheme) {\r\n\r\n const COLORS = {\r\n black: \"#000000\",\r\n red: \"#d0021b\",\r\n gray: \"#828282\",\r\n gray2: \"#7e7e7e\",\r\n gray3: \"#9f9f9f\",\r\n light: \"#c8c8c8\",\r\n white: \"#ffffff\",\r\n };\r\n\r\n switch (activeTheme) {\r\n case \"qc\":\r\n default: {\r\n COLORS.green = IS_LIXIL_UI ? \"#000000\" : \"#9FC522\";\r\n COLORS.blue = IS_LIXIL_UI ? \"#000000\" : \"#4a90e2\";\r\n COLORS.lightBlue = \"#98C3FA\";\r\n COLORS.regular = IS_LIXIL_UI ? \"Roboto\" : \"Play\";\r\n COLORS.bold = IS_LIXIL_UI ? \"Roboto500\" : \"PlayBold\";\r\n COLORS.black = \"#000000\";\r\n break;\r\n }\r\n case \"caes\": {\r\n COLORS.green = \"#f46c42\";\r\n COLORS.blue = \"#58595b\";\r\n COLORS.lightBlue = \"#717275\"; // lighten primary 10%\r\n COLORS.regular = \"FrutigerLTStd-Light\";\r\n COLORS.bold = \"Frutiger-Roman\";\r\n COLORS.black = \"#000000\";\r\n break;\r\n }\r\n case \"moderno\": {\r\n COLORS.green = \"#d0021b\";\r\n COLORS.blue = \"#1b1b1b\";\r\n COLORS.lightBlue = \"#444444\"; // lighten primary 10%\r\n COLORS.regular = \"Play\";\r\n COLORS.bold = \"PlayBold\";\r\n COLORS.black = \"#000000\";\r\n break;\r\n }\r\n case \"as\": {\r\n COLORS.green = \"#E70026\";\r\n COLORS.blue = \"#000000\";\r\n COLORS.lightBlue = \"#292929\"; // lighten primary 10%\r\n COLORS.regular = \"Play\";\r\n COLORS.bold = \"PlayBold\";\r\n COLORS.black = \"#000000\";\r\n break;\r\n }\r\n }\r\n\r\n return getStyles(COLORS)\r\n\r\n}\r\n\r\nconst getStyles = (COLORS) => window.ReactPdfRenderer.StyleSheet.create({\r\n ...styleHelpers,\r\n page: {\r\n paddingTop: 35,\r\n paddingBottom: 65,\r\n paddingHorizontal: 35,\r\n fontFamily: COLORS.regular,\r\n color: COLORS.gray,\r\n fontSize: 10,\r\n },\r\n pageAS: {\r\n paddingTop: 100,\r\n paddingBottom: 65,\r\n paddingHorizontal: 35,\r\n fontFamily: COLORS.regular,\r\n color: COLORS.gray,\r\n fontSize: 10,\r\n },\r\n bold: {\r\n fontFamily: COLORS.bold,\r\n },\r\n black: {\r\n color: COLORS.black,\r\n },\r\n gray: {\r\n color: COLORS.gray,\r\n },\r\n primary: {\r\n color: COLORS.blue,\r\n },\r\n active: {\r\n color: COLORS.green,\r\n },\r\n red: {\r\n color: COLORS.red,\r\n },\r\n header: {\r\n // borderColor: \"#fff000\",\r\n // borderStyle: \"solid\",\r\n // borderWidth: 2,\r\n maxHeight: 60,\r\n minHeight: 40,\r\n marginBottom: 25,\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"flex-start\",\r\n justifyContent: \"space-between\",\r\n },\r\n headerInfo: {\r\n // textAlign: \"right\",\r\n },\r\n headerLogo: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n marginTop: 3,\r\n flex: 1,\r\n },\r\n headerLogoAS: {\r\n marginTop: -35,\r\n paddingLeft: 70,\r\n paddingRight: 70,\r\n },\r\n headerLogoImage: {\r\n maxWidth: \"100%\",\r\n maxHeight: \"100%\",\r\n alignSelf: \"center\",\r\n objectFit : \"contain\",\r\n },\r\n headerText: {\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n justifyContent: \"flex-end\"\r\n },\r\n headerTextBold: {\r\n fontFamily: COLORS.bold,\r\n },\r\n specSheet: {\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n paddingTop: 35,\r\n paddingHorizontal: 35,\r\n height: 100,\r\n // width: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n },\r\n headerTextASSheet: {\r\n width: \"20%\",\r\n flex: \"0 0 20%\",\r\n fontSize: 15,\r\n color: COLORS.gray3,\r\n },\r\n headerTextASInfo: {\r\n width: \"20%\",\r\n flex: \"0 0 20%\",\r\n },\r\n headerTextValue: {\r\n paddingLeft: 5,\r\n // width: 50,\r\n // textAlign: \"right\",\r\n },\r\n main: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n },\r\n section: {\r\n width: \"33%\",\r\n flex: \"0 0 33%\"\r\n },\r\n sectionTwo: {\r\n width: \"45%\",\r\n flex: \"0 0 45%\"\r\n },\r\n sectionLeft: {\r\n paddingRight: 10\r\n },\r\n sectionCenter: {\r\n paddingLeft: 10,\r\n paddingRight: 10,\r\n },\r\n sectionRight: {\r\n paddingLeft: 10\r\n },\r\n mainTitle: {\r\n fontFamily: COLORS.bold,\r\n borderBottomWidth: 1,\r\n borderBottomColor: COLORS.gray2,\r\n paddingBottom: 3,\r\n marginBottom: 5,\r\n },\r\n mainText: {\r\n marginBottom: 2,\r\n },\r\n mainTextEmail: {\r\n marginTop: 10,\r\n },\r\n room: {\r\n borderLeftColor: COLORS.light,\r\n borderLeftWidth: 1,\r\n borderLeftStyle: \"solid\",\r\n marginTop: 30,\r\n borderBottomColor: COLORS.light,\r\n borderBottomWidth: 1,\r\n },\r\n roomTitle: {\r\n color: COLORS.gray2,\r\n padding: 5,\r\n backgroundColor: COLORS.light,\r\n fontSize: 11,\r\n textTransform: \"uppercase\",\r\n fontFamily: COLORS.bold,\r\n },\r\n roomBody: {\r\n paddingLeft: 20\r\n },\r\n subPartTitle: {\r\n color: COLORS.blue,\r\n borderBottomWidth: 1,\r\n borderBottomColor: COLORS.blue,\r\n padding: 2,\r\n marginRight: 2,\r\n marginBottom: 10,\r\n marginTop: 10,\r\n marginLeft: -10\r\n },\r\n cartItem: {\r\n borderBottomWidth: 1,\r\n borderBottomColor: COLORS.light,\r\n paddingBottom: 2,\r\n marginBottom: 5,\r\n },\r\n cartItemWithThumbnail: {\r\n flexDirection: \"row\",\r\n paddingBottom: 5,\r\n },\r\n cartItemWithThumbnailBody: {\r\n flex: 1,\r\n overflow: \"hidden\",\r\n },\r\n cartItemThumbnail: {\r\n borderWidth: 1,\r\n borderColor: COLORS.light,\r\n borderRadius: 5,\r\n padding: 8,\r\n marginRight: 5,\r\n width: 64,\r\n height: 64,\r\n flexBasis: 64,\r\n },\r\n cartItemThumbnailImage: {\r\n width: 48,\r\n height: 48,\r\n flexBasis: 48,\r\n objectFit: \"contain\",\r\n },\r\n cartItemSkuFullWidth: {\r\n flex: 1,\r\n color: COLORS.gray,\r\n fontSize: 9,\r\n marginBottom: 10,\r\n },\r\n cartItemDescription: {\r\n marginTop: 4,\r\n marginBottom: 4,\r\n },\r\n cartItemName: {\r\n fontFamily: COLORS.bold,\r\n color: COLORS.gray,\r\n },\r\n cartItemNameBig: {\r\n fontSize: 11,\r\n },\r\n cartItemNameCentered: {\r\n marginTop: 10,\r\n },\r\n cartItemInfo: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-around\",\r\n alignSelf: \"stretch\",\r\n width: \"100%\",\r\n color: COLORS.gray,\r\n marginTop: 5,\r\n },\r\n cartItemUnit: {\r\n flexGrow: 1,\r\n flexShrink: 1,\r\n flexBasis: 40,\r\n width: 40,\r\n color: COLORS.gray,\r\n fontSize: 9,\r\n },\r\n wizardItemDescription: {\r\n flexGrow: 1,\r\n flexShrink: 1,\r\n color: COLORS.gray,\r\n fontSize: 9,\r\n },\r\n cartItemUnitSKU: {\r\n flexBasis: 80,\r\n width: 80,\r\n },\r\n cartItemUnitItem: {},\r\n cartItemPrice: {\r\n flexGrow: 5,\r\n flexShrink: 5,\r\n flexBasis: 100,\r\n width: 100,\r\n justifyContent: \"flex-end\",\r\n alignSelf: \"flex-end\",\r\n textAlign: \"right\",\r\n fontFamily: COLORS.bold,\r\n },\r\n cartItemNote: {\r\n marginTop: 3,\r\n marginBottom: 3,\r\n padding: 5,\r\n borderColor: COLORS.light,\r\n borderStyle: \"solid\",\r\n borderWidth: 1,\r\n borderRadius: 5,\r\n color: COLORS.blue\r\n },\r\n cartItemSimilar: {\r\n width: \"100%\",\r\n marginTop: 10,\r\n // marginBottom: 10,\r\n // paddingLeft: 10,\r\n },\r\n cartItemSimilarTitle: {\r\n padding: 5,\r\n color: COLORS.white,\r\n backgroundColor: COLORS.lightBlue,\r\n fontSize: 10,\r\n marginBottom: 10,\r\n },\r\n cartItemSimilarTitleBundled: {\r\n marginBottom: 5,\r\n },\r\n cartItemBundled: {\r\n marginBottom: 10,\r\n },\r\n cartItemSimilarTitlePadding: {\r\n marginLeft: 10\r\n },\r\n cartItemSimilarContent: {\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n },\r\n cartItemSimilarContentCell: {\r\n width: \"50%\",\r\n flex: \"0 0 50%\"\r\n },\r\n cartItemSimilarItem: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignSelf: \"stretch\",\r\n width: \"100%\",\r\n borderBottomWidth: 1,\r\n borderBottomStyle: \"dashed\",\r\n borderBottomColor: COLORS.light,\r\n paddingBottom: 2,\r\n marginBottom: 5,\r\n // alignItems: \"center\", places price to center\r\n },\r\n cartItemSimilarItemNoBorder: {\r\n borderBottomWidth: 0,\r\n },\r\n cartItemSimilarItemBlock: {\r\n },\r\n cartItemSimilarItemName: {\r\n color: COLORS.blue,\r\n fontSize: 10,\r\n },\r\n cartItemSimilarItemLabel: {\r\n textTransform: \"uppercase\",\r\n fontFamily: COLORS.bold,\r\n color: COLORS.gray2,\r\n fontSize: 8,\r\n },\r\n cartItemSimilarItemPrice: {\r\n fontSize: 12,\r\n color: COLORS.blue\r\n },\r\n cartItemSimilarItemExample: {\r\n fontSize: 8,\r\n color: COLORS.gray\r\n },\r\n roomTotal: {\r\n marginVertical: 10,\r\n textAlign: \"right\",\r\n },\r\n roomTotalSecond: {\r\n marginTop: 0,\r\n marginBottom: 10,\r\n textAlign: \"right\",\r\n },\r\n roomTotalText: {\r\n fontFamily: COLORS.bold,\r\n },\r\n roomTotalAmount: {\r\n fontSize: 12,\r\n color: COLORS.blue,\r\n },\r\n footer: {\r\n marginTop: 20,\r\n flexDirection: \"row\",\r\n justifyContent: \"space-around\",\r\n alignSelf: \"stretch\",\r\n width: \"100%\",\r\n },\r\n footerLeft: {\r\n flexGrow: 1,\r\n flexShrink: 1,\r\n textAlign: \"center\"\r\n },\r\n notification: {\r\n padding: 20,\r\n borderColor: COLORS.red,\r\n borderStyle: \"solid\",\r\n borderWidth: 1,\r\n borderRadius: 5,\r\n },\r\n notificationMargin: {\r\n marginTop: 20,\r\n },\r\n notificationImage: {\r\n width: 25,\r\n height: 21,\r\n marginTop: -5,\r\n marginBottom: 10,\r\n marginHorizontal: \"auto\"\r\n },\r\n notificationText: {\r\n width: \"66.5%\",\r\n },\r\n total: {\r\n flexBasis: 160,\r\n textAlign: \"right\",\r\n },\r\n totalSectionFirst: {\r\n textAlign: \"right\",\r\n },\r\n totalSection: {\r\n marginTop: 15,\r\n textAlign: \"right\",\r\n },\r\n totalSectionText: {\r\n fontFamily: COLORS.bold,\r\n },\r\n totalSectionAmount: {\r\n fontSize: 14,\r\n color: COLORS.blue,\r\n },\r\n totalSectionFinal: {\r\n marginTop: 30,\r\n textAlign: \"right\",\r\n },\r\n totalSectionAmountFinal: {\r\n fontSize: 22,\r\n color: COLORS.green,\r\n },\r\n pageNumber: {\r\n position: \"absolute\",\r\n fontSize: 13,\r\n bottom: 30,\r\n left: 0,\r\n right: 0,\r\n textAlign: \"center\",\r\n color: COLORS.gray,\r\n },\r\n signature: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"flex-end\",\r\n marginTop: 30,\r\n height: 50,\r\n },\r\n signatureText: {\r\n width: \"100%\",\r\n borderTopWidth: 1,\r\n borderTopColor: COLORS.light,\r\n borderTopStyle: \"solid\",\r\n textAlign: \"center\"\r\n },\r\n signatureValue: {\r\n textAlign: \"center\",\r\n marginBottom: 5,\r\n },\r\n signatureImage: {\r\n maxWidth: \"100%\",\r\n width: \"auto\",\r\n marginHorizontal: \"auto\",\r\n },\r\n discountSection: {\r\n marginTop: 10,\r\n marginLeft: 10, // to remove negative margin of subTitle\r\n },\r\n ...printDocumentStylesDiscounts,\r\n});\r\n","import React, {Fragment} from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport {\r\n detectComplexLaborCartItem,\r\n getPriceWithCurrency,\r\n getTotalPrice,\r\n toFixedFeatureCost,\r\n toFixedPrice\r\n} from \"../../../misc/helpers\";\r\nimport {getCartItemName, getFeatureUnit} from \"./printDocumentFunctions\";\r\nimport {cartItemInterface} from \"../../shoppingCart/cartItemInterface\";\r\nimport {getPriceWithIncluded, getShowPrice} from \"../../../misc/priceFunctions\";\r\nimport PrintDocumentBodyBundledCartItems from \"./printDocumentBodyBundledCartItems\";\r\nimport {SQFT_FEATURES} from \"../../sqft/constants\";\r\n\r\nconst PrintDocumentBodyCartItem = (props) => {\r\n const {styles, cartItem, fabricatorData, locale, cartItems, sqftSlabState, cartItemsThumbnails, messages} = props;\r\n\r\n const {View, Text, Image} = window.ReactPdfRenderer;\r\n\r\n const fabricatorSettings = fabricatorData.settings;\r\n const isComplexMultipliedUsed = detectComplexLaborCartItem(cartItem) && getTotalPrice().multipliedCostUsed;\r\n //const shouldUseSlabPricing = cartItem.shouldUseSlabPricing; // calculate shouldUseSlabPricing per cItem:\r\n const shouldUseSlabPricing = cartItem.partId === SQFT_FEATURES.slabs && sqftSlabState.isSlabPricingEnabled; // calculate shouldUseSlabPricing globally\r\n const priceTotal = isComplexMultipliedUsed || cartItem.displayFakePrice === 0\r\n ? null\r\n : toFixedFeatureCost(cartItem.cartFeature, cartItem.quantity, cartItem.fromQtCategory, true, cartItem, shouldUseSlabPricing, cartItem.currentQuote);\r\n\r\n const getFeatureQuantity = () => {\r\n return messages[\"receipt.content.featureQuantity\"] || \"\"\r\n };\r\n\r\n const getPrice = () => {\r\n const showPrice = getShowPrice(fabricatorData);\r\n if (!showPrice) {\r\n return null\r\n }\r\n return getPriceWithIncluded(priceTotal, cartItem.cartFeature, fabricatorData, messages)\r\n };\r\n\r\n const featurePrice = toFixedFeatureCost(cartItem.cartFeature, 1, cartItem.fromQtCategory, false, null, shouldUseSlabPricing, cartItem.currentQuote);\r\n const price = getPrice();\r\n const hideUnitPrice = (cartItem.partId === \"room\" && !featurePrice) || !price;\r\n const isMinimumCharge = cartItem.isMinimumCharge && !cartItem.isMinimumChargeItems;\r\n const displayFake = cartItem.displayFakeQuantity && (typeof cartItem.displayFakeQuantity === \"number\") && (cartItem.displayFakeQuantity > 0);\r\n\r\n const bundleProducts = cartItems ? cartItems.filter(cItem => {\r\n return cItem.bundleParentId && (cItem.bundleParentId === cartItem.id)\r\n }) : [];\r\n\r\n const withThumbnail = fabricatorData.receiptSettings && fabricatorData.receiptSettings.showThumbnailsAndDescriptions\r\n && cartItemsThumbnails\r\n && cartItemsThumbnails[cartItem.id];\r\n\r\n if (withThumbnail) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {getCartItemName(cartItem.cartFeature, fabricatorData, messages, locale)}\r\n \r\n {cartItem.cartFeature.dbFeature.sku && !fabricatorSettings.hideSku ? (\r\n \r\n {`${messages[\"receipt.content.featureSKU\"]}: ${cartItem.cartFeature.dbFeature.sku}`}\r\n \r\n ) : null}\r\n {cartItem.cartFeature.dbFeature.description ? (\r\n \r\n {cartItem.cartFeature.dbFeature.description}\r\n \r\n ) : null}\r\n \r\n {isMinimumCharge\r\n ? null\r\n : (\r\n \r\n {`${getFeatureQuantity()}: ${toFixedPrice(displayFake ? cartItem.displayFakeQuantity : cartItem.quantity)}`}\r\n \r\n )}\r\n \r\n {hideUnitPrice || isMinimumCharge\r\n ? null\r\n : `${getFeatureUnit(cartItem.cartFeature, fabricatorData, messages, locale, cartItem.quantity)}: ${getPriceWithCurrency(fabricatorSettings, featurePrice, cartItem.cartFeature)}`}\r\n \r\n {price}\r\n \r\n {cartItem.noteText ? {cartItem.noteText} : null}\r\n \r\n \r\n {bundleProducts.length ? : null}\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {getCartItemName(cartItem.cartFeature, fabricatorData, messages, locale)}\r\n \r\n \r\n {cartItem.cartFeature.dbFeature.sku && !fabricatorSettings.hideSku ? (\r\n \r\n {`${messages[\"receipt.content.featureSKU\"]}: ${cartItem.cartFeature.dbFeature.sku}`}\r\n \r\n ) : null}\r\n {isMinimumCharge\r\n ? null\r\n : (\r\n \r\n {`${getFeatureQuantity()}: ${toFixedPrice(displayFake ? cartItem.displayFakeQuantity : cartItem.quantity)}`}\r\n \r\n )}\r\n \r\n {hideUnitPrice || isMinimumCharge\r\n ? null\r\n : `${getFeatureUnit(cartItem.cartFeature, fabricatorData, messages, locale, cartItem.quantity)}: ${getPriceWithCurrency(fabricatorSettings, featurePrice, cartItem.cartFeature)}`}\r\n \r\n {price}\r\n \r\n {cartItem.noteText ? {cartItem.noteText} : null}\r\n \r\n \r\n {bundleProducts.length ? : null}\r\n \r\n\r\n )\r\n};\r\n\r\nPrintDocumentBodyCartItem.propTypes = {\r\n cartItem: PropTypes.shape(cartItemInterface),\r\n fabricatorData: PropTypes.object.isRequired,\r\n locale: PropTypes.string.isRequired,\r\n styles: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default PrintDocumentBodyCartItem\r\n\r\n","// do not use imports in this file!! we are trying to keep lead form bundle js clean\r\n\r\nimport {getCommonVisualizerType} from \"../../../../../config\";\r\nimport {getCurrentLayout} from \"../../../../appLayout\";\r\nimport {getFeatureFromTheBackendBySku} from \"../../../../../api/look-api\";\r\n\r\nexport const fixStringEncoding = (string) => {\r\n return string && (typeof string === \"string\")\r\n ? string\r\n .replace(\"â€�\", \"”\")\r\n .replace(\"”\", \"”\")\r\n .replace(\"’\", \"’\")\r\n .replace(\"
\", \" \")\r\n .replace(\"
\", \"\") // not sure what it is\r\n : string\r\n}\r\n\r\nexport const fixWizardItem = (wizardItem, wizardItemIndex, forLeadForm = false, newVisualizerType) => {\r\n wizardItem.wizardNodes = []; // we don't use them in the visualizer! why do we keep them then\r\n Object.keys(wizardItem).forEach(property => {\r\n if (typeof wizardItem[property] === \"string\") {\r\n wizardItem[property] = fixStringEncoding(wizardItem[property]);\r\n }\r\n });\r\n if (!wizardItem.name) {\r\n wizardItem.name = \"wizard\" + (wizardItemIndex > 0 ? \"-\" + wizardItemIndex + 1 : \"\");\r\n }\r\n const currentVisType = getCommonVisualizerType(newVisualizerType);\r\n if (wizardItem.wizardGroups) {\r\n wizardItem.wizardGroups = wizardItem.wizardGroups.filter(wizGroup => {\r\n if (!wizGroup.enabled || (wizGroup.hideForCustomers && !document.kvConfig.isBackend)) {\r\n return false\r\n }\r\n if (wizardItem.visualizer === \"all\") {\r\n return (wizGroup.groupName === \"Room\") || !Array.isArray(wizGroup.visibleInVisualizers)\r\n || !wizGroup.visibleInVisualizers.length || wizGroup.visibleInVisualizers.includes(currentVisType)\r\n }\r\n return true\r\n }).map(wizGroup => {\r\n if (forLeadForm) {\r\n //getUrlLeadStepName\r\n wizGroup.leadStepUrl = wizGroup.leadStep\r\n ? wizGroup.leadStep.toLowerCase().replace(/ /g,\"-\")\r\n : \"project\"\r\n }\r\n if (wizGroup.nodeType === \"inputs\" && Array.isArray(wizGroup.inputFields)) {\r\n wizGroup.inputFields = wizGroup.inputFields.filter(inputObject => inputObject.checked)\r\n }\r\n Object.keys(wizGroup).forEach(property => {\r\n if (typeof wizGroup[property] === \"string\") {\r\n wizGroup[property] = fixStringEncoding(wizGroup[property]);\r\n }\r\n });\r\n [\"featuresIncluded\", \"featuresExcluded\"].forEach(property => {\r\n if (Array.isArray(wizGroup[property]) && wizGroup[property].length) {\r\n wizGroup[property] = wizGroup[property].map(excluded => {\r\n if (excluded && (typeof excluded === \"object\") && excluded.sharedFeatureName) {\r\n excluded.sharedFeatureName = excluded.sharedFeatureName\r\n .trim()\r\n .toLowerCase()\r\n .replace('room - ', '')\r\n }\r\n return excluded\r\n })\r\n }\r\n });\r\n return wizGroup\r\n })\r\n }\r\n return wizardItem\r\n}\r\n\r\nexport const getWizardFeatureAsync = async (feature, groupName) => {\r\n const layout = getCurrentLayout();\r\n const featureGroup = layout.getFeatureGroupByGroupName(groupName);\r\n if (featureGroup) {\r\n const nameToCompare = feature.sharedFeatureName; //lowercased already\r\n if (featureGroup.activeFeature && featureGroup.activeFeature.getLowerCasedSharedFeatureName() === nameToCompare) {\r\n return featureGroup.activeFeature\r\n }\r\n const navItems = layout.designNavigationItems({part: featureGroup}, null, \"\", false, \"all\");\r\n for (let i = 0; i < navItems.length; i++) {\r\n if (navItems[i].part.getLowerCasedSharedFeatureName() === nameToCompare) {\r\n return navItems[i].part;\r\n }\r\n }\r\n }\r\n return await getFeatureFromTheBackendBySku(feature.sku || feature.sharedFeatureName, featureGroup ? featureGroup.partId : \"\");\r\n}\r\n","import React from \"react\";\r\nimport UiIcon from \"../../ui/icons/uiIcon\";\r\n\r\nexport const showWizardStepDoneCheckMark = (wizardSelectedValue, featureGroup, cartItems, activeQuoteIndex, stepGroups) => {\r\n return stepGroups.some(stepGroup => {\r\n return (wizardSelectedValue && wizardSelectedValue.wizardGroup && (stepGroup.id === wizardSelectedValue.wizardGroup.id))\r\n || (featureGroup && cartItems.some(cartItem => {\r\n return stepGroup.id === cartItem.fromWizardGroupId\r\n && (cartItem.partId === featureGroup.partId)\r\n && (cartItem.currentQuote === activeQuoteIndex)\r\n && !cartItem.cartFeature.dbFeature.autoAddToCart\r\n }))\r\n })\r\n}\r\n\r\nconst MaterialsWizardDoneCheckMark = () => {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n};\r\nexport default MaterialsWizardDoneCheckMark\r\n","import EventManager from \"../../../store/sqftEventManager\";\r\nimport workspace from \"../../workspace\";\r\nimport config from \"../../../store/sqftConfig\";\r\nimport {getMousePositionOnField} from \"../../../../../helpers/sqftHelper\";\r\nimport {pnpolyArray} from \"../../../../../lib/pnpoly\";\r\n\r\nexport default class Movable {\r\n\r\n state = {\r\n hoveringOnlyShape: false,\r\n mouseDown: false,\r\n mouseDownWithChildren: false,\r\n mouseDownPosition: null,\r\n hovering: false,\r\n hoveringWithChildren: false,\r\n handlerHold: null\r\n };\r\n _posX;\r\n _posY;\r\n _width;\r\n _height;\r\n isResizedByPoint = false;\r\n priority;\r\n parent;\r\n grandParent;\r\n moveCallback = null;\r\n mouseUpCallback = null;\r\n mouseDownCallback = null;\r\n\r\n constructor(posX,\r\n posY,\r\n width,\r\n height,\r\n priority = EventManager.priorities.IMAGE,\r\n parent = null,\r\n grandParent = null,\r\n moveCallback = null,\r\n mouseUpCallback = null,\r\n mouseDownCallback = null\r\n ) {\r\n this.priority = priority;\r\n this.parent = parent;\r\n this.grandParent = grandParent;\r\n this.moveCallback = moveCallback;\r\n this.mouseUpCallback = mouseUpCallback;\r\n this.mouseDownCallback = mouseDownCallback;\r\n\r\n this.initEvents();\r\n this._posX = posX;\r\n this._posY = posY;\r\n this._width = width;\r\n this._height = height;\r\n }\r\n\r\n get posX() {\r\n return this._posX;\r\n }\r\n\r\n set posX(value) {\r\n this._posX = value;\r\n }\r\n\r\n get posY() {\r\n return this._posY;\r\n }\r\n\r\n set posY(value) {\r\n this._posY = value;\r\n }\r\n\r\n get width() {\r\n return this._width;\r\n }\r\n\r\n set width(value) {\r\n this._width = value;\r\n }\r\n\r\n get height() {\r\n return this._height;\r\n }\r\n\r\n set height(value) {\r\n this._height = value;\r\n }\r\n\r\n initEvents() {\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_MOVE,\r\n this.onMouseMove.bind(this),\r\n this,\r\n this.priority\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_DOWN,\r\n this.onMouseDown.bind(this),\r\n this,\r\n this.priority\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_UP,\r\n this.onMouseUp.bind(this),\r\n this,\r\n this.priority\r\n );\r\n }\r\n\r\n deregisterEvents() {\r\n EventManager.removeEvent(this);\r\n }\r\n\r\n reInitEvents = () => {\r\n this.initEvents();\r\n }\r\n\r\n onMouseMove(mousePos, e) {\r\n if (e.terminate && !this.state.mouseDown) {\r\n this.setHoveringOnlyShape(false);\r\n\r\n return this.setHovering(false);\r\n }\r\n\r\n if (this.state.mouseDown) {\r\n EventManager.setCursor('move', this, true);\r\n if (this.moveCallback) {\r\n this.moveCallback(mousePos, this);\r\n } else {\r\n this.movePosition(mousePos);\r\n }\r\n }\r\n\r\n if (this.isMouseOverArea(mousePos)) {\r\n this.setHovering(true);\r\n\r\n EventManager.setCursor('move', this);\r\n return this.state.mouseDown;\r\n }\r\n if (this.parent.points !== undefined) { // todo this should be children not points\r\n for (const point in this.parent.points) {\r\n if (this.parent.points.hasOwnProperty(point)) {\r\n if (this.parent.points[point].modelCorePoint.mixins.movable.state.hovering) {\r\n this.setHoveringWithChildren(true);\r\n\r\n return this.state.hoveringWithChildren\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.setHovering(false);\r\n this.setHoveringWithChildren(false);\r\n EventManager.resetCursor(this);\r\n\r\n return false;\r\n }\r\n\r\n onMouseUp(mousePos) {\r\n EventManager.releaseStealLock(self);\r\n this.state.mouseDown = false;\r\n this.state.mouseDownPosition = null;\r\n if (this.mouseUpCallback) {\r\n this.mouseUpCallback(mousePos, this);\r\n }\r\n }\r\n\r\n onMouseDown(mousePos, e) {\r\n void e;\r\n if (this.isHovering()) {\r\n //if (EventManager.getCursor().indexOf(\"move\") >= 0) {\r\n this.state.mouseDown = true;\r\n this.state.mouseDownPosition = mousePos;\r\n //}\r\n if (this.mouseDownCallback) {\r\n this.mouseDownCallback(mousePos, this);\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n isHovering () { return this.state.hovering === true; }\r\n setHoveringOnlyShape(value) { this.state.hoveringOnlyShape = value; return value; }\r\n setHovering(value) { this.state.hovering = value; return value; }\r\n setHoveringWithChildren(value) { this.state.hoveringWithChildren = value; return value; }\r\n\r\n movePosition(mousePos) {\r\n let scale = workspace.getScale();\r\n let xDiff = (this.state.mouseDownPosition.x - mousePos.x) / scale;\r\n let yDiff = (this.state.mouseDownPosition.y - mousePos.y) / scale;\r\n\r\n this.state.mouseDownPosition.x = mousePos.x;\r\n this.state.mouseDownPosition.y = mousePos.y;\r\n\r\n //todo this should be outside of the class\r\n if (this.parent.params.isResizedByPoint) {\r\n // 0 point\r\n // this.grandParent.posX -= xDiff;\r\n // this.grandParent.posY -= yDiff;\r\n\r\n //3 point\r\n // this.grandParent.posX -= xDiff;\r\n // this.grandParent.mixin.movable.width += xDiff;\r\n // this.posX -= xDiff;\r\n\r\n //4 point\r\n if (this.grandParent.width - xDiff >= this.grandParent.design.minimumWidth) {\r\n this.grandParent.width -= xDiff;\r\n this.grandParent.mixin.movable.width -= xDiff;\r\n this.posX -= xDiff;\r\n\r\n // change p7 x cord\r\n // todo grandParent setter\r\n this.grandParent.points.p7.modelCorePoint.mixins.movable.posX -= xDiff;\r\n\r\n // update textarea width\r\n // todo get from the parent class\r\n\r\n let textarea = document.querySelector('.i-text');\r\n if (textarea) {\r\n let width = textarea.offsetWidth;\r\n width -= xDiff * 4;\r\n textarea.style.width = width + 'px';\r\n }\r\n }\r\n } else if (this.parent.params.isScaledByPoint) {\r\n // 7 point (scaled)\r\n if (this.grandParent.height - (xDiff + yDiff) / 2 >= this.grandParent.design.minimumHeight\r\n && this.grandParent.width - (xDiff + yDiff) / 2 >= this.grandParent.design.minimumWidth\r\n ) {\r\n this.grandParent.width -= (xDiff + yDiff) / 2;\r\n this.grandParent.height -= (xDiff + yDiff) / 2;\r\n this.grandParent.mixin.movable.width -= (xDiff + yDiff) / 2;\r\n this.grandParent.mixin.movable.height -= (xDiff + yDiff) / 2;\r\n\r\n this.posX -= (xDiff + yDiff) / 2;\r\n this.posY -= (xDiff + yDiff) / 2;\r\n\r\n //change point 4 x cord\r\n //todo grandParent setter\r\n this.grandParent.points.p4.modelCorePoint.mixins.movable.posX -= (xDiff + yDiff) / 2;\r\n }\r\n } else {\r\n this.posX -= xDiff;\r\n this.posY -= yDiff;\r\n }\r\n }\r\n\r\n isMouseOverArea (mousePos) {\r\n let offset = this.grandParent && this.grandParent.getPosition && this.grandParent.isLastParent !== true\r\n ? this.grandParent.getPosition()\r\n : {x: 0, y: 0};\r\n\r\n let pointsArray;\r\n\r\n if (this.parent.design !== undefined && this.parent.design.layout === \"resize\") { // centered cords for points\r\n pointsArray = [\r\n [this.posX + offset.x - this.parent.design.radius / 2, this.posY + offset.y - this.parent.design.radius / 2],\r\n [this.posX + offset.x + this.parent.design.radius / 2, this.posY + offset.y - this.parent.design.radius / 2],\r\n [this.posX + offset.x + this.parent.design.radius / 2, this.posY + offset.y + this.parent.design.radius / 2],\r\n [this.posX + offset.x - this.parent.design.radius / 2, this.posY + offset.y + this.parent.design.radius / 2],\r\n ];\r\n } else if (this.parent.params && this.parent.params.isCenteredByY) { // centered cords for points\r\n pointsArray = [\r\n [this.posX + offset.x, this.posY + offset.y - this.parent.design.radius / 2],\r\n [this.posX + this.width + offset.x, this.posY + offset.y - this.parent.design.radius / 2],\r\n [this.posX + this.width + offset.x, this.posY + this.height + offset.y - this.parent.design.radius / 2],\r\n [this.posX + offset.x, this.posY + this.height + offset.y - this.parent.design.radius / 2],\r\n ];\r\n } else if (this.parent.params && this.parent.params.isCentered) { // centered cords for points\r\n pointsArray = [\r\n [this.posX + offset.x - this.width / 2, this.posY + offset.y - this.height / 2],\r\n [this.posX + offset.x + this.width / 2, this.posY + offset.y - this.height / 2],\r\n [this.posX + offset.x + this.width / 2, this.posY + offset.y + this.height / 2],\r\n [this.posX + offset.x - this.width / 2, this.posY + offset.y + this.height / 2],\r\n ];\r\n } else {\r\n pointsArray = [\r\n [this.posX + offset.x, this.posY + offset.y],\r\n [this.posX + this.width + offset.x, this.posY + offset.y],\r\n [this.posX + this.width + offset.x, this.posY + this.height + offset.y],\r\n [this.posX + offset.x, this.posY + this.height + offset.y],\r\n ];\r\n }\r\n\r\n let posOnField = getMousePositionOnField(mousePos.x, mousePos.y);\r\n\r\n return pnpolyArray(pointsArray, posOnField);\r\n }\r\n\r\n isMouseOverAreaByMousePOs (mousePos) {\r\n let scale = config.scale;\r\n let pointsArray = [\r\n [this.posX, this.posY],\r\n [this.posX + this.width * scale, this.posY],\r\n [this.posX + this.width * scale, this.posY + this.height * scale],\r\n [this.posX, this.posY + this.height * scale],\r\n ];\r\n\r\n return pnpolyArray(pointsArray, mousePos);\r\n }\r\n}\r\n","import eventManager from \"../../store/sqftEventManager\";\r\nimport config from \"../../store/sqftConfig\";\r\nimport $ from \"jquery\";\r\n\r\nexport default class Cursor {\r\n cursorName = null;\r\n addedImages = [];\r\n\r\n registerEvents = () => {\r\n eventManager.addEvent(\r\n eventManager.events.RENDER,\r\n this.renderCursor,\r\n this,\r\n eventManager.priorities.OVERALL\r\n );\r\n eventManager.addEvent(\r\n eventManager.events.MOUSE_UP,\r\n this.onMouseUp,\r\n this,\r\n eventManager.priorities.OVERALL\r\n );\r\n };\r\n\r\n onMouseUp = () => {\r\n this.checkForRestoreCursor();\r\n };\r\n\r\n setCursorImage = (imgSrc) => {\r\n const alreadyAddedImage = this.addedImages.find(image => image.dataset.id === this.clickedEdgeButton.attr(\"data-id\"));\r\n if (alreadyAddedImage) {\r\n this.cursorImage = { image: alreadyAddedImage, width: alreadyAddedImage.width, height: alreadyAddedImage.height };\r\n eventManager.setCursor('edge-select', this, true);\r\n this.registerEvents();\r\n } else {\r\n this.addCursorImage(imgSrc);\r\n }\r\n };\r\n\r\n addCursorImage = (imgSrc) => {\r\n let item = this.clickedBackSplashButton, // remember it to restore after moving canvas cursor switch\r\n bounds = 18,\r\n imgWidth = bounds,\r\n imgHeight = bounds;\r\n void item;\r\n\r\n let domImg = document.createElement('img');\r\n domImg.crossOrigin = \"Anonymous\";\r\n domImg.dataset.name = \"cursor\";\r\n\r\n let $img = $(domImg);\r\n $img.css({\r\n position: 'absolute',\r\n width: '1px',\r\n height: '1px'\r\n });\r\n // $img.attr({\r\n // 'data-id': item.attr('data-id'),\r\n // 'data-name': item.attr('data-name').trim(),\r\n // 'data-name-metric': item.attr('data-name-metric').trim(),\r\n // });\r\n let imgOnLoad = () => {\r\n let bounds = 18, ratio;\r\n if (imgWidth > imgHeight) {\r\n ratio = imgHeight / imgWidth;\r\n imgWidth = bounds;\r\n imgHeight = bounds * ratio;\r\n } else {\r\n ratio = imgWidth / imgHeight;\r\n imgHeight = bounds;\r\n imgWidth = bounds * ratio;\r\n }\r\n eventManager.setCursor('edge-select', this, true);\r\n this.cursorImage = { image: domImg, width: imgWidth, height: imgHeight };\r\n this.registerEvents(); // only after image is load!\r\n };\r\n $img.on('load', imgOnLoad);\r\n $img.appendTo($('body'));\r\n\r\n config.highlight.type = 'backsplash';\r\n //todo\r\n $img.attr('src', imgSrc);\r\n\r\n // config.highlight.id = item.attr('data-id');\r\n };\r\n\r\n checkForRestoreCursor = () => {\r\n if (this.isWaitingToRestoreCursor) {\r\n this.isWaitingToRestoreCursor = false;\r\n eventManager.removeEvent(this, eventManager.events.MOUSE_UP); //remove mouse up, it will be added in setCursorImage\r\n\r\n //todo\r\n // this.setHighlighting();\r\n this.setCursorImage();\r\n }\r\n };\r\n\r\n renderCursor = function(ctx) {\r\n if(this.cursorImage.image && ($(window).width() > 768)) {\r\n let mPos = eventManager.LastKnownMousePos;\r\n if(mPos) {\r\n ctx.drawImage(this.cursorImage.image, mPos.x + 10, mPos.y + 10, 18, 18);\r\n }\r\n }\r\n };\r\n\r\n destroy = (protect, revertBackAfterMouseUp) => {\r\n if (revertBackAfterMouseUp) {\r\n //remove render only, but wait for mouse up to set cursor again\r\n //eventManager.removeEvent(this, eventManager.events.RENDER);\r\n\r\n //full remove event\r\n this.deregisterEvents();\r\n this.cursorImage = null;\r\n this.isWaitingToRestoreCursor = true;\r\n } else {\r\n this.deregisterEvents();\r\n this.cursorImage = null\r\n }\r\n this.hide();\r\n };\r\n\r\n hide = function(e) {\r\n if(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n //Menu.hideSideBarContent(); // hide sidebar menu\r\n };\r\n\r\n deregisterEvents = () => {\r\n eventManager.resetCursor(this);\r\n eventManager.removeEvent(this);\r\n config.highlight.lines = false;\r\n }\r\n}\r\n","import clone from 'lodash/clone';\r\n\r\nimport {updateManualCalculateRows} from \"../../../actions/sqftManualCalculationFunctions\";\r\nimport {MANUAL_CALCULATION_ROW_TYPES} from \"../constants\";\r\nimport store from \"../../../store\";\r\nimport {DEFAULT_MANUAL_CALC_ROW} from \"../../../reducers/sqftManualCalculationReducer\";\r\nimport {getEdgeFeatures} from \"./shapeHelper\";\r\nimport workspace from \"../components/canvas/core/workspace\";\r\n\r\nexport const manualCalculateImport = (data) => {\r\n console.log(\"import manualcalc data\", data);\r\n let manualCalculationRows = prepareData(data);\r\n store.dispatch(updateManualCalculateRows(manualCalculationRows));\r\n}\r\n\r\nconst prepareData = (data) => {\r\n return {\r\n [MANUAL_CALCULATION_ROW_TYPES.countertopRows] : prepareCountertopRows(data.countertops),\r\n [MANUAL_CALCULATION_ROW_TYPES.backsplashRows] : prepareBacksplashRows(data.backsplashes),\r\n [MANUAL_CALCULATION_ROW_TYPES.edgeRows] : prepareEdgeRows(data.edges),\r\n }\r\n}\r\n\r\nconst prepareCountertopRows = (dataCountertops) => {\r\n let preparedData = [];\r\n dataCountertops.forEach((dataCountertop, index) => {\r\n let row = clone(DEFAULT_MANUAL_CALC_ROW);\r\n row.id = dataCountertop.id ? dataCountertop.id : index;\r\n row.length = dataCountertop.inputLength;\r\n row.width = dataCountertop.inputWidth;\r\n preparedData.push(row);\r\n })\r\n\r\n return preparedData;\r\n}\r\n\r\nconst prepareBacksplashRows = (dataBacksplashes) => {\r\n let preparedData = [];\r\n dataBacksplashes.forEach((dataBacksplash, index) => {\r\n let row = clone(DEFAULT_MANUAL_CALC_ROW);\r\n row.id = dataBacksplash.id ? dataBacksplash.id : index;\r\n row.length = dataBacksplash.inputLength;\r\n row.height = dataBacksplash.inputHeight;\r\n preparedData.push(row);\r\n })\r\n\r\n return preparedData;\r\n}\r\n\r\nconst prepareEdgeRows = (dataEdges) => {\r\n let preparedData = [];\r\n dataEdges.forEach((dataEdge, index) => {\r\n const navItems = getEdgeFeatures();\r\n const navItem = navItems.find(edge => edge.part.dbFeature.id === dataEdge.featureId);\r\n let row = clone(DEFAULT_MANUAL_CALC_ROW);\r\n row.id = dataEdge.id ? dataEdge.id : index;\r\n row.length = dataEdge.inputLength;\r\n row.height = dataEdge.inputHeight;\r\n row.selectedFeature = navItem.part;\r\n preparedData.push(row);\r\n })\r\n\r\n return preparedData;\r\n}\r\n\r\nexport const clearManualCalcData = () => {\r\n for (const manualCalculationRowType in MANUAL_CALCULATION_ROW_TYPES) {\r\n store.dispatch(updateManualCalculateRows({[manualCalculationRowType]: []}));\r\n }\r\n}\r\n\r\nexport const getGroupedShapesByColor = () => {\r\n const shapes = workspace.getShapes();\r\n return shapes.flatMap(shp => {\r\n if (shp.getColorSet) {\r\n const colorSet = shp.getColorSet();\r\n return colorSet ? colorSet : [];\r\n }\r\n return [];\r\n })\r\n}\r\n\r\nexport const getFeatureGlb = (feature) => {\r\n const threeDSrc = feature.dbFeature.thirdPartyAR3DUrls.map(src => {\r\n src = src.replace(\"s3.amazonaws.com/qc-lixil-3dfiles\", \"dv84u4f1bblk2.cloudfront.net\");\r\n return src\r\n })\r\n return threeDSrc.find(url => url.includes(\".glb\"));\r\n}\r\n","import store from \"./../../../store\";\r\nimport {onMeasureUnitChange} from \"./sqftMeasureUnitsHelper\";\r\nimport sqftConfig from \"../components/canvas/store/sqftConfig\";\r\nimport {setSqftMeasureUnit} from \"../../../actions/sqftFunctions\";\r\n\r\nexport const setMeasureUnit = (value) => {\r\n sqftConfig.measureUnit = value\r\n store.dispatch(setSqftMeasureUnit(value));\r\n onMeasureUnitChange();\r\n}\r\n","export function similarity(s1, s2) {\r\n let longer = s1;\r\n let shorter = s2;\r\n if (s1.length < s2.length) {\r\n longer = s2;\r\n shorter = s1;\r\n }\r\n const longerLength = longer.length;\r\n if (longerLength === 0) {\r\n return 1.0;\r\n }\r\n return (longerLength - editDistance(longer, shorter)) / parseFloat(longerLength);\r\n}\r\n\r\n/*\r\n * Track the highest number of matching words\r\n */\r\nexport function similarityByWords(arrayToSearch, nameSearch) {\r\n let highestMatchCount = 0;\r\n let phraseBySimilarity = null;\r\n\r\n arrayToSearch.forEach(url => {\r\n const urlName = url.toLowerCase().split('/').pop().split('.')[0];\r\n const searchWords = nameSearch.toLowerCase().split(' ');\r\n const urlWords = urlName.split('-').join(' ').split(' '); // Adjusted splitting logic for your URLs\r\n\r\n let matchCount = searchWords.reduce((count, word) => {\r\n return count + (urlWords.includes(word) ? 1 : 0);\r\n }, 0);\r\n\r\n //console.log(\"urlName\", urlName);\r\n //console.log(\"matchCount\", matchCount);\r\n if (matchCount > highestMatchCount) {\r\n phraseBySimilarity = url;\r\n highestMatchCount = matchCount;\r\n }\r\n });\r\n\r\n return phraseBySimilarity\r\n}\r\n\r\nfunction editDistance(s1, s2) {\r\n s1 = s1.toLowerCase();\r\n s2 = s2.toLowerCase();\r\n\r\n const costs = [];\r\n for (let i = 0; i <= s1.length; i++) {\r\n let lastValue = i;\r\n for (let j = 0; j <= s2.length; j++) {\r\n if (i === 0) costs[j] = j;\r\n else {\r\n if (j > 0) {\r\n let newValue = costs[j - 1];\r\n if (s1.charAt(i - 1) !== s2.charAt(j - 1)) newValue = Math.min(Math.min(newValue, lastValue), costs[j]) + 1;\r\n costs[j - 1] = lastValue;\r\n lastValue = newValue;\r\n }\r\n }\r\n }\r\n if (i > 0) costs[s2.length] = lastValue;\r\n }\r\n return costs[s2.length];\r\n}\r\n\r\nexport const isSqftPassedDataEmpty = (sqftPassedData) => {\r\n if (sqftPassedData && sqftPassedData.manualCalculate === false) {\r\n return sqftPassedData.countertops.length === 0\r\n } else if (sqftPassedData && sqftPassedData.manualCalculate === true) {\r\n return sqftPassedData.countertops.length === 0\r\n || sqftPassedData.backsplashes.length === 0\r\n || sqftPassedData.edges.length === 0\r\n }\r\n return false\r\n}\r\n\r\n// Function to group URLs by version and sort them in descending order by version number\r\nexport function groupUrlsByVersion(urls) {\r\n // Create an array to store versioned URLs\r\n const versionedUrls = [];\r\n\r\n urls.forEach(url => {\r\n // Extract the version number from the URL (if present)\r\n const versionMatch = url.match(/ar-composer(?:-v(\\d+))?/);\r\n // If no version is present, default to version 1\r\n const version = versionMatch && versionMatch[1] ? parseInt(versionMatch[1], 10) : 1;\r\n\r\n // Add the version and URL to the array as an object\r\n versionedUrls.push({ version, url });\r\n });\r\n\r\n // Sort the array by version in descending order\r\n versionedUrls.sort((a, b) => b.version - a.version);\r\n\r\n // Return an array of sorted URLs based on version\r\n return versionedUrls.map(item => item.url);\r\n}\r\n","import sqftShapeManager from \"../store/sqftShapeManager\";\r\nimport workspace from \"./workspace\";\r\nimport config from \"../store/sqftConfig\";\r\nimport $ from \"jquery\";\r\nimport sqftShape from \"./shapes/sqftShape\";\r\nimport {getMidPoint} from \"../../../helpers/sqftHelper\";\r\nimport slabWorkspace from \"./slab/slabWorkspace\";\r\n\r\nconst workspaceZoom = function () {\r\n this.zoomToFeature = (sqftFeature) => {\r\n let shape = sqftShapeManager.getShapeById(sqftFeature.sqftId);\r\n if (shape && shape.part === 'line') {\r\n const line = workspace.getLineById(shape.attachedToId);\r\n this.zoomToLine(line);\r\n\r\n return;\r\n }\r\n\r\n if (!(shape instanceof(sqftShape))) {\r\n return\r\n }\r\n\r\n this.zoomToShape(shape);\r\n }\r\n\r\n this.zoomToLine = (line) => {\r\n let shape = line.getParent();\r\n let shapePos = shape.getPosition();\r\n const scale = config.scale;\r\n const canvas = workspace.getCanvas();\r\n const sqftPoup = $(\".sqft-popupv2\");\r\n const popUpWidth = sqftPoup[0] ? sqftPoup[0].offsetWidth : 0;\r\n\r\n const midPoint = getMidPoint(line.from, line.to);\r\n\r\n let newWorkspacePos = {\r\n x: (shapePos.x + midPoint.x) * scale - (canvas.width - popUpWidth) / 2,\r\n y: (shapePos.y + midPoint.y) * scale - canvas.height / 2,\r\n }\r\n\r\n line.blink.setHighlighting(true);\r\n this.zoomTo(newWorkspacePos);\r\n }\r\n\r\n this.zoomToShape = (shape, isHalfScreen = false) => {\r\n let shapePos = shape.getPosition();\r\n let shapeMinMax = sqftShapeManager.getMinMax(shape.getLines());\r\n const scale = config.scale;\r\n const canvas = workspace.getCanvas();\r\n const sqftPoup = $(\".sqft-popupv2\");\r\n const popUpWidth = sqftPoup[0] ? sqftPoup[0].offsetWidth : 0;\r\n\r\n let newWorkspacePos = {\r\n x: shapePos.x * scale - (canvas.width - popUpWidth) / 2 + shapeMinMax.width / 2 * scale,\r\n y: shapePos.y * scale - canvas.height / 2 + shapeMinMax.height / 2 * scale,\r\n }\r\n if (isHalfScreen) {\r\n newWorkspacePos.x = newWorkspacePos.x + canvas.width / 4;\r\n }\r\n\r\n this.zoomTo(newWorkspacePos);\r\n shape.shapeRender.blink.setHighlighting(true);\r\n }\r\n\r\n this.zoomToSlabShape = (shape, isHalfScreen = false) => {\r\n let shapePos = shape.getPosition();\r\n let workspacePos = workspace.getPosition();\r\n let shapeMinMax = sqftShapeManager.getMinMax(shape.getLines());\r\n const scale = config.scale;\r\n const canvas = workspace.getCanvas();\r\n const sqftPoup = $(\".sqft-popupv2\");\r\n const popUpWidth = sqftPoup[0] ? sqftPoup[0].offsetWidth : 0;\r\n\r\n let newWorkspacePos = {\r\n x: shapePos.x * scale - (canvas.width - popUpWidth) / 2 + shapeMinMax.width / 2 * scale - workspacePos.x,\r\n y: shapePos.y * scale - canvas.height / 2 + shapeMinMax.height / 2 * scale - workspacePos.y,\r\n }\r\n if (isHalfScreen) {\r\n newWorkspacePos.x = newWorkspacePos.x + canvas.width / 4;\r\n }\r\n\r\n this.zoomToInSlab(newWorkspacePos);\r\n }\r\n\r\n this.zoomTo = (newWorkspacePos) => {\r\n let workspacePos = workspace.getPosition();\r\n let isXIncrementUp = newWorkspacePos.x >= workspacePos.x;\r\n let isYIncrementUp = newWorkspacePos.y >= workspacePos.y;\r\n\r\n let updateWorkspacePos = () => {\r\n if (Math.ceil(workspacePos.x) === Math.ceil(newWorkspacePos.x)\r\n && Math.ceil( workspacePos.y) === Math.ceil(newWorkspacePos.y)\r\n ) {\r\n clearInterval(refreshIntervalId);\r\n }\r\n\r\n let incrementX = Math.abs((Math.abs(newWorkspacePos.x) + Math.abs(workspacePos.x)) / newWorkspacePos.x * config.zoomSpeed);\r\n let incrementY = Math.abs((Math.abs(newWorkspacePos.y) + Math.abs(workspacePos.y)) / newWorkspacePos.y * config.zoomSpeed);\r\n\r\n workspacePos = {\r\n x: isXIncrementUp\r\n ? workspacePos.x >= newWorkspacePos.x ? newWorkspacePos.x : workspacePos.x + incrementX\r\n : workspacePos.x <= newWorkspacePos.x ? newWorkspacePos.x : workspacePos.x - incrementX,\r\n y: isYIncrementUp\r\n ? workspacePos.y >= newWorkspacePos.y ? newWorkspacePos.y : workspacePos.y + incrementY\r\n : workspacePos.y <= newWorkspacePos.y ? newWorkspacePos.y : workspacePos.y - incrementY,\r\n }\r\n\r\n workspace.setPosition(workspacePos);\r\n };\r\n let refreshIntervalId = setInterval(updateWorkspacePos, 1);\r\n }\r\n\r\n this.zoomToInSlab = (newWorkspacePos) => {\r\n let workspacePos = slabWorkspace.getPos();\r\n let isXIncrementUp = newWorkspacePos.x >= workspacePos.x;\r\n let isYIncrementUp = newWorkspacePos.y >= workspacePos.y;\r\n\r\n let updateWorkspacePos = () => {\r\n if (Math.ceil(workspacePos.x) === Math.ceil(newWorkspacePos.x)\r\n && Math.ceil( workspacePos.y) === Math.ceil(newWorkspacePos.y)\r\n ) {\r\n clearInterval(refreshIntervalId);\r\n }\r\n\r\n let incrementX = Math.abs((Math.abs(newWorkspacePos.x) + Math.abs(workspacePos.x)) / newWorkspacePos.x * config.zoomSpeed);\r\n let incrementY = Math.abs((Math.abs(newWorkspacePos.y) + Math.abs(workspacePos.y)) / newWorkspacePos.y * config.zoomSpeed);\r\n\r\n workspacePos = {\r\n x: isXIncrementUp\r\n ? workspacePos.x >= newWorkspacePos.x ? newWorkspacePos.x : workspacePos.x + incrementX\r\n : workspacePos.x <= newWorkspacePos.x ? newWorkspacePos.x : workspacePos.x - incrementX,\r\n y: isYIncrementUp\r\n ? workspacePos.y >= newWorkspacePos.y ? newWorkspacePos.y : workspacePos.y + incrementY\r\n : workspacePos.y <= newWorkspacePos.y ? newWorkspacePos.y : workspacePos.y - incrementY,\r\n }\r\n\r\n slabWorkspace.setPos(workspacePos);\r\n };\r\n let refreshIntervalId = setInterval(updateWorkspacePos, 1);\r\n }\r\n};\r\n\r\nexport default new workspaceZoom\r\n","import workspace from \"../../workspace\";\r\nimport {findLowestRightmostPoint} from \"../../../../../helpers/coordinatesHelper\";\r\nimport {canShapeBeAutoShifted, getLineDirection} from \"../../../../../helpers/shapeHelper\";\r\nimport sqftShapeManager from \"../../../store/sqftShapeManager\";\r\nimport {getPointDistance} from \"../../../../../helpers/sqftHelper\";\r\nimport {isHorizontalDirection, isVerticalDirection} from \"../../../helpers/lineHelper\";\r\nimport workspaceControllers from \"../../../store/workspaceControllers\";\r\nimport sqftShapeIntersectionsManager from \"../../../store/sqftShapeIntersectionsManager\";\r\nimport sqftShape from \"../sqftShape\";\r\n\r\nexport default class ShapeAutoShuffle {\r\n __shape;\r\n\r\n constructor(shape) {\r\n this.__shape = shape;\r\n }\r\n\r\n handlePlaceShapeOnTheLine = () => {\r\n //Auto Shuffle\r\n const hoveredLines = workspace.getHoveredLines([this.__shape.id]);\r\n\r\n if (hoveredLines.length > 0) {\r\n // Get relevant shapes and lines\r\n const hoveredLine = this.getHoveredLine(hoveredLines);\r\n const hoveredShape = hoveredLine.getParent();\r\n\r\n if (canShapeBeAutoShifted(this.__shape, hoveredShape)) {\r\n const newPosition = this.calculateNewPosition(hoveredLine, hoveredShape);\r\n\r\n if (newPosition) {\r\n // Move shape to new positions\r\n this.moveShapeToPositionAndRotate(newPosition, hoveredLine);\r\n\r\n //set same snapped shape group before get shapes to shift\r\n workspaceControllers.snappedShapeGroups.setSameSnappedShapesGroup(this.__shape, hoveredShape);\r\n\r\n //Get shapes to shift\r\n const shapesToShift = this.getShapesToShift(hoveredShape, newPosition);\r\n //console.log(\"shapesToShift\", shapesToShift);\r\n\r\n // Calculate new positions\r\n const [xDiff, yDiff] = this.calculatePositionDiffForOtherShapes(hoveredLine);\r\n this.moveShapesToPositions(shapesToShift, xDiff, yDiff);\r\n\r\n this.__shape.resetState();\r\n sqftShapeIntersectionsManager.updateShapesIntersections();\r\n workspaceControllers.snappedShapeGroups.updateShapesSnappedGroups(true);\r\n workspace.getHoveredLines(); // update hovered lines\r\n return true\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Will return line for the lowest and rightmost shape\r\n * @param hoveredLines\r\n */\r\n getHoveredLine = (hoveredLines) => {\r\n const hoveredLinesShapes = hoveredLines.map(line => line.getParent());\r\n const lowestRightmostPoint = findLowestRightmostPoint(hoveredLinesShapes.map(shape => shape.getPosition()));\r\n const shapeToShift = hoveredLinesShapes.find(shape => {\r\n return shape.getPosition() === lowestRightmostPoint\r\n && shape.id !== this.__shape.id // skip current moving shape\r\n });\r\n\r\n return hoveredLines.find(line => line.getParent().id === shapeToShift.id);\r\n }\r\n\r\n /**\r\n * Will return all shapes that are lower or on the same line then point\r\n * @param hoveredShape\r\n * @param point\r\n */\r\n getShapesToShift = (hoveredShape, point) => {\r\n const snappedShapeGroup = hoveredShape.shapeAbsolute.getSnappedShapeGroup();\r\n if (snappedShapeGroup !== null && snappedShapeGroup !== undefined) {\r\n const snappedShapes = workspaceControllers.snappedShapeGroups.getSnappedShapes(snappedShapeGroup);\r\n if (snappedShapes) {\r\n const snappedShapesWithoutMovingShape = snappedShapes.filter(shape =>\r\n shape.id !== this.__shape.id\r\n && (hoveredShape.partId === shape.partId\r\n || hoveredShape.partId === shape.parentPartId\r\n || (hoveredShape.parentPartId && hoveredShape.parentPartId === shape.partId) //add spacers\r\n )\r\n )\r\n return this.findShapesRightAndBelow(snappedShapesWithoutMovingShape, point);\r\n } else {\r\n return this.findShapesRightAndBelow(hoveredShape, point);\r\n }\r\n }\r\n return []\r\n }\r\n\r\n /**\r\n * TODO diagonal\r\n */\r\n calculateNewPosition(hoveredLine, shapeToShift) {\r\n const shapeToShiftMeasurementPoints = sqftShapeManager.getMinMaxShapesPointsOnWorkspace([shapeToShift]);\r\n //console.log(\"shapeToShiftMeasurementPoints\", shapeToShiftMeasurementPoints);\r\n //console.log(\"shapeToShift\", shapeToShift);\r\n\r\n const hoveredLineDirection = getLineDirection(hoveredLine.from, hoveredLine.to);\r\n\r\n let newShapePosition = null;\r\n const hoveredLinePointFromPosOnWorkspace = hoveredLine.from.getPointPosOnWorkspace();\r\n if (isVerticalDirection(hoveredLineDirection)) {\r\n // Check whether it is shape start or end\r\n if (shapeToShiftMeasurementPoints[1].x === hoveredLinePointFromPosOnWorkspace.x) {\r\n newShapePosition = shapeToShiftMeasurementPoints[1];\r\n // Shift shape only if it is first line\r\n } else if (shapeToShiftMeasurementPoints[0].x === hoveredLinePointFromPosOnWorkspace.x) {\r\n newShapePosition = shapeToShiftMeasurementPoints[0];\r\n }\r\n } else if (isHorizontalDirection(hoveredLineDirection)) {\r\n // Check whether it is shape start or end\r\n if (shapeToShiftMeasurementPoints[0].y === hoveredLinePointFromPosOnWorkspace.y) {\r\n newShapePosition = shapeToShiftMeasurementPoints[0];\r\n // Shift shape only if it is first line\r\n } else if (shapeToShiftMeasurementPoints[3].y === hoveredLinePointFromPosOnWorkspace.y) {\r\n newShapePosition = shapeToShiftMeasurementPoints[3];\r\n }\r\n }\r\n\r\n return newShapePosition\r\n }\r\n\r\n /**\r\n *\r\n */\r\n calculatePositionDiffForOtherShapes(hoveredLine) {\r\n let xDiff = 0;\r\n let yDiff = 0;\r\n const thisShapeMeasurementPoints = sqftShapeManager.getMinMaxShapesPointsOnWorkspace([this.__shape]);\r\n const hoveredLineDirection = getLineDirection(hoveredLine.from, hoveredLine.to);\r\n if (isVerticalDirection(hoveredLineDirection)) {\r\n xDiff = getPointDistance(thisShapeMeasurementPoints[0], thisShapeMeasurementPoints[1]);\r\n } else if (isHorizontalDirection(hoveredLineDirection)) {\r\n yDiff = getPointDistance(thisShapeMeasurementPoints[3], thisShapeMeasurementPoints[0]);\r\n }\r\n\r\n return [xDiff, yDiff]\r\n }\r\n\r\n /**\r\n *\r\n */\r\n moveShapesToPositions(shapesToShift, xDiff, yDiff) {\r\n shapesToShift.forEach(shape => {\r\n const shapeCurrentPos = shape.getPosition();\r\n const shapeNewPos = {x: shapeCurrentPos.x + xDiff, y: shapeCurrentPos.y + yDiff};\r\n shape.setPosition(shapeNewPos);\r\n shape.shapeAbsolute.setAbsolutePos(shapeNewPos);\r\n })\r\n }\r\n\r\n /**\r\n * Moves and rotates the shape based on the line's orientation and the current rotation angle.\r\n */\r\n moveShapeToPositionAndRotate(newPosition, hoveredLine) {\r\n // Set the new position\r\n this.__shape.setPosition(newPosition);\r\n this.__shape.shapeAbsolute.setAbsolutePos(newPosition);\r\n\r\n // Determine the required rotation based on the line direction\r\n const hoveredLineDirection = getLineDirection(hoveredLine.from, hoveredLine.to);\r\n\r\n const isHorizontal = isHorizontalDirection(hoveredLineDirection);\r\n const isVertical = isVerticalDirection(hoveredLineDirection);\r\n const hoveredShape = hoveredLine.getParent();\r\n\r\n // Rotate by -90 degrees (right) if the current angle is 90 and the line is vertical\r\n if (hoveredShape.rotatedDegrees === 270 && isHorizontal) {\r\n let desiredAngle = 270;\r\n let normalizedCurrentAngle = ((this.__shape.rotatedDegrees % 360) + 360) % 360;\r\n let angleDifference = desiredAngle - normalizedCurrentAngle;\r\n this.__shape.rotate(angleDifference, this.__shape.Direction.LEFT, false);\r\n //todo\r\n //console.log(\"shape.getPosition()\", this.__shape.getPosition());\r\n //this.moveShapesToPositions([this.__shape], -this.__shape.getWidth(), -this.__shape.getHeight());\r\n //console.log(\"shape.getPosition()\", this.__shape.getPosition());\r\n //debugger // eslint-disable-line no-debugger\r\n }\r\n // Rotate by 90 degrees if the current angle is 0 and the line is horizontal\r\n else if (this.__shape.rotatedDegrees === 0 && isHorizontal) {\r\n this.__shape.rotate(90, this.__shape.Direction.LEFT, false);\r\n }\r\n // Rotate by -90 degrees (right) if the current angle is 90 and the line is vertical\r\n else if (this.__shape.rotatedDegrees === 90 && isVertical) {\r\n this.__shape.rotate(-90, this.__shape.Direction.LEFT, false);\r\n }\r\n\r\n // Calculate the new coordinates for the upper left corner after potential rotation\r\n if (isHorizontalDirection(hoveredLineDirection)) {\r\n // fix shape if position is in the top left corner\r\n // Calculate shift is not needed if the center remains in place\r\n const cos = Math.cos(this.__shape.rotatedDegrees * Math.PI / 180);\r\n const sin = Math.sin(this.__shape.rotatedDegrees * Math.PI / 180);\r\n const originalWidth = this.__shape instanceof sqftShape ? this.__shape.getWidth() : this.__shape.getHeight();\r\n const originalHeight = this.__shape instanceof sqftShape ? this.__shape.getHeight() : this.__shape.getWidth();\r\n\r\n // Calculate the center coordinates\r\n const centerX = newPosition.x + originalWidth / 2;\r\n const centerY = newPosition.y + originalHeight / 2;\r\n\r\n // Coordinates of the upper left corner after rotation\r\n const upperLeftX = centerX - (originalWidth / 2 * cos + originalHeight / 2 * sin);\r\n const upperLeftY = centerY - (originalWidth / 2 * sin - originalHeight / 2 * cos);\r\n\r\n // Set the new coordinates for the upper left corner\r\n this.__shape.setPosition({\r\n x: upperLeftX,\r\n y: upperLeftY\r\n });\r\n this.__shape.shapeAbsolute.setAbsolutePos({\r\n x: upperLeftX,\r\n y: upperLeftY\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Function for finding all shapes that are to the right and below a point\r\n * @param {Array} shapes\r\n * @param referencePosition\r\n * @returns {Array}\r\n */\r\n findShapesRightAndBelow(shapes, referencePosition) {\r\n const resultShapes = [];\r\n\r\n shapes.forEach(shape => {\r\n const shapeMeasurementPoints = sqftShapeManager.getMinMaxShapesPointsOnWorkspace([shape]);\r\n const shapeTopLeftPoint = shapeMeasurementPoints[0];\r\n\r\n if (shapeTopLeftPoint.x >= referencePosition.x && shapeTopLeftPoint.y >= referencePosition.y) {\r\n resultShapes.push(shape);\r\n }\r\n });\r\n\r\n return resultShapes;\r\n }\r\n}\r\n","export default class ChangeValuePopup {\r\n id;\r\n min;\r\n max;\r\n confirmCallback;\r\n increaseCallback;\r\n decreaseCallback;\r\n inputChangeCallback;\r\n value;\r\n position;\r\n title;\r\n shouldHideCloseButton;\r\n\r\n constructor(id,\r\n min,\r\n max,\r\n confirmCallback,\r\n increaseCallback,\r\n decreaseCallback,\r\n inputChangeCallback,\r\n value,\r\n position,\r\n title = \"\",\r\n shouldHideCloseButton = false\r\n ) {\r\n this.id = id;\r\n this.min = min;\r\n this.max = max;\r\n this.confirmCallback = confirmCallback;\r\n this.increaseCallback = increaseCallback;\r\n this.decreaseCallback = decreaseCallback;\r\n this.inputChangeCallback = inputChangeCallback;\r\n this.value = value;\r\n this.position = position;\r\n this.title = title;\r\n this.shouldHideCloseButton = shouldHideCloseButton;\r\n }\r\n}\r\n","import cloneDeep from \"lodash/cloneDeep\";\r\n\r\nimport EventManager from \"../../../store/sqftEventManager\";\r\nimport config from \"../../../store/sqftConfig\";\r\nimport {\r\n getPointDistance,\r\n measureDistanceToInches,\r\n getFontsize, getAngleBetweenTwoPoints, getParallelPoints, getPointField\r\n} from \"../../../../../helpers/sqftHelper\";\r\nimport {pnpolyArray} from \"../../../../../lib/pnpoly\";\r\nimport store from \"../../../../../../../store\";\r\nimport {setSQFTContextMenu} from \"../../../../../../../actions/sqftMenuFunctions\";\r\nimport {iconGreenClip} from \"../../../../../assetsSQFT\";\r\nimport sqftShape from \"../sqftShape\";\r\nimport {SIDEBAR_BUTTONS_MENU} from \"../../../../../constants\";\r\nimport {COLOR} from \"../../../store/colorThemes\";\r\n\r\nexport default function(initialState = {}) {\r\n let self = this,\r\n state = {\r\n ...{\r\n labelText: '',\r\n labelTextColor: '#3e3e3e',\r\n textWidth: 0,\r\n isHovered: false,\r\n imageSrc: iconGreenClip,\r\n lineOffset: 13,\r\n flagMargin: 2,\r\n partId: undefined,\r\n isTitle: false,\r\n midPoint: {\r\n x: 0,\r\n y: 0\r\n }\r\n },\r\n ...initialState\r\n },\r\n line = null,\r\n shape = null;\r\n\r\n const svgCache = {};\r\n\r\n function setLine(value) { line = value; }\r\n function setShape(value) { shape = value; }\r\n function getMidPoint(from, to) {\r\n return {\r\n x: from.x + (to.x - from.x)/2,\r\n y: from.y + (to.y - from.y)/2\r\n };\r\n }\r\n function onMouseMove(mousePos, e) {\r\n void e;\r\n const {isHovered, orientation} = isMouseOverText(mousePos);\r\n state.isHovered = isHovered;\r\n if (state.isHovered) {\r\n if (EventManager.getCursor().indexOf(\"move\") >= 0) {\r\n EventManager.stealCursor(true);\r\n EventManager.setCursor((orientation === \"horizontal\") ? \"text\" : \"text-vertical\", self);\r\n }\r\n } else {\r\n EventManager.resetCursor(self);\r\n }\r\n }\r\n function onMouseDown(mousePos, e) {\r\n if (state.isHovered) {\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n\r\n //Delete label\r\n if (activeButton !== SIDEBAR_BUTTONS_MENU.delete) {\r\n void e;\r\n window.lineInputFocused = false;\r\n EventManager.stealCursor();\r\n EventManager.resetCursor(self);\r\n\r\n store.dispatch(setSQFTContextMenu({isOpened: true, activeMenu: \"labels\", pos: mousePos, parent: shape}));\r\n }\r\n\r\n return true\r\n }\r\n }\r\n function isMouseOverText(mousePos) {\r\n const lineDirection = line.getLineDirection();\r\n let pointsArray = [];\r\n let lineOffset = [];\r\n if (lineDirection.orientation === \"horizontal\") {\r\n lineOffset = lineDirection.newDirection === \"west\" ? -state.lineOffset : state.lineOffset;\r\n pointsArray = [\r\n [state.midPoint.x - state.textWidth/2 - 10, state.midPoint.y - 15 + lineOffset],\r\n [state.midPoint.x + state.textWidth/2 + 10, state.midPoint.y - 15 + lineOffset],\r\n [state.midPoint.x + state.textWidth/2 + 10, state.midPoint.y + 10 + lineOffset],\r\n [state.midPoint.x - state.textWidth/2 - 10, state.midPoint.y + 10 + lineOffset],\r\n ]\r\n // pointsArray.forEach(p => {\r\n // var tempPoint = new point(p[0], p[1]);\r\n // tempPoint.init(line);\r\n // tempPoint.layout = 'white-circle';\r\n // debugger\r\n // })\r\n } else if (lineDirection.orientation === \"vertical\") {\r\n if (lineDirection.newDirection === \"south\") {\r\n pointsArray = [\r\n [state.midPoint.x + 40, state.midPoint.y - state.textWidth/2 - 10],\r\n [state.midPoint.x + 15, state.midPoint.y - state.textWidth/2 - 10],\r\n [state.midPoint.x + 15, state.midPoint.y + state.textWidth/2 - 5],\r\n [state.midPoint.x + 40, state.midPoint.y + state.textWidth/2 - 5],\r\n ];\r\n } else if (lineDirection.newDirection === \"north\") {\r\n pointsArray = [\r\n [state.midPoint.x - 40, state.midPoint.y - state.textWidth/2 - 10],\r\n [state.midPoint.x - 15, state.midPoint.y - state.textWidth/2 - 10],\r\n [state.midPoint.x - 15, state.midPoint.y + state.textWidth/2 - 5],\r\n [state.midPoint.x - 40, state.midPoint.y + state.textWidth/2 - 5],\r\n ];\r\n }\r\n } else {\r\n // todo rotation hover\r\n }\r\n return {isHovered: pnpolyArray(pointsArray, mousePos), orientation: lineDirection.orientation};\r\n }\r\n\r\n this.getState = () => { return state }\r\n this.isHovered = () => { return state.isHovered }\r\n this.destroy = function(protect) {\r\n if(!protect) {\r\n EventManager.removeEvent(self);\r\n }\r\n };\r\n this.getParent = () => {\r\n return line\r\n }\r\n this.setLabelText = (value) => {\r\n state.labelText = value;\r\n };\r\n this.setPartId = (value) => {\r\n state.partId = value;\r\n };\r\n this.import = function(data) {\r\n state = data.state;\r\n };\r\n this.export = function() {\r\n return { state: cloneDeep(state) }\r\n };\r\n this.init = function(line, text, partId) {\r\n setLine(line);\r\n //todo sqft-react\r\n setShape(line.getParent());\r\n void shape;\r\n\r\n this.setPartId(partId);\r\n this.setLabelText(text);\r\n this.initEvents(!state.isTitle);\r\n };\r\n this.initEvents = (editable = true) => {\r\n EventManager.addEvent(\r\n EventManager.events.RENDER,\r\n this.render,\r\n this,\r\n EventManager.priorities.SHAPE_LABEL\r\n );\r\n if (editable) {\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_MOVE,\r\n onMouseMove,\r\n this,\r\n EventManager.priorities.SHAPE_LABEL\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_DOWN,\r\n onMouseDown,\r\n this,\r\n EventManager.priorities.SHAPE_LABEL\r\n );\r\n }\r\n }\r\n this.deregisterEvents = () => {\r\n EventManager.removeEvent(this);\r\n };\r\n this.reInitEvents = () => {\r\n this.initEvents(!state.isTitle);\r\n };\r\n this.deregisterPartEvents = () => {\r\n EventManager.removeEvent(this);\r\n };\r\n this.reInitPartEvents = () => {\r\n this.initEvents(!state.isTitle);\r\n };\r\n this.getLineLength = function () {\r\n var distance = getPointDistance(line.from, line.to);\r\n return measureDistanceToInches(distance);\r\n };\r\n this.isIE = function() {\r\n return(/Trident/i).test(window.navigator.appVersion);\r\n };\r\n this.getSrc = function(img) {\r\n if(img) {\r\n let src = img.getAttribute('src');\r\n if(src) {\r\n return src;\r\n }\r\n src = img.getAttribute(\"style\");\r\n if(src) {\r\n return src.replace(/background-image: url\\(\"\\/api\\/SqFtCalc\\/GetImage\\?url=/g, \"\").replace(/\"\\);/g, \"\");\r\n }\r\n }\r\n return \"\";\r\n };\r\n\r\n this.renderImage = (ctx, x, y) => {\r\n if (state.isTitle) return;\r\n\r\n let scale = config.scale;\r\n let size = { width: 5, height: 5 };\r\n let posX = x - size.width * scale;\r\n let posY = y - size.height * scale;\r\n\r\n if (svgCache['iconGreenClip']) {\r\n let img = svgCache['iconGreenClip'];\r\n ctx.drawImage(img, posX, posY, size.width * scale, size.height * scale);\r\n } else {\r\n let img = new Image();\r\n let svg = document.getElementById('icon-label-flag');\r\n\r\n if (svg) {\r\n let xml = new XMLSerializer().serializeToString(svg);\r\n let svg64 = btoa(xml);\r\n\r\n img.src = 'data:image/svg+xml;base64,' + svg64;\r\n\r\n img.onload = () => {\r\n svgCache['iconGreenClip'] = img;\r\n ctx.drawImage(img, posX, posY, size.width * scale, size.height * scale);\r\n };\r\n\r\n img.onerror = () => {\r\n console.warn(\"Failed to load SVG image, using fallback.\");\r\n // ctx.fillStyle = '#FF0000'; // Фолбек в виде красного квадрата\r\n // ctx.fillRect(x - 10, y - 10, 20, 20);\r\n };\r\n }\r\n }\r\n };\r\n\r\n this.render = function(ctx) {\r\n let scale = config.scale,\r\n fontSize = getFontsize(),\r\n font = (fontSize).toString() + \"px \" + config.activeFontBold,\r\n lineDirection = line.getLineDirection(),\r\n offset = line.getOffset(),\r\n dString = state.labelText,\r\n midPoint = getMidPoint(line.from, line.to),\r\n mText,\r\n lineOffset = 0,\r\n xOffset = 0,\r\n marginTo = 0;\r\n\r\n ctx.beginPath();\r\n\r\n ctx.font = font;\r\n mText = ctx.measureText(dString);\r\n state.textWidth = Math.round(mText.width * 100) / 100;\r\n midPoint.y = midPoint.y * scale + offset.y;\r\n midPoint.x = midPoint.x * scale + offset.x;\r\n state.midPoint.x = midPoint.x;\r\n state.midPoint.y = midPoint.y;\r\n ctx.textAlign = \"center\";\r\n midPoint.y += fontSize / 2;\r\n\r\n ctx.beginPath();\r\n ctx.fillStyle = state.isHovered ? COLOR.red : state.labelTextColor;\r\n\r\n let moveFrom, moveTo;\r\n\r\n switch (lineDirection.orientation) {\r\n case \"horizontal\": {\r\n lineOffset = lineDirection.newDirection === \"west\" ? -state.lineOffset : state.lineOffset;\r\n ctx.wrapText(dString, midPoint.x, midPoint.y + lineOffset, mText, fontSize);\r\n this.renderImage(ctx,midPoint.x - mText.width / 2 - state.flagMargin, midPoint.y + lineOffset);\r\n break;\r\n }\r\n case \"vertical\": {\r\n if (lineDirection.newDirection === \"south\") {\r\n marginTo = (lineDirection.cornerMargins.fromBottom) ? marginTo + 9 : marginTo;\r\n } else if (lineDirection.newDirection === \"north\") {\r\n marginTo = (lineDirection.cornerMargins.fromTop) ? marginTo + 9 : marginTo;\r\n }\r\n ctx.save();\r\n ctx.translate(\r\n lineDirection.newDirection === \"south\" ? midPoint.x + xOffset : midPoint.x + xOffset,\r\n lineDirection.newDirection === \"south\" ? midPoint.y - 5 : midPoint.y - 10\r\n );\r\n ctx.rotate(lineDirection.newDirection === \"south\" ? Math.PI / 2 : -Math.PI / 2);\r\n lineOffset = lineDirection.newDirection === \"south\" ? state.lineOffset : state.lineOffset ;\r\n\r\n ctx.wrapText(dString, marginTo,lineOffset + fontSize, mText, fontSize);\r\n this.renderImage(ctx,marginTo - mText.width / 2, lineOffset + fontSize);\r\n break;\r\n }\r\n //todo\r\n case \"NORTHWEST\":\r\n case \"NORTHEAST\":\r\n case \"SOUTHWEST\":\r\n case \"SOUTHEAST\": {\r\n ctx.save();\r\n const mText = ctx.measureText(dString);\r\n const angle = getAngleBetweenTwoPoints(line.from, line.to);\r\n [moveFrom, moveTo] = getParallelPoints(line.from, line.to, 6);\r\n const midPoint = getMidPoint(moveFrom, moveTo);\r\n //todo not sure why shape here becomes null after clicking on eyeball\r\n if (!(shape instanceof(sqftShape))) {\r\n shape = line.getParent();\r\n }\r\n const midPointPointField = getPointField(midPoint.x, midPoint.y, shape);\r\n ctx.save();\r\n ctx.translate(\r\n midPointPointField.x,\r\n midPointPointField.y,\r\n );\r\n ctx.rotate(angle * (Math.PI / 180));\r\n\r\n ctx.wrapText(dString, 0, 0, mText, fontSize);\r\n this.renderImage(ctx,0 - mText.width / 2, 0);\r\n\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n\r\n ctx.restore();\r\n };\r\n}\r\n","import * as uuid from \"uuid\";\r\n\r\nimport EventManager from \"../../store/sqftEventManager\";\r\nimport {FREE_DRAW_TYPE, SIDEBAR_BUTTONS_MENU, SIDEBAR_NAVIGATION_CABINET_BUTTONS} from \"../../../../constants\";\r\nimport RenderFreeDraw from \"../../helpers/renderFreeDraw\";\r\nimport {COLORS} from \"../../../../../../colorThemes\";\r\nimport NumberText from \"../workspace/text/numberText\";\r\nimport workspace from \"../workspace\";\r\nimport {getPointField} from \"../../../../helpers/sqftHelper\";\r\nimport eventManager from \"../../store/sqftEventManager\";\r\nimport store from \"../../../../../../store\";\r\nimport {getWallLockedPoint} from \"../../helpers/wallHelper\";\r\nimport {isPointInsidePolygon} from \"../../../../lib/pnpoly\";\r\nimport {getBordersOfTwoPoints, getLineBordersArrayV2} from \"../../helpers/lineHelper\";\r\nimport workspaceControllers from \"../../store/workspaceControllers\";\r\n\r\nexport default class Wall {\r\n dimensionToMouse = null;\r\n id;\r\n state = {\r\n addedPoints: [],\r\n dimensions: [],\r\n drawLineToMouse: false,\r\n lineThickness: 10,\r\n lineColor: COLORS.gray,\r\n outlineColor: COLORS.gray4,\r\n minLineLength: 15,\r\n drawType: FREE_DRAW_TYPE.wall,\r\n isHovering: false,\r\n mouseDown: false,\r\n mouseDownPosition: null,\r\n lockedAngleStep: 45,\r\n };\r\n editState = {\r\n editPoint: null,\r\n isInEditState: false,\r\n }\r\n\r\n getPoints() { return this.state.addedPoints }\r\n setEditMode(value) { this.editState.isInEditState = value}\r\n setEditPoint(point) { this.editState.editPoint = point}\r\n getOffset() { return workspace.getOffset() }\r\n getWallThickness() { return workspace.getOffset() }\r\n\r\n constructor(points, centerPoint, lockedAngleStep = 45) {\r\n this.id = uuid.v4();\r\n this.state.addedPoints = points\r\n this.state.centerPoint = centerPoint\r\n this.state.lockedAngleStep = lockedAngleStep\r\n this.initEvents();\r\n }\r\n\r\n initEvents() {\r\n EventManager.addEvent(\r\n EventManager.events.RENDER,\r\n this.render.bind(this),\r\n this,\r\n EventManager.priorities.WALL\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_DOWN,\r\n this.onMouseDown.bind(this),\r\n this,\r\n EventManager.priorities.OVERALL\r\n );\r\n EventManager.addEvent(\r\n EventManager.events.MOUSE_MOVE,\r\n this.onMouseMove.bind(this),\r\n this,\r\n EventManager.priorities.SEGMENT\r\n );\r\n }\r\n\r\n export() {\r\n return {\r\n \"addedPoints\": this.state.addedPoints.map(point => point.exportData ? point.exportData() : null),\r\n \"centerPoint\": this.state.centerPoint,\r\n \"lockedAngleStep\": this.state.lockedAngleStep,\r\n }\r\n }\r\n\r\n destroy() {\r\n this.deregisterEvents();\r\n this.destroyPoints();\r\n }\r\n\r\n destroyPoints() {\r\n for (const addedPoints of this.state.addedPoints) {\r\n addedPoints.destroy()\r\n }\r\n }\r\n\r\n deregisterEvents() {\r\n eventManager.removeEvent(this);\r\n }\r\n\r\n editWall(point) {\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n if (activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.wall) {\r\n this.setEditMode(true);\r\n this.setEditPoint(point);\r\n }\r\n }\r\n\r\n disableEditingWall() {\r\n this.setEditMode(false);\r\n this.setEditPoint(null);\r\n }\r\n\r\n createDimensionToMouse() {\r\n this.dimensionToMouse = new NumberText(\r\n 0,\r\n {x: 0, y: 0},\r\n {shouldRenderFrameBorder: true, isLength: true},\r\n workspace,\r\n Function(),\r\n true\r\n );\r\n }\r\n\r\n onMouseDown(mousePos) {\r\n if (this.editState.editPoint && this.editState.isInEditState) {\r\n this.addPoint(mousePos);\r\n this.disableEditingWall();\r\n return true\r\n }\r\n if (this.state.isHovering) {\r\n const reduxState = store.getState();\r\n if (reduxState.sqftMenuState.activeButton === SIDEBAR_BUTTONS_MENU.delete) {\r\n workspaceControllers.walls.destroyResource(this)\r\n }\r\n }\r\n }\r\n\r\n onMouseMove(mousePos) {\r\n this.state.isHovering = this.isMouseOverWall(mousePos) || this.state.mouseDown;\r\n }\r\n\r\n isMouseOverWall(mousePos) {\r\n for (const addedPointKey in this.state.addedPoints) {\r\n const nextPoint = this.state.addedPoints[+addedPointKey +1];\r\n if (nextPoint) {\r\n const currentPoint = this.state.addedPoints[+addedPointKey];\r\n const lineFieldArray = getLineBordersArrayV2(currentPoint, nextPoint, this.state.lineThickness + this.state.lineThickness * 0.1);\r\n if (isPointInsidePolygon(mousePos, lineFieldArray)) {\r\n return true\r\n }\r\n }\r\n }\r\n return false\r\n }\r\n\r\n addPoint(mousePos) {\r\n const wallLockedPoint = getWallLockedPoint(this.editState.editPoint, mousePos, this.state.lockedAngleStep);\r\n if (this.state.addedPoints.length > 0) {\r\n //todo\r\n //this.addLineDimensions(point, mousePos);\r\n }\r\n if (this.editState.editPoint.id === this.state.addedPoints[0].id) {\r\n this.state.addedPoints.unshift(wallLockedPoint);\r\n } else {\r\n this.state.addedPoints.push(wallLockedPoint);\r\n }\r\n }\r\n\r\n getLines() {\r\n let lines = [];\r\n const points = this.getPoints();\r\n for (const pointIndex in points) {\r\n const len = points.length;\r\n const current = points[+pointIndex];\r\n //const previous = points[(pointIndex + len - 1) % len];\r\n const next = points[(pointIndex + 1) % len];\r\n let line = {\r\n from: current,\r\n to: next,\r\n getOffset: () => {\r\n return this.getOffset()\r\n }\r\n }\r\n lines.push(line);\r\n }\r\n\r\n return lines\r\n }\r\n\r\n getBordersOfWallLines() {\r\n let virtualLines = [];\r\n const points = this.getPoints();\r\n for (const addedPointKey in points) {\r\n const nextPoint = points[+addedPointKey +1];\r\n if (nextPoint) {\r\n const currentPoint = points[+addedPointKey];\r\n virtualLines.push(...getBordersOfTwoPoints(currentPoint, nextPoint, this.state.lineThickness / 2));\r\n }\r\n }\r\n return virtualLines\r\n }\r\n\r\n render(ctx) {\r\n ctx.save();\r\n this.renderLines(ctx);\r\n ctx.restore();\r\n //this.updateDimensionToMouse(ctx);\r\n if (this.editState.editPoint && this.editState.isInEditState) {\r\n RenderFreeDraw.drawLineFromPointV2ToMouse(ctx, this.editState.editPoint, true);\r\n }\r\n }\r\n\r\n renderLines(ctx) {\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n ctx.lineWidth = this.state.lineThickness + 2;\r\n ctx.strokeStyle = this.state.outlineColor;\r\n RenderFreeDraw.renderLinesBetweenPoints(ctx, this.state);\r\n\r\n ctx.lineWidth = this.state.lineThickness;\r\n ctx.strokeStyle = this.state.isHovering && activeButton === SIDEBAR_BUTTONS_MENU.delete\r\n ? COLORS.red\r\n : this.state.lineColor;\r\n RenderFreeDraw.renderLinesBetweenPoints(ctx, this.state);\r\n }\r\n\r\n renderDimensionToMouseFromPoint = (ctx, point) => {\r\n let posX = point.modelCorePoint.mixins.movable.posX;\r\n let posY = point.modelCorePoint.mixins.movable.posY;\r\n let pointField = getPointField(posX, posY);\r\n ctx.moveTo(pointField.x, pointField.y);\r\n\r\n const mPos = EventManager.LastKnownMousePos;\r\n ctx.lineTo(mPos.x, mPos.y);\r\n ctx.stroke();\r\n ctx.closePath();\r\n }\r\n}\r\n","import EventManager from \"../store/sqftEventManager\";\r\nimport store from \"../../../../../store\";\r\nimport PointV2, {CORE_POINT_LAYOUTS} from \"../core/shapes/pointV2\";\r\nimport workspace from \"../core/workspace\";\r\nimport sqftConfig from \"../store/sqftConfig\";\r\nimport {getLockPointPos} from \"./freeDrawHelper\";\r\nimport {getMousePositionOnField} from \"../../../helpers/sqftHelper\";\r\nimport workspaceControllers from \"../store/workspaceControllers\";\r\n\r\n/**\r\n * @param pos {{x: int, y: int}}\r\n * @return {PointV2}\r\n */\r\nexport const getWallPoint = (pos) => {\r\n let pointState = {\r\n priority: EventManager.priorities.BOX_POINT,\r\n movable: true,\r\n isCentered: true,\r\n isResizedByPoint: false,\r\n isScaledByPoint: false,\r\n isVisibleOnHover: true,\r\n moveCallback: (mousePos, movablePoint, xDiff, yDiff) => {\r\n void yDiff;\r\n const reduxState = store.getState();\r\n const isWallsUpMode = reduxState.sqftMenuState.isWallsUpMode;\r\n if (!isWallsUpMode) {\r\n movablePoint.movePosition(mousePos);\r\n }\r\n },\r\n mouseUpCallback: (mousePos, movablePoint) => {\r\n void mousePos;\r\n void movablePoint;\r\n //console.log('mousePos', mousePos);\r\n //console.log('movablePoint', movablePoint);\r\n },\r\n mouseDownCallback: (mousePos, movablePoint) => {\r\n //console.log('mouseDownCallback mousePos', mousePos);\r\n //console.log('mouseDownCallback movablePoint', movablePoint);\r\n void mousePos; void movablePoint;\r\n const reduxState = store.getState();\r\n const isWallsUpMode = reduxState.sqftMenuState.isWallsUpMode;\r\n if (isWallsUpMode) {\r\n const wall = workspaceControllers.walls.getWallByPoint(movablePoint.parent);\r\n wall.editWall(movablePoint.parent);\r\n return true\r\n }\r\n }\r\n };\r\n let pointDesign = {\r\n radius: 10,\r\n lineWidth: 1,\r\n layout: CORE_POINT_LAYOUTS.black\r\n };\r\n\r\n let wPos = workspace.getPosition();\r\n let scale = sqftConfig.scale;\r\n let offset = {\r\n x: (pos.x + wPos.x) / scale,\r\n y: (pos.y + wPos.y) / scale\r\n };\r\n\r\n return new PointV2(offset.x, offset.y, workspace, pointState, pointDesign);\r\n}\r\n\r\n/**\r\n * @param existingWallPoint {PointV2}\r\n * @param mousePos {{x: int, y: int}}\r\n * @param lockedAngleStep\r\n * @return {PointV2}\r\n */\r\nexport const getWallLockedPoint = (existingWallPoint, mousePos, lockedAngleStep = 45) => {\r\n const reduxState = store.getState();\r\n const isWallsLockMode = reduxState.sqftMenuState.isWallsLockMode;\r\n const newWallPoint = getWallPoint(mousePos);\r\n if (isWallsLockMode) {\r\n const lockedPosition = getLockPointPos(existingWallPoint, lockedAngleStep);\r\n const lockedPositionOnField = getMousePositionOnField(lockedPosition.x, lockedPosition.y);\r\n newWallPoint.setPosition(lockedPositionOnField);\r\n }\r\n\r\n return newWallPoint\r\n}\r\n","import workspace from \"../../workspace\";\r\nimport COLOR_THEMES, {COLOR} from \"../../../store/colorThemes\";\r\nimport sqftConfig from \"../../../store/sqftConfig\";\r\nimport {\r\n CABINET_FILTER_NAMES,\r\n RENDER_TEMPLATES,\r\n SIDEBAR_BUTTONS_MENU, SIDEBAR_NAVIGATION_BUTTONS,\r\n SIDEBAR_NAVIGATION_CABINET_BUTTONS, SQFT_FEATURES\r\n} from \"../../../../../constants\";\r\nimport config from \"../../../store/sqftConfig\";\r\nimport sqftShapeManager from \"../../../store/sqftShapeManager\";\r\nimport RenderParts from \"../../../helpers/renderParts\";\r\nimport RenderFigures from \"../../../helpers/renderFigures\";\r\nimport store from \"../../../../../../../store\";\r\nimport RenderCabinets from \"../../../helpers/renderCabinets\";\r\nimport {COLORS} from \"../../../../../../../colorThemes\";\r\nimport Config from \"../../../../../../../config\";\r\nimport {\r\n canShapeBeAutoShifted,\r\n getIsShapePlacedOnTheFloor,\r\n getIsShapePlacedOnTheWall\r\n} from \"../../../../../helpers/shapeHelper\";\r\nimport {getPointField} from \"../../../../../helpers/sqftHelper\";\r\nimport {getQtCatName} from \"../../../../../helpers/sqftQuotesHelper\";\r\nimport * as uuid from \"uuid\";\r\nimport workspaceControllers from \"../../../store/workspaceControllers\";\r\nimport {getCurrentLayout} from \"../../../../../../appLayout\";\r\nimport {HingesModel} from \"../../../store/models/HingesModel\";\r\nimport {getHandleFeatureGroupFromShape} from \"../../../../../helpers/sqftHelperUi\";\r\n\r\nclass ShapeCabinet {\r\n __shape;\r\n __crownMoldingFeatureId = null;\r\n //__attachedFeatures = new Map();\r\n __crownMoldingParams = {\r\n distance: 10\r\n }\r\n\r\n constructor(shape) {\r\n this.__shape = shape;\r\n }\r\n\r\n import = (data) => {\r\n void data;\r\n // if (data.attachedFeatures) {\r\n // const parsedFeatures = JSON.parse(data.attachedFeatures);\r\n // this.__attachedFeatures = new Map(Object.entries(parsedFeatures));\r\n // }\r\n }\r\n\r\n export = () => {\r\n return {\r\n width: this.getShapeWidth(),\r\n height: this.getShapeHeight(),\r\n depth: this.getShapeDepth(),\r\n //attachedFeatures: JSON.stringify(Object.fromEntries(this.__attachedFeatures)),\r\n }\r\n }\r\n\r\n /**\r\n * create hinges and handles\r\n */\r\n generateAttachedFeatures = () => {\r\n const { filterGroups } = store.getState().filterState;\r\n const feature = this.__shape.getFeature();\r\n if (feature) {\r\n for (const filterName of Object.keys(CABINET_FILTER_NAMES)) {\r\n const filterKey = CABINET_FILTER_NAMES[filterName];\r\n let quantity = 0;\r\n if (feature) {\r\n quantity = +feature.getFeatureSavedFilterName(filterGroups, filterKey, filterKey);\r\n }\r\n if (quantity) {\r\n //let features = [];\r\n if (CABINET_FILTER_NAMES[filterName] === CABINET_FILTER_NAMES.hinges) {\r\n const layout = getCurrentLayout();\r\n const hingesFeatureGroup = layout.getFeatureGroupByPartId(SQFT_FEATURES.hinge);\r\n if (hingesFeatureGroup) {\r\n const handlesFeature = hingesFeatureGroup.activeFeature ? hingesFeatureGroup.activeFeature : hingesFeatureGroup.features[0]\r\n workspaceControllers.hinge.addResource(new HingesModel(\r\n this.__shape.id,\r\n handlesFeature.dbFeature.id,\r\n getQtCatName(),\r\n uuid.v4(),\r\n hingesFeatureGroup.partId,\r\n quantity)\r\n );\r\n }\r\n }\r\n\r\n //this.__attachedFeatures.set(filterName, {features, quantity})\r\n }\r\n\r\n if (CABINET_FILTER_NAMES[filterName] === CABINET_FILTER_NAMES.knobs) {\r\n const handlesFeatureGroup = getHandleFeatureGroupFromShape(this.__shape);\r\n if (handlesFeatureGroup) {\r\n const reduxState = store.getState();\r\n const selectedHandle = reduxState.sqftResourceState.selectedHandle;\r\n let handlesFeature;\r\n if (selectedHandle) {\r\n handlesFeature = handlesFeatureGroup.features.find(feature => {\r\n return feature.getFeatureName() === selectedHandle.getFeatureName()\r\n })\r\n } else {\r\n handlesFeature = handlesFeatureGroup.features.find(feature => {\r\n return feature.dbFeature\r\n && Array.isArray(feature.dbFeature.thirdPartyAR3DUrls)\r\n && feature.dbFeature.thirdPartyAR3DUrls.length > 0\r\n })\r\n }\r\n\r\n if (handlesFeature) {\r\n workspaceControllers.handles.addHandleToTheShape(this.__shape, handlesFeature);\r\n }\r\n\r\n }\r\n // const newObject = {\r\n // id: uuidv4(),\r\n // createdAt: new Date(),\r\n // };\r\n // features.push(newObject);\r\n }\r\n }\r\n }\r\n }\r\n\r\n deleteAttachedFeatures = () => {\r\n workspaceControllers.hinge.deleteAllResourcesForTheShape(this.__shape.id);\r\n workspaceControllers.handles.deleteAllResourcesForTheShape(this.__shape.id);\r\n }\r\n\r\n getShapeWidth = () => {\r\n return this.__shape.getWidth(true);\r\n }\r\n\r\n getShapeDepth = () => {\r\n return this.__shape.getDepth(true);\r\n }\r\n\r\n getShapeHeight = () => {\r\n return this.__shape.getHeight(true);\r\n }\r\n\r\n addCrownMolding = () => {\r\n const state = store.getState();\r\n const selectedFeature = state.sqftResourceState.selectedFeature;\r\n this.__crownMoldingFeatureId = selectedFeature ? selectedFeature.part.dbFeature.id : null\r\n console.log(\"this.__crownMoldingFeatureId\", this.__crownMoldingFeatureId);\r\n }\r\n\r\n render = (ctx, staticOffset = null, template= RENDER_TEMPLATES.default) => {\r\n if (workspace && workspace.getState().loading) return;\r\n\r\n const fillTemplate = this.getFillColor(ctx);\r\n this.renderBorders(ctx, staticOffset, template, fillTemplate);\r\n this.renderDimensionsInsideShape(ctx);\r\n RenderParts.drawShapeCrownMoldings(ctx, staticOffset, this.__shape);\r\n RenderParts.drawShapeEndCap(ctx, staticOffset, this.__shape);\r\n this.renderHandles(ctx);\r\n //if (!this.__shape.shapeAbsolute.getAbsolutePosition() && !this.__shape.shapeAbsolute.getSnappedWithShape()) {\r\n if (this.__shape.shapeAbsolute.getSnappedShapeGroup() === null) {\r\n //this.renderCrownMolding(ctx);\r\n this.renderDimensionsOutsideShape(ctx);\r\n }\r\n if (Config.isDevMode()) {\r\n this.renderTestShapeLines(ctx, staticOffset, template);\r\n this.renderShapeSnappedGroup(ctx, staticOffset, template);\r\n }\r\n }\r\n\r\n renderMeasurementArrows = (ctx) => {\r\n const points = this.__shape.getPointsPointField();\r\n RenderFigures.drawArrowsAroundPoints(ctx, points, 10);\r\n }\r\n\r\n renderTestShapeLines = (ctx) => {\r\n if (this.__shape.testShapeLines) {\r\n ctx.save();\r\n ctx.beginPath();\r\n ctx.lineWidth = 2;\r\n ctx.strokeStyle = COLORS.gray;\r\n for (const testShapeLine of this.__shape.testShapeLines) {\r\n ctx.moveTo(testShapeLine.from.x, testShapeLine.from.y);\r\n ctx.lineTo(testShapeLine.to.x, testShapeLine.to.y);\r\n }\r\n ctx.stroke();\r\n ctx.closePath();\r\n ctx.restore();\r\n }\r\n }\r\n\r\n renderShapeSnappedGroup = (ctx) => {\r\n // render shape group\r\n let shapeCenter = this.__shape.getCenter();\r\n const pos = getPointField(shapeCenter.x, shapeCenter.y, this.__shape);\r\n const renderText = this.__shape.shapeAbsolute.getSnappedShapeGroup() + \".gr\";\r\n const mText = ctx.measureText(renderText);\r\n ctx.wrapText(renderText, pos.x, pos.y, mText, 22);\r\n }\r\n\r\n renderMeasurementLength = (ctx) => {\r\n const points = this.__shape.getPointsPointField();\r\n RenderParts.drawMeasurementAroundPoints(ctx, points);\r\n }\r\n\r\n renderDimensionsOutsideShape = (ctx) => {\r\n ctx.save();\r\n ctx.beginPath();\r\n this.renderMeasurementArrows(ctx);\r\n this.renderMeasurementLength(ctx);\r\n ctx.closePath();\r\n ctx.restore();\r\n }\r\n\r\n renderDimensionsInsideShape = (ctx) => {\r\n const shapeWidth = this.getShapeWidth();\r\n const shapeHeight = this.getShapeHeight();\r\n const textWidth = 'W: ' + shapeWidth;\r\n const textHeight = 'H: ' + shapeHeight;\r\n const fontSize = config.workspace.fontSizeSmallest;// * config.scale / config.defaultScale;\r\n const font = fontSize + \"px \" + config.activeFontRegular;\r\n const mTextWidth = ctx.measureText(textWidth);\r\n const mTextHeight = ctx.measureText(textWidth);\r\n const {minX, maxX, minY, maxY} = sqftShapeManager.getMinMaxShapePoints(this.__shape,true, true);\r\n void minY;\r\n //middle of the bottom line\r\n let pos = {\r\n x: minX + (maxX - minX) / 2 - mTextWidth.width / 2,\r\n y: maxY - fontSize\r\n };\r\n\r\n // center position\r\n // let shapeCenter = ShapeHelper.getCenterPoint(points);\r\n // let shapeCenterOnField = getPointField(shapeCenter.x, shapeCenter.y, this.__shape);\r\n // let pos = {\r\n // x: shapeCenterOnField.x - mTextWidth.width / 2,\r\n // y: shapeCenterOnField.y\r\n // };\r\n\r\n ctx.textAlign = \"start\";\r\n ctx.fillStyle = COLOR_THEMES[sqftConfig.activeTheme].primary_hover;\r\n\r\n const lineHeight = config.workspace.fontSizeSmallest;\r\n ctx.wrapText(textWidth, pos.x, pos.y - (fontSize / 2), mTextWidth, lineHeight, font);\r\n ctx.wrapText(textHeight, pos.x + 2, pos.y + (fontSize / 2), mTextHeight, lineHeight, font);\r\n }\r\n\r\n getFillColor = () => {\r\n // highlight shape on eyeball click\r\n if (this.__shape.shapeRender.blink.isHighlightedLightOn) {\r\n return RENDER_TEMPLATES.filledActive;\r\n } else {\r\n return RENDER_TEMPLATES.filledPrimary;\r\n }\r\n }\r\n\r\n renderBorders = (ctx,\r\n staticOffset = null,\r\n strokeTemplate= RENDER_TEMPLATES.default,\r\n fillTemplate = RENDER_TEMPLATES.filledPrimary\r\n ) => {\r\n RenderParts.drawShapeBorders(ctx, staticOffset, strokeTemplate, fillTemplate, this.__shape);\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n if (activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.handles\r\n || activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.spacer\r\n || activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.crown\r\n || activeButton === SIDEBAR_NAVIGATION_BUTTONS.end_cap\r\n || activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.end_panel\r\n || activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.resize\r\n || activeButton === SIDEBAR_BUTTONS_MENU.delete\r\n ) {\r\n RenderParts.drawHoveredBorders(ctx, staticOffset, this.__shape);\r\n\r\n // Highlight possibility to insert shape between lines\r\n } else if (activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.upper\r\n || activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.lower\r\n || activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.tall\r\n || workspace.getMovingShape()\r\n ) {\r\n const movingShape = workspace.getMovingShape();\r\n const isTestShapePlacedOnTheFloor = getIsShapePlacedOnTheFloor(this.__shape);\r\n const isTestShapePlacedOnTheWall = getIsShapePlacedOnTheWall(this.__shape);\r\n //1. Highlight moving shape if their part ids are equal\r\n //2. Highlight upper shapes if we are dragging new upper cabinet shape\r\n //3. Highlight lower shapes if we are dragging new lower cabinet shape\r\n //4. Highlight lower shapes if we are dragging new tall cabinet shape\r\n if ((movingShape && canShapeBeAutoShifted(workspace.getMovingShape(), this.__shape))\r\n || (activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.upper && isTestShapePlacedOnTheWall)\r\n || (activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.lower && isTestShapePlacedOnTheFloor)\r\n || (activeButton === SIDEBAR_NAVIGATION_CABINET_BUTTONS.tall && isTestShapePlacedOnTheFloor)\r\n ) {\r\n const style = {\r\n lineWidth: 4,\r\n strokeStyle: COLOR.red,\r\n shadowBlur: 2,\r\n extendHoveredLine: 5\r\n };\r\n RenderParts.drawHoveredBorders(ctx, staticOffset, this.__shape, style);\r\n }\r\n }\r\n };\r\n\r\n renderHandles = (ctx) => {\r\n RenderParts.drawHandles(ctx, this.__shape)\r\n };\r\n\r\n getCrownMoldingPoints = () => {\r\n const points = this.__shape.getPointsPointField();\r\n\r\n return RenderCabinets.getDiagonalPointsForTheSquare(points, this.__crownMoldingParams.distance)\r\n }\r\n\r\n // renderCrownMolding = (ctx) => {\r\n // if (this.__crownMoldingFeatureId) {\r\n // const crownMoldingPoints = this.getCrownMoldingPoints();\r\n // RenderCabinets.renderCrownMolding(ctx, crownMoldingPoints);\r\n // }\r\n // };\r\n}\r\n\r\nexport default ShapeCabinet\r\n","import {renderErrorPopup} from \"../../../../../api/api-popups\";\r\nimport workspace from \"../core/workspace\";\r\nimport sqftShape from \"../core/shapes/sqftShape\";\r\nimport sqftShapeManager from \"../store/sqftShapeManager\";\r\n\r\nexport const renderResetSeamPopup = (shape) => {\r\n if (shape instanceof sqftShape) {\r\n shape.setResetSlabModePopupWasDisplayed(true);\r\n sqftShapeManager.resetShapeChangesInTheSlabMode(shape);\r\n\r\n //state.mouseDown = false;\r\n //state.mouseDownPosition = null;\r\n shape.setIsPointsMovable(false);\r\n }\r\n renderErrorPopup(workspace.intl.formatMessage({id: \"sqft.popup.slab.resetChangesMessage\"}))\r\n}\r\n\r\nexport const shouldResetSlabModePopupOnPointMoveBeDisplayed = (shape) => {\r\n if (shape instanceof sqftShape\r\n && (shape.isWithShapePieces()) //|| SlabWorkspace.slabAdditionalShapes.getShapeAdditionalShapes(shape).length > 0\r\n ) {\r\n return !shape.getResetSlabModePopupWasDisplayed();\r\n }\r\n\r\n return false;\r\n}\r\n","export default class BlinkingHighlight {\r\n isHighlighted = false;\r\n isHighlightedLightOn = false;\r\n timer = true;\r\n highliteBlinkTime = 400;\r\n highliteBlinkTimeTotal = 2400;\r\n\r\n constructor() {\r\n }\r\n\r\n setHighlighting = (value) => {\r\n if (!this.isHighlighted && value) {\r\n this.startHighlightingLoop();\r\n } else if (this.isHighlighted && !value) {\r\n this.stopHighlightingLoop();\r\n }\r\n this.isHighlighted = value;\r\n setTimeout( () => {\r\n document.addEventListener(\"click\", this.stopHighlightingLoop)\r\n }, 50);\r\n setTimeout( () => {\r\n this.stopHighlightingLoop();\r\n }, this.highliteBlinkTimeTotal);\r\n };\r\n\r\n startHighlightingLoop = () => {\r\n this.isHighlightedLightOn = true;\r\n setTimeout( () => {\r\n this.isHighlightedLightOn = false\r\n }, this.highliteBlinkTime);\r\n this.timer = setTimeout( () => {\r\n this.startHighlightingLoop();\r\n }, this.highliteBlinkTime * 2);\r\n }\r\n\r\n stopHighlightingLoop = () => {\r\n clearTimeout(this.timer);\r\n this.isHighlighted = false;\r\n //this.isHighlightedLightOn = false; // this will be done in startHighlightingLoop\r\n document.removeEventListener(\"click\", this.stopHighlightingLoop);\r\n }\r\n}\r\n","import eventManager from \"../../store/sqftEventManager\";\r\nimport Config from \"../../store/sqftConfig\";\r\nimport workspace from \"../workspace\";\r\nimport Cursor from \"./cursor\";\r\nimport MiteredOverlay from \"../shapes/overlays/mitered\";\r\nimport {\r\n inchesToMm,\r\n measureDistanceToInches, mm2ToM2,\r\n mmToInches, sqInchesToSqFoot,\r\n} from \"../../../../helpers/sqftHelper\";\r\nimport {iconPlusBlue} from \"../../../../assetsSQFT\";\r\nimport store from \"../../../../../../store\";\r\nimport {updateSQFTCalculations} from \"../../../../../../actions/sqftFunctions\";\r\nimport {\r\n EDGE_LABELS, MITERED_OVERLAY_TYPE,\r\n RESOURCE_ATTACHED_TO_TYPE, RESOURCE_TYPE,\r\n SIDEBAR_BUTTONS_MENU,\r\n SIDEBAR_HIDDEN_BUTTONS,\r\n} from \"../../../../constants\";\r\nimport {setSQFTMenuOpened, setSQFTMenuOpenedLock} from \"../../../../../../actions/sqftMenuFunctions\";\r\nimport {attachResource} from \"./resourseCanas\";\r\nimport {getEdgeFeatures} from \"../../../../helpers/shapeHelper\";\r\nimport {addResource, changeResource, deleteResource} from \"../../../../../../actions/sqftResourceFunctions\";\r\nimport {getUnderlaymentFeature} from \"../../../../helpers/sqftHelperUi\";\r\nimport sqftConfig from \"../../store/sqftConfig\";\r\n\r\nexport default class UnderlaymentController {\r\n cursor;\r\n design = {\r\n imgSrc: iconPlusBlue\r\n };\r\n miteredSections = [];\r\n\r\n createCursor = () => {\r\n this.cursor = new Cursor();\r\n this.cursor.setCursorImage(this.design.imgSrc);\r\n eventManager.setCursor('mitered-select', this, true);\r\n };\r\n\r\n registerEvents = () => {\r\n eventManager.addEvent(\r\n eventManager.events.MOUSE_UP,\r\n this.onMouseUp,\r\n this,\r\n eventManager.priorities.OVERALL\r\n );\r\n };\r\n\r\n onMouseUp = (mousePos) => {\r\n void mousePos;\r\n let hoverShape = workspace.getHoverShape();\r\n\r\n if (hoverShape && hoverShape.getHoverSegment) {\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n if (activeButton !== SIDEBAR_HIDDEN_BUTTONS.toolUnderlayment) {\r\n return\r\n }\r\n\r\n let seg = hoverShape.getHoverSegment();\r\n if (seg && seg.isWithUnderlayment() && reduxState.sqftMenuState.activeButton === SIDEBAR_BUTTONS_MENU.delete) {\r\n seg.deleteMitered();\r\n } else if(seg && seg.isWithUnderlayment()) {\r\n void 0;\r\n } else if (seg && !seg.isWithUnderlayment() && !seg.isWithBumpout() && this.cursor.cursorImage) {\r\n attachResource(seg, null, RESOURCE_ATTACHED_TO_TYPE.underlayment, null, null,'', 0, null, null, false);\r\n } else {\r\n // Menu.openMenu();\r\n // deregisterEvents();\r\n // elements.designDefault.click();\r\n }\r\n }\r\n\r\n //todo\r\n this.cursor.checkForRestoreCursor();\r\n };\r\n\r\n addSection = (miteredSection) => {\r\n const reduxState = store.getState();\r\n store.dispatch(addResource(RESOURCE_TYPE.underlaymentSections, miteredSection));\r\n store.dispatch(setSQFTMenuOpened(SIDEBAR_HIDDEN_BUTTONS.toolUnderlayment));\r\n const updateCalculations = reduxState.sqftState.updateCalculations;\r\n store.dispatch(updateSQFTCalculations(updateCalculations + 1));\r\n };\r\n\r\n updateSection = (miteredSection) => {\r\n store.dispatch(changeResource(RESOURCE_TYPE.underlaymentSections, miteredSection));\r\n store.dispatch(setSQFTMenuOpened(SIDEBAR_HIDDEN_BUTTONS.toolUnderlayment));\r\n store.dispatch(setSQFTMenuOpenedLock(true));\r\n\r\n const reduxState = store.getState();\r\n const updateCalculations = reduxState.sqftState.updateCalculations;\r\n store.dispatch(updateSQFTCalculations(updateCalculations + 1));\r\n }\r\n\r\n deleteSection = (miteredOverlay) => {\r\n store.dispatch(deleteResource(RESOURCE_TYPE.underlaymentSections, miteredOverlay.id));\r\n };\r\n\r\n createUnderlaymentOverlay = (line) => {\r\n const reduxState = store.getState();\r\n const underlaymentSections = reduxState.sqftResourceState.underlaymentSections;\r\n const underlaymentOverlay = new MiteredOverlay(line, underlaymentSections.length + 1, MITERED_OVERLAY_TYPE.underlayment);\r\n const feature = getUnderlaymentFeature();\r\n if (feature) {\r\n underlaymentOverlay.setFeatureId(feature.part.dbFeature.id)\r\n }\r\n\r\n return underlaymentOverlay\r\n };\r\n\r\n destroy = (protect, revertBackAfterMouseUp) => {\r\n if (revertBackAfterMouseUp) {\r\n eventManager.removeEvent(self, eventManager.events.RENDER); //remove render only, but wait for mouse up to set cursor again\r\n this.isWaitingToRestoreCursor = true;\r\n } else {\r\n this.deregisterEvents();\r\n }\r\n //this.hide();\r\n };\r\n\r\n deregisterEvents() {\r\n eventManager.resetCursor(this);\r\n eventManager.removeEvent(this);\r\n this.cursor ? this.cursor.deregisterEvents() : null;\r\n Config.highlight.lines = false;\r\n }\r\n\r\n static getTotalArea = () => {\r\n let miteredSections = workspace.getMiteredSections();\r\n let miteredSectionsArea = 0;\r\n for (let i = 0; i < miteredSections.length; i++) {\r\n miteredSectionsArea += miteredSections[i] ? miteredSections[i].getMiteredToolTotalArea() : null;\r\n }\r\n\r\n return miteredSectionsArea;\r\n };\r\n\r\n onMeasureUnitChange = () => {\r\n let miteredSections = workspace.getMiteredSections();\r\n let miteredSectionsArea = 0;\r\n for (let i = 0; i < miteredSections.length; i++) {\r\n let segments = miteredSections[i].getSegments();\r\n\r\n segments.map((segment) => {\r\n segment.height = Config.measureUnit === \"Metric\"\r\n ? inchesToMm(segment.height)\r\n : mmToInches(segment.height);\r\n if (segment.thickness) {\r\n segment.thickness.value = Config.measureUnit === \"Metric\"\r\n ? inchesToMm(segment.thickness.value)\r\n : mmToInches(segment.thickness.value)\r\n }\r\n });\r\n\r\n miteredSections[i].heightNumberText.value = segments[0].height\r\n }\r\n\r\n return miteredSectionsArea;\r\n };\r\n\r\n getTransformedMeasureUnit = (value) => {\r\n return Config.measureUnit === \"Metric\"\r\n ? measureDistanceToInches(value).millimeters // ? distanceToMillimeters(inchesToMm(segment.length.value))\r\n : value;\r\n };\r\n\r\n getEdgesLength = () => {\r\n let additionalLength = 0;\r\n const lines = workspace.getLines();\r\n for (const line of lines) {\r\n if (line.from.getMiteredFeatureId()) {\r\n additionalLength += this.getEdgeLengthValue();\r\n }\r\n }\r\n\r\n return additionalLength\r\n }\r\n\r\n getEdgeLengthValue = () => {\r\n return Config.measureUnit === \"Imperial\"\r\n ? (2 * 33) / 40\r\n : (2 * 900) / 1000;\r\n }\r\n\r\n getExportedMiteredEdges = () => {\r\n let addedEdges = [];\r\n const lines = workspace.getLines();\r\n for (const line of lines) {\r\n const miteredFeatureId = line.from.getMiteredFeatureId();\r\n if (miteredFeatureId) {\r\n const edgeLengthValue = this.getEdgeLengthValue();\r\n const navItems = getEdgeFeatures();\r\n let edgeFeature = navItems.find(edge => edge.part.dbFeature.id === miteredFeatureId);\r\n\r\n addedEdges.push({\r\n partId: EDGE_LABELS.edge,\r\n type: EDGE_LABELS.edge,\r\n name: workspace.intl.formatMessage({id: edgeFeature.part.dbFeature.sharedFeatureName}),\r\n featureId: miteredFeatureId,\r\n segments: 1,\r\n length: edgeLengthValue,\r\n area: edgeLengthValue\r\n });\r\n }\r\n }\r\n\r\n return addedEdges\r\n }\r\n\r\n exportData = () => {\r\n const reduxState = store.getState();\r\n const underlaymentSections = reduxState.sqftResourceState.underlaymentSections;\r\n\r\n //return {quantity: underlaymentSections.reduce((acc, current) => acc + current.getMiteredToolTotalArea(), 0)};\r\n return {sections: underlaymentSections.map((section) => ({\r\n id: section.id,\r\n qtCatName: section.qtCatName,\r\n featureId: section.featureId,\r\n quantity: sqftConfig.measureUnit === \"Imperial\"\r\n ? Math.ceil10(sqInchesToSqFoot(section.getMiteredToolTotalArea()), -2)\r\n : mm2ToM2(section.getMiteredToolTotalArea())\r\n }))\r\n };\r\n }\r\n}\r\n","import {capitalizeFirstLetters} from \"../../misc/helpers\";\r\nimport {getSelectedFiltersLength} from \"../../misc/filtersFunctions\";\r\n\r\nconst changeMaterialToColorArray = [\"vanity_faucet\", \"paper_holder\", \"robe_hook\", \"towel_bar\", \"towel_ring\",\r\n \"bathtub_body\", \"vanity_console\", \"replacement_tub\", \"bathtub_fixture\", \"vanity_ptrap\", \"vanity_legs\", \"vanity_middle\",\r\n \"toilet\", \"vanity_ws_towel_bar\", \"vanity_washstand\", \"vanity_cabinet\"];\r\n\r\n/**\r\n * updated Names per Lixil requirements\r\n * @param filterGroup {filterGroupInterface}\r\n * @param partId {string}\r\n * @returns {string|null}\r\n */\r\nexport const getHardCodedFilterGroupName = (filterGroup, partId = \"\") => {\r\n switch (filterGroup.name) {\r\n case \"Material\": {\r\n if (changeMaterialToColorArray.includes(partId)) {\r\n return \"Color\"\r\n }\r\n break;\r\n }\r\n case \"GPF_Max\": {\r\n return \"GPF\"\r\n }\r\n case \"LixilProductSubCategory\": {\r\n switch (partId) {\r\n case \"vanity_faucet\":\r\n case \"bathtub_fixture\":\r\n return \"Faucet Type\"\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n return (filterGroup.name || \"\").replace(/_/gi, \" \")\r\n}\r\n\r\n/**\r\n * filters hardcode LX-827 - LX-839 tasks in Jira\r\n * @param filterGroup {filterGroupInterface}\r\n * @param partId {string}\r\n * @returns {boolean}\r\n */\r\nexport const weShouldHideFilterGroup = (filterGroup, partId) => {\r\n switch ((filterGroup.name || \"\").trim()) {\r\n case \"Product_Width\":\r\n case \"LixilProductCategory\":\r\n case \"LixilProductSuperCategory\":\r\n case \"Bath_Accessory_Mount_Type\":\r\n case \"Designer Recommended\":\r\n case \"EA_Each_Weight\":\r\n case \"Small_Parcel_Postable_SAP_YN\":\r\n case \"Volume_SAP\":\r\n case \"Bath_Accessory_No_of_Hooks\":\r\n case \"Bath_Accessory_No_of_Bars\":\r\n case \"Fitting_Mount_Type\":\r\n case \"Fitting_Handle_Type\":\r\n case \"ADA_YN\":\r\n case \"Fitting_Touchless_Touch_On\":\r\n case \"Product_Height\":\r\n case \"Faucet_Type_from_Classification\":\r\n case \"Product_Length\":\r\n case \"Tub_Product_Type\":\r\n case \"Bath_Therapy_Type\":\r\n case \"Drain_Location\":\r\n case \"Hand_Shower_Included_YN\":\r\n case \"Rough_In_Size\":\r\n case \"Toilet_Type_from_Classification\":\r\n case \"Fitting_No_of_Holes_Required\":\r\n return true\r\n case \"Color\": {\r\n return changeMaterialToColorArray.includes(partId);\r\n }\r\n case \"Brand\": {\r\n switch (partId) {\r\n case \"vanity_console\":\r\n case \"vanity_ptrap\":\r\n case \"vanity_cabinet\":\r\n case \"vanity_legs\":\r\n case \"vanity_middle\":\r\n case \"vanity_ws_towel_bar\":\r\n case \"vanity_washstand\":\r\n return true\r\n default:\r\n return false\r\n }\r\n }\r\n case \"Collection\": {\r\n switch (partId) {\r\n case \"vanity_ptrap\":\r\n case \"vanity_legs\":\r\n case \"vanity_middle\":\r\n return true\r\n default:\r\n return false\r\n }\r\n }\r\n case \"Size\":\r\n case \"Manufacturer\": {\r\n switch (partId) {\r\n case \"vanity_cabinet\":\r\n return true\r\n default:\r\n return false\r\n }\r\n }\r\n case \"LixilProductSubCategory\": {\r\n switch (partId) {\r\n case \"vanity_faucet\":\r\n case \"bathtub_fixture\":\r\n return false\r\n default:\r\n return true\r\n }\r\n }\r\n default:\r\n return false\r\n }\r\n}\r\n\r\n/**\r\n * filters hardcode LX-827 - LX-839 tasks in Jira\r\n * @param filterValue {filterValueInterface}\r\n * @returns {boolean}\r\n */\r\nexport const weShouldHideFilterValue = (filterValue) => {\r\n // console.log(\"filterValue\", filterValue);\r\n return (filterValue.id === 10446 && filterValue.value === \"Town Square® S\")\r\n || (filterValue.id === 10415 && filterValue.value === \"Cadet®\")\r\n || (filterValue.id === 10445 && filterValue.value === \"Princeton™\")\r\n || (filterValue.id === 10448 && filterValue.value === \"Colony®\")\r\n || (filterValue.id === 10416 && filterValue.value === \"Eurocube®\")\r\n || (filterValue.id === 10410 && filterValue.value === \"Concetto™\")\r\n || (filterValue.id === 9950 && filterValue.value === \"LINEARE™\")\r\n}\r\n\r\n/**\r\n * filters hardcode LX-827 - LX-839 tasks in Jira\r\n * @param filterGroups {[filterGroupInterface]}\r\n * @param partId {string}\r\n * @param selectedFilters {array}\r\n * @returns {[filterGroupInterface]}\r\n */\r\nexport const getHardCodedFilterGroups = (filterGroups, partId, selectedFilters) => {\r\n return filterGroups\r\n .filter(filterGroup => !weShouldHideFilterGroup(filterGroup, partId))\r\n .map(filterGroup => {\r\n const selectedFiltersLength = getSelectedFiltersLength(filterGroup, selectedFilters);\r\n const filterGroupName = getHardCodedFilterGroupName(filterGroup, partId);\r\n filterGroup.values = filterGroup.values.sort((a, b) => a.id - b.id);\r\n return Object.assign({}, filterGroup, {filterGroupName, selectedFiltersLength})\r\n })\r\n .sort((a, b) => a.id - b.id);\r\n}\r\n\r\n\r\n/**\r\n * updated Names per Lixil requirements\r\n * @param filterValue {filterValueInterface}\r\n * @returns {string}\r\n */\r\nexport const getFixedFilterValueName = (filterValue) => {\r\n switch (filterValue.value) {\r\n // case \"StarLight Chrome\":\r\n // case \"Starlight Chrome\":\r\n // case \"Starlight chrome\":\r\n // return window.location.href.includes(\"grohe\") ? \"Starlight Chrome\" : \"Polished Chrome\"\r\n case \"Grohe\":\r\n case \"grohe\":\r\n return \"GROHE\"\r\n case \"Centerset Bathroom Faucets\":\r\n return \"Centerset\"\r\n case \"Single Hole Bathroom Faucets\":\r\n return \"Single Hole\"\r\n case \"Widespread Bathroom Faucets\":\r\n return \"Widespread\"\r\n case \"Vessel Bathroom Faucets\":\r\n return \"Vessel\"\r\n default:\r\n return capitalizeFirstLetters(filterValue.displayText || filterValue.value || \"\")\r\n .replace(/_/gi, \" \")\r\n }\r\n}\r\n","import isEmpty from \"lodash/isEmpty\";\r\n\r\nimport {getCommonVisualizerType} from \"../../config\";\r\nimport store from \"../../store\";\r\nimport {dbFeatureFilterProperties, dbFeatureRelatedFeaturesProperties, otherMissingProperties} from \"./constants\";\r\n\r\n\r\n/**\r\n * Checks whether to show room feature as in visualizer in the navigation\r\n * @param feature {featureInterface}\r\n * @returns {featureInterface}\r\n */\r\nexport const setRoomNotInVisualizerProperty = (feature) => {\r\n const fabricatorSubscriptions = store.getState().fabricatorState.fabricatorSubscriptions;\r\n if (!feature || !feature.dbFeature || !feature.dbFeature.sharedFeatureName) {\r\n return feature\r\n }\r\n const name = feature.dbFeature.sharedFeatureName.toLowerCase();\r\n const visType = getCommonVisualizerType();\r\n if (name === visType) {\r\n feature.notAvailableInVisualizer = false;\r\n feature.dbFeature.unlocked = true;\r\n return feature\r\n }\r\n if (!Array.isArray(fabricatorSubscriptions)) {\r\n return feature\r\n }\r\n const subscription = fabricatorSubscriptions.find(subscr => subscr.service.toLowerCase() === name);\r\n if (subscription) {\r\n feature.notAvailableInVisualizer = false;\r\n feature.dbFeature.unlocked = true;\r\n if (subscription.thumbnail) {\r\n feature.customThumbnail = subscription.thumbnail\r\n }\r\n }\r\n return feature\r\n}\r\n\r\n/**\r\n * updates existing dbFeature\r\n * @param dbFeature {dbFeatureInterface} // new\r\n * @param existingDbFeature {dbFeatureInterface} // old (existing)\r\n * @param layout {object} // layout\r\n */\r\nexport const updateExistingFeature = (dbFeature, existingDbFeature, layout) => {\r\n if (!existingDbFeature[\"relatedFeatureIds\"] && Array.isArray(dbFeature[\"relatedFeatureIds\"])) {\r\n existingDbFeature[\"relatedFeatureIds\"] = dbFeature[\"relatedFeatureIds\"];\r\n }\r\n // loadRelatedFeatures(dbFeature, layout);\r\n dbFeatureRelatedFeaturesProperties.forEach(property => {\r\n if (!existingDbFeature[property] && Array.isArray(dbFeature[property])) {\r\n existingDbFeature[property] = dbFeature[property];\r\n const parentGroups = layout.getFeatures(true);\r\n dbFeature[property].forEach(dbFeature => {\r\n layout.loadDbFeature(dbFeature, parentGroups)\r\n })\r\n }\r\n })\r\n if ((!Array.isArray(existingDbFeature.stonePricingId) || !existingDbFeature.stonePricingId.length || existingDbFeature.stonePricingId[0] === -1)\r\n && (Array.isArray(dbFeature.stonePricingId) && dbFeature.stonePricingId.length && dbFeature.stonePricingId[0] !== -1)) {\r\n existingDbFeature.stonePricingId = dbFeature.stonePricingId\r\n }\r\n dbFeatureFilterProperties.forEach((key) => {\r\n if ((!existingDbFeature[key] || isEmpty(existingDbFeature[key])) && dbFeature[key] && !isEmpty(dbFeature[key])) {\r\n existingDbFeature[key] = dbFeature[key];\r\n dbFeature.wasUpdatedFromAnotherResponse = true; // to erase ._customDisplayName, because we need filters to create it again!\r\n existingDbFeature.wasUpdatedFromAnotherResponse = true; // to erase ._customDisplayName, because we need filters to create it again!\r\n }\r\n });\r\n otherMissingProperties.forEach((key) => {\r\n if ((!existingDbFeature[key] || isEmpty(existingDbFeature[key])) && dbFeature[key] && !isEmpty(dbFeature[key])) {\r\n existingDbFeature[key] = dbFeature[key];\r\n }\r\n });\r\n if (dbFeature.markUpString) {\r\n existingDbFeature.markUpString = dbFeature.markUpString;\r\n existingDbFeature.price = dbFeature.price;\r\n existingDbFeature.cost = dbFeature.cost;\r\n existingDbFeature.discount = dbFeature.discount;\r\n existingDbFeature.shippingCost = dbFeature.shippingCost;\r\n }\r\n}\r\n\r\n\r\nexport const loadRelatedFeatures = (dbFeature, layout) => {\r\n if (!Array.isArray(dbFeature.relatedFeatureIds) || !dbFeature.relatedFeatureIds.length) {\r\n return\r\n }\r\n // console.log(\"loadRelatedFeatures!!\", dbFeature);\r\n dbFeature.relatedFeatureIds.forEach(relFeatureId => {\r\n if (!dbFeature.relatedFeatures) {\r\n dbFeature.relatedFeatures = [];\r\n }\r\n if (dbFeature.relatedFeatures.some(relFeature => relFeature.id === relFeatureId)) {\r\n return // already loaded\r\n }\r\n let loadedDbFeature = null;\r\n Object.keys(layout.allDbFeatures).forEach(groupName => {\r\n for (let i = 0; i < layout.allDbFeatures[groupName].length; i++) {\r\n if (layout.allDbFeatures[groupName][i].id === relFeatureId) {\r\n loadedDbFeature = layout.allDbFeatures[groupName][i];\r\n break;\r\n }\r\n }\r\n })\r\n if (loadedDbFeature) {\r\n dbFeature.relatedFeatures.push(loadedDbFeature);\r\n } else {\r\n console.log(\"related feature wasn't loaded\"); // it it fires - then something is wrong, we should load related before main features\r\n }\r\n })\r\n // console.log(\"dbFeature.relatedFeatures\", dbFeature.relatedFeatures);\r\n}\r\n","export const getFeatureCropCoors = (feature) => {\r\n if (!feature.metaData[\"CropCoords\"]) {\r\n return null\r\n }\r\n if (!feature.metaData[\"ParsedCropCoords\"]) {\r\n if ((feature.metaData[\"CropCoords\"].length === 1) && (typeof feature.metaData[\"CropCoords\"][0] === \"string\")) {\r\n if (feature.metaData[\"CropCoords\"][0].includes(\", \")) {\r\n feature.metaData[\"ParsedCropCoords\"] = feature.metaData[\"CropCoords\"][0].split(\", \").map(coor => +coor)\r\n } else if (feature.metaData[\"CropCoords\"][0].includes(\",\")) {\r\n feature.metaData[\"ParsedCropCoords\"] = feature.metaData[\"CropCoords\"][0].split(\",\").map(coor => +coor)\r\n }\r\n } else {\r\n feature.metaData[\"ParsedCropCoords\"] = feature.metaData[\"CropCoords\"];\r\n }\r\n }\r\n return feature.metaData[\"ParsedCropCoords\"]\r\n}\r\n","import {LayoutAbbreviation, LayoutType} from \"./constants\";\r\nimport {UseFullSizeImages} from \"../../../config\";\r\n\r\nlet layouts = {};\r\nObject.keys(LayoutType).forEach(layoutName => {\r\n layouts[layoutName] = {\r\n Background: {\r\n ShowerWall: 50100,\r\n CenterWall: 50300,\r\n BackWall: 50600,\r\n Floor: 50700,\r\n BackgroundBG: 50800,\r\n },\r\n ShowerWallAccent: 1000,\r\n Window: {\r\n WindowBody: 45000,\r\n WindowKits: 1100\r\n },\r\n Accessories: {\r\n LargeCornerCaddie: 2010,\r\n LargeCornerCaddie2: 2020,\r\n Fixture: 2100,\r\n LargeCornerSeat: 2310,\r\n LargeCornerSeat2: 2320,\r\n CornerCaddie: 2410,\r\n CornerCaddie2: 2420,\r\n SoapDish: 2500,\r\n SoapDish2: 2510,\r\n SmallCornerShelf: 2600,\r\n GrabBar: 2700,\r\n GrabBar2: 2710,\r\n CornerShelf1: 2810,\r\n CornerShelf2: 2820,\r\n CornerShelf3: 2830,\r\n CornerShelf4: 2840,\r\n CornerShelf5: 2850,\r\n CornerShelf6: 2860,\r\n ShowerPod: 2900,\r\n Seats: 2950,\r\n ShowerRod: 4200,\r\n },\r\n Shower: {\r\n ShowerPan: 3200,\r\n ShowerFixture: 3410,\r\n ShowerFixture2: 3420,\r\n ShowerDoorHandle: 3600,\r\n // Threshold\r\n TubCombo: {\r\n WallConfiguration: 3600,\r\n Liner: 3700,\r\n WalkInTub: 3900,\r\n JettedTub: 4000,\r\n },\r\n },\r\n Walls: {\r\n LeftWall: 40120,\r\n },\r\n Globals: {\r\n ToiletPaper: 8000,\r\n ToiletPaperHolder: 8050,\r\n Towel: 8100,\r\n LightFixture: 8200,\r\n LampFixture: 8250,\r\n DecorWindow: 8300,\r\n DecorSeat: 8400,\r\n },\r\n Bathtub: {\r\n BathTubFixture: 9000,\r\n BathTubBody: 9100,\r\n },\r\n decor: 11111,\r\n skirting_board: 2500,\r\n shower_curb: 3000,\r\n bathtub_body: 5304,\r\n bathtub_fixture: 5300,\r\n window: 45000,\r\n vanity_cabinet: 6100,\r\n vanity_countertop: 6000,\r\n shower_arm: 7315,\r\n shower_head_bundle: 7456,\r\n split_wall: 7000,\r\n towel_bar: 2617,\r\n towel_ring: 2615,\r\n shower_glass: 3549,\r\n grab_bar: 2700,\r\n robe_hook: 5059,\r\n vanity_handle: 5200,\r\n vanity_backsplash: 5500,\r\n vanity_mirror: 5600,\r\n vanity_faucet: 5700,\r\n vanity_sink: 5800,\r\n shower_pan_combo: 6743,\r\n window_body: 7301,\r\n toilet_brush: 9816,\r\n toilet: 9960,\r\n paper_holder: 10004,\r\n shower_wall: 40020,\r\n left_wall_splitter: 40000,\r\n left_wall_crop: 40150,\r\n right_wall_crop: 48030,\r\n front_wall_crop: 49075,\r\n walls_ceiling: 50900,\r\n shower_wall_mirror: 50050,\r\n back_wall: 50100,\r\n front_wall: 50200,\r\n left_wall: 50500,\r\n right_wall: 54000,\r\n };\r\n});\r\n\r\n\r\nconst getLayerDimensions = (layer, currentLayout, canvasDimensions) => {\r\n const fullImagesFactor = UseFullSizeImages ? 177.77 : 100;\r\n const sizeFactor = fullImagesFactor / 100;\r\n\r\n if (layer.coords) {\r\n const COORDS_MAX = 1;\r\n\r\n const x1Percentage = (layer.coords.min_x * 100) / COORDS_MAX;\r\n const x2Percentage = (layer.coords.max_x * 100) / COORDS_MAX;\r\n const y1Percentage = (layer.coords.min_y * 100) / COORDS_MAX;\r\n const y2Percentage = (layer.coords.max_y * 100) / COORDS_MAX;\r\n let x1 = sizeFactor*((canvasDimensions.width * x1Percentage) / 100);\r\n let x2 = sizeFactor*((canvasDimensions.width * x2Percentage) / 100);\r\n let y1 = sizeFactor*((canvasDimensions.height * y1Percentage) / 100);\r\n let y2 = sizeFactor*((canvasDimensions.height * y2Percentage) / 100);\r\n\r\n return {\r\n polygonArray: [[x1, y1], [x2, y1], [x2, y2], [x1, y2]],\r\n width: (x2 - x1),\r\n height:(y2 - y1)\r\n };\r\n }\r\n\r\n // console.log(\"layer without coords\", layer);\r\n\r\n const {zIndex} = layer;\r\n switch (zIndex) {\r\n // case layouts[currentLayout].Background.ShowerWall:\r\n // return {\r\n // polygonArray: [[sizeFactor*350,sizeFactor*50],[sizeFactor*950,sizeFactor*50],[sizeFactor*950,sizeFactor*930],[sizeFactor*350,sizeFactor*930]],\r\n // width: sizeFactor*600,\r\n // height: sizeFactor*900\r\n // };\r\n case layouts[currentLayout].Walls.CenterWall:\r\n case layouts[currentLayout].Background.CenterWall: {\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return null;\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[sizeFactor*360,0],[sizeFactor*760,0],[sizeFactor*760,sizeFactor*880],[sizeFactor*360,sizeFactor*880]],\r\n width: sizeFactor*400,\r\n height: sizeFactor*880\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n case layouts[currentLayout].Walls.RightWall:\r\n case layouts[currentLayout].Background.RightWall: {\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[sizeFactor*750,0],[sizeFactor*1920,0],[sizeFactor*1920,sizeFactor*1080],[sizeFactor*750,sizeFactor*1080]],\r\n width: sizeFactor*1170,\r\n height: sizeFactor*1080\r\n };\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[sizeFactor*120,0],[sizeFactor*1920,0],[sizeFactor*1920,sizeFactor*930],[sizeFactor*120,sizeFactor*930]],\r\n width: sizeFactor*1900,\r\n height: sizeFactor*930\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n case layouts[currentLayout].Walls.LeftWall:\r\n case layouts[currentLayout].Background.LeftWall: {\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[0,0],[sizeFactor*600,0],[sizeFactor*600,sizeFactor*1080],[0,sizeFactor*1080]],\r\n width: sizeFactor*600,\r\n height: sizeFactor*1080\r\n };\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[0,0],[sizeFactor*600,0],[sizeFactor*600,sizeFactor*1080],[0,sizeFactor*1080]],\r\n width: sizeFactor*600,\r\n height: sizeFactor*1080\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n case layouts[currentLayout].Background.Floor: {\r\n switch (currentLayout) {\r\n default: {\r\n // case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[0,sizeFactor*600],[sizeFactor*1920,sizeFactor*600],[sizeFactor*1920,sizeFactor*1080],[0,sizeFactor*1080]],\r\n width: sizeFactor*1920,\r\n height: sizeFactor*480\r\n };\r\n }\r\n }\r\n }\r\n case layouts[currentLayout].Background.ShowerWall:\r\n switch (currentLayout) {\r\n case LayoutAbbreviation.Layout1: {\r\n return {\r\n polygonArray: [[sizeFactor*350,0],[sizeFactor*1650,0],[sizeFactor*1650,sizeFactor*930],[sizeFactor*350,sizeFactor*930]],\r\n width: sizeFactor*1300,\r\n height: sizeFactor*930\r\n };\r\n }\r\n case LayoutAbbreviation.Layout4: {\r\n return {\r\n polygonArray: [[sizeFactor*250,0],[sizeFactor*1250,0],[sizeFactor*1250,sizeFactor*930],[sizeFactor*250,sizeFactor*930]],\r\n width: sizeFactor*1000,\r\n height: sizeFactor*930\r\n };\r\n }\r\n }\r\n return null;\r\n default:\r\n return null\r\n }\r\n};\r\n\r\nexport default {\r\n layouts,\r\n getLayerDimensions\r\n}\r\n\r\n\r\n","import {IntermediatePart} from \"../intermediatePart\";\r\nexport default class NonVisualizerSubPart extends IntermediatePart {\r\n constructor(isChild, partId, partName) {\r\n super(isChild);\r\n this.partId = partId;\r\n this.visible = true;\r\n this.partName = partName;\r\n // this.allFeaturesReceived = true;\r\n }\r\n\r\n load(dbFeature) {\r\n return super.load_(dbFeature, new NonVisualizerSubPart(false, this.partId, dbFeature.groupName));\r\n }\r\n\r\n navigationSubItems(filters, searchText) {\r\n return this.navigationNoMetaSubItems(filters, searchText)\r\n }\r\n}\r\n","import {Part} from \"../part\";\r\nimport {toiletThumbnail} from '../../../bvComponent/core/assets';\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {IntermediatePart} from \"../intermediatePart\";\r\nimport {removeLookPointFor} from \"../../lookNavigation/lookFunctions2\";\r\nimport {getCurrentRoomType} from \"../../../appLayout\";\r\nimport {LOOK_ROOM_TYPES} from \"../constants\";\r\n\r\nexport class Toilet extends Part {\r\n static id = 'Toilet';\r\n\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'Toilet';\r\n this.translateId = \"visualizer.bathroom.toilet\";\r\n this.homePageTitle = 'Toilets';\r\n this.partThumbnail = toiletThumbnail;\r\n this.toilet = null;\r\n this.relatedGroupNames = [\"Toilet\"];\r\n }\r\n\r\n load(dbFeature, loadFeature = true) {\r\n if (dbFeature.groupName === \"Toilet\") {\r\n if (!this.toilet) {\r\n this.toilet = new ToiletBody(true);\r\n this.relatedItems.push(this.toilet);\r\n this.toilet.getParent = () => this;\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n if (loadFeature) {\r\n this.toilet.load(dbFeature);\r\n }\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false;\r\n }\r\n\r\n subParts() {\r\n return this.relatedItems.map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n setDefaultPartAfterSubTypeClick() {\r\n return this.subParts()[0]\r\n }\r\n\r\n setDefault(layout) {\r\n this.relatedItems.forEach(_ => _.setDefault(layout));\r\n }\r\n}\r\n\r\nclass ToiletBody extends IntermediatePart {\r\n\r\n constructor(isChild) {\r\n super(isChild);\r\n this.partId = 'toilet';\r\n this.partName = 'Toilet';\r\n this.translateId = \"visualizer.bathroom.toilet\";\r\n this.homePageTitle = 'Toilets';\r\n this.canBeDisabled = true;\r\n }\r\n\r\n // getArrayOfConditions() {\r\n // let conditions = super.getArrayOfConditions(); //roomLayout\r\n // const layout = this.getParent().layout;\r\n // const showerParent = layout.parts[Shower.id];\r\n // const showerSize = showerParent.showerSize();\r\n // if (showerParent && showerSize && !IS_BATHROOM_OLD_BV_SCENE) {\r\n // conditions.push({\r\n // propName: \"ShowerSize\",\r\n // propValue: showerSize\r\n // });\r\n // }\r\n // return conditions\r\n // }\r\n\r\n canDisplayDemoPoint(parentObject) {\r\n if (getCurrentRoomType() === LOOK_ROOM_TYPES.as) {\r\n return removeLookPointFor(parentObject, 6, \"1\")\r\n }\r\n return true\r\n }\r\n}\r\n\r\n\r\n","import workspace from \"../workspace\";\r\nimport Box from \"./textBox/box\";\r\nimport IText from \"./textBox/iText\";\r\n\r\nexport default class TextBox {\r\n // holds all our labels\r\n _posOnField = {};\r\n _placeholder = '';\r\n _design = {\r\n width: 50,\r\n height: 20,\r\n fillStyle: 'rgba(255,255,255, 0.7)', // transparent\r\n };\r\n box = null;\r\n text = null;\r\n\r\n //Initialize a new Box, add it, and invalidate the canvas\r\n addRect() {\r\n this.box = new Box(this._posOnField, this._design);\r\n this.text = new IText(this._placeholder, 'playregular', 0, 0, 100, 25, 0, this.box);\r\n }\r\n\r\n constructor(posOnField, placeholder, design) {\r\n this._posOnField = posOnField;\r\n this._placeholder = placeholder ? placeholder : this._placeholder;\r\n this._design = design ? design : this._design;\r\n }\r\n\r\n getPosition() {\r\n return this._posOnField\r\n }\r\n\r\n init() {\r\n this.addRect(this._design);\r\n workspace.textBoxManager.addTextBox(this);\r\n }\r\n\r\n deregisterEvents = () => {\r\n this.box.deregisterEvents();\r\n this.text.deregisterEvents();\r\n }\r\n\r\n reInitEvents = () => {\r\n this.box.reInitEvents();\r\n this.text.reInitEvents();\r\n }\r\n\r\n export() {\r\n return {\r\n posOnField: {\r\n x: this.box.posX,\r\n y: this.box.posY,\r\n },\r\n placeholder: this.text.modelText.txt,\r\n design: this.box.design\r\n }\r\n }\r\n\r\n import() {\r\n\r\n }\r\n}\r\n\r\n\r\n","/**\r\n * @param e KeyboardEvent\r\n */\r\nexport const isBackspaceKeyCode = (e) => {\r\n return e.keyCode === 8\r\n}\r\n\r\n/**\r\n * @param e KeyboardEvent\r\n */\r\nexport const isDeleteKeyCode = (e) => {\r\n return e.keyCode === 46\r\n}\r\n\r\n/**\r\n * @param e KeyboardEvent\r\n */\r\nexport const isLengthKeyCode = (e) => {\r\n return isNumericKey(e) || isCommaKey(e) || isPeriodKey(e) || isSpace(e) || isSlash(e) || e.key === \"'\" || e.key === \"\\\"\"\r\n}\r\n\r\n/**\r\n * @param e KeyboardEvent\r\n */\r\nexport const isNumericKey = (e) => {\r\n return (e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105)\r\n}\r\n\r\n/**\r\n * is \",\"\r\n * @param e KeyboardEvent\r\n */\r\nexport const isCommaKey = (e) => {\r\n return e.keyCode === 188\r\n}\r\n\r\n/**\r\n * is \".\"\r\n * @param e KeyboardEvent\r\n */\r\nexport const isPeriodKey = (e) => {\r\n return e.keyCode === 190\r\n}\r\n\r\n/**\r\n * is \" \"\r\n * @param e KeyboardEvent\r\n */\r\nexport const isSpace = (e) => {\r\n return e.keyCode === 32\r\n}\r\n\r\n/**\r\n * is \"/\"\r\n * @param e KeyboardEvent\r\n */\r\nexport const isSlash = (e) => {\r\n return e.keyCode === 191\r\n}\r\n","import {ShapeFreeForm} from \"../core/tools/freeeDraw/ShapeFreeForm\";\r\n\r\nconst toolsControllers = {\r\n shapeFreeForm: new ShapeFreeForm()\r\n};\r\n\r\nexport default toolsControllers\r\n","import uniqBy from \"lodash/uniqBy\";\r\n\r\nimport * as types from '../actions/actionTypes';\r\nimport {isSameVisualizerWizard} from \"../bvcomponents/look/lookNavigation/lookMain/lookWizard/lookWizardFunctions2\";\r\nimport {getCommonVisualizerType, IS_LIXIL_UI} from \"../config\";\r\n\r\nconst initialState = {\r\n wizardIsActive: false, // is used on the materials page instead of the quotingtool\r\n wizardIsActiveObject: [], // is used for visualizer switching {\"kvScene\": false, \"bvLook\": true}\r\n wizardConfig: [], // arrayOf wizardObjectInterface // this is not used for now, it is a regular quoting tool filters wizard\r\n// {\r\n// id: 1,\r\n// name: \"Count wiz\",\r\n// description: \"some desc\",\r\n// enableForVisualizer: false,\r\n// enableForQuoting: true,\r\n// featureGroupName: \"Countertop\", // empty input case\r\n// isFinished: false, // frontend property\r\n// filterGroups: [\r\n// {\r\n// id: 43,\r\n// name: \"Countertop Material\",\r\n// type: \"Single\",\r\n// values: [],\r\n// visualType: \"ListWithCheckBoxes\"\r\n// },\r\n// {\r\n// id: 35,\r\n// name: \"Manufacturer \",\r\n// type: \"Single\",\r\n// values: [],\r\n// visualType: \"ImageList\",\r\n// },\r\n// {\r\n// id: 15,\r\n// name: \"Stone Color\",\r\n// type: \"Single\",\r\n// values: [],\r\n// visualType: \"ColorsWithColumns\"\r\n// },\r\n// ]\r\n// }\r\n // wizardActiveFilterGroupIndex: 0\r\n wizardList: [],\r\n wizardActiveItem: null,\r\n // wizardActiveStep: 0, // was -1 do not show the welcome screen on QKB and Lixil too\r\n wizardActiveStep: IS_LIXIL_UI ? -1 : 0, // do not show the welcome screen on QKB // reverted per solid surface request\r\n wizardSelectedValues: {},\r\n allWizardsValues: [], // [wizardAllObjectInterface]\r\n wizardShowFeatureSection: null,\r\n wizardMissingFeatures: {}, // \"groupName\": [\"string1\", \"string2\", ...]\r\n wizardWasRestored: false, // for complete popup\r\n wizardConflictingSteps: [], // we need to show the flow was changed popup, {wizardConflictingObjectInterface}\r\n wizardConflictPopupOpened: false,\r\n wizardSqftCartItems: [], // we can't set cart items directly, but we need to set them in wizard\r\n wizardAllowSkipDoneSteps: true,\r\n};\r\n\r\nexport const getUpdatedAllWizardValues = (state, quoteIndex, wizardItemId, wizardSelectedValues) => {\r\n const newWizObject = {\r\n quoteIndex,\r\n wizardItemId,\r\n lastVisitedStep: state.wizardActiveStep,\r\n visualizer: getCommonVisualizerType(),\r\n wizardSelectedValues: Object.assign({}, wizardSelectedValues)\r\n };\r\n const existingIndex = state.allWizardsValues.findIndex(wizSelObject => {\r\n return wizSelObject.wizardItemId === newWizObject.wizardItemId\r\n && (wizSelObject.quoteIndex === newWizObject.quoteIndex) && isSameVisualizerWizard(wizSelObject)\r\n });\r\n existingIndex > -1\r\n ? state.allWizardsValues.splice(existingIndex, 1, newWizObject)\r\n : state.allWizardsValues.push(newWizObject);\r\n\r\n state.allWizardsValues = state.allWizardsValues.map(wizObject => {\r\n if (wizObject.quoteIndex === quoteIndex && isSameVisualizerWizard(wizObject)) {\r\n wizObject.isLastActiveWizard = wizObject.wizardItemId === wizardItemId // to return back and force correctly\r\n }\r\n return wizObject\r\n });\r\n\r\n return [...state.allWizardsValues]\r\n}\r\n\r\nexport default function(state = initialState, action) {\r\n\r\n switch(action.type) {\r\n\r\n case types.SET_WIZARD_IS_ACTIVE: {\r\n const newState = Object.assign({}, state, {wizardIsActive: action.payload.wizardIsActive});\r\n if (action.payload.visualizerType && !state.wizardIsActiveObject[action.payload.visualizerType]) {\r\n newState.wizardIsActiveObject = {\r\n ...state.wizardIsActiveObject,\r\n [action.payload.visualizerType]: action.payload.wizardIsActive\r\n }\r\n }\r\n return newState;\r\n }\r\n case types.SET_WIZARD_ACTIVE_FILTER_GROUP_INDEX: // NOT USED!\r\n case types.SET_WIZARD_CONFIG:\r\n case types.SET_WIZARD_SHOW_FEATURE_SECTION:\r\n case types.RESTORE_ALL_WIZARD_SELECTED_VALUES:\r\n case types.SET_WIZARD_CONFLICT_POPUP_OPENED:\r\n case types.SET_WIZARD_SQFT_CART_ITEMS:\r\n case types.SET_WIZARD_CONFLICT_STEPS:\r\n case types.SET_WIZARD_ALLOW_SKIP_DONE_STEPS:\r\n return Object.assign({}, state, {\r\n ...action.payload\r\n });\r\n case types.SET_WIZARD_LIST:\r\n return Object.assign({}, state, {\r\n wizardList: uniqBy([...state.wizardList, ...action.payload.wizardList], wizItem => wizItem.id)\r\n });\r\n case types.SET_WIZARD_ACTIVE_ITEM:\r\n if (action.payload.wizardActiveItem) {\r\n const alreadySelectedWizard = state.allWizardsValues.find(wizard => {\r\n return wizard.wizardItemId === action.payload.wizardActiveItem.id && (wizard.quoteIndex === action.payload.quoteIndex)\r\n });\r\n if (alreadySelectedWizard) {\r\n action.payload.wizardSelectedValues = Object.assign({}, alreadySelectedWizard.wizardSelectedValues); // restore added data\r\n action.payload.wizardActiveStep = Number.isInteger(alreadySelectedWizard.lastVisitedStep)\r\n ? alreadySelectedWizard.lastVisitedStep // restore last step\r\n : Object.keys(alreadySelectedWizard.wizardSelectedValues).length // restore last step (just in case lastVisitedStep is missing)\r\n action.payload.wizardWasRestored = true // for complete popup\r\n } else if ((state.wizardActiveStep === -1) && action.payload.wizardActiveItem.skipStartStep) {\r\n action.payload.wizardActiveStep = 0;\r\n }\r\n action.payload.allWizardsValues = state.allWizardsValues.map(wizObject => {\r\n if (wizObject.quoteIndex === action.payload.quoteIndex && isSameVisualizerWizard(wizObject)) {\r\n wizObject.isLastActiveWizard = wizObject.wizardItemId === action.payload.wizardActiveItem.id // to return back and force correctly\r\n }\r\n return wizObject\r\n })\r\n }\r\n return Object.assign({}, state, {\r\n ...action.payload,\r\n });\r\n case types.SET_WIZARD_ACTIVE_STEP: {\r\n return Object.assign({}, state, {\r\n wizardActiveStep: action.payload.wizardActiveStep,\r\n wizardSelectedValues: action.payload.wizardSelectedValues,\r\n wizardConflictingSteps: action.payload.wizardConflictingSteps,\r\n wizardWasRestored: false,\r\n wizardAllowSkipDoneSteps: action.payload.wizardActiveStep < state.wizardActiveStep\r\n ? false\r\n : state.wizardAllowSkipDoneSteps,\r\n });\r\n }\r\n case types.SET_WIZARD_SELECTED_VALUES: {\r\n if (action.payload.allWizardsValues) {\r\n return Object.assign({}, state, {\r\n allWizardsValues: action.payload.allWizardsValues,\r\n wizardSelectedValues: action.payload.wizardSelectedValues,\r\n wizardConflictingSteps: action.payload.wizardConflictingSteps\r\n });\r\n }\r\n return Object.assign({}, state, {\r\n wizardSelectedValues: action.payload.wizardSelectedValues,\r\n wizardConflictingSteps: action.payload.wizardConflictingSteps\r\n });\r\n }\r\n case types.SET_WIZARD_MISSING_FEATURES: {\r\n const wizardMissingFeatures = {\r\n ...state.wizardMissingFeatures,\r\n [action.payload.groupName]: action.payload.wizardMissingFeatures\r\n }\r\n return Object.assign({}, state, {wizardMissingFeatures});\r\n }\r\n case types.SET_ALL_WIZARD_SELECTED_VALUES: {\r\n const {wizardSelectedValues, quoteIndex, wizardItemId} = action.payload;\r\n const existingAllObject = state.allWizardsValues.find(wizSelObject => {\r\n return wizSelObject.wizardItemId === wizardItemId && wizSelObject.quoteIndex === quoteIndex\r\n });\r\n const existingValues = existingAllObject ? existingAllObject.wizardSelectedValues : {};\r\n const updatedValues = Object.assign({}, existingValues, wizardSelectedValues)\r\n const allWizardsValues = getUpdatedAllWizardValues(state, quoteIndex, wizardItemId, updatedValues);\r\n return Object.assign({}, state, {allWizardsValues});\r\n }\r\n case types.SET_LOOK_OPENED:\r\n if (!action.payload.lookOpened && state.wizardActiveItem) {\r\n return Object.assign({}, state, { wizardActiveItem: null });\r\n }\r\n break;\r\n }\r\n\r\n return state;\r\n\r\n}\r\n","import {LOOK_ROOM_TYPES} from \"../bvcomponents/look/core/constants\";\r\n\r\n/**\r\n * @param preset {object} visualizer management preset\r\n * @param forVisualizerType {string} visualizer type\r\n * @return {object} visualizer management preset\r\n */\r\nexport const updatePresetRoomLayout = (preset, forVisualizerType = document.kvConfig.visualizerType) => {\r\n if (!preset.lookId) {\r\n preset.lookId = 0;\r\n }\r\n if ((forVisualizerType === \"bvLook\")) {\r\n if (preset.roomType === LOOK_ROOM_TYPES.as) {\r\n preset.layout_type = preset.layout_type > 20\r\n ? preset.layout_type - 10\r\n : preset.layout_type < 10\r\n ? preset.layout_type + 10\r\n : preset.layout_type;\r\n } else {\r\n preset.layout_type = preset.layout_type >= 10\r\n ? preset.layout_type - 10\r\n : preset.layout_type;\r\n }\r\n }\r\n return preset\r\n}\r\n\r\nexport const updatePresetsArray = (responseDefaults, forVisualizerType) => {\r\n let bvPresets = JSON.parse(responseDefaults) || [];\r\n const noPresetsAtAll = bvPresets.every(preset => !preset.id);\r\n return bvPresets.map((preset, presetIndex) => {\r\n if (noPresetsAtAll) {\r\n preset.id = presetIndex + 1;\r\n } else if (!Number.isInteger(preset.id)) {\r\n preset.id = presetIndex + 100 // 100 is to make id's really unique\r\n }\r\n preset = updatePresetRoomLayout(preset, forVisualizerType);\r\n return preset\r\n });\r\n}\r\n","import CountertopCommon from \"../countertopCommon\";\r\nimport Appliance from \"../../parts/appliance\";\r\nimport {LayoutAbbreviations, METADATA} from \"../../constants\";\r\n\r\nexport default class Countertop extends CountertopCommon {\r\n constructor(isChild, partNumber = 0) {\r\n super(isChild);\r\n this.partNumber = partNumber;\r\n this.partId = 'countertop';\r\n this.partName = 'Countertop';\r\n this.translateId = \"visualizer.kitchen.countertop.countertop\";\r\n this.isStoneFeature = true;\r\n this.hasAdditionalParts = true;\r\n this.allWallsCanBeApplied = true;\r\n if (isChild) {\r\n this.nextFeaturesPageToLoadArray = {};\r\n LayoutAbbreviations.forEach(layoutAbbreviation => {\r\n this.nextFeaturesPageToLoadArray[layoutAbbreviation] = {\r\n page: 0,\r\n allReceived: false,\r\n };\r\n });\r\n }\r\n }\r\n\r\n load(dbFeature) {\r\n this.fixEdgeMeta(dbFeature);\r\n if (dbFeature.metaData[\"MountType\"] && dbFeature.metaData[\"MountType\"].includes(\"0\")) {\r\n dbFeature.metaData[\"MountType\"] = [METADATA.ALL]\r\n }\r\n if (dbFeature.metaData[\"MountWidth\"] && dbFeature.metaData[\"MountWidth\"].includes(\"0\")) {\r\n dbFeature.metaData[\"MountWidth\"] = [METADATA.ALL]\r\n }\r\n const partNumber = (dbFeature.metaData[\"Part\"] && +dbFeature.metaData[\"Part\"][0]) === 1 ? 1 : 2;\r\n return super.load_(dbFeature, new Countertop(false, partNumber), true, partNumber === 1 ? 'features' : 'featuresParts');\r\n }\r\n\r\n getCurrentSinkMetaData() {\r\n const sinkParent = this.getParent().sink;\r\n let metaObject = {};\r\n if (sinkParent && sinkParent.activeFeature) {\r\n const sinkMeta = sinkParent.activeFeature.metaData[\"MountType\"];\r\n if (sinkMeta && (sinkMeta !== \"0\") && !sinkMeta.includes(\"0\")) {\r\n metaObject[\"MountType\"] = Array.isArray(sinkMeta) ? sinkMeta[0] : sinkMeta\r\n }\r\n const mountWidthMeta = sinkParent.activeFeature.metaData[\"MountWidth\"];\r\n if (mountWidthMeta && (mountWidthMeta !== \"0\") && !mountWidthMeta.includes(\"0\")) { // if 0 - we are showing all faucets\r\n metaObject[\"MountWidth\"] = mountWidthMeta\r\n }\r\n }\r\n return metaObject\r\n }\r\n\r\n getArrayOfConditions() {\r\n const conditions = super.getArrayOfConditions();\r\n const currentSinkMetaData = this.getCurrentSinkMetaData();\r\n [\"MountType\", \"MountWidth\"].forEach(propName => {\r\n if (currentSinkMetaData[propName]) {\r\n conditions.push({\r\n propName,\r\n propValue: currentSinkMetaData[propName]\r\n })\r\n }\r\n })\r\n // console.log(\"conditions\", conditions);\r\n return conditions;\r\n }\r\n\r\n getActiveFeaturePartsAccordingToActiveFeature(fromFeature = this.activeFeature, activeFeatureConditions = []) {\r\n let activeFeatureParts = [];\r\n if (fromFeature && fromFeature.partNumber) {\r\n const name1 = fromFeature.getSplittedFeatureName();\r\n // console.log(\"name1\", name1);\r\n let arrayOfConditions = activeFeatureConditions.length\r\n ? activeFeatureConditions\r\n : this.getActiveFeatureConditions(fromFeature);\r\n\r\n const conditionsWithoutSink = arrayOfConditions.filter(condition => {\r\n return condition.propName !== \"MountType\" && condition.propName !== \"MountWidth\"\r\n })\r\n\r\n const countertopParent = this.getParent();\r\n const applianceParent = countertopParent.layout.parts[Appliance.id];\r\n // const sink = countertopParent.sink;\r\n\r\n activeFeatureParts = this.featuresParts.filter((feature) => {\r\n if (feature.metaData[\"Part\"] && feature.metaData[\"Part\"].includes(\"2\")\r\n && applianceParent && applianceParent.stove && !applianceParent.stove.disabled && applianceParent.stove.activeFeature) {\r\n return false\r\n }\r\n // if (feature.metaData[\"Part\"] && feature.metaData[\"Part\"].includes(\"4\")\r\n // && sink && !sink.disabled && sink.activeFeature && sink.activeFeature.metaData[\"MountType\"] && sink.activeFeature.metaData[\"MountType\"].includes(\"ST\")\r\n // && !feature.matchesMetaForCondition(\"MountType\", \"ST\")) {\r\n // return false\r\n // }\r\n if (feature.metaData[\"Part\"] && (feature.metaData[\"Part\"].includes(\"2\") || feature.metaData[\"Part\"].includes(\"3\"))) {\r\n return name1 === feature.getSplittedFeatureName() && feature.matchesMetaForArrayOfConditions(conditionsWithoutSink)\r\n }\r\n return name1 === feature.getSplittedFeatureName() && feature.matchesMetaForArrayOfConditions(arrayOfConditions)\r\n });\r\n\r\n // console.log(\"this.featuresParts\", this.featuresParts);\r\n // console.log(\"activeFeatureParts\", activeFeatureParts);\r\n activeFeatureParts.forEach((activeFeaturePart) => {\r\n activeFeaturePart.disabled = this.disabled\r\n });\r\n }\r\n return activeFeatureParts\r\n }\r\n}\r\n","import uniqBy from \"lodash/uniqBy\";\r\n\r\nimport {IntermediatePart} from \"../intermediatePart\";\r\nimport store from \"../../../../store\";\r\n\r\nexport default class CountertopCommon extends IntermediatePart {\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n fixEdgeMeta(dbFeature) {\r\n if (dbFeature.metaData[\"Edge\"]) {\r\n const metaValue = Array.isArray(dbFeature.metaData[\"Edge\"]) ? dbFeature.metaData[\"Edge\"][0] : dbFeature.metaData[\"Edge\"];\r\n switch (metaValue) {\r\n case \"European Edge\":\r\n dbFeature.metaData[\"Edge\"] = \"Eased\";\r\n break;\r\n case \"Polished\":\r\n case \"Polished Edge\":\r\n case \"Top and bottom round\":\r\n case \"Top and Bottom Round\":\r\n dbFeature.metaData[\"Edge\"] = \"Pencil\";\r\n break;\r\n case \"Waterfall Edge\":\r\n dbFeature.metaData[\"Edge\"] = \"Waterfall\";\r\n break;\r\n default:\r\n dbFeature.metaData[\"Edge\"] = metaValue.split(\" Edge\")[0];\r\n break;\r\n }\r\n } else {\r\n // console.log(\"No Edge Metadata\", dbFeature);\r\n }\r\n }\r\n\r\n navigationSubItems(filters, searchText) {\r\n const filteredAvailableFeatures = super.getFeaturesBySearchText(super.getFilteredFeaturesByFilters(filters), searchText);\r\n let featuresToDisplay = super.navigationSubItemsWithFilterMultipleConditions(this.getArrayOfConditions(), filteredAvailableFeatures);\r\n\r\n let newFeatures = uniqBy(this.getSameEdgesFeatures(featuresToDisplay), (feature) => {\r\n return feature.dbFeature.id && feature.getSplittedFeatureName()\r\n });\r\n\r\n for (let i = 0; i < featuresToDisplay.length; i++) {\r\n const currentFeature = featuresToDisplay[i];\r\n const currentFeatureName = currentFeature.getSplittedFeatureName();\r\n if (!newFeatures.some(addedFeature => {\r\n return addedFeature.dbFeature.id === currentFeature.dbFeature.id\r\n || addedFeature.getSplittedFeatureName() === currentFeatureName\r\n })) {\r\n newFeatures.push(currentFeature)\r\n }\r\n }\r\n\r\n return this.returnNavItemsFromFeatures(newFeatures)\r\n }\r\n\r\n setActiveFeatureParts(fromFeature = this.activeFeature, activeFeatureConditions = []) {\r\n if (!this.hasAdditionalParts) {\r\n return []\r\n }\r\n let activeFeatureParts = this.getActiveFeaturePartsAccordingToActiveFeature(fromFeature, activeFeatureConditions);\r\n return activeFeatureParts\r\n }\r\n\r\n getActiveFeatureConditions() {\r\n if (this.activeFeature) {\r\n return [...this.getArrayOfConditions(), {\r\n propName: \"Edge\",\r\n propValue: this.activeFeature.metaData[\"Edge\"]\r\n }]\r\n }\r\n return this.getArrayOfConditions()\r\n }\r\n\r\n setLayers(layout) {\r\n if (this.activeFeature && (this.activeFeature.matchesMetaForArrayOfConditions(this.getArrayOfConditions()))) {\r\n this.checkIfFeaturePartIsMatching();\r\n super.setLayers(layout);\r\n } else {\r\n this.setDefault();\r\n super.setLayers(layout);\r\n }\r\n }\r\n\r\n getSameEdgesFeatures(featuresToDisplay) {\r\n let currentEdgeMetaData = \"\";\r\n if (this.activeFeature && this.activeFeature.metaData[\"Edge\"]) {\r\n currentEdgeMetaData = Array.isArray(this.activeFeature.metaData[\"Edge\"]) ? this.activeFeature.metaData[\"Edge\"][0] : this.activeFeature.metaData[\"Edge\"];\r\n }\r\n if (!currentEdgeMetaData) {\r\n const edgeFeatureGroup = this.getParent().edge;\r\n if (edgeFeatureGroup && edgeFeatureGroup.activeFeature) {\r\n currentEdgeMetaData = edgeFeatureGroup.activeFeature.dbFeature.sharedFeatureName;\r\n }\r\n }\r\n if (currentEdgeMetaData) {\r\n featuresToDisplay = featuresToDisplay.filter((feature) => {\r\n return !feature.notAvailableInVisualizer && feature.metaData[\"Edge\"] && (\r\n Array.isArray(feature.metaData[\"Edge\"])\r\n ? feature.metaData[\"Edge\"].includes(currentEdgeMetaData)\r\n : feature.metaData[\"Edge\"] === currentEdgeMetaData\r\n )\r\n });\r\n }\r\n return featuresToDisplay\r\n }\r\n\r\n getFeatureEdgeFilter = (feature, edgeFilterGroup) => {\r\n if (!feature) {\r\n return null\r\n }\r\n if (!edgeFilterGroup) {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n edgeFilterGroup = filterGroups.find(group => group.name === \"Edge\" || group.name === \"Edge Profile\");\r\n }\r\n return feature.dbFeature.fabFilterValueIDs[edgeFilterGroup.id] || feature.dbFeature.filterValueIDs[edgeFilterGroup.id]\r\n };\r\n\r\n tryToSetTheSameFeature(filteredFeatures = [], partName = \"\") {\r\n if (this.activeFeature && this.activeFeature.partName) {\r\n let splittedFromTheLayoutName = partName\r\n ? this.removeLayoutFromPartName(partName)\r\n : this.activeFeature.getMatchingFeatureName();\r\n const allEdgesCountertops = filteredFeatures.filter(feature => {\r\n return feature.getMatchingFeatureName() === splittedFromTheLayoutName\r\n });\r\n const sameEdgeCountertops = this.getSameEdgesFeatures(allEdgesCountertops);\r\n this.activeFeature = sameEdgeCountertops[0] || allEdgesCountertops[0] || null\r\n if (this.activeFeature) {\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n\r\n}\r\n","import {IntermediatePart} from \"../intermediatePart\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {mergeFilterObjects} from \"../../../../misc/utils\";\r\nimport store from \"../../../../store\";\r\nimport {hardCodeIsCaesarStone} from \"../../../../misc/fabricatorHardcode\";\r\n\r\n// EDGE features:\r\n//\r\n// Full Bullnose\r\n// Triple Pencil\r\n// Eased\r\n// Half Bullnose\r\n// Quarter Bevel\r\n// Waterfall\r\n// Ogee\r\n//\r\n//\r\n// Ogee Bull\r\n// Pencil\r\n// Bevel Top and Bottom\r\n//\r\n// Caes hardcode - Bevel Top and Bottom - is Quarter Bevel\r\n//\r\n// ========================\r\n//\r\n// Countertop features:\r\n//\r\nconst countertopMetaDataValues = [\"Full Bullnose\", \"Triple Pencil\", \"Eased\", \"Half Bullnose\", \"Quarter Bevel\",\r\n \"Waterfall\", \"Ogee\"];\r\n//\r\n// Top and Bottom Round\r\n\r\n\r\nexport default class EdgeCommon extends IntermediatePart {\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n load(dbFeature) {\r\n if (!dbFeature.metaData[\"Edge\"] || (Array.isArray(dbFeature.metaData[\"Edge\"]) && !dbFeature.metaData[\"Edge\"].length)) {\r\n const edgeFilterGroup = this.getEdgeFilterGroup();\r\n const assignedEdgeFilter = this.getEdgeFilterGroupFilters({dbFeature}, edgeFilterGroup);\r\n dbFeature.metaData[\"Edge\"] = (dbFeature.sharedFeatureName || \"\").split(\" Edge\")[0];\r\n if (Array.isArray(assignedEdgeFilter) && assignedEdgeFilter[0] && edgeFilterGroup && edgeFilterGroup.values) {\r\n const fValue = edgeFilterGroup.values.find(filter => filter.id === assignedEdgeFilter[0]);\r\n if (fValue && fValue.value) {\r\n const metaDataMatchName = fValue.value.split(\" Edge\")[0];\r\n if (countertopMetaDataValues.includes(metaDataMatchName)) {\r\n dbFeature.metaData[\"Edge\"] = metaDataMatchName;\r\n }\r\n }\r\n }\r\n if (document.kvConfig.isCaesarStone || hardCodeIsCaesarStone()) {\r\n if (dbFeature.metaData[\"Edge\"] === \"Edge Profile – Ogee (Linear Feet)\") {\r\n dbFeature.metaData[\"Edge\"] = \"Ogee\"\r\n } else if (dbFeature.metaData[\"Edge\"] === \"Bevel Top and Bottom\") {\r\n dbFeature.metaData[\"Edge\"] = \"Quarter Bevel\"\r\n }\r\n }\r\n }\r\n return super.load(dbFeature);\r\n }\r\n\r\n navigationSubItems(filters, searchText) {\r\n const filteredAvailableFeatures = super.getFeaturesBySearchText(super.getFilteredFeaturesByFilters(filters), searchText);\r\n let featuresToDisplay = super.navigationSubItemsWithFilterMultipleConditions(this.getArrayOfConditions(true), filteredAvailableFeatures);\r\n const edgeFilterGroup = this.getEdgeFilterGroup();\r\n const parentGroup = this.getParent();\r\n const countertop = parentGroup.countertop;\r\n\r\n // here we check if some countertop has the same name as currently active countertop & it has edge filter\r\n if (edgeFilterGroup && countertop && countertop.activeFeature) {\r\n if (this.partId === \"center_island_edge\" && parentGroup.layout.type === 3) {\r\n return []\r\n }\r\n featuresToDisplay = featuresToDisplay.map((feature) => {\r\n feature.notAvailableInVisualizer = !(this.getMatchingCounterTop(feature)).matchingFeature;\r\n return feature\r\n });\r\n }\r\n\r\n return featuresToDisplay.map(_ => {\r\n const featurePart = new DesignNavigationItem(_.featureName, _);\r\n featurePart.notAvailableInVisualizer = featurePart.part.notAvailableInVisualizer;\r\n return featurePart\r\n });\r\n }\r\n\r\n handleClick(ignoreLocked) {\r\n super.handleClick(ignoreLocked); // set active edge feature\r\n const matchCounterTopObject = this.getMatchingCounterTop();\r\n console.log(\"matchCounterTopObject\", matchCounterTopObject);\r\n if (matchCounterTopObject.matchingFeature) {\r\n matchCounterTopObject.matchingFeature.handleClick(true);\r\n }\r\n this.featureClicked();\r\n }\r\n\r\n /***\r\n * @returns {object}\r\n * **/\r\n getMatchingCounterTop = (feature = this) => {\r\n const parent = feature.getParent();\r\n const countertop = parent.getParent().countertop;\r\n\r\n if (!countertop) {\r\n return {matchingFeature: null, hasSameName: false}\r\n }\r\n\r\n if (countertop.activeFeature && (countertop.activeFeature.metaData[\"Edge\"] === feature.metaData[\"Edge\"])) {\r\n return {matchingFeature: countertop.activeFeature, hasSameName: true} // no need to do anything\r\n }\r\n\r\n let matchingByName = [];\r\n let matchingFeatures = [];\r\n const allCountertopFeatures = countertop.features;\r\n let currentActiveName = countertop.activeFeature ? countertop.activeFeature.getCountertopGroupsSplittedFeatureName() : \"\";\r\n for (let i = 0; i < allCountertopFeatures.length; i++) {\r\n const countertopFeature = allCountertopFeatures[i];\r\n if (countertopFeature.notAvailableInVisualizer) {\r\n continue;\r\n }\r\n if (countertopFeature.metaData[\"Edge\"] === feature.metaData[\"Edge\"]) {\r\n matchingFeatures.push(countertopFeature);\r\n if (currentActiveName && (currentActiveName === countertopFeature.getCountertopGroupsSplittedFeatureName())) {\r\n matchingByName.push(countertopFeature);\r\n }\r\n }\r\n }\r\n if (matchingByName.length) {\r\n return {matchingFeature: matchingByName[0], hasSameName: true}\r\n }\r\n return {matchingFeature: matchingFeatures[0] || null, hasSameName: false}\r\n };\r\n\r\n getEdgeFilterGroupFilters = (feature, edgeFilterGroup) => {\r\n if (!feature._allEdgeFilters) {\r\n const allEdgeFilters = mergeFilterObjects(feature.dbFeature.filterValueIDs, feature.dbFeature.fabFilterValueIDs);\r\n feature._allEdgeFilters = allEdgeFilters && edgeFilterGroup ? allEdgeFilters[edgeFilterGroup.id] : [];\r\n }\r\n return feature._allEdgeFilters;\r\n };\r\n\r\n getMatchingCounterTopFeaturesBySplittedName = (countertop, matchingFeatures = []) => { // array of sorted by filter features\r\n if (!countertop.activeFeature) {\r\n return []\r\n }\r\n let currentActiveName = countertop.activeFeature.getCountertopGroupsSplittedFeatureName();\r\n return matchingFeatures.filter(feature => {\r\n const currentFeatureName = feature.getCountertopGroupsSplittedFeatureName();\r\n return currentFeatureName === currentActiveName\r\n })\r\n };\r\n\r\n getEdgeFilterGroup = () => {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n return filterGroups.find(group => group.name === \"Edge\" || group.name === \"Edge Profile\");\r\n };\r\n\r\n getArrayOfConditions(forNavigation = false) {\r\n const countertop = this.getParent().countertop;\r\n if (!forNavigation && countertop && countertop.activeFeature && countertop.activeFeature.metaData[\"Edge\"]) {\r\n return [{\r\n propName: \"Edge\",\r\n propValue: countertop.activeFeature.metaData[\"Edge\"]\r\n }]\r\n }\r\n return [];\r\n }\r\n\r\n canUseNavigationFilterSteps() {\r\n return true\r\n }\r\n\r\n setLayers(layout) {\r\n if (this.activeFeature && (!this.activeFeature.matchesMetaForArrayOfConditions(this.getArrayOfConditions()))) {\r\n this.setDefault(layout);\r\n }\r\n return false\r\n }\r\n\r\n setZIndex() {\r\n return false\r\n }\r\n\r\n setEdgeNotInVisualizer = () => {\r\n // console.log(\"setEdgeNotInVisualizer\", );\r\n const countertop = this.getParent().countertop;\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n const edgeGroup = filterGroups.find(group => group.name === \"Edge\" || group.name === \"Edge Profile\");\r\n if (edgeGroup && countertop) {\r\n Object.keys(this.featuresList).forEach(layoutType => {\r\n for (let i = 0; i < this.featuresList[layoutType].length; i++) {\r\n const feature = this.featuresList[layoutType][i];\r\n if (feature.dbFeature.filterValueIDs[edgeGroup.id]) {\r\n const edgeValue = feature.dbFeature.filterValueIDs[edgeGroup.id][0];\r\n const edgeExist = countertop.featuresList[layoutType].some(countertopFeature => {\r\n return countertopFeature.dbFeature.filterValueIDs[edgeGroup.id]\r\n && countertopFeature.dbFeature.filterValueIDs[edgeGroup.id].includes(edgeValue)\r\n });\r\n if (edgeExist) {\r\n feature.notAvailableInVisualizer = false\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport {LOWES_DISCLAIMER_EN} from \"../../../misc/fabricatorHardcode\";\r\n\r\nconst warningIcon = `https://qc-cdn.s3.amazonaws.com/receipt/icon-warning-red.jpg`;\r\n\r\nconst PrintDocumentDisclaimer = (props) => {\r\n const {fabricatorData, locale, styles, withTotal, messages, showPrice} = props;\r\n const fabricatorSettings = fabricatorData.settings;\r\n\r\n const {View, Text, Image} = window.ReactPdfRenderer;\r\n\r\n if (!fabricatorSettings.depositDisclaimer || !fabricatorSettings.enableDisclaimer) {\r\n return null\r\n }\r\n\r\n const hugeDisclaimer = fabricatorSettings.depositDisclaimer.length >= 1500;\r\n\r\n const hideDisclaimer = (withTotal && hugeDisclaimer) // we will display it below total, full width\r\n || (showPrice && !withTotal && !hugeDisclaimer) // it should be in left, or full\r\n\r\n if (hideDisclaimer) {\r\n return null\r\n }\r\n\r\n const getDisclaimerMessage = () => {\r\n if ((fabricatorData.isLowes || fabricatorData.isCaesarStone)) {\r\n if (locale === \"fr-FR\" && messages[\"transDoc.description_FR._disclaimer\"]) {\r\n return messages[\"transDoc.description_FR._disclaimer\"]\r\n } else if (locale === \"pl-PL\" && messages[\"transDoc.customTranslateDescription_PL._disclaimer\"]) {\r\n return messages[\"transDoc.customTranslateDescription_PL._disclaimer\"]\r\n } else if (messages[\"transDoc.customDisplayName_FR._disclaimer\"]) { // it is actually EN ! hardcoded for lowes profiles\r\n return messages[\"transDoc.customDisplayName_FR._disclaimer\"]\r\n } else if (fabricatorData.isLowes) {\r\n return LOWES_DISCLAIMER_EN\r\n }\r\n }\r\n return fabricatorSettings.depositDisclaimer\r\n }\r\n\r\n const disclaimerMessage = getDisclaimerMessage();\r\n\r\n // if (withTotal) {\r\n // return (\r\n // \r\n // \r\n // {disclaimerMessage}\r\n // \r\n // )\r\n // }\r\n\r\n return (\r\n \r\n \r\n \r\n {disclaimerMessage}\r\n \r\n \r\n )\r\n\r\n};\r\n\r\nPrintDocumentDisclaimer.propTypes = {\r\n fabricatorData: PropTypes.object.isRequired,\r\n styles: PropTypes.object.isRequired,\r\n withTotal: PropTypes.bool,\r\n};\r\n\r\nexport default PrintDocumentDisclaimer\r\n","import {getNextWizardSteps} from \"./wizardLogicOld\";\r\n\r\nexport const LEAD_WIZARD_GROUP_TYPES = {\r\n group: \"group\",\r\n filter: \"filter\",\r\n custom: \"custom\",\r\n inputs: \"inputs\",\r\n contact: \"contact\",\r\n appointment: \"appointment\",\r\n review: \"review\",\r\n success: \"success\",\r\n}\r\n\r\n/**\r\n * this returns new wizard steps depending on the current selection\r\n * @param wizardActiveItem {wizardItemInterface}\r\n * @param currentStep {number}\r\n * @param wizardSelectedValues {object}\r\n * @returns {object}\r\n */\r\nexport const getLeadFormSteps = (wizardActiveItem, currentStep, wizardSelectedValues) => {\r\n const wizardSteps = getNextWizardSteps(wizardActiveItem, currentStep, wizardSelectedValues);\r\n // console.log(\"wizardSteps\", wizardSteps);\r\n let leadFormSteps = [];\r\n wizardSteps.forEach(step => {\r\n if (step.stepGroups.length && step.stepGroups[0].leadStep) {\r\n let existingLeadStepObject = leadFormSteps.find(leadStepObject => {\r\n return leadStepObject.leadStepName === step.stepGroups[0].leadStep\r\n });\r\n if (!existingLeadStepObject) {\r\n existingLeadStepObject = {\r\n leadStepName: step.stepGroups[0].leadStep,\r\n leadStepUrl: step.stepGroups[0].leadStepUrl,\r\n leadSubSteps: []\r\n }\r\n leadFormSteps.push(existingLeadStepObject);\r\n }\r\n existingLeadStepObject.leadSubSteps.push({\r\n stepIndex: step.stepIndex,\r\n wizardGroup: step.stepGroups[0], // not needed for now\r\n });\r\n }\r\n })\r\n // const leadFormSteps = wizardSteps.reduce((total, step) => {\r\n // if (step.stepGroups.length && step.stepGroups[0].leadStep && !total.includes(step.stepGroups[0].leadStep)) {\r\n // total.push(step.stepGroups[0].leadStep)\r\n // }\r\n // return total\r\n // }, []);\r\n return leadFormSteps\r\n}\r\n\r\n/**\r\n * this returns lowercased url\r\n * @param leadStepName {string}\r\n * @returns {string}\r\n */\r\nexport const getUrlLeadStepName = (leadStepName = \"\") => {\r\n if (!leadStepName) {\r\n return \"\"\r\n }\r\n return leadStepName.toLowerCase().replace(/ /g,\"-\")\r\n}\r\n\r\nexport const fixStringEncoding = (string) => {\r\n return string && (typeof string === \"string\")\r\n ? string\r\n .replace(\"â€�\", \"”\")\r\n .replace(\"”\", \"”\")\r\n .replace(\"’\", \"’\")\r\n .replace(\"
\", \" \")\r\n .replace(\"
\", \"\") // not sure what it is\r\n : string\r\n}\r\n\r\nexport const fixWizardItem = (wizardItem, wizardItemIndex, forLeadForm = false) => {\r\n wizardItem.wizardNodes = []; // we don't use them in the visualizer! why do we keep them then\r\n Object.keys(wizardItem).forEach(property => {\r\n if (typeof wizardItem[property] === \"string\") {\r\n wizardItem[property] = fixStringEncoding(wizardItem[property]);\r\n }\r\n });\r\n if (!wizardItem.name) {\r\n wizardItem.name = \"wizard\" + (wizardItemIndex > 0 ? \"-\" + wizardItemIndex + 1 : \"\");\r\n }\r\n const currentVisType = \"leadform\";\r\n if (wizardItem.wizardGroups) {\r\n wizardItem.wizardGroups = wizardItem.wizardGroups.filter(wizGroup => {\r\n if (!wizGroup.enabled || (wizGroup.hideForCustomers && !document.kvConfig.isBackend)) {\r\n return false\r\n }\r\n if (wizardItem.visualizer === \"all\") {\r\n return (wizGroup.groupName === \"Room\") || !Array.isArray(wizGroup.visibleInVisualizers)\r\n || !wizGroup.visibleInVisualizers.length || wizGroup.visibleInVisualizers.includes(currentVisType)\r\n }\r\n return true\r\n }).map(wizGroup => {\r\n if (forLeadForm) {\r\n //getUrlLeadStepName\r\n wizGroup.leadStepUrl = wizGroup.leadStep\r\n ? wizGroup.leadStep.toLowerCase().replace(/ /g,\"-\")\r\n : \"project\"\r\n }\r\n if (wizGroup.nodeType === \"inputs\" && Array.isArray(wizGroup.inputFields)) {\r\n wizGroup.inputFields = wizGroup.inputFields.filter(inputObject => inputObject.checked)\r\n }\r\n Object.keys(wizGroup).forEach(property => {\r\n if (typeof wizGroup[property] === \"string\") {\r\n wizGroup[property] = fixStringEncoding(wizGroup[property]);\r\n }\r\n });\r\n [\"featuresIncluded\", \"featuresExcluded\"].forEach(property => {\r\n if (Array.isArray(wizGroup[property]) && wizGroup[property].length) {\r\n wizGroup[property] = wizGroup[property].map(excluded => {\r\n if (excluded && (typeof excluded === \"object\") && excluded.sharedFeatureName) {\r\n excluded.sharedFeatureName = excluded.sharedFeatureName\r\n .trim()\r\n .toLowerCase()\r\n .replace('room - ', '')\r\n }\r\n return excluded\r\n })\r\n }\r\n });\r\n return wizGroup\r\n })\r\n }\r\n return wizardItem\r\n}\r\n","import {LEAD_WIZARD_GROUP_TYPES} from \"./wizardLogic\";\r\n\r\n/**\r\n * @param dbFeature {dbFeatureInterface}\r\n * @param wizardGroup {wizardGroupInterface}\r\n * @returns {boolean}\r\n */\r\nexport const featureIsExcluded = (dbFeature, wizardGroup) => {\r\n const {sku, featureDefinitionID, customDisplayName, matchingName} = dbFeature;\r\n if (wizardGroup.useIncluded && wizardGroup.featuresIncluded) {\r\n return !wizardGroup.featuresIncluded.some(includedFeature => {\r\n return (includedFeature.sharedFeatureName && (includedFeature.sharedFeatureName === matchingName))\r\n || (includedFeature.featureDefinitionId === featureDefinitionID)\r\n || (!includedFeature.sharedFeatureName && (includedFeature.name === customDisplayName))\r\n || (includedFeature.sku && sku && (includedFeature.sku === sku))\r\n })\r\n }\r\n return false\r\n}\r\n\r\n/**\r\n * returns current wizard step section items\r\n * @param features {featureInterface}\r\n * @param wizardGroup {wizardGroupInterface}\r\n * @returns {array}\r\n */\r\nexport const getFilteredNavItems = (features, wizardGroup) => {\r\n return features.filter(feature => !featureIsExcluded(feature, wizardGroup))\r\n};\r\n\r\n/**\r\n * returns current wizard step section items\r\n * @param wizardActiveItem {wizardItemInterface}\r\n * @param wizardActiveStep {number}\r\n * @param wizardSelectedValues {object}\r\n * @param prevStepGroups {[wizardGroupInterface]}\r\n * @param additionalWizardValuesToCheck {object}\r\n * @returns {array}\r\n */\r\nexport const getCurrentGroups = (wizardActiveItem,\r\n wizardActiveStep,\r\n wizardSelectedValues,\r\n prevStepGroups = [],\r\n additionalWizardValuesToCheck= null) => {\r\n if (!wizardActiveItem || wizardActiveStep < 0) {\r\n return []\r\n }\r\n const stepStr = \"\" + wizardActiveStep;\r\n\r\n if (wizardActiveStep === 0) {\r\n return getCurrentGroupsFromSource(stepStr, wizardActiveItem)\r\n }\r\n\r\n const selectedPrevStep = wizardSelectedValues[wizardActiveStep - 1];\r\n if (!selectedPrevStep || !selectedPrevStep.wizardGroup) {\r\n if (prevStepGroups.length && prevStepGroups[0].id) {\r\n if (additionalWizardValuesToCheck) { // here we check also previously selected values to make steps similar to prev choices\r\n let foundPreviouslySelectedGroup = null;\r\n if (prevStepGroups.every(wg => wg.nodeType === \"custom\")) {\r\n Object.keys(additionalWizardValuesToCheck).forEach(key => {\r\n if ((key > Object.keys(wizardSelectedValues).length)\r\n && !additionalWizardValuesToCheck[key].partId\r\n && additionalWizardValuesToCheck[key].wizardGroup) {\r\n prevStepGroups.forEach(wg => {\r\n if (wg.id === additionalWizardValuesToCheck[key].wizardGroup.id) {\r\n foundPreviouslySelectedGroup = wg;\r\n }\r\n });\r\n }\r\n });\r\n } else {\r\n // here we can add simple feature group, but no need for now\r\n }\r\n if (foundPreviouslySelectedGroup) {\r\n return getCurrentGroupsFromSource(foundPreviouslySelectedGroup.id, wizardActiveItem)\r\n }\r\n }\r\n return getCurrentGroupsFromSource(prevStepGroups[0].id, wizardActiveItem)\r\n }\r\n // console.log(\"Previous step is not selected! Check selected values --> \", wizardSelectedValues);\r\n return []\r\n }\r\n\r\n if (selectedPrevStep && selectedPrevStep.wizardGroup && selectedPrevStep.wizardGroup.mergedGroups && selectedPrevStep.selectedFeature) {\r\n const wizardGroupWithSelectedFeature = selectedPrevStep.wizardGroup.mergedGroups.find(wizGroup => {\r\n return !featureIsExcluded(selectedPrevStep.selectedFeature, wizGroup)\r\n });\r\n if (wizardGroupWithSelectedFeature) {\r\n return getCurrentGroupsFromSource(wizardGroupWithSelectedFeature.id, wizardActiveItem);\r\n }\r\n }\r\n\r\n // const prevStepStr = \"\" + (wizardActiveStep - 1);\r\n // const prevGroups = getCurrentGroupsFromSource(prevStepStr, wizardActiveItem);\r\n // if (prevGroups.length > 1 && wizardActiveStep > 0) {\r\n // return [selectedPrevStep.wizardGroup]\r\n // }\r\n\r\n return getCurrentGroupsFromSource(selectedPrevStep.wizardGroup.id, wizardActiveItem);\r\n}\r\n\r\n/**\r\n * returns current wizard step section items\r\n * @param source {string}\r\n * @param wizardActiveItem {wizardItemInterface}\r\n * @returns array {[wizardGroupInterface]}\r\n */\r\nexport const getCurrentGroupsFromSource = (source, wizardActiveItem) => {\r\n if (!wizardActiveItem) {\r\n return []\r\n }\r\n const siblingGroups = wizardActiveItem.wizardGroups.filter(wizGroup => {\r\n return wizardActiveItem.wizardEdges.some(wizEdge => wizEdge.source === source && wizEdge.target === wizGroup.id && wizGroup.enabled)\r\n });\r\n // console.log(\"siblingGroups\", siblingGroups);\r\n const areSameSiblingGroups = siblingGroups.length > 1 && siblingGroups.every(siblingGroup => {\r\n return (siblingGroup.nodeType === LEAD_WIZARD_GROUP_TYPES.group) && (siblingGroup.groupName === siblingGroups[0].groupName)\r\n });\r\n if (areSameSiblingGroups) {\r\n // console.log(\"areSameSiblingGroups\", areSameSiblingGroups);\r\n\r\n if (siblingGroups.every(wizardGroup => wizardGroup.useIncluded && wizardGroup.featuresIncluded)) { // new logic\r\n const featuresIncluded = siblingGroups.reduce((total, wizardGroup) => {\r\n wizardGroup.featuresIncluded.forEach(included => {\r\n if (!total.some(exclObj => (exclObj.featureDefinitionId === included.featureDefinitionId))) {\r\n total.push(included)\r\n }\r\n })\r\n return total\r\n }, []);\r\n const newGroup = Object.assign({}, siblingGroups[0], {\r\n mergedGroups: siblingGroups,\r\n featuresExcluded: [], // not sure if we need it\r\n featuresIncluded\r\n })\r\n return [newGroup]\r\n }\r\n\r\n const allFeaturesExcluded = siblingGroups.reduce((total, wizardGroup) => {\r\n wizardGroup.featuresExcluded.forEach(excluded => {\r\n if (!excluded) {\r\n return\r\n }\r\n if (typeof excluded === \"object\") { // new logic for excluded\r\n if (!total.some(exclObj => (typeof exclObj === \"object\") && (exclObj.featureDefinitionId === excluded.featureDefinitionId))) {\r\n total.push(excluded)\r\n }\r\n } else if (!total.includes(excluded)) {\r\n total.push(excluded)\r\n }\r\n })\r\n return total\r\n }, []);\r\n const featuresExcluded = allFeaturesExcluded.filter(exclFeature => {\r\n return siblingGroups.every(siblingGroup => {\r\n if (typeof exclFeature === \"object\") {\r\n return siblingGroup.featuresExcluded.some(exclObj => (typeof exclObj === \"object\") && (exclObj.featureDefinitionId === exclFeature.featureDefinitionId))\r\n }\r\n return siblingGroup.featuresExcluded.includes(exclFeature)\r\n })\r\n })\r\n const newGroup = Object.assign({}, siblingGroups[0], {\r\n mergedGroups: siblingGroups,\r\n featuresExcluded\r\n })\r\n return [newGroup]\r\n }\r\n return siblingGroups\r\n}\r\n\r\n/**\r\n * returns current wizard step section items\r\n * @param wizardActiveItem {wizardItemInterface}\r\n * @param wizardSelectedValues {object}\r\n * @param returnAllSteps {boolean}\r\n * @param additionalWizardValuesToCheck {object}\r\n * @returns {array}\r\n */\r\nexport const getAvailableSteps = (wizardActiveItem, wizardSelectedValues, returnAllSteps, additionalWizardValuesToCheck = null) => {\r\n if (!wizardActiveItem || !wizardActiveItem.wizardGroups || !wizardActiveItem.wizardEdges) {\r\n return []\r\n }\r\n\r\n const maxWizardSteps = 50;\r\n\r\n let stepsArray = [{\r\n stepIndex: 0,\r\n stepGroups: getCurrentGroupsFromSource(\"0\", wizardActiveItem),\r\n }];\r\n\r\n for (let i = 1; i <= maxWizardSteps; i++) {\r\n const prevStepGroups = returnAllSteps && stepsArray[i - 1] ? stepsArray[i - 1].stepGroups : [];\r\n const currentGroups = getCurrentGroups(wizardActiveItem, i, wizardSelectedValues, prevStepGroups, additionalWizardValuesToCheck)\r\n if (!currentGroups.length) {\r\n break;\r\n }\r\n stepsArray.push({\r\n stepIndex: i,\r\n stepGroups: currentGroups\r\n })\r\n }\r\n\r\n return stepsArray\r\n}\r\n\r\n\r\n/**\r\n * this returns new wizard steps depending on the current selection\r\n * @param wizardActiveItem {wizardItemInterface}\r\n * @param currentStep {number}\r\n * @param allWizardSelectedValues {object}\r\n * @returns {object}\r\n */\r\nexport const getNextWizardSteps = (wizardActiveItem, currentStep, allWizardSelectedValues) => {\r\n// const oldWizardSteps = getAvailableSteps(wizardActiveItem, oldWizardSelectedValues, true);\r\n\r\n let newValues = {};\r\n Object.keys(allWizardSelectedValues).forEach(key => {\r\n if (+key <= currentStep) {\r\n newValues[key] = allWizardSelectedValues[key] // here we create values object just until the current selected value\r\n }\r\n });\r\n\r\n const afterCurrentSelectionWizardSteps = getAvailableSteps(wizardActiveItem, newValues, true, allWizardSelectedValues);\r\n const allWizardSteps = getAvailableSteps(wizardActiveItem, allWizardSelectedValues, true);\r\n\r\n const nextStep = currentStep + 1;\r\n\r\n if (\r\n afterCurrentSelectionWizardSteps[nextStep] && allWizardSteps[nextStep]\r\n && afterCurrentSelectionWizardSteps[nextStep].stepGroups.every((wizardGroup, wizardGroupIndex) => {\r\n return allWizardSteps[nextStep].stepGroups[wizardGroupIndex] && wizardGroup.id === allWizardSteps[nextStep].stepGroups[wizardGroupIndex].id\r\n }) && (allWizardSelectedValues[nextStep] && allWizardSelectedValues[nextStep].wizardGroup\r\n && afterCurrentSelectionWizardSteps[nextStep].stepGroups.some(wizG => allWizardSelectedValues[nextStep].wizardGroup.id === wizG.id))\r\n ) {\r\n return allWizardSteps // keep it, as we didn't change the flow\r\n }\r\n\r\n return afterCurrentSelectionWizardSteps // use new ones, as the flow was changed\r\n\r\n}\r\n\r\n\r\n/**\r\n * this returns conflicting with the current selections steps\r\n * @param allWizardSelectedValues {object}\r\n * @param actionPayload {object} // {wizardActiveItem, quoteIndex}\r\n * @returns {array}\r\n */\r\nexport const getConflictingWizardSteps = (allWizardSelectedValues, actionPayload) => {\r\n\r\n const {wizardActiveItem} = actionPayload;\r\n\r\n const currentStep = +Object.keys(actionPayload.wizardSelectedValues)[0];\r\n\r\n let conflictingWizardSteps = [];\r\n const newWizardSteps = getNextWizardSteps(wizardActiveItem, currentStep, allWizardSelectedValues);\r\n\r\n Object.keys(allWizardSelectedValues).forEach(stepIndex => {\r\n if (allWizardSelectedValues[stepIndex] && allWizardSelectedValues[stepIndex].wizardGroup && (!newWizardSteps[stepIndex]\r\n || !newWizardSteps[stepIndex].stepGroups.some(wizardGroup => wizardGroup.id === allWizardSelectedValues[stepIndex].wizardGroup.id))) {\r\n conflictingWizardSteps.push({\r\n stepIndex,\r\n wizardGroupId: allWizardSelectedValues[stepIndex].wizardGroup.id,\r\n });\r\n }\r\n })\r\n\r\n // console.log(\"newWizardSteps\", newWizardSteps);\r\n // console.log(\"allWizardSelectedValues\", allWizardSelectedValues);\r\n // console.log(\"conflictingWizardSteps\", conflictingWizardSteps);\r\n\r\n return conflictingWizardSteps\r\n}\r\n\r\n\r\nexport const getUpdatedAllWizardValues = (state, quoteIndex, wizardItemId, wizardSelectedValues) => {\r\n const newWizObject = {\r\n quoteIndex,\r\n wizardItemId,\r\n lastVisitedStep: state.wizardActiveStep,\r\n wizardSelectedValues: Object.assign({}, wizardSelectedValues)\r\n };\r\n const existingIndex = state.allWizardsValues.findIndex(wizSelObject => {\r\n return wizSelObject.wizardItemId === newWizObject.wizardItemId && wizSelObject.quoteIndex === newWizObject.quoteIndex\r\n });\r\n existingIndex > -1\r\n ? state.allWizardsValues.splice(existingIndex, 1, newWizObject)\r\n : state.allWizardsValues.push(newWizObject);\r\n\r\n state.allWizardsValues = state.allWizardsValues.map(wizObject => {\r\n if (wizObject.quoteIndex === quoteIndex) {\r\n wizObject.isLastActiveWizard = wizObject.wizardItemId === wizardItemId // to return back and force correctly\r\n }\r\n return wizObject\r\n });\r\n\r\n return [...state.allWizardsValues]\r\n}\r\n","\r\nimport {postSignInAuth} from \"../api/lixil-api\";\r\n\r\n// export const SET_APP_JWT_TOKEN = \"SET_APP_JWT_TOKEN\";\r\n//\r\n// export const setAppJwtToken = (jwtToken) => ({\r\n// type: SET_APP_JWT_TOKEN,\r\n// payload: {jwtToken}\r\n// });\r\n\r\nexport const setLixilAuthorizationToken = () => {\r\n return async (dispatch, getState) => {\r\n\r\n const {useLixilCalendar} = getState().fabricatorState;\r\n if (!useLixilCalendar) {\r\n return\r\n }\r\n const postAuthResponse = await postSignInAuth();\r\n console.log(\"postAuthResponse\", postAuthResponse);\r\n // if (postAuthResponse && postAuthResponse.data && postAuthResponse.data.data && postAuthResponse.data.data.jwtToken) {\r\n // dispatch(setAppJwtToken(postAuthResponse.data.data.jwtToken)); // just in case, we don't need it anymore\r\n // }\r\n return false\r\n }\r\n}\r\n\r\nexport const LIXIL_PRODUCT_TYPES = {\r\n srBathing: \"SR BATHING\",\r\n bathRemodel: \"Bath Remodel\",\r\n}\r\n\r\nconst lixilTermsText = \"By clicking “Let's Review” above, I consent to receive from American Standard and any party on its behalf at any time emails, telemarketing calls using an autodialer, artificial voices or pre-recordings and SMS text messages, which could result in wireless charges, at the number provided above. I understand that consent is not a condition of purchase. I also agree to the Terms of Use and Privacy policy, which are also linked at the bottom of this page.\";\r\n\r\nexport const getLixilCampaignInfo = (store) => {\r\n\r\n const {wizardState, appointmentState, globalState} = store;\r\n\r\n // const isShowerRemodel = wizardState.wizardSelectedValues\r\n // && wizardState.wizardSelectedValues[1]\r\n // && wizardState.wizardSelectedValues[1].selectedFeature && (\r\n // (wizardState.wizardSelectedValues[1].selectedFeature.customDisplayName === \"Replace Shower\")\r\n // || (wizardState.wizardSelectedValues[1].selectedFeature.sharedFeatureName === \"Replace Shower\")\r\n // || (\r\n // (wizardState.wizardActiveItem && (wizardState.wizardActiveItem.id === 2)) && (\r\n // (wizardState.wizardSelectedValues[1].selectedFeature.customDisplayName === \"Convert Tub to A Shower\")\r\n // || (wizardState.wizardSelectedValues[1].selectedFeature.sharedFeatureName === \"Convert Tub to A Shower\")\r\n // )\r\n // )\r\n // );\r\n\r\n const textWithUpdatedButton = globalState.footerInfoButtonText\r\n ? lixilTermsText.replace(\"Let's Review\", globalState.footerInfoButtonText)\r\n : lixilTermsText;\r\n\r\n const isSrBathing = wizardState.wizardActiveItem && (wizardState.wizardActiveItem.id === 2);\r\n\r\n const addressIsNotSupported = appointmentState && appointmentState.appointmentsNotAvailable;\r\n\r\n if (isSrBathing) {\r\n return {\r\n \"Campaign\": \"SOCIAL\",\r\n \"SubID\": addressIsNotSupported ? \"8087\" : \"8077\",\r\n \"PubID\": addressIsNotSupported ? \"SB-Social-OnlineForm-NoAppt\" : \"Social-SB-OnlineApptForm\",\r\n \"DNIS\": \"855-254-7620\",\r\n \"Product\": LIXIL_PRODUCT_TYPES.srBathing,\r\n \"terms_stc\": textWithUpdatedButton,\r\n \"promoter_id_stc\": addressIsNotSupported ? \"\" : \"3846\",\r\n }\r\n }\r\n return {\r\n \"Campaign\": \"SOCIAL\",\r\n \"SubID\": addressIsNotSupported ? \"8088\" : \"8079\",\r\n \"PubID\": addressIsNotSupported ? \"BR-Social-OnlineForm-NoAppt\" : \"BR-Social-OnlineApptForm\",\r\n \"DNIS\": \"855-254-7623\",\r\n \"Product\": LIXIL_PRODUCT_TYPES.bathRemodel,\r\n \"terms_stc\": textWithUpdatedButton,\r\n \"promoter_id_stc\": addressIsNotSupported ? \"\" : \"3846\",\r\n }\r\n}\r\n","import {AxiosInstance, leadApiGet, leadApiPost} from \"./api\";\r\nimport {IS_DEV_MODE} from \"../constants\";\r\n\r\nconst baseUrl = IS_DEV_MODE\r\n ? \"https://calendar.staging.labs.lixil.com\"\r\n : \"https://calendar.prod.labs.lixil.com\";\r\n\r\nconst postAuthData = {\r\n \"password\": \"QC@123\",\r\n \"username\": \"QC\"\r\n}\r\n\r\nexport const postSignInAuth = async () => {\r\n // return await leadApiPost(\"https://calendar.prod.labs.lixil.com/v1/sign-in\", postData);\r\n const postAuthResponse = await leadApiPost(baseUrl + \"/v1/sign-in\", postAuthData);\r\n if (postAuthResponse && postAuthResponse.data && postAuthResponse.data.data && postAuthResponse.data.data.jwtToken) {\r\n // dispatch(setAppJwtToken(postAuthResponse.data.data.jwtToken)); // just in case, we don't need it anymore\r\n AxiosInstance.defaults.headers.post['Authorization'] = postAuthResponse.data.data.jwtToken;\r\n AxiosInstance.defaults.headers.get['Authorization'] = postAuthResponse.data.data.jwtToken;\r\n }\r\n // console.log(\"AxiosInstance\", AxiosInstance);\r\n return postAuthResponse\r\n}\r\n\r\nconst withSignInRetryRequest = async (request) => {\r\n let mainResponse;\r\n\r\n const retryFunction = async () => {\r\n console.log(\"session expired, trying one more time...\", );\r\n // delete AxiosInstance.defaults.headers.post['Authorization']; // prevent status 400 bad request\r\n // delete AxiosInstance.defaults.headers.get['Authorization']; // prevent status 400 bad request\r\n await postSignInAuth();\r\n return await request();\r\n }\r\n\r\n try {\r\n mainResponse = await request();\r\n if (mainResponse && mainResponse.status === 401) {\r\n mainResponse = await retryFunction();\r\n }\r\n return mainResponse\r\n } catch (error) {\r\n if ((typeof error === \"object\") && error.response && (error.response.status === 401)) {\r\n mainResponse = await retryFunction();\r\n return mainResponse\r\n }\r\n console.log(\"response error\", error);\r\n return new Error(error)\r\n }\r\n}\r\n\r\n\r\nexport const checkLixilPostalCode = async (zipCode) => {\r\n try {\r\n const url = `${baseUrl}/availability/${zipCode}`;\r\n const request = leadApiGet.bind(this, url);\r\n const mainResponse = await withSignInRetryRequest(request);\r\n return mainResponse && mainResponse.data && mainResponse.data.serviceAvailable\r\n } catch (error) {\r\n console.log(\"availability/postalCode error\", error);\r\n return false\r\n }\r\n}\r\n\r\nexport const postLixilCalendar = async (postCalendarData) => {\r\n try {\r\n const url = `${baseUrl}/availability/calendar`;\r\n const request = leadApiPost.bind(this, url, postCalendarData);\r\n return await withSignInRetryRequest(request);\r\n } catch (error) {\r\n console.log(\"availability/calendar error\", error);\r\n return false\r\n }\r\n}\r\n\r\nexport const postLixilGetSalesRep = async (postData) => {\r\n try {\r\n const url = `${baseUrl}/availability/getSalesRep`;\r\n const request = leadApiPost.bind(this, url, postData);\r\n return await withSignInRetryRequest(request);\r\n } catch (error) {\r\n console.log(\"availability/getSalesRep error\", error);\r\n return false\r\n }\r\n}\r\n","export const SET_USER_VALUE = \"SET_USER_VALUE\";\r\nexport const SET_USER_LOCATION = \"SET_USER_LOCATION\";\r\nexport const SET_USER_ERRORS = \"SET_USER_ERRORS\";\r\nexport const SET_REGISTERED_USER_DATA = \"SET_REGISTERED_USER_DATA\";\r\n\r\nexport const setUserInfo = (name, value) => ({\r\n type: SET_USER_VALUE,\r\n payload: {name, value}\r\n});\r\n\r\nexport const setUserLocation = (name, value) => ({\r\n type: SET_USER_LOCATION,\r\n payload: {name, value}\r\n});\r\n\r\nexport const setUserErrors = (name, errors = []) => ({\r\n type: SET_USER_ERRORS,\r\n payload: {name, errors}\r\n});\r\n\r\nexport const setRegisteredUserData = (registeredUserEmail, registeredUserAuthToken) => ({\r\n type: SET_REGISTERED_USER_DATA,\r\n payload: {registeredUserEmail, registeredUserAuthToken}\r\n});\r\n\r\nexport const replacePhoneToMatchMask = (phone) => {\r\n\r\n // return phone.replace(/^\\(?(\\d{3})\\)?\\s?(\\d{3})\\-?(\\d+)$/, \"($1) $2-$3\") old mask, not replacing while typing\r\n\r\n // Remove all non-digit characters\r\n let cleaned = phone.replace(/\\D/g, '');\r\n\r\n // Format as (xxx) xxx-xxxx as the user types\r\n if (cleaned.length > 0) {\r\n cleaned = `(${cleaned}`;\r\n }\r\n if (cleaned.length > 4) {\r\n cleaned = `${cleaned.slice(0, 4)}) ${cleaned.slice(4)}`;\r\n }\r\n if (cleaned.length > 9) {\r\n cleaned = `${cleaned.slice(0, 9)}-${cleaned.slice(9)}`;\r\n }\r\n\r\n // Update the input value with the formatted number\r\n return cleaned.slice(0, 14); // Maximum length is 14 including the formatting characters\r\n}\r\nexport const replaceMaskToPassPhoneOnTheBackend = (phone) => {\r\n if (!phone) {\r\n return \"\"\r\n }\r\n return phone\r\n .replace(/ /g,\"\")\r\n .replace(/-/g,\"\")\r\n .replace(/\\(/g,\"\")\r\n .replace(/\\)/g,\"\")\r\n}\r\n","import {IntermediatePart} from \"../parts/intermediatePart\";\r\n\r\nexport default class Shadow extends IntermediatePart {\r\n constructor(isChild) {\r\n super(isChild);\r\n this.partId = 'part_shadow';\r\n this.visible = false;\r\n this.partName = 'Part Shadow';\r\n }\r\n load(dbFeature) {\r\n return super.load_(dbFeature, new Shadow());\r\n }\r\n}","import {Part} from \"./part\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport {wallsThumbnail} from \"../assets\";\r\n\r\nimport {Shower} from \"./shower\";\r\nimport {ShowerTubCombo} from \"./showerTubCombo\";\r\nimport Shadow from \"../subparts/shadow\";\r\nimport PonyWall from \"../subparts/wall/ponyWall\";\r\n\r\nimport WallA from \"../subparts/wall/wallA\";\r\nimport WallB from \"../subparts/wall/wallB\";\r\nimport WallC from \"../subparts/wall/wallC\";\r\nimport WallExR from \"../subparts/wall/wallExR\";\r\nimport WallExL from \"../subparts/wall/wallExL\";\r\nimport ExternallWall from \"../subparts/wall/externallWall\";\r\nimport VanityAccent from \"../subparts/wall/vanityAccent\";\r\nimport store from \"../../../../store\";\r\n\r\nexport class Wall extends Part {\r\n static id = 'Walls';\r\n\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'Walls';\r\n this.translateId = \"visualizer.bathroom.walls\";\r\n this.partThumbnail = wallsThumbnail;\r\n\r\n // related items\r\n this.vanityAccent = null;\r\n this.wallExR = null;\r\n this.wallExL = null;\r\n this.wallA = null;\r\n this.wallB = null;\r\n this.wallC = null;\r\n this.ponyWall = null;\r\n this.allWallsApplied = true;\r\n }\r\n\r\n load(dbFeature) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"VanityAccent\":\r\n relatedItemName = \"vanityAccent\";\r\n RelatedItemClass = VanityAccent;\r\n break;\r\n case \"WallExtrusion\":\r\n case \"EX R\":\r\n relatedItemName = \"wallExR\";\r\n RelatedItemClass = WallExR;\r\n break;\r\n case \"ShowerDivider\":\r\n case \"EX L\":\r\n relatedItemName = \"wallExL\";\r\n RelatedItemClass = WallExL;\r\n break;\r\n case \"Wall A\":\r\n relatedItemName = \"wallA\";\r\n RelatedItemClass = WallA;\r\n break;\r\n case \"Wall B\":\r\n relatedItemName = \"wallB\";\r\n RelatedItemClass = WallB;\r\n break;\r\n case \"Wall C\":\r\n relatedItemName = \"wallC\";\r\n RelatedItemClass = WallC;\r\n break;\r\n case \"Pony Wall\":\r\n relatedItemName = \"ponyWall\";\r\n RelatedItemClass = PonyWall;\r\n break;\r\n case \"Shower Shadow\":\r\n if (\r\n dbFeature.displayName.includes(\"Shower Shadow - Divider Wall\")\r\n || dbFeature.displayName.includes(\"Shower Shadow - EX L\")\r\n || dbFeature.displayName.includes(\"Shower Shadow - EX R\")\r\n || dbFeature.displayName.includes(\"Shower Shadow - Popout\")\r\n || dbFeature.displayName.includes(\"Shower Shadow - Pony Wall\")\r\n ) {\r\n relatedItemName = \"shadows\";\r\n RelatedItemClass = Shadow;\r\n }\r\n break;\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n if (relatedItemName !== \"shadows\") {\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n if (relatedItemName === \"ponyWall\") {\r\n this[relatedItemName].type = Shower.Type.Custom;\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].load(dbFeature);\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n setLayers(layout, placeholdersNeeded) {\r\n let res = [];\r\n this.relatedItems.forEach(relatedItem => {\r\n relatedItem.setLayers(layout);\r\n (placeholdersNeeded && !relatedItem.placeholderChanged && relatedItem.placeholderFeature)\r\n ? relatedItem.placeholderFeature.layer.addTo(res)\r\n : relatedItem.activeFeature ? relatedItem.activeFeature.layer.addTo(res) : null;\r\n if (relatedItem.shadowFeature) {\r\n relatedItem.shadowFeature.layer.addTo(res)\r\n }\r\n });\r\n return res.length ? res : null;\r\n }\r\n\r\n navigationItem() {\r\n return new DesignNavigationItem('Walls', this);\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false;\r\n }\r\n\r\n subParts() {\r\n\r\n const activeShowerGroup = this.getActiveShowerGroup();\r\n const ponyWallIsActive = activeShowerGroup.showerDimensions() === \"Pony\";\r\n\r\n const shower = this.layout.parts[Shower.id];\r\n // const vanityAccent = this.layout.parts[Vanity.id].vanityAccent;\r\n return this.relatedItems.filter(item => {\r\n if (item.isPonyWallPart) {\r\n item.visible = ponyWallIsActive\r\n }\r\n return item.visible\r\n }).filter(item => item && item.visible).filter((relatedItem) => {\r\n return !(shower.isComplete() &&\r\n (relatedItem instanceof WallExL\r\n || (relatedItem instanceof WallExR && shower.showerBody && !shower.showerBody.activeFeature.partName.includes(\"Complete\"))))\r\n }).map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n setDefault(layout) {\r\n this.relatedItems.forEach(_ => _.setDefault(layout));\r\n }\r\n\r\n handleSubPartClick() {\r\n\r\n }\r\n\r\n recoverPrevioslySelected(activeRelatedPart) {\r\n const {activeQuoteIndex} = store.getState().quotesState;\r\n this.relatedItems.forEach(relatedItem => {\r\n if (relatedItem.partId !== activeRelatedPart.partId && relatedItem.activeFeatureBeforeAllWalls) {\r\n if (relatedItem.activeFeatureBeforeAllWalls === \"placeholder\") {\r\n relatedItem.placeholderChanged = false;\r\n relatedItem.firstClick[activeQuoteIndex] = false;\r\n if (relatedItem instanceof ExternallWall) { // there shouldn't be cases for this, but nevertheless, just in case\r\n relatedItem.selectedByUser = false\r\n }\r\n } else {\r\n if (!(relatedItem instanceof ExternallWall && relatedItem.selectedByUser)) {\r\n relatedItem.activeFeatureBeforeAllWalls.clickFromAllWalls();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n showerTubComboIsActive() {\r\n const comboPart = this.layout.parts[ShowerTubCombo.id];\r\n return comboPart && comboPart.showerTubComboIsActive\r\n }\r\n\r\n getActiveShowerGroup() {\r\n return this.showerTubComboIsActive() ? this.layout.parts[ShowerTubCombo.id] : this.layout.parts[Shower.id];\r\n }\r\n\r\n}\r\n","import uniqBy from \"lodash/uniqBy\";\r\n\r\nimport {IntermediatePart} from \"../parts/intermediatePart\";\r\n\r\nexport default class NonVisualizerSubPart extends IntermediatePart {\r\n constructor(isChild, partId, partName) {\r\n super(isChild);\r\n this.partId = partId;\r\n this.visible = true;\r\n this.partName = partName;\r\n // this.allFeaturesReceived = true;\r\n }\r\n load(dbFeature) {\r\n return super.load_(dbFeature, new NonVisualizerSubPart(false, this.partId, dbFeature.groupName));\r\n }\r\n navigationSubItems(filters, searchText) {\r\n const navSubItems = super.navigationSubItems(filters, searchText)\r\n return uniqBy(navSubItems, (navItem) => navItem.part.dbFeature.sharedFeatureName);\r\n }\r\n}\r\n","import {Part} from \"./part\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport { showerAccessoriesThumbnail } from '../assets';\r\nimport LargeCornerSeat from \"../subparts/showerAccessories/largeCornerSeat\";\r\nimport SoapDish from \"../subparts/showerAccessories/soapDish\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport SmallCornerShelf from \"../subparts/showerAccessories/smallCornerShelf\";\r\nimport CornerCaddie from \"../subparts/showerAccessories/cornerCaddie\";\r\nimport LargeCornerCaddie from \"../subparts/showerAccessories/largeCornerCaddie\";\r\nimport GrabBar from \"../subparts/showerAccessories/grabBar\";\r\n\r\nexport class ShowerAccessories extends Part {\r\n static id = 'Shower Accessories';\r\n\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partThumbnail = showerAccessoriesThumbnail;\r\n this.partName = 'Shower Accessories';\r\n this.translateId = \"visualizer.bathroom.accessories\";\r\n this.relatedItems = [];\r\n\r\n // related items\r\n this.soapDish = null;\r\n this.largeCornerSeat = null;\r\n this.largeCornerCaddie = null;\r\n this.cornerCaddie = null;\r\n this.smallCornerShelf = null;\r\n this.grabBar = null;\r\n\r\n //current active caddie type\r\n this.caddie_type = \"large_corner_caddie\";\r\n\r\n }\r\n\r\n load(dbFeature) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Soap Dish\":\r\n relatedItemName = \"soapDish\";\r\n RelatedItemClass = SoapDish;\r\n break;\r\n case \"Large Corner Seat\":\r\n relatedItemName = \"largeCornerSeat\";\r\n RelatedItemClass = LargeCornerSeat;\r\n break;\r\n case \"Large Corner Caddie\":\r\n relatedItemName = \"largeCornerCaddie\";\r\n RelatedItemClass = LargeCornerCaddie;\r\n break;\r\n case \"Corner Caddie\":\r\n relatedItemName = \"cornerCaddie\";\r\n RelatedItemClass = CornerCaddie;\r\n break;\r\n case \"Small Corner Shelf\":\r\n relatedItemName = \"smallCornerShelf\";\r\n RelatedItemClass = SmallCornerShelf;\r\n break;\r\n case \"Grab Bar\":\r\n relatedItemName = \"grabBar\";\r\n RelatedItemClass = GrabBar;\r\n break;\r\n\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n if (relatedItemName !== \"shadows\") {\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].load(dbFeature);\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n setLayers(layout, placeholdersNeeded) {\r\n const layers = [];\r\n this.getRelatedItems().forEach(relatedItem => {\r\n relatedItem.setLayers(layout);\r\n (placeholdersNeeded && !relatedItem.placeholderChanged && relatedItem.placeholderFeature)\r\n ? relatedItem.placeholderFeature.layer.addTo(layers)\r\n : relatedItem.activeFeature && relatedItem.activeFeature.layer.addTo(layers)\r\n });\r\n\r\n return layers;\r\n }\r\n\r\n subParts() {\r\n return this.getRelatedItems().map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n navigationItem() {\r\n return new DesignNavigationItem(this.partName, this)\r\n }\r\n\r\n}\r\n\r\n","import React, {Fragment} from 'react';\r\nimport {connect} from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport findIndex from 'lodash/findIndex';\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport CheckBox from './../../../common/checkBox';\r\nimport Analytics from './../../../../analytics';\r\nimport {\r\n setExpandedFilters,\r\n setFilterVisible,\r\n setSelectedFilters,\r\n showFilters\r\n} from \"../../../../actions/actionFunctions\";\r\n// import FilterSelection from \"./filterSelection\";\r\nimport FiltersSearch from \"./filtersSearch\";\r\nimport NavigationRequests from \"../navigationRequests\";\r\nimport {getAvailableFilters} from \"../../../../misc/filtersFunctions\";\r\n\r\nconst toggleArrayValue = (array, value) => {\r\n let index = array.indexOf(value);\r\n (index >= 0) ? array.splice(index, 1) : array.push(value);\r\n return array;\r\n};\r\n\r\nexport const toggleFilterArrayValue = (array, {filterId, filterGroupId}) => {\r\n let index = findIndex(array, {filterId});\r\n if (index >= 0) {\r\n array.splice(index, 1);\r\n } else {\r\n array.push({filterId, filterGroupId});\r\n }\r\n return array;\r\n};\r\n\r\nconst arrayHasValue = (array, value) => {\r\n return (array.indexOf(value) >= 0);\r\n};\r\n\r\nclass FiltersBody extends NavigationRequests {\r\n static propTypes = {\r\n id: PropTypes.string.isRequired,\r\n searchText: PropTypes.string.isRequired,\r\n handleSearchInputChange: PropTypes.func.isRequired,\r\n childItem: PropTypes.object\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n filterButtons: [\"Others\", \"Materials\", \"Brand\", \"Color\"]\r\n };\r\n this._isMounted = false;\r\n }\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n this.setAvailableFiltersValues();\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n setAvailableFiltersValues() {\r\n const activePart = this.props.childItem && this.props.childItem.part;\r\n if (activePart.filtersReceived) {\r\n this.setState({\r\n isLoading: false,\r\n })\r\n } else {\r\n this.setState({\r\n isLoading: true\r\n });\r\n this.checkIfAllFiltersReceived(activePart, this.props.allFilterGroups)\r\n .then(() => {\r\n if (this._isMounted) {\r\n this.setState({\r\n isLoading: false,\r\n })\r\n }\r\n });\r\n }\r\n }\r\n\r\n isFilterSelected = (filter) => findIndex(this.props.selectedFilters, {filterId:filter}) !== -1;\r\n isFilterExpanded = (filter) => arrayHasValue(this.props.expandedFilters, filter);\r\n\r\n handleExpandFilter = (filter) => Analytics.sendClickEvent('filter-expand-' + filter) && this.props.setExpandedFilters(toggleArrayValue([...this.props.expandedFilters], filter));\r\n handleSelectFilter = (filterId, filterGroupId) => Analytics.sendClickEvent('filter-selected-' + filterId) && this.props.setSelectedFilters(toggleFilterArrayValue([...this.props.selectedFilters],\r\n {filterId, filterGroupId}));\r\n\r\n handleGroupClick = (filterName) => {\r\n Analytics.sendClickEvent('show-filter-group-' + filterName);\r\n if (this.props.filterVisible === filterName) {\r\n this.props.showFilters(false);\r\n } else {\r\n this.props.setFilterVisible(filterName);\r\n this.setAvailableFiltersValues(this.props, filterName);\r\n }\r\n };\r\n\r\n handleReset = () => {\r\n this.props.setSelectedFilters([]);\r\n this.props.setExpandedFilters([]);\r\n this.props.handleSearchInputChange({target: {value: ''}});\r\n };\r\n\r\n render() {\r\n const activePart = this.props.childItem.part;\r\n return (\r\n \r\n
    \r\n {this.state.filterButtons.map((filterName) => {\r\n const filterGroup = this.props.allFilterGroups.find(group => group.name === filterName);\r\n const buttonText = (filterName === \"Others\") ? \"+Filters\" : filterName;\r\n const filterNameLowerCased = filterName.toLowerCase();\r\n let buttonEnabled = false;\r\n if (filterName === \"Others\") {\r\n buttonEnabled = Array.isArray(activePart.filtersReceived) && this.props.allFilterGroups.some(filterGroup => {\r\n return ![\"Materials\", \"Brand\", \"Color\"].includes(filterGroup.name) && filterGroup.values.some(filterValue => {\r\n return activePart.filtersReceived.includes(filterValue.id);\r\n })\r\n });\r\n } else {\r\n buttonEnabled = filterGroup && (Array.isArray(activePart.filtersReceived) && filterGroup.values.some(filterValue => {\r\n return activePart.filtersReceived.includes(filterValue.id);\r\n }));\r\n }\r\n return (\r\n
    this.handleGroupClick(filterName)}\r\n className={\"filters-header-icon filters-header-icon--\"+filterNameLowerCased\r\n + (this.props.filterVisible === filterName ? \" filters-header-icon--active filters-header-icon--active--\"+filterNameLowerCased : \"\")\r\n + (!buttonEnabled ? \" filters-header-icon--disabled\" : \"\")}>\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.isLoading || !activePart.filtersReceived\r\n ?
    \r\n :
    {this.renderFiltersBody()}
    \r\n }\r\n \r\n )\r\n }\r\n\r\n renderFiltersBody = () => {\r\n const activePart = this.props.childItem.part;\r\n const allReceived = activePart.getRealFeaturesReceivedProperty()\r\n const allFilterGroups = allReceived\r\n ? getAvailableFilters(activePart, activePart.partId, this.props.allFilterGroups, this.getCurrentNavItems(), true)\r\n : this.props.allFilterGroups;\r\n switch (this.props.filterVisible) {\r\n case \"Others\": {\r\n const otherFilterGroups = allFilterGroups.filter(filterGroup => {\r\n return ![\"Materials\", \"Brand\", \"Color\"].includes(filterGroup.name) && filterGroup.values.some(filterValue => {\r\n return activePart.filtersReceived.includes(filterValue.id);\r\n })\r\n });\r\n const availableOtherFilterGroups = otherFilterGroups.map(fg => {\r\n return {\r\n id: fg.id,\r\n displayText: fg.name,\r\n items: allReceived ? fg.values : fg.values.filter(filterValue => activePart.filtersReceived.includes(filterValue.id)),\r\n }\r\n });\r\n return this.renderGenericFilters(availableOtherFilterGroups, true);\r\n }\r\n case \"Materials\": {\r\n const filterGroup = allFilterGroups.find(group => group.name === \"Materials\");\r\n if (this.checkFilterGroupForAvailableFilterValues(filterGroup).length) {\r\n return this.renderGenericFilters(filterGroup.values, false, filterGroup.id);\r\n }\r\n break;\r\n }\r\n case \"Brand\": {\r\n const filterGroup = allFilterGroups.find(group => group.name === \"Brand\");\r\n if (this.checkFilterGroupForAvailableFilterValues(filterGroup).length) {\r\n return this.renderBrand(filterGroup);\r\n }\r\n break;\r\n }\r\n case \"Color\": {\r\n const filterGroup = allFilterGroups.find(group => group.name === \"Color\");\r\n if (this.checkFilterGroupForAvailableFilterValues(filterGroup).length) {\r\n return this.renderColor(filterGroup);\r\n }\r\n break;\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n checkFilterGroupForAvailableFilterValues = (filterGroup) => {\r\n if (!filterGroup || !filterGroup.values) {\r\n return []\r\n }\r\n const activePart = this.props.childItem.part;\r\n return filterGroup.values.filter(filterValue => {\r\n return activePart.filtersReceived.includes(filterValue.id);\r\n })\r\n };\r\n\r\n getCurrentNavItems = () => {\r\n if (!this.props.childItem) {\r\n return [];\r\n }\r\n const whichFeatures = !this.props.bvOpened; // if bvOpened - false - vis only\r\n const layout = this.props.childItem.part.getParent().layout;\r\n return layout.designNavigationItems(this.props.childItem, [], \"\", null, whichFeatures, this.props.allFilterGroups);\r\n }\r\n\r\n /**\r\n *\r\n * @param filterList {Array}\r\n * @param groupsFirst {boolean}\r\n * @param groupId {any}\r\n * @return {*}\r\n */\r\n renderGenericFilters = (filterList, groupsFirst = false, groupId) => {\r\n // console.log('filterList', filterList);\r\n const fabricatorData = this.props.fabricatorData;\r\n let filterOptions = filterList\r\n .filter(f => !(fabricatorData && ((f.value === \"Slab\" && fabricatorData.isRebath)\r\n || (f.value === \"DuraBath Natural Stone\" && !fabricatorData.isRebath)\r\n )))\r\n .map(f => {\r\n const sortedItems = (f.displayText === \"Size\")\r\n ? f.items.sort((a, b) => {\r\n const name1 = +a.value.split(\"X\")[0].split(\"in\")[0];\r\n const name2 = +b.value.split(\"X\")[0].split(\"in\")[0];\r\n return name1 !== name2 ? name1 < name2 ? -1 : 1 : 0\r\n })\r\n : f.items;\r\n return (\r\n
  • \r\n this.handleSelectFilter(f.id, groupId || f.id)}/>\r\n\r\n {(f.items && f.items.length > 0)\r\n ? this.handleExpandFilter(f.id)} />\r\n : null}\r\n
      \r\n {sortedItems.map(i => {\r\n return (\r\n
    • \r\n this.handleSelectFilter(i.id, groupId || f.id)}/>\r\n
    • \r\n );\r\n })}\r\n
    \r\n
  • \r\n );\r\n });\r\n\r\n return (\r\n
    \r\n
      \r\n {filterOptions}\r\n
    \r\n
    \r\n );\r\n };\r\n\r\n renderBrand = (brandFilterGroup) => {\r\n return (\r\n
    \r\n
      \r\n {this.checkFilterGroupForAvailableFilterValues(brandFilterGroup).map(f => (\r\n
    • this.handleSelectFilter(f.id, brandFilterGroup.id)}>\r\n {f.icon ? null : f.displayText}\r\n
    • \r\n ))}\r\n
    \r\n
    \r\n );\r\n };\r\n\r\n renderColor = (colorFilterGroup) => {\r\n return (\r\n
    \r\n
      \r\n {this.checkFilterGroupForAvailableFilterValues(colorFilterGroup).map(f => (\r\n
    • \r\n this.handleSelectFilter(f.id, colorFilterGroup.id)}\r\n text={f.displayText}/>\r\n \r\n
    • \r\n ))}\r\n
    \r\n
    \r\n );\r\n };\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {bvOpened} = store.bathroomVisualizerState;\r\n\r\n return {\r\n selectedFilters: store.filterState.selectedFilters,\r\n expandedFilters: store.filterState.expandedFilters,\r\n filterVisible: store.filterState.filterVisible,\r\n fabricatorData: store.fabricatorState,\r\n allFilterGroups: store.filterState.filterGroups,\r\n bvOpened,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setSelectedFilters,\r\n setExpandedFilters,\r\n showFilters,\r\n setFilterVisible,\r\n};\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(FiltersBody)\r\n);\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\n// import {Layout} from \"../../core/layout\";\r\n// import {PartMenuType} from \"../../constants\";\r\nimport SelectionMobileViewSwitchers from '../mobile/selectionMobileViewSwitchers';\r\nimport BodyPanelRadio from \"./bodyPanelRadio\";\r\nimport BodyPanelCheckbox from \"./bodyPanelCheckbox\";\r\nimport BodyPanelWizardSteps from \"./bodyPanelWizardSteps\";\r\n// import Analytics from \"../../../../analytics\";\r\nimport FilterSwitchers from \"../newFilters/filterSwitchers\";\r\nimport BodyPanelNavigationFiltersSteps from \"./bodyPanelNavigationFiltersSteps\";\r\nimport BacksplashSelect from \"../../../selectionWindow/backsplashSelect\";\r\nimport {CABINET_GROUP, COUNTERTOP_GROUP} from \"../../../kvComponent/core/constants\";\r\nimport CountertopSwitchers from \"../../../kvComponent/navigation/countertopSwitchers\";\r\nimport CabinetSwitchers from \"../../../kvComponent/navigation/cabinetSwitchers\";\r\nimport {CABINET_GROUP_BATHROOM, COUNTERTOP_GROUP_BATHROOM} from \"../../../bvSceneComponent/core/constants\";\r\nimport LookAllWallsRadioButton from \"../../../look/lookNavigation/lookMain/lookAllWallsRadioButton\";\r\nimport {getCurrentLayout} from \"../../../appLayout\";\r\nimport {featureInterface} from \"../../../../interfaces/featureInterface\";\r\n\r\nclass BodyPanel extends Component {\r\n\r\n static propTypes = {\r\n // layout: PropTypes.instanceOf(Layout),\r\n activePart: PropTypes.object.isRequired,\r\n activeSubPart: PropTypes.object,\r\n activeFeature: PropTypes.shape(featureInterface),\r\n toggleApplyWallsCheckbox: PropTypes.func,\r\n isWallItem: PropTypes.func,\r\n handleSubTypeClick: PropTypes.func,\r\n useWizard: PropTypes.bool,\r\n showFeatureWizard: PropTypes.bool,\r\n exitFeatureWizard: PropTypes.func,\r\n enableFeatureWizard: PropTypes.func,\r\n wizardGroups: PropTypes.array,\r\n filters: PropTypes.array,\r\n getFilterDisplayName: PropTypes.func.isRequired,\r\n toggleWizardFilterSelection: PropTypes.func,\r\n refreshCB: PropTypes.func,\r\n showFilterSelection: PropTypes.bool,\r\n showWizardGroupsSelection: PropTypes.bool,\r\n setStateActiveFeature: PropTypes.func,\r\n };\r\n\r\n backsplashSelectClick = (feature) => {\r\n this.props.refreshCB(); // update canvas\r\n this.props.refreshItems(); // update nav items\r\n if (this.props.setStateActiveFeature) {\r\n this.props.setStateActiveFeature(feature);\r\n }\r\n };\r\n\r\n renderAllWallsCheckbox = (showFilterSelection) => {\r\n const layout = getCurrentLayout();\r\n if (layout.isNewLayout) {\r\n return \r\n } else if (!showFilterSelection && this.props.activeSubPart && this.props.isWallItem(this.props.activeSubPart)\r\n && this.props.activeSubPart.partName !== \"Accent Wall\") {\r\n return \r\n }\r\n return null\r\n }\r\n\r\n render() {\r\n\r\n const showFilterSelection = this.props.showFilterSelection || this.props.showWizardGroupsSelection;\r\n const activeNavPart = this.props.activeSubPart || this.props.activePart;\r\n\r\n const fabricatorSettings = this.props.fabricatorData.settings;\r\n const useWizard = fabricatorSettings &&\r\n (fabricatorSettings.wizardConsumers || (fabricatorSettings.wizardClients && document.kvConfig.isBackend));\r\n\r\n let showNavigationFilters = useWizard && this.props.activeNavigationFilter\r\n && (this.props.activeNavigationFilter !== \"inlay_type\") && activeNavPart\r\n && activeNavPart.canUseNavigationFilter && activeNavPart.canUseNavigationFilter();\r\n\r\n if (useWizard && activeNavPart && activeNavPart.canUseNavigationFilterSteps\r\n && activeNavPart.canUseNavigationFilterSteps()) {\r\n showNavigationFilters = true;\r\n }\r\n\r\n const isCountertop = this.props.activeSubPart && (\r\n COUNTERTOP_GROUP.includes(this.props.activeSubPart.partId)\r\n || ((document.kvConfig.visualizerType === \"bvScene\" || document.kvConfig.visualizerType === \"Bathroom\")\r\n && COUNTERTOP_GROUP_BATHROOM.includes(this.props.activeSubPart.partId))\r\n );\r\n\r\n const isCabinet = this.props.activeSubPart && (CABINET_GROUP.includes(this.props.activeSubPart.partId)\r\n || (document.kvConfig.visualizerType === \"bvScene\" && CABINET_GROUP_BATHROOM.includes(this.props.activeSubPart.partId)));\r\n\r\n const layout = getCurrentLayout();\r\n\r\n return (\r\n
    \r\n

    {activeNavPart ? : null}

    \r\n
    \r\n {!showFilterSelection && this.props.activeSubPart && this.props.activeSubPart.canBeDisabled\r\n ? \r\n : null}\r\n {this.renderAllWallsCheckbox(showFilterSelection)}\r\n
    \r\n {/*{this.props.activePart.menuType === PartMenuType.Complex && this.props.activePart.subTypes().length && !showFilterSelection*/}\r\n {/* ? (*/}\r\n {/*
    */}\r\n {/*
    */}\r\n {/* {this.props.activePart.subTypes().map(subType => (*/}\r\n {/* */}\r\n {/* ))}*/}\r\n {/*
    */}\r\n {/*
    */}\r\n {/* ) : null}*/}\r\n {!showFilterSelection ? (\r\n
    \r\n \r\n
    \r\n ) : null}\r\n {this.props.useWizard && !this.props.showWizardGroupsSelection ? (\r\n \r\n ) : null}\r\n {activeNavPart.partId === \"backsplash\" ? : null}\r\n {isCountertop && !layout.isNewLayout ? : null}\r\n {isCabinet && !layout.isNewLayout ? : null}\r\n {showNavigationFilters ? (\r\n \r\n ) : null}\r\n {this.props.useFilters && !showFilterSelection ? (\r\n \r\n ) : null}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n activeNavigationFilter: store.navigationState.activeNavigationFilter,\r\n fabricatorData: store.fabricatorState,\r\n };\r\n};\r\nconst mapDispatchToProps = () => {\r\n return {};\r\n};\r\nexport default connect(mapStateToProps, mapDispatchToProps)(BodyPanel);\r\n","import {Part} from \"../part\";\r\nimport {wallsThumbnail} from \"../assets\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\n\r\nimport Ceiling from \"../subparts/walls/ceiling\";\r\nimport LeftWall from \"../subparts/walls/leftWall\";\r\nimport RightWall from \"../subparts/walls/rightWall\";\r\nimport PopoutWall from \"../subparts/walls/popoutWall\";\r\nimport Backsplash from \"../subparts/walls/backsplash\";\r\nimport store from \"../../../../store\";\r\n\r\nexport default class Walls extends Part {\r\n static id = 'Walls';\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'Walls';\r\n this.partThumbnail = wallsThumbnail;\r\n this.translateId = \"visualizer.kitchen.walls\";\r\n\r\n // related items\r\n this.leftWall = null;\r\n this.rightWall = null;\r\n this.popoutWall = null;\r\n this.ceiling = null;\r\n this.backsplash = null;\r\n }\r\n\r\n load(dbFeature) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Left Wall\":\r\n relatedItemName = \"leftWall\";\r\n RelatedItemClass = LeftWall;\r\n break;\r\n case \"Right Wall\":\r\n relatedItemName = \"rightWall\";\r\n RelatedItemClass = RightWall;\r\n break;\r\n case \"Popout Wall\":\r\n relatedItemName = \"popoutWall\";\r\n RelatedItemClass = PopoutWall;\r\n break;\r\n case \"Backsplash\":\r\n case \"backsplash\":\r\n relatedItemName = \"backsplash\";\r\n RelatedItemClass = Backsplash;\r\n break;\r\n case \"Ceiling\":\r\n relatedItemName = \"ceiling\";\r\n RelatedItemClass = Ceiling;\r\n break;\r\n // case \"Shower Shadow\":\r\n // if (\r\n // dbFeature.displayName.includes(\"Shower Shadow - Divider Wall\")\r\n // || dbFeature.displayName.includes(\"Shower Shadow - EX L\")\r\n // || dbFeature.displayName.includes(\"Shower Shadow - EX R\")\r\n // || dbFeature.displayName.includes(\"Shower Shadow - Popout\")\r\n // || dbFeature.displayName.includes(\"Shower Shadow - Pony Wall\")\r\n // ) {\r\n // relatedItemName = \"shadows\";\r\n // RelatedItemClass = Shadow;\r\n // }\r\n // break;\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n if (relatedItemName !== \"shadows\") {\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].load(dbFeature);\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n navigationItem() {\r\n return new DesignNavigationItem('Walls', this);\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false;\r\n }\r\n\r\n subParts(withHidden = true) {\r\n return this.relatedItems\r\n .filter(item => {\r\n if (item.partId === \"popout_wall\") {\r\n item.visible = item.getParent().layout.getCurrentLayoutAbbreviation().includes(\"P\")\r\n }\r\n return this.filterRelatedItem(item, withHidden)\r\n })\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n handleSubPartClick() {\r\n\r\n }\r\n\r\n recoverPrevioslySelected(activeRelatedPart) {\r\n const {activeQuoteIndex} = store.getState().quotesState;\r\n this.relatedItems.forEach(relatedItem => {\r\n if (relatedItem.partId !== activeRelatedPart.partId && relatedItem.activeFeatureBeforeAllWalls) {\r\n if (relatedItem.activeFeatureBeforeAllWalls === \"placeholder\") {\r\n relatedItem.placeholderChanged = false;\r\n relatedItem.firstClick[activeQuoteIndex] = false;\r\n } else if (!relatedItem.selectedByUser) {\r\n relatedItem.activeFeatureBeforeAllWalls.clickFromAllWalls();\r\n }\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import uniqBy from \"lodash/uniqBy\";\r\n\r\nimport {IntermediatePart} from \"../intermediatePart\";\r\nimport store from \"../../../../store\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\n\r\nexport default class CountertopCommon extends IntermediatePart {\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n navigationSubItems(filters, searchText) {\r\n const filteredAvailableFeatures = super.getFeaturesBySearchText(super.getFilteredFeaturesByFilters(filters), searchText);\r\n let featuresToDisplay = super.navigationSubItemsWithFilterMultipleConditions(this.getArrayOfConditions(), filteredAvailableFeatures);\r\n\r\n let newFeatures = this.getSameEdgesFeatures(featuresToDisplay);\r\n\r\n const featuresThatLeft = featuresToDisplay.filter(feature => {\r\n return !newFeatures.some(newFeature => newFeature.dbFeature.customDisplayName === feature.dbFeature.customDisplayName)\r\n });\r\n\r\n featuresThatLeft.forEach(feature => {\r\n let currentFeatureName = feature.getCountertopGroupsSplittedFeatureName();\r\n if (newFeatures.every(countertopFeature => {\r\n let customDisplayName = countertopFeature.getCountertopGroupsSplittedFeatureName();\r\n return customDisplayName !== currentFeatureName\r\n })) {\r\n newFeatures.push(feature);\r\n }\r\n });\r\n\r\n return uniqBy(newFeatures, (feature) => feature.dbFeature.id)\r\n .map(_ => new DesignNavigationItem(_.featureName, _));\r\n }\r\n\r\n getSameEdgesFeatures(featuresToDisplay) {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n const edgeFilterGroup = filterGroups.find(group => group.name === \"Edge\" || group.name === \"Edge Profile\");\r\n if (edgeFilterGroup) {\r\n let activeFeatureEdgeFilter = this.getFeatureEdgeFilter(this.activeFeature, edgeFilterGroup); // 1) take edge filter from active feature\r\n if (!activeFeatureEdgeFilter) { // 2) try to set it from active edge feature group active feature\r\n const edgeFeatureGroup = this.getParent().edge;\r\n if (edgeFeatureGroup && edgeFeatureGroup.activeFeature) {\r\n activeFeatureEdgeFilter = this.getFeatureEdgeFilter(edgeFeatureGroup.activeFeature, edgeFilterGroup);\r\n }\r\n }\r\n if (!activeFeatureEdgeFilter) { // 3) find at least some feature with edge filter\r\n for (let i = 0; i < featuresToDisplay.length; i++) {\r\n const edgeFilters = this.getFeatureEdgeFilter(featuresToDisplay[i], edgeFilterGroup);\r\n if (edgeFilters) {\r\n activeFeatureEdgeFilter = edgeFilters;\r\n break;\r\n }\r\n }\r\n }\r\n if (activeFeatureEdgeFilter) {\r\n const activeEdgeFilter = activeFeatureEdgeFilter[0];\r\n const activeEdgeFilter2 = activeFeatureEdgeFilter[1];\r\n featuresToDisplay = featuresToDisplay.filter((feature) => {\r\n if (feature.notAvailableInVisualizer) {\r\n return false\r\n }\r\n const currentFeatureFilters = this.getFeatureEdgeFilter(feature, edgeFilterGroup);\r\n return currentFeatureFilters && (currentFeatureFilters.includes(activeEdgeFilter) || (\r\n activeEdgeFilter2 && currentFeatureFilters.includes(activeEdgeFilter2)\r\n ))\r\n });\r\n }\r\n }\r\n return featuresToDisplay\r\n }\r\n\r\n getFeatureEdgeFilter = (feature, edgeFilterGroup) => {\r\n if (!feature) {\r\n return null\r\n }\r\n if (!edgeFilterGroup) {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n edgeFilterGroup = filterGroups.find(group => group.name === \"Edge\" || group.name === \"Edge Profile\");\r\n }\r\n return feature.dbFeature.fabFilterValueIDs[edgeFilterGroup.id] || feature.dbFeature.filterValueIDs[edgeFilterGroup.id]\r\n };\r\n\r\n tryToSetTheSameFeature(filteredFeatures = [], partName = \"\") {\r\n if (this.activeFeature && this.activeFeature.partName) {\r\n let splittedFromTheLayoutName = partName\r\n ? this.removeLayoutFromPartName(partName)\r\n : this.activeFeature.getMatchingFeatureName();\r\n const allEdgesCountertops = filteredFeatures.filter(feature => {\r\n return feature.getMatchingFeatureName() === splittedFromTheLayoutName\r\n });\r\n const sameEdgeCountertops = this.getSameEdgesFeatures(allEdgesCountertops);\r\n this.activeFeature = sameEdgeCountertops[0] || allEdgesCountertops[0] || null\r\n if (this.activeFeature) {\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n\r\n setDefault() {\r\n const filteredFeatures = this.getArrayOfConditions\r\n ? this.features.filter(f => f.dbFeature.s3Bindings && f.matchesMetaForArrayOfConditions(this.getArrayOfConditions()))\r\n : this.features;\r\n const matchingFeatureExist = this.tryToSetTheSameFeature(filteredFeatures, null);\r\n if (!matchingFeatureExist) {\r\n const edge = this.getParent().edge;\r\n let matchingEdgeFeature = null;\r\n if (edge && edge.activeFeature) {\r\n matchingEdgeFeature = edge.getMatchingCounterTop(edge.activeFeature, filteredFeatures);\r\n }\r\n this.activeFeature = matchingEdgeFeature || filteredFeatures[0];\r\n }\r\n if (this.setActiveFeatureParts) {\r\n this.activeFeatureParts = this.setActiveFeatureParts();\r\n }\r\n }\r\n\r\n}\r\n","import {IntermediatePart} from \"../intermediatePart\";\r\nimport store from \"../../../../store\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\nimport {getFilterGroupValueByName, getFilterGroupValues} from \"../../../../misc/utils\";\r\n\r\nexport default class EdgeCommon extends IntermediatePart {\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n navigationSubItems(filters, searchText) {\r\n const filteredAvailableFeatures = super.getFeaturesBySearchText(super.getFilteredFeaturesByFilters(filters), searchText);\r\n let featuresToDisplay = super.navigationSubItemsWithFilterMultipleConditions(this.getArrayOfConditions(), filteredAvailableFeatures);\r\n const edgeFilterGroup = this.getEdgeFilterGroup();\r\n const countertop = this.getParent().countertop;\r\n\r\n // here we check if some countertop has the same name as currently active countertop & it has edge filter\r\n if (edgeFilterGroup && countertop && countertop.activeFeature) {\r\n featuresToDisplay = featuresToDisplay.map((feature) => {\r\n feature.notAvailableInVisualizer = !this.getMatchingCounterTop(feature);\r\n return feature\r\n });\r\n }\r\n\r\n if (edgeFilterGroup && (this.partId === \"edge_profile\")) { // Waterfall check for back countertop\r\n const waterFallFilter = getFilterGroupValueByName(\"Waterfall\", edgeFilterGroup);\r\n if (waterFallFilter) {\r\n featuresToDisplay = featuresToDisplay.filter(feature => {\r\n const edgeFilters = getFilterGroupValues(feature, edgeFilterGroup)\r\n return !edgeFilters || !edgeFilters.includes(waterFallFilter.id)\r\n })\r\n }\r\n }\r\n\r\n return featuresToDisplay.map(_ => {\r\n const featurePart = new DesignNavigationItem(_.featureName, _);\r\n featurePart.notAvailableInVisualizer = featurePart.part.notAvailableInVisualizer;\r\n return featurePart\r\n });\r\n }\r\n\r\n handleClick(ignoreLocked) {\r\n super.handleClick(ignoreLocked); // set active edge feature\r\n this.matchingCounterTop = this.getMatchingCounterTop();\r\n console.log(\"this.matchingCounterTop\", this.matchingCounterTop);\r\n if (this.matchingCounterTop) {\r\n this.matchingCounterTop.handleClick(true);\r\n }\r\n this.featureClicked();\r\n }\r\n\r\n getMatchingCounterTop = (feature = this, countertopFeatures) => {\r\n const parent = feature.getParent();\r\n const countertop = parent.getParent().countertop;\r\n const edgeFilterGroup = feature.getEdgeFilterGroup();\r\n\r\n if (countertop && edgeFilterGroup) {\r\n const edgeFilterValue = feature.getEdgeFilterGroupFilters(feature, edgeFilterGroup);\r\n if (edgeFilterValue) {\r\n let matchingFeatures = (countertopFeatures || countertop.features).filter((feature) => {\r\n return (feature.dbFeature.filterValueIDs[edgeFilterGroup.id]\r\n && feature.dbFeature.filterValueIDs[edgeFilterGroup.id].some(edgeFilterId => {\r\n return edgeFilterValue.some(currentEdgeFilterId => currentEdgeFilterId === edgeFilterId)\r\n })) ||\r\n (feature.dbFeature.fabFilterValueIDs[edgeFilterGroup.id]\r\n && feature.dbFeature.fabFilterValueIDs[edgeFilterGroup.id].some(edgeFilterId => {\r\n return edgeFilterValue.some(currentEdgeFilterId => currentEdgeFilterId === edgeFilterId)\r\n }))\r\n });\r\n matchingFeatures = matchingFeatures.filter(feature => !feature.notAvailableInVisualizer)\r\n let matchingByName = feature.getMatchingCounterTopFeaturesBySplittedName(countertop, matchingFeatures);\r\n return matchingByName.length\r\n ? matchingByName[0]\r\n : matchingFeatures.length\r\n ? matchingFeatures[0]\r\n : null\r\n }\r\n }\r\n return null\r\n };\r\n\r\n getEdgeFilterGroupFilters = (feature, edgeFilterGroup) => {\r\n edgeFilterGroup = edgeFilterGroup || this.getEdgeFilterGroup();\r\n return getFilterGroupValues(feature, edgeFilterGroup)\r\n };\r\n\r\n getMatchingCounterTopFeaturesBySplittedName = (countertop, matchingFeatures = []) => { // array of sorted by filter features\r\n if (!countertop.activeFeature) {\r\n return []\r\n }\r\n let currentActiveName = countertop.activeFeature.getCountertopGroupsSplittedFeatureName();\r\n return matchingFeatures.filter(feature => {\r\n const currentFeatureName = feature.getCountertopGroupsSplittedFeatureName();\r\n return currentFeatureName === currentActiveName\r\n })\r\n };\r\n\r\n getEdgeFilterGroup = () => {\r\n const filterGroups = store.getState().filterState.filterGroups;\r\n return filterGroups.find(group => group.name === \"Edge\" || group.name === \"Edge Profile\");\r\n };\r\n\r\n getArrayOfConditions() {\r\n return []\r\n }\r\n\r\n canUseNavigationFilterSteps() {\r\n return true\r\n }\r\n\r\n setLayers() {\r\n return false\r\n }\r\n\r\n setZIndex() {\r\n return false\r\n }\r\n\r\n}\r\n","import React, {Component} from 'react';\r\nimport {connect} from 'react-redux';\r\nimport FilterSelection from \"./filterSelection\";\r\nimport PropTypes from \"prop-types\";\r\nimport {CABINET_WIZARD_BUTTONS, COUNTERTOP_WIZARD_BUTTONS} from \"../../../kvComponent/core/constants\";\r\nimport {\r\n setActiveNavigationFilter,\r\n setCountertopWizard,\r\n setActiveNavigationFilterStepIndex,\r\n setNavigationViewType\r\n} from \"../../../../actions/navigationFunctions\";\r\nimport {wizardAllButton} from \"../../../kvComponent/core/constants\";\r\nimport {setSelectedFilters} from \"../../../../actions/actionFunctions\";\r\nimport {replaceFilterArrayValue, toggleFilterArrayValue} from \"./filterSwitchers\";\r\nimport {getBvGroupFilterValues} from \"../../../../api/server-api\";\r\nimport {setAvailableFilterValues} from \"../../../../actions/filtersFunctions\";\r\nimport {s3FilterImagePath} from \"../../../../misc/utils\";\r\nimport {getAllFilterGroupValuesFromGroup} from \"../../../../misc/helpers\";\r\n\r\nclass NavigationFilters extends Component {\r\n\r\n static propTypes = {\r\n isMobile: PropTypes.bool,\r\n activePart: PropTypes.object.isRequired,\r\n onItemClick: PropTypes.func.isRequired,\r\n refreshCB: PropTypes.func.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n availableFilterValues: [],\r\n isLoading: false,\r\n filterGroup: {}\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setAvailableFiltersValues(this.props);\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if ((nextProps.activePart && this.props.activePart && nextProps.activePart.partName !== this.props.activePart.partName)\r\n || (nextProps.activeNavigationFilter !== this.props.activeNavigationFilter)) {\r\n this.setAvailableFiltersValues(nextProps);\r\n }\r\n this.resetFilters(nextProps);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.removeNavigationFiltersAndSetCommonView();\r\n }\r\n\r\n resetFilters(nextProps) {\r\n if ((nextProps.activeNavigationFilter !== this.props.activeNavigationFilter)\r\n && (nextProps.activeNavigationFilter === COUNTERTOP_WIZARD_BUTTONS[1].buttonId)\r\n && nextProps.selectedFilters.length\r\n ) {\r\n this.props.setSelectedFilters([]); // reset filters on color step\r\n }\r\n }\r\n\r\n getFilterGroupNameByButtonId(nextProps) {\r\n let activeButton = null;\r\n switch (nextProps.activePart.partId) {\r\n case \"top_cabinet\":\r\n case \"bottom_cabinet\":\r\n activeButton = CABINET_WIZARD_BUTTONS.find(button => button.buttonId === nextProps.activeNavigationFilter);\r\n break;\r\n case \"countertop\":\r\n case \"center_island_countertop\":\r\n activeButton = COUNTERTOP_WIZARD_BUTTONS.find(button => button.buttonId === nextProps.activeNavigationFilter);\r\n break;\r\n default:\r\n break;\r\n }\r\n return activeButton ? activeButton.filtersGroupName : \"\";\r\n }\r\n\r\n setAvailableFiltersValues(nextProps = this.props) {\r\n const filterGroupName = this.getFilterGroupNameByButtonId(nextProps);\r\n const filterGroup = nextProps.filterGroups.find(group => group.name === filterGroupName);\r\n if (filterGroup) {\r\n const selectedFilters = (filterGroup.name === COUNTERTOP_WIZARD_BUTTONS[2].filtersGroupName)\r\n ? nextProps.selectedFilters : []; // filter by selected filters only on 2nd(Material step)\r\n const availableFilterValues = FilterSelection.getAvailableFilterValues(\r\n nextProps.filterGroups, filterGroupName, nextProps.activePart, this.props.fabricatorData, selectedFilters\r\n );\r\n // console.log(\"availableFilterValues::\", availableFilterValues);\r\n const reorderedFilterValues = this.reorderFilterItems(nextProps, availableFilterValues);\r\n const countertopMaterialOrColor = (\r\n nextProps.activeNavigationFilter === COUNTERTOP_WIZARD_BUTTONS[1].buttonId\r\n || nextProps.activeNavigationFilter === COUNTERTOP_WIZARD_BUTTONS[2].buttonId\r\n );\r\n if (countertopMaterialOrColor ) {\r\n if (this.props.availableFilterValues[filterGroup.id]) {\r\n this.setToStateFilterValues([\"All\", ...this.props.availableFilterValues[filterGroup.id]], filterGroup);\r\n } else {\r\n this.setState({\r\n isLoading: true\r\n });\r\n getBvGroupFilterValues(nextProps.activePart.dbName || nextProps.activePart.partName, filterGroup.id)\r\n .then((response) => {\r\n this.props.setAvailableFilterValues({\r\n [filterGroup.id]: response.data\r\n });\r\n this.setToStateFilterValues([\"All\", ...response.data], filterGroup);\r\n })\r\n }\r\n } else {\r\n this.setToStateFilterValues(reorderedFilterValues, filterGroup);\r\n }\r\n }\r\n }\r\n\r\n setToStateFilterValues = (availableFilterValues, filterGroup) => {\r\n this.setState({\r\n isLoading: false,\r\n availableFilterValues,\r\n filterGroup\r\n })\r\n };\r\n\r\n setParentFilterValues = (filterValues) => {\r\n const nextProps = this.props;\r\n const filterGroupName = this.getFilterGroupNameByButtonId(nextProps);\r\n const filterGroup = nextProps.filterGroups.find(group => group.name === filterGroupName);\r\n const selectedFilters = (filterGroup.name === COUNTERTOP_WIZARD_BUTTONS[2].filtersGroupName)\r\n ? nextProps.selectedFilters : []; // filter by selected filters only on 2nd(Material step)\r\n\r\n let availableFilterValues = [];\r\n if (selectedFilters.length) {\r\n const colorFilterName = COUNTERTOP_WIZARD_BUTTONS[1].filtersGroupName;\r\n const colorFilterGroup = nextProps.filterGroups.find(group => {\r\n return group.name === colorFilterName\r\n });\r\n if (colorFilterGroup) {\r\n const selectedColorFilter = selectedFilters.find(filterG => filterG.filterGroupId === colorFilterGroup.id);\r\n const selectedColorValue = selectedColorFilter && selectedColorFilter.filterId;\r\n if (selectedColorValue || selectedColorValue === 0) {\r\n filterValues.forEach(filterValue => {\r\n if (nextProps.activePart.features.some(feature => {\r\n return feature.dbFeature\r\n && feature.dbFeature.filterValueIDs[filterGroup.id]\r\n && feature.dbFeature.filterValueIDs[filterGroup.id].includes(filterValue)\r\n && feature.dbFeature.filterValueIDs[colorFilterGroup.id]\r\n && feature.dbFeature.filterValueIDs[colorFilterGroup.id].includes(selectedColorValue)\r\n })) {\r\n availableFilterValues.push(filterValue)\r\n }\r\n })\r\n } else {\r\n availableFilterValues = filterValues;\r\n }\r\n } else {\r\n availableFilterValues = filterValues;\r\n }\r\n } else {\r\n availableFilterValues = filterValues;\r\n }\r\n const reorderedFilterValues = this.reorderFilterItems(this.props, availableFilterValues);\r\n this.setState({\r\n availableFilterValues: reorderedFilterValues\r\n })\r\n };\r\n\r\n reorderFilterItems = (nextProps, availableFilterValues) => {\r\n const currentActiveFilters = nextProps.activePart.activeFeature\r\n ? nextProps.activePart.activeFeature.dbFeature.filterValueIDs\r\n : {};\r\n // console.log(\"currentActiveFilters\", currentActiveFilters);\r\n return availableFilterValues.sort((a,b) => {\r\n const activeA = this.filterValueIsActive(currentActiveFilters, a);\r\n const activeB = this.filterValueIsActive(currentActiveFilters, b);\r\n return activeA !== activeB ? activeA < activeB ? -1 : 1 : 0;\r\n })\r\n };\r\n\r\n getFeatureBodyItemThumbnail = (currentFilterValue) => { // we have the logic with additionalImages in the FeatureWizardBody component\r\n const additionalImages = currentFilterValue.additionalImages;\r\n if (Array.isArray(additionalImages) && additionalImages.length) {\r\n return additionalImages[0].imageUrl\r\n }\r\n return s3FilterImagePath(currentFilterValue.icon);\r\n };\r\n\r\n filterValueIsActive = (currentActiveFilters, currentFilterValue) => {\r\n const activeNavigationFilter = this.props.activeNavigationFilter;\r\n const countertopMaterialOrColor = (\r\n activeNavigationFilter === COUNTERTOP_WIZARD_BUTTONS[1].buttonId\r\n || activeNavigationFilter === COUNTERTOP_WIZARD_BUTTONS[2].buttonId\r\n );\r\n if (countertopMaterialOrColor) {\r\n return false\r\n }\r\n if (activeNavigationFilter === \"inlay_type\" && this.state.filterGroup && this.state.filterGroup.values) {\r\n const modulePartJoined = this.props.moduleContextMenuModule + \"_\" + this.props.moduleContextMenuModulePart; //\"2_3\"\r\n for (let i = 0; i <= this.props.activePart.inlayTypes.length - 1; i++) {\r\n const inlayTypeObject = this.props.activePart.inlayTypes[i];\r\n const existingMJoined = inlayTypeObject.moduleParts.find(mJoined => mJoined === modulePartJoined);\r\n if (existingMJoined) { // not default!\r\n const fValue = this.state.filterGroup.values.find(val => val.value === inlayTypeObject.name);\r\n return fValue.id === currentFilterValue.id\r\n }\r\n }\r\n return currentFilterValue.value === this.props.activePart.defaultInlayType\r\n // } else if ((activeNavigationFilter === COUNTERTOP_WIZARD_BUTTONS[2].buttonId)\r\n // || (activeNavigationFilter === COUNTERTOP_WIZARD_BUTTONS[3].buttonId)) {\r\n // // return this.props.counterTopWizard[activeNavigationFilter] === currentFilterValue.id\r\n // const selectedFilter = this.props.selectedFilters.find(selectedF => {\r\n // return selectedF.filterGroupId === this.state.filterGroup.id\r\n // });\r\n // return (currentFilterValue.id === \"All\")\r\n // ? !selectedFilter\r\n // : selectedFilter && (selectedFilter.filterId === currentFilterValue.id)\r\n }\r\n\r\n return this.state.filterGroup && currentActiveFilters[this.state.filterGroup.id]\r\n && currentActiveFilters[this.state.filterGroup.id].includes(currentFilterValue.id);\r\n };\r\n\r\n removeNavigationFiltersAndSetCommonView = () => {\r\n const commonView = (this.props.windowWidth < 991) ? 4 : 3;\r\n if ((this.props.activeNavigationFilter === COUNTERTOP_WIZARD_BUTTONS[2].buttonId)\r\n && this.props.navigationViewType !== commonView) {\r\n this.props.setNavigationViewType(commonView);\r\n }\r\n this.props.setActiveNavigationFilter(null);\r\n };\r\n\r\n handleFilterValueClick = (currentFilterValue) => {\r\n // if (isActive) {\r\n // return // we don't need to do anything on active item click\r\n // }\r\n // console.log(\"currentFilterValue\", currentFilterValue);\r\n switch (this.props.activeNavigationFilter) {\r\n case \"inlay_type\": {\r\n const modulePartJoined = this.props.moduleContextMenuModule + \"_\" + this.props.moduleContextMenuModulePart; //\"2_3\"\r\n let neededInlayTypesObject = this.props.activePart.inlayTypes.find(obj => obj.name === currentFilterValue.value);\r\n if (currentFilterValue.value !== this.props.activePart.defaultInlayType) {\r\n if (!neededInlayTypesObject) {\r\n neededInlayTypesObject = {name: currentFilterValue.value, moduleParts: []}; // create new & push\r\n this.props.activePart.inlayTypes.push(neededInlayTypesObject);\r\n }\r\n if (!neededInlayTypesObject.moduleParts.includes(modulePartJoined)) {\r\n neededInlayTypesObject.moduleParts.push(modulePartJoined);\r\n this.props.activePart.activeFeatureParts = this.props.activePart.setActiveFeatureParts();\r\n this.props.refreshCB();\r\n }\r\n } else { // it is default type, we need to remove it from the not-default inlayTypes\r\n this.props.activePart.inlayTypes.forEach(inlayTypeObj => {\r\n const existingMJoinedIndex = inlayTypeObj.moduleParts.findIndex(mJoined => mJoined === modulePartJoined);\r\n if (existingMJoinedIndex > -1) {\r\n inlayTypeObj.moduleParts.splice(existingMJoinedIndex, 1);\r\n this.props.activePart.activeFeatureParts = this.props.activePart.setActiveFeatureParts();\r\n this.props.refreshCB();\r\n }\r\n });\r\n }\r\n this.forceUpdate(); // re-render to set new active item\r\n break;\r\n }\r\n case COUNTERTOP_WIZARD_BUTTONS[1].buttonId:\r\n case COUNTERTOP_WIZARD_BUTTONS[2].buttonId: {\r\n // this.props.setCountertopWizard({ // not needed for now, but probably we would need this logic in future\r\n // [this.props.activeNavigationFilter] : currentFilterValue.id\r\n // });\r\n if (currentFilterValue.id === \"All\") {\r\n const selectedFilter = this.props.selectedFilters.find(selectedF => {\r\n return selectedF.filterGroupId === this.state.filterGroup.id\r\n });\r\n if (selectedFilter) { // should work always, but just in case\r\n this.props.setSelectedFilters(toggleFilterArrayValue([...this.props.selectedFilters], {\r\n filterId: selectedFilter.filterId,\r\n filterGroupId: this.state.filterGroup.id\r\n })); // remove selected filter\r\n }\r\n this.removeNavigationFiltersAndSetCommonView();\r\n } else if (Array.isArray(currentFilterValue.items) && currentFilterValue.items.length) {\r\n this.setParentFilterValues(currentFilterValue.items.map(fValue => fValue.id))\r\n } else {\r\n this.props.setSelectedFilters(replaceFilterArrayValue([...this.props.selectedFilters], {\r\n filterId: currentFilterValue.id,\r\n filterGroupId: this.state.filterGroup.id\r\n }));\r\n this.removeNavigationFiltersAndSetCommonView();\r\n }\r\n break;\r\n }\r\n default: {\r\n let matchingFeatures = this.props.activePart.features.filter((feature) => {\r\n return this.state.filterGroup && feature.dbFeature.filterValueIDs[this.state.filterGroup.id]\r\n && feature.dbFeature.filterValueIDs[this.state.filterGroup.id].includes(currentFilterValue.id)\r\n });\r\n if (this.props.activePart.partId === \"top_cabinet\" && this.props.activePart.activeFeature.metaData[\"Module\"]) {\r\n const activeFeatureNameSplitted = this.props.activePart.activeFeature.partName.split(\" M \");\r\n matchingFeatures = matchingFeatures.filter((feature) => {\r\n const featureNameSplitted = feature.partName.split(\" M \");\r\n return (featureNameSplitted.length > 1) && (activeFeatureNameSplitted.length > 1)\r\n && featureNameSplitted[1] === activeFeatureNameSplitted[1]\r\n })\r\n } else if (this.props.activePart.partId === \"bottom_cabinet\" && this.props.activePart.activeFeature.metaData[\"Module\"]) {\r\n matchingFeatures = matchingFeatures.filter((feature) => feature.metaData[\"Appliance\"]\r\n && feature.metaData[\"Appliance\"].includes(\"Range\"))\r\n } else if (this.props.activePart.partId === \"countertop\" || this.props.activePart.partId === \"center_island_countertop\") {\r\n matchingFeatures = this.getMatchingFeaturesBySplittedName(matchingFeatures);\r\n }\r\n if (matchingFeatures.length) {\r\n this.props.onItemClick({part:matchingFeatures[0]}, true);\r\n this.forceUpdate(); // re-render to set new active item\r\n }\r\n break;\r\n }\r\n }\r\n\r\n };\r\n\r\n getMatchingFeaturesBySplittedName = (matchingFeatures = []) => { // array of sorted by filter features\r\n let currentActiveName = this.props.activePart.activeFeature.partName;\r\n const filterGroupName = this.getFilterGroupNameByButtonId(this.props);\r\n const filterGroup = this.props.filterGroups.find(group => group.name === filterGroupName);\r\n if (filterGroup && filterGroup.values && filterGroup.values.length) {\r\n filterGroup.values.forEach((filterGroupValue) => { // arrayOf {id: 293, value: \"Eased\", displayText: \"Eased\", parent_id: null, icon: \"\", …}\r\n currentActiveName = currentActiveName.split(\" \"+filterGroupValue.value).join(\"\");\r\n });\r\n }\r\n return matchingFeatures.filter(feature => {\r\n let featureName = feature.partName;\r\n filterGroup.values.forEach((filterGroupValue) => { // arrayOf {id: 293, value: \"Eased\", displayText: \"Eased\", parent_id: null, icon: \"\", …}\r\n featureName = featureName.split(\" \"+filterGroupValue.value).join(\"\");\r\n });\r\n return featureName === currentActiveName\r\n })\r\n };\r\n\r\n getFilterFeatureItem = (filterValue, currentIndex, currentActiveFilters) => {\r\n const currentFilterValue = filterValue === \"All\"\r\n ? wizardAllButton\r\n : getAllFilterGroupValuesFromGroup(this.state.filterGroup).find(val => val.id === filterValue); // Object\r\n if (!currentFilterValue) {\r\n // console.log(\"NO filterValue!\", filterValue, currentIndex, this.state.availableFilterValues);\r\n return;\r\n }\r\n let thumbnail = this.getFeatureBodyItemThumbnail(currentFilterValue);\r\n\r\n const styles = {\r\n backgroundSize: this.props.activeNavigationFilter === \"color\" ? \"cover\" : \"inherit\"\r\n };\r\n if (thumbnail) {\r\n styles.backgroundImage = \"url(\" + thumbnail + \")\";\r\n }\r\n if (!thumbnail && currentFilterValue && this.props.activeNavigationFilter === \"color\") {\r\n styles.backgroundColor = currentFilterValue.value;\r\n }\r\n if (filterValue === \"All\") {\r\n styles.backgroundSize = (this.props.windowWidth < 991) ? \"70%\" : \"50%\";\r\n styles.backgroundPosition = \"top 30% center\";\r\n }\r\n const isActive = this.filterValueIsActive(currentActiveFilters, currentFilterValue);\r\n\r\n return this.props.isMobile ? (\r\n
  • \r\n
    this.handleFilterValueClick(currentFilterValue)}\r\n style={styles}>\r\n
    \r\n {currentFilterValue.displayText}\r\n
    \r\n
    \r\n
  • \r\n ) : (\r\n
    this.handleFilterValueClick(currentFilterValue)}\r\n style={styles}>\r\n
    \r\n {currentFilterValue.displayText}\r\n
    \r\n
    \r\n )\r\n };\r\n\r\n renderMobileFiltersList = () => {\r\n\r\n if (this.state.isLoading) {\r\n return this.renderLoadingList();\r\n }\r\n\r\n const currentActiveFilters = this.props.activePart.activeFeature\r\n ? this.props.activePart.activeFeature.dbFeature.filterValueIDs\r\n : {};\r\n\r\n if (!this.state.filterGroup || !this.state.filterGroup.values) {\r\n return [];\r\n }\r\n\r\n return this.state.availableFilterValues.map((filterValue, filterValueIndex) => {\r\n return this.getFilterFeatureItem(filterValue, filterValueIndex, currentActiveFilters)\r\n })\r\n };\r\n\r\n renderFiltersList = () => {\r\n\r\n const currentActiveFilters = this.props.activePart.activeFeature\r\n ? this.props.activePart.activeFeature.dbFeature.filterValueIDs\r\n : {};\r\n\r\n const navigationViewType = this.props.navigationViewType === 3 ? 2 : 1;\r\n const elements = [];\r\n for (let i = 0; i <= Math.ceil(this.state.availableFilterValues.length - 1 / navigationViewType); i++ ) { // for ex. 28/3 = 10 columns\r\n const innerElements = [];\r\n for (let j = 0; j < navigationViewType;j++ ) {\r\n const currentIndex = j+(i*navigationViewType);\r\n // console.log(\"currentIndex\", currentIndex);\r\n const filterValue = this.state.availableFilterValues[currentIndex]; // Number, for example 1031\r\n if (!this.state.filterGroup || !this.state.filterGroup.values) {\r\n break;\r\n }\r\n innerElements.push(this.getFilterFeatureItem(filterValue, currentIndex, currentActiveFilters));\r\n }\r\n elements.push(\r\n
  • \r\n {innerElements}\r\n
  • \r\n );\r\n }\r\n\r\n return elements\r\n };\r\n\r\n renderLoadingList() {\r\n return
    \r\n }\r\n\r\n render() {\r\n return this.props.isMobile ? this.renderMobileFiltersList() : (\r\n
      \r\n {this.state.isLoading ? this.renderLoadingList() : this.renderFiltersList()}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n filterGroups: store.filterState.filterGroups,\r\n fabricatorData: store.fabricatorState,\r\n activeNavigationFilter: store.navigationState.activeNavigationFilter,\r\n moduleContextMenuModule: store.navigationState.moduleContextMenuModule,\r\n moduleContextMenuModulePart: store.navigationState.moduleContextMenuModulePart,\r\n counterTopWizard: store.navigationState.counterTopWizard,\r\n navigationViewType: store.navigationState.navigationViewType,\r\n selectedFilters: store.filterState.selectedFilters,\r\n availableFilterValues: store.filterState.availableFilterValues,\r\n windowWidth: store.serverState.windowWidth,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n setCountertopWizard,\r\n setSelectedFilters,\r\n setActiveNavigationFilter,\r\n setActiveNavigationFilterStepIndex,\r\n setNavigationViewType,\r\n setAvailableFilterValues,\r\n})(NavigationFilters);\r\n","import React, {Component} from 'react';\r\nimport {connect} from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport $ from \"jquery\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport SelectionMobileViewSwitchers from '../mobile/selectionMobileViewSwitchers';\r\nimport FeatureWizardSteps from './featureWizardSteps';\r\nimport FeatureWizardBody from './featureWizardBody';\r\nimport UserLoginButton from './../../../ui/userLoginButton';\r\nimport BodyPanel from \"../desktop/bodyPanel\";\r\nimport ActionTypes from \"../../../../misc/actionTypes\";\r\nimport {NotQCVanityDoorStylesFilters} from \"../../../bvComponent/core/constants\";\r\nimport {UserPopupTypes} from \"../../constants\";\r\n\r\nclass FeatureWizard extends Component {\r\n\r\n static propTypes = {\r\n features: PropTypes.array.isRequired,\r\n exitFeatureWizard: PropTypes.func.isRequired,\r\n handleNavigationItemClick: PropTypes.func.isRequired,\r\n isMobile: PropTypes.bool.isRequired,\r\n wizardGroups: PropTypes.array.isRequired,\r\n setWizardGroups: PropTypes.func.isRequired,\r\n changeMessageBoxState: PropTypes.func.isRequired,\r\n setWizardLockedItem: PropTypes.func,\r\n isPhoneNumberValidated: PropTypes.bool,\r\n userIsLoggedIn: PropTypes.bool,\r\n toggleUserPopup: PropTypes.func,\r\n searchText: PropTypes.string,\r\n // bodyPanelNeededProps\r\n activePart: PropTypes.object,\r\n activeSubPart: PropTypes.object,\r\n toggleApplyWallsCheckbox: PropTypes.func,\r\n isWallItem: PropTypes.func,\r\n handleSubTypeClick: PropTypes.func,\r\n getFilterDisplayName: PropTypes.func,\r\n showerWallWizardGroupsSelected: PropTypes.bool,\r\n toggleWizardFilterSelection: PropTypes.func,\r\n handleSearchInputChange: PropTypes.func,\r\n // bodyPanelNeededProps end\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n window.itemClickCount = window.itemClickCount || 0;\r\n window.allowClickLeadCapturePopup = true;\r\n this.state = {\r\n availableSteps: [],\r\n defaultSteps: [],\r\n featureWizardStep: 0,\r\n showMobileGroups: false,\r\n mounted: false,\r\n finishClicked: true,\r\n filteredFeatures: [],\r\n reload: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n let availableSteps = [];\r\n // const fabricatorSettings = this.props.fabricatorData.settings;\r\n const filteredFeatures = this.getFilteredFeatures();\r\n const itemIsSelected = this.activeItemIsSelected();\r\n\r\n filteredFeatures.forEach((feature) => {\r\n this.props.wizardGroups.forEach((wizardGroup) => {\r\n // console.log('wizardGroup', wizardGroup);\r\n const filter = this.props.filterGroups.find(filterGroup => filterGroup.name.trim() === wizardGroup.filterName);\r\n if (filter) {\r\n const filterId = filter.id;\r\n\r\n let currentFilter = availableSteps.find(step => step.filterName === wizardGroup.filterName);\r\n if (!currentFilter) {\r\n currentFilter = {\r\n filterName: wizardGroup.filterName,\r\n values: wizardGroup.values || [],\r\n id: filterId,\r\n selectedValueId: wizardGroup.selectedValueId,\r\n selectedValueName: wizardGroup.selectedValueName,\r\n hidden: this.checkStepForHidden(filter.name),\r\n hasValues: false\r\n };\r\n availableSteps.push(currentFilter);\r\n }\r\n\r\n const sizeIds = feature.dbFeature.filterValueIDs[filterId];\r\n if (sizeIds) {\r\n if (!currentFilter.hasValues) {\r\n currentFilter.hasValues = true;\r\n }\r\n sizeIds.forEach(filterValue => {\r\n const filterValueExist = currentFilter.values.find(wizardValueObject => +wizardValueObject.filterValue === +filterValue);\r\n if (!filterValueExist) {\r\n let doNotPush = false;\r\n if (currentFilter.filterName === \"DoorStyle\" || currentFilter.filterName === \"Material\") {\r\n const fValue = filter.values.find(val => val.id === filterValue);\r\n if (fValue) {\r\n if (fValue.value === \"QC Hermosa\" || (fValue.value === \"Slab\" && this.props.fabricatorData.isRebath)) {\r\n doNotPush = true\r\n }\r\n }\r\n }\r\n if (!doNotPush) {\r\n currentFilter.values.push({\r\n selectionAvailable: true,\r\n filterValue\r\n })\r\n }\r\n }\r\n });\r\n }\r\n }\r\n });\r\n });\r\n\r\n availableSteps = availableSteps.filter(currentFilter => currentFilter.hasValues); // we might have no filter values\r\n\r\n const allStepsCompleted = availableSteps.every(step => step.selectedValueId);\r\n if (itemIsSelected && this.props.activeSubPart.activeFeature) { // set active filters from the active item\r\n // if (this.props.activeSubPart.activeFeature && this.props.activeSubPart.firstClick[this.props.activeQuoteIndex] && this.props.activeSubPart.placeholderChanged) {\r\n const currentActiveFilters = this.props.activeSubPart.activeFeature.dbFeature.filterValueIDs;\r\n availableSteps = availableSteps.map(step => {\r\n const filterGroup = this.props.filterGroups.find(filterGroup => {\r\n return filterGroup.id === step.id\r\n });\r\n let filterGroupValue = {};\r\n if (currentActiveFilters[step.id]) {\r\n const selectedFilterValueId = currentActiveFilters[step.id][0];\r\n filterGroupValue = filterGroup && filterGroup.values.find(filterGroupValue => {\r\n return filterGroupValue.id === selectedFilterValueId\r\n });\r\n }\r\n if (filterGroupValue) {\r\n step.selectedValueName = filterGroupValue.displayText;\r\n step.selectedValueId = filterGroupValue.id;\r\n }\r\n step.selectedItemIsLocked = this.getLockedPropertyValueObjectById(filterGroupValue, filterGroupValue.id, step.id, filteredFeatures);\r\n return step\r\n })\r\n }\r\n\r\n this.setState({\r\n filteredFeatures,\r\n defaultSteps: availableSteps.map(a => Object.assign({}, a)), // they need to be different\r\n availableSteps: availableSteps.map(b => Object.assign({}, b)),\r\n // showMobileGroups: allStepsCompleted,\r\n featureWizardStep: this.props.wizardStepIndex <= availableSteps.filter(step => !step.hidden).length - 1 ? this.props.wizardStepIndex : 0,\r\n finishClicked: allStepsCompleted\r\n }, () => {\r\n if (this.activeItemIsSelected()) {\r\n this.updateStepValues(availableSteps);\r\n }\r\n this.setLockedView();\r\n setTimeout(() => {\r\n this.setState({\r\n mounted: true\r\n });\r\n }, 0)\r\n });\r\n $(document).on(ActionTypes.USER_IS_LOGGED_IN, this.userHasLoggedIn);\r\n }\r\n\r\n componentWillUnmount = () => {\r\n this.props.setWizardGroups(this.state.availableSteps, this.props.activeSubPart.partId);\r\n $(document).off(ActionTypes.USER_IS_LOGGED_IN, this.userHasLoggedIn);\r\n };\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.activeSubPart && this.props.activeSubPart && (nextProps.activeSubPart.partId !== this.props.activeSubPart.partId)) {\r\n this.componentDidMount();\r\n }\r\n }\r\n\r\n updateStepValues = (availableSteps = this.state.availableSteps, forceClick = false) => {\r\n this.setState({\r\n reload: forceClick,\r\n availableSteps: availableSteps.map((step, stepIndex) => {\r\n step.values = this.setStepValues(step, stepIndex);\r\n return step\r\n })\r\n }, () => {\r\n if (forceClick) {\r\n this.setState({\r\n reload: false\r\n })\r\n }\r\n })\r\n };\r\n\r\n getFilteredFeatures = () => {\r\n const activePart = this.props.activeSubPart;\r\n if (activePart.partId === \"shower_interior_wall\") {\r\n return activePart.navigationSubItemsWithFilterMultipleConditions(activePart.getArrayOfConditions())\r\n }\r\n return this.props.features.filter(feature => {\r\n return !feature.dbFeature.displayName.includes(\"Hermosa\")\r\n })\r\n };\r\n\r\n getLockedPropertyValueObjectById = (currentFilterValue, filterValueId, stepId, filteredFeatures = this.state.filteredFeatures) => {\r\n const fabricatorSettings = this.props.fabricatorData.settings;\r\n filteredFeatures = filteredFeatures.filter(feature => {\r\n return !feature.dbFeature.displayName.includes(\"laceholder\")\r\n });\r\n let itemIsLocked = false;\r\n if (fabricatorSettings.leadCapture && !this.props.isPhoneNumberValidated && !(document.kvConfig.isBackend && document.kvConfig.jobId && document.kvConfig.canSaveQuote)) {\r\n if (currentFilterValue.lockedInWizard || !filteredFeatures.some(feature => {\r\n // console.log('bject.keys(feature.dbFeature.filterValueIDs)', Object.keys(feature.dbFeature.filterValueIDs));\r\n const filterToFind = feature.dbFeature.filterValueIDs[stepId];\r\n return filterToFind && filterToFind.includes(filterValueId) && feature.dbFeature.unlocked;\r\n })) {\r\n itemIsLocked = true\r\n }\r\n }\r\n return itemIsLocked\r\n };\r\n\r\n userHasLoggedIn = () => {\r\n const currentStep = this.state.availableSteps.filter(step => !step.hidden)[this.state.featureWizardStep];\r\n if (currentStep.selectedValueId) {\r\n const selectedValue = currentStep.values.find(val => val.filterValue === currentStep.selectedValueId);\r\n if (selectedValue) { // just in case, we might remove this check\r\n this[selectedValue.selectionAvailable ? \"onItemClick\" : \"onItemClickDisabled\"](\r\n {\r\n id:currentStep.selectedValueId,\r\n value: currentStep.selectedValueName,\r\n displayText: currentStep.selectedValueName\r\n },\r\n false,\r\n currentStep.filterName\r\n )\r\n }\r\n }\r\n };\r\n\r\n activeItemIsSelected = () => {\r\n const fabricatorSettings = this.props.fabricatorData.settings;\r\n const activeSubPart = this.props.activeSubPart;\r\n return (!fabricatorSettings.leadCapture\r\n || (activeSubPart.activeFeature && !activeSubPart.activeFeature.partName.includes(\"WizardPlaceholder\")\r\n && activeSubPart.firstClick[this.props.activeQuoteIndex] && activeSubPart.placeholderChanged));\r\n };\r\n\r\n checkStepForHidden = (filterGroupName) => {\r\n let hidden = false;\r\n filterGroupName = filterGroupName.trim().toLowerCase();\r\n if (this.activeItemIsSelected() && this.props.activeSubPart.activeFeature) {\r\n\r\n const currentActiveFilters = this.props.activeSubPart.activeFeature.dbFeature.filterValueIDs;\r\n\r\n if (this.props.activeSubPart.partId === \"shower_interior_wall\") {\r\n const materialFilter = this.props.filterGroups.find(filterGroup => filterGroup.name.trim() === \"Material\");\r\n if (materialFilter && currentActiveFilters[materialFilter.id]) { // check for existing BV filters\r\n const materialValueId = currentActiveFilters[materialFilter.id][0];\r\n const materialValue = materialFilter.values.find(val => val.id === materialValueId);\r\n if (materialValue && (\r\n (materialValue.value !== \"DuraBath\" && filterGroupName === \"durabathcolor\")\r\n || (materialValue.value !== \"DuraBath\" && materialValue.value !== \"Tile\" && filterGroupName === \"tilepattern\")\r\n || (materialValue.value !== \"Acrylic\" && filterGroupName === \"acrylicpattern\")\r\n || (materialValue.value !== \"Acrylic\" && filterGroupName === \"acryliccolor\")\r\n || (materialValue.value !== \"Tile\" && filterGroupName === \"tilecolor\")\r\n || (materialValue.value !== \"Slab\" && materialValue.value !== \"DuraBath Natural Stone\" && filterGroupName === \"slabcolor\")\r\n )) {\r\n hidden = true;\r\n }\r\n }\r\n } else if (this.props.activeSubPart.partId === \"vanity_cabinet\") {\r\n const doorStyleFilter = this.props.filterGroups.find(filterGroup => filterGroup.name.trim() === \"DoorStyle\");\r\n if (doorStyleFilter && currentActiveFilters[doorStyleFilter.id]) { // check for existing BV filters\r\n const doorStyleValueId = currentActiveFilters[doorStyleFilter.id][0];\r\n const doorStyleValue = doorStyleFilter.values.find(val => val.id === doorStyleValueId);\r\n if (doorStyleValue && (\r\n (!NotQCVanityDoorStylesFilters.includes(doorStyleValue.value) && filterGroupName === \"material\")\r\n )) {\r\n hidden = true;\r\n }\r\n }\r\n }\r\n } else if (this.props.activeSubPart.partId === \"shower_interior_wall\") {\r\n const wizardFilters = [\"slabcolor\", \"tilecolor\", \"tilepattern\", \"acrylicpattern\", \"acryliccolor\"];\r\n hidden = wizardFilters.includes(filterGroupName);\r\n } else if (this.props.activeSubPart.partId === \"vanity_cabinet\") {\r\n hidden = filterGroupName === \"material\"\r\n }\r\n return hidden\r\n };\r\n\r\n setLockedView = () => {\r\n\r\n const fabricatorSettings = this.props.fabricatorData.settings;\r\n\r\n const currentStep = this.state.availableSteps.filter(step => !step.hidden)[this.state.featureWizardStep];\r\n if (currentStep && currentStep.selectedValueId && fabricatorSettings.leadCapture && !this.props.isPhoneNumberValidated) {\r\n const currentGroup = this.props.filterGroups.find((filterGroup) => {\r\n return filterGroup.id === currentStep.id\r\n });\r\n const currentFilterValue = currentGroup.values.find(currentGroupValue => {\r\n return currentGroupValue.id === currentStep.selectedValueId\r\n });\r\n const filteredFeatures = this.state.filteredFeatures.filter(feature => {\r\n return !feature.dbFeature.displayName.includes(\"laceholder\")\r\n });\r\n\r\n let itemIsLocked = false;\r\n if (currentFilterValue.lockedInWizard || !filteredFeatures.some(feature => {\r\n // console.log('bject.keys(feature.dbFeature.filterValueIDs)', Object.keys(feature.dbFeature.filterValueIDs));\r\n const filterToFind = feature.dbFeature.filterValueIDs[currentStep.id];\r\n return filterToFind && filterToFind.includes(currentStep.selectedValueId) && feature.dbFeature.unlocked;\r\n })) {\r\n itemIsLocked = true\r\n }\r\n\r\n this.props.setWizardLockedItem(itemIsLocked);\r\n }\r\n };\r\n\r\n // getCurrentFilterObject = (stepIndex) => {\r\n getCurrentFilterObject = () => {\r\n const selectedFilterObject = {};\r\n // const availableSteps = (stepIndex || stepIndex === 0)\r\n // ? this.state.availableSteps.slice(0, stepIndex) // we need to get only previous selected values if index is passed\r\n // : this.state.availableSteps;\r\n this.state.availableSteps.filter(step => !step.hidden).forEach((availableStep) => {\r\n if (availableStep.selectedValueId) {\r\n selectedFilterObject[availableStep.id] = availableStep.selectedValueId\r\n }\r\n });\r\n return selectedFilterObject\r\n };\r\n\r\n setFeatureWizardStep = (featureWizardStep) => {\r\n const availableSteps = !featureWizardStep && !this.state.availableSteps[0].selectedValueId\r\n ? this.state.defaultSteps\r\n : this.state.availableSteps.map((availableStep, index) => {\r\n availableStep.values = this.setStepValues(availableStep, index);\r\n return availableStep\r\n });\r\n this.setState({\r\n featureWizardStep: availableSteps.filter(step => !step.hidden)[featureWizardStep] ? featureWizardStep : 0,\r\n showMobileGroups: false,\r\n availableSteps\r\n }, () => {\r\n this.setLockedView();\r\n });\r\n this.props.handleSearchInputChange({target: {value: ''}});\r\n };\r\n\r\n setStepValues = (step, stepIndex) => {\r\n const selectedFilterObject = this.getCurrentFilterObject(stepIndex); // get only previous selected values\r\n // console.log('selectedFilterObject111', selectedFilterObject);\r\n return this.state.defaultSteps[stepIndex].values.map((wizardValueObject) => {\r\n let allFiltersObject = Object.assign({}, selectedFilterObject);\r\n\r\n // if (this.props.activeSubPart.partId === \"vanity_cabinet\" && step.filterName === \"Color\" && selectedFilterObject) {\r\n // const doorStyleFilter = this.props.filterGroups.find(filterGroup => filterGroup.name.trim() === \"DoorStyle\");\r\n // if (doorStyleFilter && selectedFilterObject[doorStyleFilter.id] === 661) {\r\n // selectedFilterObject[doorStyleFilter.id] = 660 // TODO[Artem] REMOVE THIS HARDCODE (QC HERMOZA HAS WRONG FILTER ID!)\r\n // }\r\n // }\r\n\r\n allFiltersObject[step.id] = +wizardValueObject.filterValue;\r\n // console.log('allFiltersObject', allFiltersObject);\r\n wizardValueObject.selectionAvailable = this.state.filteredFeatures.some(feature => {\r\n const featureFilters = feature.dbFeature.filterValueIDs;\r\n if (featureFilters && Object.keys(allFiltersObject).every((filterKey) => {\r\n return featureFilters[filterKey] && featureFilters[filterKey].includes(allFiltersObject[filterKey])\r\n })) {\r\n // console.log('feature', feature);\r\n return true\r\n }\r\n return false\r\n });\r\n return wizardValueObject\r\n });\r\n };\r\n\r\n getFilterValue = (step, filterValue) => {\r\n const filterGroup = this.props.filterGroups.find(filterGroup => {\r\n return filterGroup.id === this.state.availableSteps.filter(step => !step.hidden)[step].id\r\n });\r\n const filterGroupValue = filterGroup && filterGroup.values.find(filterGroupValue => {\r\n return filterGroupValue.id === +filterValue.id\r\n });\r\n return filterGroupValue\r\n };\r\n\r\n onItemClick = (filterValue, itemIsLocked, currentStepFilterName, forceClick = false) => {\r\n\r\n const fabricatorSettings = this.props.fabricatorData.settings;\r\n if( !this.props.userIsLoggedIn && fabricatorSettings.clickLeadCapture\r\n && ++window.itemClickCount >= fabricatorSettings.clickLeadCount && window.allowClickLeadCapturePopup) {\r\n this.handleUserLoginClick(UserPopupTypes.NewDesign);\r\n return;\r\n }\r\n\r\n let resetStepValues = false;\r\n if (this.props.activeSubPart.partId === \"vanity_cabinet\" && (currentStepFilterName === \"Size\") && !itemIsLocked) {\r\n resetStepValues = true\r\n }\r\n\r\n /*** 1) just set new filter value ***/\r\n const availableSteps = this.state.availableSteps.map((availableStep) => {\r\n if (availableStep.filterName === currentStepFilterName) {\r\n availableStep.selectedValueId = filterValue.id;\r\n const filterGroupValue = this.getFilterValue(this.state.featureWizardStep, filterValue);\r\n availableStep.selectedValueName = filterGroupValue ? filterGroupValue.displayText : \"\";\r\n availableStep.selectedItemIsLocked = itemIsLocked;\r\n }\r\n /*** 2) add for filter steps hidden values & clear selected values ***/\r\n availableStep = this.setHiddenStateToStep(availableStep, currentStepFilterName, filterValue, forceClick || resetStepValues);\r\n // if (availableStep.needToRefresh) {\r\n // forceReload = true;\r\n // delete availableStep.needToRefresh\r\n // }\r\n return availableStep\r\n });\r\n\r\n /*** 3) if it is SelectionNotAvailableClick & clicked on a DoorStyle - check if current Vanity support it ***/\r\n if (this.props.activeSubPart.partId === \"vanity_cabinet\" && forceClick && currentStepFilterName === \"DoorStyle\") {\r\n\r\n const sizeStep = this.state.availableSteps.find(step => step.filterName === \"Size\");\r\n const doorStyleStep = this.state.availableSteps.find(step => step.filterName === currentStepFilterName);\r\n\r\n let existingIdeallyFeature = this.state.filteredFeatures.find(feature => {\r\n const doorStyleMatch = feature.dbFeature.filterValueIDs[doorStyleStep.id]\r\n && feature.dbFeature.filterValueIDs[doorStyleStep.id][0] === filterValue.id;\r\n const sizeMatch = sizeStep.selectedValueId && feature.dbFeature.filterValueIDs[sizeStep.id]\r\n && feature.dbFeature.filterValueIDs[sizeStep.id][0] === sizeStep.selectedValueId;\r\n return doorStyleMatch && sizeMatch\r\n });\r\n if (!existingIdeallyFeature) {\r\n existingIdeallyFeature = this.state.filteredFeatures.find(feature => {\r\n const doorStyleMatch = feature.dbFeature.filterValueIDs[doorStyleStep.id]\r\n && feature.dbFeature.filterValueIDs[doorStyleStep.id][0] === filterValue.id;\r\n return doorStyleMatch\r\n });\r\n }\r\n // console.log('existingIdeallyFeature', existingIdeallyFeature);\r\n if (existingIdeallyFeature) {\r\n const sizeValue = existingIdeallyFeature.dbFeature.filterValueIDs[sizeStep.id][0];\r\n if (sizeValue && sizeStep.selectedValueId !== sizeValue) {\r\n sizeStep.selectedValueId = sizeValue;\r\n const filterGroup = this.props.filterGroups.find(filterGroup => filterGroup.id === sizeStep.id);\r\n const filterGroupValue = filterGroup && filterGroup.values.find(filterGroupValue => {\r\n return filterGroupValue.id === sizeValue\r\n });\r\n sizeStep.selectedValueName = filterGroupValue ? filterGroupValue.displayText : \"\";\r\n sizeStep.selectedItemIsLocked = sizeStep.values.find(val => val.filterValue === sizeValue.itemIsLocked);\r\n }\r\n }\r\n } else if (this.props.activeSubPart.partId === \"shower_interior_wall\" && !itemIsLocked) {\r\n if (currentStepFilterName === \"DuraBathColor\") {\r\n const patternStep = this.state.availableSteps.find(step => step.filterName === \"TilePattern\");\r\n if (!patternStep.selectedValueId) {\r\n const patternGroup = this.props.filterGroups.find(filterGroup => filterGroup.id === patternStep.id);\r\n const patternGroupSlabValue = patternGroup.values.find(step => step.value === \"Smooth\");\r\n if (patternGroupSlabValue) {\r\n patternStep.selectedValueId = patternGroupSlabValue.id;\r\n patternStep.selectedValueName = patternGroupSlabValue.displayText;\r\n const smoothFilterObject = patternStep.values.find(val => val.filterValue === patternGroupSlabValue.id);\r\n patternStep.selectedItemIsLocked = smoothFilterObject ? smoothFilterObject.itemIsLocked : false\r\n }\r\n }\r\n }\r\n }\r\n this.setState({\r\n availableSteps,\r\n }, () => {\r\n this.tryToClickOnMatchingFiltersItem(itemIsLocked, forceClick)\r\n });\r\n };\r\n\r\n setHiddenStateToStep = (availableStep, currentStepFilterName, filterValue, resetStepValues) => {\r\n const filterValueName = filterValue.value.toLowerCase();\r\n const stepName = availableStep.filterName.toLowerCase();\r\n if (this.state.featureWizardStep === 0 && this.props.activeSubPart.partId === \"shower_interior_wall\") {\r\n availableStep.hidden =\r\n (filterValueName !== \"durabath\" && stepName === \"durabathcolor\")\r\n || (filterValueName !== \"durabath\" && filterValueName !== \"tile\" && stepName === \"tilepattern\")\r\n || (filterValueName !== \"acrylic\" && stepName === \"acrylicpattern\")\r\n || (filterValueName !== \"acrylic\" && stepName === \"acryliccolor\")\r\n || (filterValueName !== \"slab\" && filterValueName !== \"durabath natural stone\" && stepName === \"slabcolor\")\r\n || (filterValueName !== \"tile\" && stepName === \"tilecolor\")\r\n } else if (this.props.activeSubPart.partId === \"vanity_cabinet\") {\r\n if (currentStepFilterName === \"DoorStyle\") { // clicked on a door style step value\r\n const withoutDoorStyle = !NotQCVanityDoorStylesFilters.includes(filterValue.value);\r\n availableStep.hidden = (withoutDoorStyle && stepName === \"material\");\r\n\r\n const wizardIsFinished = this.state.availableSteps.filter(step => !step.hidden).every(step => step.selectedValueId);\r\n\r\n if ((stepName === \"material\" || stepName === \"color\") && (resetStepValues || !wizardIsFinished)) {\r\n availableStep.selectedValueId = null;\r\n availableStep.selectedValueName = \"\";\r\n availableStep.selectedItemIsLocked = false;\r\n // availableStep.needToRefresh = true;\r\n }\r\n } else if (resetStepValues && currentStepFilterName === \"Size\" && stepName !== \"size\") { // clicked on a Size step value\r\n availableStep.selectedValueId = null;\r\n availableStep.selectedValueName = \"\";\r\n availableStep.selectedItemIsLocked = false;\r\n }\r\n }\r\n return availableStep\r\n };\r\n\r\n getPlaceholdersFeatures = () => {\r\n return this.state.filteredFeatures.filter(feature => feature.dbFeature.displayName.includes(\"WizardPlaceholder\"));\r\n };\r\n\r\n tryToClickOnMatchingFiltersItem = (itemIsLocked, forceClick) => {\r\n this.props.setWizardLockedItem(itemIsLocked);\r\n\r\n const selectedFilterObject = this.getCurrentFilterObject();\r\n // console.log('selectedFilterObject', selectedFilterObject);\r\n // console.log('=========');\r\n const arrayOfSelectedKeys = Object.keys(selectedFilterObject);\r\n const wizardIsFinished = this.state.availableSteps.filter(step => !step.hidden).every(step => step.selectedValueId);\r\n const filteredFeatures = wizardIsFinished ? this.state.filteredFeatures : this.getPlaceholdersFeatures();\r\n\r\n const foundFeaturesFromFilters = filteredFeatures.filter(feature => {\r\n const featureFilters = feature.dbFeature.filterValueIDs;\r\n const arrayOfCurrentKeys = Object.keys(featureFilters);\r\n // console.log('featureFilters', featureFilters, feature.dbFeature.displayName);\r\n if (wizardIsFinished) {\r\n if (Object.keys(selectedFilterObject).every((filterKey) => {\r\n return featureFilters[filterKey] && featureFilters[filterKey].includes(selectedFilterObject[filterKey])\r\n })) {\r\n // console.log('feature', feature);\r\n return true\r\n }\r\n return false\r\n } else {\r\n if ((arrayOfCurrentKeys.length === arrayOfSelectedKeys.length) && Object.keys(selectedFilterObject).every((filterKey) => {\r\n return featureFilters[filterKey] && featureFilters[filterKey][0] === selectedFilterObject[filterKey]\r\n })) {\r\n // console.log('feature found', feature);\r\n return true\r\n }\r\n return false\r\n }\r\n });\r\n let foundFeature = null;\r\n if (Array.isArray(foundFeaturesFromFilters) && foundFeaturesFromFilters.length) {\r\n if (this.props.activeSubPart.partId === \"vanity_cabinet\" && foundFeaturesFromFilters.length > 1) {\r\n foundFeature = foundFeaturesFromFilters.find(feature => feature.metaData[\"VanityHandle\"]);\r\n }\r\n if (!foundFeature) {\r\n foundFeature = foundFeaturesFromFilters[0];\r\n }\r\n }\r\n if (foundFeature && !itemIsLocked) {\r\n this.props.handleNavigationItemClick({part:foundFeature}, true);\r\n }\r\n this.updateStepValues(this.state.availableSteps, forceClick);\r\n };\r\n\r\n onItemClickDisabled = (filterValue, itemIsLocked, currentStepFilterName) => {\r\n if (itemIsLocked) {\r\n this.onItemClick(filterValue, itemIsLocked, currentStepFilterName);\r\n return;\r\n }\r\n // Size is unreachable code since it is always enabled // Alan wants to show them !disabled (26.02.2019)\r\n const askQuestion = this.props.activeSubPart.partId === \"vanity_cabinet\"\r\n && (currentStepFilterName === \"DoorStyle\" || currentStepFilterName === \"Size\");\r\n\r\n const message = {\r\n id: askQuestion ? \"messageBox.wizard.itemIsNotAvailableWithQuestion\" : \"messageBox.wizard.itemIsNotAvailable\",\r\n filterValueClicked: filterValue.displayText,\r\n filterName: this.state.availableSteps.filter(step => !step.hidden)[this.state.featureWizardStep].filterName\r\n };\r\n const buttons = [{\r\n text: askQuestion ? \"messageBox.buttonNo\" : \"messageBox.buttonOk\",\r\n color: \"blue\",\r\n click: () => {\r\n this.props.changeMessageBoxState({visible:false});\r\n }\r\n }];\r\n if (askQuestion) {\r\n buttons.push({\r\n text: \"messageBox.buttonYes\",\r\n color: \"green\",\r\n click: () => {\r\n this.onItemClick(filterValue, itemIsLocked, currentStepFilterName, true);\r\n this.props.changeMessageBoxState({visible:false});\r\n }\r\n })\r\n }\r\n this.props.changeMessageBoxState({\r\n visible: true,\r\n message,\r\n buttons\r\n });\r\n };\r\n\r\n handleUserLoginClick = (userPopupType = UserPopupTypes.Unlock) => {\r\n UserLoginButton.handleLoginClick({...this.props, userPopupType});\r\n };\r\n\r\n exitFeatureWizard = () => {\r\n if (this.props.isMobile) {\r\n this.props.exitFeatureWizard(\r\n this.state.availableSteps,\r\n this.props.activeSubPart.partId\r\n )\r\n } else {\r\n this.setState({\r\n mounted: false,\r\n finishClicked: true\r\n });\r\n setTimeout(() => {\r\n this.props.exitFeatureWizard(\r\n this.state.availableSteps,\r\n this.props.activeSubPart.partId\r\n )\r\n }, 300);\r\n }\r\n };\r\n\r\n render() {\r\n // console.log('features top', this.state.filteredFeatures);\r\n // console.log('this.state.availableSteps', this.state.availableSteps);\r\n const availableSteps = this.state.availableSteps.filter(step => !step.hidden);\r\n const allStepsCompleted = availableSteps.every(step => step.selectedValueId);\r\n const interiorShowerWallWizard = this.props.activeSubPart.partId === \"shower_interior_wall\";\r\n const itemIsSelected = this.activeItemIsSelected();\r\n\r\n return this.props.isMobile ?\r\n this.state.showMobileGroups ? (\r\n
    \r\n
      \r\n {availableSteps.map((wizardStep, wizardStepIndex) => {\r\n const name = wizardStep.filterName.replace(/ /g,\"\").toLowerCase();\r\n return (\r\n
    • this.setFeatureWizardStep(wizardStepIndex)}\r\n key={\"wizardStepIndex\"+wizardStepIndex}>\r\n {wizardStep.filterName}\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 {availableSteps.length && !this.state.reload ? (\r\n \r\n ) :
    }\r\n
    \r\n
    \r\n {!(interiorShowerWallWizard && !this.props.showerWallWizardGroupsSelected) ? (\r\n \r\n ) : null}\r\n
    \r\n )\r\n : ( // desktop\r\n
    \r\n \r\n {availableSteps.length && !this.state.reload ? (\r\n \r\n ) :
    }\r\n {interiorShowerWallWizard && !this.props.showerWallWizardGroupsSelected ? null : (\r\n
    \r\n
    \r\n \r\n {availableSteps[this.state.featureWizardStep]\r\n ? `Select a ${this.props.getFilterDisplayName(availableSteps[this.state.featureWizardStep].filterName, this.props.intl)} for your ${this.props.activeSubPart.partId === \"shower_interior_wall\" ? \"Wall\" : \"Vanity\"}.`\r\n : null}\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 = (store) => ({\r\n filtersVisible: store.filterState.showFilters,\r\n filterGroups: store.filterState.filterGroups,\r\n fabricatorData: store.fabricatorState,\r\n userIsLoggedIn: store.userState.userIsLoggedIn,\r\n navigationViewType: store.navigationState.navigationViewType,\r\n activeQuoteIndex: store.quotesState.activeQuoteIndex,\r\n});\r\n\r\nconst mapDispatchToProps = () => ({});\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(FeatureWizard)\r\n);\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport Z from \"../core/parts/zIndex\";\r\nimport {ShowerTubCombo} from \"../core/parts/showerTubCombo\";\r\nimport {Vanity} from \"../core/parts/vanity\";\r\nimport {Shower} from \"../core/parts/shower\";\r\nimport {Wall} from \"../core/parts/wall\";\r\nimport {BathTubType, VanityTypes, ShowerTypes, ShowerComboTubType} from \"../core/constants\";\r\nimport {getMetadataByDimensions, reorder} from \"../../../misc/utils\";\r\nimport Analytics from \"../../../analytics\";\r\n\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport {ShowerAccessories} from \"../core/parts/showerAccessories\";\r\n\r\nclass ContextMenu extends Component {\r\n\r\n static propTypes = {\r\n designNavigationItems: PropTypes.array,\r\n contextMenuOpen: PropTypes.string,\r\n hoveredLayer: PropTypes.object,\r\n handleContextMenuClick: PropTypes.func,\r\n contextMenuPosition: PropTypes.object,\r\n contextMenuPonyWall: PropTypes.bool,\r\n renderGreenLayerByZindex: PropTypes.func,\r\n closeContextMenu: PropTypes.func,\r\n };\r\n\r\n state = {\r\n contextMenuButtons: []\r\n };\r\n\r\n componentDidMount() {\r\n this.setContextMenuButtons();\r\n if (this.props.closeContextMenu) {\r\n document.addEventListener('click', this.contextMenuBlur)\r\n }\r\n }\r\n\r\n contextMenuBlur = (e) => {\r\n if (!e.target.closest('.contextmenu-buttons')\r\n && !e.target.closest('.contextmenu-buttons__button')\r\n && !e.target.closest('.sprocket-container') && !e.target.closest('.canvas')) {\r\n this.props.closeContextMenu();\r\n }\r\n };\r\n\r\n componentWillUnmount() {\r\n if (this.props.closeContextMenu) {\r\n document.removeEventListener('click', this.contextMenuBlur)\r\n }\r\n }\r\n\r\n setShowerBodySelectionButtons = () => {\r\n const layout = getCurrentLayout();\r\n const shower = layout.parts[Shower.id];\r\n const vanity = layout.parts[Vanity.id];\r\n const counterTopSize = vanity.counterTopSize();\r\n const showerTubCombo = layout.parts[ShowerTubCombo.id];\r\n\r\n const showerSubParts = shower.subParts();\r\n const showerBody = showerSubParts.find((menuItem) => {\r\n return menuItem.part.partId === \"shower_body\"\r\n });\r\n const currentShowerSize = shower.showerSize();\r\n let contextMenuButtons = [];\r\n\r\n if (showerTubCombo.showerTubComboIsActive) {\r\n const showerTubComboSubParts = showerTubCombo.subParts();\r\n const wallConfiguration = showerTubComboSubParts.find((menuItem) => {\r\n return menuItem.part.partId === \"wall_configuration\"\r\n });\r\n showerTubCombo.wallConfiguration.features.forEach((wallConfigurationFeature) => {\r\n contextMenuButtons.push(Object.assign({}, wallConfiguration, {\r\n subMenuParent: \"Walls\",\r\n subMenuText: wallConfigurationFeature.partName,\r\n intlTranslate: this.props.intl.formatMessage({id: showerTubCombo.wallConfiguration.translateId}),\r\n bgImageText: wallConfigurationFeature.partName,\r\n clickFeature: true,\r\n text: wallConfigurationFeature.partName.includes(\"Pony\") ? \"Pony Wall\" : \"Left Shower Wall\"\r\n }))\r\n })\r\n } else if (showerBody && showerBody.part.features.length) {\r\n showerBody.part.features.forEach((showerBodyFeature) => {\r\n if (showerBodyFeature.partName.includes(currentShowerSize)) {\r\n // console.log('showerBodyFeature.partName', showerBodyFeature.partName);\r\n if (!(counterTopSize === \"72in\" && layout.type === 1 && showerBodyFeature.partName.includes(\"15X4\"))) {\r\n const isPony = showerBodyFeature.partName.includes(\"Pony\");\r\n contextMenuButtons.push(Object.assign({}, showerBody, {\r\n subMenuParent: \"Walls\",\r\n subMenuText: showerBodyFeature.partName,\r\n intlTranslate: this.props.intl.formatMessage({id: isPony\r\n ? \"visualizer.bathroom.walls.pony_wall\"\r\n : \"visualizer.bathroom.walls.left_shower_wall\"\r\n }),\r\n bgImageText: showerBodyFeature.partName,\r\n clickFeature: true,\r\n text: isPony ? \"Pony Wall\" : \"Left Shower Wall\"\r\n }))\r\n }\r\n }\r\n })\r\n }\r\n\r\n const clickedItemIndex = contextMenuButtons.findIndex(item => {\r\n return showerTubCombo.showerTubComboIsActive\r\n ? item.subMenuText === showerTubCombo.wallConfiguration.activeFeature.partName\r\n : item.subMenuText === showerBody.part.activeFeature.partName\r\n });\r\n\r\n if (clickedItemIndex > 0) {\r\n contextMenuButtons = reorder(contextMenuButtons, clickedItemIndex, 0); // swap items in array start\r\n }\r\n\r\n this.setState({\r\n contextMenuButtons\r\n })\r\n };\r\n\r\n setWallBButtons = () => {\r\n const layout = getCurrentLayout();\r\n let contextMenuButtons = [];\r\n\r\n const wallParent = layout.parts[Wall.id];\r\n const wallParts = wallParent.subParts().filter((menuItem) => {\r\n return (menuItem.part.partId === \"wall_b\") || (menuItem.part.partId === \"accent_wall\")\r\n });\r\n wallParts.forEach((wallPart) => {\r\n contextMenuButtons.push(Object.assign({}, wallPart, {\r\n subMenuParent: \"Walls\",\r\n subMenuText: wallPart.part.partName,\r\n bgImageText: wallPart.part.partName,\r\n text: wallPart.text,\r\n intlTranslate: this.props.intl.formatMessage({id: wallPart.part.translateId})\r\n }));\r\n });\r\n\r\n const vanity = layout.parts[Vanity.id];\r\n const vanityBacksplash = vanity.subParts().find((menuItem) => {\r\n return menuItem.part.partId === \"vanity_backsplash\"\r\n });\r\n if (vanityBacksplash) {\r\n contextMenuButtons.push(Object.assign({}, vanityBacksplash, {\r\n subMenuParent: \"Vanity\",\r\n subMenuText: vanityBacksplash.part.partName,\r\n bgImageText: vanityBacksplash.part.partName,\r\n text: vanityBacksplash.text,\r\n intlTranslate: this.props.intl.formatMessage({id: vanityBacksplash.part.translateId})\r\n }));\r\n }\r\n\r\n let zIndexToFind = this.props.hoveredLayer.zIndex;\r\n\r\n const clickedItem = contextMenuButtons.find(item => {\r\n return item.part.activeFeature && item.part.activeFeature.layer && item.part.activeFeature.layer.zIndex === zIndexToFind;\r\n });\r\n if (clickedItem && clickedItem.part && clickedItem.part.partId === \"vanity_backsplash\") {\r\n const vanityFaucet = vanity.subParts().find((menuItem) => {\r\n return menuItem.part.partId === \"vanity_faucet\"\r\n });\r\n if (vanityFaucet) {\r\n contextMenuButtons.push(Object.assign({}, vanityFaucet, {\r\n subMenuParent: \"Vanity\",\r\n subMenuText: vanityFaucet.part.partName,\r\n bgImageText: vanityFaucet.part.partName,\r\n text: vanityFaucet.text,\r\n intlTranslate: this.props.intl.formatMessage({id: vanityFaucet.part.translateId})\r\n }));\r\n }\r\n }\r\n\r\n const clickedItemIndex = contextMenuButtons.findIndex(item => {\r\n return item.part.activeFeature && item.part.activeFeature.layer && item.part.activeFeature.layer.zIndex === zIndexToFind;\r\n });\r\n\r\n if (clickedItemIndex > 0) {\r\n contextMenuButtons = reorder(contextMenuButtons, clickedItemIndex, 0); // swap items in array start\r\n }\r\n\r\n this.setState({\r\n contextMenuButtons\r\n })\r\n };\r\n\r\n setContextMenuButtons() {\r\n\r\n const layout = getCurrentLayout();\r\n\r\n if (this.props.contextMenuOpen === \"Shower Body Selection\") {\r\n this.setShowerBodySelectionButtons();\r\n return\r\n } else if (this.props.contextMenuOpen === \"wall_b_custom\") {\r\n this.setWallBButtons();\r\n return\r\n }\r\n\r\n const hoveredParent = this.props.designNavigationItems.find(navItem => {\r\n return navItem.text === this.props.contextMenuOpen\r\n });\r\n\r\n let relatedItems = hoveredParent.part.relatedItems;\r\n if (this.props.contextMenuOpen === \"Shower Tub Combo\") {\r\n relatedItems = [...hoveredParent.part.relatedItems, ...hoveredParent.part.getShowerRelatedItems()]\r\n }\r\n\r\n const clickedItem = this.props.hoveredLayer.zIndex === Z.layouts[layout.getCurrentLayoutName()].Shower.Steam60in.Body[\"2\"]\r\n ? relatedItems[0]\r\n : relatedItems.find((item) => {\r\n let zIndexToFind = this.props.hoveredLayer.zIndex;\r\n if (this.props.hoveredLayer.zIndex === Z.layouts[layout.getCurrentLayoutName()].Shower.Custom60in.Wall2) {\r\n zIndexToFind = Z.layouts[layout.getCurrentLayoutName()].Shower.Custom60in.Wall\r\n }\r\n if (\r\n this.props.hoveredLayer.zIndex === Z.layouts[layout.getCurrentLayoutName()].Shower.Custom60in.WallAccent2\r\n ) {\r\n zIndexToFind = Z.layouts[layout.getCurrentLayoutName()].Shower.Custom60in.WallAccent\r\n }\r\n return item.activeFeature && item.activeFeature.layer.zIndex === zIndexToFind\r\n });\r\n\r\n let itemsToRender = this.getItemsToRender(hoveredParent);\r\n\r\n // console.log('clickedItem', clickedItem);\r\n // console.log('relatedItems', relatedItems);\r\n // console.log('itemsToRender', itemsToRender);\r\n\r\n const clickedItemIndex = itemsToRender.findIndex(item => item.text === clickedItem.partName);\r\n if (clickedItemIndex > 0) {\r\n itemsToRender = reorder(itemsToRender, clickedItemIndex, 0); // swap items in array start\r\n }\r\n\r\n this.setState({\r\n contextMenuButtons: itemsToRender\r\n })\r\n }\r\n\r\n getItemsToRender = (hoveredParent) => {\r\n const layout = getCurrentLayout();\r\n let itemsToRender = hoveredParent.part.subParts();\r\n\r\n if ((this.props.contextMenuOpen === \"Shower\" || this.props.contextMenuOpen === \"Shower Tub Combo\") && hoveredParent.text !== \"Shower Accessories\") {\r\n itemsToRender = itemsToRender.filter(menuButton => {\r\n return this.props.contextMenuPonyWall\r\n ? menuButton.part.isPonyWallPart && menuButton.part.partId !== \"pony_wall\"\r\n : !menuButton.part.isPonyWallPart\r\n });\r\n const accessoriesParent = layout.parts[ShowerAccessories.id];\r\n if (accessoriesParent && accessoriesParent.categoryEnabled && !this.props.contextMenuPonyWall) {\r\n itemsToRender = itemsToRender.filter(menuButton => menuButton.part.partId !== \"shower_interior_wall_accent\");\r\n itemsToRender.push({\r\n text: \"Accessories\",\r\n part: {},\r\n subNav: true,\r\n intlTranslate: this.props.intl.formatMessage({id: \"visualizer.bathroom.accessories\"})\r\n })\r\n }\r\n itemsToRender = itemsToRender.filter(menuButton => menuButton.part.partId !== \"shower_head\");\r\n if (layout.parts[ShowerTubCombo.id] && !this.props.contextMenuPonyWall) {\r\n itemsToRender.push({\r\n text: \"Configure Layout\",\r\n part: {},\r\n subNav: true,\r\n intlTranslate: this.props.intl.formatMessage({id: \"visualizer.bathroom.contextmenu.configureLayout\"})\r\n })\r\n }\r\n }\r\n\r\n if (this.props.contextMenuOpen === \"Shower\") {\r\n itemsToRender = itemsToRender.filter(menuButton => menuButton.part.partId !== \"threshold\");\r\n }\r\n if (this.props.contextMenuOpen === \"Shower Tub Combo\") {\r\n itemsToRender = this.removeNotUsedTubItemsFromContextMenu(itemsToRender, hoveredParent.part.bottomTub);\r\n }\r\n if (this.props.contextMenuOpen === \"Vanity\") {\r\n itemsToRender = itemsToRender.filter((itemToRender) => {\r\n return itemToRender.part.partId !== \"vanity_mirror\" && itemToRender.part.partId !== \"vanity_backsplash\";\r\n });\r\n }\r\n\r\n return itemsToRender\r\n };\r\n\r\n removeNotUsedTubItemsFromContextMenu = (itemsToRender, activeTub) => {\r\n return itemsToRender.filter((itemToRender) => {\r\n let keepThisItem = true;\r\n Object.keys(ShowerComboTubType).forEach((key) => {\r\n if (itemToRender.part.partId === ShowerComboTubType[key] && itemToRender.part.partId !== activeTub\r\n && itemToRender.part.partId !== ShowerComboTubType.replacement_tub\r\n && itemToRender.part.partId !== ShowerComboTubType.bathtub_liner\r\n ) {\r\n keepThisItem = false\r\n }\r\n });\r\n if (itemToRender.text === \"Wall Configuration\") {\r\n keepThisItem = false\r\n }\r\n return keepThisItem\r\n });\r\n };\r\n\r\n handleSubNavClick = (menuItem) => {\r\n const layout = getCurrentLayout();\r\n\r\n if (menuItem.text === \"Accessories\") {\r\n const hoveredParent = this.props.designNavigationItems.find(navItem => {\r\n return navItem.text === \"Shower Accessories\"\r\n });\r\n this.setState({\r\n contextMenuButtons: this.getItemsToRender(hoveredParent)\r\n .map(button => {\r\n button.subMenuParent = \"Shower Accessories\";\r\n return button\r\n })\r\n });\r\n return false\r\n }\r\n\r\n const showerSubParts = layout.parts[Shower.id].subParts();\r\n\r\n const shower = showerSubParts.find((menuItem) => {\r\n return menuItem.part.partId === \"shower_body\"\r\n });\r\n shower.subMenuText = \"Shower\";\r\n shower.subMenuParent = \"Shower\";\r\n shower.intlTranslate = this.props.intl.formatMessage({id: \"visualizer.bathroom.shower\"});\r\n\r\n const showerTubCombo = layout.parts[ShowerTubCombo.id];\r\n const showerTubComboSubParts = showerTubCombo.subParts();\r\n\r\n const activeTubMenuItems = showerTubComboSubParts.filter(menuItem => menuItem.part.bottomTubId);\r\n activeTubMenuItems.forEach(menuItem => menuItem.subMenuParent = \"Shower Tub Combo\");\r\n\r\n const wallConfiguration = showerTubComboSubParts.find((menuItem) => {\r\n return menuItem.part.partId === \"wall_configuration\"\r\n });\r\n wallConfiguration.subMenuText = \"Shower Tub Combo\";\r\n wallConfiguration.subMenuParent = \"Shower Tub Combo\";\r\n wallConfiguration.intlTranslate = this.props.intl.formatMessage({id: \"visualizer.bathroom.shower_tub_combo\"});\r\n\r\n this.setState({\r\n contextMenuButtons: [\r\n shower,\r\n wallConfiguration,\r\n ...activeTubMenuItems,\r\n ]\r\n })\r\n };\r\n\r\n handleContextMenuHover = (menuItem) => {\r\n const layout = getCurrentLayout();\r\n const hoveredButton = menuItem.text === \"Countertop\" ? \"CounterTop\" : menuItem.text;\r\n const hoveredParent = menuItem.subMenuParent || this.props.contextMenuOpen;\r\n\r\n const layoutType = layout.getCurrentLayoutName();\r\n\r\n // console.log('hoveredButton', hoveredButton);\r\n // console.log('hoveredParent', hoveredParent);\r\n\r\n if (hoveredButton && hoveredParent) {\r\n\r\n let hoveredZindex = \"\";\r\n\r\n if (hoveredParent === \"Shower\") {\r\n const shower = layout.parts.Shower;\r\n if (shower.activeSubType_ === ShowerTypes.Complete) {\r\n switch (hoveredButton) {\r\n case \"Fixture\":\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent].Steam60in[hoveredButton];\r\n break;\r\n default:\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent].Steam60in.Body[\"1\"]; // 1st part of shower\r\n break;\r\n }\r\n } else {\r\n switch (hoveredButton) {\r\n case \"Shower Walls\":\r\n hoveredZindex = Z.layouts[layoutType].Shower.Custom60in.Wall;\r\n break;\r\n case \"Shower Body\":\r\n if (shower.showerDoor && shower.showerDoor.features.length) {\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent].Custom60in.ShowerDoor;\r\n } else {\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent].Custom60in.Glass;\r\n }\r\n break;\r\n case \"Shower Door\":\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent].Custom60in.ShowerDoor;\r\n break;\r\n case \"Handle\":\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent].Custom60in.ShowerDoorHandle;\r\n break;\r\n case \"Shower Pan\":\r\n case \"Shower Pans\":\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent].Custom60in.ShowerPanCombo;\r\n break;\r\n case \"Shower Walls Accent\":\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent].Custom60in.WallAccent;\r\n break;\r\n case \"Pony Wall Glass\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].Custom60in.PonyWallGlass;\r\n break;\r\n case \"Pony Wall Cap\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].Custom60in.PonyWallCap;\r\n break;\r\n case \"Floor\":\r\n hoveredZindex = shower.showerFloorIsActive\r\n ? Z.layouts[layoutType][hoveredParent].Custom60in[hoveredButton]\r\n : Z.layouts[layoutType][hoveredParent].Custom60in.ShowerPanCombo;\r\n break;\r\n default:\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent].Custom60in[hoveredButton];\r\n break;\r\n }\r\n }\r\n } else if (hoveredParent === \"Shower Tub Combo\") {\r\n switch (hoveredButton) {\r\n case \"Shower Door\":\r\n hoveredZindex = Z.layouts[layoutType].Shower.Custom60in.ShowerDoor;\r\n break;\r\n case \"Shower Walls\":\r\n hoveredZindex = Z.layouts[layoutType].Shower.Custom60in.Wall;\r\n break;\r\n case \"Shower Walls Accent\":\r\n hoveredZindex = Z.layouts[layoutType].Shower.Custom60in.WallAccent;\r\n break;\r\n case \"Fixture\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].Custom60in.Fixture;\r\n break;\r\n case \"Handle\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].Custom60in.ShowerDoorHandle;\r\n break;\r\n case \"Wall Configuration\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].Custom60in.ShowerDoor;\r\n break;\r\n case \"Jetted Tub\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].TubCombo.JettedTub;\r\n break;\r\n case \"Tub Liner\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].TubCombo.Liner;\r\n break;\r\n case \"Walk In Tub\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].TubCombo.WalkInTub;\r\n break;\r\n case \"Replacement Tub\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].TubCombo.ReplacementTub;\r\n break;\r\n case \"Pony Wall Glass\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].Custom60in.PonyWallGlass;\r\n break;\r\n case \"Pony Wall Cap\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].Custom60in.PonyWallCap;\r\n break;\r\n default:\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].TubCombo[hoveredButton.replace(/ /g, \"\")];\r\n break;\r\n }\r\n } else if (hoveredParent === \"Vanity\") { // Vanity\r\n if (layout.parts.Vanity.activeSubType_ === VanityTypes.Complete) {\r\n switch (hoveredButton) {\r\n case \"Vanity\":\r\n hoveredZindex = Z.layouts[layoutType].Vanity.Complete.Cabinet;\r\n break;\r\n case \"Accent Wall\":\r\n hoveredZindex = Z.layouts[layoutType].Wall_A_Accent_Mask;\r\n break;\r\n default:\r\n hoveredZindex = Z.layouts[layoutType].Vanity.Custom[hoveredButton]; // Mirror\r\n break;\r\n }\r\n } else {\r\n switch (hoveredButton) {\r\n case \"Accent Wall\":\r\n hoveredZindex = Z.layouts[layoutType].Wall_A_Accent_Mask;\r\n break;\r\n case \"Backsplash\":\r\n hoveredZindex = Z.layouts[layoutType].Vanity.Custom.VanityBacksplash;\r\n break;\r\n default:\r\n hoveredZindex = Z.layouts[layoutType].Vanity.Custom[hoveredButton];\r\n break;\r\n }\r\n }\r\n } else if (hoveredParent === \"Bathtub\") { // Bathtub\r\n if (layout.parts.Bathtub.activeSubType_ === BathTubType.FreeStanding) {\r\n if (hoveredButton === \"Bathtub\") {\r\n hoveredZindex = Z.layouts[layoutType].BathTub.FreeStanding.Base\r\n } else {\r\n hoveredZindex = Z.layouts[layoutType].BathTub.FreeStanding[hoveredButton]\r\n }\r\n } else {\r\n if (hoveredButton === \"Rim\") {\r\n hoveredZindex = Z.layouts[layoutType].BathTub.Custom60in.Top\r\n } else {\r\n hoveredZindex = Z.layouts[layoutType].BathTub.Custom60in[hoveredButton]\r\n }\r\n }\r\n } else if (hoveredParent === \"Walls\") { // Bathtub\r\n switch (hoveredButton) {\r\n case \"Pony Wall\":\r\n hoveredZindex = Z.layouts[layoutType].Shower.Custom60in.PonyWall;\r\n break;\r\n case \"Left Shower Wall\": {\r\n const wallParent = layout.parts[hoveredParent];\r\n const activeShowerGroup = wallParent.getActiveShowerGroup();\r\n const showerDimensions = getMetadataByDimensions(activeShowerGroup.showerDimensions());\r\n hoveredZindex = showerDimensions === \"Half\"\r\n ? Z.layouts[layoutType].Shower.Custom60in.ExtrusionWallLeftHalfWall\r\n : Z.layouts[layoutType].Shower.Custom60in.ExtrusionWallLeft;\r\n break;\r\n }\r\n default:\r\n hoveredZindex = Z.layouts[layoutType].Vanity.Custom[hoveredButton];\r\n break;\r\n }\r\n }\r\n\r\n this.props.renderGreenLayerByZindex(hoveredZindex);\r\n }\r\n\r\n };\r\n\r\n render() {\r\n\r\n let contextMenuStyles = this.props.contextMenuPosition || {};\r\n if (this.state.contextMenuButtons.length === 4) {\r\n contextMenuStyles = Object.assign({}, contextMenuStyles, {maxWidth:\"210px\"} )\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {this.state.contextMenuButtons.map((menuItem) => {\r\n return menuItem ? (\r\n \r\n ) : null\r\n })}\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default injectIntl(ContextMenu)\r\n","import React, { Component } from 'react';\r\nimport PropTypes from \"prop-types\";\r\nimport {connect} from \"react-redux\";\r\nimport $ from \"jquery\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport Analytics from './../../analytics';\r\n\r\nexport class HomeMenu extends Component {\r\n\r\n static propTypes = {\r\n mobileNav: PropTypes.array\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n toggle: false,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n $(document).off('click', this.handleMobileBlur);\r\n }\r\n\r\n handleItemClick = () => {\r\n\r\n };\r\n\r\n handleBack = () => {\r\n this.handleToggleDropdown();\r\n };\r\n\r\n handleToggleDropdown = () => {\r\n Analytics.sendClickEvent('home-button-dropdown', !this.state.toggle);\r\n this.setState({\r\n toggle: !this.state.toggle,\r\n }, () => {\r\n this.state.toggle\r\n ? $(document).on('click', this.handleMobileBlur)\r\n : $(document).off('click', this.handleMobileBlur)\r\n })\r\n };\r\n\r\n handleMobileBlur = (e) => {\r\n const navClick = e.target.closest('[class*=\"mobile-home-menu\"]');\r\n const backButtonClick = e.target.closest('.ui-back');\r\n if (!navClick && !backButtonClick) {\r\n this.handleToggleDropdown();\r\n }\r\n };\r\n\r\n render() {\r\n // let menu = [{\r\n // name: \"Return to Website\",\r\n // url: document.referrer || document.location.href\r\n // }, ...this.props.mobileNav];\r\n\r\n return (\r\n
    \r\n {this.props.windowWidth >= 991 ? (\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 = (store) => {\r\n return {\r\n mobileNav: store.navigationState.mobileNav,\r\n windowWidth: store.serverState.windowWidth,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n})(HomeMenu);\r\n","import React, {Component} from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport $ from \"jquery\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport ActionTypes from \"../../misc/actionTypes\";\r\nimport Analytics from './../../analytics';\r\nimport UserLoginButton from './../ui/userLoginButton';\r\nimport {toggleUserPopup, changeMessageBoxState} from \"../../actions/actionFunctions\";\r\nimport {SaveIcon} from \"./icons\";\r\nimport {loaderDisable, loaderEnable} from \"../ui/loaderView\";\r\nimport {saveQuote} from \"../../api/server-api\";\r\nimport {UserPopupTypes} from \"../visComponents/constants\";\r\nimport {showQuoteSavedNotification} from \"../ui/successNotification\";\r\n\r\nexport class SaveButton extends Component {\r\n\r\n saving = false;\r\n\r\n handleSaveQuote = () => {\r\n if (!UserLoginButton.handleLoginClick({\r\n ...this.props,\r\n saveQuoteAfterLogin: true,\r\n userPopupType: UserPopupTypes.NewDesign\r\n })) {\r\n Analytics.sendClickEvent(\"save-button-show-login\");\r\n } else if (!this.saving) {\r\n Analytics.sendClickEvent(\"save-button\");\r\n this.saveQuoteSubmit();\r\n }\r\n // const fabricatorSettings = this.props.fabricatorData.settings;\r\n // if ((fabricatorSettings.leadCapture && !(document.kvConfig.isBackend && document.kvConfig.jobId && document.kvConfig.canSaveQuote)) && !this.props.isPhoneNumberValidated) {\r\n // Analytics.sendClickEvent(\"save-button-show-login\");\r\n // this.props.toggleUserPopup({\r\n // userPopupOpened: true,\r\n // saveQuoteAfterLogin: true\r\n // });\r\n // } else {\r\n // Analytics.sendClickEvent(\"save-button\");\r\n // this.saveQuoteSubmit();\r\n // }\r\n };\r\n\r\n saveQuoteSubmit = () => {\r\n $(document).trigger(ActionTypes.REMOVE_GREEN_ZONE_ON_CANVAS, () => {\r\n if (!this.saving) {\r\n this.saving = true;\r\n loaderEnable(\"loader.savingQuoteText\");\r\n saveQuote(true)\r\n .then((response) => {\r\n if (response) {\r\n let responseDataBase = response;\r\n if (response.data) {\r\n responseDataBase = response.data;\r\n }\r\n const responseData = typeof responseDataBase === 'object' ? responseDataBase : JSON.parse(responseDataBase);\r\n console.log('saveButton saveQuote response:', responseData);\r\n loaderDisable();\r\n }\r\n showQuoteSavedNotification();\r\n this.saving = false;\r\n // downloadCanvasImageById(this.props.canvasId);\r\n })\r\n .catch((error) => {\r\n console.log('saveButton saveQuote error:', error);\r\n loaderDisable();\r\n this.saving = false;\r\n })\r\n }\r\n });\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n\r\n}\r\nconst mapStateToProps = (store) => ({\r\n userIsLoggedIn: store.userState.userIsLoggedIn,\r\n isPhoneNumberValidated: store.userState.isPhoneNumberValidated,\r\n fabricatorData: store.fabricatorState\r\n});\r\nexport default connect(mapStateToProps, {\r\n toggleUserPopup,\r\n changeMessageBoxState\r\n})(SaveButton);\r\n","import React, {Fragment} from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport {loaderEnable} from \"../ui/loaderView\";\r\nimport {\r\n toggleUserPopup, setCanvasId, setLayoutDataParts, setDefaultSelectionGroup, loadFilters, setCameFromPage,\r\n toggleBathroomVisualizerOpen, toggleSelectionFeatureInfo, changeMessageBoxState,\r\n addVisualizersLoaded } from \"../../actions/actionFunctions\";\r\nimport {\r\n getBathroomVisualizerData,\r\n getBvGroups,\r\n getBvGroupFeatures,\r\n getQtCategories,\r\n getNavigationButtons\r\n} from \"../../api/server-api\";\r\nimport ImageCanvasCommon from \"../visComponents/imageCanvasCommon\";\r\nimport {Layout} from \"./core/layout\";\r\nimport CountertopGroup from \"./core/parts/countertopGroup\";\r\nimport Cabinet from \"./core/parts/cabinet\";\r\nimport DesktopNavigation from \"./navigation/desktopNavigation\";\r\nimport MobileNavigation from \"./navigation/mobileNavigation\";\r\nimport MainButtons from \"../common/mainButtons\";\r\nimport DemoPoints from \"../common/demoPoints/demoPoints\";\r\nimport MessageBox from \"../popups/messageBox\";\r\n\r\nimport Visualizer from \"../visComponents/visualizer\";\r\nimport VisualizerTutorial from \"../tutorials/visualizerTutorial\";\r\nimport {showVisualizerTutorial} from \"../../actions/tutorialFunctions\";\r\nimport Copyright from \"../ui/copyright\";\r\nimport {IS_QKB_UI} from \"../../config\";\r\n\r\nexport const layout = new Layout();\r\n\r\nclass KitchenVisualizer extends Visualizer {\r\n\r\n static displayName = 'Kitchen Visualizer';\r\n\r\n constructor(props) {\r\n super(props);\r\n this.layout = layout;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.visualizersLoaded.includes(this.layout.visualizerType)) {\r\n this.setSubscribers();\r\n return false\r\n }\r\n loaderEnable();\r\n Promise.all([\r\n getBathroomVisualizerData(),\r\n getQtCategories(this.layout.getCurrentLayoutAbbreviation())\r\n ]).then(baseResponse => {\r\n Promise.all([\r\n Promise.resolve(baseResponse[0]),\r\n getBvGroups(),\r\n getBvGroupFeatures(\"Countertop\", 0, 200),\r\n getBvGroupFeatures(\"Crown Molding\", 0, 500),\r\n getBvGroupFeatures(\"Top Cabinet\", 0, 200),\r\n getBvGroupFeatures(\"Bottom Cabinet\", 0, 200),\r\n getBvGroupFeatures(\"Top Handle\", 0, 200),\r\n getBvGroupFeatures(\"Bottom Handle\", 0, 200),\r\n Promise.resolve(baseResponse[1])\r\n ])\r\n .then((allResponse) => {\r\n const mainResponse = allResponse[0];\r\n const kvGroupsResponse = allResponse[1].data;\r\n const qtCategories = allResponse[8];\r\n\r\n // 1) set default (placeholders)\r\n this.layout.loadNewFeatures(mainResponse);\r\n this.layout.setGroupsItemsCount(kvGroupsResponse); // should be loaded before & after all features are received\r\n\r\n // 2) set counterTop features\r\n const countertopParent = this.layout.parts[CountertopGroup.id];\r\n if (countertopParent && countertopParent.countertop && allResponse[2]) {\r\n countertopParent.countertop.setGroupFeatures(allResponse[2], 200, false)\r\n }\r\n\r\n // 3) set counterTop features\r\n const cabinetParent = this.layout.parts[Cabinet.id];\r\n if (cabinetParent && cabinetParent.crownMolding && allResponse[3]) {\r\n cabinetParent.crownMolding.setGroupFeatures(allResponse[3], 500, false)\r\n }\r\n\r\n // 4) set top cabinet features\r\n if (cabinetParent && cabinetParent.topCabinet && allResponse[4]) {\r\n cabinetParent.topCabinet.setGroupFeatures(allResponse[4], 200, false)\r\n }\r\n\r\n // 5) set bottom cabinet features\r\n if (cabinetParent && cabinetParent.bottomCabinet && allResponse[5]) {\r\n cabinetParent.bottomCabinet.setGroupFeatures(allResponse[5], 200, false)\r\n }\r\n\r\n // 6) set top handle features\r\n if (cabinetParent && cabinetParent.topHandle && allResponse[6]) {\r\n cabinetParent.topHandle.setGroupFeatures(allResponse[6], 200, false)\r\n }\r\n\r\n // 7) set bottom handle features\r\n if (cabinetParent && cabinetParent.bottomHandle && allResponse[7]) {\r\n cabinetParent.bottomHandle.setGroupFeatures(allResponse[7], 200, false)\r\n }\r\n return this.setVisualizerInfo(mainResponse, kvGroupsResponse, qtCategories);\r\n })\r\n .then(this.checkShareUrl)\r\n .then(this.onBvLoad)\r\n .then(this.finishLoading);\r\n });\r\n\r\n this.setSubscribers();\r\n getNavigationButtons();\r\n }\r\n\r\n render() {\r\n\r\n if (!IS_QKB_UI) {\r\n return null\r\n }\r\n\r\n const showPlaceHolders = document.bvConfig ? document.bvConfig.showPlaceholders : false;\r\n const fabricatorSettings = this.props.fabricatorSettings;\r\n const layers = this.layout.getLayers(showPlaceHolders);\r\n const layoutType = this.layout.getCurrentLayoutName();\r\n const isMobile = this.props.windowWidth < 991;\r\n const showTutorial = this.checkToShowTutorial();\r\n\r\n return (\r\n
    \r\n
    \r\n {(this.props.bvOpened || this.props.bvVisited) ? (\r\n \r\n this.imageCanvas = node}\r\n layoutType={layoutType}\r\n layout={this.layout}\r\n width={this.props.canvasDimensions.width}\r\n height={this.props.canvasDimensions.height}\r\n useMouseHovering={this.props.useMouseHovering}\r\n useTouchZoom={this.props.useTouchZoom}\r\n />\r\n \r\n \r\n ) : null}\r\n \r\n {!this.state.demoPointClicked && this.props.canvasId ? (\r\n \r\n ) : null}\r\n
    \r\n {(this.layout.initialized && this.props.bvVisited) ? ( // keep navigation opened if someone got to QT and back\r\n isMobile ? (\r\n \r\n ) : (\r\n this.navBar = node}\r\n refreshCB={this.handleRefresh}\r\n setHoveredLayer={this.setHoveredLayer}\r\n canvasId={this.state.canvasId}\r\n renderGreenLayerByZindex={this.renderGreenLayerByZindex}\r\n toggleUserPopup={this.props.toggleUserPopup}\r\n changeMessageBoxState={this.changeMessageBoxState}\r\n setActiveFeature={this.setActiveFeature}\r\n activeFeature={this.state.activeFeature}\r\n fabricatorSettings={fabricatorSettings}\r\n setDemoPointClicked={this.setDemoPointClicked}\r\n />\r\n )\r\n ) : null}\r\n {this.props.cookieAccepted ? : null}\r\n {showTutorial ? : null}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {cookieAccepted, windowWidth, visualizersLoaded} = store.serverState;\r\n const {bvOpened, bvVisited, canvasId, showRestorePopup, canvasDimensions, canvasCount} = store.bathroomVisualizerState;\r\n const {mobileNav, desktopNavigationOpened, activeNavigationParentName, activeNavigationChildName} = store.navigationState;\r\n const {isPhoneNumberValidated, userIsLoggedIn} = store.userState;\r\n const {visualizerTutorialIsOpened, visualizerTutorialFinished} = store.tutorialState;\r\n const {initialFlowRoomLayout, initialFlowRoom, initialFlowStep} = store.initialFlowState;\r\n return {\r\n bvOpened,\r\n bvVisited,\r\n mobileNav,\r\n isPhoneNumberValidated,\r\n userIsLoggedIn,\r\n windowWidth,\r\n canvasId,\r\n fabricatorSettings: store.fabricatorState.settings,\r\n desktopNavigationOpened,\r\n activeNavigationParentName,\r\n activeNavigationChildName,\r\n showRestorePopup,\r\n visualizerTutorialIsOpened,\r\n visualizerTutorialFinished,\r\n initialFlowRoomLayout,\r\n initialFlowRoom,\r\n initialFlowStep,\r\n cookieAccepted,\r\n canvasDimensions,\r\n visualizersLoaded,\r\n canvasCount,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n setCameFromPage,\r\n toggleBathroomVisualizerOpen,\r\n setDefaultSelectionGroup,\r\n setLayoutDataParts,\r\n toggleUserPopup,\r\n setCanvasId,\r\n loadFilters,\r\n toggleSelectionFeatureInfo,\r\n changeMessageBoxState,\r\n showVisualizerTutorial,\r\n addVisualizersLoaded\r\n})(KitchenVisualizer);\r\n","import values from 'lodash/values';\r\nimport invert from 'lodash/invert';\r\nimport snakeCase from 'lodash/snakeCase';\r\n\r\nimport LayoutCommon from \"../../visComponents/layoutCommon\";\r\n\r\nimport Appliance from \"./parts/appliance\";\r\nimport Cabinet from \"./parts/cabinet\";\r\nimport CenterIsland from \"./parts/centerIsland\";\r\nimport CountertopGroup from \"./parts/countertopGroup\";\r\nimport Walls from \"./parts/walls\";\r\nimport FloorNew from \"./parts/floorNew\";\r\nimport Globals from \"./parts/globals\";\r\n\r\nimport {LayoutType, LayoutAbbreviation} from \"./constants\";\r\nimport {LayoutThumbnails} from \"./assets\";\r\nimport Z from \"./zIndex\";\r\nimport store from \"../../../store\";\r\nimport * as types from \"../../../actions/actionTypes\";\r\nimport Other from \"./parts/other\";\r\nimport NonVisualizerSubPart from \"./subparts/nonVisualizerSubPart\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\nimport Layer from \"../../visComponents/layer\";\r\nimport {largeLayoutShadow, SmallLayoutShadow} from \"./assets\";\r\n// import {featureThumbnailUrl} from \"../../../misc/helpers\";\r\nimport {AVAILABLE_VISUALIZER_TYPES} from \"../../../config\";\r\n\r\nexport class Layout extends LayoutCommon {\r\n\r\n /**\r\n * @type {int}\r\n */\r\n defaultType = LayoutType.LShapeWithPeninsulaWithIsland;\r\n type = this.defaultType;\r\n visualizerType = AVAILABLE_VISUALIZER_TYPES.Kitchen;\r\n localStorageKey = \"kvState\";\r\n layersBinding = \"Kitchen\";\r\n layoutNames = LayoutAbbreviation;\r\n layoutTypes = LayoutType;\r\n layoutThumbnails = LayoutThumbnails;\r\n zIndexes = Z.layouts;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.parts[Appliance.id] = new Appliance();\r\n this.parts[Cabinet.id] = new Cabinet();\r\n this.parts[CenterIsland.id] = new CenterIsland();\r\n this.parts[CountertopGroup.id] = new CountertopGroup();\r\n this.parts[Walls.id] = new Walls();\r\n this.parts[FloorNew.id] = new FloorNew();\r\n this.parts[Globals.id] = new Globals();\r\n this.parts[Other.id] = new Other();\r\n\r\n values(this.parts).forEach(part => part.layout = this);\r\n }\r\n\r\n addCustomLayers = (res) => {\r\n // add global shadow\r\n const globalShadowParent = this.parts[Globals.id]; // if no global shadow uploaded - take the hardcoded one\r\n if (!globalShadowParent.categoryEnabled || !globalShadowParent.globalShadow || !globalShadowParent.globalShadow.activeFeature) {\r\n if (this.getCurrentLayoutAbbreviation().includes(\"L\")) {\r\n res.push(new Layer(\"kv\", Z.layouts.LShape.Globals.GlobalShadow, largeLayoutShadow, false));\r\n } else if (this.type === LayoutType.Small) {\r\n res.push(new Layer(\"kv\", Z.layouts.Small.Globals.GlobalShadow, SmallLayoutShadow, false));\r\n }\r\n }\r\n return res\r\n }\r\n\r\n getCurrentLayoutName(type = this.type) {\r\n return invert(LayoutType)[type];\r\n }\r\n\r\n getCurrentLayoutAbbreviation() {\r\n return LayoutAbbreviation[this.getCurrentLayoutName()]\r\n }\r\n\r\n // getActiveFeatures(returnAllFeatures) { // removed, we have common now\r\n // let activeFeatures = [];\r\n // const receiveAllFeatures = returnAllFeatures || !!(this.qtCategories && this.qtCategories.length);\r\n // this.getFeatures(receiveAllFeatures).forEach((parentGroup) => {\r\n // // let subParts = parentGroup.subParts().filter(subPart => !subPart.part.disabled); // we need to store every item!\r\n // if (parentGroup.menuType === 0) { // FLOOR\r\n // if (!parentGroup.disabled && parentGroup.activeFeature\r\n // && !parentGroup.activeFeature.partName.includes(\"laceholder\")) {\r\n // activeFeatures.push({\r\n // selectionGroup: parentGroup.partName,\r\n // partId: parentGroup.partId,\r\n // quantity: 0,\r\n // cartFeature: parentGroup.activeFeature\r\n // });\r\n // }\r\n // } else {\r\n // let subItems = parentGroup.relatedItems;\r\n // const excluded = [\"fridge_shadow\"];\r\n // if (!returnAllFeatures) {\r\n // subItems = subItems.filter(subItem => !excluded.includes(subItem.partId) && subItem.activeFeature\r\n // && subItem.activeFeature.partName && !subItem.activeFeature.partName.includes(\"laceholder\"));\r\n // }\r\n // subItems.forEach((subItem) => {\r\n // //adding top cabinet parts to cart features //Alan 25.07.2019\r\n // if (subItem.partId === \"top_cabinet\" && subItem.activeFeature && subItem.activeFeature.metaData[\"Module\"]) {\r\n // let uniqueModuleParts = []; // arrayOf: {width: \"\", height: \"\", inlayTypeName: \"\", quantity: 0}\r\n // for (let i = 1; i <= subItem.moduleSystem.length; i++ ) {\r\n // const currentModuleSystemNumber = i - 1;\r\n // for (let k = 0; k <= subItem.moduleSystem[currentModuleSystemNumber].length - 1; k++ ) {\r\n // const modulePart = subItem.moduleSystem[currentModuleSystemNumber][k];\r\n // const modulePartSplitted = modulePart.split(\"_\");\r\n //\r\n // let inlayTypeName = subItem.defaultInlayType;\r\n // subItem.inlayTypes.forEach(inlayType => {\r\n // if (inlayType.moduleParts.includes(i + \"_\" + modulePartSplitted[2])) {\r\n // inlayTypeName = inlayType.name\r\n // }\r\n // });\r\n //\r\n // const existingModulePart = uniqueModuleParts.find((uniqueModulePart) => {\r\n // return uniqueModulePart.width === modulePartSplitted[0]\r\n // && uniqueModulePart.height === modulePartSplitted[1]\r\n // && uniqueModulePart.inlayTypeName === inlayTypeName\r\n // });\r\n // if (existingModulePart) {\r\n // existingModulePart.quantity++;\r\n // } else {\r\n // const cartFeature = subItem.findFeatureByModuleAndModulePart(modulePart, inlayTypeName);\r\n // if (cartFeature) {\r\n // uniqueModuleParts.push({\r\n // width: modulePartSplitted[0],\r\n // height: modulePartSplitted[1],\r\n // inlayTypeName,\r\n // cartFeature,\r\n // quantity: 1,\r\n // partName: subItem.activeFeature.partName\r\n // })\r\n // }\r\n // }\r\n // }\r\n // }\r\n // // console.log(\"uniqueModuleParts\", uniqueModuleParts);\r\n // uniqueModuleParts.forEach((uniqueModulePart, uniqueModulePartIndex) => {\r\n // activeFeatures.push({\r\n // selectionGroup: parentGroup.partName,\r\n // partId: subItem.partId + \"_module_\" + uniqueModulePartIndex,\r\n // // partId: subItem.partId,\r\n // cartFeature: uniqueModulePart.cartFeature,\r\n // thumbnail: featureThumbnailUrl(subItem.activeFeature),\r\n // partName: uniqueModulePart.partName,\r\n // description: `Width: ${uniqueModulePart.width} Height: ${uniqueModulePart.height} Inlay Type: ${uniqueModulePart.inlayTypeName}`,\r\n // quantity: uniqueModulePart.quantity\r\n // });\r\n // });\r\n // }\r\n // if (subItem.activeFeature) {\r\n // activeFeatures.push({\r\n // selectionGroup: parentGroup.partName,\r\n // partId: subItem.partId,\r\n // quantity: 0,\r\n // cartFeature: subItem.activeFeature\r\n // });\r\n // }\r\n // })\r\n // }\r\n // });\r\n // // console.log('activeFeatures', activeFeatures);\r\n // if (!returnAllFeatures && this.qtCategories && this.qtCategories.length) {\r\n // activeFeatures = activeFeatures.filter(activeFeature => {\r\n // return this.qtCategories.some(qtCategory => qtCategory.subParts.some(subPart => {\r\n // return subPart.part.partId === activeFeature.partId\r\n // }))\r\n // })\r\n // }\r\n // return activeFeatures\r\n // }\r\n\r\n /**\r\n *\r\n * @param bvState {object}\r\n * @param setCartAndUserState {boolean | array} // only in the parseResponse function (when job is opened in the dashboard)\r\n * @param useNames {boolean}\r\n * @param needToChangeLayout {boolean}\r\n * @param firstLoad {boolean}\r\n */\r\n setActiveFeaturesFromObject(bvState, setCartAndUserState = false, useNames = false, needToChangeLayout = true, firstLoad = false) {\r\n if (bvState) {\r\n\r\n const cabinetParent = this.parts[Cabinet.id];\r\n const countertopGroupParent = this.parts[CountertopGroup.id];\r\n\r\n const layout_type = +bvState.layout_type;\r\n needToChangeLayout = needToChangeLayout && (layout_type || layout_type === 0) && (layout_type !== +this.type);\r\n\r\n if (needToChangeLayout) {\r\n this.type = layout_type;\r\n }\r\n\r\n // to avoid checks below\r\n bvState.disabled_parts = bvState.disabled_parts || [];\r\n\r\n this.getFeatures()\r\n .forEach((parentGroup) => {\r\n if (parentGroup.menuType === 0) {\r\n const partId = parentGroup.partId;\r\n const hasPreviouslySavedItem = this.selectedLayoutFeatures[layout_type]\r\n && this.selectedLayoutFeatures[layout_type][partId];\r\n if (bvState.hasOwnProperty(partId) || hasPreviouslySavedItem) {\r\n if (useNames) {\r\n parentGroup.activeFeature = parentGroup.getFeatureByPartName(bvState[partId]);\r\n if (!parentGroup.activeFeature && hasPreviouslySavedItem) {\r\n parentGroup.activeFeature = parentGroup.getFeatureByPartName(hasPreviouslySavedItem);\r\n }\r\n } else {\r\n parentGroup.activeFeature = parentGroup.getFeatureById(bvState[partId])\r\n || parentGroup.getDefaultFeature();\r\n }\r\n parentGroup.placeholderChanged = !!parentGroup.activeFeature;\r\n // const {activeQuoteIndex} = store.getState().quotesState;\r\n // parentGroup.firstClick[activeQuoteIndex] = !!parentGroup.activeFeature;\r\n }\r\n if (parentGroup.activeFeature && firstLoad && !parentGroup.activeFeature.notAvailableInVisualizer) { // Leave non in vis features locked\r\n parentGroup.activeFeature.dbFeature.unlocked = true;\r\n }\r\n if (bvState.disabled_parts.includes(partId)) {\r\n parentGroup.disabled = true\r\n }\r\n } else {\r\n let relatedItems = parentGroup.getRelatedItems();\r\n relatedItems.forEach((subPart) => {\r\n const partId = subPart.partId;\r\n let previouslySelectedItem = null;\r\n subPart.selectedFeaturesHistory.some(featureName => {\r\n previouslySelectedItem = subPart.getFeatureByPartName(featureName);\r\n return previouslySelectedItem\r\n });\r\n if (bvState.hasOwnProperty(partId) || previouslySelectedItem) {\r\n if (useNames) {\r\n const matchingFeature = (partId === \"backsplash\" && bvState[\"backsplash_type\"])\r\n ? subPart.getFeatureByBacksplashType(bvState[\"backsplash_type\"], bvState[\"backsplash\"])\r\n : subPart.getFeatureByPartName(bvState[partId]);\r\n if (matchingFeature) {\r\n subPart.activeFeature = matchingFeature;\r\n } else if (previouslySelectedItem) {\r\n subPart.activeFeature = previouslySelectedItem;\r\n }\r\n } else {\r\n subPart.activeFeature = subPart.getFeatureById(bvState[partId]) || parentGroup.getDefaultFeature();\r\n }\r\n subPart.placeholderChanged = !!subPart.activeFeature;\r\n // const {activeQuoteIndex} = store.getState().quotesState;\r\n // subPart.firstClick[activeQuoteIndex] = !!subPart.activeFeature;\r\n // if (subPart.firstClick) {\r\n // console.log(\"subPart.firstClick\", subPart);\r\n // }\r\n }\r\n if (subPart.activeFeature && firstLoad && !subPart.activeFeature.notAvailableInVisualizer) {\r\n subPart.activeFeature.dbFeature.unlocked = true;\r\n }\r\n if (bvState.disabled_parts.includes(partId)) {\r\n subPart.disabled = true\r\n }\r\n })\r\n }\r\n });\r\n\r\n const partPredicate = (part, value) => useNames ? part.partName === value : +part.dbFeature.id === +value;\r\n Object.keys(bvState)\r\n .forEach((bvStateKey) => {\r\n let partId, parent, relatedName;\r\n switch(bvStateKey) {\r\n case \"top_cabinet_parts\":\r\n partId = \"top_cabinet_parts\";\r\n parent = cabinetParent;\r\n relatedName = \"topCabinet\";\r\n break;\r\n case \"bottom_cabinet_parts\":\r\n partId = \"bottom_cabinet_parts\";\r\n parent = cabinetParent;\r\n relatedName = \"bottomCabinet\";\r\n break;\r\n case \"crown_molding\":\r\n partId = \"crown_molding_parts\";\r\n parent = cabinetParent;\r\n relatedName = \"crownMolding\";\r\n break;\r\n case \"countertop_parts\":\r\n partId = \"countertop_parts\";\r\n parent = countertopGroupParent;\r\n relatedName = \"countertop\";\r\n break;\r\n default:\r\n break;\r\n }\r\n if (parent && bvState[partId] && bvState[partId].length && parent[relatedName]) {\r\n const relatedItem = parent[relatedName];\r\n // if (bvStateKey === \"top_cabinet_parts\" || bvStateKey === \"bottom_cabinet_parts\") {\r\n // bvState[partId] = Array.isArray(bvState[bvStateKey])\r\n // ? bvState[bvStateKey]\r\n // : JSON.parse(decodeURIComponent(bvState[bvStateKey]));\r\n // }\r\n const matchingParts = bvState[partId]\r\n .map((featureId) => {\r\n const arrayOfItems = (relatedItem.moduleParts)\r\n ? [...relatedItem.featuresParts, ...relatedItem.moduleParts]\r\n : relatedItem.featuresParts;\r\n return arrayOfItems.find(_ => partPredicate(_, featureId));\r\n })\r\n .filter((featuresPart) => {\r\n return featuresPart && featuresPart.matchesMetaForArrayOfConditions(relatedItem.getArrayOfConditions());\r\n });\r\n if (matchingParts.length) {\r\n relatedItem.activeFeatureParts = matchingParts\r\n }\r\n if (bvStateKey === \"top_cabinet_parts\" && bvState[\"top_module_system\"]) {\r\n relatedItem.moduleSystem = Array.isArray(bvState[\"top_module_system\"])\r\n ? bvState[\"top_module_system\"]\r\n : JSON.parse(decodeURIComponent(bvState[\"top_module_system\"]));\r\n if (bvState[\"inlay_types\"]) {\r\n relatedItem.inlayTypes = Array.isArray(bvState[\"inlay_types\"])\r\n ? bvState[\"inlay_types\"]\r\n : JSON.parse(decodeURIComponent(bvState[\"inlay_types\"]));\r\n }\r\n relatedItem.activeFeatureParts = relatedItem.setActiveFeatureParts();\r\n } else if (bvStateKey === \"bottom_cabinet_parts\" && bvState[\"bottom_module_system\"]) {\r\n relatedItem.moduleSystem = Array.isArray(bvState[\"bottom_module_system\"])\r\n ? bvState[\"bottom_module_system\"]\r\n : JSON.parse(decodeURIComponent(bvState[\"bottom_module_system\"]));\r\n relatedItem.activeFeatureParts = relatedItem.setActiveFeatureParts();\r\n }\r\n }\r\n });\r\n\r\n if (needToChangeLayout) {\r\n this.changeLayout(this.getFeatures());\r\n }\r\n\r\n if (setCartAndUserState) {\r\n this.setCartStateAndUserStateFromBvState(bvState, setCartAndUserState);\r\n }\r\n\r\n const layoutParts = this.designNavigationItems()\r\n .filter(parentGroup => parentGroup.part.categoryEnabled)\r\n .map((parentGroup) => parentGroup.part.partName);\r\n\r\n if (!this.isFakeLayout) {\r\n store.dispatch({\r\n type: types.SET_LAYOUT_DATA_PARTS,\r\n payload: {layoutParts}\r\n });\r\n }\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Sets bv features from url\r\n */\r\n\r\n parseUrl(bvState) {\r\n if (bvState.disabled_parts) {\r\n bvState.disabled_parts = bvState.disabled_parts.split(\",\");\r\n }\r\n if (bvState.top_cabinet_parts) {\r\n bvState.top_cabinet_parts = Number.isInteger(bvState.top_cabinet_parts)\r\n ? [bvState.top_cabinet_parts]\r\n : bvState.top_cabinet_parts.split(\",\")\r\n // bvState.top_cabinet_parts = JSON.parse(decodeURIComponent(bvState.top_cabinet_parts));\r\n }\r\n if (bvState.bottom_cabinet_parts) {\r\n bvState.bottom_cabinet_parts = Number.isInteger(bvState.bottom_cabinet_parts)\r\n ? [bvState.bottom_cabinet_parts]\r\n : bvState.bottom_cabinet_parts.split(\",\")\r\n // bvState.bottom_cabinet_parts = JSON.parse(decodeURIComponent(bvState.bottom_cabinet_parts));\r\n }\r\n if (bvState.crown_molding_parts) {\r\n bvState.crown_molding_parts = Number.isInteger(bvState.crown_molding_parts)\r\n ? [bvState.crown_molding_parts]\r\n : bvState.crown_molding_parts.split(\",\")\r\n }\r\n if (bvState.countertop_parts) {\r\n bvState.countertop_parts = Number.isInteger(bvState.countertop_parts)\r\n ? [bvState.countertop_parts]\r\n : bvState.countertop_parts.split(\",\")\r\n }\r\n if (bvState.top_module_system) {\r\n bvState.top_module_system = JSON.parse(decodeURIComponent(bvState.top_module_system))\r\n }\r\n if (bvState.inlay_types) {\r\n bvState.inlay_types = JSON.parse(decodeURIComponent(bvState.inlay_types))\r\n }\r\n if (bvState.bottom_module_system) {\r\n bvState.bottom_module_system = JSON.parse(decodeURIComponent(bvState.bottom_module_system))\r\n }\r\n console.log('restoring bvState from url...', bvState);\r\n return bvState\r\n }\r\n\r\n /**\r\n *\r\n * @param bvState {object}\r\n * @param useNames {boolean}\r\n * @returns bvState {object}\r\n */\r\n addSpecificPropertiesToLocalStorage(bvState, useNames = false) {\r\n const cabinetParent = this.parts[Cabinet.id];\r\n const countertopGroupParent = this.parts[CountertopGroup.id];\r\n const wallsParent = this.parts[Walls.id];\r\n\r\n bvState.layout_type = this.type;\r\n Object.keys(bvState).forEach((bvStateKey) => {\r\n // console.log('bvStateKey', bvStateKey);\r\n switch(bvStateKey) {\r\n case \"top_cabinet\":\r\n // bvState[\"top_cabinet_parts\"] = encodeURIComponent(JSON.stringify(cabinetParent.topCabinet.activeFeatureParts\r\n // .filter(activeFeaturePart => activeFeaturePart)\r\n // .map(activeFeaturePart => {\r\n // return useNames ? activeFeaturePart.partName : activeFeaturePart.dbFeature.id\r\n // })));\r\n if (!cabinetParent.topCabinet || !cabinetParent.topCabinet.activeFeatureParts) {\r\n break;\r\n }\r\n bvState[\"top_cabinet_parts\"] = cabinetParent.topCabinet.activeFeatureParts\r\n .filter(activeFeaturePart => activeFeaturePart)\r\n .map(activeFeaturePart => {\r\n return useNames ? activeFeaturePart.partName : activeFeaturePart.dbFeature.id\r\n });\r\n if (cabinetParent.topCabinet.features.some(feature => feature.metaData[\"Module\"])) { // disabled for now, but in case they are needed - change this condition!\r\n bvState[\"top_module_system\"] = encodeURIComponent(JSON.stringify(cabinetParent.topCabinet.moduleSystem));\r\n bvState[\"inlay_types\"] = encodeURIComponent(JSON.stringify(cabinetParent.topCabinet.inlayTypes));\r\n }\r\n break;\r\n case \"bottom_cabinet\":\r\n if (!cabinetParent.bottomCabinet || !cabinetParent.bottomCabinet.activeFeatureParts) {\r\n break;\r\n }\r\n // bvState[\"bottom_cabinet_parts\"] = encodeURIComponent(JSON.stringify(cabinetParent.bottomCabinet.activeFeatureParts\r\n // .filter(activeFeaturePart => activeFeaturePart)\r\n // .map(activeFeaturePart => {\r\n // return useNames ? activeFeaturePart.partName : activeFeaturePart.dbFeature.id\r\n // })));\r\n bvState[\"bottom_cabinet_parts\"] = cabinetParent.bottomCabinet.activeFeatureParts\r\n .filter(activeFeaturePart => activeFeaturePart)\r\n .map(activeFeaturePart => {\r\n return useNames ? activeFeaturePart.partName : activeFeaturePart.dbFeature.id\r\n });\r\n if (cabinetParent.bottomCabinet.features.some(feature => feature.metaData[\"Module\"])) {\r\n bvState[\"bottom_module_system\"] = encodeURIComponent(JSON.stringify(cabinetParent.bottomCabinet.moduleSystem));\r\n }\r\n break;\r\n case \"crown_molding\":\r\n if (!cabinetParent.crownMolding || !cabinetParent.crownMolding.activeFeatureParts) {\r\n break;\r\n }\r\n bvState[\"crown_molding_parts\"] = cabinetParent.crownMolding.activeFeatureParts\r\n .filter(activeFeaturePart => activeFeaturePart)\r\n .map(activeFeaturePart => {\r\n return useNames ? activeFeaturePart.partName : activeFeaturePart.dbFeature.id\r\n });\r\n break;\r\n case \"countertop\":\r\n if (!countertopGroupParent.countertop || !countertopGroupParent.countertop.activeFeatureParts) {\r\n break;\r\n }\r\n bvState[\"countertop_parts\"] = countertopGroupParent.countertop.activeFeatureParts\r\n .filter(activeFeaturePart => activeFeaturePart)\r\n .map(activeFeaturePart => {\r\n return useNames ? activeFeaturePart.partName : activeFeaturePart.dbFeature.id\r\n });\r\n break;\r\n case \"backsplash\":\r\n if (!wallsParent.backsplash) {\r\n break;\r\n }\r\n bvState[\"backsplash_type\"] = wallsParent.backsplash.getCurrentActiveFeatureType();\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n // console.log('bvState', bvState);\r\n return bvState\r\n }\r\n\r\n addNonVisualizerSubPart(featureGroupName){\r\n const otherParent = this.parts[Other.id];\r\n const partId = snakeCase(featureGroupName);\r\n let relatedItem = otherParent.relatedItems.find(relatedItem => relatedItem.partId === partId);\r\n if (!relatedItem) {\r\n relatedItem = new NonVisualizerSubPart(true, partId, featureGroupName);\r\n relatedItem.getParent = () => otherParent;\r\n otherParent.relatedItems.push(relatedItem);\r\n }\r\n return new DesignNavigationItem(relatedItem.partName, relatedItem)\r\n }\r\n\r\n get qtCategories() {\r\n\r\n if (!(Array.isArray(this.qtCategoriesList) && this.qtCategoriesList.length)) {\r\n return this.qtCategoriesList\r\n }\r\n\r\n // if (document.kvConfig.visualizerType === \"Kitchen\" || document.kvConfig.visualizerType === \"KV\") { // no need\r\n const currentLayoutAbbreviation = this.getCurrentLayoutAbbreviation();\r\n if (!currentLayoutAbbreviation.includes(\"I\")) {\r\n const countertopParent = this.parts[CountertopGroup.id];\r\n const countertopSubParts = countertopParent && countertopParent.subParts();\r\n return this.qtCategoriesList.map(qtCategory => {\r\n let qtCategoryHasBeenChanged = false;\r\n const changedSubParts = qtCategory._subParts\r\n .map(subPart => {\r\n if (countertopSubParts) {\r\n switch (subPart.part.partId) {\r\n case \"center_island_countertop\":\r\n qtCategoryHasBeenChanged = true;\r\n return this.getChangedSubPart(countertopSubParts, subPart, \"countertop\");\r\n case \"center_island_sink\":\r\n qtCategoryHasBeenChanged = true;\r\n return this.getChangedSubPart(countertopSubParts, subPart, \"sink\");\r\n case \"center_island_faucet\":\r\n qtCategoryHasBeenChanged = true;\r\n return this.getChangedSubPart(countertopSubParts, subPart, \"faucet\");\r\n case \"center_island_edge\":\r\n qtCategoryHasBeenChanged = true;\r\n return this.getChangedSubPart(countertopSubParts, subPart, \"edge_profile\");\r\n case \"center_island_stovetop\":\r\n qtCategoryHasBeenChanged = true;\r\n return this.getChangedSubPart(countertopSubParts, subPart, \"stovetop\");\r\n default:\r\n return subPart\r\n }\r\n }\r\n return subPart\r\n })\r\n .filter((subPart) => {\r\n return subPart && this.designNavigationItems(subPart, {}, \"\", false, true).length\r\n });\r\n if (qtCategoryHasBeenChanged) {\r\n qtCategory.subParts = changedSubParts;\r\n qtCategory.qtCategoryHasBeenChanged = true;\r\n }\r\n return qtCategory\r\n });\r\n }\r\n return this.qtCategoriesList.map((qtCategory) => {\r\n if (qtCategory.qtCategoryHasBeenChanged) {\r\n qtCategory.subParts = [...qtCategory.defaultSubParts];\r\n qtCategory.qtCategoryHasBeenChanged = false;\r\n }\r\n return qtCategory\r\n })\r\n }\r\n\r\n getChangedSubPart(allSubParts, currentSubPart, partId) {\r\n const newSubPart = allSubParts.find(cPart => cPart.part.partId === partId);\r\n if (!newSubPart) {\r\n return currentSubPart\r\n }\r\n // newSubPart.part.customGroupDisplayName = newSubPart.part.customGroupDisplayName || currentSubPart.part.customGroupDisplayName;\r\n return newSubPart\r\n }\r\n\r\n excludedIndexesFromHover = (layoutType) => {\r\n return [\r\n this.zIndexes[layoutType].Globals.Baseboard, // exclude Globals\r\n this.zIndexes[layoutType].Globals.CeilingHighlights, // exclude Globals\r\n this.zIndexes[layoutType].Globals.CeilingLights, // exclude Globals\r\n this.zIndexes[layoutType].Globals.GlobalShadow, // exclude Globals\r\n this.zIndexes[layoutType].Globals.Decor1, // exclude Globals\r\n this.zIndexes[layoutType].Globals.Decor2, // exclude Globals\r\n this.zIndexes[layoutType].Globals.Decor3, // exclude Globals\r\n this.zIndexes[layoutType].Globals.Decor4, // exclude Globals\r\n this.zIndexes[layoutType].Cabinet.TopCabinetShadow, // exclude TopCabinetShadow\r\n this.zIndexes[layoutType].Cabinet.TopCabinetShadowPart2, // exclude TopCabinetShadow\r\n this.zIndexes[layoutType].Cabinet.BottomCabinetShadow, // exclude BottomCabinetShadow\r\n this.zIndexes[layoutType].CenterIsland.CenterIslandShadow, // exclude CenterIslandShadow\r\n this.zIndexes[layoutType].CenterIsland.ChairsShadow, // exclude CenterIslandShadow\r\n this.zIndexes[layoutType].Appliances.FridgeShadow, // exclude FridgeShadow\r\n this.zIndexes[layoutType].Cabinet.TopCabinetModuleBox, // exclude TopCabinetModuleBox\r\n this.zIndexes[layoutType].Cabinet.TopCabinetModuleBox2, // exclude TopCabinetModuleBox2\r\n this.zIndexes[layoutType].Cabinet.BottomCabinetModuleBox, // exclude BottomCabinetModuleBox\r\n this.zIndexes[layoutType].Cabinet.BottomCabinetModuleBox2, // exclude BottomCabinetModuleBox2\r\n ]\r\n }\r\n\r\n}\r\n","import uniqBy from \"lodash/uniqBy\";\r\n\r\nimport {IntermediatePart} from \"../intermediatePart\";\r\n\r\nexport default class NonVisualizerSubPart extends IntermediatePart {\r\n constructor(isChild, partId, partName) {\r\n super(isChild);\r\n this.partId = partId;\r\n this.visible = true;\r\n this.partName = partName;\r\n // this.allFeaturesReceived = true;\r\n }\r\n\r\n load(dbFeature) {\r\n return super.load_(dbFeature, new NonVisualizerSubPart(false, this.partId, dbFeature.groupName));\r\n }\r\n\r\n navigationSubItems(filters, searchText) {\r\n const navSubItems = super.navigationSubItems(filters, searchText)\r\n return uniqBy(navSubItems, (navItem) => navItem.part.dbFeature.sharedFeatureName);\r\n }\r\n}\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport Z from \"../core/zIndex\";\r\nimport {reorder} from \"../../../misc/utils\";\r\nimport Analytics from \"../../../analytics\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\n\r\nimport {BACKSPLASH_TYPES} from \"../core/constants\";\r\n\r\nclass ContextMenuSimple extends Component {\r\n\r\n static propTypes = {\r\n contextMenuOpen: PropTypes.string.isRequired,\r\n hoveredLayer: PropTypes.object,\r\n handleContextMenuClick: PropTypes.func,\r\n contextMenuPosition: PropTypes.object,\r\n contextMenuPonyWall: PropTypes.bool,\r\n renderGreenLayerByZindex: PropTypes.func,\r\n closeContextMenu: PropTypes.func,\r\n };\r\n\r\n state = {\r\n contextMenuButtons: []\r\n };\r\n\r\n componentDidMount() {\r\n this.setContextMenuButtons();\r\n if (this.props.closeContextMenu) {\r\n document.addEventListener('click', this.contextMenuBlur)\r\n }\r\n }\r\n\r\n contextMenuBlur = (e) => {\r\n if (!e.target.closest('.contextmenu-buttons')\r\n && !e.target.closest('.contextmenu-buttons__button')\r\n && !e.target.closest('.sprocket-container') && !e.target.closest('.canvas')) {\r\n this.props.closeContextMenu();\r\n }\r\n };\r\n\r\n componentWillUnmount() {\r\n if (this.props.closeContextMenu) {\r\n document.removeEventListener('click', this.contextMenuBlur)\r\n }\r\n }\r\n\r\n setContextMenuButtons() {\r\n const layout = getCurrentLayout();\r\n const contextMenuOpen = this.props.contextMenuOpen;\r\n if (contextMenuOpen === \"backsplash_custom\"\r\n || contextMenuOpen === \"backsplash_custom_left\"\r\n || contextMenuOpen === \"backsplash_custom_right\"\r\n || contextMenuOpen === \"right_wall_custom\"\r\n || contextMenuOpen === \"left_wall_custom\") {\r\n this.setBacksplashButtons();\r\n return\r\n }\r\n\r\n const hoveredParent = layout.designNavigationItems().find(navItem => {\r\n return navItem.text === contextMenuOpen\r\n });\r\n\r\n let relatedItems = hoveredParent.part.relatedItems;\r\n\r\n const clickedItem = relatedItems.find((item) => {\r\n let zIndexToFind = this.props.hoveredLayer.zIndex;\r\n const currentLayoutName = layout.getCurrentLayoutName();\r\n if (zIndexToFind === Z.layouts[currentLayoutName].CountertopGroup.Countertop2) {\r\n return item.partId === \"countertop\"\r\n }\r\n return item.activeFeature && item.activeFeature.layer.zIndex === zIndexToFind\r\n });\r\n\r\n let itemsToRender = this.getItemsToRender(hoveredParent);\r\n\r\n // console.log('clickedItem', clickedItem);\r\n // console.log('relatedItems', relatedItems);\r\n // console.log('itemsToRender', itemsToRender);\r\n\r\n const clickedItemIndex = itemsToRender.findIndex(item => item.text === clickedItem.partName);\r\n if (clickedItemIndex > 0) {\r\n itemsToRender = reorder(itemsToRender, clickedItemIndex, 0); // swap items in array start\r\n }\r\n\r\n itemsToRender = itemsToRender.map(item => {\r\n if (item.text === \"Island Countertop\") {\r\n // item.subMenuText = \"Countertop\";\r\n item.bgImageText = \"Countertop\";\r\n }\r\n return item\r\n });\r\n\r\n this.setState({\r\n contextMenuButtons: itemsToRender\r\n })\r\n }\r\n\r\n getItemsToRender = (hoveredParent) => {\r\n let itemsToRender = hoveredParent.part.subParts();\r\n let availablePartIds = [];\r\n switch (this.props.contextMenuOpen) {\r\n case \"Center Island\":\r\n availablePartIds = [\"center_island_sink\", \"center_island_faucet\", \"center_island_countertop\",\r\n \"center_island_stovetop\", \"center_island_range\", \"center_island_edge\"];\r\n break;\r\n case \"Countertop\":\r\n availablePartIds = [\"countertop\", \"faucet\", \"sink\", \"edge_profile\"];\r\n break;\r\n case \"Walls\":\r\n availablePartIds = [\"right_wall\", \"backsplash\"];\r\n break;\r\n default:\r\n break;\r\n }\r\n return itemsToRender.filter(menuButton => availablePartIds.includes(menuButton.part.partId));\r\n };\r\n\r\n getBackSplashButtons = () => {\r\n return BACKSPLASH_TYPES.map(bType => {\r\n const button = {\r\n text: bType,\r\n };\r\n switch (bType) {\r\n case \"4in\":\r\n button.subMenuText = \"visualizer.kitchen.contextmenu.backsplash.4in\"\r\n break;\r\n case \"6in\":\r\n button.subMenuText = \"visualizer.kitchen.contextmenu.backsplash.6in\"\r\n break;\r\n case \"18in\":\r\n button.subMenuText = \"visualizer.kitchen.contextmenu.backsplash.18in\"\r\n break;\r\n }\r\n return button\r\n })\r\n };\r\n\r\n setBacksplashButtons = () => {\r\n const layout = getCurrentLayout();\r\n const hoveredParent = layout.designNavigationItems().find(navItem => {\r\n return navItem.text === \"Walls\"\r\n });\r\n const subParts = hoveredParent.part.subParts();\r\n\r\n let contextMenuButtons = [];\r\n const backSplashButtons = this.getBackSplashButtons();\r\n const rightWall = subParts.find(menuButton => menuButton.part.partId === \"right_wall\");\r\n const leftWall = subParts.find(menuButton => menuButton.part.partId === \"left_wall\");\r\n if (rightWall) {\r\n rightWall.subMenuParent = \"Walls\";\r\n }\r\n if (leftWall) {\r\n leftWall.subMenuParent = \"Walls\";\r\n }\r\n switch (this.props.contextMenuOpen) {\r\n case \"right_wall_custom\": {\r\n contextMenuButtons = rightWall ? [rightWall, ...backSplashButtons] : backSplashButtons;\r\n break;\r\n }\r\n case \"left_wall_custom\": {\r\n contextMenuButtons = leftWall ? [leftWall, ...backSplashButtons] : backSplashButtons;\r\n break;\r\n }\r\n case \"backsplash_custom_left\": {\r\n contextMenuButtons = [...backSplashButtons, leftWall];\r\n break;\r\n }\r\n case \"backsplash_custom_right\": {\r\n contextMenuButtons = [...backSplashButtons, rightWall];\r\n break;\r\n }\r\n case \"backsplash_custom\": {\r\n contextMenuButtons = backSplashButtons; // just in case, we should not have these cases\r\n break;\r\n }\r\n }\r\n this.setState({\r\n contextMenuButtons\r\n })\r\n };\r\n\r\n handleContextMenuHover = () => {\r\n //TODO[Artem] add here rendering green zones on hover\r\n };\r\n\r\n render() {\r\n\r\n let contextMenuStyles = this.props.contextMenuPosition || {};\r\n if (this.state.contextMenuButtons.length <= 4) {\r\n contextMenuStyles = Object.assign({}, contextMenuStyles, {maxWidth:\"210px\"} )\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {this.state.contextMenuButtons.map((menuItem) => {\r\n if (!menuItem) {\r\n return null\r\n }\r\n return (\r\n \r\n )\r\n })}\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = () => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ContextMenuSimple)\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from 'react-redux';\r\n\r\nimport Analytics from \"../../../analytics\";\r\nimport {getModuleCombinations} from \"../core/subparts/cabinet/cabinetModuleSystem\";\r\nimport {MODULE_CONTEXT_MENU_TYPES, MODULE_CONTEXT_MENU_DIRECTIONS, CABINET_WIZARD_BUTTONS} from \"../core/constants\";\r\nimport Cabinet from \"../core/parts/cabinet\";\r\nimport {\r\n setModuleContextMenuType,\r\n setModuleContextMenuDirection,\r\n setModuleContextMenuModule,\r\n setModuleContextMenuModulePart,\r\n setActiveNavigationFilter, setActiveNavigationFilterStepIndex\r\n} from \"../../../actions/navigationFunctions\";\r\n\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\n\r\nclass CabinetContextMenu extends Component {\r\n\r\n static propTypes = {\r\n updateCanvas: PropTypes.func,\r\n contextMenuOpen: PropTypes.object,\r\n hoveredLayer: PropTypes.object,\r\n handleContextMenuClick: PropTypes.func,\r\n contextMenuPosition: PropTypes.object,\r\n closeContextMenu: PropTypes.func,\r\n };\r\n\r\n state = {\r\n contextMenuButtons: [],\r\n };\r\n\r\n componentDidMount() {\r\n if (this.props.closeContextMenu) {\r\n document.addEventListener('click', this.contextMenuBlur)\r\n }\r\n const moduleSplitted = this.props.contextMenuOpen.module.split(\"_\"); // example: \"4_4\"\r\n this.props.setModuleContextMenuModule(moduleSplitted[0]);\r\n this.props.setModuleContextMenuModulePart(moduleSplitted[1]);\r\n }\r\n\r\n contextMenuBlur = (e) => {\r\n if (!e.target.closest('.contextmenu-buttons')\r\n && !e.target.closest('.contextmenu-buttons__button')\r\n && !e.target.closest('.contextmenu-slice')\r\n && !e.target.closest('.canvas')) {\r\n this.props.closeContextMenu();\r\n }\r\n };\r\n\r\n componentWillUnmount() {\r\n if (this.props.closeContextMenu) {\r\n document.removeEventListener('click', this.contextMenuBlur)\r\n }\r\n }\r\n\r\n resetModule = () => {\r\n const layout = getCurrentLayout();\r\n const cabinetParent = layout.parts[Cabinet.id];\r\n if (this.props.contextMenuOpen.contextMenuPartId === \"top_cabinet\") {\r\n const moduleSplitted = this.props.contextMenuOpen.module.split(\"_\"); // example: \"4_4\"\r\n const arrayNumber = +moduleSplitted[0] - 1;\r\n cabinetParent.topCabinet.moduleSystem[arrayNumber] = (arrayNumber === 0 || arrayNumber === 5)\r\n ? [\"36_18_19\"] // copy array since it might be overwritten\r\n : [\"36_36_1\"];\r\n cabinetParent.topCabinet.activeFeatureParts = cabinetParent.topCabinet.setActiveFeatureParts();\r\n this.props.updateCanvas();\r\n } else if (this.props.contextMenuOpen.contextMenuPartId === \"bottom_cabinet\") {\r\n const moduleSplitted = this.props.contextMenuOpen.module.split(\"_\"); // example: \"4_4\"\r\n const arrayNumber = +moduleSplitted[0] - 1;\r\n cabinetParent.bottomCabinet.moduleSystem[arrayNumber] = [\"36_36_1\"];\r\n cabinetParent.bottomCabinet.activeFeatureParts = cabinetParent.bottomCabinet.setActiveFeatureParts();\r\n this.props.updateCanvas();\r\n }\r\n this.props.closeContextMenu();\r\n };\r\n\r\n setCabinetModule = (buttonId) => {\r\n const layout = getCurrentLayout();\r\n console.log(\"buttonId\", buttonId);\r\n console.log(\"this.props.contextMenuOpen\", this.props.contextMenuOpen);\r\n const moduleParts = buttonId.split(\"-\"); // example: \"12_36_4-12_36_57-12_36_58\" // width-height-id\r\n const cabinetParent = layout.parts[Cabinet.id];\r\n let subPartName = \"\";\r\n if (this.props.contextMenuOpen.contextMenuPartId === \"top_cabinet\") {\r\n subPartName = \"topCabinet\";\r\n } else if (this.props.contextMenuOpen.contextMenuPartId === \"bottom_cabinet\") {\r\n subPartName = \"bottomCabinet\";\r\n }\r\n if (this.props.contextMenuOpen.contextMenuPartId === \"top_cabinet\"\r\n || this.props.contextMenuOpen.contextMenuPartId === \"bottom_cabinet\") {\r\n const moduleSplitted = this.props.contextMenuOpen.module.split(\"_\"); // example: \"4_4\"\r\n cabinetParent[subPartName].inlayTypes.forEach(inlayTypeObj => {\r\n const existingMJoinedIndex = inlayTypeObj.moduleParts.findIndex(mJoined => {\r\n return mJoined === this.props.contextMenuOpen.module\r\n });\r\n if (existingMJoinedIndex > -1) { // it is not a default! push new spliced\r\n // inlayTypeObj.moduleParts.splice(existingMJoinedIndex, 1);\r\n moduleParts.forEach((modulePart) => {\r\n inlayTypeObj.moduleParts.push(moduleSplitted[0] + \"_\" + modulePart.split(\"_\")[2]);\r\n });\r\n }\r\n });\r\n const moduleSystemPart = cabinetParent[subPartName].moduleSystem[+moduleSplitted[0] - 1];\r\n // 1) remove old\r\n const oldIndex = moduleSystemPart.findIndex(modulePart => {\r\n // example: \"12_36_4-12_36_57-12_36_58\" // width-height-id\r\n return modulePart.split(\"_\")[2] === this.props.moduleContextMenuModulePart\r\n });\r\n moduleSystemPart.splice(oldIndex,1);\r\n // 2) add new ones\r\n moduleParts.forEach((modulePart) => {\r\n moduleSystemPart.push(modulePart);\r\n });\r\n cabinetParent[subPartName].activeFeatureParts = cabinetParent[subPartName].setActiveFeatureParts();\r\n this.props.updateCanvas();\r\n layout.updateLocalStorage();\r\n }\r\n\r\n };\r\n\r\n getSliceButtons = () => {\r\n const availableSplitButtons = getModuleCombinations(this.props.moduleContextMenuModulePart, this.props.moduleContextMenuDirection);\r\n return availableSplitButtons.map(buttonId => {\r\n return {\r\n text: \"\",\r\n buttonId,\r\n onClick: () => {\r\n this.setCabinetModule(buttonId);\r\n this.props.closeContextMenu();\r\n }\r\n }\r\n })\r\n };\r\n getResetButton = () => {\r\n return {\r\n text: \"Reset Module\",\r\n buttonId: \"reset\",\r\n onClick: this.resetModule\r\n }\r\n };\r\n getExitButton = () => {\r\n return {\r\n text: \"Exit config\",\r\n buttonId: \"exit_config\",\r\n onClick: () => this.props.setModuleContextMenuType(MODULE_CONTEXT_MENU_TYPES.Filters)\r\n }\r\n };\r\n openNavigationMenu = (e) => {\r\n const layout = getCurrentLayout();\r\n const cabinetParent = layout.parts[Cabinet.id];\r\n const subParts = cabinetParent.subParts();\r\n const subPart = subParts.find(menuItem => menuItem.part.partId === this.props.contextMenuOpen.contextMenuPartId);\r\n this.props.handleContextMenuClick(subPart); // top cabinet\r\n this.props.setActiveNavigationFilter(e.target.dataset.id);\r\n this.props.setActiveNavigationFilterStepIndex(e.target.dataset.index);\r\n this.props.closeContextMenu();\r\n };\r\n getCabinetConfigurationButtons = () => {\r\n const cabinetConfigurationButtons = CABINET_WIZARD_BUTTONS\r\n .filter(wizardButton => wizardButton.buttonId !== CABINET_WIZARD_BUTTONS[0].buttonId)\r\n .map((wizardButton) => {\r\n wizardButton.onClick = this.openNavigationMenu;\r\n return wizardButton\r\n });\r\n const availableModuleCombinations = getModuleCombinations(this.props.moduleContextMenuModulePart);\r\n if (availableModuleCombinations && availableModuleCombinations.length) {\r\n cabinetConfigurationButtons.push({\r\n text: \"Door config\",\r\n buttonId: \"door_config\",\r\n onClick: () => this.props.setModuleContextMenuType(MODULE_CONTEXT_MENU_TYPES.SliceButtons)\r\n })\r\n }\r\n return cabinetConfigurationButtons\r\n };\r\n getContextMenuButtons = () => {\r\n switch (this.props.moduleContextMenuType) {\r\n case MODULE_CONTEXT_MENU_TYPES.Filters:\r\n return (this.props.moduleContextMenuModulePart === \"1\") //remove reset button if there is nowhere to split\r\n ? this.getCabinetConfigurationButtons()\r\n : [...this.getCabinetConfigurationButtons(), this.getResetButton()];\r\n case MODULE_CONTEXT_MENU_TYPES.SliceButtons:\r\n default: {\r\n const sliceButtons = this.getSliceButtons();\r\n return sliceButtons.length\r\n ? [...sliceButtons, this.getExitButton(), this.getResetButton()]\r\n : [...this.getCabinetConfigurationButtons(), this.getResetButton()]\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n\r\n let contextMenuStyles = (this.props.windowWidth > 991 && this.props.contextMenuPosition)\r\n ? this.props.contextMenuPosition\r\n : {};\r\n if (this.state.contextMenuButtons.length === 4) {\r\n contextMenuStyles = Object.assign({}, contextMenuStyles, {maxWidth:\"210px\"} )\r\n }\r\n const availableHorizontalAndVertical = [\"1\", \"2\", \"3\", \"9\", \"10\"]; // show buttons for available splits\r\n const firstSliceIsActve = (this.props.moduleContextMenuType === MODULE_CONTEXT_MENU_TYPES.SliceButtons)\r\n && availableHorizontalAndVertical.includes(this.props.moduleContextMenuModulePart);\r\n\r\n return (\r\n
    \r\n {firstSliceIsActve ? (\r\n
    \r\n {Object.keys(MODULE_CONTEXT_MENU_DIRECTIONS).map((direction) => (\r\n \r\n ))}\r\n
    \r\n ) : null}\r\n
    \r\n {this.getContextMenuButtons().map((contextButton, contextButtonIndex) => {\r\n return (\r\n \r\n )\r\n })}\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n moduleContextMenuType: store.navigationState.moduleContextMenuType,\r\n moduleContextMenuDirection: store.navigationState.moduleContextMenuDirection,\r\n moduleContextMenuModulePart: store.navigationState.moduleContextMenuModulePart,\r\n windowWidth: store.serverState.windowWidth,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n setModuleContextMenuType,\r\n setModuleContextMenuDirection,\r\n setModuleContextMenuModule,\r\n setModuleContextMenuModulePart,\r\n setActiveNavigationFilter,\r\n setActiveNavigationFilterStepIndex\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CabinetContextMenu);\r\n","import React, {Fragment} from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport invert from \"lodash/invert\";\r\n\r\nimport {loaderEnable} from \"../ui/loaderView\";\r\nimport {\r\n toggleUserPopup, setCanvasId, setLayoutDataParts, setDefaultSelectionGroup, loadFilters, setCameFromPage,\r\n toggleBathroomVisualizerOpen, toggleSelectionFeatureInfo, changeMessageBoxState,\r\n addVisualizersLoaded } from \"../../actions/actionFunctions\";\r\nimport {\r\n getBathroomVisualizerData,\r\n getBvGroups,\r\n // getNavigationButtons\r\n} from \"../../api/server-api\";\r\nimport ImageCanvasCommonNew from \"../visComponents/imageCanvasCommonNew\";\r\nimport {Layout} from \"./core/layout\";\r\nimport DesktopNavigation from \"./navigation/desktopNavigation\";\r\nimport MobileNavigation from \"./navigation/mobileNavigation\";\r\nimport MainButtons from \"../common/mainButtons\";\r\nimport DemoPoints from \"../common/demoPoints/demoPoints\";\r\nimport MessageBox from \"../popups/messageBox\";\r\n\r\nimport Visualizer from \"../visComponents/visualizer\";\r\nimport VisualizerTutorial from \"../tutorials/visualizerTutorial\";\r\nimport {showVisualizerTutorial} from \"../../actions/tutorialFunctions\";\r\nimport Copyright from \"../ui/copyright\";\r\nimport {LayoutType} from \"./core/constants\";\r\nimport {IS_QKB_UI} from \"../../config\";\r\n\r\nexport const layout = new Layout();\r\n\r\nclass KvSceneVisualizer extends Visualizer {\r\n\r\n static displayName = 'KvSceneVisualizer';\r\n\r\n constructor(props) {\r\n super(props);\r\n this.layout = layout;\r\n }\r\n\r\n componentDidMount() {\r\n console.log(\"kvScene loaded\", );\r\n if (this.props.visualizersLoaded.includes(this.layout.visualizerType)) {\r\n this.setSubscribers();\r\n return false\r\n }\r\n loaderEnable();\r\n Promise.all([\r\n getBathroomVisualizerData(),\r\n this.getQtCategoriesCommon(),\r\n ]).then(baseResponse => {\r\n Promise.all([\r\n Promise.resolve(baseResponse[0]),\r\n getBvGroups(),\r\n Promise.resolve(baseResponse[1])\r\n ])\r\n .then((allResponse) => {\r\n const mainResponse = allResponse[0];\r\n const kvGroupsResponse = allResponse[1].data;\r\n const qtCategories = allResponse[2];\r\n // 1) set default (placeholders)\r\n this.layout.loadNewFeatures(mainResponse);\r\n this.layout.setGroupsItemsCount(kvGroupsResponse); // should be loaded before & after all features are received\r\n return this.setVisualizerInfo(mainResponse, kvGroupsResponse, qtCategories, invert(LayoutType));\r\n })\r\n .then(this.checkShareUrl)\r\n .then(this.onBvLoad)\r\n .then(this.finishLoading);\r\n });\r\n\r\n this.setSubscribers();\r\n // getNavigationButtons();\r\n }\r\n\r\n render() {\r\n\r\n if (!IS_QKB_UI) {\r\n return null\r\n }\r\n\r\n const showPlaceHolders = document.bvConfig ? document.bvConfig.showPlaceholders : false;\r\n const fabricatorSettings = this.props.fabricatorSettings;\r\n const layers = this.layout.getLayers(showPlaceHolders);\r\n const layoutType = this.layout.getCurrentLayoutName();\r\n const layoutScene = this.layout.scene;\r\n const isMobile = this.props.windowWidth < 991;\r\n const showTutorial = this.checkToShowTutorial();\r\n\r\n return (\r\n
    \r\n
    \r\n {(this.props.bvOpened || this.props.bvVisited) ? (\r\n \r\n this.imageCanvas = node}\r\n layoutType={layoutType}\r\n layout={this.layout}\r\n layoutScene={layoutScene}\r\n width={this.props.canvasDimensions.width}\r\n height={this.props.canvasDimensions.height}\r\n useMouseHovering={this.props.useMouseHovering}\r\n useTouchZoom={this.props.useTouchZoom}\r\n />\r\n \r\n \r\n ) : null}\r\n \r\n {!this.state.demoPointClicked && this.props.canvasId ? (\r\n \r\n ) : null}\r\n
    \r\n {(this.layout.initialized && this.props.bvVisited) ? ( // keep navigation opened if someone got to QT and back\r\n isMobile ? (\r\n \r\n ) : (\r\n this.navBar = node}\r\n refreshCB={this.handleRefresh}\r\n setHoveredLayer={this.setHoveredLayer}\r\n canvasId={this.state.canvasId}\r\n renderGreenLayerByZindex={this.renderGreenLayerByZindex}\r\n toggleUserPopup={this.props.toggleUserPopup}\r\n changeMessageBoxState={this.changeMessageBoxState}\r\n setActiveFeature={this.setActiveFeature}\r\n activeFeature={this.state.activeFeature}\r\n fabricatorSettings={fabricatorSettings}\r\n setDemoPointClicked={this.setDemoPointClicked}\r\n />\r\n )\r\n ) : null}\r\n {this.props.cookieAccepted ? : null}\r\n {showTutorial ? : null}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {cookieAccepted, windowWidth, visualizersLoaded} = store.serverState;\r\n const {bvOpened, bvVisited, canvasId, showRestorePopup, canvasDimensions, canvasCount} = store.bathroomVisualizerState;\r\n const {mobileNav, desktopNavigationOpened, activeNavigationParentName, activeNavigationChildName} = store.navigationState;\r\n const {isPhoneNumberValidated, userIsLoggedIn} = store.userState;\r\n const {visualizerTutorialIsOpened, visualizerTutorialFinished} = store.tutorialState;\r\n const {initialFlowRoomLayout, initialFlowRoom, initialFlowStep} = store.initialFlowState;\r\n const {qtCategoriesRequested} = store.qtState;\r\n return {\r\n bvOpened,\r\n bvVisited,\r\n mobileNav,\r\n isPhoneNumberValidated,\r\n userIsLoggedIn,\r\n windowWidth,\r\n canvasId,\r\n fabricatorSettings: store.fabricatorState.settings,\r\n desktopNavigationOpened,\r\n activeNavigationParentName,\r\n activeNavigationChildName,\r\n showRestorePopup,\r\n visualizerTutorialIsOpened,\r\n visualizerTutorialFinished,\r\n initialFlowRoomLayout,\r\n initialFlowRoom,\r\n initialFlowStep,\r\n cookieAccepted,\r\n canvasDimensions,\r\n visualizersLoaded,\r\n qtCategoriesRequested,\r\n canvasCount,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n setCameFromPage,\r\n toggleBathroomVisualizerOpen,\r\n setDefaultSelectionGroup,\r\n setLayoutDataParts,\r\n toggleUserPopup,\r\n setCanvasId,\r\n loadFilters,\r\n toggleSelectionFeatureInfo,\r\n changeMessageBoxState,\r\n showVisualizerTutorial,\r\n addVisualizersLoaded\r\n})(KvSceneVisualizer);\r\n","import snakeCase from 'lodash/snakeCase';\r\nimport invert from 'lodash/invert';\r\n\r\nimport LayoutCommonNew from \"../../visComponents/layoutCommonNew\";\r\n\r\nimport Globals from \"./parts/globals\";\r\n\r\nimport {LayoutType, LayoutAbbreviation} from \"./constants\";\r\nimport zIndexes from \"./zIndex\";\r\nimport Other from \"./parts/other\";\r\nimport NonVisualizerSubPart from \"./subparts/nonVisualizerSubPart\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\nimport Background from \"./parts/background\";\r\nimport Appliance from \"./parts/appliance\";\r\nimport CountertopGroup from \"./parts/countertopGroup\";\r\nimport Cabinet from \"./parts/cabinet\";\r\nimport Floor from \"./parts/floor\";\r\nimport Walls from \"./parts/walls\";\r\nimport CenterIsland from \"./parts/centerIsland\";\r\nimport {AVAILABLE_VISUALIZER_TYPES} from \"../../../config\";\r\n\r\nexport class Layout extends LayoutCommonNew {\r\n\r\n /**\r\n * @type {int}\r\n */\r\n defaultType = LayoutType.Layout1;\r\n type = this.defaultType;\r\n scene = \"1\";\r\n visualizerType = AVAILABLE_VISUALIZER_TYPES.kvScene;\r\n localStorageKey = \"kvSceneState\";\r\n layersBinding = \"KitchenV5\";\r\n layoutNames = LayoutAbbreviation;\r\n layoutTypes = LayoutType;\r\n zIndexes = zIndexes.layouts;\r\n excludedPartIdsFromHover = [\"decor_\", \"background_bg\", \"walls_ceiling\", \"attachment\"];\r\n\r\n constructor(props) {\r\n super(props);\r\n this.parts[Background.id] = new Background();\r\n this.parts[CenterIsland.id] = new CenterIsland();\r\n this.parts[CountertopGroup.id] = new CountertopGroup();\r\n this.parts[Appliance.id] = new Appliance();\r\n this.parts[Cabinet.id] = new Cabinet();\r\n this.parts[Walls.id] = new Walls();\r\n this.parts[Floor.id] = new Floor();\r\n this.parts[Globals.id] = new Globals();\r\n this.parts[Other.id] = new Other();\r\n Object.values(this.parts).forEach(part => part.layout = this);\r\n }\r\n\r\n getCurrentLayoutName(type = this.type) {\r\n return invert(LayoutType)[type];\r\n }\r\n\r\n getCurrentLayoutAbbreviation() {\r\n return LayoutAbbreviation[this.getCurrentLayoutName()]\r\n }\r\n\r\n addNonVisualizerSubPart(featureGroupName){\r\n const otherParent = this.parts[Other.id];\r\n const partId = snakeCase(featureGroupName);\r\n let relatedItem = otherParent.relatedItems.find(relatedItem => relatedItem.partId === partId);\r\n if (!relatedItem) {\r\n relatedItem = new NonVisualizerSubPart(true, partId, featureGroupName);\r\n relatedItem.getParent = () => otherParent;\r\n otherParent.relatedItems.push(relatedItem);\r\n }\r\n return new DesignNavigationItem(relatedItem.partName, relatedItem)\r\n }\r\n\r\n}\r\n","import {IntermediatePart} from \"../intermediatePart\";\r\n\r\nexport default class NonVisualizerSubPart extends IntermediatePart {\r\n constructor(isChild, partId, partName) {\r\n super(isChild);\r\n this.partId = partId;\r\n this.visible = true;\r\n this.partName = partName;\r\n // this.allFeaturesReceived = true;\r\n }\r\n\r\n load(dbFeature) {\r\n return super.load_(dbFeature, new NonVisualizerSubPart(false, this.partId, dbFeature.groupName));\r\n }\r\n\r\n navigationSubItems(filters, searchText) {\r\n return this.navigationNoMetaSubItems(filters, searchText)\r\n }\r\n}\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport {reorder} from \"../../../misc/utils\";\r\nimport Analytics from \"../../../analytics\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport {BACKSPLASH_TYPES} from \"../../kvComponent/core/constants\";\r\nimport CenterIsland from \"../core/parts/centerIsland\";\r\nimport {getFeatureGroupName} from \"../../../misc/helpers\";\r\n\r\nclass ContextMenuSimple extends Component {\r\n\r\n static propTypes = {\r\n contextMenuOpen: PropTypes.string.isRequired,\r\n hoveredLayer: PropTypes.object,\r\n handleContextMenuClick: PropTypes.func,\r\n contextMenuPosition: PropTypes.object,\r\n contextMenuPonyWall: PropTypes.bool,\r\n renderGreenLayerByZindex: PropTypes.func,\r\n closeContextMenu: PropTypes.func,\r\n };\r\n\r\n state = {\r\n contextMenuButtons: []\r\n };\r\n\r\n componentDidMount() {\r\n this.setContextMenuButtons();\r\n if (this.props.closeContextMenu) {\r\n document.addEventListener('click', this.contextMenuBlur)\r\n }\r\n }\r\n\r\n contextMenuBlur = (e) => {\r\n if (!e.target.closest('.contextmenu-buttons')\r\n && !e.target.closest('.contextmenu-buttons__button')\r\n && !e.target.closest('.sprocket-container') && !e.target.closest('.canvas')) {\r\n this.props.closeContextMenu();\r\n }\r\n };\r\n\r\n componentWillUnmount() {\r\n if (this.props.closeContextMenu) {\r\n document.removeEventListener('click', this.contextMenuBlur)\r\n }\r\n }\r\n\r\n setContextMenuButtons() {\r\n const layout = getCurrentLayout();\r\n const contextMenuOpen = this.props.contextMenuOpen;\r\n if (contextMenuOpen === \"backsplash_custom\"\r\n || contextMenuOpen === \"backsplash_custom_left\"\r\n || contextMenuOpen === \"backsplash_custom_right\"\r\n || contextMenuOpen === \"right_wall_custom\"\r\n || contextMenuOpen === \"left_wall_custom\") {\r\n this.setBacksplashButtons();\r\n return\r\n }\r\n\r\n const hoveredParent = layout.designNavigationItems().find(navItem => {\r\n return navItem.text === contextMenuOpen\r\n });\r\n\r\n let relatedItems = hoveredParent.part.relatedItems;\r\n\r\n const clickedItem = relatedItems.find((item) => {\r\n return item.activeFeature && (item.partId === this.props.hoveredLayer.partId)\r\n });\r\n\r\n let itemsToRender = this.getItemsToRender(hoveredParent);\r\n\r\n // console.log('clickedItem', clickedItem);\r\n // console.log('relatedItems', relatedItems);\r\n // console.log('itemsToRender', itemsToRender);\r\n\r\n const clickedItemIndex = itemsToRender.findIndex(item => item.text === clickedItem.partName);\r\n if (clickedItemIndex > 0) {\r\n itemsToRender = reorder(itemsToRender, clickedItemIndex, 0); // swap items in array start\r\n }\r\n\r\n itemsToRender = itemsToRender.map(item => {\r\n if (item.text === CenterIsland.id) {\r\n // item.subMenuText = \"Countertop\";\r\n item.bgImageText = \"Countertop\";\r\n }\r\n return item\r\n });\r\n\r\n this.setState({\r\n contextMenuButtons: itemsToRender\r\n })\r\n }\r\n\r\n getItemsToRender = (hoveredParent) => {\r\n let itemsToRender = hoveredParent.part.subParts();\r\n let availablePartIds = [];\r\n switch (this.props.contextMenuOpen) {\r\n case CenterIsland.id:\r\n availablePartIds = [\"center_island_sink\", \"center_island_faucet\", \"center_island_countertop\",\r\n \"center_island_stovetop\", \"center_island_range\", \"center_island_edge\"];\r\n break;\r\n case \"Countertop\":\r\n availablePartIds = [\"countertop\", \"faucet\", \"sink\", \"edge_profile\"];\r\n break;\r\n case \"Walls\":\r\n availablePartIds = [\"right_wall\", \"backsplash\"];\r\n break;\r\n default:\r\n break;\r\n }\r\n return itemsToRender.filter(menuButton => {\r\n if ((document.kvConfig.visualizerType === \"kvScene\") && (menuButton.part.partId === \"center_island_edge\")) {\r\n const layout = getCurrentLayout();\r\n if (layout.type === 3) {\r\n return false\r\n }\r\n }\r\n if ((document.kvConfig.visualizerType === \"kvScene\") && (menuButton.part.partId === \"center_island_stovetop\")) {\r\n const layout = getCurrentLayout();\r\n if (layout.type === 6) {\r\n return false\r\n }\r\n }\r\n // return availablePartIds.includes(menuButton.part.partId) && hoveredParent.part.layout.hasNavItemsLength(menuButton)\r\n return availablePartIds.includes(menuButton.part.partId)\r\n });\r\n };\r\n\r\n getBackSplashButtons = () => {\r\n return BACKSPLASH_TYPES.map(bType => {\r\n const button = {\r\n text: bType,\r\n };\r\n switch (bType) {\r\n case \"4in\":\r\n button.subMenuText = \"visualizer.kitchen.contextmenu.backsplash.4in\"\r\n break;\r\n case \"6in\":\r\n button.subMenuText = \"visualizer.kitchen.contextmenu.backsplash.6in\"\r\n break;\r\n case \"Full\":\r\n button.subMenuText = \"visualizer.kitchen.contextmenu.backsplash.18in\"\r\n break;\r\n }\r\n return button\r\n })\r\n };\r\n\r\n setBacksplashButtons = () => {\r\n const layout = getCurrentLayout();\r\n const hoveredParent = layout.designNavigationItems().find(navItem => {\r\n return navItem.text === \"Walls\"\r\n });\r\n const subParts = hoveredParent.part.subParts();\r\n\r\n let contextMenuButtons = [];\r\n const backSplashButtons = this.getBackSplashButtons();\r\n const rightWall = subParts.find(menuButton => menuButton.part.partId === \"right_wall\");\r\n const leftWall = subParts.find(menuButton => menuButton.part.partId === \"left_wall\");\r\n if (rightWall) {\r\n rightWall.subMenuParent = \"Walls\";\r\n }\r\n if (leftWall) {\r\n leftWall.subMenuParent = \"Walls\";\r\n }\r\n switch (this.props.contextMenuOpen) {\r\n case \"right_wall_custom\": {\r\n contextMenuButtons = rightWall ? [rightWall, ...backSplashButtons] : backSplashButtons;\r\n break;\r\n }\r\n case \"left_wall_custom\": {\r\n contextMenuButtons = leftWall ? [leftWall, ...backSplashButtons] : backSplashButtons;\r\n break;\r\n }\r\n case \"backsplash_custom_left\": {\r\n contextMenuButtons = [...backSplashButtons, leftWall];\r\n break;\r\n }\r\n case \"backsplash_custom_right\": {\r\n contextMenuButtons = [...backSplashButtons, rightWall];\r\n break;\r\n }\r\n case \"backsplash_custom\": {\r\n contextMenuButtons = backSplashButtons; // just in case, we should not have these cases\r\n break;\r\n }\r\n }\r\n this.setState({\r\n contextMenuButtons\r\n })\r\n };\r\n\r\n handleContextMenuHover = () => {\r\n //TODO[Artem] add here rendering green zones on hover\r\n };\r\n\r\n render() {\r\n\r\n let contextMenuStyles = this.props.contextMenuPosition || {};\r\n if (this.state.contextMenuButtons.length <= 4) {\r\n contextMenuStyles = Object.assign({}, contextMenuStyles, {maxWidth:\"210px\"} )\r\n }\r\n\r\n const {intl, fabricatorData} = this.props;\r\n\r\n return (\r\n
    \r\n
    \r\n {this.state.contextMenuButtons.map((menuItem) => {\r\n if (!menuItem) {\r\n return null\r\n }\r\n return (\r\n \r\n )\r\n })}\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n fabricatorData: store.fabricatorState,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(ContextMenuSimple)\r\n)\r\n","import React, {Fragment} from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport invert from \"lodash/invert\";\r\n\r\nimport {loaderEnable} from \"../ui/loaderView\";\r\nimport {\r\n toggleUserPopup, setCanvasId, setLayoutDataParts, setDefaultSelectionGroup, loadFilters, setCameFromPage,\r\n toggleBathroomVisualizerOpen, toggleSelectionFeatureInfo, changeMessageBoxState,\r\n addVisualizersLoaded } from \"../../actions/actionFunctions\";\r\nimport {\r\n getBathroomVisualizerData,\r\n getBvGroups,\r\n getQtCategories,\r\n getNavigationButtons\r\n} from \"../../api/server-api\";\r\nimport ImageCanvasCommon from \"../visComponents/imageCanvasCommon\";\r\nimport {Layout} from \"./core/layout\";\r\nimport DesktopNavigation from \"./navigation/desktopNavigation\";\r\nimport MobileNavigation from \"./navigation/mobileNavigation\";\r\nimport MainButtons from \"../common/mainButtons\";\r\nimport DemoPoints from \"../common/demoPoints/demoPoints\";\r\nimport MessageBox from \"../popups/messageBox\";\r\n\r\nimport Visualizer from \"../visComponents/visualizer\";\r\nimport VisualizerTutorial from \"../tutorials/visualizerTutorial\";\r\nimport {showVisualizerTutorial} from \"../../actions/tutorialFunctions\";\r\nimport Copyright from \"../ui/copyright\";\r\nimport {LayoutType} from \"./core/constants\";\r\nimport {IS_QKB_UI} from \"../../config\";\r\n\r\nexport const layout = new Layout();\r\n\r\nclass BvSceneVisualizer extends Visualizer {\r\n\r\n static displayName = 'BvSceneVisualizer';\r\n\r\n constructor(props) {\r\n super(props);\r\n this.layout = layout;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.visualizersLoaded.includes(this.layout.visualizerType)) {\r\n this.setSubscribers();\r\n return false\r\n }\r\n loaderEnable();\r\n Promise.all([\r\n getBathroomVisualizerData(),\r\n getQtCategories(this.layout.getCurrentLayoutAbbreviation())\r\n ]).then(baseResponse => {\r\n Promise.all([\r\n Promise.resolve(baseResponse[0]),\r\n getBvGroups(),\r\n Promise.resolve(baseResponse[1]),\r\n ])\r\n .then((allResponse) => {\r\n const mainResponse = allResponse[0];\r\n const bvGroupsResponse = allResponse[1].data;\r\n const qtCategories = allResponse[2];\r\n this.layout.loadNewFeatures(mainResponse); // 1) set default (placeholders)\r\n this.layout.setGroupsItemsCount(bvGroupsResponse); // should be loaded before & after all features are received\r\n return this.setVisualizerInfo(mainResponse, bvGroupsResponse, qtCategories, invert(LayoutType));\r\n })\r\n .then(this.checkShareUrl)\r\n .then(this.onBvLoad)\r\n .then(this.finishLoading);\r\n });\r\n\r\n this.setSubscribers();\r\n getNavigationButtons();\r\n }\r\n\r\n render() {\r\n\r\n if (!IS_QKB_UI) {\r\n return null\r\n }\r\n\r\n const showPlaceHolders = document.bvConfig ? document.bvConfig.showPlaceholders : false;\r\n const fabricatorSettings = this.props.fabricatorSettings;\r\n const layers = this.layout.getLayers(showPlaceHolders);\r\n const layoutType = this.layout.getCurrentLayoutName();\r\n const isMobile = this.props.windowWidth < 991;\r\n const showTutorial = this.checkToShowTutorial();\r\n\r\n return (\r\n
    \r\n
    \r\n {this.props.bvOpened || this.props.bvVisited ? (\r\n \r\n this.imageCanvas = node}\r\n layoutType={layoutType}\r\n layout={this.layout}\r\n width={this.props.canvasDimensions.width}\r\n height={this.props.canvasDimensions.height}\r\n useMouseHovering={this.props.useMouseHovering}\r\n useTouchZoom={this.props.useTouchZoom}\r\n />\r\n \r\n \r\n ) : null}\r\n \r\n {!this.state.demoPointClicked && this.props.canvasId ? (\r\n \r\n ) : null}\r\n
    \r\n {(this.layout.initialized && this.props.bvVisited) ? ( // keep navigation opened if someone got to QT and back\r\n isMobile ? (\r\n \r\n ) : (\r\n this.navBar = node}\r\n refreshCB={this.handleRefresh}\r\n setHoveredLayer={this.setHoveredLayer}\r\n canvasId={this.state.canvasId}\r\n renderGreenLayerByZindex={this.renderGreenLayerByZindex}\r\n toggleUserPopup={this.props.toggleUserPopup}\r\n changeMessageBoxState={this.changeMessageBoxState}\r\n setActiveFeature={this.setActiveFeature}\r\n activeFeature={this.state.activeFeature}\r\n fabricatorSettings={fabricatorSettings}\r\n setDemoPointClicked={this.setDemoPointClicked}\r\n />\r\n )\r\n ) : null}\r\n {this.props.cookieAccepted ? : null}\r\n {showTutorial ? : null}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {cookieAccepted, windowWidth, visualizersLoaded} = store.serverState;\r\n const {bvOpened, bvVisited, canvasId, showRestorePopup, canvasDimensions, canvasCount} = store.bathroomVisualizerState;\r\n const {mobileNav, desktopNavigationOpened, activeNavigationParentName, activeNavigationChildName} = store.navigationState;\r\n const {isPhoneNumberValidated, userIsLoggedIn} = store.userState;\r\n const {visualizerTutorialIsOpened, visualizerTutorialFinished} = store.tutorialState;\r\n const {initialFlowRoomLayout, initialFlowRoom, initialFlowStep} = store.initialFlowState;\r\n return {\r\n bvOpened,\r\n bvVisited,\r\n mobileNav,\r\n isPhoneNumberValidated,\r\n userIsLoggedIn,\r\n windowWidth,\r\n canvasId,\r\n fabricatorSettings: store.fabricatorState.settings,\r\n desktopNavigationOpened,\r\n activeNavigationParentName,\r\n activeNavigationChildName,\r\n showRestorePopup,\r\n visualizerTutorialIsOpened,\r\n visualizerTutorialFinished,\r\n initialFlowRoomLayout,\r\n initialFlowRoom,\r\n initialFlowStep,\r\n cookieAccepted,\r\n canvasDimensions,\r\n visualizersLoaded,\r\n canvasCount\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n setCameFromPage,\r\n toggleBathroomVisualizerOpen,\r\n setDefaultSelectionGroup,\r\n setLayoutDataParts,\r\n toggleUserPopup,\r\n setCanvasId,\r\n loadFilters,\r\n toggleSelectionFeatureInfo,\r\n changeMessageBoxState,\r\n showVisualizerTutorial,\r\n addVisualizersLoaded\r\n})(BvSceneVisualizer);\r\n","import {IntermediatePart} from \"../intermediatePart\";\r\n\r\nexport default class NonVisualizerSubPart extends IntermediatePart {\r\n constructor(isChild, partId, partName) {\r\n super(isChild);\r\n this.partId = partId;\r\n this.visible = true;\r\n this.partName = partName;\r\n // this.allFeaturesReceived = true;\r\n }\r\n\r\n load(dbFeature) {\r\n return super.load_(dbFeature, new NonVisualizerSubPart(false, this.partId, dbFeature.groupName));\r\n }\r\n\r\n navigationSubItems(filters, searchText) {\r\n return this.navigationNoMetaSubItems(filters, searchText)\r\n }\r\n}\r\n","import {Part} from \"../part\";\r\nimport {wallsThumbnail} from \"../../../bvComponent/core/assets\";\r\nimport {PartMenuType} from \"../../../visComponents/constants\";\r\nimport DesignNavigationItem from \"../../../visComponents/designNavigationItem\";\r\n\r\nimport store from \"../../../../store\";\r\nimport LeftWall from \"../subparts/walls/leftWall\";\r\nimport RightWall from \"../subparts/walls/rightWall\";\r\nimport CenterWall from \"../subparts/walls/centerWall\";\r\nimport CeilingPanels from \"../subparts/walls/ceilingPanels\";\r\n\r\nexport default class Walls extends Part {\r\n static id = 'Walls';\r\n constructor() {\r\n super(true, false, PartMenuType.Complex);\r\n\r\n this.menuType = PartMenuType.Complex;\r\n this.partName = 'Walls';\r\n this.translateId = \"visualizer.bathroom.walls\";\r\n this.partThumbnail = wallsThumbnail;\r\n\r\n // related items\r\n this.leftWall = null;\r\n this.rightWall = null;\r\n this.centerWall = null;\r\n this.popoutWall = null;\r\n this.ceiling = null;\r\n this.ceilingPanels = null;\r\n\r\n this.allWallsApplied = true;\r\n }\r\n\r\n load(dbFeature) {\r\n let relatedItemName = \"\",\r\n RelatedItemClass = null;\r\n switch (dbFeature.groupName) {\r\n case \"Left Wall\":\r\n relatedItemName = \"leftWall\";\r\n RelatedItemClass = LeftWall;\r\n break;\r\n case \"Right Wall\":\r\n relatedItemName = \"rightWall\";\r\n RelatedItemClass = RightWall;\r\n break;\r\n case \"Center Wall\":\r\n relatedItemName = \"centerWall\";\r\n RelatedItemClass = CenterWall;\r\n break;\r\n case \"Ceiling Panels\":\r\n relatedItemName = \"ceilingPanels\";\r\n RelatedItemClass = CeilingPanels;\r\n break;\r\n }\r\n if (relatedItemName) {\r\n if (!this[relatedItemName]) {\r\n this[relatedItemName] = new RelatedItemClass(true);\r\n if (relatedItemName !== \"shadows\") {\r\n this.relatedItems.push(this[relatedItemName]);\r\n }\r\n }\r\n if (!this.categoryEnabled) {\r\n this.categoryEnabled = true\r\n }\r\n this[relatedItemName].getParent = () => this;\r\n this[relatedItemName].load(dbFeature);\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n isSubTypeWithItems() {\r\n return false;\r\n }\r\n\r\n subParts(withHidden = true) {\r\n return this.relatedItems\r\n .filter(item => {\r\n if (item.partId === \"popout_wall\") {\r\n item.visible = item.getParent().layout.getCurrentLayoutAbbreviation().includes(\"P\")\r\n }\r\n return this.filterRelatedItem(item, withHidden)\r\n })\r\n .map(_ => new DesignNavigationItem(_.partName, _));\r\n }\r\n\r\n handleSubPartClick() {\r\n\r\n }\r\n\r\n recoverPrevioslySelected(activeRelatedPart) {\r\n const {activeQuoteIndex} = store.getState().quotesState;\r\n this.relatedItems.forEach(relatedItem => {\r\n if (relatedItem.partId !== activeRelatedPart.partId && relatedItem.activeFeatureBeforeAllWalls) {\r\n if (relatedItem.activeFeatureBeforeAllWalls === \"placeholder\") {\r\n relatedItem.placeholderChanged = false;\r\n relatedItem.firstClick[activeQuoteIndex] = false;\r\n } else if (!relatedItem.selectedByUser) {\r\n relatedItem.activeFeatureBeforeAllWalls.clickFromAllWalls();\r\n }\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Z from \"../core/zIndex\";\r\nimport {ShowerTubCombo} from \"../core/parts/showerTubCombo\";\r\nimport {Vanity} from \"../core/parts/vanity\";\r\nimport {Shower} from \"../core/parts/shower\";\r\nimport Walls from \"../core/parts/walls\";\r\nimport {VanityTypes, ShowerComboTubType} from \"../core/constants\";\r\nimport {getMetadataByDimensions, reorder} from \"../../../misc/utils\";\r\nimport Analytics from \"../../../analytics\";\r\n\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport {ShowerAccessories} from \"../core/parts/showerAccessories\";\r\n\r\nexport default class ContextMenu extends Component {\r\n\r\n static propTypes = {\r\n designNavigationItems: PropTypes.array,\r\n contextMenuOpen: PropTypes.string,\r\n hoveredLayer: PropTypes.object,\r\n handleContextMenuClick: PropTypes.func,\r\n contextMenuPosition: PropTypes.object,\r\n contextMenuPonyWall: PropTypes.bool,\r\n renderGreenLayerByZindex: PropTypes.func,\r\n closeContextMenu: PropTypes.func,\r\n };\r\n\r\n state = {\r\n contextMenuButtons: []\r\n };\r\n\r\n componentDidMount() {\r\n this.setContextMenuButtons();\r\n if (this.props.closeContextMenu) {\r\n document.addEventListener('click', this.contextMenuBlur)\r\n }\r\n }\r\n\r\n contextMenuBlur = (e) => {\r\n if (!e.target.closest('.contextmenu-buttons')\r\n && !e.target.closest('.contextmenu-buttons__button')\r\n && !e.target.closest('.sprocket-container') && !e.target.closest('.canvas')) {\r\n this.props.closeContextMenu();\r\n }\r\n };\r\n\r\n componentWillUnmount() {\r\n if (this.props.closeContextMenu) {\r\n document.removeEventListener('click', this.contextMenuBlur)\r\n }\r\n }\r\n\r\n getShowerBodySelectionButtons = () => {\r\n const shower = this.state.designNavigationItems.find(desItem => desItem.text === \"Shower\");\r\n const currentShowerSize = shower.part.showerSize();\r\n const showerBody = shower && shower.part.showerBody;\r\n return (showerBody && showerBody.features.length) ? showerBody.features.filter((showerBodyFeature) => {\r\n return showerBodyFeature.partName.includes(currentShowerSize);\r\n }) : [1]\r\n };\r\n\r\n setShowerBodySelectionButtons = () => {\r\n const layout = getCurrentLayout();\r\n const shower = layout.parts[Shower.id];\r\n const vanity = layout.parts[Vanity.id];\r\n const counterTopSize = vanity.counterTopSize();\r\n const showerTubCombo = layout.parts[ShowerTubCombo.id];\r\n\r\n const showerSubParts = shower.subParts();\r\n const showerBody = showerSubParts.find((menuItem) => {\r\n return menuItem.part.partId === \"shower_body\"\r\n });\r\n const currentShowerSize = shower.showerSize();\r\n let contextMenuButtons = [];\r\n\r\n if (showerTubCombo.showerTubComboIsActive) {\r\n const showerTubComboSubParts = showerTubCombo.subParts();\r\n const wallConfiguration = showerTubComboSubParts.find((menuItem) => {\r\n return menuItem.part.partId === \"wall_configuration\"\r\n });\r\n showerTubCombo.wallConfiguration.features.forEach((wallConfigurationFeature) => {\r\n contextMenuButtons.push(Object.assign({}, wallConfiguration, {\r\n subMenuParent: \"Walls\",\r\n subMenuText: wallConfigurationFeature.partName,\r\n bgImageText: wallConfigurationFeature.partName,\r\n clickFeature: true,\r\n text: wallConfigurationFeature.partName.includes(\"Pony\") ? \"Pony Wall\" : \"Left Shower Wall\"\r\n }))\r\n })\r\n } else if (showerBody && showerBody.part.features.length) {\r\n showerBody.part.features.forEach((showerBodyFeature) => {\r\n if (showerBodyFeature.partName.includes(currentShowerSize)) {\r\n // console.log('showerBodyFeature.partName', showerBodyFeature.partName);\r\n if (!(counterTopSize === \"72in\" && layout.type === 1 && showerBodyFeature.partName.includes(\"15X4\"))) {\r\n contextMenuButtons.push(Object.assign({}, showerBody, {\r\n subMenuParent: \"Walls\",\r\n subMenuText: showerBodyFeature.partName,\r\n bgImageText: showerBodyFeature.partName,\r\n clickFeature: true,\r\n text: showerBodyFeature.partName.includes(\"Pony\") ? \"Pony Wall\" : \"Left Shower Wall\"\r\n }))\r\n }\r\n }\r\n })\r\n }\r\n\r\n const clickedItemIndex = contextMenuButtons.findIndex(item => {\r\n return showerTubCombo.showerTubComboIsActive\r\n ? item.subMenuText === showerTubCombo.wallConfiguration.activeFeature.partName\r\n : item.subMenuText === showerBody.part.activeFeature.partName\r\n });\r\n\r\n if (clickedItemIndex > 0) {\r\n contextMenuButtons = reorder(contextMenuButtons, clickedItemIndex, 0); // swap items in array start\r\n }\r\n\r\n this.setState({\r\n contextMenuButtons\r\n })\r\n };\r\n\r\n setWallBButtons = () => {\r\n const layout = getCurrentLayout();\r\n let contextMenuButtons = [];\r\n\r\n const wallParent = layout.parts[Walls.id];\r\n const wallParts = wallParent.subParts().filter((menuItem) => menuItem.part.partId === \"right_wall\");\r\n wallParts.forEach((wallPart) => {\r\n contextMenuButtons.push(Object.assign({}, wallPart, {\r\n subMenuParent: \"Walls\",\r\n subMenuText: wallPart.part.partName,\r\n bgImageText: wallPart.part.partName,\r\n text: wallPart.text\r\n }));\r\n });\r\n\r\n const vanity = layout.parts[Vanity.id];\r\n const vanityBacksplash = vanity.subParts().find((menuItem) => {\r\n return menuItem.part.partId === \"vanity_backsplash\"\r\n });\r\n if (vanityBacksplash) {\r\n contextMenuButtons.push(Object.assign({}, vanityBacksplash, {\r\n subMenuParent: \"Vanity\",\r\n subMenuText: vanityBacksplash.part.partName,\r\n bgImageText: vanityBacksplash.part.partName,\r\n text: vanityBacksplash.text\r\n }));\r\n }\r\n\r\n let zIndexToFind = this.props.hoveredLayer.zIndex;\r\n\r\n const clickedItem = contextMenuButtons.find(item => {\r\n return item.part.activeFeature && item.part.activeFeature.layer && item.part.activeFeature.layer.zIndex === zIndexToFind;\r\n });\r\n if (clickedItem && clickedItem.part && clickedItem.part.partId === \"vanity_backsplash\") {\r\n const vanityFaucet = vanity.subParts().find((menuItem) => {\r\n return menuItem.part.partId === \"vanity_faucet\"\r\n });\r\n if (vanityFaucet) {\r\n contextMenuButtons.push(Object.assign({}, vanityFaucet, {\r\n subMenuParent: \"Vanity\",\r\n subMenuText: vanityFaucet.part.partName,\r\n bgImageText: vanityFaucet.part.partName,\r\n text: vanityFaucet.text\r\n }));\r\n }\r\n }\r\n\r\n const clickedItemIndex = contextMenuButtons.findIndex(item => {\r\n return item.part.activeFeature && item.part.activeFeature.layer && item.part.activeFeature.layer.zIndex === zIndexToFind;\r\n });\r\n\r\n if (clickedItemIndex > 0) {\r\n contextMenuButtons = reorder(contextMenuButtons, clickedItemIndex, 0); // swap items in array start\r\n }\r\n\r\n this.setState({\r\n contextMenuButtons\r\n })\r\n };\r\n\r\n setContextMenuButtons() {\r\n\r\n const layout = getCurrentLayout();\r\n\r\n if (this.props.contextMenuOpen === \"Shower Body Selection\") {\r\n this.setShowerBodySelectionButtons();\r\n return\r\n } else if (this.props.contextMenuOpen === \"wall_b_custom\") {\r\n this.setWallBButtons();\r\n return\r\n }\r\n\r\n const hoveredParent = this.props.designNavigationItems.find(navItem => {\r\n return navItem.text === this.props.contextMenuOpen\r\n });\r\n\r\n let relatedItems = hoveredParent.part.relatedItems;\r\n if (this.props.contextMenuOpen === \"Shower Tub Combo\") {\r\n relatedItems = [...hoveredParent.part.relatedItems, ...hoveredParent.part.getShowerRelatedItems()]\r\n }\r\n\r\n let zIndexToFind = this.props.hoveredLayer.zIndex;\r\n if (this.props.hoveredLayer.zIndex === Z.layouts[layout.getCurrentLayoutName()].Shower.Wall2) {\r\n zIndexToFind = Z.layouts[layout.getCurrentLayoutName()].Shower.Wall\r\n }\r\n if (\r\n this.props.hoveredLayer.zIndex === Z.layouts[layout.getCurrentLayoutName()].Shower.WallAccent2\r\n ) {\r\n zIndexToFind = Z.layouts[layout.getCurrentLayoutName()].Shower.WallAccent\r\n }\r\n const clickedItem = relatedItems.find((item) => {\r\n return (item.activeFeature && item.activeFeature.layer.zIndex === zIndexToFind)\r\n || (item.layerPositions && Object.keys(item.layerPositions).some(key => {\r\n return item.layerPositions[key] && item.layerPositions[key].layer && (item.layerPositions[key].layer.zIndex === zIndexToFind)\r\n }))\r\n });\r\n\r\n let itemsToRender = this.getItemsToRender(hoveredParent);\r\n\r\n // console.log('clickedItem', clickedItem);\r\n // console.log('relatedItems', relatedItems);\r\n // console.log('itemsToRender', itemsToRender);\r\n\r\n const clickedItemIndex = itemsToRender.findIndex(item => item.text === clickedItem.partName);\r\n if (clickedItemIndex > 0) {\r\n itemsToRender = reorder(itemsToRender, clickedItemIndex, 0); // swap items in array start\r\n }\r\n\r\n this.setState({\r\n contextMenuButtons: itemsToRender\r\n })\r\n }\r\n\r\n getItemsToRender = (hoveredParent) => {\r\n const layout = getCurrentLayout();\r\n let itemsToRender = hoveredParent.part.subParts().filter(subPart => layout.designNavigationItems(subPart).length);\r\n\r\n if ((this.props.contextMenuOpen === \"Shower\" || this.props.contextMenuOpen === \"Shower Tub Combo\") && hoveredParent.text !== \"Shower Accessories\") {\r\n itemsToRender = itemsToRender.filter(menuButton => {\r\n return this.props.contextMenuPonyWall\r\n ? menuButton.part.isPonyWallPart && menuButton.part.partId !== \"pony_wall\"\r\n : !menuButton.part.isPonyWallPart\r\n });\r\n const accessoriesParent = layout.parts[ShowerAccessories.id];\r\n if (accessoriesParent && accessoriesParent.categoryEnabled && !this.props.contextMenuPonyWall\r\n && accessoriesParent.subParts().some(subPart => layout.designNavigationItems(subPart).length)) {\r\n itemsToRender = itemsToRender.filter(menuButton => menuButton.part.partId !== \"shower_wall_accent\");\r\n itemsToRender.push({\r\n text: \"Accessories\",\r\n part: {},\r\n subNav: true\r\n })\r\n }\r\n itemsToRender = itemsToRender.filter(menuButton => menuButton.part.partId !== \"shower_head\");\r\n if (layout.parts[ShowerTubCombo.id] && !this.props.contextMenuPonyWall) {\r\n itemsToRender.push({\r\n text: \"Configure Layout\",\r\n part: {},\r\n subNav: true\r\n })\r\n }\r\n }\r\n\r\n if (this.props.contextMenuOpen === \"Shower\") {\r\n itemsToRender = itemsToRender.filter(menuButton => menuButton.part.partId !== \"threshold\");\r\n }\r\n if (this.props.contextMenuOpen === \"Shower Tub Combo\") {\r\n itemsToRender = this.removeNotUsedTubItemsFromContextMenu(itemsToRender, hoveredParent.part.bottomTub);\r\n }\r\n if (this.props.contextMenuOpen === \"Vanity\") {\r\n itemsToRender = itemsToRender.filter((itemToRender) => {\r\n return itemToRender.part.partId !== \"vanity_mirror\" && itemToRender.part.partId !== \"vanity_backsplash\";\r\n });\r\n }\r\n\r\n return itemsToRender\r\n };\r\n\r\n removeNotUsedTubItemsFromContextMenu = (itemsToRender, activeTub) => {\r\n return itemsToRender.filter((itemToRender) => {\r\n let keepThisItem = true;\r\n Object.keys(ShowerComboTubType).forEach((key) => {\r\n if (itemToRender.part.partId === ShowerComboTubType[key] && itemToRender.part.partId !== activeTub\r\n && itemToRender.part.partId !== ShowerComboTubType.replacement_tub\r\n && itemToRender.part.partId !== ShowerComboTubType.bathtub_liner\r\n ) {\r\n keepThisItem = false\r\n }\r\n });\r\n if (itemToRender.text === \"Wall Configuration\") {\r\n keepThisItem = false\r\n }\r\n return keepThisItem\r\n });\r\n };\r\n\r\n handleSubNavClick = (menuItem) => {\r\n const layout = getCurrentLayout();\r\n\r\n if (menuItem.text === \"Accessories\") {\r\n const hoveredParent = this.props.designNavigationItems.find(navItem => {\r\n return navItem.text === \"Shower Accessories\"\r\n });\r\n this.setState({\r\n contextMenuButtons: this.getItemsToRender(hoveredParent)\r\n .map(button => {\r\n button.subMenuParent = \"Shower Accessories\";\r\n return button\r\n })\r\n });\r\n return false\r\n }\r\n\r\n const showerSubParts = layout.parts[Shower.id].subParts();\r\n\r\n const shower = showerSubParts.find((menuItem) => {\r\n return menuItem.part.partId === \"shower_body\"\r\n });\r\n shower.subMenuText = \"Shower\";\r\n shower.subMenuParent = \"Shower\";\r\n\r\n const showerTubCombo = layout.parts[ShowerTubCombo.id];\r\n const showerTubComboSubParts = showerTubCombo.subParts();\r\n\r\n const activeTubMenuItems = showerTubComboSubParts.filter(menuItem => menuItem.part.bottomTubId);\r\n activeTubMenuItems.forEach(menuItem => menuItem.subMenuParent = \"Shower Tub Combo\");\r\n\r\n const wallConfiguration = showerTubComboSubParts.find((menuItem) => {\r\n return menuItem.part.partId === \"wall_configuration\"\r\n });\r\n wallConfiguration.subMenuText = \"Shower Tub Combo\";\r\n wallConfiguration.subMenuParent = \"Shower Tub Combo\";\r\n\r\n this.setState({\r\n contextMenuButtons: [\r\n shower,\r\n wallConfiguration,\r\n ...activeTubMenuItems,\r\n ]\r\n })\r\n };\r\n\r\n handleContextMenuHover = (menuItem) => {\r\n const layout = getCurrentLayout();\r\n const hoveredButton = menuItem.text === \"Countertop\" ? \"CounterTop\" : menuItem.text;\r\n const hoveredParent = menuItem.subMenuParent || this.props.contextMenuOpen;\r\n\r\n const layoutType = layout.getCurrentLayoutName();\r\n\r\n // console.log('hoveredButton', hoveredButton);\r\n // console.log('hoveredParent', hoveredParent);\r\n\r\n if (hoveredButton && hoveredParent) {\r\n\r\n let hoveredZindex = \"\";\r\n\r\n if (hoveredParent === \"Shower\") {\r\n const shower = layout.parts.Shower;\r\n switch (hoveredButton) {\r\n case \"Shower Walls\":\r\n hoveredZindex = Z.layouts[layoutType].Shower.Wall;\r\n break;\r\n case \"Shower Body\":\r\n if (shower.showerDoor && shower.showerDoor.features.length) {\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent].ShowerDoor;\r\n } else {\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent].Glass;\r\n }\r\n break;\r\n case \"Shower Door\":\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent].ShowerDoor;\r\n break;\r\n case \"Handle\":\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent].ShowerDoorHandle;\r\n break;\r\n case \"Shower Pan\":\r\n case \"Shower Pans\":\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent].ShowerPanCombo;\r\n break;\r\n case \"Shower Walls Accent\":\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent].WallAccent;\r\n break;\r\n case \"Pony Wall Glass\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].PonyWallGlass;\r\n break;\r\n case \"Pony Wall Cap\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].PonyWallCap;\r\n break;\r\n case \"Floor\":\r\n hoveredZindex = shower.showerFloorIsActive\r\n ? Z.layouts[layoutType][hoveredParent][hoveredButton]\r\n : Z.layouts[layoutType][hoveredParent].ShowerPanCombo;\r\n break;\r\n default:\r\n hoveredZindex = Z.layouts[layoutType][hoveredParent][hoveredButton];\r\n break;\r\n }\r\n } else if (hoveredParent === \"Shower Tub Combo\") {\r\n switch (hoveredButton) {\r\n case \"Shower Door\":\r\n hoveredZindex = Z.layouts[layoutType].Shower.ShowerDoor;\r\n break;\r\n case \"Shower Walls\":\r\n hoveredZindex = Z.layouts[layoutType].Shower.Wall;\r\n break;\r\n case \"Shower Walls Accent\":\r\n hoveredZindex = Z.layouts[layoutType].Shower.WallAccent;\r\n break;\r\n case \"Fixture\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].Fixture;\r\n break;\r\n case \"Handle\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].ShowerDoorHandle;\r\n break;\r\n case \"Wall Configuration\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].ShowerDoor;\r\n break;\r\n case \"Jetted Tub\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].TubCombo.JettedTub;\r\n break;\r\n case \"Tub Liner\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].TubCombo.Liner;\r\n break;\r\n case \"Walk In Tub\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].TubCombo.WalkInTub;\r\n break;\r\n case \"Replacement Tub\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].TubCombo.ReplacementTub;\r\n break;\r\n case \"Pony Wall Glass\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].PonyWallGlass;\r\n break;\r\n case \"Pony Wall Cap\":\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].PonyWallCap;\r\n break;\r\n default:\r\n hoveredZindex = Z.layouts[layoutType][\"Shower\"].TubCombo[hoveredButton.replace(/ /g, \"\")];\r\n break;\r\n }\r\n } else if (hoveredParent === \"Vanity\") { // Vanity\r\n if (layout.parts.Vanity.activeSubType_ === VanityTypes.Complete) {\r\n switch (hoveredButton) {\r\n case \"Vanity\":\r\n hoveredZindex = Z.layouts[layoutType].Vanity.Complete.Cabinet;\r\n break;\r\n case \"Accent Wall\":\r\n hoveredZindex = Z.layouts[layoutType].Wall_A_Accent_Mask;\r\n break;\r\n default:\r\n hoveredZindex = Z.layouts[layoutType].Vanity[hoveredButton]; // Mirror\r\n break;\r\n }\r\n } else {\r\n switch (hoveredButton) {\r\n case \"Accent Wall\":\r\n hoveredZindex = Z.layouts[layoutType].Wall_A_Accent_Mask;\r\n break;\r\n case \"Backsplash\":\r\n hoveredZindex = Z.layouts[layoutType].Vanity.VanityBacksplash;\r\n break;\r\n default:\r\n hoveredZindex = Z.layouts[layoutType].Vanity[hoveredButton];\r\n break;\r\n }\r\n }\r\n } else if (hoveredParent === \"Bathtub\") { // Bathtub\r\n if (hoveredButton === \"Bathtub\") {\r\n hoveredZindex = Z.layouts[layoutType].Bathtub.BathTubBody\r\n } else if (hoveredButton === \"Fixture\") {\r\n hoveredZindex = Z.layouts[layoutType].Bathtub.BathTubFixture\r\n } else {\r\n hoveredZindex = Z.layouts[layoutType].Bathtub[hoveredButton]\r\n }\r\n } else if (hoveredParent === \"Walls\") { // Bathtub\r\n switch (hoveredButton) {\r\n case \"Pony Wall\":\r\n hoveredZindex = Z.layouts[layoutType].Shower.PonyWall;\r\n break;\r\n case \"Left Shower Wall\": {\r\n const wallParent = layout.parts[hoveredParent];\r\n const activeShowerGroup = wallParent.getActiveShowerGroup();\r\n const showerDimensions = getMetadataByDimensions(activeShowerGroup.showerDimensions());\r\n hoveredZindex = showerDimensions === \"Half\"\r\n ? Z.layouts[layoutType].Shower.ExtrusionWallLeftHalfWall\r\n : Z.layouts[layoutType].Shower.ExtrusionWallLeft;\r\n break;\r\n }\r\n default:\r\n hoveredZindex = Z.layouts[layoutType].Vanity[hoveredButton];\r\n break;\r\n }\r\n }\r\n\r\n this.props.renderGreenLayerByZindex(hoveredZindex);\r\n }\r\n\r\n };\r\n\r\n render() {\r\n\r\n let contextMenuStyles = this.props.contextMenuPosition || {};\r\n if (this.state.contextMenuButtons.length === 4) {\r\n contextMenuStyles = Object.assign({}, contextMenuStyles, {maxWidth:\"210px\"} )\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {this.state.contextMenuButtons.map((menuItem) => {\r\n return menuItem ? (\r\n \r\n ) : null\r\n })}\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React, {Fragment} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport invert from \"lodash/invert\";\r\n\r\nimport {loaderEnable} from \"../ui/loaderView\";\r\nimport {\r\n toggleUserPopup, setCanvasId, setLayoutDataParts, setDefaultSelectionGroup, loadFilters, setCameFromPage,\r\n toggleBathroomVisualizerOpen, toggleSelectionFeatureInfo, changeMessageBoxState,\r\n addVisualizersLoaded, addToCart, setFirstLoadedPreset, updateCanvasCount\r\n} from \"../../actions/actionFunctions\";\r\nimport {getBathroomVisualizerData, getBvGroups} from \"../../api/server-api\";\r\nimport {Layout} from \"./core/layout\";\r\n\r\nimport Visualizer from \"../visComponents/visualizer\";\r\nimport {IS_QKB_UI} from \"../../config\";\r\nimport {LayoutType, LOCAL_STORAGE_KEYS} from \"./core/constants\";\r\nimport {setLocalStorageItem} from \"../../misc/storageFunctions\";\r\nimport {setLookOverlayOpened} from \"../../actions/lookFunctions\";\r\nimport {getPassedUserInfo, getSaveTempData} from \"../../api/look-api\";\r\nimport Misc from \"../../misc/misc\";\r\nimport ImageCanvasCommonNew from \"../visComponents/imageCanvasCommonNew\";\r\nimport Copyright from \"../ui/copyright\";\r\nimport MainButtons from \"../common/mainButtons\";\r\nimport MobileNavigation from \"./navigation/mobileNavigation\";\r\nimport DesktopNavigation from \"./navigation/desktopNavigation.js\";\r\nimport MessageBox from \"../popups/messageBox\";\r\nimport VisualizerTutorial from \"../tutorials/visualizerTutorial\";\r\nimport {loadAdditionalVisualizerGroups} from \"../../misc/loadVisualizer\";\r\nimport {showVisualizerTutorial} from \"../../actions/tutorialFunctions\";\r\n\r\nexport const layout = new Layout();\r\n\r\nclass LookVisualizer extends Visualizer {\r\n\r\n static displayName = 'BvLookVisualizer';\r\n\r\n constructor(props) {\r\n super(props);\r\n this.layout = layout;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.visualizersLoaded.includes(this.layout.visualizerType)) {\r\n this.setSubscribers();\r\n return false\r\n }\r\n if (!IS_QKB_UI) {\r\n this.props.toggleBathroomVisualizerOpen(true);\r\n }\r\n loaderEnable();\r\n Promise.all([\r\n getBathroomVisualizerData(),\r\n loadAdditionalVisualizerGroups(\"bvLook\"),\r\n this.getQtCategoriesCommon(),\r\n ]).then(baseResponse => {\r\n let otherData = [\r\n Promise.resolve(baseResponse[0]),\r\n Promise.resolve(baseResponse[1]),\r\n Promise.resolve(baseResponse[2]),\r\n getBvGroups(),\r\n ];\r\n const searchParams = new URLSearchParams(\r\n (window.location.search).replace(/amp;/g, \"\")\r\n || (window.location.hash).replace(/(.*)\\?/g, \"\")\r\n || \"\"\r\n );\r\n // console.log(\"searchParams\", searchParams.toString());\r\n if (searchParams && searchParams.get(\"userid\")) {\r\n otherData.push(getPassedUserInfo(searchParams))\r\n }\r\n if (searchParams && (searchParams.get(\"tempID\") || searchParams.get(\"TempID\"))) {\r\n otherData.push(getSaveTempData(searchParams.get(\"tempID\") || searchParams.get(\"TempID\")))\r\n }\r\n Promise.all(otherData)\r\n .then((allResponse) => {\r\n const mainResponse = allResponse[0];\r\n const decorAndAttachmentResponses = Array.isArray(allResponse[1]) ? allResponse[1] : [];\r\n const qtCategories = allResponse[2];\r\n const bvGroupsResponse = allResponse[3];\r\n const userDataResponse = allResponse[4];\r\n const savedTempData = JSON.parse(searchParams && searchParams.get(\"userid\") ? allResponse[5] || null : allResponse[4] || null);\r\n this.layout.loadNewFeatures(Object.assign({}, mainResponse, {\r\n features: [...mainResponse.features, ...decorAndAttachmentResponses]\r\n })); // 1) set default (placeholders)\r\n // this.layout.setGroupsItemsCount(mainResponse);\r\n let userIsLoggedIn = false;\r\n if (userDataResponse && userDataResponse.email) {\r\n userIsLoggedIn = true;\r\n this.needToSaveQuote = !document.kvConfig.jobId;\r\n console.log(\"userDataResponse\", userDataResponse);\r\n const updatedUserInfo = Misc.parseUserResponse(userDataResponse)\r\n setLocalStorageItem(LOCAL_STORAGE_KEYS.introVisited, true);\r\n\r\n this.props.toggleUserPopup({\r\n userPopupOpened: false,\r\n userIsLoggedIn: true,\r\n isPhoneNumberValidated: userDataResponse.isPhoneNumberValidated || !userDataResponse.pendingPhoneVerification,\r\n userInfo: updatedUserInfo,\r\n // email: userDataResponse.email,\r\n encodedUserId: userDataResponse.encodedUserId,\r\n // phoneNumber: userDataResponse.phoneNumber,\r\n // values: userDataResponse.values\r\n })\r\n }\r\n return this.setVisualizerInfo(\r\n mainResponse,\r\n bvGroupsResponse ? bvGroupsResponse.data : {},\r\n qtCategories,\r\n invert(LayoutType),\r\n userIsLoggedIn,\r\n savedTempData\r\n );\r\n })\r\n .then(this.checkShareUrl)\r\n .then(this.onBvLoad)\r\n .then(this.finishLoading);\r\n });\r\n\r\n this.setSubscribers();\r\n }\r\n\r\n render() {\r\n if (!IS_QKB_UI) {\r\n return null\r\n }\r\n\r\n const showPlaceHolders = document.bvConfig ? document.bvConfig.showPlaceholders : false;\r\n const fabricatorSettings = this.props.fabricatorSettings;\r\n const layers = this.layout.getLayers(showPlaceHolders);\r\n const layoutType = this.layout.getCurrentLayoutName();\r\n const layoutScene = this.layout.scene;\r\n const isMobile = this.props.windowWidth < 991;\r\n const showTutorial = this.checkToShowTutorial();\r\n\r\n return (\r\n
    \r\n
    \r\n {this.props.bvOpened || this.props.bvVisited ? (\r\n \r\n this.imageCanvas = node}\r\n layoutType={layoutType}\r\n layout={this.layout}\r\n layoutScene={layoutScene}\r\n width={this.props.canvasDimensions.width}\r\n height={this.props.canvasDimensions.height}\r\n useMouseHovering={this.props.useMouseHovering}\r\n useTouchZoom={this.props.useTouchZoom}\r\n />\r\n \r\n \r\n ) : null}\r\n \r\n
    \r\n {(this.layout.initialized && this.props.bvVisited) ? ( // keep navigation opened if someone got to QT and back\r\n isMobile ? (\r\n \r\n ) : (\r\n this.navBar = node}\r\n refreshCB={this.handleRefresh}\r\n setHoveredLayer={this.setHoveredLayer}\r\n canvasId={this.state.canvasId}\r\n renderGreenLayerByZindex={this.renderGreenLayerByZindex}\r\n toggleUserPopup={this.props.toggleUserPopup}\r\n changeMessageBoxState={this.changeMessageBoxState}\r\n setActiveFeature={this.setActiveFeature}\r\n activeFeature={this.state.activeFeature}\r\n fabricatorSettings={fabricatorSettings}\r\n setDemoPointClicked={this.setDemoPointClicked}\r\n />\r\n )\r\n ) : null}\r\n {this.props.cookieAccepted ? : null}\r\n {showTutorial ? : null}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {windowWidth, cookieAccepted, visualizersLoaded} = store.serverState;\r\n const {canvasId} = store.bathroomVisualizerState;\r\n const {isPhoneNumberValidated, userIsLoggedIn} = store.userState;\r\n const {activePreset} = store.bathroomVisualizerState;\r\n\r\n if (!IS_QKB_UI) {\r\n return {\r\n isPhoneNumberValidated,\r\n userIsLoggedIn,\r\n windowWidth,\r\n canvasId,\r\n activePreset,\r\n fabricatorSettings: store.fabricatorState.settings,\r\n qtActiveCategory: store.qtState.qtActiveCategory,\r\n visualizersLoaded,\r\n };\r\n }\r\n\r\n const {bvOpened, bvVisited, showRestorePopup, canvasDimensions, canvasCount} = store.bathroomVisualizerState;\r\n const {mobileNav, desktopNavigationOpened, activeNavigationParentName, activeNavigationChildName} = store.navigationState;\r\n const {visualizerTutorialIsOpened, visualizerTutorialFinished} = store.tutorialState;\r\n const {initialFlowRoomLayout, initialFlowRoom, initialFlowStep} = store.initialFlowState;\r\n const {qtCategoriesRequested} = store.qtState;\r\n\r\n return {\r\n isPhoneNumberValidated,\r\n userIsLoggedIn,\r\n windowWidth,\r\n canvasId,\r\n activePreset,\r\n fabricatorSettings: store.fabricatorState.settings,\r\n qtActiveCategory: store.qtState.qtActiveCategory,\r\n //** qkb ui ** //\r\n bvOpened,\r\n bvVisited,\r\n mobileNav,\r\n desktopNavigationOpened,\r\n activeNavigationParentName,\r\n activeNavigationChildName,\r\n showRestorePopup,\r\n visualizerTutorialIsOpened,\r\n visualizerTutorialFinished,\r\n initialFlowRoomLayout,\r\n initialFlowRoom,\r\n initialFlowStep,\r\n cookieAccepted,\r\n canvasDimensions,\r\n visualizersLoaded,\r\n qtCategoriesRequested,\r\n canvasCount,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setCameFromPage,\r\n toggleBathroomVisualizerOpen,\r\n setDefaultSelectionGroup,\r\n setLayoutDataParts,\r\n toggleUserPopup,\r\n setCanvasId,\r\n loadFilters,\r\n toggleSelectionFeatureInfo,\r\n changeMessageBoxState,\r\n addVisualizersLoaded,\r\n addToCart,\r\n setLookOverlayOpened,\r\n setFirstLoadedPreset,\r\n updateCanvasCount,\r\n showVisualizerTutorial,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LookVisualizer)\r\n","import React, {useEffect, useRef, useState} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\r\nimport Grow from '@mui/material/Grow';\r\nimport Popper from '@mui/material/Popper';\r\n\r\nimport {setLookContextMenu} from \"../../../actions/lookFunctions\";\r\nimport {ALL_CONTEXT_MENU} from \"../core/constants\";\r\n\r\nimport {checkForContextMenuCommon} from \"../lookNavigation/lookFunctions\";\r\nimport ContextMenuQKBButtons from \"./contextMenuQKBButtons\";\r\n\r\n\r\nconst getContextMenuPosition = (contextMenu, position, isMobile) => {\r\n const {partId, layerPosition} = contextMenu;\r\n const {showButtons} = checkForContextMenuCommon(partId, layerPosition);\r\n\r\n let left = isMobile ? '50%' : position.x - 50;\r\n let top = isMobile ? '50%' : position.y - 50;\r\n let right = 'auto';\r\n\r\n const maxAllowedWidth = showButtons.length > 2 ? 300 : 210;\r\n\r\n let maxAllowedHeight = 110;\r\n if (showButtons.length > 6) {\r\n maxAllowedHeight = 330;\r\n } else if (showButtons.length >= 3) {\r\n maxAllowedHeight = 220;\r\n }\r\n if (!isMobile && (left > window.innerWidth - maxAllowedWidth)) {\r\n left = 'auto';\r\n right = 0\r\n }\r\n if (!isMobile && (top > window.innerHeight - maxAllowedHeight)) {\r\n let negativeMargin = 50;\r\n if (showButtons.length > 6) {\r\n negativeMargin = 250;\r\n } else if (showButtons.length >= 3) {\r\n negativeMargin = 150;\r\n }\r\n top = top - negativeMargin;\r\n }\r\n\r\n return {left, top, right}\r\n}\r\n\r\nconst ContextMenuQKB = (props) => {\r\n\r\n const {contextMenu, setLookContextMenu, isMobile, handleContextMenuClick, renderGreenLayerByZindex} = props;\r\n const {opened, position} = contextMenu;\r\n const [styles, setStyles] = useState({left: 0, top: 0, right: 0});\r\n const [buttons, setButtons] = useState([]);\r\n const anchorRef = useRef(null);\r\n\r\n const handleClose = (event) => {\r\n if (document.hoveredLayer && event.target.closest(\".canvas-el\") && ALL_CONTEXT_MENU.includes(document.hoveredLayer.partId)) {\r\n return\r\n }\r\n setLookContextMenu({\r\n opened: false,\r\n layerPosition: \"\",\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (!contextMenu.opened) {\r\n return null\r\n }\r\n setStyles(getContextMenuPosition(contextMenu, position, isMobile));\r\n const {showButtons} = checkForContextMenuCommon(contextMenu.partId, contextMenu.layerPosition);\r\n setButtons(showButtons);\r\n }, [contextMenu, position, isMobile]);\r\n\r\n // console.log(\"styles\", styles);\r\n\r\n let contextStyles = styles;\r\n if (buttons.length <= 4) {\r\n contextStyles = Object.assign({}, styles, {maxWidth: \"210px\"});\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {({ TransitionProps }) => (\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\nContextMenuQKB.propTypes = {\r\n handleContextMenuClick: PropTypes.func,\r\n renderGreenLayerByZindex: PropTypes.func,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {contextMenu} = store.lookState;\r\n const {isMobile} = store.serverState;\r\n return {\r\n contextMenu,\r\n isMobile,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookContextMenu\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ContextMenuQKB)\r\n","import React, {Fragment} from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport {loaderEnable} from \"../ui/loaderView\";\r\nimport {\r\n toggleUserPopup, setCanvasId, setLayoutDataParts, setDefaultSelectionGroup, loadFilters, setCameFromPage,\r\n toggleBathroomVisualizerOpen, toggleSelectionFeatureInfo, changeMessageBoxState,\r\n addVisualizersLoaded } from \"../../actions/actionFunctions\";\r\nimport {\r\n getBathroomVisualizerData,\r\n getBvGroups,\r\n getQtCategories,\r\n getNavigationButtons\r\n} from \"../../api/server-api\";\r\nimport ImageCanvasCommonNew from \"../visComponents/imageCanvasCommonNew\";\r\nimport {Layout} from \"./core/layout\";\r\nimport DesktopNavigation from \"./navigation/desktopNavigation\";\r\nimport MobileNavigation from \"./navigation/mobileNavigation\";\r\nimport MainButtons from \"../common/mainButtons\";\r\nimport DemoPoints from \"../common/demoPoints/demoPoints\";\r\nimport MessageBox from \"../popups/messageBox\";\r\n\r\nimport Visualizer from \"../visComponents/visualizer\";\r\nimport VisualizerTutorial from \"../tutorials/visualizerTutorial\";\r\nimport {showVisualizerTutorial} from \"../../actions/tutorialFunctions\";\r\nimport Copyright from \"../ui/copyright\";\r\nimport {IS_QKB_UI} from \"../../config\";\r\n\r\nexport const layout = new Layout();\r\n\r\nclass FireplaceVisualizer extends Visualizer {\r\n\r\n static displayName = 'FireplaceVisualizer';\r\n\r\n constructor(props) {\r\n super(props);\r\n this.layout = layout;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.visualizersLoaded.includes(this.layout.visualizerType)) {\r\n this.setSubscribers();\r\n return false\r\n }\r\n loaderEnable();\r\n Promise.all([\r\n getBathroomVisualizerData(),\r\n getQtCategories(this.layout.getCurrentLayoutAbbreviation())\r\n ]).then(baseResponse => {\r\n Promise.all([\r\n Promise.resolve(baseResponse[0]),\r\n getBvGroups(),\r\n Promise.resolve(baseResponse[1])\r\n ])\r\n .then((allResponse) => {\r\n const mainResponse = allResponse[0];\r\n const kvGroupsResponse = allResponse[1].data;\r\n const qtCategories = allResponse[2];\r\n // 1) set default (placeholders)\r\n this.layout.loadNewFeatures(mainResponse);\r\n this.layout.setGroupsItemsCount(kvGroupsResponse); // should be loaded before & after all features are received\r\n return this.setVisualizerInfo(mainResponse, kvGroupsResponse, qtCategories);\r\n })\r\n .then(this.checkShareUrl)\r\n .then(this.onBvLoad)\r\n .then(this.finishLoading);\r\n });\r\n\r\n this.setSubscribers();\r\n getNavigationButtons(\"kv\");\r\n }\r\n\r\n render() {\r\n\r\n if (!IS_QKB_UI) {\r\n return null\r\n }\r\n\r\n const showPlaceHolders = document.bvConfig ? document.bvConfig.showPlaceholders : false;\r\n const fabricatorSettings = this.props.fabricatorSettings;\r\n const layers = this.layout.getLayers(showPlaceHolders);\r\n const layoutType = this.layout.getCurrentLayoutName();\r\n const isMobile = this.props.windowWidth < 991;\r\n const showTutorial = this.checkToShowTutorial();\r\n\r\n return (\r\n
    \r\n
    \r\n {this.props.bvOpened || this.props.bvVisited ? (\r\n \r\n this.imageCanvas = node}\r\n layoutType={layoutType}\r\n layout={this.layout}\r\n width={this.props.canvasDimensions.width}\r\n height={this.props.canvasDimensions.height}\r\n useMouseHovering={this.props.useMouseHovering}\r\n useTouchZoom={this.props.useTouchZoom}\r\n />\r\n \r\n \r\n ) : null}\r\n \r\n {!this.state.demoPointClicked && this.props.canvasId ? (\r\n \r\n ) : null}\r\n
    \r\n {(this.layout.initialized && this.props.bvVisited) ? ( // keep navigation opened if someone got to QT and back\r\n isMobile ? (\r\n \r\n ) : (\r\n this.navBar = node}\r\n refreshCB={this.handleRefresh}\r\n setHoveredLayer={this.setHoveredLayer}\r\n canvasId={this.state.canvasId}\r\n renderGreenLayerByZindex={this.renderGreenLayerByZindex}\r\n toggleUserPopup={this.props.toggleUserPopup}\r\n changeMessageBoxState={this.changeMessageBoxState}\r\n setActiveFeature={this.setActiveFeature}\r\n activeFeature={this.state.activeFeature}\r\n fabricatorSettings={fabricatorSettings}\r\n setDemoPointClicked={this.setDemoPointClicked}\r\n />\r\n )\r\n ) : null}\r\n {this.props.cookieAccepted ? : null}\r\n {showTutorial ? : null}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {cookieAccepted, windowWidth, visualizersLoaded} = store.serverState;\r\n const {bvOpened, bvVisited, canvasId, showRestorePopup, canvasDimensions, canvasCount} = store.bathroomVisualizerState;\r\n const {mobileNav, desktopNavigationOpened, activeNavigationParentName, activeNavigationChildName} = store.navigationState;\r\n const {isPhoneNumberValidated, userIsLoggedIn} = store.userState;\r\n const {visualizerTutorialIsOpened, visualizerTutorialFinished} = store.tutorialState;\r\n const {initialFlowRoomLayout, initialFlowRoom, initialFlowStep} = store.initialFlowState;\r\n return {\r\n bvOpened,\r\n bvVisited,\r\n mobileNav,\r\n isPhoneNumberValidated,\r\n userIsLoggedIn,\r\n windowWidth,\r\n canvasId,\r\n fabricatorSettings: store.fabricatorState.settings,\r\n desktopNavigationOpened,\r\n activeNavigationParentName,\r\n activeNavigationChildName,\r\n showRestorePopup,\r\n visualizerTutorialIsOpened,\r\n visualizerTutorialFinished,\r\n initialFlowRoomLayout,\r\n initialFlowRoom,\r\n initialFlowStep,\r\n cookieAccepted,\r\n canvasDimensions,\r\n visualizersLoaded,\r\n canvasCount\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n setCameFromPage,\r\n toggleBathroomVisualizerOpen,\r\n setDefaultSelectionGroup,\r\n setLayoutDataParts,\r\n toggleUserPopup,\r\n setCanvasId,\r\n loadFilters,\r\n toggleSelectionFeatureInfo,\r\n changeMessageBoxState,\r\n showVisualizerTutorial,\r\n addVisualizersLoaded\r\n})(FireplaceVisualizer);\r\n","import invert from 'lodash/invert';\r\nimport snakeCase from 'lodash/snakeCase';\r\n\r\nimport LayoutCommonNew from \"../../visComponents/layoutCommonNew\";\r\nimport {LayoutType, LayoutAbbreviation} from \"./constants\";\r\nimport zIndexes from \"./zIndex\";\r\nimport Other from \"./parts/other\";\r\nimport NonVisualizerSubPart from \"./subparts/nonVisualizerSubPart\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\nimport Background from \"./parts/background\";\r\nimport Floor from \"./parts/floor\";\r\nimport Walls from \"./parts/walls\";\r\nimport {AVAILABLE_VISUALIZER_TYPES} from \"../../../config\";\r\nimport FireplaceParent from \"./parts/fireplaceParent\";\r\nimport Globals from \"./parts/globals\";\r\nimport {hardCodeIsModerno} from \"../../../misc/fabricatorHardcode\";\r\n\r\nexport class Layout extends LayoutCommonNew {\r\n\r\n /**\r\n * @type {int}\r\n */\r\n defaultType = hardCodeIsModerno() ? LayoutType.Layout1 : LayoutType.Layout31;\r\n type = this.defaultType;\r\n scene = \"1\";\r\n visualizerType = AVAILABLE_VISUALIZER_TYPES.Fireplace;\r\n localStorageKey = \"FireplaceState\";\r\n layersBinding = \"Fireplace\";\r\n layoutNames = LayoutAbbreviation;\r\n layoutTypes = LayoutType;\r\n layoutThumbnails = {};\r\n zIndexes = zIndexes.layouts;\r\n excludedPartIdsFromHover = [\"decor_\", \"background_bg\", \"attachment\"];\r\n\r\n constructor(props) {\r\n super(props);\r\n this.parts[Globals.id] = new Globals();\r\n this.parts[Background.id] = new Background();\r\n this.parts[FireplaceParent.id] = new FireplaceParent();\r\n this.parts[Walls.id] = new Walls();\r\n this.parts[Floor.id] = new Floor();\r\n this.parts[Other.id] = new Other();\r\n Object.values(this.parts).forEach(part => part.layout = this);\r\n }\r\n\r\n getCurrentLayoutName(type = this.type) {\r\n return invert(LayoutType)[type];\r\n }\r\n\r\n getCurrentLayoutAbbreviation() {\r\n return LayoutAbbreviation[this.getCurrentLayoutName()]\r\n }\r\n\r\n addNonVisualizerSubPart(featureGroupName){\r\n const otherParent = this.parts[Other.id];\r\n const partId = snakeCase(featureGroupName);\r\n let relatedItem = otherParent.relatedItems.find(relatedItem => relatedItem.partId === partId);\r\n if (!relatedItem) {\r\n relatedItem = new NonVisualizerSubPart(true, partId, featureGroupName);\r\n relatedItem.getParent = () => otherParent;\r\n otherParent.relatedItems.push(relatedItem);\r\n }\r\n return new DesignNavigationItem(relatedItem.partName, relatedItem)\r\n }\r\n\r\n}\r\n","import {IntermediatePart} from \"../intermediatePart\";\r\n\r\nexport default class NonVisualizerSubPart extends IntermediatePart {\r\n constructor(isChild, partId, partName) {\r\n super(isChild);\r\n this.partId = partId;\r\n this.visible = true;\r\n this.partName = partName;\r\n // this.allFeaturesReceived = true;\r\n }\r\n\r\n load(dbFeature) {\r\n return super.load_(dbFeature, new NonVisualizerSubPart(false, this.partId, dbFeature.groupName));\r\n }\r\n\r\n navigationSubItems(filters, searchText) {\r\n return this.navigationNoMetaSubItems(filters, searchText)\r\n }\r\n}\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {reorder} from \"../../../misc/utils\";\r\nimport Analytics from \"../../../analytics\";\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport {BACKSPLASH_TYPES} from \"../../kvComponent/core/constants\";\r\n\r\nclass ContextMenuSimple extends Component {\r\n\r\n static propTypes = {\r\n contextMenuOpen: PropTypes.string.isRequired,\r\n hoveredLayer: PropTypes.object,\r\n handleContextMenuClick: PropTypes.func,\r\n contextMenuPosition: PropTypes.object,\r\n contextMenuPonyWall: PropTypes.bool,\r\n renderGreenLayerByZindex: PropTypes.func,\r\n closeContextMenu: PropTypes.func,\r\n };\r\n\r\n state = {\r\n contextMenuButtons: []\r\n };\r\n\r\n componentDidMount() {\r\n this.setContextMenuButtons();\r\n if (this.props.closeContextMenu) {\r\n document.addEventListener('click', this.contextMenuBlur)\r\n }\r\n }\r\n\r\n contextMenuBlur = (e) => {\r\n if (!e.target.closest('.contextmenu-buttons')\r\n && !e.target.closest('.contextmenu-buttons__button')\r\n && !e.target.closest('.sprocket-container') && !e.target.closest('.canvas')) {\r\n this.props.closeContextMenu();\r\n }\r\n };\r\n\r\n componentWillUnmount() {\r\n if (this.props.closeContextMenu) {\r\n document.removeEventListener('click', this.contextMenuBlur)\r\n }\r\n }\r\n\r\n setContextMenuButtons() {\r\n const layout = getCurrentLayout();\r\n const contextMenuOpen = this.props.contextMenuOpen;\r\n if (contextMenuOpen === \"backsplash_custom\"\r\n || contextMenuOpen === \"backsplash_custom_left\"\r\n || contextMenuOpen === \"backsplash_custom_right\"\r\n || contextMenuOpen === \"right_wall_custom\"\r\n || contextMenuOpen === \"left_wall_custom\") {\r\n this.setBacksplashButtons();\r\n return\r\n }\r\n\r\n const hoveredParent = layout.designNavigationItems().find(navItem => {\r\n return navItem.text === contextMenuOpen\r\n });\r\n\r\n let relatedItems = hoveredParent.part.relatedItems;\r\n\r\n const clickedItem = relatedItems.find((item) => {\r\n return item.activeFeature && (item.partId === this.props.hoveredLayer.partId)\r\n });\r\n\r\n let itemsToRender = this.getItemsToRender(hoveredParent);\r\n\r\n // console.log('clickedItem', clickedItem);\r\n // console.log('relatedItems', relatedItems);\r\n // console.log('itemsToRender', itemsToRender);\r\n\r\n const clickedItemIndex = itemsToRender.findIndex(item => item.text === clickedItem.partName);\r\n if (clickedItemIndex > 0) {\r\n itemsToRender = reorder(itemsToRender, clickedItemIndex, 0); // swap items in array start\r\n }\r\n\r\n itemsToRender = itemsToRender.map(item => {\r\n if (item.text === \"Island Countertop\") {\r\n // item.subMenuText = \"Countertop\";\r\n item.bgImageText = \"Countertop\";\r\n }\r\n return item\r\n });\r\n\r\n this.setState({\r\n contextMenuButtons: itemsToRender\r\n })\r\n }\r\n\r\n getItemsToRender = (hoveredParent) => {\r\n let itemsToRender = hoveredParent.part.subParts();\r\n let availablePartIds = [];\r\n switch (this.props.contextMenuOpen) {\r\n case \"Center Island\":\r\n availablePartIds = [\"center_island_sink\", \"center_island_faucet\", \"center_island_countertop\",\r\n \"center_island_stovetop\", \"center_island_range\", \"center_island_edge\"];\r\n break;\r\n case \"Countertop\":\r\n availablePartIds = [\"countertop\", \"faucet\", \"sink\", \"edge_profile\"];\r\n break;\r\n case \"Walls\":\r\n availablePartIds = [\"right_wall\", \"backsplash\"];\r\n break;\r\n default:\r\n break;\r\n }\r\n return itemsToRender.filter(menuButton => availablePartIds.includes(menuButton.part.partId));\r\n };\r\n\r\n getBackSplashButtons = () => {\r\n return BACKSPLASH_TYPES.map(bType => {\r\n const button = {\r\n text: bType,\r\n };\r\n switch (bType) {\r\n case \"4in\":\r\n button.subMenuText = \"visualizer.kitchen.contextmenu.backsplash.4in\"\r\n break;\r\n case \"6in\":\r\n button.subMenuText = \"visualizer.kitchen.contextmenu.backsplash.6in\"\r\n break;\r\n case \"Full\":\r\n button.subMenuText = \"visualizer.kitchen.contextmenu.backsplash.18in\"\r\n break;\r\n }\r\n return button\r\n })\r\n };\r\n\r\n setBacksplashButtons = () => {\r\n const layout = getCurrentLayout();\r\n const hoveredParent = layout.designNavigationItems().find(navItem => {\r\n return navItem.text === \"Walls\"\r\n });\r\n const subParts = hoveredParent.part.subParts();\r\n\r\n let contextMenuButtons = [];\r\n const backSplashButtons = this.getBackSplashButtons();\r\n const rightWall = subParts.find(menuButton => menuButton.part.partId === \"right_wall\");\r\n const leftWall = subParts.find(menuButton => menuButton.part.partId === \"left_wall\");\r\n if (rightWall) {\r\n rightWall.subMenuParent = \"Walls\";\r\n }\r\n if (leftWall) {\r\n leftWall.subMenuParent = \"Walls\";\r\n }\r\n switch (this.props.contextMenuOpen) {\r\n case \"right_wall_custom\": {\r\n contextMenuButtons = rightWall ? [rightWall, ...backSplashButtons] : backSplashButtons;\r\n break;\r\n }\r\n case \"left_wall_custom\": {\r\n contextMenuButtons = leftWall ? [leftWall, ...backSplashButtons] : backSplashButtons;\r\n break;\r\n }\r\n case \"backsplash_custom_left\": {\r\n contextMenuButtons = [...backSplashButtons, leftWall];\r\n break;\r\n }\r\n case \"backsplash_custom_right\": {\r\n contextMenuButtons = [...backSplashButtons, rightWall];\r\n break;\r\n }\r\n case \"backsplash_custom\": {\r\n contextMenuButtons = backSplashButtons; // just in case, we should not have these cases\r\n break;\r\n }\r\n }\r\n this.setState({\r\n contextMenuButtons\r\n })\r\n };\r\n\r\n handleContextMenuHover = () => {\r\n //TODO[Artem] add here rendering green zones on hover\r\n };\r\n\r\n render() {\r\n\r\n let contextMenuStyles = this.props.contextMenuPosition || {};\r\n if (this.state.contextMenuButtons.length <= 4) {\r\n contextMenuStyles = Object.assign({}, contextMenuStyles, {maxWidth:\"210px\"} )\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {this.state.contextMenuButtons.map((menuItem) => {\r\n if (!menuItem) {\r\n return null\r\n }\r\n return (\r\n \r\n )\r\n })}\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = () => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ContextMenuSimple)\r\n","import invert from 'lodash/invert';\r\nimport snakeCase from 'lodash/snakeCase';\r\n\r\nimport LayoutCommonNew from \"../../visComponents/layoutCommonNew\";\r\nimport {LayoutType, LayoutAbbreviation} from \"./constants\";\r\nimport zIndexes from \"./zIndex\";\r\nimport Other from \"./parts/other\";\r\nimport NonVisualizerSubPart from \"./subparts/nonVisualizerSubPart\";\r\nimport DesignNavigationItem from \"../../visComponents/designNavigationItem\";\r\nimport Background from \"./parts/background\";\r\nimport Floor from \"./parts/floor\";\r\nimport Walls from \"./parts/walls\";\r\nimport {AVAILABLE_VISUALIZER_TYPES} from \"../../../config\";\r\nimport Globals from \"./parts/globals\";\r\nimport Cabinet from \"./parts/cabinet\";\r\nimport Accessories from \"./parts/accessories\";\r\n\r\nexport class LaundryRoomLayout extends LayoutCommonNew {\r\n\r\n /**\r\n * @type {int}\r\n */\r\n defaultType = LayoutType.Layout41;\r\n type = this.defaultType;\r\n scene = \"1\";\r\n visualizerType = AVAILABLE_VISUALIZER_TYPES.LaundryRoom;\r\n localStorageKey = \"LaundryRoomState\";\r\n layersBinding = \"LaundryRoom\";\r\n layoutNames = LayoutAbbreviation;\r\n layoutTypes = LayoutType;\r\n layoutThumbnails = {};\r\n zIndexes = zIndexes.layouts;\r\n excludedPartIdsFromHover = [\"decor_\", \"background_bg\", \"walls_ceiling\", \"attachment\"];\r\n\r\n constructor(props) {\r\n super(props);\r\n this.parts[Globals.id] = new Globals();\r\n this.parts[Background.id] = new Background();\r\n this.parts[Cabinet.id] = new Cabinet();\r\n this.parts[Walls.id] = new Walls();\r\n this.parts[Floor.id] = new Floor();\r\n this.parts[Accessories.id] = new Accessories();\r\n this.parts[Other.id] = new Other();\r\n Object.values(this.parts).forEach(part => part.layout = this);\r\n }\r\n\r\n getCurrentLayoutName(type = this.type) {\r\n return invert(LayoutType)[type];\r\n }\r\n\r\n getCurrentLayoutAbbreviation() {\r\n return LayoutAbbreviation[this.getCurrentLayoutName()]\r\n }\r\n\r\n addNonVisualizerSubPart(featureGroupName){\r\n const otherParent = this.parts[Other.id];\r\n const partId = snakeCase(featureGroupName);\r\n let relatedItem = otherParent.relatedItems.find(relatedItem => relatedItem.partId === partId);\r\n if (!relatedItem) {\r\n relatedItem = new NonVisualizerSubPart(true, partId, featureGroupName);\r\n relatedItem.getParent = () => otherParent;\r\n otherParent.relatedItems.push(relatedItem);\r\n }\r\n return new DesignNavigationItem(relatedItem.partName, relatedItem)\r\n }\r\n\r\n addSpecificPropertiesToLocalStorage(bvState, useNames, returnAllFeatures= false) {\r\n const cabinet = this.parts[Cabinet.id];\r\n if (cabinet && cabinet.slatWall) {\r\n bvState.slatWallType = cabinet.slatWall.slatWallType;\r\n }\r\n return super.addSpecificPropertiesToLocalStorage(bvState, useNames, returnAllFeatures)\r\n }\r\n\r\n setActiveFeaturesFromObject(...props) {\r\n const cabinet = this.parts[Cabinet.id];\r\n if (cabinet && cabinet.slatWall && props.slatWallType) {\r\n cabinet.slatWall.slatWallType = props.slatWallType;\r\n }\r\n return super.setActiveFeaturesFromObject(...props)\r\n }\r\n\r\n}\r\n\r\nexport default new LaundryRoomLayout()\r\n","import {IntermediatePart} from \"../intermediatePart\";\r\n\r\nexport default class NonVisualizerSubPart extends IntermediatePart {\r\n constructor(isChild, partId, partName) {\r\n super(isChild);\r\n this.partId = partId;\r\n this.visible = true;\r\n this.partName = partName;\r\n // this.allFeaturesReceived = true;\r\n }\r\n\r\n load(dbFeature) {\r\n return super.load_(dbFeature, new NonVisualizerSubPart(false, this.partId, dbFeature.groupName));\r\n }\r\n\r\n navigationSubItems(filters, searchText) {\r\n return this.navigationNoMetaSubItems(filters, searchText)\r\n }\r\n}\r\n","const ua = navigator.userAgent || navigator.vendor || window.opera;\r\nexport const isInstagram = ua.indexOf('Instagram') > -1\r\nexport const isFacebook = (ua.indexOf(\"FBAN\") > -1) || (ua.indexOf(\"FBAV\") > -1);\r\n\r\n// if (document.documentElement.classList) {\r\n// if (isInstagram) {\r\n// window.document.body.classList.add('bv--instagram');\r\n// }\r\n// }\r\n","import React, {useEffect, useRef, useState} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\r\nimport Grow from '@mui/material/Grow';\r\nimport Popper from '@mui/material/Popper';\r\n\r\nimport {setLookContextMenu} from \"../../../actions/lookFunctions\";\r\n\r\nimport ContextMenuQKBButtons from \"./contextMenuQKBButtons\";\r\n\r\n// export const checkForContextMenuCommon = (partId, layerPosition) => {\r\nexport const checkForContextMenuCommon = () => {\r\n const returnObject = {\r\n allButtons: [], // {partId: \"\", translateId: \"\", isWizard: true, wizardId: sting|number, hasSubMenu: false}\r\n showButtons: [] // {partId: \"\", translateId: \"\", isWizard: true, wizardId: sting|number, hasSubMenu: false}\r\n }\r\n return returnObject\r\n}\r\n\r\nconst getContextMenuPosition = (contextMenu, position, isMobile) => {\r\n const {partId, layerPosition} = contextMenu;\r\n const {showButtons} = checkForContextMenuCommon(partId, layerPosition);\r\n\r\n let left = isMobile ? '50%' : position.x - 50;\r\n let top = isMobile ? '50%' : position.y - 50;\r\n let right = 'auto';\r\n\r\n const maxAllowedWidth = showButtons.length > 2 ? 300 : 210;\r\n\r\n let maxAllowedHeight = 110;\r\n if (showButtons.length > 6) {\r\n maxAllowedHeight = 330;\r\n } else if (showButtons.length >= 3) {\r\n maxAllowedHeight = 220;\r\n }\r\n if (!isMobile && (left > window.innerWidth - maxAllowedWidth)) {\r\n left = 'auto';\r\n right = 0\r\n }\r\n if (!isMobile && (top > window.innerHeight - maxAllowedHeight)) {\r\n let negativeMargin = 50;\r\n if (showButtons.length > 6) {\r\n negativeMargin = 250;\r\n } else if (showButtons.length >= 3) {\r\n negativeMargin = 150;\r\n }\r\n top = top - negativeMargin;\r\n }\r\n\r\n return {left, top, right}\r\n}\r\n\r\nconst ContextMenuQKB = (props) => {\r\n\r\n const {contextMenu, setLookContextMenu, isMobile, handleContextMenuClick, renderGreenLayerByZindex} = props;\r\n const {opened, position} = contextMenu;\r\n const [styles, setStyles] = useState({left: 0, top: 0, right: 0});\r\n const [buttons, setButtons] = useState([]);\r\n const anchorRef = useRef(null);\r\n\r\n const handleClose = (event) => {\r\n if (document.hoveredLayer && event.target.closest(\".canvas-el\") && ALL_CONTEXT_MENU.includes(document.hoveredLayer.partId)) {\r\n return\r\n }\r\n setLookContextMenu({\r\n opened: false,\r\n layerPosition: \"\",\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (!contextMenu.opened) {\r\n return null\r\n }\r\n setStyles(getContextMenuPosition(contextMenu, position, isMobile));\r\n const {showButtons} = checkForContextMenuCommon(contextMenu.partId, contextMenu.layerPosition);\r\n setButtons(showButtons);\r\n }, [contextMenu, position, isMobile]);\r\n\r\n // console.log(\"styles\", styles);\r\n\r\n let contextStyles = styles;\r\n if (buttons.length <= 4) {\r\n contextStyles = Object.assign({}, styles, {maxWidth: \"210px\"});\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {({ TransitionProps }) => (\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\nContextMenuQKB.propTypes = {\r\n handleContextMenuClick: PropTypes.func,\r\n renderGreenLayerByZindex: PropTypes.func,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {contextMenu} = store.lookState;\r\n const {isMobile} = store.serverState;\r\n return {\r\n contextMenu,\r\n isMobile,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookContextMenu\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ContextMenuQKB)\r\n","import Analytics from \"../../../analytics\";\r\nimport Config from \"../../../config\";\r\nimport {loaderDisable, loaderEnable} from \"../../ui/loaderView\";\r\nimport {saveQuote} from \"../../../api/server-api\";\r\nimport {renderErrorPopup} from \"../../../api/api-popups\";\r\nimport {showQuoteSavedNotification} from \"../../ui/successNotification\";\r\n\r\nexport const handleBackToDashboard = () => {\r\n if (window.salesForceLoaded || typeof(sr) != 'undefined') {\r\n Analytics.sendClickEvent('see-job-in-salesforce');\r\n let payload = {QCJobId: document.kvConfig.jobId};\r\n console.log('attempting to view job in SalesForce', payload);\r\n let eventPayload = {name: 'quoteCountertops.viewJobInSF', payload }\r\n try {\r\n window.Sfdc.canvas.client.publish(sr.client, eventPayload);\r\n } catch(e) {\r\n console.log('unable to send via salesforce viewpage');\r\n }\r\n if (typeof(sfdcMessage) !== 'undefined') {\r\n sfdcMessage.postMessage(eventPayload);\r\n }\r\n } else {\r\n Analytics.sendClickEvent('back-to-dashboard');\r\n Config.parent && Config.parent.exitEditQuote && Config.parent.exitEditQuote();\r\n loaderDisable(); // in case it is not an iframe\r\n showQuoteSavedNotification();\r\n }\r\n};\r\n\r\nexport const handleSaveAndBackToDashboard = () => {\r\n\r\n if (!document.kvConfig.jobId) {\r\n renderErrorPopup(\"The Quote can not be saved, no JobId is assigned yet\");\r\n return false\r\n }\r\n\r\n loaderEnable(\"loader.savingQuoteText\");\r\n saveQuote({submit: true})\r\n .then(handleBackToDashboard)\r\n .catch(handleBackToDashboard)\r\n};\r\n","export const VIEW = {\r\n login: 0,\r\n register: 1,\r\n reset: 2,\r\n terms: 3\r\n};","import React from 'react';\r\nimport JsonApi from \"../../api/jsonApi\";\r\nimport PropTypes from 'prop-types';\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport trim from \"lodash/trim\";\r\nimport {connect} from \"react-redux\";\r\n\r\nimport 'react-intl-tel-input/dist/main.css';\r\nimport {browserIsSafari} from \"../../misc/helpers\";\r\nimport OnScreenKeyboard from './OnScreenKeyboard/keyboard';\r\nimport Analytics from './../../analytics';\r\nimport misc from '../../misc/misc';\r\nimport {loaderDisable, loaderEnable} from \"../ui/loaderView\";\r\nimport store from '../../store';\r\nimport LookUserPhoneInput from \"../look/user/lookUserPhoneInput\";\r\nimport {changeUserInfo} from \"../../actions/actionFunctions\";\r\n//import autoPrefixer from 'gulp-autoprefixer';\r\n\r\nconst steps = {\r\n VerifyPhoneNumber: 0,\r\n TermsAndConditions: 1,\r\n UpdatePhone: 2,\r\n Updated: 3,\r\n Verified: 4\r\n};\r\n\r\n//const phoneUtil = PhoneNumberUtil.getInstance();\r\n\r\nexport const getPreferredCountries = () => {\r\n const {fabricatorState} = store.getState();\r\n if (fabricatorState.isCaesarStone && (fabricatorState.settings.currency === \"AUD\" || fabricatorState.settings.currency === \"AUS\")) {\r\n return [\"au\", \"us\", \"gb\", \"ca\"]\r\n }\r\n if (fabricatorState.isLixil) {\r\n return [\"us\", \"gb\", \"ca\"]\r\n }\r\n switch(fabricatorState.settings.currency) {\r\n case \"CAD\":\r\n return fabricatorState.isLowes ? [\"ca\"] : [\"ca\", \"us\", \"gb\", \"pa\", \"es\"];\r\n default:\r\n return [\"us\", \"gb\", \"ca\", \"pa\", \"es\"];\r\n }\r\n}\r\n\r\nclass TwoFactorAuthClass extends React.Component {\r\n static propTypes = {\r\n phoneNumber: PropTypes.string.isRequired,\r\n // (cancel = true, updatePhone = null)\r\n onClose: PropTypes.func.isRequired\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n step: steps.VerifyPhoneNumber,\r\n authCode: '',\r\n validating: false,\r\n valid: true,\r\n phoneUpdateError: false,\r\n oldPhoneNumber: \"\",\r\n oldCountry: {},\r\n };\r\n\r\n this.handleResendSMS();\r\n }\r\n\r\n setStep = (step) => {\r\n this.setState({step});\r\n };\r\n\r\n componentDidMount() {\r\n this.setOldValues();\r\n }\r\n\r\n setOldValues() {\r\n const {phoneNumber, country} = this.props;\r\n this.setState({oldPhoneNumber: phoneNumber, oldCountry: country})\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.getDialog()}\r\n
    \r\n );\r\n }\r\n\r\n getDialogContent = () => {\r\n let content = {\r\n title: \"Invalid Step\",\r\n content: null,\r\n footer: null\r\n };\r\n switch (this.state.step) {\r\n case steps.VerifyPhoneNumber:\r\n content = this.getVerifyPhoneNumberContent();\r\n break;\r\n case steps.TermsAndConditions:\r\n content = this.getTermsAndConditionsContent();\r\n break;\r\n case steps.UpdatePhone:\r\n content = this.getUpdatePhoneContent();\r\n break;\r\n }\r\n return content;\r\n };\r\n\r\n sendAuthenticationRequest = (token, to, type, message) => {\r\n if (message) {\r\n loaderEnable(null, message);\r\n setTimeout(() => {\r\n loaderDisable()\r\n }, 3000);\r\n }\r\n return JsonApi.sendAuthenticationRequest(token, to, type);\r\n };\r\n\r\n handleResendSMS = () => {\r\n Analytics.sendClickEvent(\"resend-sms\");\r\n JsonApi.generateAuthenticationToken()\r\n .then((t) => {\r\n var token = t.data ? t.data : t;\r\n this.setState({token});\r\n this.sendAuthenticationRequest(token, `+${this.props.country.dialCode + this.props.phoneNumber}`, 1, \"loader.authenticationSmsSendTitle\");\r\n }).catch(() => this.props.onClose(false, this.props.phoneNumber));\r\n };\r\n\r\n handleResendVoice = () => {\r\n Analytics.sendClickEvent(\"resend-voice\");\r\n JsonApi.generateAuthenticationToken()\r\n .then((t) => {\r\n var token = t.data ? t.data : t;\r\n this.setState({token});\r\n this.sendAuthenticationRequest(token, `+${this.props.country.dialCode + this.props.phoneNumber}`, 2, 'loader.authenticationCallBackTitle');\r\n }).catch(() => this.props.onClose(false, this.props.phoneNumber));\r\n };\r\n\r\n handleCheckVerificationCode = (e) => {\r\n const authCode = trim(e.target.value).replace(/[^0-9]/g, \"\");\r\n this.setState({authCode});\r\n if (authCode.length === 6) {\r\n this.setState({validating: true}, () => {\r\n JsonApi.validateAuthenticationRequest(this.state.token, authCode, this.props.phoneNumber)\r\n .then((success) => {\r\n if (success.data) {\r\n this.handlePostPhoneNumberUpdated();\r\n Analytics.sendEvent(\"PhoneVerification\", \"Success\");\r\n this.setStep(steps.Verified);\r\n window.setTimeout(() => this.props.onClose(false, this.props.phoneNumber), 3750);\r\n } else\r\n Analytics.sendEvent(\"PhoneVerification\", \"Failure\");\r\n this.setState({valid: false, validating: false}); //, validating: false\r\n });\r\n });\r\n }\r\n };\r\n\r\n handlePostPhoneNumberUpdated = () => {\r\n Analytics.sendClickEvent(\"phone-number-update\");\r\n };\r\n\r\n handleUpdatePhoneNumber = () => {\r\n const {country} = this.props;\r\n var iso2 = country.iso2 || \"US\";\r\n if (misc.isPhoneNumber(this.props.phoneNumber, iso2.toUpperCase())) {\r\n this.handlePostPhoneNumberUpdated();\r\n this.setStep(steps.VerifyPhoneNumber);\r\n this.setState({authCode: \"\"}); // erase previous\r\n this.setOldValues();\r\n this.handleResendSMS();\r\n } else {\r\n this.setState({phoneUpdateError: true});\r\n }\r\n };\r\n\r\n revertUserValues = () => {\r\n this.props.changeUserInfo({\r\n phoneNumber: this.state.oldPhoneNumber,\r\n country: this.state.oldCountry,\r\n }); // set previous values on back click\r\n }\r\n\r\n handleBackClick = () => {\r\n this.revertUserValues(); // set previous values on back click\r\n this.setStep(steps.VerifyPhoneNumber);\r\n }\r\n\r\n getVerifyPhoneNumberContent = () => {\r\n const {intl} = this.props;\r\n const {fabricatorState} = store.getState();\r\n return {\r\n title: intl.formatMessage({id: \"twoFA.title\"}),\r\n content: (\r\n
    \r\n \r\n this.handleCheckVerificationCode({target: {value: v}})} type=\"numeric\"/>\r\n {!this.state.valid\r\n ?
    \r\n : null}\r\n {this.state.validating\r\n ? \"Validating...\"\r\n\r\n : null}\r\n
    \r\n \r\n {`+${this.props.country.dialCode} ${this.props.phoneNumber}`}\r\n {/*Please enter it or choose to receive a call with your verification code to unlock.*/}\r\n
    \r\n
    this.setStep(steps.UpdatePhone)}>\r\n \r\n
    \r\n
    \r\n
    this.handleResendSMS()}>
    \r\n
    this.handleResendVoice()}>
    \r\n
    \r\n {fabricatorState.isLowes ? null : (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n ),\r\n footer: (\r\n
    \r\n
    this.setStep(steps.TermsAndConditions)}>
    \r\n
    \r\n )\r\n }\r\n };\r\n\r\n getTermsAndConditionsContent = () => {\r\n const {intl} = this.props;\r\n return {\r\n title: intl.formatMessage({id: \"twoFA.termsAndConditions\"}),\r\n content: (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n ),\r\n footer: (\r\n
    \r\n
    \r\n
    this.setStep(steps.VerifyPhoneNumber)}>\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n };\r\n };\r\n\r\n getUpdatePhoneContent = () => {\r\n const {intl} = this.props;\r\n return {\r\n title: intl.formatMessage({id: \"twoFA.updatePhoneNumber\"}),\r\n content: (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {this.state.phoneUpdateError ? (\r\n
    \r\n \r\n
    \r\n ) : null}\r\n
    \r\n ),\r\n footer: (\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 closeButtonClick = () => {\r\n this.revertUserValues();\r\n this.props.onClose(true);\r\n }\r\n\r\n getDialog = () => {\r\n if (this.state.step < steps.Updated) {\r\n let content = this.getDialogContent();\r\n const popupStyles = browserIsSafari() && this.props.windowWidth < 991 ? {height: this.props.windowHeight - 35} : {};\r\n return (\r\n
    \r\n
    \r\n
    {content.title}
    \r\n
    \r\n X\r\n
    \r\n
    \r\n {content.content}\r\n {content.footer}\r\n
    \r\n );\r\n } else {\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\nconst mapStateToProps = (store) => {\r\n const {phoneNumber, country} = store.userState.userInfo;\r\n return {\r\n phoneNumber,\r\n country,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n changeUserInfo,\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(TwoFactorAuthClass)\r\n)\r\n","import React, {Component, Fragment} from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport {\r\n toggleConfirmPopup,\r\n setJobId\r\n} from \"../../actions/actionFunctions\";\r\nimport {\r\n showContractSigning,\r\n setAfterContractSignCallback\r\n} from \"../../actions/contractsActions\";\r\nimport {updateSQFT} from \"../../actions/sqftFunctions\";\r\nimport {ConfirmPopupTypes, QuoteRequestType, SqftUpdateTypes, UserAction} from \"../visComponents/constants\";\r\nimport {setUserLoginResponse, userLogin, userRegister} from \"../../api/user-api\";\r\nimport Analytics from './../../analytics';\r\nimport WithCloseSQFtCalc from \"../sqft/hocs/withCloseSQFtCalc\";\r\nimport workspace from \"../sqft/components/canvas/core/workspace\";\r\nimport WithOverlay from \"./withOverlayHoc\";\r\nimport {setAssignQuotePopupCustomer} from \"../../actions/assignPopupFunctions\";\r\nimport {setAlreadyRegisteredUserInfo} from \"../../actions/userFunctions\";\r\nimport {loaderEnable} from \"../ui/loaderView\";\r\nimport {renderConfirmPopup} from \"../../api/api-popups\";\r\nimport {ROUTES} from \"../../routes\";\r\n\r\nclass ConfirmPopup extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.applyPopupOpened && !this.props.applyPopupOpened) {\r\n document.body.classList.add('body--apply-popup');\r\n }\r\n }\r\n\r\n handleApply = (confirm, hideOverlay, closeSQFtCalc) => {\r\n // Analytics.sendClickEvent('confirm-popup-apply-' + (confirm ? 'yes': 'no'));\r\n hideOverlay(this.closePopup);\r\n document.body.classList.remove('body--apply-popup');\r\n const {confirmPopupType, confirmPopupTag} = this.props;\r\n switch (confirmPopupType) {\r\n case ConfirmPopupTypes.ConsultationRequest: {\r\n const data = {\r\n yesNoConsultationRequest: confirm,\r\n userPopupType: confirmPopupTag.userPopupType,\r\n fromConfirmationDialog: true,\r\n quoteRequestType: QuoteRequestType.RequestConsultation\r\n };\r\n confirm\r\n ? Analytics.sendClickEvent('design-consultation-yes')\r\n : Analytics.sendClickEvent('design-consultation-no');\r\n switch (confirmPopupTag.userAction) {\r\n case UserAction.Login:\r\n userLogin(data);\r\n break;\r\n case UserAction.Register:\r\n userRegister(data)\r\n break;\r\n }\r\n break;\r\n }\r\n case ConfirmPopupTypes.SqftResetChanges: {\r\n if (confirm) {\r\n this.props.updateSQFT(SqftUpdateTypes.Reset);\r\n closeSQFtCalc(false);\r\n workspace.removeAllShapes();\r\n workspace.textBoxManager.removeAllTextBoxes();\r\n workspace.removeAllSlabImages();\r\n setTimeout(() => {\r\n this.props.updateSQFT(null);\r\n }, 0)\r\n }\r\n break;\r\n }\r\n case ConfirmPopupTypes.SqftUpdateQuestion: {\r\n if (confirm) {\r\n this.props.updateSQFT(SqftUpdateTypes.UpdateData);\r\n setTimeout(() => {\r\n this.props.updateSQFT(null);\r\n }, 0)\r\n }\r\n break;\r\n }\r\n case ConfirmPopupTypes.AssignQuoteOnExistingUser: {\r\n if (confirm) {\r\n const {alreadyRegisteredUserInfo} = this.props;\r\n Analytics.sendClickEvent('confirm-assign-quote-on-existing-user');\r\n if (window.location.hash.includes(ROUTES.contract)) {\r\n // this.props.showContractSigning(false, () => {}); // why close contract?\r\n if (this.props.afterContractSignCallback) {\r\n this.props.setAfterContractSignCallback(null);\r\n }\r\n }\r\n if (alreadyRegisteredUserInfo.assignQuote) {\r\n this.props.setAssignQuotePopupCustomer({ // clear current selected customer\r\n id: alreadyRegisteredUserInfo.userId,\r\n email: alreadyRegisteredUserInfo.email,\r\n fullName: alreadyRegisteredUserInfo.values.firstName + (alreadyRegisteredUserInfo.values.lastName ? \" \" + alreadyRegisteredUserInfo.values.lastName : \"\"),\r\n });\r\n this.props.setAlreadyRegisteredUserInfo({confirmedAssign: true}); // trigger assign quote button\r\n } else {\r\n loaderEnable();\r\n setUserLoginResponse(alreadyRegisteredUserInfo, true);\r\n }\r\n }\r\n if (confirmPopupTag.applyFunction) {\r\n confirmPopupTag.applyFunction();\r\n }\r\n break;\r\n }\r\n case ConfirmPopupTypes.DeleteCartItemsPopup: {\r\n if (confirm) {\r\n renderConfirmPopup(0, {allowDelete: true}, false); // clear tag\r\n }\r\n break;\r\n }\r\n // case ConfirmPopupTypes.ChangeWizardToPreviousStepSelection:\r\n // case ConfirmPopupTypes.ReplaceRoomWhenItExistsInCartButWeAddNew: {\r\n // break;\r\n // }\r\n default: {\r\n if (confirm) {\r\n if (confirmPopupTag.applyFunction) {\r\n confirmPopupTag.applyFunction();\r\n }\r\n } else if (confirmPopupTag.declineFunction) {\r\n confirmPopupTag.declineFunction()\r\n }\r\n renderConfirmPopup(0, {}, false); // clear tag\r\n break;\r\n }\r\n }\r\n };\r\n\r\n getConfirmMessage = () => {\r\n const {intl, confirmPopupType, confirmPopupTag} = this.props;\r\n switch (confirmPopupType) {\r\n case ConfirmPopupTypes.ConsultationRequest:\r\n return intl.formatMessage({id: \"confirmPopup.consultationRequest\"});\r\n case ConfirmPopupTypes.SqftResetChanges:\r\n return intl.formatMessage({id: \"confirmPopup.sqftResetChanges\"});\r\n case ConfirmPopupTypes.SqftUpdateQuestion:\r\n return intl.formatMessage({id: \"confirmPopup.sqftUpdateQuestion\"});\r\n case ConfirmPopupTypes.DeleteCartItemsPopup:\r\n return intl.formatMessage({id: confirmPopupTag.fromDelete ? \"confirmPopup.deleteCartItems2\" : \"confirmPopup.deleteCartItems\"});\r\n case ConfirmPopupTypes.ChangeWizardToPreviousStepSelection:\r\n return intl.formatMessage({id: \"confirmPopup.deleteCartItemsWizard\"});\r\n case ConfirmPopupTypes.ReplaceRoomWhenItExistsInCartButWeAddNew:\r\n return intl.formatMessage({id: \"confirmPopup.replaceRoomWhenItExistsInCartButWeAddNew\"});\r\n case ConfirmPopupTypes.AssignQuoteOnExistingUser: {\r\n const {alreadyRegisteredUserInfo} = this.props;\r\n return (\r\n \r\n

    \r\n

    \r\n {alreadyRegisteredUserInfo.values ? (\r\n
    \r\n

    {alreadyRegisteredUserInfo.values.firstName + (alreadyRegisteredUserInfo.values.lastName ? \" \" + alreadyRegisteredUserInfo.values.lastName : \"\")}

    \r\n

    {alreadyRegisteredUserInfo.email}

    \r\n
    \r\n ) : null}\r\n
    \r\n );\r\n }\r\n default:\r\n return \"Text is not set up\"\r\n }\r\n };\r\n\r\n closePopup = () => {\r\n this.props.toggleConfirmPopup(false);\r\n };\r\n\r\n render() {\r\n const {confirmPopupOpened, confirmPopupType} = this.props;\r\n if (!confirmPopupOpened) {\r\n return null\r\n }\r\n return (\r\n \r\n {(hideOverlay) => (\r\n
    \r\n {/*
    */}\r\n {/*

    Would you like to add any visualized items to your cart?

    */}\r\n {/*
    */}\r\n
    \r\n {this.getConfirmMessage()}\r\n
    \r\n
    \r\n \r\n \r\n {(closeSQFtCalc) => (\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 = (store) => {\r\n const {confirmPopupOpened, confirmPopupType, confirmPopupTag, alreadyRegisteredUserInfo} = store.userState;\r\n const {afterContractSignCallback} = store.contractSigningState;\r\n return {\r\n confirmPopupOpened,\r\n confirmPopupType,\r\n confirmPopupTag,\r\n alreadyRegisteredUserInfo,\r\n // contractSignIsOpened: isVisible,\r\n afterContractSignCallback,\r\n };\r\n};\r\nconst mapDispatchToProps = {\r\n toggleConfirmPopup,\r\n setJobId,\r\n updateSQFT,\r\n setAssignQuotePopupCustomer,\r\n setAlreadyRegisteredUserInfo,\r\n showContractSigning,\r\n setAfterContractSignCallback,\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(ConfirmPopup)\r\n)\r\n","import {connect} from \"react-redux\";\r\n\r\nimport {setCameFromPage, toggleConfirmPopup, toggleSelectionFeatureInfo} from \"../../../actions/actionFunctions\";\r\nimport {setSqftFromFeature} from \"../../../actions/sqftFunctions\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport {setShowAddedToTheCartSuccess} from \"../../../actions/groheFunctions\";\r\nimport {useCloseSQFTCalc} from \"./useCloseSQFTCalc\";\r\n\r\nconst WithCloseSQFtCalc = (props) => {\r\n const {children} = props;\r\n const {closeSQFTCalc} = useCloseSQFTCalc();\r\n\r\n return children(closeSQFTCalc);\r\n};\r\n\r\nconst mapStateToProps = (store) => ({\r\n cameFromPage: store.cartState.cameFromPage,\r\n activePreset: store.bathroomVisualizerState.activePreset,\r\n bvPresets: store.bathroomVisualizerState.bvPresets,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n toggleSelectionFeatureInfo,\r\n setCameFromPage,\r\n toggleConfirmPopup,\r\n setSqftFromFeature,\r\n setShowAddedToTheCartSuccess,\r\n};\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(WithCloseSQFtCalc)\r\n);\r\n","import React, {Component} from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {isFacebook, isInstagram} from \"../../misc/browsers\";\r\nimport {baseNewImagesPath} from \"../assets\";\r\nimport MobileRotateButtonIcon from \"./mobileRotateButtonIcon\";\r\nimport {AmericanStandardIcon, groheIcon} from \"../common/icons\";\r\n\r\n// const faceBookOldView = (isRebath) => (\r\n//
    \r\n//
    \r\n// Click HERE to open this tool in another browser\r\n//
    \r\n//
    \r\n// Facebook doesn’t support this visualizer in the Facebook app.\r\n//
    \r\n//
    \r\n// \"\"/\r\n//
    \r\n//
    \r\n//

    OR

    \r\n//

    Copy the following link into your browser:

    \r\n//

    {window.location.href.split(window.location.search)[0]}

    \r\n//
    \r\n//
    \r\n// );\r\n\r\nclass MobileRotateButton extends Component {\r\n\r\n getIcon = () => {\r\n if (this.props.fabricatorData.isAmericanStandard) {\r\n return AmericanStandardIcon\r\n }\r\n return groheIcon\r\n }\r\n\r\n getLogo = () => {\r\n switch (true) {\r\n case this.props.fabricatorData.isRebath:\r\n return `${baseNewImagesPath}images/Logos/rebath-logo.svg`\r\n case this.props.fabricatorData.isRona:\r\n return `https://qc-cdn.s3.amazonaws.com/Logos/rona.png`\r\n case this.props.fabricatorData.isRenoDepot:\r\n return `https://qc-cdn.s3.amazonaws.com/Logos/reno-depot.png`\r\n case this.props.fabricatorData.isLowes:\r\n return `${baseNewImagesPath}images/Logos/Lowes-Color-Logo.svg`\r\n case this.props.fabricatorData.isCaesarStone:\r\n return `${baseNewImagesPath}images/Logos/csconnect2.png`\r\n default:\r\n // return `${baseNewImagesPath}images/Logos/quote-logo-stacked.svg`\r\n return `${baseNewImagesPath}images/Logos/Quote-Kitchen-and-Bath.svg`\r\n }\r\n };\r\n\r\n render() {\r\n\r\n const {isRebath, isLowes, isRona, isRenoDepot, isAmericanStandard, isLixil} = this.props.fabricatorData;\r\n\r\n return isFacebook || isInstagram\r\n ? null : (\r\n
    \r\n
    \r\n {isLixil ? this.getIcon() : \"\"}\r\n
    \r\n \r\n

    \r\n \r\n

    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n fabricatorData: store.fabricatorState\r\n});\r\nexport default connect(mapStateToProps)(MobileRotateButton);\r\n","import React from \"react\";\r\nimport {injectIntl} from \"react-intl\";\r\nimport {connect} from \"react-redux\";\r\n\r\nimport {setAssignQuotePopupSearchText} from \"../../../actions/assignPopupFunctions\";\r\n\r\nconst AssignQuotePopupSearch = (props) => {\r\n\r\n const {setAssignQuotePopupSearchText, assignQuotePopupSearchText, intl} = props;\r\n\r\n const handleSearchInputChange = (event) => {\r\n setAssignQuotePopupSearchText(event.target.value)\r\n };\r\n\r\n const searchText = assignQuotePopupSearchText;\r\n\r\n return (\r\n
    \r\n 12 ? \" search-input--with-close\" : \"\")}\r\n value={searchText}\r\n onChange={handleSearchInputChange}\r\n placeholder={intl.formatMessage({id: \"mobileMenu.searchPlaceholder\"})}\r\n />\r\n \r\n {searchText ?
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n assignQuotePopupSearchText: store.assignQuoteState.assignQuotePopupSearchText\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setAssignQuotePopupSearchText\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(AssignQuotePopupSearch)\r\n)\r\n","import React, {useEffect, useState} from \"react\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\nimport {List} from \"react-virtualized\";\r\n\r\nimport {customerInterface, employeeInterface} from \"./assignQuoteInterfaces\";\r\nimport {usePrevious} from \"../../../misc/helperHooks\";\r\nimport UiIcon from \"../../ui/icons/uiIcon\";\r\n// import LoadingSpinner from \"../../ui/loadingSpinner\";\r\n\r\nconst AssignQuoteVirtualizedList = (props) => {\r\n\r\n const {renderList, selectEntity, activeEntity, noEntitiesFound, title, contentDimensions, errorMessage,\r\n hideEmployeesColumn} = props;\r\n const [scrollToIndex, setScrollToIndex] = useState(0);\r\n const prevEntity = usePrevious(activeEntity);\r\n\r\n useEffect(() => {\r\n if (activeEntity && !prevEntity) {\r\n let scrollToIn = renderList.findIndex(item => item.id === activeEntity.id)\r\n if (scrollToIn > -1) {\r\n setScrollToIndex(scrollToIn + 3);\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [activeEntity]);\r\n\r\n const listWidth = contentDimensions && contentDimensions.width\r\n ? hideEmployeesColumn\r\n ? contentDimensions.width - 10\r\n : (contentDimensions.width / 2) - 10\r\n : 320; // 10 is padding\r\n const listHeight = contentDimensions && contentDimensions.height ? contentDimensions.height - 15 : 245; // 15 is title\r\n\r\n const listSettings = {\r\n width: listWidth,\r\n height: listHeight,\r\n rowHeight: 40,\r\n overscanRowCount: 6,\r\n rowCount: renderList.length,\r\n showScrollingPlaceholder: false,\r\n useDynamicRowHeight: false,\r\n }\r\n\r\n const rowRenderer = ({index, key, style}) => {\r\n const customer = renderList[index];\r\n return (\r\n
  • \r\n
    selectEntity(customer)}>\r\n
    \r\n \r\n
    \r\n
    \r\n selectEntity(customer)}>\r\n {customer.fullName} {customer.email ? ({customer.email}) : null}\r\n \r\n
  • \r\n );\r\n }\r\n\r\n const noRowsRenderer = () =>
    ;\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n {errorMessage ? : null}\r\n
    \r\n \r\n
    \r\n )\r\n};\r\n\r\nAssignQuoteVirtualizedList.propTypes = {\r\n renderList: PropTypes.array.isRequired,\r\n selectEntity: PropTypes.func.isRequired,\r\n activeEntity: PropTypes.oneOfType([\r\n PropTypes.shape(customerInterface),\r\n PropTypes.shape(employeeInterface)\r\n ]),\r\n title: PropTypes.string.isRequired,\r\n errorMessage: PropTypes.string,\r\n noEntitiesFound: PropTypes.string.isRequired,\r\n contentDimensions: PropTypes.shape({\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n }),\r\n}\r\n\r\nexport default injectIntl(AssignQuoteVirtualizedList)\r\n","import React, {Component} from 'react';\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {BathTubType} from \"../bvComponent/core/constants\";\r\nimport {changeQTRoutePath, changeRoutePath} from \"../../misc/changeRoutePath\";\r\nimport {getCurrentLayout} from \"../appLayout\";\r\n\r\nexport default class ProjectScopeFunctions extends Component {\r\n\r\n goToMaterialsPageCommon = (subPart, parentName) => {\r\n const layout = getCurrentLayout();\r\n let nextSubPartIndex = 0;\r\n // console.log('subPart', subPart);\r\n if (subPart.partId === \"bathtub\") {\r\n // console.log('subPart', subPart.getParent());\r\n subPart.getParent().handleSubTypeClick(BathTubType.FreeStanding)\r\n }\r\n const subPartName = subPart.partName.replace(/ /g,\"-\").toLowerCase();\r\n if (layout.qtCategories) {\r\n const qtCategory = layout.qtCategories.find(qtCategory => qtCategory.name === parentName);\r\n nextSubPartIndex = qtCategory.subParts.findIndex(subPartItem => {\r\n return subPartItem.part.partId === subPart.partId\r\n });\r\n this.props.setQtActiveCategory(parentName);\r\n } else if (subPart.getParent) {\r\n const subParts = subPart.getParent().subParts(false);\r\n nextSubPartIndex = subParts.findIndex(subPartItem => {\r\n return subPartItem.part.partName.replace(/ /g,\"-\").toLowerCase() === subPartName\r\n });\r\n }\r\n this.props.changeActivePartRelatedItemIndex(nextSubPartIndex);\r\n const parentSimple = (subPart.partName === \"Floor\" && subPart.partId !== \"shower_floor\")\r\n || subPart.partName === \"Toilet\"\r\n || (subPart.partName === \"Ceiling\" &&\r\n (document.kvConfig.visualizerType === \"Bathroom\" || document.kvConfig.visualizerType === \"BV\"))\r\n || subPart.partName === \"Window\";\r\n this.props.toggleSelectionWindow(true, parentSimple ? subPart.partName : subPart.getParent().partName);\r\n this.props.setCameFromPage('quote-design');\r\n if (layout.qtCategories) {\r\n changeQTRoutePath(parentName, nextSubPartIndex);\r\n } else {\r\n changeRoutePath(subPart.getParent ? subPart.getParent() : subPart, nextSubPartIndex, false);\r\n }\r\n };\r\n\r\n getBathroomHomeSections = () => {\r\n const layout = getCurrentLayout();\r\n let\r\n vanityItems = [],\r\n showerAndBathTubItems = [],\r\n otherItems = [];\r\n\r\n if (layout.qtCategories) {\r\n // console.log(\"parentParts\", parentParts);\r\n return layout.qtCategories.map((qtCategory) => {\r\n return {\r\n title: qtCategory.name,\r\n // items: this.checkForWallsComplexGroup(qtCategory)\r\n items: qtCategory.subParts\r\n }\r\n });\r\n }\r\n\r\n layout.getFeatures().forEach((parentGroup) => {\r\n // console.log(partData);\r\n let subParts = parentGroup.subParts();\r\n if (parentGroup) {\r\n if (parentGroup.partName === \"Vanity\") {\r\n subParts.forEach((subPart) => {\r\n if (subPart.part.partId !== \"accent_wall\") {\r\n vanityItems.push(subPart)\r\n }\r\n });\r\n } else if (parentGroup.partName === \"Shower\") {\r\n subParts.forEach((subPart) => {\r\n showerAndBathTubItems.push(subPart)\r\n });\r\n } else if (parentGroup.partName === \"Shower Tub Combo\") {\r\n const excluded = [\"wall_configuration\", \"shower_interior_wall\", \"shower_interior_wall_accent\", \"shower_fixture\", \"shower_door\", \"shower_door_handle\"];\r\n subParts.forEach((subPart) => {\r\n if (!excluded.includes(subPart.part.partId)) {\r\n showerAndBathTubItems.push(subPart)\r\n }\r\n });\r\n } else if (parentGroup.partName === \"Bathtub\") {\r\n // console.log(parentGroup);\r\n if (parentGroup.bathTubBody) {\r\n showerAndBathTubItems.push({\r\n text: parentGroup.bathTubBody.partName,\r\n part: parentGroup.bathTubBody\r\n });\r\n }\r\n if (parentGroup.bathTubFixture) {\r\n showerAndBathTubItems.push({\r\n text: parentGroup.bathTubFixture.partName,\r\n part: parentGroup.bathTubFixture\r\n });\r\n }\r\n } else {\r\n subParts.forEach((subPart) => {\r\n if ((!subPart.part.partId.includes(\"wall\") || subPart.part.partId === \"wall_c\")\r\n && subPart.part.partId !== \"shower_fixture\" && !subPart.part.disableOnHomeSections) {\r\n otherItems.push(subPart)\r\n }\r\n });\r\n }\r\n }\r\n });\r\n\r\n return [\r\n {\r\n title: ,\r\n items: vanityItems,\r\n },\r\n {\r\n title: ,\r\n items: showerAndBathTubItems,\r\n },\r\n {\r\n title: ,\r\n items: otherItems,\r\n },\r\n\r\n ]\r\n };\r\n\r\n getKitchenHomeSections = () => {\r\n const layout = getCurrentLayout();\r\n if (layout.qtCategories) {\r\n // console.log(\"parentParts\", parentParts);\r\n return layout.qtCategories.map((qtCategory) => {\r\n return {\r\n title: qtCategory.name,\r\n // items: this.checkForWallsComplexGroup(qtCategory)\r\n items: qtCategory.subParts\r\n }\r\n });\r\n } else {\r\n const parentParts = layout.getFeatures();\r\n return parentParts.map((parentGroup) => {\r\n return {\r\n title: parentGroup.partName,\r\n items: parentGroup.subParts(false)\r\n }\r\n });\r\n }\r\n };\r\n\r\n getSections = () => {\r\n switch (document.kvConfig.visualizerType) {\r\n case \"Kitchen\":\r\n case \"KV\":\r\n case \"kvMaster\":\r\n case \"kvScene\":\r\n default:\r\n return this.getKitchenHomeSections();\r\n case \"Bathroom\":\r\n case \"BV\":\r\n case \"bvScene\":\r\n case \"bvLook\":\r\n return this.getBathroomHomeSections();\r\n }\r\n };\r\n\r\n}\r\n","import React, {useEffect, useRef} from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport SqftFeaturesPopup from \"./sqftFeaturesPopup\";\r\nimport eventManager from \"../../sqft/components/canvas/store/sqftEventManager\";\r\nimport {changeSqftFeaturesPopup} from \"../../../actions/sqftFunctions\";\r\n\r\nconst SqftFeaturesPopupWrapper = (props) => {\r\n const { sqftFeaturesPopup, changeSqftFeaturesPopup } = props;\r\n const isOpened = sqftFeaturesPopup.opened;\r\n const wrapperRef = useRef(null);\r\n\r\n useEffect(() => {\r\n const closePopup = () => {\r\n changeSqftFeaturesPopup({ opened: false, sqftPassedData: null });\r\n };\r\n\r\n const handleClickOutside = (event) => {\r\n if (wrapperRef.current && !wrapperRef.current.contains(event.target)) {\r\n closePopup();\r\n }\r\n };\r\n\r\n if (isOpened) {\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n eventManager.addEvent(\r\n eventManager.events.MOUSE_DOWN,\r\n closePopup,\r\n { name: \"popupWrapper\" },\r\n eventManager.priorities.OVERALL\r\n );\r\n }\r\n\r\n return () => {\r\n document.removeEventListener(\"mousedown\", handleClickOutside);\r\n };\r\n }, [wrapperRef, isOpened, changeSqftFeaturesPopup]);\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {sqftFeaturesPopup, sqftFromFeature} = store.sqftState;\r\n return {\r\n sqftFeaturesPopup,\r\n sqftFromFeature,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n changeSqftFeaturesPopup\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SqftFeaturesPopupWrapper);\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport FilterListIcon from '@mui/icons-material/FilterList';\r\nimport InfoIcon from \"@mui/icons-material/Info\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\n\r\nimport {getFilterValueThumbnailAndStyles} from \"../../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\nimport {getFeatureGroupIconStyles, getFeatureGroupIconURL} from \"../../bvComponent/core/assets\";\r\nimport {wizardGroupInterface, wizardSelectedValueInterface} from \"../../../interfaces/wizardItemInterface\";\r\nimport {featureGroupInterface} from \"../../../interfaces/featureInterface\";\r\n\r\n\r\nconst MaterialsWizardFooterStepThumbnail = (props) => {\r\n\r\n const {wizardGroup, wizardSelectedValue, allFilterGroups, isMobile, activeTheme, featureGroup} = props;\r\n\r\n let selectedFilter = wizardSelectedValue ? wizardSelectedValue.selectedFilter : null;\r\n\r\n // const notSelected = !wizardSelectedValue || !(Object.keys(wizardSelectedValue).length)\r\n // || (!selectedFeature && !selectedFilter);\r\n //\r\n // if (notSelected) {\r\n // const featureGroup = wizardGroup ? getFeatureGroupFromWizardGroup(wizardGroup) : null;\r\n // return
    \r\n //
    \r\n // }\r\n\r\n if (wizardGroup && selectedFilter && wizardGroup.nodeType === \"filter\") {\r\n if (isMobile) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n )\r\n }\r\n const filterGroup = allFilterGroups.find(group => group.id === selectedFilter.filterGroup_id);\r\n const {styles} = getFilterValueThumbnailAndStyles(selectedFilter, filterGroup || {});\r\n return
    \r\n } else if (wizardGroup) {\r\n return (\r\n
    \r\n )\r\n }\r\n\r\n // just in case\r\n return (\r\n
    \r\n {isMobile\r\n ? \r\n :
    }\r\n
    \r\n )\r\n\r\n};\r\n\r\nMaterialsWizardFooterStepThumbnail.propTypes = {\r\n wizardGroup: PropTypes.shape(wizardGroupInterface),\r\n featureGroup: PropTypes.shape(featureGroupInterface),\r\n wizardSelectedValue: PropTypes.shape(wizardSelectedValueInterface),\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {filterGroups} = store.filterState;\r\n const {activeTheme} = store.serverState;\r\n\r\n return {\r\n allFilterGroups: filterGroups,\r\n activeTheme,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(MaterialsWizardFooterStepThumbnail)\r\n","import React from \"react\";\r\nimport CreditCardIcon from \"@mui/icons-material/CreditCard\";\r\nimport SvgIcon from \"@mui/material/SvgIcon\";\r\n\r\nimport creditCardIcons from \"../../../common/creditCardIcons\";\r\nimport {COLORS} from \"../../../../colorThemes\";\r\n\r\nconst _getSvgCardIcon = (iconName) => {creditCardIcons[iconName]};\r\n\r\nexport default function getCreditCardType(testCard) {\r\n const cardNumber = testCard.replaceAll(/ /g, \"\");\r\n let amex = new RegExp('^3[47][0-9]{13}$');\r\n let visa = new RegExp('^4[0-9]{12}(?:[0-9]{3})?$');\r\n let cup1 = new RegExp('^62[0-9]{14}[0-9]*$');\r\n let cup2 = new RegExp('^81[0-9]{14}[0-9]*$');\r\n\r\n let mastercard = new RegExp('^5[1-5][0-9]{14}$');\r\n let mastercard2 = new RegExp('^2[2-7][0-9]{14}$');\r\n\r\n let disco1 = new RegExp('^6011[0-9]{12}[0-9]*$');\r\n let disco2 = new RegExp('^62[24568][0-9]{13}[0-9]*$');\r\n let disco3 = new RegExp('^6[45][0-9]{14}[0-9]*$');\r\n\r\n let diners = new RegExp('^3[0689][0-9]{12}[0-9]*$');\r\n let jcb = new RegExp('^35[0-9]{14}[0-9]*$');\r\n\r\n\r\n if (visa.test(cardNumber)) {\r\n return {text: \"Visa\", icon: _getSvgCardIcon(\"visa\")};\r\n }\r\n if (amex.test(cardNumber)) {\r\n return {text: \"AmEx\", icon: _getSvgCardIcon(\"amex\")};\r\n }\r\n if (mastercard.test(cardNumber) || mastercard2.test(cardNumber)) {\r\n return {text: \"Mastercard\", icon: _getSvgCardIcon(\"mastercard\")};\r\n }\r\n if (disco1.test(cardNumber) || disco2.test(cardNumber) || disco3.test(cardNumber)) {\r\n return {text: \"Discover\", icon: _getSvgCardIcon(\"discover\")};\r\n }\r\n if (diners.test(cardNumber)) {\r\n return {text: \"Diners\", icon: {creditCardIcons[\"diners\"]}};\r\n }\r\n if (jcb.test(cardNumber)) {\r\n return {text: \"JCB\", icon: _getSvgCardIcon(\"jcb\")};\r\n }\r\n if (cup1.test(cardNumber) || cup2.test(cardNumber)) {\r\n return {text: \"Union Pay\", icon: _getSvgCardIcon(\"unionPay\")};\r\n }\r\n return {text: \"\", icon: };\r\n}\r\n","import JsonApi from \"./jsonApi\";\r\nimport {getSessionStorageItem, setSessionStorageItem} from \"../misc/storageFunctions\";\r\nimport {renderErrorPopup} from \"./api-popups\";\r\n\r\nexport const postLoginAdmin = (data) => {\r\n return JsonApi.loginAdmin(data)\r\n .then(response => {\r\n console.log(\"loginAdmin response\", response);\r\n if (response && response.status === 200 && response.data) {\r\n setSessionStorageItem(\"superAdminToken\", response.data);\r\n return true\r\n }\r\n return false\r\n })\r\n .catch(error => {\r\n console.log(\"Server error postLoginAdmin \"+new Error(error));\r\n return false\r\n })\r\n};\r\n\r\nexport const postEditFeatures = (data) => {\r\n const headers = {\r\n \"Content-Type\": \"application/json\",\r\n \"Authorization\": \"Bearer \" + getSessionStorageItem(\"superAdminToken\", false),\r\n }\r\n return JsonApi.postEditFeatures(data, headers)\r\n .then(response => {\r\n return response && response.data\r\n })\r\n .catch(error => {\r\n if (error && error.response && error.response.status === 401) {\r\n renderErrorPopup(\"Your session is expired, please re-login again\");\r\n } else {\r\n renderErrorPopup(error);\r\n }\r\n console.log(\"Server error postEditFeatures \"+new Error(error));\r\n return false\r\n })\r\n}\r\n","import React from 'react';\r\nimport {injectIntl} from \"react-intl\";\r\nimport {connect} from \"react-redux\";\r\n\r\nimport { polyfill } from 'es6-promise';\r\npolyfill();\r\nimport \"./polyfills/object.dataset\";\r\nimport \"./polyfills/string.includes\";\r\nimport \"./polyfills/string.startsWith\";\r\nimport \"./polyfills/jquery.preBind\";\r\nimport \"./polyfills/arrayMethods\";\r\nimport \"./polyfills/objectMethods\";\r\nimport \"./polyfills/numberMethods\";\r\nimport \"./lib/wrapText\";\r\nimport \"./lib/fraction\";\r\n//import {getNonce} from \"../../misc/utils\";\r\n\r\nimport SqftFooter from \"./components/sqftFooter\";\r\nimport SqftIcons from \"./components/SqftIcons\";\r\nimport ChangeLayoutPopup from \"../popups/changeLayoutPopup\";\r\nimport SqftManualCalculateWindow from \"./components/manualCalculate/SqftManualCalculateWindow\";\r\nimport SqftNavSettingsWindow from \"./components/popup/SqftNavSettingsWindow\";\r\nimport SqftTutorial from \"./components/popup/SqftTutorial\";\r\n// import SqftCabinetsTutorial from \"./components/popup/SqftCabinetsTutorial\";\r\nimport SqftSystemMessage from \"./components/popup/SqftSystemMessage\";\r\nimport AR3DPopup from \"./components/popup/AR3DPopup\";\r\nimport ValidationPopupWindow from \"./components/popup/ValidationPopupWindow\";\r\nimport SqftSystemDeleteMessage from \"./components/popup/SqftSystemDeleteMessage\";\r\nimport SqftLoadSlabWindow from \"./components/slab/SqftLoadSlabWindow\";\r\nimport SqftPopupWindow from \"./components/popup/SqftPopupWindow\";\r\nimport SqftLabelsContextMenuCategorySwitching\r\n from \"./components/canvas/core/controls/labels/sqftLabelsContextMenuCategorySwitching\";\r\nimport SqftLabelsContextMenu from \"./components/canvas/core/controls/labels/sqftLabelsContextMenu\";\r\nimport {\r\n setIsRoomSwitcherVisible,\r\n setSQFTActiveRoomId,\r\n setSQFTActiveRoomIndex,\r\n setSQFTActiveRoomType\r\n} from \"../../actions/sqftMenuFunctions\";\r\nimport SqftContextMenuV2 from \"./components/popup/SqftContextMenuV2\";\r\nimport ChangeValuePopupWindow from \"./components/popup/ChangeValuePopupWindow\";\r\nimport NavigationSidebar from \"./components/navigation/NavigationSidebar\";\r\nimport useUpdateSqftConfig from \"./hocs/onLoad/useUpdateSqftConfig\";\r\nimport useAddDeviceClass from \"./hocs/onLoad/useAddDeviceClass\";\r\n//import useImportSQFTData from \"./hocs/onLoad/useImportSQFTData\";\r\nimport useToggleRoomsSwitcher from \"./hocs/onLoad/useToggleRoomsSwitcher\";\r\nimport useOpenSQFTMenu from \"./hocs/onLoad/useOpenSQFTMenu\";\r\nimport useCheckWizardActiveItem from \"./hocs/onLoad/useCheckWizardActiveItem\";\r\nimport useResetState from \"./hocs/onLoad/useResetState\";\r\nimport SqftHeader from \"./components/header/SqftHeader\";\r\nimport useUpdateCabinetFeatures from \"./hocs/onLoad/useUpdateCabinetFeatures\";\r\nimport SquareFootageToolViewWorkspace from \"./squareFootageToolViewWorkspace\";\r\n//import NavigationSidebarRight from \"./components/navigation/NavigationSidebarRight\";\r\n//import useSetDefaultCabinetViewMode from \"./hocs/onLoad/useSetDefaultCabinetViewMode\";\r\n\r\nconst SquareFootageToolView = (props) => {\r\n const {visualizersLoaded} = props;\r\n const {cartItems, sqftPopup, fabricatorSettings,\r\n setSQFTActiveRoomIndex, setSQFTActiveRoomType, setSQFTActiveRoomId, activeQuoteIndex,\r\n setIsRoomSwitcherVisible, contextMenuV2, quotes, changeValuePopups, validationPopups, isSquareFootageEnabled} = props;\r\n\r\n useResetState();\r\n useUpdateSqftConfig();\r\n useAddDeviceClass();\r\n useToggleRoomsSwitcher( visualizersLoaded, fabricatorSettings, setIsRoomSwitcherVisible, quotes, setSQFTActiveRoomId,\r\n setSQFTActiveRoomIndex, setSQFTActiveRoomType, cartItems, activeQuoteIndex, isSquareFootageEnabled\r\n );\r\n //useSQFTRouting();\r\n //useSetDefaultCabinetViewMode(); //we assume is already in 2d\r\n useUpdateCabinetFeatures();\r\n\r\n useOpenSQFTMenu();\r\n useCheckWizardActiveItem();\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {/**/}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n visualizersLoaded.length ? : null\r\n }\r\n {\r\n visualizersLoaded.length ? : null\r\n }\r\n {\r\n visualizersLoaded.length ? : null\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n fabricatorSettings.useCategorySwitching ? : \r\n }\r\n {\r\n changeValuePopups.map((changeValuePopup, index) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n {\r\n validationPopups.map((validationPopup, index) => {\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\nconst mapStateToProps = (store) => {\r\n const {sqftFeaturesPopup} = store.sqftState;\r\n\r\n return {\r\n quotes: store.quotesState.quotes,\r\n fabricatorData: store.fabricatorState,\r\n sqftVisited: sqftFeaturesPopup.visited,\r\n sqftPopup: store.sqftMenuState.sqftPopup,\r\n activeButton: store.sqftMenuState.activeButton,\r\n contextMenuV2: store.sqftMenuState.contextMenuV2,\r\n isMobile: store.serverState.isMobile,\r\n cartItems: store.cartState.cartItems,\r\n windowWidth: store.serverState.windowWidth,\r\n visualizersLoaded: store.serverState.visualizersLoaded,\r\n isShowSlabTool: store.sqftSlabState.isShowSlabTool,\r\n fabricatorSettings: store.fabricatorState.settings,\r\n activeQuoteIndex: store.quotesState.activeQuoteIndex,\r\n changeValuePopups: store.sqftMenuState.changeValuePopups,\r\n validationPopups: store.sqftMenuState.validationPopups,\r\n isSquareFootageEnabled: store.sqftState.isSquareFootageEnabled,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setSQFTActiveRoomId,\r\n setSQFTActiveRoomIndex,\r\n setSQFTActiveRoomType,\r\n setIsRoomSwitcherVisible,\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(SquareFootageToolView)\r\n);\r\n","import React from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\nimport {setQuotes} from \"../../../actions/roomsFunctions\";\r\nimport {changeSqftFeaturesPopup, setSqftMeasureUnit, setSquareFeet} from \"../../../actions/sqftFunctions\";\r\nimport {setMaterialsPageSubSteps} from \"../../../actions/selectionFunctions\";\r\nimport {\r\n changeCartItemQuantity,\r\n changeSelectionInfoQuantity,\r\n setCameFromPage,\r\n toggleSelectionFeatureInfo\r\n} from \"../../../actions/actionFunctions\";\r\nimport WithAddToQuote from \"../hocs/withAddToQuote\";\r\n\r\nconst SqftFooterAddToQuoteButton = (props) => {\r\n\r\n return (\r\n \r\n {(handleAddToQuoteClick) => (\r\n \r\n )}\r\n \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => ({\r\n measureUnit: store.sqftState.measureUnit,\r\n showManualCalculation: store.sqftManualCalculationState.showManualCalculation,\r\n quotes: store.quotesState.quotes,\r\n cartItems: store.cartState.cartItems,\r\n selectionFeatureInfo: store.selectionState.selectionFeatureInfo,\r\n activeQuoteIndex: store.quotesState.activeQuoteIndex,\r\n sqftVisited: store.sqftState.sqftFeaturesPopup.visited,\r\n isSlabToolVisited: store.sqftSlabState.isSlabToolVisited,\r\n useSqftCartPopup: store.sqftState.sqftFeaturesPopup.enabled,\r\n cameFromPage: store.cartState.cameFromPage\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n setQuotes,\r\n setSquareFeet,\r\n setMaterialsPageSubSteps,\r\n changeSqftFeaturesPopup,\r\n toggleSelectionFeatureInfo,\r\n setCameFromPage,\r\n changeCartItemQuantity,\r\n changeSelectionInfoQuantity,\r\n setSqftMeasureUnit,\r\n};\r\n\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SqftFooterAddToQuoteButton);\r\n","import React from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\nimport {setCameFromPage, toggleConfirmPopup, toggleSelectionFeatureInfo} from \"../../../actions/actionFunctions\";\r\nimport WithSqftFooterCancel from \"../hocs/withSqftFooterCancel\";\r\n\r\nconst SqftFooterCancelButton = (props) => {\r\n\r\n return (\r\n \r\n {(handleCloseSQFtCalc) => (\r\n \r\n )}\r\n \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => ({\r\n cameFromPage: store.cartState.cameFromPage,\r\n showManualCalculation: store.sqftManualCalculationState.showManualCalculation,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n toggleConfirmPopup,\r\n toggleSelectionFeatureInfo,\r\n setCameFromPage\r\n};\r\n\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SqftFooterCancelButton);\r\n","import {connect} from \"react-redux\";\r\nimport {manualCalculationsCheckForChangesApplied} from \"../helpers/sqftCalculations\";\r\nimport {ConfirmPopupTypes} from \"../../visComponents/constants\";\r\nimport {setCameFromPage, toggleConfirmPopup, toggleSelectionFeatureInfo} from \"../../../actions/actionFunctions\";\r\nimport {setSqftFromFeature} from \"../../../actions/sqftFunctions\";\r\nimport {withRouter} from \"react-router-dom\";\r\n\r\nimport workspaceHistory from \"../components/canvas/core/workspaceHistory\";\r\nimport {useCloseSQFTCalc} from \"./useCloseSQFTCalc\";\r\nimport {enableRegularMode} from \"../components/canvas/store/canvasHelper\";\r\nimport {clearAllMenusEvents} from \"../components/canvas/core/workspace/workspaceEvents\";\r\nimport {showSlabTool} from \"../../../actions/sqftSlabFunctions\";\r\n\r\nconst WithSqftFooterCancel = (props) => {\r\n const {showManualCalculation, toggleConfirmPopup, showSlabTool} = props;\r\n const {children} = props;\r\n const {closeSQFTCalc} = useCloseSQFTCalc();\r\n\r\n const handleCancelClick = () => {\r\n if (showManualCalculation) {\r\n manualCalculationsCheckForChangesApplied() ? callResetDataPopup() : closeSQFTCalc(false);\r\n } else {\r\n showSlabTool(false);\r\n enableRegularMode();\r\n clearAllMenusEvents();\r\n workspaceHistory.checkForChangesApplied() ? callResetDataPopup() : closeSQFTCalc(false);\r\n }\r\n };\r\n\r\n const callResetDataPopup = () => {\r\n toggleConfirmPopup(true, ConfirmPopupTypes.SqftResetChanges);\r\n };\r\n\r\n return children(handleCancelClick);\r\n};\r\n\r\nconst mapStateToProps = (store) => ({\r\n cameFromPage: store.cartState.cameFromPage,\r\n showManualCalculation: store.sqftManualCalculationState.showManualCalculation,\r\n activePreset: store.bathroomVisualizerState.activePreset,\r\n bvPresets: store.bathroomVisualizerState.bvPresets,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n toggleConfirmPopup,\r\n toggleSelectionFeatureInfo,\r\n setCameFromPage,\r\n setSqftFromFeature,\r\n showSlabTool,\r\n};\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(WithSqftFooterCancel)\r\n);\r\n","import React from 'react'\r\nimport {connect} from \"react-redux\";\r\nimport {setSQFTActiveButton} from \"../../../../actions/sqftMenuFunctions\";\r\nimport {setSqftMeasureUnit} from \"../../../../actions/sqftFunctions\";\r\nimport PropTypes from \"prop-types\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nconst SqftPopupWindow = (props) => {\r\n const {title, content, isOpened} = props;\r\n const {confirmCallback, confirmText, cancelCallback, cancelText} = props;\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n {title}\r\n
    \r\n \r\n
    \r\n
    \r\n {content}\r\n
    \r\n
    \r\n {\r\n cancelText ?\r\n \r\n : null\r\n }\r\n {\r\n confirmText ?\r\n \r\n : null\r\n }\r\n
    \r\n
    \r\n
    \r\n )\r\n};\r\n\r\nSqftPopupWindow.propTypes = {\r\n title: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.object,\r\n PropTypes.instanceOf(FormattedMessage)\r\n ]),\r\n content: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.object,\r\n PropTypes.instanceOf(FormattedMessage)\r\n ]),\r\n isOpened: PropTypes.bool,\r\n confirmCallback: PropTypes.func,\r\n confirmText: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.object,\r\n PropTypes.instanceOf(FormattedMessage)\r\n ]),\r\n cancelCallback: PropTypes.func,\r\n cancelText: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.object,\r\n PropTypes.instanceOf(FormattedMessage)\r\n ]),\r\n};\r\n\r\nconst mapStateToProps = (store) => ({\r\n activeButton: store.sqftMenuState.activeButton,\r\n measureUnit: store.sqftState.measureUnit,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n setSQFTActiveButton,\r\n setSqftMeasureUnit\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SqftPopupWindow);\r\n","import point from \"../point\";\r\nimport line from \"../line\";\r\n\r\nconst Square = (size, isIsland = false) => {\r\n let points = isIsland ? [\r\n new point(0, 15, \"lefttop\"),\r\n new point(65, 15, \"righttop\"),\r\n new point(65, 80, \"rightbottom\"),\r\n new point(0, 80, \"leftbottom\")\r\n ] : [\r\n new point(0, 0, \"lefttop\"),\r\n new point(65, 0, \"righttop\"),\r\n new point(65, 65, \"rightbottom\"),\r\n new point(0, 65, \"leftbottom\")\r\n ];\r\n\r\n return [\r\n new line(points[0], points[1]),\r\n new line(points[1], points[2]),\r\n new line(points[2], points[3]),\r\n new line(points[3], points[0])\r\n ];\r\n};\r\n\r\nexport default Square\r\n","import point from \"../point\";\r\nimport line from \"../line\";\r\nimport config from \"../../../store/sqftConfig\";\r\n\r\nconst wideAngle = function() {\r\n let points;\r\n if(config.measureUnit === \"Metric\" ) {\r\n points = [\r\n new point(-13.62, -10, \"lefttop\"),\r\n new point(134, -10, \"righttop\"),\r\n new point(134, 13.62, \"rightbottom\"),\r\n new point(10, 13.62, \"rightbottom\", true),\r\n new point(10, 114, \"rightbottom\"),\r\n new point(-13.62, 114, \"leftbottom\")\r\n ];\r\n } else {\r\n points = [\r\n new point(-16, -10, \"lefttop\"),\r\n new point(134, -10, \"righttop\"),\r\n new point(134, 16, \"rightbottom\"),\r\n new point(10, 16, \"rightbottom\", true),\r\n new point(10, 114, \"rightbottom\"),\r\n new point(-16, 114, \"leftbottom\")\r\n ];\r\n }\r\n\r\n let lines = [\r\n new line(points[0], points[1]),\r\n new line(points[1], points[2]),\r\n new line(points[2], points[3]),\r\n new line(points[3], points[4]),\r\n new line(points[4], points[5]),\r\n new line(points[5], points[0])\r\n ];\r\n\r\n return lines;\r\n};\r\n\r\nexport default wideAngle\r\n","import point from \"../point\";\r\nimport line from \"../line\";\r\nimport config from \"../../../store/sqftConfig\";\r\n\r\nconst horseshoe = function() {\r\n let points;\r\n if(config.measureUnit === \"Metric\" ) {\r\n points = [\r\n new point(0, -20, \"lefttop\"),\r\n new point(181, -20, \"righttop\"),\r\n new point(181, 80, \"rightbottom\"),\r\n new point(157.38, 80, \"leftbottom\"),\r\n new point(157.38, 3.62, \"leftbottom\", true),\r\n new point(23.62, 3.62, \"rightbottom\", true),\r\n new point(23.62, 80, \"rightbottom\"),\r\n new point(0, 80, \"leftbottom\")\r\n ];\r\n } else {\r\n points = [\r\n new point(0, -20, \"lefttop\"),\r\n new point(181, -20, \"righttop\"),\r\n new point(181, 80, \"rightbottom\"),\r\n new point(155, 80, \"leftbottom\"),\r\n new point(155, 6, \"leftbottom\", true),\r\n new point(26, 6, \"rightbottom\", true),\r\n new point(26, 80, \"rightbottom\"),\r\n new point(0, 80, \"leftbottom\")\r\n ];\r\n }\r\n\r\n let lines = [\r\n new line(points[0], points[1]),\r\n new line(points[1], points[2]),\r\n new line(points[2], points[3]),\r\n new line(points[3], points[4]),\r\n new line(points[4], points[5]),\r\n new line(points[5], points[6]),\r\n new line(points[6], points[7]),\r\n new line(points[7], points[0])\r\n ];\r\n\r\n return lines;\r\n};\r\n\r\nexport default horseshoe\r\n","import React, {useEffect} from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\nimport {setSwitcherPosition, toggleShowManualCalculation} from \"../../../../../actions/sqftManualCalculationFunctions\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst ManualCalculateSwitcher = (props) => {\r\n const {overlay, setSwitcherPosition, switcherPosition, showManualCalculation, toggleShowManualCalculation, isMobile,\r\n sideBarButtons} = props;\r\n\r\n const handleButtonClick = () => {\r\n // changeStateToQuote();\r\n toggleShowManualCalculation(!showManualCalculation);\r\n };\r\n\r\n useEffect(() => {\r\n if (!overlay) {\r\n const elem = document.getElementById(\"manual-switcher\");\r\n const rect = elem.getBoundingClientRect();\r\n setSwitcherPosition({rect})\r\n }\r\n }, [overlay, sideBarButtons, setSwitcherPosition]);\r\n\r\n const blockStyle = {\r\n left: overlay ? switcherPosition.rect.left : ''\r\n }\r\n isMobile\r\n ? blockStyle.bottom = overlay ? '13px' : ''\r\n : blockStyle.top = overlay ? switcherPosition.rect.top : ''\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n )\r\n};\r\n\r\nManualCalculateSwitcher.propTypes = {\r\n overlay: PropTypes.bool,\r\n sideBarButtons: PropTypes.array,\r\n};\r\n\r\nconst mapStateToProps = (store) => ({\r\n showManualCalculation: store.sqftManualCalculationState.showManualCalculation,\r\n switcherPosition: store.sqftManualCalculationState.switcherPosition,\r\n isMobile: store.serverState.isMobile,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n toggleShowManualCalculation,\r\n setSwitcherPosition,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ManualCalculateSwitcher);\r\n","// ExportButton.js\r\nimport React from 'react';\r\nimport SqftStore from \"../../../canvas/store/sqftStore\";\r\n\r\nconst ExportButton = () => {\r\n const exportScene = () => {\r\n const exporter = new window.GLTFExporter();\r\n const viewGL = SqftStore.viewGL;\r\n\r\n if (viewGL && viewGL.scene) {\r\n exporter.parse(viewGL.scene, (gltf) => {\r\n const blob = new Blob([JSON.stringify(gltf)], {type: 'text/plain'});\r\n const link = document.createElement('a');\r\n link.style.display = 'none';\r\n document.body.appendChild(link);\r\n link.href = URL.createObjectURL(blob);\r\n link.download = 'scene.gltf';\r\n link.click();\r\n });\r\n } else {\r\n console.error('GLBViewer instance or scene not found');\r\n }\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default ExportButton;\r\n","import React, {Fragment, useEffect} from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport {setAbortController, setSQFTAr3dPopup} from \"../../../../../actions/sqftMenuFunctions\";\r\nimport ShapesGoogleModelViewer from \"./ShapesGoogleModelViewer\";\r\nimport ShapesThreeJsViewer from \"./ShapesThreeJsViewer\";\r\nimport MultiLoader from \"../../../../ui/multiLoader\";\r\nimport store from \"../../../../../store\";\r\nimport {setMultiLoader} from \"../../../../../actions/actionFunctions\";\r\n//import GroheFeatures from \"../../../look/grohe/groheNavigation/groheFeatures/groheFeatures\";\r\nimport {setLookActiveCategory, setLookOpened} from \"../../../../../actions/lookFunctions\";\r\nimport {setAPIErrorMessage, setSqftCabinetsGlb} from \"../../../../../actions/sqftFunctions\";\r\n//import {setCabinetGLBFromCabinetsSet} from \"../../../helpers/sqft3dArHelper\";\r\n//import sqftShapeManager from \"../canvas/store/sqftShapeManager\";\r\n//import {SHAPE_PART_ID} from \"../../../constants\";\r\n//import {isProd} from \"../../../../misc/fabricatorHardcode\";\r\nimport {IS_QKB_UI} from \"../../../../../config\";\r\nimport PropTypes from \"prop-types\";\r\nimport sqftConfig from \"../../canvas/store/sqftConfig\";\r\n\r\nconst ThreeDWorkspace = (props) => {\r\n const {apiErrorMessage, setLookOpened, abortRequestController} = props;\r\n //const {lookActiveFeature, setLookActiveCategory, displayDoorsOnly} = props;\r\n\r\n useEffect(()=> {\r\n if (!IS_QKB_UI) {\r\n setLookOpened(false);\r\n }\r\n }, [setLookOpened])\r\n\r\n useEffect(()=> {\r\n return () => {\r\n if (abortRequestController) {\r\n abortRequestController.abort();\r\n }\r\n store.dispatch(setMultiLoader({activeStep: 8, visible: false, finished: true}));\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n // //todo lookActiveFeature is always triggered\r\n // //todo CHANGE FEATURES FROM THREE D\r\n // useEffect(()=> {\r\n // // wi will display door styles for this category\r\n // //todo\r\n // setLookActiveCategory(SHAPE_PART_ID.top_cabinet);\r\n //\r\n // store.dispatch(setMultiLoader({activeStep: 0, visible: false, finished: false}));\r\n // store.dispatch(setMultiLoader({activeStep: 0, visible: true, finished: false}));\r\n //\r\n // //todo update lower and bottom separately\r\n // //sqftShapeManager.changeShapesFeatureIDIfColorWasChanged(lookActiveFeature);\r\n //\r\n // setCabinetGLBFromCabinetsSet(displayDoorsOnly).then(r => void r);\r\n //\r\n // // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // }, [lookActiveFeature])\r\n\r\n return (\r\n
    \r\n {sqftConfig.threeD.useGoogleModelViewer\r\n ? \r\n : (\r\n \r\n {}\r\n {apiErrorMessage || }\r\n \r\n )}\r\n {/* TODO CHANGE FEATURES FROM THREE D */}\r\n {/*{ !isProd() ? : null}*/}\r\n
    \r\n )\r\n};\r\n\r\nThreeDWorkspace.propTypes = {\r\n displayDoorsOnly: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n cabinetsGlb: store.sqftState.cabinetsGlb,\r\n apiErrorMessage: store.sqftState.apiErrorMessage,\r\n abortRequestController: store.sqftState.abortRequestController,\r\n lookActiveFeature: store.lookState.lookActiveFeature,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n setSQFTAr3dPopup,\r\n setLookActiveCategory,\r\n setSqftCabinetsGlb,\r\n setAPIErrorMessage,\r\n setAbortController,\r\n setLookOpened,\r\n};\r\n\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ThreeDWorkspace);\r\n","import {HDR_MAP_LOADER, loadHDRMap} from \"./scene/HDRMapLoader\";\r\nimport SceneModelsLoader from \"./scene/SceneModelsLoader\";\r\nimport store from \"../../../../../../store\";\r\nimport {setMultiLoader} from \"../../../../../../actions/actionFunctions\";\r\nimport Misc from \"../../../../../../config\";\r\nimport {isTouchDevice} from \"../../../../../../misc/utils\";\r\n\r\nclass SeparateModelGLBViewer {\r\n spinner = null;\r\n animationFrameId = null;\r\n lightIntensity = null;\r\n modelScale = 39.37;\r\n envMap = null;\r\n gltf = null;\r\n isMobile = false;\r\n modelLoader = null;\r\n modelsCenter = null;\r\n modelsSize = null;\r\n modelsLoaded = false;\r\n\r\n constructor(canvas, glbUrl, lightIntensity, isMobile) {\r\n this.canvas = canvas;\r\n this.glbUrl = glbUrl;\r\n this.lightIntensity = lightIntensity;\r\n this.isMobile = isMobile;\r\n\r\n // this.initSpinner();\r\n this.initScene();\r\n this.modelsLoader = new SceneModelsLoader(this, this.scene, this.modelScale);\r\n }\r\n\r\n initScene() {\r\n const isMobile = Misc.isMobile() || isTouchDevice();\r\n\r\n this.scene = new window.THREE.Scene();\r\n //this.scene.background = new window.THREE.Color(0xf0f0f0);\r\n //this.scene.background = new window.THREE.Color(0xbcc4ce);\r\n this.scene.background = new window.THREE.Color(0xcccccc);\r\n\r\n this.camera = new window.THREE.PerspectiveCamera(\r\n 45,\r\n this.canvas.clientWidth / this.canvas.clientHeight,\r\n 0.1,\r\n 1000\r\n );\r\n this.camera.position.set(0, 0, 5);\r\n\r\n this.renderer = new window.THREE.WebGLRenderer({\r\n canvas: this.canvas,\r\n antialias: true,\r\n //antialias: !isMobile,\r\n preserveDrawingBuffer: true,\r\n powerPreference: isMobile ? \"low-power\" : \"high-performance\",\r\n });\r\n\r\n this.renderer.setSize(this.canvas.clientWidth, this.canvas.clientHeight);\r\n this.renderer.setPixelRatio(isMobile ? 1 : window.devicePixelRatio);\r\n this.renderer.outputColorSpace = window.THREE.SRGBColorSpace;\r\n this.renderer.useLegacyLights = false;\r\n this.renderer.toneMapping = window.THREE.ACESFilmicToneMapping;\r\n this.renderer.toneMappingExposure = 1;\r\n this.renderer.shadowMap.enabled = true;\r\n this.renderer.shadowMap.autoUpdate = true;\r\n this.renderer.shadowMap.type = window.THREE.VSMShadowMap;\r\n this.renderer.gammaOutput = true;\r\n this.renderer.gammaFactor = 2.2;\r\n\r\n this.controls = new window.OrbitControls(this.camera, this.renderer.domElement);\r\n this.controls.target.set(0, 0, 0);\r\n this.controls.update();\r\n this.controls.enableDamping = true;\r\n this.controls.dampingFactor = 0.1;\r\n this.controls.screenSpacePanning = true;\r\n this.controls.minDistance = 0.1;\r\n this.controls.maxDistance = 100;\r\n this.renderer.xr.enabled = true;\r\n\r\n const isIosDevice = navigator && (/iPad|iPhone/.test(navigator.userAgent));\r\n if (isMobile || isIosDevice) {\r\n // this.renderer.antialias = false;\r\n this.renderer.setPixelRatio(1);\r\n //this.renderer.setPixelRatio(0.5);\r\n this.renderer.powerPreference = \"low-power\";\r\n this.renderer.precision = \"lowp\";\r\n this.renderer.shadowMap.enabled = false;\r\n this.renderer.preserveDrawingBuffer = false;\r\n this.renderer.toneMapping = window.THREE.NoToneMapping;\r\n } else {\r\n loadHDRMap(this.scene, this.renderer, HDR_MAP_LOADER.pmremGeneratorEXR);\r\n }\r\n\r\n //const hdrBackgroundPath = \"/images/sqft-icons/3d/comfy_cafe_1k.hdr\"\r\n //this.loadHDRAsBackground(hdrBackgroundPath);\r\n }\r\n\r\n setModelsCenter = (modelsCenter) => {\r\n this.modelsCenter = modelsCenter\r\n }\r\n\r\n closeMultiLoader() {\r\n store.dispatch(setMultiLoader({ activeStep: 8 }));\r\n setTimeout(() => {\r\n store.dispatch(setMultiLoader({ visible: false }));\r\n }, 500);\r\n }\r\n\r\n calculateAndSetCameraPosition(center, size) {\r\n this.controls.reset();\r\n this.controls.target.copy(center);\r\n this.controls.maxDistance = size * 10;\r\n\r\n this.camera.position.copy(center.clone().add(new window.THREE.Vector3(size, size / 5, size * 2)));\r\n this.camera.near = size / 100;\r\n this.camera.far = size * 100;\r\n this.camera.lookAt(center);\r\n this.camera.updateProjectionMatrix();\r\n\r\n // if (this.controls) {\r\n // this.controls.reset();\r\n // this.controls.maxDistance = size * 10;\r\n // }\r\n //\r\n // if (this.camera) {\r\n // this.camera.position.copy(center);\r\n // this.camera.position.x += size; // far distance\r\n // this.camera.position.y += size / 5.0;\r\n // //this.camera.position.z += size;\r\n // this.camera.position.z *= -1; // rotate distance\r\n //\r\n // this.camera.near = size / 100;\r\n // this.camera.far = size * 100;\r\n // this.camera.updateProjectionMatrix();\r\n // }\r\n }\r\n\r\n addLight(boxCenter) {\r\n //console.log(\"boxCenter\", boxCenter);\r\n //const maxSize = Math.max(boxSize.x, boxSize.y, boxSize.z);\r\n const lightOffset = 4.5;\r\n const baseHeight = 2.5;\r\n\r\n const dynamicIntensity = this.lightIntensity ;\r\n\r\n //console.log(`maxSize: ${maxSize}, lightOffset: ${lightOffset}, baseHeight: ${baseHeight}`);\r\n console.log(`this.lightIntensity: ${this.lightIntensity }`);\r\n console.log(`dynamicIntensity: ${dynamicIntensity}`);\r\n\r\n const lightPositions = [\r\n // Central light\r\n { x: 0, y: baseHeight / 2, z: 5 },\r\n { x: 0, y: baseHeight * 2, z: 5 },\r\n\r\n // Upper corner Light\r\n { x: lightOffset, y: baseHeight, z: lightOffset },\r\n { x: -lightOffset, y: baseHeight, z: lightOffset },\r\n { x: lightOffset, y: baseHeight, z: -lightOffset },\r\n { x: -lightOffset, y: baseHeight, z: -lightOffset },\r\n\r\n // Bottom light\r\n { x: lightOffset, y: -baseHeight, z: lightOffset },\r\n { x: -lightOffset, y: -baseHeight, z: lightOffset },\r\n { x: lightOffset, y: -baseHeight, z: -lightOffset },\r\n { x: -lightOffset, y: -baseHeight, z: -lightOffset }\r\n ];\r\n\r\n\r\n lightPositions.forEach(pos => {\r\n let light = new window.THREE.PointLight(0xffffff, dynamicIntensity, 0, 2);\r\n light.position.set(boxCenter.x + pos.x, boxCenter.y + pos.y, boxCenter.z + pos.z);\r\n light.castShadow = true;\r\n this.scene.add(light);\r\n //console.log(`Light position: x: ${pos.x}, y: ${pos.y}, z: ${pos.z}, Intensity: ${dynamicIntensity}`);\r\n });\r\n\r\n // Добавление окружающего света для общего освещения\r\n const ambientLight = new window.THREE.AmbientLight(0xffffff, 0.1);\r\n this.scene.add(ambientLight);\r\n\r\n const directionalLight = new window.THREE.DirectionalLight(0xffffff, 0.8);\r\n directionalLight.position.set(boxCenter.x, boxCenter.y, boxCenter.z + 10);\r\n directionalLight.castShadow = true;\r\n this.scene.add(directionalLight);\r\n }\r\n\r\n addLightV9(boxCenter) {\r\n this.renderer.toneMappingExposure = 0.1;\r\n this.lightIntensity = 800;\r\n this.addLight(boxCenter);\r\n }\r\n\r\n addLightV10(boxCenter) {\r\n this.renderer.toneMappingExposure = 1;\r\n this.lightIntensity = 20;\r\n\r\n this.addLight(boxCenter);\r\n }\r\n\r\n updateSceneLighting(type) {\r\n // Delete current lights\r\n this.scene.children = this.scene.children.filter(child => !(child instanceof window.THREE.Light));\r\n\r\n // Create and add new light\r\n switch (type) {\r\n case 'addLightV9':\r\n this.addLightV9(this.modelsCenter);\r\n break;\r\n case 'addLightV10':\r\n this.addLightV10(this.modelsCenter);\r\n break;\r\n default:\r\n console.warn(`Unknown lighting type: ${type}`);\r\n break;\r\n }\r\n }\r\n\r\n updateLightIntensity(intensity) {\r\n this.lightIntensity = intensity\r\n this.scene.children.forEach(child => {\r\n if (child instanceof window.THREE.PointLight) {\r\n //console.log(\"child.intensity\", child.intensity);\r\n child.intensity = intensity;\r\n }\r\n });\r\n }\r\n\r\n startAnimation() {\r\n const animate = () => {\r\n this.animationFrameId = requestAnimationFrame(animate);\r\n if (this.controls) {\r\n this.controls.update();\r\n }\r\n if (this.renderer) {\r\n this.renderer.render(this.scene, this.camera);\r\n }\r\n\r\n };\r\n\r\n animate();\r\n }\r\n\r\n stopAnimation() {\r\n if (this.animationFrameId) {\r\n cancelAnimationFrame(this.animationFrameId);\r\n this.animationFrameId = null;\r\n }\r\n }\r\n\r\n dispose() {\r\n this.stopAnimation();\r\n this.scene.traverse((child) => {\r\n if (child.isMesh) {\r\n if (child.geometry) child.geometry.dispose();\r\n if (child.material) {\r\n if (Array.isArray(child.material)) {\r\n child.material.forEach((mat) => mat.dispose());\r\n } else {\r\n child.material.dispose();\r\n }\r\n }\r\n }\r\n });\r\n this.renderer.dispose();\r\n this.controls.dispose();\r\n\r\n // Remove spinner\r\n // if (this.spinner) {\r\n // ReactDOM.unmountComponentAtNode(this.spinner);\r\n // this.spinner.remove();\r\n // this.spinner = null;\r\n // }\r\n\r\n // Nullify properties to free up memory\r\n this.scene = null;\r\n this.camera = null;\r\n this.renderer = null;\r\n this.controls = null;\r\n this.canvas = null;\r\n }\r\n\r\n onMouseDown() {\r\n }\r\n\r\n onMouseMove() {\r\n }\r\n\r\n onMouseUp() {\r\n }\r\n\r\n onWheel() {\r\n }\r\n\r\n onWindowResize() {\r\n if (!this.canvas || !this.renderer || !this.camera) return;\r\n\r\n this.canvas.width = this.canvas.clientWidth;\r\n this.canvas.height = this.canvas.clientHeight;\r\n\r\n this.camera.aspect = this.canvas.clientWidth / this.canvas.clientHeight;\r\n this.camera.updateProjectionMatrix();\r\n\r\n this.renderer.setSize(this.canvas.clientWidth, this.canvas.clientHeight, false);\r\n this.renderer.setPixelRatio(window.devicePixelRatio);\r\n }\r\n\r\n // This methods will rotate scene in case OrbitControls wont fit everything\r\n\r\n // onMouseDown(event) {\r\n // this.mouseDown = true;\r\n // this.lastPosition = {\r\n // x: event.clientX,\r\n // y: event.clientY\r\n // };\r\n // }\r\n //\r\n // onMouseMove(event) {\r\n // if (!this.mouseDown) return;\r\n //\r\n // const deltaX = event.clientX - this.lastPosition.x;\r\n // const deltaY = event.clientY - this.lastPosition.y;\r\n //\r\n // this.camera.rotation.y += deltaX * 0.01;\r\n // this.camera.rotation.x += deltaY * 0.01;\r\n //\r\n // this.lastPosition = {\r\n // x: event.clientX,\r\n // y: event.clientY\r\n // };\r\n //\r\n // this.renderer.render(this.scene, this.camera);\r\n // }\r\n //\r\n // onMouseUp() {\r\n // this.mouseDown = false;\r\n // }\r\n //\r\n // onWheel(event) {\r\n // const delta = event.deltaY * 0.001;\r\n // this.camera.position.z += delta;\r\n //\r\n // this.renderer.render(this.scene, this.camera);\r\n // }\r\n // onWindowResize() {\r\n //\r\n // }\r\n}\r\n\r\nexport default SeparateModelGLBViewer;\r\n","import React, {useEffect} from 'react';\r\nimport {injectIntl} from \"react-intl\";\r\nimport {connect} from \"react-redux\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport {LookAugmentRealityIcon} from \"../../../../common/icons\";\r\nimport GLBLoader from \"./arButton/GLBLoader\";\r\nimport PropTypes from \"prop-types\";\r\nimport SvgIcon from \"@mui/material/SvgIcon\";\r\nimport Button from \"@mui/material/Button\";\r\n\r\nconst ARButton = (props) => {\r\n const {url, cabinetsARBlobUrl} = props;\r\n\r\n useEffect(() => {\r\n //let url = 'https://s3.amazonaws.com/qc-3dfiles/composed/' + file + '.glb'\r\n //url = 'https://discoverthreejs.com/examples/assets/models/Parrot.glb';\r\n //url = 'https://threejs.org/examples/models/gltf/AnisotropyBarnLamp.glb';\r\n //url = '/images/sqft-icons/3d/Chair.glb';\r\n //url = 'https://qc-3dfiles.s3.amazonaws.com/ar-composer/WBC3630_Brown.glb';\r\n new GLBLoader(url);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const makeImage = () => {\r\n const c = document.createElement('canvas');\r\n const i = new Image();\r\n i.src = c.toDataURL();\r\n\r\n return i;\r\n }\r\n\r\n const makeLink = (blobUrl) => {\r\n console.log(\"blobUrl\", blobUrl);\r\n return Object.assign(document.createElement('a'), {\r\n download: 'asset.usdz',\r\n rel: \"ar\",\r\n href: blobUrl //URL.createObjectURL(blob)\r\n });\r\n }\r\n\r\n const arClick = () => {\r\n const i = makeImage();\r\n const a = makeLink(cabinetsARBlobUrl)\r\n a.appendChild(i);\r\n\r\n a.click();\r\n }\r\n\r\n return (\r\n \r\n )\r\n};\r\n\r\nARButton.propTypes = {\r\n url: PropTypes.string,\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n visualizersLoaded: store.serverState.visualizersLoaded,\r\n cabinetsARBlobUrl: store.sqftState.cabinetsARBlobUrl,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n};\r\n\r\nexport default withRouter(\r\n injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(ARButton)\r\n )\r\n);\r\n","import React from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport {setSQFTSystemMessage} from \"../../../../actions/sqftMenuFunctions\";\r\n\r\nconst ValidationPopupWindow = (props) => {\r\n const {id, text, position, isHidden} = props;\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n {text}\r\n
    \r\n
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => ({\r\n validationMessage: store.sqftMenuState.validationMessage\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n setSQFTSystemMessage\r\n};\r\n\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ValidationPopupWindow);\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport {CONTEXT_MENU_TYPE} from \"../../../../../constants\";\r\nimport ContextmenuList from \"./contextmenu/contextmenuList\";\r\nimport ContextmenuButtons from \"./contextmenu/contextmenuButtons\";\r\n\r\nconst SqftContextMenu = (props) => {\r\n const {contextMenuType} = props;\r\n\r\n switch (contextMenuType) {\r\n case CONTEXT_MENU_TYPE.list:\r\n return \r\n case CONTEXT_MENU_TYPE.buttons:\r\n return \r\n }\r\n};\r\n\r\nconst mapStateToProps = () => ({\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SqftContextMenu);\r\n\r\n","import React from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {setSqftSlabToolVisited, addRoomWithVisitedSlabTool, showSlabTool} from \"../../../../../actions/sqftSlabFunctions\";\r\nimport {\r\n setSQFTActiveButton,\r\n setSQFTMenuOpened\r\n} from \"../../../../../actions/sqftMenuFunctions\";\r\nimport {enableRegularMode, enableSlabMode} from \"../../canvas/store/canvasHelper\";\r\nimport {clearAllMenusEvents} from \"../../canvas/core/workspace/workspaceEvents\";\r\nimport {getQtCatName} from \"../../../helpers/sqftQuotesHelper\";\r\n\r\nconst SlabToolSwitcher = (props) => {\r\n const {isShowSlabTool, isSlabToolVisited, showSlabTool, setSQFTActiveButton, setSQFTMenuOpened,\r\n setSqftSlabToolVisited, addRoomWithVisitedSlabTool} = props;\r\n\r\n const handleButtonClick = () => {\r\n clearAllMenusEvents();\r\n !isShowSlabTool ? enableSlabMode(true) : enableRegularMode(); // before change isShowSlabTool we need to disable and restore shapes\r\n !isSlabToolVisited && setSqftSlabToolVisited(true);\r\n addRoomWithVisitedSlabTool(getQtCatName());\r\n showSlabTool(!isShowSlabTool);\r\n setSQFTActiveButton(\"\");\r\n setSQFTMenuOpened(\"\");\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => ({\r\n isShowSlabTool: store.sqftSlabState.isShowSlabTool,\r\n isSlabToolVisited: store.sqftSlabState.isSlabToolVisited,\r\n showManualCalculation: store.sqftManualCalculationState.showManualCalculation,\r\n switcherPosition: store.sqftManualCalculationState.switcherPosition,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n showSlabTool,\r\n setSQFTActiveButton,\r\n setSQFTMenuOpened,\r\n setSqftSlabToolVisited,\r\n addRoomWithVisitedSlabTool,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SlabToolSwitcher);\r\n","import eventManager from \"../../store/sqftEventManager\";\r\nimport config from \"../../store/sqftConfig\";\r\nimport workspace from \"../workspace\";\r\nimport store from \"../../../../../../store\";\r\nimport $ from \"jquery\";\r\nimport {iconPlusBlack, iconPlusBlue} from \"../../../../assetsSQFT\";\r\nimport {setSQFTMenuOpened} from \"../../../../../../actions/sqftMenuFunctions\";\r\nimport {updateSQFTCalculations} from \"../../../../../../actions/sqftFunctions\";\r\nimport {attachResource} from \"./resourseCanas\";\r\nimport {SIDEBAR_NAVIGATION_BUTTONS} from \"../../../../constants\";\r\n\r\nconst backsplashCanvas = function() {\r\n let self = this;\r\n this.backSplashFeature = {\r\n size: 0,\r\n name: \"\"\r\n };\r\n this.cursorImage = null;\r\n this.addedImages = null; //like in edges\r\n this.img = null;\r\n this.isWaitingToRestoreCursor = false;\r\n\r\n this.setBackSplashFeature = function (backSplashFeature) {\r\n this.backSplashFeature = backSplashFeature;\r\n };\r\n this.setHighlighting = function (disallowDemo) {\r\n eventManager.stealCursor(true); // remove all other cursors\r\n workspace.setAllowEdges(false); // removing sizing lines\r\n workspace.setAllowBumpoutEdges(false); // removing bumpout lines\r\n config.highlight.points = false;\t// remove radiuses\r\n config.highlight.lines = true; // enable lines highlighting\r\n\r\n if (!disallowDemo) {\r\n config.highlight.demoShow = true;\r\n }\r\n setTimeout(function () {\r\n config.highlight.demoShow = false;\r\n }, 1000);\r\n };\r\n\r\n this.setCursorImage = function () {\r\n let bounds = 18,\r\n imgWidth = bounds,\r\n imgHeight = bounds;\r\n\r\n let domImg = document.createElement('img');\r\n domImg.crossOrigin = \"Anonymous\";\r\n\r\n let $img = $(domImg);\r\n $img.css({\r\n position: 'absolute',\r\n width: '1px',\r\n height: '1px'\r\n });\r\n\r\n $img.attr({\r\n 'data-id': self.backSplashFeature.size,\r\n 'data-name': self.backSplashFeature.name,\r\n });\r\n\r\n function imgOnLoad() {\r\n var bounds = 18;\r\n let ratio;\r\n if(imgWidth > imgHeight) {\r\n ratio = imgHeight / imgWidth;\r\n imgWidth = bounds;\r\n imgHeight = bounds * ratio;\r\n } else {\r\n ratio = imgWidth / imgHeight;\r\n imgHeight = bounds;\r\n imgWidth = bounds * ratio;\r\n }\r\n eventManager.setCursor('edge-select', self, true);\r\n self.cursorImage = { image: domImg, width: imgWidth, height: imgHeight };\r\n self.registerEvents(); // only after image is load!\r\n }\r\n $img.on('load', imgOnLoad);\r\n $img.appendTo($('body'));\r\n\r\n if (self.backSplashFeature.size === \"wall\") {\r\n config.highlight.type = 'wall';\r\n $img.attr('src', iconPlusBlack);\r\n } else {\r\n config.highlight.type = 'backsplash';\r\n $img.attr('src', iconPlusBlue);\r\n }\r\n\r\n this.img = $img;\r\n config.highlight.id = self.backSplashFeature.size;\r\n };\r\n\r\n this.registerEvents = () => {\r\n eventManager.setCursor('radius-select', self, true);\r\n eventManager.addEvent(\r\n eventManager.events.RENDER,\r\n this.renderCursor,\r\n this,\r\n eventManager.priorities.OVERALL\r\n );\r\n eventManager.addEvent(\r\n eventManager.events.MOUSE_UP,\r\n this.onMouseUp,\r\n this,\r\n eventManager.priorities.OVERALL\r\n );\r\n };\r\n this.deregisterEvents = () => {\r\n eventManager.resetCursor(this);\r\n eventManager.removeEvent(this);\r\n config.highlight.lines = false;\r\n //todo sqft-react\r\n //elements.navbacksplash.removeClass('steps-scope-config-button-selected');\r\n }\r\n this.destroy = function(protect, revertBackAfterMouseUp) {\r\n if (revertBackAfterMouseUp) {\r\n eventManager.removeEvent(self, eventManager.events.RENDER); //remove render only, but wait for mouse up to set cursor again\r\n this.isWaitingToRestoreCursor = true;\r\n } else {\r\n this.deregisterEvents();\r\n //$('img[data-id=\"' + this.img.data('id') +'\"]').remove();\r\n //this.addedImages = this.addedImages.filter(image => image.dataset.id === this.img.data('id'));\r\n }\r\n };\r\n this.onMouseUp = function(mousePos) {\r\n void mousePos;\r\n let hoverShape = workspace.getHoverShape();\r\n if (hoverShape && hoverShape.getHoverSegment) {\r\n const reduxState = store.getState();\r\n const activeButton = reduxState.sqftMenuState.activeButton;\r\n if (activeButton !== SIDEBAR_NAVIGATION_BUTTONS.backsplash) {\r\n return\r\n }\r\n\r\n const segCorner = hoverShape.getHoverSegmentOutlineCorner();\r\n const seg = hoverShape.getHoverSegment();\r\n if (seg || segCorner) {\r\n let resourceType = (self.backSplashFeature.size === \"wall\") ? \"wall\" : \"backsplash\";\r\n\r\n //remove incompatible resources\r\n if (seg && seg.isWithMitered()) {\r\n seg.deleteMitered();\r\n } else if (seg && (seg.isWithWaterfallToolEdge() || seg.isWithPeninsulaUnderwrapEdge())) {\r\n seg.deleteAttachedItem();\r\n }\r\n\r\n //add new resource\r\n attachResource(seg, segCorner, resourceType, null, null, this.backSplashFeature.name, this.backSplashFeature.size);\r\n\r\n // let attachedTo = workspace.getImagesAttachedTo(seg);\r\n // if (attachedTo) {\r\n // workspace.removeShape(attachedTo);\r\n // }\r\n //\r\n //\r\n // let historyCallBack;\r\n //\r\n // //add image to line or cornerLine\r\n // if (seg) {\r\n // historyCallBack = seg.addBacksplashToLine.bind(self, this.backSplashFeature.name, type, self.cursorImage.image.dataset.id);\r\n // } else if (segCorner) {\r\n // historyCallBack = segCorner.addBacksplashToCornerLine.bind(self, this.backSplashFeature.name, type, self.cursorImage.image.dataset.id);\r\n // }\r\n //\r\n // workspace.addImage(\r\n // self.cursorImage.image,\r\n // self.cursorImage.width / scale,\r\n // self.cursorImage.height / scale,\r\n // seg || segCorner,\r\n // hoverShape,\r\n // type,\r\n // historyCallBack\r\n // );\r\n //\r\n // historyCallBack();\r\n // config.highlight.lines = true;\r\n } else {\r\n store.dispatch(setSQFTMenuOpened('backsplash'));\r\n // \tderegisterEvents();\r\n // \telements.designDefault.click();\r\n }\r\n\r\n const updateCalculations = reduxState.sqftState.updateCalculations;\r\n store.dispatch(updateSQFTCalculations(updateCalculations + 1));\r\n }\r\n this.checkForRestoreCursor();\r\n };\r\n this.checkForRestoreCursor = function() {\r\n if (self.isWaitingToRestoreCursor) {\r\n self.isWaitingToRestoreCursor = false;\r\n eventManager.removeEvent(self, eventManager.events.MOUSE_UP); //remove mouse up, it will be added in setCursorImage\r\n self.setHighlighting(true);\r\n self.setCursorImage();\r\n }\r\n };\r\n this.renderCursor = function(ctx) {\r\n // if((this.backsplashSize > 0) && ($(window).width() > 768)) {\r\n // var mPos = eventManager.LastKnownMousePos;\r\n // if(mPos) {\r\n // ctx.save();\r\n // ctx.font = \"18px Arial\";\r\n // ctx.fillStyle = \"#000000\";\r\n // ctx.fillText(this.backsplashSize + \"\\\" Backsplash\", mPos.x + (12 * config.scale), mPos.y + 9);\r\n // ctx.restore();\r\n // }\r\n // }\r\n if(self.cursorImage.image && ($(window).width() > 768)) {\r\n var mPos = eventManager.LastKnownMousePos;\r\n if(mPos) {\r\n ctx.drawImage(self.cursorImage.image, mPos.x + 10, mPos.y + 10, self.cursorImage.width, self.cursorImage.height);\r\n }\r\n }\r\n };\r\n};\r\n\r\nexport default new backsplashCanvas();\r\n","import LookVirtualizedListLoadingItem\r\n from \"../../../../../../../look/lookNavigation/lookMain/lookCategory/lookVirtualizedListLoadingItem\";\r\nimport {Grid} from \"react-virtualized\";\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport {connect} from \"react-redux\";\r\n\r\nexport const SqftOptionsLoading = (props) => {\r\n const {isMobile, windowHeight} = props;\r\n\r\n const rowHeight = 135;\r\n const width = isMobile ? 221 : 280;\r\n const columnWidth = width;\r\n const columnCount = 1;\r\n const height = isMobile ? windowHeight - 25 : windowHeight - 60;\r\n const rowCount = Math.floor(height / rowHeight);\r\n\r\n const listSettings = {\r\n width,\r\n columnCount,\r\n columnWidth,\r\n rowCount,\r\n height,\r\n rowHeight: rowHeight,\r\n overscanRowCount: 3,\r\n showScrollingPlaceholder: false,\r\n useDynamicRowHeight: false,\r\n }\r\n\r\n const cellRenderer = ({columnIndex, key, rowIndex, style}) => {\r\n void columnIndex;\r\n void rowIndex;\r\n\r\n return \r\n }\r\n\r\n const noRowsRenderer = () =>
    No Features found
    ;\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nSqftOptionsLoading.propTypes = {\r\n // maxClickCountReached: PropTypes.func,\r\n // renderList: PropTypes.array,\r\n // contentHeight: PropTypes.number,\r\n isMobile: PropTypes.bool,\r\n // onScrollHandler: PropTypes.func,\r\n // loadingCount: PropTypes.number,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {windowHeight, isMobile} = store.serverState;\r\n return {\r\n windowHeight,\r\n isMobile,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n};\r\n\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SqftOptionsLoading);\r\n","import React, {useState} from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport {connect} from \"react-redux\";\r\nimport {injectIntl} from \"react-intl\";\r\n\r\nimport TextInput from \"../../ui/textInput\";\r\nimport {updateFeatureInfoCount} from \"../../../actions/actionFunctions\";\r\nimport {EditIcon, GroheInkPenIcon} from \"../../common/icons\";\r\nimport COLOR_THEMES from \"../../../colorThemes\";\r\nimport {IS_QKB_UI} from \"../../../config\";\r\n\r\nconst FeaturePriceInput = (props) => {\r\n\r\n const {feature, updateFeatureInfoCount, fabricatorData, unit, activeTheme, price, className, showPrice} = props;\r\n const fabricatorSettings = fabricatorData.settings;\r\n\r\n const [priceEditing, setPriceEditing] = useState(false);\r\n\r\n const hidePrice = (typeof showPrice !== 'undefined') && !showPrice;\r\n\r\n const togglePriceEditing = () => setPriceEditing(!priceEditing);\r\n\r\n // if (selectionFeatureInfo && selectionFeatureInfo.dbFeature.id && document.kvConfig.isBackend) {\r\n // return \r\n // }\r\n\r\n const handlePriceOnChange = (newAmount) => {\r\n if (fabricatorSettings.useFabricatorCostPrices) {\r\n feature.dbFeature.price = newAmount;\r\n } else {\r\n feature.dbFeature.cost = newAmount;\r\n feature.dbFeature.fabricatorCost = newAmount;\r\n }\r\n feature.dbFeature.priceWasChanged = true;\r\n updateFeatureInfoCount();\r\n }\r\n\r\n return (\r\n
    \r\n {hidePrice ? null :\r\n {fabricatorSettings.currencySign}}\r\n \r\n {priceEditing || hidePrice\r\n ? null\r\n : IS_QKB_UI ? {price} : price}\r\n {unit && !hidePrice ? ({unit}) : null}\r\n \r\n
    \r\n )\r\n};\r\n\r\nFeaturePriceInput.propTypes = {\r\n feature: PropTypes.object,\r\n onBlur: PropTypes.func,\r\n unit: PropTypes.string,\r\n price: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n className: PropTypes.string,\r\n showPrice: PropTypes.bool,\r\n};\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n const {activeTheme} = store.serverState;\r\n return {\r\n feature: ownProps.feature || store.selectionState.selectionFeatureInfo,\r\n fabricatorData: store.fabricatorState,\r\n featureInfoCount: store.selectionState.featureInfoCount,\r\n activeTheme,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n updateFeatureInfoCount\r\n}\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(FeaturePriceInput)\r\n);\r\n","import {useMemo} from \"react\";\r\n\r\nexport const getGridColumnDimensions = (lookViewType) => {\r\n // Define column and row settings based on lookViewType\r\n switch (lookViewType) {\r\n case 1:\r\n return {columnCount: 1, rowHeight: 104}\r\n case 2:\r\n return {columnCount: 2, rowHeight: 170}\r\n case 3:\r\n return {columnCount: 1, rowHeight: 320} // Increased row height\r\n case 4:\r\n return {columnCount: 3, rowHeight: 128}\r\n default:\r\n return {columnCount: 1, rowHeight: 135}\r\n }\r\n}\r\n\r\nexport const useGridDimensions = (windowHeight, isMobile) => {\r\n const gridWidth = useMemo(() => isMobile ? 238 : 296, [isMobile]);\r\n const gridHeight = useMemo(() => {\r\n if (isMobile) {\r\n return windowHeight - 74 // 50 header + 24 footer info bar\r\n }\r\n return windowHeight - 110 // 50 header + 60 footer\r\n }, [windowHeight, isMobile]);\r\n\r\n return {gridWidth, gridHeight}\r\n}\r\n","import React, {} from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {miteredSectionInterface} from \"../../../../../../interfaces/sqftInterfaces\";\r\nimport NavMiteredSegment from \"./navMiteredSegment\";\r\n\r\nconst NavMiteredSection = (props) => {\r\n const {sectionName, miteredSection, index} = props;\r\n\r\n let SEGMENTS = miteredSection.getSegments();\r\n\r\n return (\r\n
    \r\n

    \r\n {/*${TranslatesProvider.translate(\"sqft.navigation.mitered.title\")}*/}\r\n {sectionName}\r\n \r\n {('0' + (index + 1)).slice(-2)}\r\n \r\n

    \r\n
    \r\n {\r\n SEGMENTS.map((miteredSegment, index) => {\r\n return \r\n })\r\n }\r\n
    \r\n
    \r\n )\r\n};\r\n\r\nNavMiteredSection.propTypes = {\r\n sectionName: PropTypes.string,\r\n miteredSection: PropTypes.shape(miteredSectionInterface)\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n menuOpened: store.sqftMenuState.menuOpened,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n};\r\n\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(NavMiteredSection);\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport debounce from \"lodash/debounce\";\r\n\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport TextField from '@mui/material/TextField';\r\n\r\nimport COLOR_THEMES from \"../../../../../colorThemes\";\r\n\r\nimport {setGroheFiltersSearchText} from \"../../../../../actions/groheFunctions\";\r\nimport {searchProductRequest} from \"../../../../../api/search-api\";\r\nimport {getCurrentLayout} from \"../../../../appLayout\";\r\nimport {updateNavigationCount} from \"../../../../../actions/lookFunctions\";\r\nimport {setNavigationLoading} from \"../../../../../actions/navigationFunctions\";\r\n\r\nconst GroheFiltersSearchInput = (props) => {\r\n const {activeTheme, groheFiltersSearchText, setGroheFiltersSearchText, lookActiveCategory, updateNavigationCount,\r\n setNavigationLoading} = props;\r\n\r\n const layout = getCurrentLayout();\r\n const featureGroup = layout.getFeatureGroupByPartId(lookActiveCategory);\r\n\r\n const debounceRequest = async (searchText) => {\r\n if (featureGroup && !featureGroup.getRealFeaturesReceivedProperty()) {\r\n return await searchProductRequest(featureGroup, searchText, (ended) => {\r\n setNavigationLoading(ended);\r\n if (!ended) {\r\n updateNavigationCount();\r\n }\r\n })\r\n }\r\n }\r\n\r\n const debounceFn = debounce(debounceRequest, 800);\r\n\r\n const handleSearchInputChange = async (event) => {\r\n setGroheFiltersSearchText(event.currentTarget.value);\r\n await debounceFn(event.target.value)\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {groheFiltersSearchText} = store.groheState;\r\n const {activeTheme} = store.serverState;\r\n const {lookActiveCategory} = store.lookState;\r\n\r\n return {\r\n groheFiltersSearchText,\r\n activeTheme,\r\n lookActiveCategory,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setGroheFiltersSearchText,\r\n updateNavigationCount,\r\n setNavigationLoading,\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(GroheFiltersSearchInput)\r\n);\r\n","import React, {useState, useEffect} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {injectIntl} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport Accordion from '@mui/material/Accordion';\r\nimport AccordionDetails from '@mui/material/AccordionDetails';\r\nimport AccordionSummary from '@mui/material/AccordionSummary';\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\n\r\nimport {setGroheFiltersOpened, setGroheFiltersSearchText} from \"../../../../actions/groheFunctions\";\r\nimport {setSelectedFilters} from \"../../../../actions/actionFunctions\";\r\nimport GroheFiltersValues from \"../../grohe/groheNavigation/groheFilters/groheFiltersValues\";\r\nimport {getCurrentLayout} from \"../../../appLayout\";\r\n// import {AVAILABLE_FILTERS} from \"../../core/constants\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../config\";\r\n\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS, PRODUCT_JOURNEY_ANALYTIC_EVENTS} from \"../../../../analytics\";\r\n// import {COUNTERTOP_GROUP} from \"../../../kvComponent/core/constants\";\r\nimport {getFeatureGroupFilters} from \"../../../../misc/filtersFunctions\";\r\nimport MaterialSpinner from \"../../../ui/materialSpinner\";\r\nimport {getCurrentGroups, getFeatureGroupFromWizardGroup} from \"../lookMain/lookWizard/lookWizardFunctions\";\r\n\r\n\r\nconst LookFiltersList = (props) => {\r\n const { className, filtersOpened, intl, isMobile, lookActiveFeature, lookActiveCategory, wizardFeatureGroup,\r\n isRelatedItemsFilters } = props;\r\n const [activeFilterId, setActiveFilterId] = useState(null);\r\n\r\n useEffect(() => {\r\n setActiveFilterId(filtersOpened ? \"description\" : isMobile ? activeFilterId : \"\");\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [filtersOpened])\r\n\r\n const handleChange = (filterId, filterName) => (event, isExpanded) => {\r\n const underscoredText = Analytics.getSkuForAnalytics({dbFeature: {sku: filterName}}, false);\r\n if (IS_PRODUCT_JOURNEY) {\r\n Analytics.sendClickEvent(\r\n isExpanded\r\n ? PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeaturesFiltersAccordionOpen + underscoredText\r\n : PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeaturesFiltersAccordionClose + underscoredText\r\n );\r\n } else {\r\n Analytics.sendClickEvent(\r\n isExpanded\r\n ? LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeaturesFiltersAccordionOpen + underscoredText\r\n : LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeaturesFiltersAccordionClose + underscoredText\r\n );\r\n }\r\n\r\n setActiveFilterId(isExpanded ? filterId : false);\r\n };\r\n\r\n const layout = getCurrentLayout();\r\n const featureGroup = wizardFeatureGroup\r\n || (lookActiveFeature ? lookActiveFeature.getParent() : layout.getFeatureGroupByPartId(lookActiveCategory));\r\n\r\n const availableFilters = filtersOpened && featureGroup && (featureGroup.allFeaturesReceived || isRelatedItemsFilters)\r\n ? getFeatureGroupFilters(featureGroup)\r\n : [];\r\n\r\n if (!featureGroup) {\r\n return null\r\n }\r\n // .filter(filterGroup => AVAILABLE_FILTERS.includes(filterGroup.name));\r\n\r\n // if (!featureGroup.filtersReceived) {\r\n // return (\r\n //
    \r\n // \r\n //
    \r\n // )\r\n // }\r\n\r\n return (\r\n
    \r\n {availableFilters.map(availableFilter => {\r\n return (\r\n
  • \r\n \r\n }\r\n aria-label={intl.formatMessage({id:\"tooltip.editLook\"})}\r\n aria-controls=\"panel2bh-content\"\r\n id=\"panel2bh-header\"\r\n className=\"lk-info__header\"\r\n >\r\n
    \r\n \r\n {availableFilter.filterGroupName}\r\n {availableFilter.selectedFiltersLength ? ` (${availableFilter.selectedFiltersLength})` : null}\r\n \r\n {featureGroup.filtersReceived || featureGroup.realFeaturesReceived ? null : }\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\nLookFiltersList.propTypes = {\r\n className: PropTypes.string,\r\n isRelatedItemsFilters: PropTypes.bool\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookActiveFeature, lookActiveCategory} = store.lookState;\r\n const {isMobile} = store.serverState;\r\n const {showFilters, selectedFilters, filtersCount} = store.filterState;\r\n const {filtersOpened} = store.groheState;\r\n const {featureGroupCount} = store.lookState;\r\n\r\n let wizardFeatureGroup = null\r\n const {wizardSelectedValues, wizardActiveItem, wizardActiveStep} = store.wizardState;\r\n if (filtersOpened && wizardActiveItem) {\r\n const currentGroups = getCurrentGroups(wizardActiveItem, wizardActiveStep, wizardSelectedValues);\r\n if (currentGroups.length === 1) {\r\n wizardFeatureGroup = getFeatureGroupFromWizardGroup(currentGroups[0])\r\n }\r\n }\r\n\r\n return {\r\n filtersOpened: showFilters || filtersOpened,\r\n filtersCount,\r\n isMobile,\r\n // allFilterGroups: filterGroups,\r\n lookActiveFeature,\r\n selectedFilters,\r\n lookActiveCategory,\r\n featureGroupCount,\r\n wizardFeatureGroup,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setGroheFiltersOpened,\r\n setGroheFiltersSearchText,\r\n setSelectedFilters,\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookFiltersList)\r\n);\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {injectIntl} from \"react-intl\";\r\n\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport FormGroup from '@mui/material/FormGroup';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\n\r\nimport PropTypes from \"prop-types\";\r\nimport {filterGroupInterface} from \"../../../../../interfaces/filterInterface\";\r\nimport {toggleFilterArrayValue} from \"../../../../visComponents/navigation/newFilters/filtersBody\";\r\nimport {setSelectedFilters} from \"../../../../../actions/actionFunctions\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS, PRODUCT_JOURNEY_ANALYTIC_EVENTS} from \"../../../../../analytics\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\nimport {featureGroupInterface} from \"../../../../../interfaces/featureInterface\";\r\nimport {getFixedFilterValueName, weShouldHideFilterValue} from \"../../../filtersHardcode\";\r\n\r\nconst GroheFiltersValues = (props) => {\r\n const {availableFilter, selectedFilters, setSelectedFilters} = props;\r\n\r\n const setActiveFilterValue = (filterId, filterGroupId, filterValueText, selected) => {\r\n const underscoredText = Analytics.getSkuForAnalytics({dbFeature: {sku: filterValueText}}, false);\r\n\r\n if (IS_PRODUCT_JOURNEY) {\r\n Analytics.sendClickEvent(\r\n selected\r\n ? PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeaturesFiltersValuerUnChecked + underscoredText\r\n : PRODUCT_JOURNEY_ANALYTIC_EVENTS.productFeaturesFiltersValueChecked + underscoredText\r\n )\r\n } else {\r\n Analytics.sendClickEvent(\r\n selected\r\n ? LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeaturesFiltersValuerUnChecked + underscoredText\r\n : LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeaturesFiltersValueChecked + underscoredText\r\n )\r\n }\r\n setSelectedFilters(toggleFilterArrayValue([...selectedFilters], {filterId, filterGroupId}));\r\n };\r\n\r\n return (\r\n
    \r\n \r\n {availableFilter.values.map(filterValue => {\r\n // we did this check already in the getAvailableFiltersForReceivedFilters function\r\n // if (COUNTERTOP_GROUP.includes(featureGroup.partId) && featureGroup && featureGroup.filtersReceived\r\n // && !featureGroup.filtersReceived.includes(filterValue.id)) {\r\n // return null\r\n // }\r\n if (weShouldHideFilterValue(filterValue)) {\r\n return null\r\n }\r\n const selected = selectedFilters.find((filter) => {\r\n return filter.filterGroupId === availableFilter.id && filter.filterId === filterValue.id\r\n })\r\n const checkboxClick = () => {\r\n return setActiveFilterValue(filterValue.id, availableFilter.id, filterValue.displayText, selected)\r\n }\r\n return (\r\n }\r\n />\r\n )}\r\n )}\r\n \r\n
    \r\n )\r\n};\r\n\r\nGroheFiltersValues.propTypes = {\r\n availableFilter: PropTypes.shape(filterGroupInterface),\r\n featureGroup: PropTypes.shape(featureGroupInterface),\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {selectedFilters} = store.filterState;\r\n return {\r\n selectedFilters\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setSelectedFilters\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(GroheFiltersValues)\r\n);\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport RestartAltIcon from '@mui/icons-material/RestartAlt';\r\n\r\nimport {setSelectedFilters} from \"../../../../actions/actionFunctions\";\r\nimport {setGroheFiltersSearchText} from \"../../../../actions/groheFunctions\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS} from \"../../../../analytics\";\r\n\r\n\r\nconst LookFiltersReset = (props) => {\r\n const {setSelectedFilters, intl, setGroheFiltersSearchText} = props;\r\n\r\n const resetFilterClick = () => {\r\n Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookFeaturesFiltersReset);\r\n setSelectedFilters([]);\r\n setGroheFiltersSearchText(\"\");\r\n };\r\n\r\n //console.log(\"availableFilters\", availableFilters);\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookActiveFeature} = store.lookState;\r\n const {showFilters} = store.filterState;\r\n return {\r\n filtersOpened: showFilters,\r\n lookActiveFeature,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setSelectedFilters,\r\n setGroheFiltersSearchText,\r\n};\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookFiltersReset)\r\n);\r\n","import { useState, useEffect } from 'react';\r\n\r\nfunction getWindowDimensions() {\r\n const { innerWidth: windowWidth, innerHeight: windowHeight } = window;\r\n return {\r\n windowWidth,\r\n windowHeight\r\n };\r\n}\r\n\r\nexport default function useWindowDimensions() {\r\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\r\n\r\n useEffect(() => {\r\n function handleResize() {\r\n setWindowDimensions(getWindowDimensions());\r\n }\r\n\r\n window.addEventListener('resize', handleResize);\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []);\r\n\r\n return windowDimensions;\r\n}\r\n","import React from 'react';\r\nimport {injectIntl} from \"react-intl\";\r\nimport {connect} from \"react-redux\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport {LookAugmentRealityIcon} from \"../../../../common/icons\";\r\nimport PropTypes from \"prop-types\";\r\nimport SvgIcon from \"@mui/material/SvgIcon\";\r\nimport Button from \"@mui/material/Button\";\r\n\r\nconst ARViewUSDZButton = (props) => {\r\n const {url} = props;\r\n\r\n const makeImage = () => {\r\n const c = document.createElement('canvas');\r\n const i = new Image();\r\n i.src = c.toDataURL();\r\n\r\n return i;\r\n }\r\n\r\n const makeLink = (url) => {\r\n return Object.assign(document.createElement('a'), {\r\n download: 'asset.usdz',\r\n rel: \"ar\",\r\n href: url\r\n });\r\n }\r\n\r\n const arClick = () => {\r\n const i = makeImage();\r\n const a = makeLink(url);\r\n a.appendChild(i);\r\n a.click();\r\n }\r\n\r\n return (\r\n \r\n )\r\n};\r\n\r\nARViewUSDZButton.propTypes = {\r\n url: PropTypes.string,\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n visualizersLoaded: store.serverState.visualizersLoaded,\r\n cabinetsARBlobUrl: store.sqftState.cabinetsARBlobUrl,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n};\r\n\r\nexport default withRouter(\r\n injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(ARViewUSDZButton)\r\n )\r\n);\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport LookListContentHeader from \"./lookListContentHeader\";\r\nimport LookListMain from \"./lookListMain\";\r\nimport WithCartAnimationsChecker from \"../hocs/withCartAnimationsChecker\";\r\n\r\nconst LookListContent = (props) => {\r\n\r\n const {onBackClick} = props;\r\n\r\n return (\r\n \r\n {() => (\r\n
    \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n )\r\n};\r\n\r\nLookListContent.propTypes = {\r\n onBackClick: PropTypes.func.isRequired\r\n}\r\n\r\nconst mapStateToProps = () => {\r\n return {\r\n\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LookListContent)\r\n","import React, {Fragment} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport {useLocation, withRouter} from \"react-router-dom\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport IconButton from \"@mui/material/IconButton\";\r\n// import PrintIcon from \"@mui/icons-material/Print\";\r\nimport FavoriteBorderIcon from \"@mui/icons-material/FavoriteBorder\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\n// import Button from \"@mui/material/Button\";\r\n\r\nimport {setLookOpened, setLookOverlayOpened, setLookPageOpened} from \"../../../actions/lookFunctions\";\r\nimport {LOOK_OVERLAYS} from \"../core/constants\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../config\";\r\nimport WithSavePostMessage from \"../hocs/withSavePostMessage\";\r\n// import {featureIsBundle, getBundledFeatures, isInStock} from \"../lookNavigation/lookFunctions2\";\r\nimport {cartItemInStock} from \"../lookNavigation/lookFunctions2\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS} from \"../../../analytics\";\r\nimport {ROUTES} from \"../../../routes\";\r\nimport {isIframe} from \"../../../misc/helpers\";\r\n\r\nconst LookListContentHeaderRightSide = (props) => {\r\n\r\n const {intl, isMobile, onBackClick, setLookOverlayOpened, cartItems, userIsLoggedIn, setLookPageOpened, setLookOpened,\r\n history, withoutSave, fabricatorData} = props;\r\n\r\n const location = useLocation();\r\n\r\n // const printButtonClick = () => {\r\n // setLookOverlayOpened(LOOK_OVERLAYS.print)\r\n // }\r\n\r\n const closeCartClick = () => {\r\n setLookPageOpened(\"\");\r\n setLookOpened(null);\r\n history.push(ROUTES.home);\r\n }\r\n\r\n const saveButtonClick = (savePostMessage) => {\r\n Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookListHeaderSave);\r\n if (userIsLoggedIn) {\r\n savePostMessage();\r\n } else {\r\n const isLixil = isIframe() && fabricatorData.isLixil;\r\n setLookOverlayOpened(isLixil ? LOOK_OVERLAYS.questionLogin : LOOK_OVERLAYS.leadCapture);\r\n }\r\n }\r\n\r\n let itemsToCount = 0;\r\n cartItems.forEach(cartItem => {\r\n if (!cartItem.relatedProductParent && cartItemInStock(cartItem)\r\n // || (featureIsBundle(cartItem.cartFeature, cartItems) && getBundledFeatures(cartItem.cartFeature).some(relFeature => relFeature.dbFeature.lixilAvailableQty > 0))\r\n ) {\r\n itemsToCount = itemsToCount + cartItem.quantity\r\n }\r\n }); // Items in visualizer should equal total quantity of items minus out of stock (Shower bundle will count as 1 not 7)\r\n\r\n return (\r\n
    \r\n {/*
    */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* {isMobile ? null : (*/}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* )}*/}\r\n {/*
    */}\r\n {withoutSave || fabricatorData.isGrohe || (!IS_PRODUCT_JOURNEY && isMobile) ? null : (\r\n \r\n {(savePostMessage) => (\r\n
    saveButtonClick(savePostMessage)}>\r\n \r\n \r\n \r\n {isMobile ? null : (\r\n \r\n \r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n )}\r\n {!isMobile || !location || !location.pathname ? null : (\r\n \r\n {!IS_PRODUCT_JOURNEY && !location.pathname.includes(ROUTES.cart) ? (\r\n
    \r\n \r\n \r\n \r\n
    \r\n ) : null}\r\n {/*{IS_PRODUCT_JOURNEY && (location.pathname === ROUTES.cartLogin) ? (*/}\r\n {/* */}\r\n {/*) : null}*/}\r\n {/*{IS_PRODUCT_JOURNEY && (location.pathname === ROUTES.cartRegister) ? (*/}\r\n {/* */}\r\n {/*) : null}*/}\r\n
    \r\n )}\r\n
    \r\n )\r\n};\r\n\r\nLookListContentHeaderRightSide.propTypes = {\r\n onBackClick: PropTypes.func,\r\n withoutSave: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {isMobile} = store.serverState;\r\n const {cartItems} = store.cartState;\r\n const {userIsLoggedIn} = store.userState;\r\n const fabricatorData = store.fabricatorState;\r\n\r\n return {\r\n isMobile,\r\n cartItems,\r\n userIsLoggedIn,\r\n fabricatorData,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookOverlayOpened,\r\n setLookPageOpened,\r\n setLookOpened,\r\n};\r\n\r\nexport default injectIntl(\r\n withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(LookListContentHeaderRightSide)\r\n )\r\n)\r\n","import {useEffect, useState} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport {getCartItemsCount} from \"../grohe/groheNavigation/groheFunctions\";\r\nimport {LOOK_OVERLAYS} from \"../core/constants\";\r\nimport {setLookOverlayOpened} from \"../../../actions/lookFunctions\";\r\nimport {setShowUnlockCalculations} from \"../../../actions/unlockCalculationsFunctions\";\r\n\r\nconst WithCartAnimationsChecker = (props) => {\r\n\r\n const {children, fabricatorSettings, isPhoneNumberValidated, setLookOverlayOpened, setShowUnlockCalculations, cartItems,\r\n instList} = props;\r\n const [leadPopupWasOpened, setLeadPopupWasOpened] = useState(false);\r\n\r\n const cartItemsLength = getCartItemsCount(cartItems);\r\n const shouldOpenLeadCapturePopup = fabricatorSettings.leadCaptureShoppingCart && !isPhoneNumberValidated && !!(cartItemsLength || instList.length);\r\n\r\n useEffect(() => {\r\n if (shouldOpenLeadCapturePopup) {\r\n setLookOverlayOpened(LOOK_OVERLAYS.leadCapture);\r\n setShowUnlockCalculations(true);\r\n setLeadPopupWasOpened(true);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return children(leadPopupWasOpened, shouldOpenLeadCapturePopup)\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {isPhoneNumberValidated} = store.userState;\r\n const {settings} = store.fabricatorState;\r\n const {cartItems} = store.cartState;\r\n const {instList} = store.instState;\r\n\r\n return {\r\n isPhoneNumberValidated,\r\n fabricatorSettings: settings,\r\n cartItems,\r\n instList,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookOverlayOpened,\r\n setShowUnlockCalculations,\r\n};\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(WithCartAnimationsChecker)\r\n)\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport {withRouter} from \"react-router-dom\";\r\n\r\nimport Button from \"@mui/material/Button\";\r\nimport SvgIcon from \"@mui/material/SvgIcon\";\r\nimport RequestQuoteOutlinedIcon from '@mui/icons-material/RequestQuoteOutlined';\r\n\r\nimport {LookCartIcon} from \"../../common/icons\";\r\nimport {\r\n getPriceWithCurrency,\r\n getQuotePriceWithTaxes,\r\n getTotalPrice,\r\n isIframe,\r\n toFixedPrice\r\n} from \"../../../misc/helpers\";\r\n// import {showQuoteSavedNotification} from \"../../ui/successNotification\";\r\n// import {saveQuote} from \"../../../api/server-api\";\r\nimport WithAddToCartPostMessage from \"../hocs/withAddToCartPostMessage\";\r\nimport {cartItemInStock} from \"../lookNavigation/lookFunctions2\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS} from \"../../../analytics\";\r\nimport WithOpenMiniCartPostMessage from \"../hocs/withOpenMiniCartPostMessage\";\r\nimport {getCartItemsCount} from \"../grohe/groheNavigation/groheFunctions\";\r\nimport {ROUTES} from \"../../../routes\";\r\nimport {pricingIsLocked} from \"../lookNavigation/lookNavigationFunctions\";\r\nimport {setLookOverlayOpened, setLookPageOpened} from \"../../../actions/lookFunctions\";\r\nimport LookFeaturePriceLocked from \"../lookNavigation/lookMain/lookListFeature/lookFeaturePriceLocked\";\r\nimport {LOOK_OVERLAYS} from \"../core/constants\";\r\nimport {getAnalyticsEcommerceValues} from \"../../../analyticsEcommerceParams\";\r\n\r\n\r\nconst LookListFooter = (props) => {\r\n\r\n const {discountSections, fabricatorData, cartItems, isMobile, lookPageOpened, visualizersLoadedLength, history,\r\n setLookPageOpened, isPhoneNumberValidated, showUnlockCalculations, showTotalItems, setLookOverlayOpened, language,\r\n intl} = props;\r\n const fabricatorSettings = fabricatorData.settings;\r\n\r\n const isLixil = isIframe() && fabricatorData.isLixil;\r\n const withoutCheckout = !fabricatorSettings.checkout;\r\n const totalPrice = getTotalPrice();\r\n let grandTotal = getQuotePriceWithTaxes(totalPrice, discountSections);\r\n\r\n const requestQuoteClick = () => {\r\n Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookListRequestQuote);\r\n setLookOverlayOpened(LOOK_OVERLAYS.leadCapture, \"quotation\");\r\n };\r\n\r\n const viewCartClick = (openMiniCartPostMessage) => {\r\n Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookListOpenMiniCart);\r\n const {currency, value, items} = getAnalyticsEcommerceValues();\r\n Analytics.sendEcommerceEvent(\"view_cart\", {currency, value, items});\r\n openMiniCartPostMessage();\r\n };\r\n\r\n const disabled = cartItems.every(cartItem => !cartItemInStock(cartItem) || cartItem.isRemoved || !cartItem.quantity);\r\n\r\n let itemsToCount = getCartItemsCount(cartItems, intl);\r\n let {pricingLocked, showPrice} = pricingIsLocked();\r\n if (!pricingLocked && fabricatorSettings.enableQuote && !isPhoneNumberValidated) {\r\n pricingLocked = true;\r\n }\r\n const hideTotal = !showPrice || (showUnlockCalculations && !showTotalItems.includes(\"total\"));\r\n const hideCheckout = (showUnlockCalculations && !showTotalItems.includes(\"checkout\"));\r\n\r\n const getListFooterButtonText = () => {\r\n if (fabricatorSettings.enableQuote && !isPhoneNumberValidated) {\r\n return \"leadCapturePopup.getQuote\"\r\n } else if (withoutCheckout) {\r\n return \"leadCapturePopup.saveDesignButton\"\r\n } else if (pricingLocked) {\r\n return \"look.list.footer.addToCartButtonLocked\"\r\n // } else if (fabricatorSettings.checkout && fabricatorSettings.hasPaymentGateway) {\r\n // return \"buttons.checkout\"\r\n } else {\r\n return \"look.list.footer.addToCartButton\" // lixil text\r\n }\r\n }\r\n\r\n const checkoutClick = (addToCartPostMessage) => {\r\n Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookListAddToCart);\r\n if (isLixil || !fabricatorSettings.checkout) {\r\n addToCartPostMessage();\r\n } else if (pricingLocked) {\r\n window.clearTimeout(window.leadCaptureTimeoutId);\r\n setLookOverlayOpened(LOOK_OVERLAYS.leadCapture);\r\n } else {\r\n setLookPageOpened(ROUTES.cart);\r\n history.push(ROUTES.cart);\r\n }\r\n // saveQuote({\r\n // submit: true,\r\n // })\r\n // .then((responseData) => {\r\n // document.kvConfig.jobId = responseData.jobId;\r\n // showQuoteSavedNotification(\"successNotification.titleQuoteCreated\");\r\n // setIsLoading(false);\r\n // })\r\n // .catch(() => {\r\n // setIsLoading(false);\r\n // })\r\n };\r\n\r\n return (\r\n
    \r\n {/*
    */}\r\n {/* */}\r\n {/*
    */}\r\n {isMobile && (lookPageOpened !== ROUTES.list) ? null : (\r\n
    \r\n {isMobile || !isLixil || !fabricatorSettings.checkout ? null : (\r\n \r\n {(openMiniCartPostMessage) => (\r\n \r\n )}\r\n \r\n )}\r\n \r\n {(addToCartPostMessage) => hideCheckout || (fabricatorData.isGrohe && !fabricatorSettings.checkout) ? null : (\r\n \r\n )}\r\n \r\n {fabricatorSettings.callForPricing ? (\r\n \r\n ) : null}\r\n {hideTotal ? null : (\r\n
    \r\n \r\n \r\n \r\n \r\n {pricingLocked ? : getPriceWithCurrency(fabricatorSettings, toFixedPrice(grandTotal), null, true)}\r\n \r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const fabricatorData = store.fabricatorState;\r\n const {discountSections} = store.priceWorksheetState;\r\n const {cartItems, cItemsAddedToParentCart, sureTax} = store.cartState;\r\n const {isMobile, visualizersLoaded, language} = store.serverState;\r\n const {lookPageOpened} = store.lookState;\r\n const {isPhoneNumberValidated} = store.userState; // to update component when user is logged in\r\n const {showUnlockCalculations, showTotalItems} = store.unlockCalculationsState;\r\n\r\n return {\r\n fabricatorData,\r\n discountSections,\r\n cartItems,\r\n cItemsAddedToParentCart,\r\n isMobile,\r\n lookPageOpened,\r\n visualizersLoadedLength: visualizersLoaded.length,\r\n isPhoneNumberValidated,\r\n sureTax, // to update when response received\r\n showUnlockCalculations,\r\n showTotalItems,\r\n language,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookPageOpened,\r\n setLookOverlayOpened,\r\n};\r\n\r\nexport default injectIntl(\r\n withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(LookListFooter)\r\n )\r\n)\r\n","import store from './../store';\r\nimport {useEffect, useState} from \"react\";\r\n\r\nimport {getCurrentLayout} from \"../bvcomponents/appLayout\";\r\nimport {setAllFeaturesLoaded} from \"./serverFunctions\";\r\nimport JsonApi from \"../api/jsonApi\";\r\nimport {useIsMounted} from \"../misc/helperHooks\";\r\nimport {getBvFeatures} from \"../api/server-api\";\r\n\r\n\r\nexport const downloadAllFeatures = async () => {\r\n const mainResponse = await JsonApi.getBathroomVisualizerData(100000);\r\n if (!mainResponse || !mainResponse.data || !mainResponse.data.features) {\r\n return false\r\n }\r\n const layout = getCurrentLayout();\r\n layout.loadNewFeatures(mainResponse.data);\r\n layout.getFeatures().forEach((parentGroup) => {\r\n parentGroup.relatedItems.forEach((relatedItem) => {\r\n relatedItem.allFeaturesReceived = true;\r\n })\r\n })\r\n store.dispatch(setAllFeaturesLoaded(document.kvConfig.visualizerType))\r\n return true\r\n};\r\n\r\nexport const useFeaturesRoomLayoutsChecker = () => { // not used for now!\r\n\r\n const [featuresLoaded, setFeaturesLoaded] = useState(false);\r\n const isMounted = useIsMounted();\r\n\r\n const checkFeatures = async () => {\r\n const layout = getCurrentLayout();\r\n const featureGroupsObjects = layout.getActiveFeatures(true, false, true)\r\n .filter(fgObject => !fgObject.partId.includes(\"decor_\") && !fgObject.partId.includes(\"attachment\")); // they are already received\r\n // console.log(\"featureGroupsObjects\", featureGroupsObjects);\r\n let needToRequestNames = [];\r\n featureGroupsObjects.forEach((featureGroupObject) => {\r\n if (featureGroupObject.featureGroup\r\n && !featureGroupObject.realFeaturesReceived\r\n && featureGroupObject.cartFeature\r\n && featureGroupObject.cartFeature.dbFeature\r\n && featureGroupObject.cartFeature.dbFeature.sharedFeatureName\r\n && !needToRequestNames.includes(featureGroupObject.cartFeature.dbFeature.sharedFeatureName)\r\n && (!featureGroupObject.featureGroup.alreadyRequestedFeatureNames\r\n || !featureGroupObject.featureGroup.alreadyRequestedFeatureNames.includes(featureGroupObject.cartFeature.dbFeature.sharedFeatureName))) {\r\n if (!featureGroupObject.featureGroup.alreadyRequestedFeatureNames) {\r\n featureGroupObject.featureGroup.alreadyRequestedFeatureNames = [];\r\n }\r\n needToRequestNames.push(featureGroupObject.cartFeature.dbFeature.sharedFeatureName)\r\n featureGroupObject.featureGroup.alreadyRequestedFeatureNames.push(featureGroupObject.cartFeature.dbFeature.sharedFeatureName)\r\n }\r\n });\r\n console.log(\"needToRequestNames\", needToRequestNames);\r\n if (!needToRequestNames.length) {\r\n setFeaturesLoaded(true)\r\n return\r\n }\r\n const missingSkusResponse = await getBvFeatures(null, needToRequestNames, true);\r\n if (missingSkusResponse && missingSkusResponse.data) {\r\n console.log(\"missingSkusResponse\", missingSkusResponse.data);\r\n layout.loadNewFeatures(missingSkusResponse.data);\r\n }\r\n if (isMounted()) {\r\n setFeaturesLoaded(true)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n checkFeatures()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n return featuresLoaded\r\n}\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport {connect} from \"react-redux\";\r\n\r\nimport CheckIcon from '@mui/icons-material/Check';\r\n\r\nimport {featureInterface} from \"../../../../../interfaces/featureInterface\";\r\nimport {checkIfFeatureDisabled} from \"../../lookFunctions\";\r\n\r\nconst LookListFeatureCheckmark = (props) => {\r\n\r\n const {lookFeature, lookActiveCategory, lookActiveFeature, isEmpty} = props;\r\n\r\n if (!lookActiveCategory || isEmpty || !lookActiveFeature) {\r\n return null\r\n }\r\n\r\n if (lookFeature.getSplittedFeatureName() !== lookActiveFeature.getSplittedFeatureName()) {\r\n return null\r\n }\r\n\r\n const parent = lookFeature.getParent();\r\n const alreadyDisabled = checkIfFeatureDisabled(lookFeature, parent, true);\r\n\r\n if (alreadyDisabled) {\r\n return null\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n};\r\n\r\nLookListFeatureCheckmark.propTypes = {\r\n lookFeature: PropTypes.shape(featureInterface),\r\n isEmpty: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {lookActiveFeature, lookActiveCategory} = store.lookState;\r\n const {canvasCount} = store.bathroomVisualizerState;\r\n return {\r\n lookActiveFeature,\r\n lookActiveCategory,\r\n canvasCount\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(LookListFeatureCheckmark)\r\n","import React, {Fragment, useEffect} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport $ from \"jquery\";\r\n\r\nimport {\r\n setUnlockCalculationsStep, showUnlockCalculationsCartItems,\r\n showUnlockCalculationsTotalItems\r\n} from \"../../../../../actions/unlockCalculationsFunctions\";\r\nimport {CART_ITEM_ADDED_BY} from \"../../../../shoppingCart/cartItemInterface\";\r\nimport UnlockCalculationStep from \"./unlockCalculationStep\";\r\nimport {IS_PRODUCT_JOURNEY} from \"../../../../../config\";\r\nimport {sortCartItemsForListPage} from \"../../../lookNavigation/lookFunctions2\";\r\nimport {ROUTES} from \"../../../../../routes\";\r\nimport {showWizardInsteadOfQT} from \"../../../lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\nimport {WIZARD_GROUP_TYPES} from \"../../../../../interfaces/wizardItemInterface\";\r\nimport {isSameVisualizerWizard} from \"../../../lookNavigation/lookMain/lookWizard/lookWizardFunctions2\";\r\n\r\nexport const getUnlockCalculationsCartItems = (cartItems, wizardList, wizardIsActive, allWizardsValues, lookPageOpened, quotes) => {\r\n let cartItemsToInclude = [];\r\n if (showWizardInsteadOfQT(wizardList, wizardIsActive)) {\r\n quotes.forEach((quote, quoteIndex) => {\r\n wizardList.forEach(wizardItem => {\r\n const existingAllObject = allWizardsValues.find(wizSelObject => {\r\n return wizSelObject.wizardItemId === wizardItem.id && wizSelObject.quoteIndex === quoteIndex\r\n && isSameVisualizerWizard(wizSelObject)\r\n });\r\n if (existingAllObject && existingAllObject.wizardSelectedValues) {\r\n Object.keys(existingAllObject.wizardSelectedValues).forEach(key => {\r\n if (existingAllObject.wizardSelectedValues[key].wizardGroup\r\n && existingAllObject.wizardSelectedValues[key].wizardGroup.nodeType === WIZARD_GROUP_TYPES.custom) {\r\n cartItemsToInclude.push({\r\n id: quoteIndex + existingAllObject.wizardSelectedValues[key].wizardGroup.id\r\n });\r\n }\r\n let currentCartItems = cartItems.filter(cartItem => {\r\n return cartItem.cartFeature && (cartItem.currentQuote === quoteIndex)\r\n && +key === cartItem.fromWizardStep\r\n && !cartItemsToInclude.includes(cartItem.id)\r\n });\r\n if (currentCartItems.length) {\r\n cartItemsToInclude = [...cartItemsToInclude, ...currentCartItems];\r\n }\r\n })\r\n }\r\n })\r\n cartItems.forEach(cartItem => {\r\n if (!cartItemsToInclude.some(cItem => cItem.id === cartItem.id)) {\r\n cartItemsToInclude = [...cartItemsToInclude, cartItem];\r\n }\r\n })\r\n })\r\n } else {\r\n cartItemsToInclude = cartItems;\r\n }\r\n if (IS_PRODUCT_JOURNEY) {\r\n cartItemsToInclude = cartItemsToInclude.filter(cItem => cItem.addedBy === CART_ITEM_ADDED_BY.user);\r\n } else if (lookPageOpened === ROUTES.list) {\r\n cartItemsToInclude = sortCartItemsForListPage(cartItemsToInclude)\r\n }\r\n\r\n return cartItemsToInclude\r\n}\r\n\r\nconst UnlockCalculationSteps = (props) => {\r\n\r\n const {setUnlockCalculationsStep, cartItems, showUnlockCalculationsCartItems, showUnlockCalculationsTotalItems,\r\n lookPageOpened, wizardList, wizardIsActive, allWizardsValues, quotes} = props;\r\n\r\n const cartItemsToInclude = getUnlockCalculationsCartItems(cartItems, wizardList, wizardIsActive,\r\n allWizardsValues, lookPageOpened, quotes);\r\n\r\n useEffect(() => {\r\n runAnimations()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n return () => {\r\n showUnlockCalculationsCartItems([]);\r\n showUnlockCalculationsTotalItems([]);\r\n setUnlockCalculationsStep(0);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const animateCartItems = async () => {\r\n let showCartItems = [];\r\n for (const [elementIndex, element] of cartItemsToInclude.entries()) {\r\n // const waitTime = this.props.cartItems.length < 7 ? 500*(index + 1) : 300*(index + 1);\r\n if (elementIndex <= 1) {\r\n await new Promise(resolve => setTimeout(resolve, 750));\r\n showCartItems.push(element.id);\r\n showUnlockCalculationsCartItems([...showCartItems]);\r\n } else {\r\n setTimeout(() => {\r\n showCartItems.push(element.id);\r\n showUnlockCalculationsCartItems([...showCartItems]);\r\n }, 750 * (elementIndex - 1))\r\n }\r\n }\r\n };\r\n\r\n const showTotalItems = async () => {\r\n await new Promise(resolve => setTimeout(resolve, 500));\r\n showUnlockCalculationsTotalItems([\"tax\"]);\r\n await new Promise(resolve => setTimeout(resolve, 1000));\r\n showUnlockCalculationsTotalItems([\"tax\", \"total\"]);\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n showUnlockCalculationsTotalItems([\"tax\", \"total\", \"checkout\"]);\r\n };\r\n\r\n const runAnimations = async () => {\r\n await new Promise(resolve => setTimeout(resolve, 500));\r\n await animateCartItems();\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n setUnlockCalculationsStep(1);\r\n await new Promise(resolve => setTimeout(resolve, 2000));\r\n setUnlockCalculationsStep(2);\r\n await showTotalItems();\r\n await exitAnimations();\r\n };\r\n\r\n const exitAnimations = async () => {\r\n const overlayElement = document.querySelector(\".look-overlay--style\");\r\n if (overlayElement) {\r\n setUnlockCalculationsStep(3);\r\n $(overlayElement).fadeOut(300, () => {\r\n window.clearTimeout(window.leadCaptureTimeoutId);\r\n window.leadCaptureTimeoutId = setTimeout(() => {\r\n setUnlockCalculationsStep(4);\r\n $(overlayElement).fadeIn(300);\r\n }, 4000);\r\n })\r\n } else {\r\n setUnlockCalculationsStep(3);\r\n }\r\n };\r\n\r\n return (\r\n \r\n {[0,1,2].map(stepIndex => )}\r\n \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {unlockCalculationsStep, showTotalItems} = store.unlockCalculationsState;\r\n const {cartItems} = store.cartState;\r\n const {lookPageOpened} = store.lookState;\r\n const {wizardList, wizardIsActive, allWizardsValues} = store.wizardState;\r\n const {quotes} = store.quotesState;\r\n\r\n return {\r\n cartItems,\r\n unlockCalculationsStep,\r\n showTotalItems,\r\n lookPageOpened,\r\n wizardList,\r\n wizardIsActive,\r\n allWizardsValues,\r\n quotes,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setUnlockCalculationsStep,\r\n showUnlockCalculationsCartItems,\r\n showUnlockCalculationsTotalItems,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UnlockCalculationSteps)\r\n","import React from 'react';\r\n\r\nconst LoadingDots = () => (\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nLoadingDots.displayName = 'LoadingDots';\r\n\r\nexport default LoadingDots;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport {connect} from \"react-redux\";\r\nimport {injectIntl} from \"react-intl\";\r\nimport {withRouter} from \"react-router-dom\";\r\n\r\nimport {featureInterface} from \"../../../../../interfaces/featureInterface\";\r\nimport {checkIfFeatureDisabled} from \"../../lookFunctions\";\r\nimport Analytics, {LOOK_JOURNEY_ANALYTIC_EVENTS} from \"../../../../../analytics\";\r\nimport {getFeatureSectionIsHidden, getFeatureUrl} from \"../../lookFunctions2\";\r\nimport {setLookActiveFeature} from \"../../../../../actions/lookFunctions\";\r\nimport LookMobileInfoButtonAnimatedIcon from \"../../../animations/lookMobileInfoButtonAnimatedIcon\";\r\nimport {setWizardShowFeatureSection} from \"../../../../../actions/wizardFunctions\";\r\n\r\nconst LookListActiveFeatureMobileButton = (props) => {\r\n\r\n const {lookFeature, setLookActiveFeature, history, isActive, lookLockedTutorial, isWizard,\r\n setWizardShowFeatureSection} = props;\r\n\r\n if (!isActive || lookLockedTutorial.visible) {\r\n return null\r\n }\r\n\r\n if (!isWizard) {\r\n const featureSectionIsHidden = getFeatureSectionIsHidden(lookFeature);\r\n if (featureSectionIsHidden) {\r\n return null\r\n }\r\n\r\n const parent = lookFeature.getParent();\r\n const alreadyDisabled = checkIfFeatureDisabled(lookFeature, parent, true);\r\n\r\n if (alreadyDisabled) {\r\n return null\r\n }\r\n }\r\n\r\n const infoButtonClick = (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n Analytics.sendClickEvent(LOOK_JOURNEY_ANALYTIC_EVENTS.lookMobileActiveFeatureButton);\r\n\r\n if (isWizard) {\r\n setWizardShowFeatureSection(true);\r\n return\r\n }\r\n\r\n setLookActiveFeature(lookFeature);\r\n history.push(getFeatureUrl(lookFeature, true));\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n};\r\n\r\nLookListActiveFeatureMobileButton.propTypes = {\r\n lookFeature: PropTypes.shape(featureInterface).isRequired,\r\n isActive: PropTypes.bool,\r\n isWizard: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {canvasCount} = store.bathroomVisualizerState;\r\n const {lookLockedTutorial} = store.lookState;\r\n\r\n return {\r\n canvasCount,\r\n lookLockedTutorial,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n setLookActiveFeature,\r\n setWizardShowFeatureSection,\r\n};\r\n\r\nexport default withRouter(\r\n injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(LookListActiveFeatureMobileButton)\r\n )\r\n)\r\n","import React, { Component } from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport { toggleInstOpened } from \"../../actions/actionFunctions\";\r\n\r\nclass InstallButton extends Component {\r\n\r\n static propTypes = {\r\n questionShown: PropTypes.bool\r\n };\r\n\r\n render() {\r\n let fabSettings = this.props.fabricatorSettings;\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n questionNoClicked: store.cartState.questionNoClicked,\r\n instOpened: store.instState.instOpened,\r\n fabricatorSettings: store.fabricatorState.settings,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n toggleInstOpened\r\n})(InstallButton);\r\n","import React from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\nimport {toggleShowAllQuotesCartItemsList, toggleShowMobileQuotes} from \"../../actions/shoppingCartFunctions\";\r\n\r\nconst ShoppingCartListSwitcher = (props) => {\r\n\r\n const {quotes, showAllQuotesCartItemsList, toggleShowAllQuotesCartItemsList, toggleShowMobileQuotes} = props;\r\n\r\n if (quotes.length <= 1) {\r\n return null\r\n }\r\n\r\n const handleButtonClick = () => {\r\n toggleShowMobileQuotes(false);\r\n toggleShowAllQuotesCartItemsList(!showAllQuotesCartItemsList);\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {showAllQuotesCartItemsList} = store.cartState;\r\n return {\r\n quotes: store.quotesState.quotes,\r\n showAllQuotesCartItemsList,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n toggleShowAllQuotesCartItemsList,\r\n toggleShowMobileQuotes\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ShoppingCartListSwitcher);\r\n","import React from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport Analytics from \"../../../analytics\";\r\nimport {changeStateToQuote} from \"../../../actions/actionFunctions\";\r\nimport {toggleShowAdvancedQuoting} from \"../../../actions/advancedQuotingFunctions\";\r\nimport {toggleShowAllQuotesCartItemsList, toggleShowMobileQuotes} from \"../../../actions/shoppingCartFunctions\";\r\n\r\nconst AdvancedQuotingSwitcher = (props) => {\r\n\r\n const {showAdvancedQuoting, changeStateToQuote, toggleShowAdvancedQuoting, toggleShowMobileQuotes} = props;\r\n\r\n if (!document.kvConfig.isBackend) {\r\n return null\r\n }\r\n\r\n const handleButtonClick = () => {\r\n Analytics.sendClickEvent(`advanced-quoting-click-${!showAdvancedQuoting ? \"on\" : \"off\"}`);\r\n changeStateToQuote();\r\n toggleShowMobileQuotes(false);\r\n toggleShowAdvancedQuoting(!showAdvancedQuoting);\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {showAdvancedQuoting} = store.advancedQuotingState;\r\n return {\r\n showAdvancedQuoting,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n changeStateToQuote,\r\n toggleShowAdvancedQuoting,\r\n toggleShowAllQuotesCartItemsList,\r\n toggleShowMobileQuotes\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AdvancedQuotingSwitcher);\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n// import {setJobId} from \"../../../actions/actionFunctions\";\r\nimport {setAssignQuoteCloneMode, toggleShowAssignQuotePopup} from \"../../../actions/assignPopupFunctions\";\r\nimport Analytics from \"../../../analytics\";\r\nimport Config from \"../../../config\";\r\n\r\nconst CloneQuoteButton = (props) => {\r\n\r\n // const {setJobId, toggleShowAssignQuotePopup} = props;\r\n const {toggleShowAssignQuotePopup, fabricatorData, setAssignQuoteCloneMode} = props;\r\n\r\n const cloneButtonIsVisible = Config.isDevMode() || (fabricatorData.isCaesarStone && document.kvConfig.showBackToDashboard);\r\n if (!cloneButtonIsVisible) {\r\n return null\r\n }\r\n\r\n const handleCloneQuoteClick = () => {\r\n Analytics.sendClickEvent(\"order-complete-clone-quote\");\r\n // document.kvConfig.jobId = null; // clear current job\r\n // setJobId(0); // clear current job\r\n setAssignQuoteCloneMode(true); // show new assign quote popup\r\n toggleShowAssignQuotePopup(true); // show new assign quote popup\r\n }\r\n\r\n return (\r\n \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n fabricatorData: store.fabricatorState,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n // setJobId,\r\n setAssignQuoteCloneMode,\r\n toggleShowAssignQuotePopup\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CloneQuoteButton)\r\n\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport {hashHistory} from \"react-router\";\r\n\r\nimport {\r\n toggleSelectionFeatureInfo,\r\n toggleUserPopup,\r\n changeSelectionInfoQuantity,\r\n unlockPricing,\r\n changeMaterialsInfoFeatureModules,\r\n addToRecentlyViewed,\r\n setQtActiveCategory,\r\n togglePulseFeatureInfoQuantity,\r\n setCameFromPage\r\n} from \"../../../actions/actionFunctions\";\r\nimport Quantity from \"../../ui/quantity\";\r\nimport InstView from \"../../installation/instView\";\r\nimport Analytics from './../../../analytics';\r\nimport {getCurrentLayout} from \"../../appLayout\";\r\nimport FeatureInfoAssociated from \"./featureInfoAssociated\";\r\nimport FeatureInfoDesc from \"./featureInfoDesc\";\r\nimport FeatureInfoPrice from \"./featureInfoPrice\";\r\nimport FeatureInfoImage from \"./featureInfoImage\";\r\nimport FeatureInfoDescription from \"./featureInfoDescription\";\r\nimport FeatureInfoImagesMobile from \"./featureInfoImagesMobile\";\r\nimport {\r\n canShowSqftButtonForFeature,\r\n canShowSqftCabinetButtonForFeature,\r\n getFeatureIsLocked,\r\n getFeatureUnit\r\n} from \"../../../misc/helpers\";\r\nimport AddProductNoteButton from \"../../ui/addProductNoteButton\";\r\nimport AddProductNoteEditor from \"./addProductNoteEditor\";\r\nimport {MEASURE_UNITS, SQFT_GROUP} from \"../../sqft/constants\";\r\nimport {COUNTERTOP_GROUP} from \"../../kvComponent/core/constants\";\r\nimport {toggleNavItemPositionModal} from \"../../../actions/navigationFunctions\";\r\n// import {setCartItemEditFeature} from \"../../../actions/shoppingCartFunctions\";\r\nimport {enableSquareFootage, setSqftFromFeature, setSquareFootageGroup} from \"../../../actions/sqftFunctions\";\r\nimport {isEnglish} from \"../../../translatesProvider\";\r\nimport {showWizardInsteadOfQT} from \"../../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\nimport {getFeatureGroupFeaturesQuantity} from \"../../look/lookNavigation/lookNavigationFunctions\";\r\n\r\nclass FeatureInfo extends Component {\r\n\r\n static propTypes = {\r\n features: PropTypes.array.isRequired,\r\n handleFeatureClick: PropTypes.func.isRequired,\r\n changeActivePartRelatedItem: PropTypes.func.isRequired,\r\n activePart: PropTypes.object,\r\n };\r\n\r\n componentDidMount() {\r\n const layout = getCurrentLayout();\r\n const activeFeature = this.props.selectionFeatureInfo;\r\n if (this.props.fabricatorData.settings.showRecentlyViewedItems) {\r\n this.props.addToRecentlyViewed(activeFeature);\r\n }\r\n // console.log('selectionFeatureInfo', this.props.selectionFeatureInfo);\r\n const navItemParent = activeFeature.getParent();\r\n const parentSimple = (navItemParent.partName === \"Floor\" && navItemParent.partId !== \"shower_floor\")\r\n || navItemParent.partName === \"Toilet\"\r\n || (navItemParent.partName === \"Ceiling\" &&\r\n (document.kvConfig.visualizerType === \"Bathroom\" || document.kvConfig.visualizerType === \"BV\"))\r\n || navItemParent.partName === \"Window\";\r\n // console.log('parentSimple', parentSimple);\r\n // console.log('navItemParent', navItemParent);\r\n if (parentSimple && !layout.qtCategories) {\r\n this.props.changeActivePartRelatedItem(0)\r\n } else {\r\n const {wizardList, wizardIsActive} = this.props;\r\n let subParts = [];\r\n if (layout.qtCategories && this.props.qtActiveCategory && !showWizardInsteadOfQT(wizardList, wizardIsActive)) {\r\n const qtActiveCategory = layout.qtCategories.find(qtCategory => qtCategory.name === this.props.qtActiveCategory);\r\n subParts = qtActiveCategory ? qtActiveCategory.subParts : this.props.activePart.subParts(false)\r\n } else {\r\n subParts = this.props.activePart.subParts(false);\r\n }\r\n\r\n const nextActivePartRelatedItemIndex = subParts.findIndex((subPart) => {\r\n return subPart.part.partId === navItemParent.partId\r\n });\r\n // console.log('nextActivePartRelatedItemIndex', nextActivePartRelatedItemIndex);\r\n this.props.changeActivePartRelatedItem(nextActivePartRelatedItemIndex)\r\n }\r\n // console.log('cartItem', cartItem);\r\n if (this.props.selectionInfoQuantity <= 1) {\r\n this.props.changeSelectionInfoQuantity(this.getDefaultFeatureQuantity());\r\n }\r\n\r\n if ((document.kvConfig.visualizerType === \"Kitchen\" || document.kvConfig.visualizerType === \"KV\")\r\n && activeFeature.partId === \"top_cabinet\" && activeFeature.metaData[\"Module\"]) {\r\n const activeFeatures = this.props.activePart.layout.getActiveFeatures();\r\n const materialsInfoFeatureModules = activeFeatures\r\n .filter(feature => feature.partId.includes(\"top_cabinet_module\"))\r\n .map(feature => {\r\n const existInCart = this.props.cartItems.find(cartItem => cartItem.partId === feature.partId);\r\n return {\r\n ...feature,\r\n quantity: existInCart ? existInCart.quantity : feature.quantity\r\n }\r\n });\r\n // console.log(\"this.props.cartItems\", cartItems);\r\n // console.log(\"this.props.activePart.layout.getActiveFeatures\", activeFeatures);\r\n this.props.changeMaterialsInfoFeatureModules(materialsInfoFeatureModules)\r\n }\r\n\r\n if (this.props.navItemPositionModal && this.props.navItemPositionModal.popupOpened) {\r\n this.props.toggleNavItemPositionModal({\r\n popupOpened: false,\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.props.toggleSelectionFeatureInfo(null);\r\n this.props.changeMaterialsInfoFeatureModules([]);\r\n this.props.changeSelectionInfoQuantity(1);\r\n // if (this.props.cartItemEditFeature && !window.location.href.includes(\"sqft\")) {\r\n // this.props.setCartItemEditFeature(null);\r\n // }\r\n }\r\n\r\n getDefaultFeatureQuantity = () => {\r\n const activeFeature = this.props.selectionFeatureInfo;\r\n // const cartItem = this.props.cartItems.find(cartItem => {\r\n // return (cartItem.cartFeature.dbFeature.id === activeFeature.dbFeature.id)\r\n // && (cartItem.currentQuote === this.props.activeQuoteIndex)\r\n // });\r\n // if (cartItem) {\r\n // return cartItem.quantity\r\n // }\r\n if (this.props.cartItemEditFeature) {\r\n return this.props.cartItemEditFeature.quantity\r\n } else if (this.props.advancedQuotingSearchItem) {\r\n return this.props.advancedQuotingSearchItem.quantity\r\n }\r\n\r\n const featureGroup = activeFeature.getParent();\r\n\r\n const sqftQuantity = (activeFeature.sqftQuantity && activeFeature.sqftQuantity[this.props.activeQuoteIndex])\r\n || (featureGroup.sqftQuantity && featureGroup.sqftQuantity[this.props.activeQuoteIndex]);\r\n if (sqftQuantity) {\r\n return sqftQuantity\r\n }\r\n\r\n const defaultOrPositionsQuantity = getFeatureGroupFeaturesQuantity(activeFeature, featureGroup);\r\n\r\n if (defaultOrPositionsQuantity && (defaultOrPositionsQuantity !== 1)) {\r\n return defaultOrPositionsQuantity\r\n }\r\n\r\n const zeroQuantityPartIdsArray = [\"vanity_countertop\", \"vanity_backsplash\", \"countertop\", \"backsplash\", \"center_island_countertop\"];\r\n if (zeroQuantityPartIdsArray.includes(activeFeature.partId)) {\r\n return 0\r\n }\r\n\r\n return 1;\r\n };\r\n\r\n handleChangeItemQuantity = (quantity) => {\r\n if (quantity && this.props.pulseFeatureInfoQuantity) {\r\n this.props.togglePulseFeatureInfoQuantity(false);\r\n }\r\n this.props.changeSelectionInfoQuantity(quantity);\r\n };\r\n\r\n handleSQFTButtonClick = () => {\r\n Analytics.sendClickEvent(\"sqft-opened\");\r\n this.props.setCameFromPage(this.props.selectionFeatureInfo);\r\n this.props.setSqftFromFeature(this.props.cartItemEditFeature || {cartFeature: this.props.selectionFeatureInfo});\r\n //enable sqft trough redux\r\n this.props.enableSquareFootage(true);\r\n\r\n //enable sqft trough url\r\n //hashHistory.push(\"sqft\");\r\n };\r\n\r\n handleSQFTCabnetButtonClick = () => {\r\n Analytics.sendClickEvent(\"sqft-opened\");\r\n this.props.setCameFromPage(this.props.selectionFeatureInfo);\r\n this.props.setSqftFromFeature(this.props.cartItemEditFeature || {cartFeature: this.props.selectionFeatureInfo});\r\n //enable sqft trough redux\r\n this.props.enableSquareFootage(true);\r\n this.props.setSquareFootageGroup(SQFT_GROUP.cabinets);\r\n\r\n //enable sqft trough url\r\n hashHistory.push(\"sqft?cabinets=1\");\r\n };\r\n\r\n getFeatureModules = () => {\r\n const activeFeatures = this.props.activePart.layout.getActiveFeatures();\r\n return this.props.materialsInfoFeatureModules.map((materialsQuantity, materialsQuantityIndex) => {\r\n const activeFeature = activeFeatures.find(feature => feature.partId === materialsQuantity.partId);\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    \r\n {\r\n const materialsInfoFeatureModules = this.props.materialsInfoFeatureModules.map(mQuantity => {\r\n if (mQuantity.partId === materialsQuantity.partId) {\r\n mQuantity.quantity = quantity\r\n }\r\n return mQuantity\r\n });\r\n this.props.changeMaterialsInfoFeatureModules(materialsInfoFeatureModules);\r\n }}\r\n value={materialsQuantity.quantity}/>\r\n

    \r\n
    \r\n )\r\n })\r\n };\r\n\r\n render() {\r\n const activeFeature = this.props.selectionFeatureInfo;\r\n const {productNoteEditorVisible, fabricatorData, intl} = this.props;\r\n const fabricatorSettings = fabricatorData.settings;\r\n\r\n const relatedFeatures = activeFeature.getFeatureRelatedFeatures();\r\n const associatedProduct = Array.isArray(relatedFeatures) && relatedFeatures.length;\r\n\r\n const showPriceLocked = getFeatureIsLocked(activeFeature);\r\n const showPrice = fabricatorSettings.showPricing && !fabricatorData.hideCheckoutBreakdownCost && !showPriceLocked && !fabricatorData.hidePricesFromUser;\r\n\r\n const isMobile = this.props.windowWidth < 991;\r\n\r\n const showFeatureModules = (document.kvConfig.visualizerType === \"Kitchen\" || document.kvConfig.visualizerType === \"KV\")\r\n && activeFeature.partId === \"top_cabinet\" && activeFeature.metaData[\"Module\"];\r\n\r\n const availableMeasureUnits = [...COUNTERTOP_GROUP, \"edge\", \"edge_profile\", \"center_island_edge\"];\r\n const unit = getFeatureUnit(activeFeature, intl, fabricatorData, this.props.selectionInfoQuantity);\r\n const lowerCasedUnit = unit.toLowerCase();\r\n const allowDecimals = (fabricatorSettings.measureUnit === MEASURE_UNITS.Metric) && (\r\n availableMeasureUnits.includes(activeFeature.partId) || [\"lm\", \"sm\", \"mm\"].some(um => um === lowerCasedUnit)\r\n );\r\n const unitText = activeFeature.getParent ? activeFeature.getParent().unitText : null;\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n {!isMobile ? : null}\r\n \r\n
    \r\n
    \r\n {showPrice ? : null}\r\n {activeFeature.dbFeature.hideQuantity ? null :\r\n showFeatureModules\r\n ? this.getFeatureModules()\r\n : (\r\n
    \r\n \r\n {(label) => (\r\n \r\n )}\r\n \r\n
    \r\n )\r\n }\r\n
    \r\n {canShowSqftButtonForFeature(activeFeature, fabricatorSettings) ? (\r\n
    \r\n \r\n
    \r\n ) : null}\r\n {canShowSqftCabinetButtonForFeature(activeFeature, fabricatorSettings) ? (\r\n
    \r\n \r\n
    \r\n ) : null}\r\n {isMobile ?
    : null}\r\n
    \r\n {isMobile ? null : }\r\n
    \r\n
    \r\n {isMobile ? : null}\r\n {isMobile ? : null}\r\n {associatedProduct ? : null}\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {selectionInfoQuantity, pulseFeatureInfoQuantity, materialsInfoFeatureModules, selectionGroup,\r\n selectionFeatureInfo, productNoteEditorVisible, featureInfoCount} = store.selectionState;\r\n const {cartItems, cartItemEditFeature} = store.cartState;\r\n const {wizardList, wizardIsActive} = store.wizardState;\r\n return {\r\n selectionFeatureInfo,\r\n selectionGroup,\r\n selectionInfoQuantity,\r\n pulseFeatureInfoQuantity,\r\n materialsInfoFeatureModules,\r\n productNoteEditorVisible,\r\n windowWidth: store.serverState.windowWidth,\r\n cartItems,\r\n userIsLoggedIn: store.userState.userIsLoggedIn,\r\n isPriceUnlocked: store.userState.userIsLoggedIn && store.userState.isPhoneNumberValidated,\r\n fabricatorData: store.fabricatorState,\r\n qtActiveCategory: store.qtState.qtActiveCategory,\r\n activeQuoteIndex: store.quotesState.activeQuoteIndex,\r\n advancedQuotingSearchItem: store.advancedQuotingState.advancedQuotingSearchItem,\r\n navItemPositionModal: store.navigationState.navItemPositionModal,\r\n cartItemEditFeature,\r\n featureInfoCount,\r\n wizardList,\r\n wizardIsActive,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n toggleUserPopup,\r\n changeSelectionInfoQuantity,\r\n toggleSelectionFeatureInfo,\r\n changeMaterialsInfoFeatureModules,\r\n unlockPricing,\r\n setCameFromPage,\r\n addToRecentlyViewed,\r\n setQtActiveCategory,\r\n togglePulseFeatureInfoQuantity,\r\n toggleNavItemPositionModal,\r\n // setCartItemEditFeature,\r\n setSqftFromFeature,\r\n enableSquareFootage,\r\n setSquareFootageGroup,\r\n};\r\n\r\nexport default withRouter(\r\n injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(FeatureInfo)\r\n )\r\n);\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport {getFilterGroupValues, s3FilterImagePath} from \"../../../misc/utils\";\r\n\r\nconst FeatureInfoBrand = (props) => {\r\n\r\n const {selectionFeatureInfo, filterGroups, feature} = props;\r\n\r\n const currentFeature = feature || selectionFeatureInfo;\r\n\r\n const brandFilterGroup = filterGroups.find(group => group.name === \"Brand\");\r\n if (!brandFilterGroup) {\r\n return null\r\n }\r\n\r\n const featureBrandValues = getFilterGroupValues(currentFeature, brandFilterGroup);\r\n if (!featureBrandValues) {\r\n return null\r\n }\r\n\r\n const brandFilterValue = brandFilterGroup.values.find(val => val.id === featureBrandValues[0]);\r\n if (!brandFilterValue || !brandFilterValue.icon) {\r\n return null\r\n }\r\n\r\n const styles = {\r\n backgroundImage: `url(${s3FilterImagePath(brandFilterValue.icon)})`\r\n };\r\n\r\n return (\r\n
    \r\n );\r\n};\r\n\r\nFeatureInfoBrand.propTypes = {\r\n feature: PropTypes.object\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n selectionFeatureInfo: store.selectionState.selectionFeatureInfo,\r\n filterGroups: store.filterState.filterGroups,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FeatureInfoBrand);\r\n","import React, {Fragment} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from \"react-redux\";\r\nimport $ from \"jquery\";\r\nimport uniq from \"lodash/uniq\";\r\nimport Config from \"../../config\";\r\n\r\nimport {\r\n toggleSelectionFeatureInfo,\r\n setActiveFeature,\r\n toggleShowDescriptionCover, toggleShowRestorePopup, updateCanvasCount\r\n} from \"../../actions/actionFunctions\";\r\n\r\nimport {getEventPosition, getFeatureIsLocked} from \"../../misc/helpers\";\r\n// import {s3FeatureImagePath, THUMBNAIL_SIZES} from \"../../misc/utils\";\r\n\r\nimport ActionTypes from \"../../misc/actionTypes\";\r\nimport NavigationItemsList from \"../visComponents/navigation/navigationItemsList\";\r\nimport CountertopSwitchers from \"../kvComponent/navigation/countertopSwitchers\";\r\nimport CabinetSwitchers from \"../kvComponent/navigation/cabinetSwitchers\";\r\nimport {CABINET_GROUP, COUNTERTOP_GROUP} from \"../kvComponent/core/constants\";\r\nimport {UserPopupTypes} from \"../visComponents/constants\";\r\nimport {toggleNavItemPositionModal, toggleUpdateDisableFeatureGroupRadio} from \"../../actions/navigationFunctions\";\r\nimport {CABINET_GROUP_BATHROOM, COUNTERTOP_GROUP_BATHROOM} from \"../bvSceneComponent/core/constants\";\r\nimport SelectionMainVirtualizedList from \"./selectionRowList/selectionMainVirtualizedList\";\r\nimport LoadingSpinner from \"../ui/loadingSpinner\";\r\nimport WizardList from \"./wizardList/wizardList\";\r\nimport SelectionMainVirtualizedGrid from \"./selectionGridList/selectionMainVirtualizedGrid\";\r\nimport SelectionMainVirtualizedGridMobile from \"./selectionGridList/selectionMainVirtualizedGridMobile\";\r\nimport {wizardGroupInterface} from \"../../interfaces/wizardItemInterface\";\r\nimport {checkIfNeedToReceiveFeaturesIfFiltersApplied} from \"../../misc/filtersFunctions\";\r\nimport {getCurrentLayout} from \"../appLayout\";\r\nimport {clickOnSimilarFeatures, getApplyToLogic} from \"../look/lookNavigation/lookNavigationFunctions\";\r\nimport {navFeatureCLick} from \"../look/lookNavigation/lookFunctions\";\r\nimport {featureCanChangeShowerSize, searchForSameNameWallsBeforeFeatureApply} from \"../look/bathroomFunctions\";\r\n\r\nclass SelectionMainList extends NavigationItemsList {\r\n\r\n static propTypes = {\r\n features: PropTypes.array.isRequired,\r\n handleUserLoginClick: PropTypes.func.isRequired,\r\n setRef: PropTypes.func.isRequired,\r\n currentParent: PropTypes.object,\r\n listItemHeight: PropTypes.number,\r\n showItemsList: PropTypes.bool.isRequired,\r\n layoutName: PropTypes.string,\r\n isWizard: PropTypes.bool,\r\n currentGroups: PropTypes.arrayOf(PropTypes.shape(wizardGroupInterface))\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showPlaceHolders: document.bvConfig ? document.bvConfig.showPlaceholders : false,\r\n reorderedFeatures: [],\r\n showLoader: false,\r\n currentParentText: \"\"\r\n };\r\n window.itemClickCountQuote = window.itemClickCountQuote || 0;\r\n window.itemClickCount = window.itemClickCount || 0;\r\n }\r\n\r\n componentDidMount() {\r\n this.updatePositions(this.props);\r\n $(document).on(ActionTypes.USER_IS_LOGGED_IN, () => { // click on current active item after unlock\r\n if (this.props.currentParent && (this.props.currentParent.activeLockedFeature || this.props.currentParent.activeFeature)) {\r\n this.handleFeatureClick({\r\n part: this.props.currentParent.activeLockedFeature || this.props.currentParent.activeFeature\r\n });\r\n }\r\n this.forceUpdate(() => {\r\n if (!this.props.listItemHeight || this.props.listItemHeight < 10) { // $(\".bv-item-list\").height()\r\n $(window).trigger('resize'); // squeeze features bug\r\n }\r\n });\r\n });\r\n // console.log(\"|this.props.currentParent\", this.props.currentParent);\r\n if (this.props.currentParent && this.props.currentParent.activeFeature) {\r\n this.props.setActiveFeature(this.props.currentParent.activeFeature);\r\n this.deleteNotInVisualizerFeature(this.props);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n $(document).off(ActionTypes.USER_IS_LOGGED_IN);\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if ((nextProps.currentParent && this.props.currentParent && (nextProps.currentParent.partName !== this.props.currentParent.partName))\r\n || (nextProps.currentParent && (nextProps.currentParent.partName !== this.state.currentParentText)) || nextProps.features !== this.props.features) {\r\n this.updatePositions(nextProps);\r\n this.deleteNotInVisualizerFeature(nextProps);\r\n }\r\n if (this.needToUpdate && nextProps.features.length !== this.props.features.length) {\r\n this.updatePositions(nextProps);\r\n }\r\n\r\n let wizardSubStepIsActive = false;\r\n if (nextProps.wizardConfig.length) {\r\n const existingWizSetup = nextProps.wizardConfig.find(wizObject => {\r\n return wizObject.featureGroupName === nextProps.currentParent.dbName || wizObject.featureGroupName === nextProps.currentParent.partName\r\n })\r\n if (existingWizSetup && existingWizSetup.filterGroups.length) {\r\n wizardSubStepIsActive = true;\r\n }\r\n }\r\n\r\n if (nextProps.selectedFilters.length && !wizardSubStepIsActive && nextProps.currentParent) {\r\n const checkPassed = checkIfNeedToReceiveFeaturesIfFiltersApplied(nextProps.selectedFilters, nextProps.currentParent);\r\n if (checkPassed) {\r\n this.getFeaturesFromBackendWithFilters(nextProps.currentParent, checkPassed.arrayOfNeededFiltersToReceive, 1);\r\n }\r\n }\r\n }\r\n\r\n deleteNotInVisualizerFeature = (nextProps) => {\r\n if (nextProps.currentParent && nextProps.currentParent.activeNotInVisualizerFeature\r\n && nextProps.currentParent.activeFeature && !nextProps.currentParent.activeFeature.notAvailableInVisualizer) {\r\n nextProps.currentParent.activeNotInVisualizerFeature = null;\r\n }\r\n }\r\n\r\n updatePositions = (nextProps) => {\r\n this.setState({\r\n indexesToReplace: [],\r\n showLoader: true\r\n }, () => {\r\n this.setRelatedStones(nextProps);\r\n });\r\n };\r\n\r\n checkForDisabled = (navItem) => {\r\n if (!navItem || !navItem.part || !navItem.part.getParent) {\r\n return\r\n }\r\n const parent = navItem.part.getParent();\r\n if (parent.disabled) {\r\n const itemParent = navItem.part.getParent();\r\n let exLAndBathtubAndSmallRoom = false;\r\n if (itemParent.partId === \"left_shower_wall\" && itemParent.getParent().layout.type === 0) {\r\n const showerBody = itemParent.getParent().layout.parts.Shower.showerBody;\r\n if (showerBody && showerBody.disabled) {\r\n exLAndBathtubAndSmallRoom = true\r\n }\r\n }\r\n if (itemParent.disabled && !exLAndBathtubAndSmallRoom) {\r\n itemParent.disabled = false;\r\n itemParent.disabledClick(); // disable also related parts\r\n }\r\n }\r\n if (parent.getParent) { // enable shower if child is clicked\r\n const showerParent = parent.getParent();\r\n if (showerParent.partName === \"Shower\" && showerParent.showerBody && showerParent.showerBody.disabled) {\r\n showerParent.showerBody.disabled = false;\r\n showerParent.showerBody.disabledClick(); // enable also related parts\r\n }\r\n }\r\n }\r\n\r\n handleFeatureClick = async (activeFeature, event, wizardClickOnLogic = null) => {\r\n\r\n if (event && (event.target.closest(\".feature-buttons\") || event.target.closest(\".feature-toolSettings\"))) {\r\n return false; // do not set activeFeature again ! // prevent redundant feature click\r\n } else if (this.props.activeFeature && this.props.activeFeature.dbFeature.id === activeFeature.part.dbFeature.id\r\n && (this.props.currentParent && this.props.currentParent.firstClick[this.props.activeQuoteIndex])) {\r\n this.showPositionsPopup(activeFeature.part, event);\r\n if (this.props.handleFeatureClick) {\r\n this.props.handleFeatureClick(activeFeature.part)\r\n }\r\n return false; // the same feature clicked // prevent redundant feature click\r\n }\r\n\r\n if (Config.isDevMode()) {\r\n console.log(\"activeFeature\", activeFeature.part);\r\n console.log(\"sharedFeatureName:\", activeFeature.part.dbFeature.sharedFeatureName, \"\\ngetSplittedFeatureName:\", activeFeature.part.getSplittedFeatureName());\r\n }\r\n const fabricatorSettings = this.props.fabricatorData.settings;\r\n if(!this.props.userIsLoggedIn && fabricatorSettings.clickLeadCaptureOnQuote && fabricatorSettings.clickLeadCountOnQuote\r\n && (++window.itemClickCountQuote >= fabricatorSettings.clickLeadCountOnQuote)) {\r\n this.props.handleUserLoginClick(UserPopupTypes.NewDesign);\r\n return;\r\n }\r\n if (this.props.handleFeatureClick && !wizardClickOnLogic) {\r\n this.props.handleFeatureClick(activeFeature.part) // set wizard selected value\r\n }\r\n if (this.props.showRestorePopup) {\r\n this.props.toggleShowRestorePopup(false);\r\n }\r\n // if (this.isWallItem(activeFeature.part) && activeFeature.part.getParent().getParent().allWallsApplied) {\r\n // this.applyAllWalls(activeFeature.part, ignoreLocked);\r\n // }\r\n\r\n if (!wizardClickOnLogic) {\r\n this.props.setActiveFeature(activeFeature.part); // set selected feature\r\n }\r\n\r\n const showPositionPopup = this.showPositionsPopup(activeFeature.part, event);\r\n if (showPositionPopup && !wizardClickOnLogic) {\r\n return // don't click on feature!! we are clicking inside the modal window\r\n }\r\n\r\n const layout = getCurrentLayout();\r\n\r\n if ((layout.isNewLayout || (layout.visualizerType === \"bvScene\")) && featureCanChangeShowerSize(activeFeature.part)) {\r\n await searchForSameNameWallsBeforeFeatureApply(activeFeature.part);\r\n }\r\n\r\n if (layout.isNewLayout) {\r\n\r\n navFeatureCLick(activeFeature.part);\r\n\r\n const applyToLogic = getApplyToLogic(activeFeature.part);\r\n // const parent = zoomFeature.getParent();\r\n // setActiveFeaturesBeforeAllWalls([], parent); // we don't need it here, as we have remembering logic below\r\n if (applyToLogic && Array.isArray(applyToLogic.currentApplyToArray) && applyToLogic.currentApplyToArray.length) {\r\n clickOnSimilarFeatures(activeFeature.part, applyToLogic, true);\r\n }\r\n } else {\r\n\r\n activeFeature.part.handleClick(false, \"\", wizardClickOnLogic ? {skipNotCompatible: true} : null);\r\n\r\n if (CABINET_GROUP.includes(activeFeature.part.partId) || CABINET_GROUP_BATHROOM.includes(activeFeature.part.partId)) {\r\n const featureIsLocked = getFeatureIsLocked(activeFeature.part);\r\n CabinetSwitchers.applyAllCabinets(activeFeature.part, !featureIsLocked);\r\n } else if (COUNTERTOP_GROUP.includes(activeFeature.part.partId) || COUNTERTOP_GROUP_BATHROOM.includes(activeFeature.part.partId)) {\r\n const featureIsLocked = getFeatureIsLocked(activeFeature.part);\r\n CountertopSwitchers.applyAllCountertops(activeFeature.part, !featureIsLocked);\r\n }\r\n }\r\n\r\n this.checkForDisabled(activeFeature);\r\n // this.props.toggleShowDescriptionCover(false);\r\n // console.log('is visible', $('.feature--selected').is(':visible'));\r\n\r\n if (activeFeature.part.partId === \"room\") {\r\n this.props.checkIfNeedToSwitchRoom(activeFeature.part);\r\n }\r\n\r\n this.props.toggleUpdateDisableFeatureGroupRadio(true);\r\n $(window).trigger(ActionTypes.CHANGE_LAYOUT); // update canvas\r\n this.props.updateCanvasCount();\r\n setTimeout(() => {\r\n this.props.toggleUpdateDisableFeatureGroupRadio(false);\r\n }, 0)\r\n\r\n };\r\n\r\n showPositionsPopup = (clickedFeature, event) => {\r\n if (clickedFeature && !clickedFeature.notAvailableInVisualizer\r\n && this.props.currentParent\r\n && this.props.currentParent.showLayerPositionsModal\r\n && this.props.currentParent.showLayerPositionsModal(clickedFeature)) {\r\n const eventPosition = getEventPosition(event);\r\n this.props.toggleNavItemPositionModal({\r\n popupOpened: true,\r\n popupPosition: {\r\n left: eventPosition.x,\r\n top: eventPosition.y\r\n },\r\n activePartId: clickedFeature.partId,\r\n });\r\n $(window).trigger(ActionTypes.UPDATE_ALL_ITEMS); // update buttons\r\n return true\r\n } else if (this.props.navItemPositionModal && this.props.navItemPositionModal.popupOpened) {\r\n this.props.toggleNavItemPositionModal({\r\n popupOpened: false,\r\n });\r\n }\r\n return false\r\n }\r\n\r\n // isWallItem = (itemPart) => {\r\n // const wallsPartIds = [\"wall_a\", \"wall_b\", \"wall_c\", \"right_shower_wall\", \"left_shower_wall\",\"pony_wall\"];\r\n // return wallsPartIds.includes(itemPart.partId);\r\n // };\r\n\r\n setRelatedStones(nextProps) {\r\n\r\n const selectedFirstItemIndex = this.getActiveItemIndex(nextProps);\r\n const features = nextProps.features.filter(feature => feature);\r\n let otherSelectedWallsIndexes = this.getSelectedWallIndexes(\r\n {part: nextProps.currentParent}, features, selectedFirstItemIndex\r\n );\r\n let unlockedIndexes = [];\r\n\r\n // console.log(\"otherSelectedWallsIndexes\", otherSelectedWallsIndexes);\r\n\r\n const fabricatorSettings = this.props.fabricatorData.settings; // set unlocked on the first positions\r\n if (nextProps.features.length && (fabricatorSettings.leadCaptureOnQuote && !(document.kvConfig.isBackend && document.kvConfig.jobId && document.kvConfig.canSaveQuote)) && !nextProps.isPhoneNumberValidated) {\r\n nextProps.features.forEach((feature, index) => {\r\n if (feature && feature.part && !getFeatureIsLocked(feature.part, false)) {\r\n unlockedIndexes.push(index);\r\n }\r\n });\r\n }\r\n\r\n const selectedExist = (selectedFirstItemIndex || selectedFirstItemIndex === 0) && selectedFirstItemIndex > -1;\r\n const indexesToReplace = selectedExist\r\n ? uniq([selectedFirstItemIndex, ...unlockedIndexes, ...otherSelectedWallsIndexes])\r\n : [...unlockedIndexes, ...otherSelectedWallsIndexes];\r\n this.setState({\r\n currentParentText: nextProps.currentParent ? nextProps.currentParent.partName : \"\",\r\n reorderedFeatures: this.getReorderedItems(indexesToReplace, nextProps, selectedExist, true),\r\n showLoader: false\r\n }, () => {\r\n if (this.needToUpdate) {\r\n const $gridBody = $(this.itemsList).find(\".ReactVirtualized__Grid\");\r\n if (this.props.windowWidth <= 991) {\r\n $gridBody.scrollLeft(this.needToUpdate);\r\n } else {\r\n $gridBody.scrollTop(this.needToUpdate);\r\n }\r\n this.needToUpdate = false;\r\n }\r\n });\r\n }\r\n\r\n getActiveItemIndex = (props) => {\r\n if (props.currentParent && props.currentParent.partId === \"room\") {\r\n return 0\r\n }\r\n const fabricatorSettings = props.fabricatorData.settings;\r\n const showPlaceHolders = document.bvConfig ? document.bvConfig.showPlaceholders : false;\r\n let isActiveItemIndex = null;\r\n if ((fabricatorSettings.leadCaptureOnQuote && !(document.kvConfig.isBackend && document.kvConfig.jobId && document.kvConfig.canSaveQuote))\r\n && !props.isPhoneNumberValidated && props.currentParent && props.currentParent.activeLockedFeature) {\r\n\r\n isActiveItemIndex = props.features.findIndex((item) => {\r\n return props.currentParent.activeLockedFeature.dbFeature.id === item.part.id()\r\n });\r\n // console.log('props.currentParent', props.currentParent);\r\n }\r\n else if (props.currentParent && props.currentParent.activeNotInVisualizerFeature) {\r\n isActiveItemIndex = props.features.findIndex((item) => {\r\n return item && item.part && (props.currentParent.activeNotInVisualizerFeature.dbFeature.id === item.part.id())\r\n })\r\n } else if (props.currentParent && props.currentParent.activeFeature) {\r\n isActiveItemIndex = props.features.findIndex((item) => {\r\n return item && item.part && (props.currentParent.activeFeatureId(showPlaceHolders) === item.part.id())\r\n })\r\n }\r\n return isActiveItemIndex\r\n };\r\n\r\n checkIfFeatureSelected = (currentFeature, currentParent = this.props.currentParent) => {\r\n if (!currentFeature) {\r\n return false\r\n }\r\n\r\n const currentFeatureId = currentFeature.dbFeature.id;\r\n\r\n if (this.props.isWizard) {\r\n const {wizardSelectedValues, wizardActiveStep} = this.props;\r\n if (!wizardSelectedValues || !wizardSelectedValues[wizardActiveStep] || !wizardSelectedValues[wizardActiveStep].selectedFeature) {\r\n return false\r\n }\r\n if (currentFeature.dbFeature.sharedFeatureName && wizardSelectedValues[wizardActiveStep].selectedFeature.dbFeature.sharedFeatureName) {\r\n return currentFeature.dbFeature.sharedFeatureName === wizardSelectedValues[wizardActiveStep].selectedFeature.dbFeature.sharedFeatureName\r\n }\r\n return currentFeatureId === wizardSelectedValues[wizardActiveStep].selectedFeature.dbFeature.id\r\n }\r\n\r\n let selected = false;\r\n if (currentFeatureId && currentParent\r\n && ((this.props.activeFeature && !this.props.activeFeature.notAvailableInVisualizer) || currentParent.firstClick[this.props.activeQuoteIndex])) {\r\n selected = currentParent.activeNotInVisualizerFeature\r\n ? currentParent.activeNotInVisualizerFeature.dbFeature.id === currentFeatureId\r\n : this.props.activeFeature && this.props.activeFeature.dbFeature.id === currentFeatureId\r\n }\r\n return selected\r\n };\r\n\r\n handleOnMobileGridScroll = ({clientWidth, scrollLeft, scrollWidth}) => {\r\n if (this.props.showItemsList && !this.state.showLoader) {\r\n const ceilScrollWidth = Math.ceil(scrollWidth);\r\n const floorScrollWidth = Math.floor(scrollWidth);\r\n const ceilScrollLeft = Math.ceil(scrollLeft);\r\n const floorScrollLeft = Math.floor(scrollLeft);\r\n if ((ceilScrollWidth - ceilScrollLeft === clientWidth)\r\n || (ceilScrollWidth - floorScrollLeft === clientWidth)\r\n || (floorScrollWidth - ceilScrollLeft === clientWidth)\r\n || (floorScrollWidth - floorScrollLeft === clientWidth)) {\r\n this.getNewFeaturesOnScroll(scrollLeft, {part: this.props.currentParent})\r\n }\r\n }\r\n };\r\n\r\n // getLoadingElementsForGrid = (isMobile) => {\r\n // const counts = getActivePartsCounts(this.props.currentParent, this.props.layoutName);\r\n // if (!counts) {\r\n // return null\r\n // }\r\n // let elements = [];\r\n // let styles = isMobile ? {} : {\r\n // height: this.props.listItemHeight\r\n // };\r\n // for (let i = 0; i <= counts ;i++ ) { // for ex. 28/3 = 10 columns\r\n // elements.push(\r\n //
    \r\n // \r\n //
    \r\n // );\r\n // }\r\n // return elements\r\n // };\r\n\r\n renderVirtualizedGrid = () => {\r\n const {windowWidth, currentParent, listItemHeight, handleUserLoginClick, isWizard, currentGroups,\r\n showListForce} = this.props;\r\n // console.log(\"renderDesktopVirtualizedGrid currentFeatures\", currentFeatures);\r\n if ((!showListForce && (currentParent && !currentParent.allFeaturesReceived)) || !this.itemsList) {\r\n return \r\n }\r\n const currentFeatures = this.state.reorderedFeatures.filter(currentFeature => currentFeature);\r\n return (windowWidth || window.innerWidth) < 991 ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n\r\n handleOnDesktopGridScroll = ({clientHeight, scrollHeight, scrollTop}) => {\r\n if (this.props.showItemsList && !this.state.showLoader) {\r\n const ceilScrollHeight = Math.ceil(scrollHeight);\r\n const floorScrollHeight = Math.floor(scrollHeight);\r\n const ceilScrollTop = Math.ceil(scrollTop);\r\n const floorScrollTop = Math.floor(scrollTop);\r\n if ((ceilScrollHeight - ceilScrollTop === clientHeight)\r\n || (ceilScrollHeight - floorScrollTop === clientHeight)\r\n || (floorScrollHeight - ceilScrollTop === clientHeight)\r\n || (floorScrollHeight - floorScrollTop === clientHeight)) {\r\n this.getNewFeaturesOnScroll(scrollTop, {part: this.props.currentParent})\r\n }\r\n }\r\n };\r\n\r\n renderVirtualizedList = () => {\r\n const {currentParent, isWizard, currentGroups, showListForce} = this.props;\r\n if ((!showListForce && (currentParent && !currentParent.allFeaturesReceived)) || !this.itemsList) {\r\n return \r\n }\r\n return \r\n }\r\n\r\n renderList = (isRowView) => {\r\n\r\n const {wizardConfig, currentParent, showListForce} = this.props;\r\n\r\n if (wizardConfig.length) {\r\n const existingWizSetup = wizardConfig.find(wizObject => {\r\n return wizObject.featureGroupName === currentParent.dbName || wizObject.featureGroupName === currentParent.partName\r\n })\r\n if (existingWizSetup && existingWizSetup.filterGroups.length && !existingWizSetup.isFinished && existingWizSetup.enableForQuoting) {\r\n if ((!showListForce && (currentParent && !currentParent.allFeaturesReceived)) || !this.itemsList) {\r\n return \r\n }\r\n return \r\n }\r\n }\r\n\r\n return isRowView\r\n ? this.renderVirtualizedList()\r\n : this.renderVirtualizedGrid()\r\n }\r\n\r\n render() {\r\n const {selectionWindowView} = this.props;\r\n const isRowView = selectionWindowView === 4;\r\n return (\r\n \r\n
    {\r\n this.itemsList = node;\r\n this.props.setRef(node);\r\n }}\r\n className={\"bv-item-list bv-item-list--\" + this.props.selectionWindowView\r\n + (this.props.filtersVisible ? \" bv-item-list--filters-visible\" : \"\")\r\n + (isRowView ? \" bv-item-list--row\" : \" bv-item-list--column\")}>\r\n {this.props.showItemsList && !this.state.showLoader\r\n ? this.renderList(isRowView)\r\n : \r\n }\r\n
    \r\n {this.state.additionalFeaturesLoading ? this.getLoadingFeatures() : null}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n\r\n const {wizardConfig, wizardSelectedValues, wizardActiveStep} = store.wizardState;\r\n\r\n return {\r\n selectionWindowView: store.selectionState.selectionWindowView,\r\n navigationViewType: store.selectionState.selectionWindowView, // needed for NavigationItemsList\r\n isPhoneNumberValidated: store.userState.isPhoneNumberValidated,\r\n windowWidth: store.serverState.windowWidth,\r\n activeFeature: store.selectionState.activeFeature,\r\n filtersVisible: store.filterState.showFilters,\r\n fabricatorData: store.fabricatorState,\r\n userPopupOpened: store.userState.userPopupOpened,\r\n filterGroups: store.filterState.filterGroups,\r\n showRestorePopup: store.bathroomVisualizerState.showRestorePopup,\r\n selectedFilters: store.filterState.selectedFilters,\r\n userIsLoggedIn: store.userState.userIsLoggedIn,\r\n activeQuoteIndex: store.quotesState.activeQuoteIndex,\r\n navItemPositionModal: store.navigationState.navItemPositionModal,\r\n wizardConfig,\r\n wizardSelectedValues,\r\n wizardActiveStep,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n toggleSelectionFeatureInfo,\r\n setActiveFeature,\r\n toggleShowDescriptionCover,\r\n toggleShowRestorePopup,\r\n toggleUpdateDisableFeatureGroupRadio,\r\n toggleNavItemPositionModal,\r\n updateCanvasCount,\r\n})(SelectionMainList);\r\n","import React from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport {setCameFromPage, toggleSelectionFeatureInfo} from \"../../../actions/actionFunctions\";\r\nimport FeatureThumbnail from \"../../visComponents/featureThumbnail\";\r\nimport FeatureName from \"../../visComponents/featureName\";\r\nimport FeatureInfoDescription from \"../selectionFeatureInfo/featureInfoDescription\";\r\nimport FeatureInfoPrice from \"../selectionFeatureInfo/featureInfoPrice\";\r\nimport FeatureInfoPriceLocked from \"../selectionFeatureInfo/featureInfoPriceLocked\";\r\nimport {getFeatureIsLocked} from \"../../../misc/helpers\";\r\nimport SelectionMainListRowItemButtons from \"./rowItemButtons\";\r\nimport RowItemRelatedProductsButton from \"./rowItemRelatedProductsButton\";\r\nimport FeatureCartItemsCount from \"../featureCartItemsCount\";\r\nimport {wizardGroupInterface} from \"../../../interfaces/wizardItemInterface\";\r\nimport {shouldReplaceSelectionInfoFeature} from \"../../qkbPages/materialsCommon/materialsCommonFunctions\";\r\nimport SuperAdminFeatureToolSettingsButton from \"../../qkbPages/superAdmin/SuperAdminFeatureToolSettingsButton\";\r\nimport {getDifferentToolSettings} from \"../../qkbPages/superAdmin/adminFunctions\";\r\n\r\n\r\nconst RowItem = (props) => {\r\n\r\n const {selected, currentFeature, fabricatorData, handleFeatureClick, toggleSelectionFeatureInfo, setCameFromPage,\r\n isRelated, windowWidth, isWizard, wizardGroup} = props;\r\n const fabricatorSettings = fabricatorData.settings;\r\n\r\n const goToFeatureInfo = () => {\r\n if (isRelated) {\r\n return false\r\n }\r\n const selectedFeature = shouldReplaceSelectionInfoFeature(currentFeature);\r\n toggleSelectionFeatureInfo(selectedFeature);\r\n setCameFromPage(\"materials\"); // no more visualizer or shoppingcart switch\r\n };\r\n\r\n const showPriceLocked = getFeatureIsLocked(currentFeature);\r\n const showPrice = fabricatorSettings.showPricing && !fabricatorData.hideCheckoutBreakdownCost\r\n && !showPriceLocked && !fabricatorData.hidePricesFromUser;\r\n\r\n const handleRowItemClick = (event) => {\r\n if (isRelated) {\r\n return false\r\n }\r\n const preventFeatureClickClasses = [\".m-button\", \".m-quantity\", \".m-triangle\"];\r\n if (!isWizard && event && preventFeatureClickClasses.some(className => event.target.closest(className))) {\r\n return false\r\n }\r\n handleFeatureClick({part: currentFeature}, event);\r\n };\r\n\r\n const isMobile = windowWidth < 991;\r\n\r\n const infoButtonVisible = !isWizard || !wizardGroup || !wizardGroup.skipProductInfo;\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n {!isRelated && isMobile ? (\r\n \r\n \r\n \r\n ) : null}\r\n \r\n
    \r\n
    \r\n

    \r\n \r\n
    \r\n
    \r\n {showPrice ? : null}\r\n {showPriceLocked ? : null}\r\n
    \r\n {!isRelated && !isMobile ? (\r\n
    \r\n \r\n
    \r\n ) : null}\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n};\r\n\r\nRowItem.propTypes = {\r\n selected: PropTypes.bool,\r\n isRelated: PropTypes.bool,\r\n isWizard: PropTypes.bool,\r\n wizardGroup: PropTypes.shape(wizardGroupInterface),\r\n currentFeature: PropTypes.object.isRequired,\r\n handleFeatureClick: PropTypes.func.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {productNoteEditorVisible} = store.selectionState;\r\n const {adminToolSettingsPopupVisible} = store.adminState;\r\n return {\r\n productNoteEditorVisible,\r\n windowWidth: store.serverState.windowWidth,\r\n fabricatorData: store.fabricatorState,\r\n adminToolSettingsPopupVisible,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n toggleSelectionFeatureInfo,\r\n setCameFromPage\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(RowItem);\r\n","import React from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst FeatureCartItemsCount = (props) => {\r\n\r\n const {currentFeatureId, cartItems, advancedQuotingSearchItem, activeQuoteIndex} = props;\r\n\r\n const getAddedCartItemsCount = () => {\r\n if (advancedQuotingSearchItem && advancedQuotingSearchItem.cartFeature) {\r\n if (advancedQuotingSearchItem.cartFeature.dbFeature.id === currentFeatureId) {\r\n return advancedQuotingSearchItem.quantity\r\n }\r\n return 0\r\n }\r\n let currentFeatureCartItemsCount = 0;\r\n const matchingCartItems = cartItems.filter((cartItem) => {\r\n return (currentFeatureId === cartItem.cartFeature.dbFeature.id) && (cartItem.currentQuote === activeQuoteIndex)\r\n });\r\n if (matchingCartItems.length) {\r\n currentFeatureCartItemsCount = matchingCartItems.reduce((total, cartItem) => {\r\n if (cartItem.partId === 'slabs') { // do not count slabs QCDES-1730\r\n return total + 0\r\n }\r\n return total + cartItem.quantity\r\n }, 0)\r\n }\r\n return +(+(currentFeatureCartItemsCount).toFixed(3)).toFixed(2)\r\n }\r\n\r\n const currentFeatureCartItemsCount = getAddedCartItemsCount();\r\n if (!currentFeatureCartItemsCount) {\r\n return null\r\n }\r\n\r\n return (\r\n {currentFeatureCartItemsCount}\r\n )\r\n};\r\n\r\nFeatureCartItemsCount.propTypes = {\r\n currentFeatureId: PropTypes.number.isRequired,\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {cartItems} = store.cartState;\r\n const {activeQuoteIndex} = store.quotesState;\r\n const {advancedQuotingSearchItem} = store.advancedQuotingState;\r\n return {\r\n cartItems,\r\n activeQuoteIndex,\r\n advancedQuotingSearchItem,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(FeatureCartItemsCount);\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport {getSessionStorageItem} from \"../../../misc/storageFunctions\";\r\nimport {setAdminToolSettingsPopupVisible} from \"./adminActions\";\r\nimport {IS_SUPER_ADMIN} from \"../../../config\";\r\nimport PropTypes from \"prop-types\";\r\nimport {featureInterface} from \"../../../interfaces/featureInterface\";\r\n\r\n\r\nconst SuperAdminFeatureToolSettingsButton = (props) => {\r\n\r\n const {setAdminToolSettingsPopupVisible, feature} = props;\r\n\r\n const isLoggedAsAdmin = IS_SUPER_ADMIN && getSessionStorageItem(\"superAdminToken\", false);\r\n if (!isLoggedAsAdmin || !feature) {\r\n return null\r\n }\r\n\r\n const handleButtonClick = () => {\r\n setAdminToolSettingsPopupVisible(true, feature);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n )\r\n}\r\n\r\nSelectionGridFiltersTitle.propTypes = {\r\n style: PropTypes.object,\r\n filterTitle: PropTypes.shape(shiftFilterTitleInterface).isRequired,\r\n allTitles: PropTypes.array.isRequired,\r\n filtersGrid: PropTypes.any,\r\n isTopTitle: PropTypes.bool,\r\n isHorizontal: PropTypes.bool,\r\n}\r\n\r\nconst mapStateToProps = () => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SelectionGridFiltersTitle)\r\n","import {useEffect, useState} from \"react\";\r\n\r\nimport {COUNTERTOP_GROUP} from \"../../kvComponent/core/constants\";\r\nimport {getFilterGroupValues} from \"../../../misc/utils\";\r\nimport {getBvGroupFilterValues} from \"../../../api/server-api\";\r\nimport {setActivePartFilterValues} from \"../../../misc/filtersFunctions\";\r\n\r\n/**\r\n *\r\n * @param currentParent {object}\r\n * @param currentFeatures {array}\r\n * @param filterGroups {array}\r\n * @param fabricatorData {object}\r\n * @returns {object}\r\n */\r\nexport const getWithFilters = (currentParent, currentFeatures, filterGroups, fabricatorData) => {\r\n\r\n if (!currentParent) {\r\n return {withFilters: false, filtersLoading: false}\r\n }\r\n\r\n let withFilters = false;\r\n const materialFilterGroup = filterGroups.find(filterGroup => filterGroup.name.trim() === \"Countertop Material\");\r\n\r\n const caesProfiles = fabricatorData.isCaesarStone && (\r\n (fabricatorData.fabricatorName && fabricatorData.fabricatorName.includes(\"QC Master Account US\"))\r\n || (fabricatorData.fabricatorName && fabricatorData.fabricatorName.includes(\"QC Master Account CAN\"))\r\n || (fabricatorData.fabricatorName && fabricatorData.fabricatorName === \"Caesarstone new versions NEW\")\r\n || (fabricatorData.wasCreatedFromFabricator && fabricatorData.wasCreatedFromFabricator.includes(\"QC Master Account US\"))\r\n || (fabricatorData.wasCreatedFromFabricator && fabricatorData.wasCreatedFromFabricator.includes(\"QC Master Account CAN\"))\r\n || (fabricatorData.wasCreatedFromFabricator && fabricatorData.wasCreatedFromFabricator === \"Caesarstone new versions NEW\")\r\n );\r\n\r\n if ((fabricatorData.isLowes || caesProfiles)\r\n && COUNTERTOP_GROUP.includes(currentParent.partId) && materialFilterGroup && materialFilterGroup.values) {\r\n if (!currentParent.filtersReceived) {\r\n return {withFilters, filtersLoading: true}\r\n } else if (materialFilterGroup.values.some(filterValue => currentParent.filtersReceived.includes(filterValue.id))) {\r\n const filterValuesAvailable = materialFilterGroup.values.filter(filterValue => {\r\n return currentParent.filtersReceived.includes(filterValue.id)\r\n })\r\n // console.log(\"filterValuesAvailable\", filterValuesAvailable);\r\n withFilters = filterValuesAvailable.some((filterValue) => {\r\n const countertopsFiltered = currentFeatures.filter(feature => {\r\n if (!feature || !feature.part) { // just in case\r\n return false\r\n }\r\n const countertopFilters = getFilterGroupValues(feature.part, materialFilterGroup);\r\n return countertopFilters && countertopFilters.includes(filterValue.id)\r\n });\r\n return countertopsFiltered.length\r\n })\r\n }\r\n }\r\n return {withFilters, filtersLoading: false}\r\n}\r\n\r\nexport const useGetFiltersRequest = (useRequest, requestFilters, featureGroup, allFilterGroups) => {\r\n\r\n const [filtersLoaded, setFiltersLoaded] = useState(!requestFilters);\r\n\r\n const checkFilters = async () => {\r\n const featureGroupFiltersResponse = await getBvGroupFilterValues(featureGroup.dbName || featureGroup.partName, null, false);\r\n setActivePartFilterValues(featureGroupFiltersResponse.data, featureGroup, allFilterGroups);\r\n setFiltersLoaded(true)\r\n }\r\n\r\n useEffect(() => {\r\n if (useRequest && requestFilters) {\r\n checkFilters();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [requestFilters, featureGroup])\r\n\r\n return filtersLoaded\r\n}\r\n","import React, {PureComponent} from 'react'\r\nimport { connect } from 'react-redux';\r\nimport classnames from 'classnames';\r\n\r\nimport Analytics from './../../analytics';\r\nimport {setGalleryActiveImageIndex, toggleGalleryVisible} from \"../../actions/selectionFunctions\";\r\nimport {featureThumbnailUrl} from \"../../misc/helpers\";\r\nimport {THUMBNAIL_SIZES} from \"../../misc/utils\";\r\n\r\nclass GalleryViewClass extends PureComponent {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n images: [],\r\n galleryOpened: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const {activeFeature, galleryImages} = this.props;\r\n this.setState({\r\n images: [{\r\n id: 1,\r\n url: featureThumbnailUrl(activeFeature),\r\n preview: featureThumbnailUrl(activeFeature, THUMBNAIL_SIZES.medium)\r\n }, // main image thumbnail\r\n ...galleryImages\r\n ]\r\n });\r\n setTimeout(() => {\r\n this.setState({\r\n galleryOpened: true\r\n });\r\n }, 0)\r\n }\r\n\r\n componentWillUnmount() {\r\n this.props.setGalleryActiveImageIndex(0);\r\n }\r\n\r\n handleCloseClick = () => {\r\n Analytics.sendClickEvent('gallery-close');\r\n this.setState({\r\n galleryOpened: false\r\n }, () => {\r\n setTimeout(() => {\r\n this.props.toggleGalleryVisible(false);\r\n }, 300)\r\n })\r\n };\r\n\r\n thumbnailClick = (activeImage, activeImageIndex) => {\r\n Analytics.sendClickEvent('view-gallery-image-' + activeImage.id)\r\n this.props.setGalleryActiveImageIndex(activeImageIndex)\r\n };\r\n\r\n render() {\r\n const activeImage = this.state.images[this.props.galleryActiveImageIndex];\r\n return (\r\n
    \r\n
    e.stopPropagation()}>\r\n
    \r\n
    \r\n
    \r\n {activeImage\r\n ? {activeImage.name}\r\n window.open(activeImage.url, \"_blank\")}\r\n className=\"gallery-view__main-image\" />\r\n : null}\r\n
    \r\n
    \r\n
      \r\n {this.state.images.map((g, gIndex) => {\r\n return (\r\n
    • this.thumbnailClick(g, gIndex)}/>\r\n )\r\n })}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n let { galleryActiveImageIndex, selectionFeatureInfo, galleryShowActiveFeature, activeFeature} = store.selectionState;\r\n const showFeature = galleryShowActiveFeature ? galleryShowActiveFeature : selectionFeatureInfo || activeFeature;\r\n return {\r\n galleryImages: showFeature.dbFeature.galleryImages || [],\r\n galleryActiveImageIndex,\r\n activeFeature: showFeature,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {\r\n toggleGalleryVisible,\r\n setGalleryActiveImageIndex\r\n})(GalleryViewClass);\r\n","import React, {useEffect, useState} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {connect} from \"react-redux\";\r\nimport {injectIntl} from 'react-intl';\r\n\r\nimport {toggleShowDescriptionCover} from \"../../actions/actionFunctions\";\r\nimport {wizardGroupInterface} from \"../../interfaces/wizardItemInterface\";\r\nimport {useIsMounted, usePrevious} from \"../../misc/helperHooks\";\r\nimport {getFeatureGroupDescription} from \"../look/grohe/groheNavigation/groheFunctions\";\r\n\r\nlet timeoutId = 0;\r\n\r\nconst SelectionDescriptionCover = (props) => {\r\n\r\n const {activePart, wizardGroup, intl, showDescriptionCover, toggleShowDescriptionCover, windowWidth,\r\n fabricatorData} = props;\r\n\r\n const isMounted = useIsMounted();\r\n const prevWizardGroup = usePrevious(wizardGroup);\r\n const prevActivePart = usePrevious(activePart);\r\n const [coverText, setCoverText] = useState(\"\");\r\n\r\n const getDescriptionText = () => {\r\n if (wizardGroup && wizardGroup.description) {\r\n return wizardGroup.description\r\n }\r\n if (!activePart) {\r\n return \"\"\r\n }\r\n return getFeatureGroupDescription(activePart.part, intl, fabricatorData)\r\n };\r\n\r\n const showCover = () => {\r\n clearTimeout(timeoutId);\r\n toggleShowDescriptionCover(false);\r\n timeoutId = setTimeout(() => {\r\n const descText = getDescriptionText();\r\n if (isMounted() && descText) {\r\n setCoverText(descText);\r\n toggleShowDescriptionCover(true);\r\n }\r\n }, 2000);\r\n }\r\n\r\n useEffect(() => {\r\n if (!prevWizardGroup && wizardGroup || (prevWizardGroup && wizardGroup && (prevWizardGroup.id !== wizardGroup.id))) {\r\n showCover();\r\n } else if (!prevActivePart && activePart || (prevActivePart && activePart && (prevActivePart.part.partName !== activePart.part.partName))) {\r\n showCover();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [activePart, wizardGroup]);\r\n\r\n let styles = {};\r\n if (coverText && (coverText.length > 250) && (windowWidth < 991)) {\r\n styles = windowWidth < 640\r\n ? {fontSize: \"10px\"}\r\n : windowWidth < 800 ? {fontSize: \"13px\"} : {}\r\n }\r\n\r\n return (\r\n
    \r\n {coverText}\r\n
    \r\n )\r\n}\r\n\r\nSelectionDescriptionCover.propTypes = {\r\n activePart: PropTypes.object,\r\n wizardGroup: PropTypes.shape(wizardGroupInterface),\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n showDescriptionCover: store.selectionState.showDescriptionCover,\r\n windowWidth: store.serverState.windowWidth,\r\n fabricatorData: store.fabricatorState,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n toggleShowDescriptionCover\r\n}\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(SelectionDescriptionCover)\r\n)\r\n","import React, {useEffect, useRef} from \"react\";\r\nimport { Player } from 'video-react';\r\nimport { connect } from \"react-redux\";\r\nimport $ from 'jquery';\r\n\r\nimport {toggleNotCompatibleView} from \"../../actions/selectionFunctions\";\r\nimport {toggleShowDescriptionCover} from \"../../actions/actionFunctions\";\r\nimport ActionTypes from \"../../misc/actionTypes\";\r\n\r\nconst NotCompatibleView = (props) => {\r\n\r\n const {activePartRelatedItemIndex, windowWidth, activeFeature} = props;\r\n const player = useRef(null);\r\n\r\n useEffect(() => {\r\n const isMobile = windowWidth < 991;\r\n if (!isMobile) {\r\n player.current.play();\r\n }\r\n props.toggleShowDescriptionCover(false);\r\n return () => {\r\n props.toggleNotCompatibleView(false); // on unmount component\r\n }\r\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n useEffect(() => {\r\n // skip initial render\r\n return () => {\r\n props.toggleNotCompatibleView(false); // on unmount component\r\n }\r\n }, [activePartRelatedItemIndex]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const updateDesignButtonClick = () => {\r\n const navFeature = activeFeature.getParent()\r\n .navigationSubItems()\r\n .find(navItem => navItem.part.dbFeature.id === activeFeature.dbFeature.id) // find the real feature\r\n if (navFeature) { // just in case\r\n navFeature.part.applyFeatureIfNotCompatible(); // first set new rules for this feature\r\n navFeature.part.handleClick(); // change item\r\n $(window).trigger(ActionTypes.UPDATE_ALL_ITEMS); // update footer items\r\n }\r\n props.toggleNotCompatibleView(false); // then remove the view\r\n }\r\n\r\n const videoPath = \"https://intro-videos.s3.amazonaws.com/not-compatible-icon_v1.webm\";\r\n const isMobile = windowWidth < 991;\r\n\r\n return (\r\n
    \r\n {isMobile ? null : (\r\n
    \r\n \r\n
    \r\n )}\r\n Not Compatible\r\n

    Item is not compatible with current design. Would you like to update your design?

    \r\n

    \r\n \r\n

    \r\n
    \r\n )\r\n};\r\n\r\nconst mapStateToProps = (store) => {\r\n const {activeFeature, activePartRelatedItemIndex} = store.selectionState;\r\n return {\r\n activeFeature,\r\n activePartRelatedItemIndex,\r\n windowWidth: store.serverState.windowWidth,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n toggleNotCompatibleView,\r\n toggleShowDescriptionCover\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(NotCompatibleView);\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from \"react-redux\";\r\nimport $ from 'jquery';\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {\r\n setSelectionWindowView,\r\n} from \"../../actions/actionFunctions\";\r\nimport SelectionViewSwitchers from './selectionViewSwitchers';\r\n\r\nimport Analytics from './../../analytics';\r\n\r\nimport BacksplashSelect from './backsplashSelect';\r\nimport FiltersButton from './filtersButton';\r\nimport CountertopSwitchers from \"../kvComponent/navigation/countertopSwitchers\";\r\nimport CabinetSwitchers from \"../kvComponent/navigation/cabinetSwitchers\";\r\nimport ActionTypes from \"../../misc/actionTypes\";\r\nimport ShareButton from \"../common/shareButton\";\r\nimport BodyPanelRadio from \"../visComponents/navigation/desktop/bodyPanelRadio\";\r\nimport {CABINET_GROUP, COUNTERTOP_GROUP} from \"../kvComponent/core/constants\";\r\nimport LanguageSwitcher from \"../common/languageSwitcher\";\r\nimport ShoppingCartButton from \"../ui/shoppingCartButton\";\r\nimport {COUNTERTOP_GROUP_BATHROOM} from \"../bvSceneComponent/core/constants\";\r\nimport LookAllWallsRadioButton from \"../look/lookNavigation/lookMain/lookAllWallsRadioButton\";\r\nimport {getCurrentLayout} from \"../appLayout\";\r\nimport {getCommonVisualizerType} from \"../../config\";\r\n\r\n\r\nclass SelectionMainHeader extends Component {\r\n\r\n static propTypes = {\r\n activeSubPart: PropTypes.object,\r\n searchText: PropTypes.string.isRequired,\r\n handleSearchInputChange: PropTypes.func.isRequired,\r\n };\r\n\r\n handleChangeListView = (e) => {\r\n Analytics.sendClickEvent(\"change-list-view-\" + e.target.dataset.view);\r\n this.props.handleChangeListView(+e.target.dataset.view);\r\n };\r\n\r\n backsplashSelectClick = () => {\r\n $(window).trigger('resize');\r\n $(window).trigger(ActionTypes.UPDATE_QUOTING_TOOL);\r\n };\r\n\r\n render() {\r\n const {activeSubPart, fabricatorData, isMobile} = this.props;\r\n const layout = getCurrentLayout();\r\n const fabricatorSettings = fabricatorData.settings;\r\n\r\n let subPartPartId = '';\r\n if (activeSubPart) {\r\n subPartPartId = activeSubPart.part.partId;\r\n }\r\n\r\n const isCabinet = CABINET_GROUP.includes(subPartPartId);\r\n\r\n const isCountertop = COUNTERTOP_GROUP.includes(subPartPartId) || COUNTERTOP_GROUP_BATHROOM.includes(subPartPartId);\r\n\r\n const showBacksplashSelect = subPartPartId === \"backsplash\" && (getCommonVisualizerType() === \"kitchen\");\r\n\r\n const showDisabledRadioButtons = activeSubPart && activeSubPart.part.canBeDisabled;\r\n\r\n return (\r\n
    \r\n {!fabricatorData.isCaesarStone && (showBacksplashSelect || isCabinet || isCountertop || showDisabledRadioButtons) ? (\r\n
    \r\n {showDisabledRadioButtons && activeSubPart ? : null}\r\n {showBacksplashSelect ? : null}\r\n {(isCabinet || isCountertop) && activeSubPart ? (\r\n
    \r\n {isCabinet\r\n ? layout.isNewLayout\r\n ? \r\n : \r\n : null}\r\n {isCountertop\r\n ? layout.isNewLayout\r\n ? \r\n : \r\n : null}\r\n
    \r\n ) : null}\r\n
    \r\n ) : null}\r\n
    \r\n {subPartPartId === \"backsplash\" && isMobile\r\n ? null\r\n : }\r\n
    \r\n \r\n {(placeholder) => (\r\n \r\n )}\r\n \r\n {this.props.searchText ? (\r\n
    \r\n
    \r\n {isMobile && fabricatorSettings.enableSharing ? : null}\r\n {isMobile ? : null}\r\n {fabricatorData.isCaesarStone ? null : }\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {selectionWindowView, selectionFeatureInfo, activeFeature} = store.selectionState;\r\n const {isMobile} = store.serverState;\r\n return {\r\n selectionWindowView,\r\n selectionFeatureInfo,\r\n isMobile,\r\n fabricatorData: store.fabricatorState,\r\n activeFeature, // to update active feature\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n handleChangeListView: setSelectionWindowView,\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SelectionMainHeader);\r\n","import React, {Component} from 'react';\r\nimport $ from 'jquery';\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {getCurrentLayout} from '../appLayout';\r\nimport SelectionFooterSubPart from \"./selectionFooterSubPart\";\r\nimport ActionTypes from \"../../misc/actionTypes\";\r\nimport BodySwipable from \"../visComponents/navigation/desktop/bodySwipable\";\r\nimport LoadingSpinner from \"../ui/loadingSpinner\";\r\n\r\nexport default class SelectionFooterSubParts extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n relatedItems: [],\r\n shadowLeft: -100,\r\n shadowRight: 0,\r\n isLoading: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setRelatedItems(this.props);\r\n // this.footerList.addEventListener(\"scroll\", this.handleFooterListScroll);\r\n $(window).on(ActionTypes.UPDATE_ALL_ITEMS, this.updateItems);\r\n setTimeout(() => {\r\n this.scrollToActiveSubPart(this.props.activePartRelatedItemIndex, 0);\r\n }, 0)\r\n }\r\n\r\n componentWillUnmount() {\r\n $(window).off(ActionTypes.UPDATE_ALL_ITEMS, this.updateItems);\r\n // this.footerList.removeEventListener(\"scroll\", this.handleFooterListScroll);\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (this.props.visualizerIsChanging && !nextProps.visualizerIsChanging) {\r\n this.setRelatedItems(nextProps);\r\n }\r\n }\r\n\r\n scrollToActiveSubPart = (activePartRelatedItemIndex, animationTime = 500) => {\r\n if (this.footerList) {\r\n const maxScroll = this.footerList.scrollWidth - this.footerList.clientWidth;\r\n const scrollIndex = this.props.windowWidth < 991 ? 50 : 40;\r\n const neededScroll = scrollIndex*activePartRelatedItemIndex;\r\n const scrollLeft = (maxScroll > 0) && (neededScroll > maxScroll) ? maxScroll : neededScroll;\r\n $(this.footerList).animate({scrollLeft}, animationTime);\r\n }\r\n };\r\n\r\n handleFooterListScroll = (e) => {\r\n // console.log('e', e.target.scrollLeft);\r\n this.setState({\r\n shadowLeft: e.target.scrollLeft > 100 ? 0 : -100 + e.target.scrollLeft,\r\n shadowRight: e.target.scrollLeft > 100 ? -100 : 0 - e.target.scrollLeft\r\n });\r\n };\r\n\r\n updateItems = () => {\r\n this.setRelatedItems(this.props)\r\n };\r\n\r\n setRelatedItems = (nextProps = this.props) => {\r\n // console.log('nextProps.activePart', nextProps.activePart);\r\n // console.log('activePart.subParts(false)', activePart.subParts(false));\r\n const layout = getCurrentLayout();\r\n // console.log(\"setRelatedItems layout\", layout);\r\n if (layout.qtCategories && nextProps.qtActiveCategory) {\r\n const qtActiveCategory = layout.qtCategories.find(qtCategory => qtCategory.name === nextProps.qtActiveCategory)\r\n || layout.qtCategories[0]; // cases when visualizerType is changed\r\n const currentSubParts = qtActiveCategory.subParts;\r\n this.setState({\r\n relatedItems: currentSubParts,\r\n isLoading: layout.isNewLayout\r\n && currentSubParts[0]\r\n && qtActiveCategory.defaultSubParts[0]\r\n && (qtActiveCategory.defaultSubParts[0].part.partId !== currentSubParts[0].part.partId)\r\n && !qtActiveCategory.defaultSubParts[0].part.allFeaturesReceived,\r\n // set loader true if first subPart is not loaded yet, mb it has some qt \"on\" items.\r\n // request should be in the visualizer.js // only for new kitchens, the old ones don't seem to have this issue\r\n });\r\n } else {\r\n this.setState({\r\n relatedItems: nextProps.activePart.subParts(false)\r\n });\r\n }\r\n };\r\n\r\n getSubPartsList = (withShoppingCart = false) => {\r\n const {activePartRelatedItemIndex, showAdvancedQuoting, visualizersLoaded, networkConnection} = this.props;\r\n return (\r\n \r\n {/*
    */}\r\n
    this.footerList = el}>\r\n {this.state.isLoading || !visualizersLoaded.includes(document.kvConfig.visualizerType)\r\n ? \r\n : this.state.relatedItems.map((item, index) => {\r\n if (showAdvancedQuoting && (index !== activePartRelatedItemIndex) && window.location.href.includes(\"materials\")) {\r\n return null\r\n }\r\n if (item.part && item.part.partId === \"slabs\") {\r\n return null\r\n }\r\n return \r\n })}\r\n {withShoppingCart ? (\r\n \r\n ) : null}\r\n
    \r\n {/*
    */}\r\n \r\n )\r\n }\r\n}\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\nimport {withRouter} from \"react-router-dom\";\r\nimport {FormattedMessage} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport {\r\n toggleSelectionFeatureInfo, toggleSelectionWindow, toggleBathroomVisualizerOpen\r\n} from \"../../../actions/actionFunctions\";\r\nimport {useChangeWizardStepRoute} from \"../materialsWizard/useChangeWizardStepRoute\";\r\n\r\nconst MaterialsFooterBackButton = (props) => {\r\n\r\n const {cameFromPage, selectionFeatureInfo, showAdvancedQuoting, toggleSelectionWindow, toggleBathroomVisualizerOpen,\r\n selectionGroup, toggleSelectionFeatureInfo, history, wizardActiveStep, checkForSubStepChange, subStepChange,\r\n isWizard} = props;\r\n\r\n const {changeWizardStepRoute} = useChangeWizardStepRoute();\r\n\r\n const handleBackButtonClick = () => {\r\n if (cameFromPage === \"visualizer\") {\r\n toggleSelectionWindow(false, selectionGroup);\r\n toggleBathroomVisualizerOpen(true);\r\n history.push('/visualizer');\r\n return;\r\n } else if (selectionFeatureInfo) {\r\n toggleSelectionFeatureInfo(null);\r\n if (cameFromPage === \"shoppingcart\") {\r\n history.push(\"/shoppingcart\");\r\n }\r\n return;\r\n } else if (showAdvancedQuoting) {\r\n history.push(\"/shoppingcart\");\r\n return;\r\n } else if (checkForSubStepChange && subStepChange && !checkForSubStepChange(\"back\")) {\r\n subStepChange();\r\n return;\r\n }\r\n if (isWizard) {\r\n changeWizardStepRoute(wizardActiveStep - 1);\r\n }\r\n }\r\n\r\n return (\r\n \r\n )\r\n\r\n};\r\n\r\nMaterialsFooterBackButton.propTypes = {\r\n isWizard: PropTypes.bool,\r\n checkForSubStepChange: PropTypes.func,\r\n subStepChange: PropTypes.func,\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {selectionGroup, selectionFeatureInfo} = store.selectionState;\r\n const {cameFromPage} = store.cartState;\r\n const {wizardActiveStep} = store.wizardState;\r\n const {showAdvancedQuoting} = store.advancedQuotingState;\r\n\r\n return {\r\n selectionGroup,\r\n selectionFeatureInfo,\r\n cameFromPage,\r\n wizardActiveStep,\r\n showAdvancedQuoting,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n toggleSelectionWindow,\r\n toggleBathroomVisualizerOpen,\r\n toggleSelectionFeatureInfo,\r\n};\r\n\r\nexport default withRouter(\r\n connect(mapStateToProps, mapDispatchToProps)(MaterialsFooterBackButton)\r\n)\r\n","import React from 'react';\r\nimport $ from \"jquery\";\r\nimport {connect} from \"react-redux\";\r\nimport {FormattedMessage} from \"react-intl\";\r\n\r\nimport {setMaterialsAgentTutorialFinished, showMaterialsAgentTutorial} from \"../../actions/tutorialFunctions\";\r\nimport Tutorial from \"./tutorial\";\r\n\r\n\r\nclass MaterialsAgentTutorial extends Tutorial {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n ringStyles: {\r\n left: 0,\r\n top: 0,\r\n }\r\n };\r\n this.resizeId = 0;\r\n }\r\n\r\n componentDidMount = () => {\r\n if (this.props.materialsAgentTutorialFinished) {\r\n return null\r\n }\r\n const scriptAdded = document.getElementById(\"pingpilot\");\r\n if (!scriptAdded) {\r\n return null\r\n }\r\n const pingButton = document.querySelector(\".pingpilot-button\");\r\n if (!pingButton) {\r\n return null\r\n }\r\n window.materialsAgentTutorialTimeoutId = setTimeout(() => {\r\n this.props.showMaterialsAgentTutorial(true);\r\n this.setButtonsPositions();\r\n $(\".tutorial-overlay--materials\").fadeIn(300);\r\n $(\".tutorial-step__ring, .tutorial-step\").fadeIn(300, () => {\r\n this.setButtonsPositions();\r\n });\r\n window.addEventListener(\"resize\", this.handleResize);\r\n }, 30000);\r\n };\r\n\r\n handleResize = () => {\r\n clearTimeout(this.resizeId);\r\n this.resizeId = setTimeout(this.setButtonsPositions, 500);\r\n };\r\n\r\n setButtonsPositions = () => {\r\n this.changeHighlightRingPosition(\".omnibrowse-code-button\");\r\n };\r\n\r\n componentWillUnmount() {\r\n window.clearTimeout(window.materialsAgentTutorialTimeoutId);\r\n window.removeEventListener(\"resize\", this.handleResize);\r\n }\r\n\r\n handleNextStepClick = () => {\r\n this.exitTutorial(true);\r\n };\r\n\r\n exitTutorial = (forever) => {\r\n $(\".tutorial-overlay--materials\").fadeOut(300, () => {\r\n this.props.showMaterialsAgentTutorial(false);\r\n if (forever) {\r\n this.props.setMaterialsAgentTutorialFinished(true);\r\n try {\r\n window.localStorage.setItem(\"materials_tutorial_finished\", true);\r\n } catch (ex) { console.log(\"localStorage exception\", ex); }\r\n }\r\n });\r\n };\r\n\r\n pingButtonClick = () => {\r\n this.exitTutorial(true);\r\n const pingButton = document.querySelector(\".pingpilot-button\");\r\n if (!pingButton) {\r\n return null\r\n }\r\n pingButton.click();\r\n }\r\n\r\n render() {\r\n\r\n const {materialsAgentTutorialIsOpened, materialsAgentTutorialFinished, isMobile} = this.props;\r\n\r\n if (!materialsAgentTutorialIsOpened || materialsAgentTutorialFinished) {\r\n return null\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

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

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {materialsAgentTutorialIsOpened, materialsAgentTutorialFinished} = store.tutorialState;\r\n const {isMobile} = store.serverState;\r\n\r\n return {\r\n materialsAgentTutorialIsOpened,\r\n materialsAgentTutorialFinished,\r\n isMobile,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n showMaterialsAgentTutorial,\r\n setMaterialsAgentTutorialFinished,\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MaterialsAgentTutorial);\r\n","import React, {useRef} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport BodySwipable from \"../../visComponents/navigation/desktop/bodySwipable\";\r\nimport MaterialsWizardFooterStep from \"./materialsWizardFooterStep\";\r\nimport {\r\n getWizardStepIsDisabled\r\n} from \"../../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\nimport {wizardItemInterface} from \"../../../interfaces/wizardItemInterface\";\r\nimport {getNextWizardSteps} from \"../../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions2\";\r\n\r\n// const stepWidth = 92;\r\nconst MaterialsWizardFooterSteps = (props) => {\r\n\r\n const {wizardItem, wizardSelectedValues, wizardActiveStep, isShoppingCart, showAdvancedQuoting} = props;\r\n\r\n const scrollElementRef = useRef();\r\n\r\n // const stepWidth = isMobile ? 92 : 92;\r\n\r\n const wizardSteps = getNextWizardSteps(wizardItem, wizardActiveStep, wizardSelectedValues);\r\n // console.log(\"wizardSteps\", wizardSteps);\r\n\r\n // const styles = {\r\n // width: (wizardSteps.length + (isShoppingCart ? 1 : 0)) * stepWidth\r\n // }\r\n\r\n // const currentGroups = getCurrentGroups(wizardItem, wizardActiveStep, wizardSelectedValues);\r\n // const isCompletedStep = wizardActiveStep > -1 && !currentGroups.length;\r\n // const menuWidth = windowWidth * 35 / 100; // 35% of screen\r\n // const useContainerOverFlow = styles.width >menuWidth;\r\n\r\n const content = (\r\n
    \r\n {wizardSteps.map((step) => {\r\n const stepDisabled = getWizardStepIsDisabled(step.stepIndex, wizardSelectedValues, wizardSteps);\r\n if (showAdvancedQuoting && (step.stepIndex !== wizardActiveStep) && window.location.href.includes(\"materials\")) {\r\n return null\r\n }\r\n return \r\n })}\r\n
    \r\n )\r\n\r\n // return useContainerOverFlow ? (\r\n // \r\n // {/*
    */}\r\n // {content}\r\n // \r\n // ) :
    {content}
    \r\n\r\n return (\r\n \r\n {content}\r\n \r\n )\r\n\r\n};\r\n\r\nMaterialsWizardFooterSteps.propTypes = {\r\n isShoppingCart: PropTypes.bool,\r\n wizardItem: PropTypes.shape(wizardItemInterface).isRequired,\r\n wizardValues: PropTypes.object,\r\n wizardStep: PropTypes.number,\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n const {wizardSelectedValues, wizardActiveStep} = store.wizardState;\r\n const {windowWidth, isMobile} = store.serverState;\r\n const {wizardValues} = ownProps;\r\n const {showAdvancedQuoting} = store.advancedQuotingState;\r\n\r\n return {\r\n wizardSelectedValues: wizardValues || wizardSelectedValues,\r\n wizardActiveStep,\r\n // wizardActiveStep: Number.isInteger(wizardStep) ? wizardStep : wizardActiveStep,\r\n windowWidth,\r\n isMobile,\r\n showAdvancedQuoting,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MaterialsWizardFooterSteps)\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport $ from \"jquery\";\r\n\r\nimport {togglePulseFeatureInfoQuantity} from \"../../../actions/actionFunctions\";\r\nimport {toggleProductNoteEditorVisible} from \"../../../actions/selectionFunctions\";\r\nimport {getCartItemObject} from \"../../../misc/helpers\";\r\n\r\n\r\nexport default (WrappedComponent) => {\r\n\r\n const WithMaterialsWizardFooterCommon = (props) => {\r\n\r\n const {selectionInfoQuantity, selectionFeatureInfo, togglePulseFeatureInfoQuantity, toggleProductNoteEditorVisible,\r\n relatedGroups, qtActiveCategory, selectionGroup} = props;\r\n\r\n const quantityIsZero = () => {\r\n if (!selectionInfoQuantity && selectionFeatureInfo && !selectionFeatureInfo.dbFeature.hideQuantity) {\r\n togglePulseFeatureInfoQuantity(true);\r\n toggleProductNoteEditorVisible(false); // exit add note mode\r\n const $scrollableInfoArea = $(\".selection-main__info-scrollable\");\r\n if ($scrollableInfoArea) {\r\n $scrollableInfoArea.animate({scrollTop: 0}, 500);\r\n }\r\n return true;\r\n }\r\n return false\r\n }\r\n\r\n const getCartFeatureParentName = (activeFeature) => {\r\n let parentName = selectionGroup;\r\n if (activeFeature.getParent) {\r\n const subPart = activeFeature.getParent();\r\n parentName = subPart.getParent ? subPart.getParent().partName : subPart.partName\r\n }\r\n return parentName\r\n }\r\n\r\n const getCurrentRelatedCartItems = (activeFeature, arrayToAddtoTheCart = []) => {\r\n if (Array.isArray(relatedGroups) && relatedGroups.length) {\r\n relatedGroups.forEach(relatedGroup => {\r\n relatedGroup.relatedFeatures.forEach(relatedFeature => {\r\n if (relatedFeature.cartQuantity) {\r\n const relatedItemCartObject = getCartItemObject(relatedFeature, relatedFeature.cartQuantity, qtActiveCategory);\r\n relatedItemCartObject.relatedProductParent = activeFeature;\r\n arrayToAddtoTheCart.push(relatedItemCartObject)\r\n }\r\n });\r\n });\r\n }\r\n return arrayToAddtoTheCart\r\n }\r\n\r\n return \r\n\r\n };\r\n\r\n const mapStateToProps = (store) => {\r\n const {selectionFeatureInfo, selectionInfoQuantity, relatedGroups, selectionGroup} = store.selectionState;\r\n const {qtActiveCategory} = store.qtState;\r\n\r\n return {\r\n selectionFeatureInfo,\r\n selectionInfoQuantity,\r\n relatedGroups,\r\n qtActiveCategory,\r\n selectionGroup,\r\n };\r\n };\r\n\r\n const mapDispatchToProps = {\r\n togglePulseFeatureInfoQuantity,\r\n toggleProductNoteEditorVisible,\r\n };\r\n\r\n return connect(mapStateToProps, mapDispatchToProps)(WithMaterialsWizardFooterCommon)\r\n}\r\n","import React, {Component, Fragment} from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport ShoppingCartMobile from \"./shoppingCartMobile\";\r\nimport ShoppingCartDesktop from \"./shoppingCartDesktop\";\r\nimport {toggleBathroomVisualizerOpen} from \"../../actions/actionFunctions\";\r\nimport UnlockCalculations from \"./unlockCalculations\";\r\nimport {setAdvancedQuotingSearchItem} from \"../../actions/advancedQuotingFunctions\";\r\nimport ShoppingCartSureTaxUpdater from \"./shoppingCartSureTaxUpdater\";\r\nimport {toggleShowAssignQuotePopup} from \"../../actions/assignPopupFunctions\";\r\nimport {setWizardAllowSkipDoneSteps} from \"../../actions/wizardFunctions\";\r\n\r\nclass ShoppingCartView extends Component {\r\n\r\n componentDidMount() {\r\n if (this.props.bvOpened) {\r\n this.props.toggleBathroomVisualizerOpen(false);\r\n }\r\n if (this.props.advancedQuotingSearchItem) {\r\n this.props.setAdvancedQuotingSearchItem(null);\r\n }\r\n if (this.props.wizardAllowSkipDoneSteps) {\r\n this.props.setWizardAllowSkipDoneSteps(false);\r\n }\r\n if (this.props.fabricatorData.settings.sureTax && !this.props.isPhoneNumberValidated) {\r\n if (document.kvConfig.isBackend) { // && !editToken\r\n this.props.toggleShowAssignQuotePopup(true, \"updateTax\");\r\n } else { // regular user popup\r\n // toggleUserPopup({\r\n // userPopupOpened: true\r\n // })\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const {fabricatorData, visualizersLoaded} = this.props;\r\n if (!visualizersLoaded.length || !fabricatorData.received) {\r\n return null\r\n }\r\n return (\r\n \r\n {this.props.windowWidth > 991 ? : }\r\n \r\n {fabricatorData.settings.sureTax ? : null}\r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {isPhoneNumberValidated} = store.userState;\r\n const {wizardAllowSkipDoneSteps} = store.wizardState;\r\n return {\r\n windowWidth: store.serverState.windowWidth,\r\n visualizersLoaded: store.serverState.visualizersLoaded,\r\n bvOpened: store.bathroomVisualizerState.bvOpened,\r\n fabricatorData: store.fabricatorState,\r\n advancedQuotingSearchItem: store.advancedQuotingState.advancedQuotingSearchItem,\r\n isPhoneNumberValidated,\r\n wizardAllowSkipDoneSteps,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n toggleBathroomVisualizerOpen,\r\n setAdvancedQuotingSearchItem,\r\n toggleShowAssignQuotePopup,\r\n setWizardAllowSkipDoneSteps,\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ShoppingCartView);\r\n","import React, {Fragment} from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport {hashHistory} from \"react-router\";\r\nimport size from 'lodash/size';\r\nimport flatMap from 'lodash/flatMap';\r\nimport filter from 'lodash/filter';\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\n\r\nimport {\r\n removeFromCart,\r\n toggleSelectionWindow,\r\n changeStateToQuote,\r\n setQtActiveCategory,\r\n changeActivePartRelatedItemIndex\r\n} from \"../../actions/actionFunctions\";\r\nimport {\r\n getCurrencySign,\r\n getFeatureGroupName, getPriceWithCurrency,\r\n getRoomName,\r\n getTotalPrice,\r\n toFixedPrice\r\n} from \"../../misc/helpers\";\r\nimport Analytics from './../../analytics';\r\nimport CommonFeatureItemsMethods from \"../visComponents/commonFeatureItemsMethods\";\r\nimport ChangeRoomButton from \"./changeRoomButton\";\r\nimport ShoppingCartItemsListItem from \"./shoppingCartItemsListItem\";\r\nimport {getCurrentLayout} from \"../appLayout\";\r\nimport {changeQTRoutePath, changeRoutePath} from \"../../misc/changeRoutePath\";\r\nimport ShoppingCartDiscountsList from \"./shoppingCartDiscountsList\";\r\nimport ShoppingCartItemsListInstallationItem from \"./shoppingCartItemsListInstallationItem\";\r\nimport AdvancedQuotingList from \"./advancedQuoting/advancedQuotingList\";\r\nimport {setActiveQuoteIndex} from \"../../actions/roomsFunctions\";\r\nimport SimilarProducts from \"./similarProducts/similarProducts\";\r\nimport {SQFT_FEATURES} from \"../sqft/constants\";\r\nimport {showWizardInsteadOfQT} from \"../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\nimport {WIZARD_GROUP_TYPES} from \"../../interfaces/wizardItemInterface\";\r\nimport ShoppingCartItemsListWizardCustomItem from \"./shoppingCartItemsListWizardCustomItem\";\r\nimport {setNewActiveQuote} from \"../../misc/quotesFunctions\";\r\nimport LoadingSpinner from \"../ui/loadingSpinner\";\r\nimport {getDifferentCurrencyCartItems} from \"../../misc/misc2\";\r\nimport {switchToNewVisualizerType} from \"../../misc/visualizerSwitchingFunctions\";\r\nimport goToMaterialPage from \"../common/goToMaterialPage\";\r\nimport {getWizardGroupName} from \"../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions2\";\r\nimport TextInput from \"../ui/textInput\";\r\n\r\nclass ShoppingCartItemsList extends CommonFeatureItemsMethods {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n\r\n componentDidMount() {\r\n this.props.changeStateToQuote();\r\n }\r\n\r\n shouldComponentUpdate(nextProps) {\r\n return !nextProps.showAssignQuotePopup;\r\n }\r\n\r\n switchToMaterialsPageGroup = async (listItem, quoteIndex, cartItem = null) => {\r\n const {selectionGroup, featureGroupName, featureGroup} = listItem;\r\n Analytics.sendClickEvent(cartItem ? \"shopping-cart-edit-feature\" : \"shopping-cart-items-go-to-materials\");\r\n const {activeQuoteIndex, setActiveQuoteIndex} = this.props;\r\n if (cartItem && (cartItem.fromVisualizerType !== document.kvConfig.visualizerType)) {\r\n await switchToNewVisualizerType(cartItem.fromVisualizerType);\r\n // this.props.setActionAfterVisualizerTypeIsChanged();\r\n }\r\n if (quoteIndex !== activeQuoteIndex) {\r\n await setNewActiveQuote(quoteIndex);\r\n await setActiveQuoteIndex(quoteIndex);\r\n }\r\n if (featureGroup) {\r\n // const switchToProduct = cartItem.relatedProductParent || cartItem.cartFeature;\r\n let wizardAllObject = null;\r\n let stepIndex = 0;\r\n if (cartItem && cartItem.fromWizardId) {\r\n wizardAllObject = {wizardItemId: cartItem.fromWizardId, quoteIndex};\r\n stepIndex = cartItem.fromWizardStep;\r\n }\r\n goToMaterialPage(\"shoppingcart\", false, {part: featureGroup}, \"\", wizardAllObject, stepIndex);\r\n return\r\n }\r\n const layout = getCurrentLayout();\r\n if (layout.qtCategories) {\r\n let subPartIndex = 0;\r\n const neededQtCat = layout.qtCategories.find(qtCat => {\r\n const sIndex = qtCat.defaultSubParts.findIndex(sPart => {\r\n return (sPart.part.customGroupDisplayName || sPart.text) === featureGroupName\r\n })\r\n if (sIndex > -1) {\r\n subPartIndex = sIndex\r\n return true\r\n }\r\n return false\r\n }) || layout.qtCategories[0];\r\n this.props.setQtActiveCategory(neededQtCat.name);\r\n this.props.changeActivePartRelatedItemIndex(subPartIndex);\r\n changeQTRoutePath(neededQtCat.name, subPartIndex);\r\n } else {\r\n this.props.toggleSelectionWindow(true, selectionGroup);\r\n const parentGroup = layout.parts[selectionGroup];\r\n if (parentGroup) {\r\n const subPartIndex = parentGroup.subParts().findIndex(sPart => {\r\n return (sPart.part.customGroupDisplayName || sPart.text) === featureGroupName\r\n })\r\n changeRoutePath(parentGroup, subPartIndex > -1 ? subPartIndex : 0)\r\n } else {\r\n hashHistory.push('materials');\r\n }\r\n }\r\n };\r\n\r\n setFeatureGroupCustomName = (featureGroup, quoteIndex = 0, value) => {\r\n if (!featureGroup.customNames) {\r\n featureGroup.customNames = {}\r\n }\r\n featureGroup.customNames[quoteIndex] = value;\r\n this.forceUpdate();\r\n }\r\n\r\n createCommonParentsList = () => {\r\n const {quotes, cartItems, activeQuoteIndex, showAllQuotesCartItemsList, intl, fabricatorData, wizardList,\r\n wizardIsActive, allWizardsValues} = this.props;\r\n const isWizard = showWizardInsteadOfQT(wizardList, wizardIsActive);\r\n let quotesList = {}; // {quoteIndex: ArrayOf({parentName: \"\", cartItem})}\r\n quotes.forEach((quote, quoteIndex) => {\r\n\r\n const layout = getCurrentLayout(fabricatorData.settings.allowVisualizerSwitching && quote.room ? quote.room : document.kvConfig.visualizerType);\r\n\r\n const cartList = []; //ArrayOf({parentName: \"\", cartItem})\r\n const quoteCartItems = cartItems.filter((cartItem) => cartItem.cartFeature && (cartItem.currentQuote === quoteIndex));\r\n if (showAllQuotesCartItemsList || quoteIndex === activeQuoteIndex) {\r\n let uniqueCartItemIds = [];\r\n\r\n const addToCartList = (cartItem, wizardGroup, wizardItemId) => {\r\n //todo get slab parentGroup and remove displayFakeFeatureGroupName\r\n const parentGroup = cartItem.cartFeature.getParent\r\n ? cartItem.cartFeature.getParent()\r\n : layout.getFeatureGroupByPartId(cartItem.cartFeature.partId);\r\n let featureGroupName;\r\n let featureGroupDisplayName;\r\n\r\n if (cartItem.displayFakeFeatureGroupName) {\r\n featureGroupName = cartItem.displayFakeFeatureGroupName;\r\n featureGroupDisplayName = intl.formatMessage({id: \"sqftFeaturesPopup.title.\" + cartItem.displayFakeFeatureGroupName});\r\n } else {\r\n featureGroupName = parentGroup ? parentGroup.customGroupDisplayName || parentGroup.partName : cartItem.selectionGroup;\r\n if (wizardGroup) {\r\n featureGroupDisplayName = getWizardGroupName(wizardGroup);\r\n }\r\n if (!featureGroupDisplayName || !wizardGroup) {\r\n featureGroupDisplayName = parentGroup ? getFeatureGroupName(parentGroup, intl, fabricatorData) : cartItem.selectionGroup;\r\n }\r\n }\r\n\r\n const parent = cartList.find(listItem => {\r\n if (isWizard && cartItem.fromWizardGroupId) {\r\n return listItem.wizardGroupId === cartItem.fromWizardGroupId && (listItem.wizardItemId === cartItem.fromWizardId)\r\n }\r\n return listItem.featureGroupName === featureGroupName\r\n });\r\n if (parent) {\r\n parent.cartItems.push(cartItem);\r\n } else {\r\n cartList.push({\r\n featureGroupName,\r\n featureGroupDisplayName,\r\n selectionGroup: cartItem.selectionGroup,\r\n cartItems: [cartItem],\r\n featureGroup: parentGroup,\r\n wizardGroupId: wizardGroup ? wizardGroup.id : null,\r\n wizardItemId,\r\n });\r\n }\r\n };\r\n\r\n if (isWizard) {\r\n wizardList.forEach(wizardItem => {\r\n const existingAllObject = allWizardsValues.find(wizSelObject => {\r\n return wizSelObject.wizardItemId === wizardItem.id && wizSelObject.quoteIndex === quoteIndex\r\n });\r\n if (existingAllObject && existingAllObject.wizardSelectedValues) {\r\n Object.keys(existingAllObject.wizardSelectedValues).forEach(key => {\r\n const wizardGroup = existingAllObject.wizardSelectedValues[key].wizardGroup\r\n if (wizardGroup && wizardGroup.nodeType === WIZARD_GROUP_TYPES.custom && !wizardGroup.hideInCartAndReceipt) {\r\n cartList.push({\r\n type: WIZARD_GROUP_TYPES.custom,\r\n wizardSelectedValue: existingAllObject.wizardSelectedValues[key],\r\n wizardAllObject: existingAllObject,\r\n stepIndex: key,\r\n wizardGroup,\r\n });\r\n return\r\n }\r\n let currentCartItems = cartItems.filter(cartItem => {\r\n if (cartItem.bundleParentId) {\r\n return false\r\n }\r\n return cartItem.cartFeature && (cartItem.currentQuote === quoteIndex)\r\n && (wizardGroup && cartItem.fromWizardGroupId\r\n ? (wizardGroup.id === cartItem.fromWizardGroupId)\r\n : +key === cartItem.fromWizardStep)\r\n && !uniqueCartItemIds.includes(cartItem.id)\r\n });\r\n if (currentCartItems.length) {\r\n uniqueCartItemIds = [...uniqueCartItemIds, ...currentCartItems.map(cItem => cItem.id)];\r\n currentCartItems.forEach((cartItem) => addToCartList(cartItem, wizardGroup, wizardItem.id))\r\n // } else if (wizardGroup && !wizardGroup.hideInCartAndReceipt) {\r\n // cartList.push({\r\n // type: WIZARD_GROUP_TYPES.custom,\r\n // wizardSelectedValue: existingAllObject.wizardSelectedValues[key],\r\n // wizardAllObject: existingAllObject,\r\n // stepIndex: key,\r\n // wizardGroup,\r\n // });\r\n }\r\n })\r\n }\r\n });\r\n quoteCartItems.forEach((cartItem) => {\r\n if (!uniqueCartItemIds.includes(cartItem.id) && !cartItem.bundleParentId) {\r\n uniqueCartItemIds.push(cartItem.id);\r\n addToCartList(cartItem)\r\n }\r\n });\r\n } else if (layout.qtCategories) {\r\n layout.qtCategories.forEach(qtCategory => {\r\n qtCategory.subParts.forEach((subPart) => {\r\n let currentCartItems = cartItems.filter(cartItem => {\r\n if (cartItem.bundleParentId) {\r\n return false\r\n }\r\n return cartItem.cartFeature && (cartItem.currentQuote === quoteIndex)\r\n && (subPart.part.partId === cartItem.partId || (cartItem.relatedProductParent && subPart.part.partId === cartItem.relatedProductParent.partId))\r\n && !uniqueCartItemIds.includes(cartItem.id)\r\n });\r\n if (currentCartItems.length) {\r\n uniqueCartItemIds = [...uniqueCartItemIds, ...currentCartItems.map(cItem => cItem.id)];\r\n currentCartItems.forEach((cartItem) => addToCartList(cartItem))\r\n }\r\n })\r\n });\r\n quoteCartItems.forEach((cartItem) => {\r\n if (!uniqueCartItemIds.includes(cartItem.id) && !cartItem.bundleParentId) {\r\n uniqueCartItemIds.push(cartItem.id);\r\n addToCartList(cartItem)\r\n }\r\n })\r\n } else {\r\n quoteCartItems.forEach((cartItem) => addToCartList(cartItem))\r\n }\r\n cartList.push({\r\n type: \"similar\",\r\n quoteIndex\r\n });\r\n if (showAllQuotesCartItemsList) {\r\n cartList.push({\r\n type: \"subTotal\",\r\n quoteIndex\r\n });\r\n }\r\n }\r\n quotesList[quoteIndex] = cartList\r\n });\r\n // console.log(\"quotesList\", quotesList);\r\n return quotesList\r\n };\r\n\r\n getCartItemsList = (isMobile, fabricatorData, fabricatorSettings) => {\r\n const {cartItems, showAllQuotesCartItemsList, isPhoneNumberValidated, quotes, intl} = this.props;\r\n if (!cartItems.length) {\r\n // if (!cartItems.length || (Object.keys(quotesList).every(quoteIndex => !quotesList[quoteIndex].length))) {\r\n return (\r\n

    \r\n \r\n

    \r\n )\r\n }\r\n const quotesList = this.createCommonParentsList();\r\n const quotesListArray = Object.keys(quotesList);\r\n\r\n const {isBackend, jobId, canSaveQuote} = document.kvConfig;\r\n const pricingIsLocked = (fabricatorSettings.leadCaptureOnQuote || fabricatorSettings.leadCaptureShoppingCart)\r\n && !(isBackend && jobId && canSaveQuote) && !isPhoneNumberValidated;\r\n\r\n return quotesListArray.map(quoteIndex => {\r\n return (\r\n
    1) ? \" scart-room--bordered\" : \"\")} key={quoteIndex}>\r\n {showAllQuotesCartItemsList && (quotesListArray.length > 1) ? (\r\n

    \r\n : {getRoomName(quoteIndex, cartItems, quotes, intl.messages, intl.locale, fabricatorData)}\r\n

    \r\n ) : null}\r\n {quotesList[quoteIndex].map((listItem, index) => {\r\n if (this.props.showUnlockCalculations && listItem.cartItems && !listItem.cartItems.some(cartItem => {\r\n return this.props.showCartItems.includes(cartItem.id)\r\n })) {\r\n return false\r\n }\r\n if (listItem.type === \"subTotal\") {\r\n const quoteTotalPrice = getTotalPrice(listItem.quoteIndex, false);\r\n if (fabricatorData.isAmericanImport || (this.props.showUnlockCalculations && (this.props.unlockCalculationsStep < 2))) {\r\n return null\r\n }\r\n const quoteCartItems = fabricatorSettings.useDifferentCurrencies ? cartItems.filter(cartItem => cartItem.currentQuote === listItem.quoteIndex) : [];\r\n const differentCurrencyObjects = getDifferentCurrencyCartItems(fabricatorSettings, quoteCartItems);\r\n\r\n return (\r\n
    \r\n {differentCurrencyObjects.length ? differentCurrencyObjects.map(currObject => {\r\n const currentTotal = getTotalPrice(listItem.quoteIndex, false, currObject.cartItems);\r\n return (\r\n
    listItem.type === \"subTotal\") ? \" scart-block__subtotal--only\" : \"\"\r\n )}>\r\n : \r\n {pricingIsLocked ? (\r\n \r\n \r\n \r\n ) : getCurrencySign(currObject.currency, fabricatorSettings) + toFixedPrice(currentTotal.materialPrice, true)}\r\n
    \r\n )\r\n }) : null}\r\n
    listItem.type === \"subTotal\") ? \" scart-block__subtotal--only\" : \"\"\r\n )}>\r\n : \r\n {pricingIsLocked ? (\r\n \r\n \r\n \r\n ) : getPriceWithCurrency(fabricatorSettings, toFixedPrice(quoteTotalPrice.materialPrice))}\r\n
    \r\n
    \r\n )\r\n } else if (listItem.type === \"similar\") {\r\n return \r\n } else if (listItem.type === WIZARD_GROUP_TYPES.custom) {\r\n return \r\n }\r\n const isAddMoreDisabled = listItem.featureGroupName === SQFT_FEATURES.slabs;\r\n\r\n const editFeatureGroupClick = (event, editCartItem = null) => {\r\n if (!editCartItem && listItem.cartItems.length && listItem.cartItems[0].fromWizardId) {\r\n editCartItem = listItem.cartItems[0];\r\n }\r\n this.switchToMaterialsPageGroup(listItem, +quoteIndex, editCartItem)\r\n }\r\n // console.log(\"listItem\", listItem);\r\n return (\r\n
    \r\n
    \r\n {document.kvConfig.isBackend && listItem.featureGroup\r\n ? this.setFeatureGroupCustomName(listItem.featureGroup, quoteIndex, value)}\r\n value={listItem.featureGroup.customNames && listItem.featureGroup.customNames[quoteIndex]\r\n ? listItem.featureGroup.customNames[quoteIndex]\r\n : listItem.featureGroupDisplayName}/>\r\n : listItem.featureGroupDisplayName}\r\n
    \r\n {\r\n isAddMoreDisabled\r\n ? null\r\n : \r\n }\r\n
      \r\n {listItem.cartItems.map((cartItem, index2) => {\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 getInstallations = (isMobile, fabricatorData, fabricatorSettings, installations) => {\r\n\r\n const showInstallations = size(installations) && fabricatorSettings.separateLaborInCart\r\n && (!this.props.showUnlockCalculations || (this.props.unlockCalculationsStep >= 2));\r\n\r\n if (showInstallations) {\r\n return (\r\n
    \r\n

    \r\n \r\n

    \r\n
      \r\n {installations.map((instItem, instItemIndex) => {\r\n return \r\n })}\r\n
    \r\n
    \r\n )\r\n }\r\n return null\r\n };\r\n\r\n getTaxes = (isMobile, totalPrice, fabricatorSettings, sureTaxLoading) => {\r\n if (isMobile && this.props.cartItems.length && this.props.isPhoneNumberValidated) {\r\n\r\n if (sureTaxLoading) {\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 let allTaxes = totalPrice.priceTaxes.length\r\n ? totalPrice.priceTaxes\r\n : [{name: \"\", materialTax: totalPrice.materialTaxes}];\r\n\r\n const showTaxes = allTaxes.some(tax => tax.materialTax > 0);\r\n\r\n return (\r\n \r\n {showTaxes || ((allTaxes.length === 1) && fabricatorSettings.sureTax) ? allTaxes.map((taxObject, taxObjectIndex) => {\r\n const taxTotal = taxObject.materialTax.toFixed(2); // always round to 23.65, even if it is 23.00\r\n return (\r\n
    \r\n

    {taxObject.state || }

    \r\n
      \r\n
    • \r\n
      \r\n
      \r\n \r\n {getPriceWithCurrency(fabricatorSettings, taxTotal)}\r\n \r\n
      \r\n
      \r\n
    • \r\n
    \r\n
    \r\n )\r\n }) : null}\r\n {totalPrice.installationTaxes ? (\r\n
    \r\n

    \r\n
      \r\n
    • \r\n
      \r\n
      \r\n \r\n {getPriceWithCurrency(fabricatorSettings, totalPrice.installationTaxes.toFixed(2))}\r\n \r\n
      \r\n
      \r\n
    • \r\n
    \r\n
    \r\n ) : null}\r\n
    \r\n )\r\n }\r\n return null\r\n };\r\n\r\n render() {\r\n\r\n const isMobile = this.props.windowWidth < 991;\r\n const totalPrice = getTotalPrice();\r\n const {fabricatorData, installations, showAdvancedQuoting, sureTaxLoading, cartItems} = this.props;\r\n const fabricatorSettings = fabricatorData.settings;\r\n\r\n // console.log(\"this.props.cartItems\", this.props.cartItems);\r\n\r\n return (\r\n
    \r\n {showAdvancedQuoting ? : this.getCartItemsList(isMobile, fabricatorData, fabricatorSettings)}\r\n {this.getInstallations(isMobile, fabricatorData, fabricatorSettings, installations)}\r\n {this.getTaxes(isMobile, totalPrice, fabricatorSettings, sureTaxLoading)}\r\n {cartItems.length ? : null}\r\n {document.kvConfig.initialFlowEnabled ? : null}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const installations = flatMap(store.instState.instList, i => filter(i.services, {selected: true}));\r\n const {wizardList, wizardIsActive, allWizardsValues} = store.wizardState;\r\n const {sureTaxLoading} = store.cartState;\r\n return {\r\n cartItems: store.cartState.cartItems,\r\n installations,\r\n isPhoneNumberValidated: store.userState.isPhoneNumberValidated,\r\n layoutParts: store.stepsState.layoutParts,\r\n questionNoClicked: store.cartState.questionNoClicked,\r\n windowWidth: store.serverState.windowWidth,\r\n fabricatorData: store.fabricatorState,\r\n showUnlockCalculations: store.unlockCalculationsState.showUnlockCalculations,\r\n unlockCalculationsStep: store.unlockCalculationsState.unlockCalculationsStep,\r\n showCartItems: store.unlockCalculationsState.showCartItems,\r\n activeQuoteIndex: store.quotesState.activeQuoteIndex,\r\n quotes: store.quotesState.quotes,\r\n showAllQuotesCartItemsList: store.cartState.showAllQuotesCartItemsList,\r\n showAdvancedQuoting: store.advancedQuotingState.showAdvancedQuoting,\r\n wizardList,\r\n wizardIsActive,\r\n allWizardsValues,\r\n showAssignQuotePopup: store.assignQuoteState.showAssignQuotePopup,\r\n sureTaxLoading,\r\n }\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n removeFromCart,\r\n toggleSelectionWindow,\r\n changeStateToQuote,\r\n setQtActiveCategory,\r\n changeActivePartRelatedItemIndex,\r\n setActiveQuoteIndex\r\n}\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(ShoppingCartItemsList)\r\n);\r\n","import React from 'react';\r\nimport {connect} from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport $ from \"jquery\";\r\n\r\nimport {\r\n removeFromCart,\r\n changeMessageBoxState,\r\n toggleUserPopup,\r\n setQtActiveCategory,\r\n changeActivePartRelatedItemIndex,\r\n toggleSelectionWindow,\r\n toggleSelectionFeatureInfo,\r\n toggleBathroomVisualizerOpen, setCameFromPage\r\n} from \"../../actions/actionFunctions\";\r\nimport {\r\n detectComplexLaborCartItem,\r\n getFeatureIsLocked,\r\n getFeatureUnit, getTotalPrice,\r\n toFixedFeatureCost,\r\n toFixedPrice\r\n} from \"../../misc/helpers\";\r\nimport CommonFeatureItemsMethods from \"../visComponents/commonFeatureItemsMethods\";\r\nimport PriceInput from \"./priceInput\";\r\nimport {getCurrentLayout} from \"../appLayout\";\r\nimport {checkIfInCatProperty} from \"../../misc/displayLogic\";\r\nimport NoteEditor from \"./noteEditor\";\r\nimport ActionTypes from \"../../misc/actionTypes\";\r\nimport {cartItemInterface} from \"./cartItemInterface\";\r\nimport FeatureName from \"../visComponents/featureName\";\r\nimport {setActiveQuoteIndex} from \"../../actions/roomsFunctions\";\r\nimport Config from \"../../config\";\r\nimport {setCartItemEditFeature} from \"../../actions/shoppingCartFunctions\";\r\nimport {getPriceWithIncluded} from \"../../misc/priceFunctions\";\r\nimport {getWizardGroupFromCurrentSteps} from \"../look/lookNavigation/lookMain/lookWizard/lookWizardFunctions\";\r\n// import {setActionAfterVisualizerTypeIsChanged} from \"../../actions/serverFunctions\";\r\nimport {deleteCartItemFromSQFTCalcData, updateCurrentQuote} from \"../../misc/quotesFunctions\";\r\nimport ShoppingCartItemsBundledProducts from \"./shoppingCartItemsBundledProducts\";\r\nimport {SQFT_FEATURES} from \"../sqft/constants\";\r\n// import {COUNTERTOP_GROUP} from \"../kvComponent/core/constants\";\r\n// import {MEASURE_UNITS} from \"../sqft/constants\";\r\n\r\nclass ShoppingCartItemsListItem extends CommonFeatureItemsMethods {\r\n\r\n static propTypes = {\r\n cartItem: PropTypes.shape(cartItemInterface).isRequired,\r\n editFeatureGroupClick: PropTypes.func.isRequired,\r\n isBundleChild: PropTypes.bool,\r\n }\r\n\r\n state = {\r\n editorVisible: false,\r\n editorCanRender: true\r\n }\r\n\r\n componentDidMount() {\r\n $(window).on(ActionTypes.UPDATE_ALL_ITEMS, this.handleRefresh);\r\n }\r\n\r\n componentWillUnmount() {\r\n $(window).off(ActionTypes.UPDATE_ALL_ITEMS, this.handleRefresh);\r\n window.removeEventListener('click', this.handleWrapperBlur);\r\n }\r\n\r\n shouldComponentUpdate(nextProps) {\r\n return !nextProps.showAssignQuotePopup;\r\n }\r\n\r\n handleRefresh = () => {\r\n this.setState({\r\n editorVisible: false,\r\n editorCanRender: false\r\n }, () => {\r\n this.setState({\r\n editorCanRender: true\r\n })\r\n });\r\n this.forceUpdate();\r\n }\r\n\r\n handleRemoveClick = () => {\r\n const {cartItem, fabricatorData} = this.props;\r\n this.props.changeMessageBoxState({\r\n visible: true,\r\n message: {\r\n id: \"shoppingCart.fetureInCartRemovePopupQuestion\",\r\n featureName: cartItem.cartFeature.getFeatureName()\r\n },\r\n buttons: [{\r\n text: \"shoppingCart.fetureInCartRemovePopupNo\",\r\n color: \"blue\",\r\n click: () => {\r\n this.props.changeMessageBoxState({visible: false});\r\n }\r\n }, {\r\n text: \"shoppingCart.fetureInCartRemovePopupYes\",\r\n color: \"green\",\r\n click: async () => {\r\n this.props.removeFromCart(cartItem);\r\n this.props.changeMessageBoxState({visible: false});\r\n if (fabricatorData.settings.useCategorySwitching) {\r\n await updateCurrentQuote(cartItem.currentQuote, undefined, false);\r\n }\r\n deleteCartItemFromSQFTCalcData(cartItem).then(r => void r);\r\n }\r\n }]\r\n });\r\n };\r\n\r\n handleEditClick = () => {\r\n const {cartItem} = this.props;\r\n this.props.editFeatureGroupClick(null, cartItem);\r\n this.props.setCartItemEditFeature(cartItem);\r\n };\r\n\r\n handleAddNoteClick = () => {\r\n this.setState({\r\n editorVisible: !this.state.editorVisible\r\n }, () => {\r\n setTimeout(() => {\r\n this.state.editorVisible\r\n ? window.addEventListener('click', this.handleWrapperBlur)\r\n : window.removeEventListener('click', this.handleWrapperBlur)\r\n }, 0)\r\n })\r\n };\r\n\r\n handleWrapperBlur = (e) => {\r\n const disallowClasses = [\".product-note\", \".link--note\"];\r\n if (this.state.editorVisible && !disallowClasses.some(cls => e.target.closest(cls))) {\r\n this.setState({\r\n editorVisible: false\r\n })\r\n }\r\n };\r\n\r\n onNoteSave = () => {\r\n this.handleAddNoteClick();\r\n };\r\n\r\n toggleUserPopup = () => {\r\n this.props.toggleUserPopup({\r\n userPopupOpened: true\r\n })\r\n };\r\n\r\n render() {\r\n\r\n const layout = getCurrentLayout();\r\n const editingPriceAvailable = Config.isDevMode();\r\n\r\n const isMobile = this.props.windowWidth < 991;\r\n const {fabricatorData, cartItem, activeQuoteIndex, intl, wizardList, allWizardsValues, cartItems, isBundleChild,\r\n isSlabPricingEnabled} = this.props;\r\n const fabricatorSettings = fabricatorData.settings;\r\n\r\n if (this.props.showUnlockCalculations && !this.props.showCartItems.includes(cartItem.id)) {\r\n return false\r\n }\r\n const subPartName = cartItem.cartFeature.getParent ? cartItem.cartFeature.getParent().partName : \"\";\r\n let showPrice = false;\r\n let priceTotal = null;\r\n const priceIsLocked = getFeatureIsLocked(cartItem.cartFeature);\r\n if (fabricatorSettings.showPricing && !fabricatorData.hideCheckoutBreakdownCost && !fabricatorData.hidePricesFromUser) {\r\n const isComplexMultipliedUsed = detectComplexLaborCartItem(cartItem) && getTotalPrice().multipliedCostUsed;\r\n if (isComplexMultipliedUsed || cartItem.displayFakePrice === 0) {\r\n priceTotal = null\r\n } else {\r\n // not sure if we need displayFakePrice?\r\n // priceTotal = cartItem.displayFakePrice ? cartItem.displayFakePrice :\r\n // toFixedFeatureCost(cartItem.cartFeature, cartItem.quantity, cartItem.fromQtCategory, true, cartItem, cartItem.shouldUseSlabPricing);\r\n const shouldUseSlabPricing = cartItem.partId === SQFT_FEATURES.slabs && isSlabPricingEnabled;\r\n priceTotal = toFixedFeatureCost(\r\n cartItem.cartFeature,\r\n cartItem.quantity,\r\n cartItem.fromQtCategory,\r\n true,\r\n cartItem,\r\n shouldUseSlabPricing,\r\n cartItem.currentQuote\r\n );\r\n }\r\n showPrice = !priceIsLocked;\r\n }\r\n // const isEditable = !layout.qtCategories || cartItem.relatedProductParent ||(\r\n // layout.qtCategories.some(qtCategory => qtCategory.subParts && qtCategory.subParts.some(qtCatSubPart => {\r\n // return qtCatSubPart.part.partId === cartItem.cartFeature.partId\r\n // }))\r\n // );\r\n const unit = getFeatureUnit(cartItem.cartFeature, intl, fabricatorData, cartItem.quantity, cartItem);\r\n let isEditable = ![\"Slab\", \"Slabs\"].includes(unit) && !isBundleChild; // always editable except slab, all logic is inside switchToFeatureInfo method\r\n if (cartItem.fromWizardGroupId && allWizardsValues) {\r\n const neededObject = allWizardsValues.find(wizValueObject => (wizValueObject.quoteIndex === cartItem.currentQuote)\r\n && (wizValueObject.wizardItemId === cartItem.fromWizardId));\r\n const selectedWizValues = neededObject && neededObject.wizardSelectedValues ? neededObject.wizardSelectedValues : null;\r\n const wizardItem = wizardList.find(wizItem => wizItem.id === cartItem.fromWizardId);\r\n const {neededStep} = getWizardGroupFromCurrentSteps(wizardItem, selectedWizValues, cartItem.fromWizardGroupId);\r\n if (!neededStep) {\r\n isEditable = false;\r\n }\r\n }\r\n const getItemTitle = () => {\r\n let itemTitle;\r\n if (cartItem.cartFeature.inCatProperties) {\r\n itemTitle = checkIfInCatProperty(cartItem.cartFeature, \"inCatName\", cartItem.cartFeature.getFeatureName(), cartItem.fromQtCategory)\r\n }\r\n\r\n return itemTitle ? itemTitle : \r\n }\r\n\r\n const hasBundleProducts = cartItems.some(cItem => cItem.bundleParentId === cartItem.id);\r\n\r\n return (\r\n
  • \r\n
    \r\n
    \r\n

    \r\n {subPartName && !layout.qtCategories ? subPartName + \" - \" : null}\r\n { getItemTitle() }\r\n

    \r\n {cartItem.description ? (\r\n

    \r\n ) : null}\r\n {cartItem.isMinimumCharge && !cartItem.isMinimumChargeItems ? null : (\r\n

    \r\n {showPrice && isMobile ? (\r\n \r\n {getPriceWithIncluded(priceTotal, cartItem.cartFeature, fabricatorData, intl.messages)}\r\n \r\n ) : null}\r\n {priceIsLocked && isMobile ? (\r\n \r\n \r\n \r\n ) : null}\r\n {fabricatorSettings.useCategorySwitching && cartItem.partId === \"room\" ? null : (\r\n \r\n {unit}: {\r\n toFixedPrice(parseFloat(cartItem.displayFakeQuantity) === cartItem.displayFakeQuantity\r\n ? cartItem.displayFakeQuantity\r\n : cartItem.quantity, fabricatorSettings.useDifferentCurrencies)\r\n }\r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n {isMobile && !cartItem.isMinimumCharge && !cartItem.isAddedFromDisplayLogic ? (\r\n
    \r\n
    \r\n ) : cartItem.isMinimumCharge || cartItem.isAddedFromDisplayLogic ? null : (\r\n
    \r\n \r\n {cartItem.cartFeature.notesList[activeQuoteIndex]\r\n ? \r\n : }\r\n \r\n {isEditable ? (\r\n \r\n \r\n \r\n ) : null}\r\n \r\n \r\n \r\n
    \r\n )\r\n }\r\n {!isMobile ? (\r\n
    \r\n\r\n {showPrice\r\n ? editingPriceAvailable\r\n ? \r\n : (\r\n {getPriceWithIncluded(priceTotal, cartItem.cartFeature, fabricatorData, intl.messages)}\r\n )\r\n : null}\r\n {priceIsLocked ? (\r\n \r\n \r\n \r\n ) : null}\r\n
    \r\n ) : null}\r\n
    \r\n {this.state.editorCanRender && !cartItem.isMinimumCharge && !cartItem.isAddedFromDisplayLogic ? (\r\n \r\n ) : null}\r\n {hasBundleProducts ? : null}\r\n
  • \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n const {allWizardsValues, wizardList} = store.wizardState;\r\n return {\r\n cartItems: store.cartState.cartItems,\r\n isPhoneNumberValidated: store.userState.isPhoneNumberValidated,\r\n windowWidth: store.serverState.windowWidth,\r\n fabricatorData: store.fabricatorState,\r\n showUnlockCalculations: store.unlockCalculationsState.showUnlockCalculations,\r\n showCartItems: store.unlockCalculationsState.showCartItems,\r\n activeQuoteIndex: store.quotesState.activeQuoteIndex,\r\n wizardList,\r\n allWizardsValues,\r\n showAssignQuotePopup: store.assignQuoteState.showAssignQuotePopup,\r\n isSlabPricingEnabled: store.sqftSlabState.isSlabPricingEnabled,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n removeFromCart,\r\n changeMessageBoxState,\r\n toggleUserPopup,\r\n setQtActiveCategory,\r\n /*** CommonFeatureItemsMethods needs next methods: ***/\r\n changeActivePartRelatedItemIndex,\r\n toggleSelectionWindow,\r\n toggleSelectionFeatureInfo,\r\n toggleBathroomVisualizerOpen,\r\n setCameFromPage,\r\n /*** CommonFeatureItemsMethods needs methods end ***/\r\n setActiveQuoteIndex,\r\n setCartItemEditFeature\r\n}\r\n\r\nexport default injectIntl(\r\n connect(mapStateToProps, mapDispatchToProps)(ShoppingCartItemsListItem)\r\n)\r\n","import React, {useEffect, useState} from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport {changeCartFeature} from \"../../actions/actionFunctions\";\r\n\r\nconst NoteEditor = (props) => {\r\n\r\n let {intl, cartItem, closeEditor, editorVisible, cartItemId, dbFeatureId, quoteIndex, changeCartFeature} = props;\r\n const [noteText, setNoteText] = useState(\"\");\r\n\r\n useEffect(() => {\r\n setNoteText(cartItem.noteText || \"\");\r\n }, [cartItemId, dbFeatureId, quoteIndex]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const onNoteChange = (e) => {\r\n setNoteText(e.target.value);\r\n if (!editorVisible) {\r\n onNoteSaveClick(); // set parent's editor visible\r\n }\r\n };\r\n\r\n const onNoteFocus = () => {\r\n if (noteText && !editorVisible) {\r\n onNoteSaveClick(); // set parent's editor visible\r\n }\r\n };\r\n\r\n const onBlur = () => {\r\n changeCartFeature(Object.assign({}, cartItem, {\r\n noteText\r\n }), true);\r\n };\r\n\r\n const onNoteSaveClick = () => {\r\n changeCartFeature(Object.assign({}, cartItem, {\r\n noteText\r\n }), true);\r\n closeEditor();\r\n };\r\n\r\n return (\r\n
    \r\n {/*

    {noteText}

    */}\r\n