{"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/bvcomponents/sqft/helpers/sqftHelper.js","webpack://QuickQuote/./src/actions/actionTypes.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/misc/fabricatorHardcode.js","webpack://QuickQuote/./src/bvcomponents/ui/loadingSpinner.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/sqftShapeManager.js","webpack://QuickQuote/./src/actions/navigationFunctions.js","webpack://QuickQuote/./src/actions/selectionFunctions.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/loadingLogic.js","webpack://QuickQuote/./src/misc/misc2.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/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/bvcomponents/sqft/helpers/coordinatesHelper.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/helpers/lineHelper.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/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/bvcomponents/sqft/components/canvas/core/workspace/workspaceDataMapper.js","webpack://QuickQuote/./src/misc/loadScript.js","webpack://QuickQuote/./src/reducers/sqftMenuReducer.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/store/canvasHelper.js","webpack://QuickQuote/./src/bvcomponents/visComponents/partCommon.js","webpack://QuickQuote/./src/bvcomponents/look/core/subparts/showerTubCombo/tubCommon.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/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/sqft/components/canvas/core/cabinet/cabinetWorkspace.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/actions/filtersFunctions.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/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/visComponents/navigation/newFilters/filtersBody.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/grohe/groheNavigation/groheFilters/groheFiltersSearchInputAsync.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/bvcomponents/sqft/helpers/geometry/PointsPolygon.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/geometry/Point.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/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/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/overlays/expandLineAndClosestPoints.js","webpack://QuickQuote/./src/bvcomponents/sqft/components/canvas/core/shapes/overlays/expandLineLeftAndRightParts.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/showerTubCombo/tubLiner.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/tools/freeeDraw/helpers/freeFormHelper.js","webpack://QuickQuote/./src/bvcomponents/sqft/helpers/geometry/PolygonClippingFacade.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/components/ar3d/threeD/workspaceComponents/ExportWorkspaceLayoutButton.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/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/shopCategoryAsideProductGroupsFilter.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","webpack://QuickQuote/./src/misc/complexLogic.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","getCartItemObjectForComplexLogic","ci","customDisplayName","displayName","groupName","wizardGroupId","fromWizardGroupId","cartItemId","quoteIndex","forCartItem","activeQuoteIndex","quotesState","featureCost","checkIfInCatProperty","getFeaturePriceProperty","featureTotalPrice","material","backsplashMaterial","quoteMaterial","quoteBacksplashMaterial","materials","index","isStoneFeature","visType","fromVisualizerType","kvConfig","visualizerType","currentPrice","sqftState","validateFeaturePrice","comparisonType","comparisonFor","baseQuantity","fQuantity","plus","maxQuantity","getHardCodedFloFormShopCartCost","$m","$b","getSqft","stoneSupplierStone","pricingProfileId","pricingPreset_id","profile","__quotePricing","pp","Id","ppdList","useFabricatorCostPrices","pricingProfileCostData","showSalePrices","pricingProfileDiscountData","pricingProfileData","ppd","slabSqftValue","end","materialSqft","msqft","$mc","$p","$f","$c","$fa","wizardState","wizardActiveItem","keys","wizardSelectedValues","stepIndex","selectedValue","selectedFeature","$room","$i","$other","$useCostPrices","$useDiscountPrices","$sharedFeatureName","$forCartItem","$fs","logic","Function","isNaN","markUpLogic","updatePriceWithMarkUp","__stoneSupplierStones","fabricatorSettings","minPrice","quotePricing","stoneSupplierStones","_","hasPricingProfileAssigned","fabPrice","calculatePrice","pricePlus","perQuantity","ceil","parseInt","perUnit","margin","calcPriceWithMargin","stoneSupplierStoneInner","bFoundOther","ret","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","__REDUX_DEVTOOLS_EXTENSION__","f","createStoreWithMiddleware","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","shop","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","hinge","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","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_SET3","CABINET_SET2","setLookOpened","lookOpened","shopPageOpened","shopState","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","getDbFeatureProperty","bundledFeatures","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","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","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","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","SET_SEARCH_NAMES_REQUESTED","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","SET_SELECTED_HINGE","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","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","newFiltersArray","existingFilterGroup","filterGroupObject","unitedFilterValueIds","filVal","existingFeatureFilter","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","_allFilters","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","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","colorValue","mainFeature","allOptions","mainOption","setLayerPositions","conditions","defaultLayerLayoutPositions","matchingPositionFeature","name1","arrayOfConditions","cond","roomLayoutMeta","roomSceneMeta","getCurrentLayoutAbbreviation","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","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","needToSaveCostReceipt","receiptSettings","createCostReceipt","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","searchString","axiosController","getBathroomVisualizerFeatures","getBvGroups","getBathroomVisualizerGroups","getBvGroupFeatures","pageSize","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","forceEraseAllWizardValues","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","effect","dependencies","delay","useCallback","debounceTimerId","clearTimeout","usePrevious","ref","useRef","useIsMounted","isMountedRef","isMounted","requestInProgressTimeoutId","IsMountedComponent","children","isMountedComponent","useOutsideClick","useSQFTCanvas","contains","handleClickThroughCanvasEvents","objectName","useOutsideClickSimple","excludedClassNames","closest","useProgressiveImage","useState","thumbnailLoaded","setThumbnailLoaded","complete","useFeaturesChecker","featuresLoaded","setFeaturesLoaded","callRecursiveFeaturesCheck","checkFeatures","useShowRoomLayoutsButton","useMemo","isProd","skuNamesPartIds","path","someLayoutFound","hasNoVisualizerLayers","clickFrom","keyIndex","SHOWER_FLOOR_GROUP_BATHROOM","FeatureName","maxLength","groheFiltersSearchText","stringFeatureName","finalName","highlightStringOnSearch","propTypes","bool","injectIntl","groheState","skuName","skuName2","MaterialSpinner","withCounter","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","PropTypes","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","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","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","LOWES_DISCLAIMER_EN","getFabricatorLogo","hardCodedLogo","isRenoDepot","hardCodedRenoDepotLogo","isRona","hardCodedRonaLogo","hardCodedLowesLogo","logoUrl","subDomain","hardCodeIsAmericanImport","hardCodeIsAmericanStandard","hardCodeIsRona","hardCodeIsRenoDepot","hardCodeIsHomeDepot","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","LoadingSpinner","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","setRelatedGroups","setRelatedGroupsSearch","relatedGroupsSearch","toggleGalleryVisible","galleryVisible","galleryShowActiveFeature","setGalleryActiveImageIndex","galleryActiveImageIndex","setMaterialsPageSubSteps","subSteps","setMaterialsPageActiveSubStep","activeSubStep","toggleNotCompatibleView","showNotCompatibleView","toggleProductNoteEditorVisible","productNoteEditorVisible","setRowItems","rowItems","setMaterialsCanvasClass","materialsCanvasClass","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","categoryEnabled","load","wallConfigurations","createCustomWallConfiguration","placeholdersNeeded","getRelatedItems","addTo","showerParent","setZIndex","conf","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","mapDispatchToProps","withRouter","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","setInflectionPoints","inflectionPoints","getInflectionPoints","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","getFilterValueBackGround","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","getFilterTranslate","displayTrimmed","valueTrimmed","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","setSelectedHinge","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","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","Part","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","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","ASYNC_SCRIPTS","html2canvas","bundleReactPdf","bundleReactPdfRenderer","three","_removeElements","loadAllAsyncScripts","scriptName","loadScriptPromise","elements","removeLoadingElements","getElementsByClassName","runSalesForceLogic","Sfdc","sr","client","subscribe","onData","salesForceLoaded","publish","sfdcMessage","replaceIncorrectSymbols","getPercentAmount","fromTotal","forCartItems","totalArray","featureCurrency","existingGroup","escapedSearch","dangerouslySetInnerHTML","__html","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","selectedHinge","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","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","allDisplayLogicCartItems","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","displayLogicCartItems","SQFTResourceController","resourceName","removeResource","searchedId","exportedData","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","getPerpendicularPoint","linePoint","isLeft","perpDx","perpDy","getPerpOffset","offsetDist","perpX","perpY","getLineEquation","calculateIntersection","getAngleBetweenSegments","v1x","v1y","v2x","v2y","cross","len1","len2","cosVal","angleDeg","getThePositionOfAPointToTheLeftOrRightOfALine","linePoint1","linePoint2","searchedPoint","ax","ay","bx","crossProduct","onSegment","allowOverlap","d1","d2","d3","d4","closestIntersectionPointAndLine","roundShapesPoints","roundPoint","polygons","coord","union","a1","b1","c1","a2","b2","c2","determinant","findTopLeftPoint","topLeft","adjustPointsRelativeToTopLeft","sortPointsClockwise","topRight","bottomLeft","bottomRight","roundCoordinate","precision","factor","findLongestLine","longestLine","getDistanceLength","areLinesParallel","epsilon","dx1","dy1","dx2","dy2","getClosestLineToPoint","minDist","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","tubLiner","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","qtCategoriesLoadedLength","FeatureDescription","brief","textLength","desc","setInitialFlowAdditionalRooms","initialFlowAdditionalRooms","setInitialFlowType","initialFlowType","setInitialFlowRoom","initialFlowRoom","setInitialFlowVisualizerNotAvailable","visualizerNotAvailable","setInitialFlowFinished","initialFlowFinished","setInitialFlowRoomLayout","initialFlowRoomLayout","setInitialFlowStep","initialFlowStep","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","paymentState","cartItemsThumbnails","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","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","loadScript","script","readyState","onreadystatechange","initialState","SET_CABINET_RELATED_ITEMS","roomSwitcher","menuItems","contentType","validationMessage","cabinetRelatedItems","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","TubCommon","showerTubComboParent","setShowerTubCombo","setActiveTub","bottomTubId","applyFeatureIfNotCompatible","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","touchMove","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","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","CabinetWorkspace","cabinetShapes","cabinetShapesLayout","__crownMoldingParams","handleDrop","handleDrag","closeContextMenu","dataTransfer","getData","parentFeatureId","mousePosOnField","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","Sink","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","searchAllProductsRequest","alreadyRequestedNames","setAlreadyRequestedNames","LookSideBarShareButtons","outerWidth","screenX","screenLeft","outerHeight","screenY","screenTop","toolbar","status","directories","menubar","scrollbars","resizable","centerscreen","chrome","handleClose","autoFocusItem","data-id","shareClickButton","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","firstLayersAreLoaded","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","WallConfiguration","Liner","ReplacementTub","WalkInTub","JettedTub","BathTub","FixtureFloorMount","Base","Spa","Top","Toilet","VanityBacksplash","CounterTop","Mirror","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","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","setAvailableFilterValues","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","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","mainAddress","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","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","expandLineAndClosestPoints","expandLineLeftAndRightParts","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","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","FiltersBody","isFilterSelected","isFilterExpanded","handleExpandFilter","handleSelectFilter","handleGroupClick","handleReset","renderFiltersBody","getCurrentNavItems","availableOtherFilterGroups","renderGenericFilters","checkFilterGroupForAvailableFilterValues","renderBrand","renderColor","whichFeatures","filterList","groupsFirst","filterOptions","sortedItems","name2","onChecked","brandFilterGroup","filterButtons","buttonText","filterNameLowerCased","buttonEnabled","CheckBox","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","GroheFiltersSearchInput","propsFeatureGroup","shouldSearchInAllGroups","ended","fullWidth","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","generatedFeatures","filtersToProcess","hingesFeatureGroup","handlesFeature","handlesFeatureGroup","addHandleToTheShape","deletedFeatures","filtersToDelete","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","PointsPolygon","clippingOutput","poly","Point","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","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","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","setModelsSize","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","NeutralToneMapping","loadHDRMap","HDR_MAP_LOADER","rgb","copy","clone","Vector3","near","far","lookAt","updateProjectionMatrix","boxCenter","originalModelPosition","dirLight1","DirectionalLight","Object3D","pointLight1","PointLight","castShadow","dirLight2","pointLight2","pointLight3","dynamicIntensity","baseHeight","ambientLight","AmbientLight","directionalLight","addLight","isLight","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","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","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","exact","executeAfterRegister","registerButtonClick","registerForm","googleComponentsToOurProperties","LookAddressInput","shouldSetCountry","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","shopDiv","ShopFeatureOptionsCommon","withTitle","navItemOptions","activeOption","activeOptionText","LookCartButton","cartButtonClick","showPopper","setShowPopper","prevActiveStep","LookFeature","lookLeadCaptureId","setFeatureGroupName","showSelectWord","useContainerOverFlow","LookWizardCompletedAlertModal","closeWizardButtonClick","getRoomIdeasTranslate","popperStep","roomIdeasButtonClick","buttonTranslate","resetMixpanelId","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","reducers","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","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","prevPrevLine","nextNextLine","oldFrom","oldTo","deltaFrom","deltaTo","tempNextLine","newCorner","tempPrevLine","findNearestOppositeLineV2","findNearestOppositeLineV1","baseLine","nearestLine","baseMid","otherMid","dxOther","dyOther","normalDist","resizingLine","expansionVector","oppositeLine","resToIndex","findIndexOfPointById","oppFromIndex","splitPoints","startIndex","endIndex","backward","withRest","usedIndexes","Set","getPointsBetween","lineToOppFromPoints","lineFromOppToPoints","mainLine","midX","midY","normalX","normalY","perpLine","intersectingLine","getIntersection","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","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","VanityHandle","toggleVanityParts","VanityCabinet","canUseWizard","toggleLayerPositions","updateSink","updateVanityParts","getfilterValueIdByValue","placeholderAvailableFeatures","Other","windowNeededLayouts","BathTubLiner","navigationSubItemsWithSides","setShowerSize","WalkInTubFixture","ReplacementTubFixture","TubLiner","layerPriority","ShowerScreen","FrontWall","SplitWall","LeftWallSplitter","ShowerGlass","ShowerBody","loadedShowerBody","loadShowerDimensions","loadShowerMetaData","loadThumbnail","bathTubBase","availableFeatures","lixilProductSubCategory","thirdPartyProductCategory","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","showerFloorAvailableFeatures","currentThresholdName","sameShowerFloor","navItemFloor","showerDoorParent","currentShowerPanCondition","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","VanityCountertop","activeMatchingSink","activeMatchingSinkSku","getActiveSkuFromRelatedItem","shownFeature","sinkFeatures","MountType","alreadyExistingIndex","shouldCheckSize","currentActiveMatchingFeatureSku","currentActiveMatchingFeatureMeta","sinkSku","currentMatchingMatchingFeature","currentMatchingMatchingSku","setVanityOnly","getNextVanityTypeFeature","setActiveFeatureByFilter","singleHoleMeta","activeMatchingVanity","activeMatchingFeatures","VanityFaucet","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","getOffsetShapePoints","renderShapeBetweenPoints","freeFormShapePoints","BaseDraw","checkIfThisIsSecondPoint","figureCanHaveOnly2Points","createFigureFromPoints","RenderFreeForm","getOffsetShapePointsVsIntersections","offsetPointsReversed","resultPolygons","PolygonClippingFacade","simplifyPolygon","largest","pickLargestPolygon","linePrevStart","linePrevEnd","linePrevEq","lineNextStart","lineNextEnd","lineNextEq","intersect","inputPolygon","toClippingFormat","unionResult","fromClippingFormat","pts","maxArea","bestPoly","areaOfPolygon","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_","bathTubParent","walkInTubType","possibleWalkInTubTypes","featurePartName","BathTubBase","sameStoneAsWalls","floorMount","placeTypeGroup","featurePlaceTypeValue","getFixtureType","BathTubRim","BathTubSpa","BathTubTowelRack","CompleteVanity","availableCompleteFeatures","vanityPedestal","handleMeta","hardCodedWizardConditions","VanityPedestal","counterTopsAvailable","LightingFixture","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","RIGHT_PANEL","NORMAL","NUMERIC","NUMERIC_EXTENDED","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","setAsComplexLogic","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","pmremGeneratorEXR","hdrUrl","rgbeLoader","RGBELoader","hdrEquirect","pmrem","PMREMGenerator","compileEquirectangularShader","fromEquirectangular","EquirectangularReflectionMapping","environment","environmentIntensity","pmremGenerator","hdrTexture","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","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","v_scale","u_scale","v_offset","u_offset","uv","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","boxSize","multiplyScalar","lightOffset","intensityScale","maxDimension","lightDistance","verticalOffset","lights","Light","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","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","isSaving","setIsSaving","handleSave","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","toggleCartItemRemoved","LookListMainFeatureCheckbox","LookListMainFeatureShipping","existingFeature","shippingOption","LookLayoutMain","looks","setLooks","showAllLayouts","setShowAllLayouts","updateMain","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","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","MaterialsWizardMain","setNavItems","scrollElem","setNavigationItems","newNavItems","setNewCanvasClass","prevFeatureGroup","alreadyAddedCartItem","fakeSetShowLoader","debounceRequest","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","mapDispathToProps","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","SHIPPING_TIMES","minDays","maxDays","days","groheCartDeliveryInterface","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","allowMegaRequest","startLoadingAdditionalFeatures","getFeatureGroupNavItems","lookList","thisGroupObject","multipleGroups","ShopCategoryVirtualizedGrid","listElement","gridColumnCount","featureWidth","gridRowCount","gridItemRenderer","overscanIndicesGetter","cellCount","overscanCellsCount","stopIndex","overscanStartIndex","overscanStopIndex","disableHeight","autoHeight","ShopCategoryListFeature","ShopCategoryListFeatureOptions","prevFeature","ShopCategoryAside","ShopCategoryAsideProductGroupsFilter","multipleGroupsFilters","multipleKeys","filterByGroupNames","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","calculateAsFeatureCost","forPartId","freeItemsCount","forQuantity","filteredCartItems","remainingFree","freeItems","paidItems","megaTotal"],"mappings":"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1B,CACE,QAAW,EACX,OAAU,sBACV,GAAM,kBACN,EAAK,EACL,GAAM,iBACN,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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SAAS,4BAC9CukG,EAAiB,KAPnB3L,EAAkB2oC,EAAuBrnH,EAAaf,UAUpC,SAAhBpZ,GAA0C,YAAhBA,GAA6C,OAAhBA,GAAuC,WAAhBA,IAChF64F,EAAkB8oC,EAAsB9oC,EAAiB74F,IAEvD64F,EAAgB54F,SAAS,2BAC3BukG,EAAiB,MACR3L,EAAgB54F,SAAS,8BAClCukG,EAAiB,MACR3L,EAAgB54F,SAAS,qBAClCukG,EAAiB,MACR3L,EAAgB54F,SAAS,wCAClCukG,EAAiB,MACR3L,EAAgB54F,SAAS,6BAClCukG,EAAiB,OAEnB,OAAQrqF,EAAapX,QACnB,IAAK,cACL,IAAK,WACL,IAAK,gBACL,IAAK,YACHyhG,EAAiB,KAKrB,MAAO,CACL3L,uBAAwBA,EAAxB,IACA2L,iBACAE,uB,EAIYi9B,wBApNhB,aAmBaC,GAjBAC,+EACAC,+EACAC,2EACAC,gFACAC,sFACqBC,EAArBA,8EAC0BC,EAA1BA,sFACAC,wFACAC,wFACAC,wFACAC,wFACAC,wFACAC,wFACAC,+EACAC,gFACAC,0EACAC,mFACAjB,6EACAkB,8EA4GPC,GA3G2BC,EAApBA,8EACoBC,EAApBA,8EACuBC,EAAvBA,0GACAC,iGACAC,qGAEAC,yKACAC,6KACAC,0JACAC,8JACAC,sJACAC,0JAEmBC,EAAnBA,iBAAmB,CAC9BzW,MAAO0U,EACP3a,MAAO6b,GAGec,EAAXA,SAAW,CACtBl1F,iFACAm1F,yEACA7tF,mFACA8tF,uEACAC,2EACAC,2EACApkF,kFACAqkF,0EACA76F,8EACAiF,oFACAwR,sFACAC,+FACAJ,kFACAwkF,6EACAC,2EACAC,iFACAC,uFACAC,yEACAC,sEACAC,sFACAC,oEACArjD,oEACAsjD,sEACAjoI,6EACAkoI,gFACAC,uEACA3kF,kEACAC,kEACAC,kEACA0kF,4EACAC,6EACA9kF,uEACA+kF,qEACAliF,iEACAvI,gEACAnN,2EACAF,qFACAD,6EACAE,6EAEAiJ,2EACAC,+DACAC,mEACAiG,iEACAgB,yEACAN,iFACAgoF,qEACAC,sEACAC,uEACA9rF,2EACAm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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([1340,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, cartItem);\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, cartItem);\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, cartItemToSkip);\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, cartItemToSkip);\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\nconst getCartItemObjectForComplexLogic = (ci) => {\r\n return {\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 cartItemId: ci.id, // hash\r\n complexLogic: ci.cartFeature.dbFeature.complexLogic,\r\n }\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 * @param forCartItem {cartItemInterface}\r\n * @return {number}\r\n */\r\nfunction calculateFeatureCost(feature, quantity, cartItems, fromQtCategory, quoteIndex, forCartItem = null) {\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\r\n ? storeState.cartState.cartItems.map(ci => getCartItemObjectForComplexLogic(ci))\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 $forCartItem: forCartItem ? getCartItemObjectForComplexLogic(forCartItem) : null,\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 if (featureGroup.translateId && intl.messages[featureGroup.translateId]) {\r\n return intl.messages[featureGroup.translateId]\r\n }\r\n switch (featureGroup.partName) {\r\n case \"Installation\":\r\n case \"Template\":\r\n case \"Tools\":\r\n return intl.messages[\"visualizer.\" + featureGroup.partName]\r\n default:\r\n return featureGroup.partName\r\n }\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, ROUTES.shop];\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 hinge: \"hinge\",\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 SIDEBAR_NAVIGATION_CABINET_BUTTONS.hinge,\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_SET3 = {\r\n \"bumpouts\": [],\r\n \"canvasImage\": \"\",\r\n \"sqFtSlabImage\": \"\",\r\n \"sqFtSlabCalcImage\": \"\",\r\n \"sqftApplianceImages\": \"\",\r\n \"images3D\": \"\",\r\n \"slabImages\": [],\r\n \"measureUnit\": \"Imperial\",\r\n \"sinks\": [],\r\n \"radii\": [],\r\n \"corners\": [],\r\n \"totalInches\": 7540.384732531849,\r\n \"shapeLength\": 7,\r\n \"objIds\": 12,\r\n \"removedFeatures\": [],\r\n \"textBoxes\": [],\r\n \"slabAdditionalShapesList\": [],\r\n \"slabImagesTotalArea\": [],\r\n \"squareFeet\": 53,\r\n \"countertops\": [\r\n {\r\n \"pos\": {\r\n \"x\": 77.93333333333332,\r\n \"y\": -100.46666666666664\r\n },\r\n \"slabPos\": {\r\n \"x\": -21,\r\n \"y\": -106.66666666666667\r\n },\r\n \"id\": 12,\r\n \"featureId\": 381183142,\r\n \"colorSet\": null,\r\n \"isHidden\": false,\r\n \"shapePieces\": [],\r\n \"seamCutPoints\": [],\r\n \"shapeParent\": null,\r\n \"lines\": [\r\n {\r\n \"id\": \"647a01fa-b2c5-4603-a2bb-a07b78d411ce\",\r\n \"from\": {\r\n \"id\": \"7757a1c7-4343-4d9a-9f60-4125938a8d99\",\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"lefttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"450bc4f0-4b07-4821-8491-049540b8e489\",\r\n \"x\": 42,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 42,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 42,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"righttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"13b047b0-7d01-4203-8f21-1d2d53bd4e2f\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"447973b0-7013-43a1-bd14-cc1c62c93308\",\r\n \"from\": {\r\n \"id\": \"450bc4f0-4b07-4821-8491-049540b8e489\",\r\n \"x\": 42,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 42,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 42,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"righttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"5b6673db-26b9-4abb-a916-7b744fdc54fa\",\r\n \"x\": 42,\r\n \"y\": 24,\r\n \"pos\": {\r\n \"x\": 42,\r\n \"y\": 24\r\n },\r\n \"posSlab\": {\r\n \"x\": 42,\r\n \"y\": 24\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"rightbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"dbda4393-3a52-4eb0-96b2-c02638e47e84\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"16d395a2-3c2c-4fe4-bdac-bae16f2fe1b4\",\r\n \"from\": {\r\n \"id\": \"5b6673db-26b9-4abb-a916-7b744fdc54fa\",\r\n \"x\": 42,\r\n \"y\": 24,\r\n \"pos\": {\r\n \"x\": 42,\r\n \"y\": 24\r\n },\r\n \"posSlab\": {\r\n \"x\": 42,\r\n \"y\": 24\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"rightbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"73d327ed-e285-4747-ab65-7b4b3a38e48b\",\r\n \"x\": 0,\r\n \"y\": 24,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 24\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 24\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"leftbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"0e4430a1-9d88-4195-bd50-289e42818b74\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"a94d91d3-68c3-467d-a93a-7bc9988fb275\",\r\n \"from\": {\r\n \"id\": \"73d327ed-e285-4747-ab65-7b4b3a38e48b\",\r\n \"x\": 0,\r\n \"y\": 24,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 24\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 24\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"leftbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"7757a1c7-4343-4d9a-9f60-4125938a8d99\",\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"lefttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"37253c2f-03db-40cc-ac71-1a480e531864\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n }\r\n ],\r\n \"shapeType\": \"square\",\r\n \"rotatedDegrees\": 0,\r\n \"rotatedDegreesSlab\": 0,\r\n \"partId\": \"lower_cabinet_boxes\",\r\n \"qtCatName\": \"Kitchen\",\r\n \"fromLayout\": null,\r\n \"squareFeet\": 1,\r\n \"quantity\": 1,\r\n \"isDisabledInPopup\": false,\r\n \"rotateAngleParts\": [],\r\n \"isPointsChanged\": true,\r\n \"isPositionChanged\": true,\r\n \"isResetSlabModePopupWasDisplayed\": false,\r\n \"shapeSlab\": {\r\n \"absolutePosition\": null\r\n },\r\n \"shapeCabinet\": {\r\n \"width\": 42,\r\n \"height\": 34,\r\n \"depth\": 24\r\n },\r\n \"shapeAbsolute\": {\r\n \"absolutePosition\": {\r\n \"x\": 77.93333333333332,\r\n \"y\": -100.46666666666664\r\n },\r\n \"intersectionPoints\": [],\r\n \"snappedWithShape\": 5,\r\n \"snappedShapeGroup\": 31\r\n },\r\n \"shapeParams\": {\r\n \"shapeCabinet\": true,\r\n \"canSnap\": true,\r\n \"width\": 42,\r\n \"height\": 34,\r\n \"depth\": 24,\r\n \"diamondLength\": 0,\r\n \"thirdPartyAR3DMetaData\": {\r\n \"ActualDisplayedName\": [\r\n \"Hamilton Flat Panel SM-B42\"\r\n ],\r\n \"DisplayedName\": [\r\n \"Hamilton Flat Panel SM-B42\"\r\n ],\r\n \"Width\": [\r\n \"42\"\r\n ],\r\n \"Height\": [\r\n \"34\"\r\n ],\r\n \"Depth\": [\r\n \"24\"\r\n ],\r\n \"SKU\": [\r\n \"SM-B42\"\r\n ],\r\n \"Shape\": [\r\n \"SM-B42\"\r\n ],\r\n \"DoorStyle\": [\r\n \"Hamilton Flat Panel\"\r\n ],\r\n \"Door\": [\r\n \"2\"\r\n ],\r\n \"Drawer\": [\r\n \"2\"\r\n ],\r\n \"filters\": {\r\n \"Style\": [\r\n \"Hamilton Flat Panel\"\r\n ],\r\n \"Width\": [\r\n \"42\"\r\n ],\r\n \"Height\": [\r\n \"34\"\r\n ],\r\n \"Depth\": [\r\n \"24\"\r\n ]\r\n }\r\n },\r\n \"shapeLayout\": \"rectangle\"\r\n },\r\n \"relatedParentFeatureId\": 381762693,\r\n \"slabModeCoreParentId\": null,\r\n \"parentPartId\": null,\r\n \"slabParentPartId\": null,\r\n \"shouldUseSlabPricing\": false,\r\n \"originalPointsCoords\": [\r\n {\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"id\": \"7757a1c7-4343-4d9a-9f60-4125938a8d99\"\r\n },\r\n {\r\n \"x\": 42,\r\n \"y\": 0,\r\n \"id\": \"450bc4f0-4b07-4821-8491-049540b8e489\"\r\n },\r\n {\r\n \"x\": 42,\r\n \"y\": 24,\r\n \"id\": \"5b6673db-26b9-4abb-a916-7b744fdc54fa\"\r\n },\r\n {\r\n \"x\": 0,\r\n \"y\": 24,\r\n \"id\": \"73d327ed-e285-4747-ab65-7b4b3a38e48b\"\r\n }\r\n ]\r\n },\r\n {\r\n \"pos\": {\r\n \"x\": 119.93333333333332,\r\n \"y\": -100.46666666666664\r\n },\r\n \"slabPos\": {\r\n \"x\": 37.5,\r\n \"y\": -60.1\r\n },\r\n \"id\": 5,\r\n \"featureId\": 381672414,\r\n \"colorSet\": null,\r\n \"isHidden\": false,\r\n \"shapePieces\": [],\r\n \"seamCutPoints\": [],\r\n \"shapeParent\": null,\r\n \"lines\": [\r\n {\r\n \"id\": \"7882938b-fa71-466a-ad7e-1517aeab583b\",\r\n \"from\": {\r\n \"id\": \"8329535a-7b11-48b8-941b-fb2397b280ce\",\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"5d8d5da8-afd0-441e-8277-aa8b085dfa5d\",\r\n \"x\": 45,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 45,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 45,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"a5c13d55-cf69-4719-84a7-f4c293c97edd\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"c67aca45-a645-43c4-99df-2955257ebcd2\",\r\n \"from\": {\r\n \"id\": \"5d8d5da8-afd0-441e-8277-aa8b085dfa5d\",\r\n \"x\": 45,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 45,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 45,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"4792d285-2fe0-4dc7-8cf9-d7dc2866b9a5\",\r\n \"x\": 45,\r\n \"y\": 24,\r\n \"pos\": {\r\n \"x\": 45,\r\n \"y\": 24\r\n },\r\n \"posSlab\": {\r\n \"x\": 45,\r\n \"y\": 24\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"be2a5262-5eba-4288-b07b-4ed2ff4d3145\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"d4aedcd1-8875-4716-8a0f-16361936749d\",\r\n \"from\": {\r\n \"id\": \"4792d285-2fe0-4dc7-8cf9-d7dc2866b9a5\",\r\n \"x\": 45,\r\n \"y\": 24,\r\n \"pos\": {\r\n \"x\": 45,\r\n \"y\": 24\r\n },\r\n \"posSlab\": {\r\n \"x\": 45,\r\n \"y\": 24\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"7d4f9cdd-1a7e-44a5-879f-44068e01e4f1\",\r\n \"x\": 24,\r\n \"y\": 24,\r\n \"pos\": {\r\n \"x\": 24,\r\n \"y\": 24\r\n },\r\n \"posSlab\": {\r\n \"x\": 24,\r\n \"y\": 24\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"c714fed9-f24c-4d5e-a06e-6e6b2e949fc2\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"3c409f1b-74ff-4042-8ad4-5d16d11d3580\",\r\n \"from\": {\r\n \"id\": \"7d4f9cdd-1a7e-44a5-879f-44068e01e4f1\",\r\n \"x\": 24,\r\n \"y\": 24,\r\n \"pos\": {\r\n \"x\": 24,\r\n \"y\": 24\r\n },\r\n \"posSlab\": {\r\n \"x\": 24,\r\n \"y\": 24\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"fbffd1f2-c01b-40d7-93a2-eecf6eebf958\",\r\n \"x\": 24,\r\n \"y\": 45,\r\n \"pos\": {\r\n \"x\": 24,\r\n \"y\": 45\r\n },\r\n \"posSlab\": {\r\n \"x\": 24,\r\n \"y\": 45\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"da695b3d-9f91-4bba-9fa4-1cb242afef45\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"2445f310-99ee-490e-a3ee-373be5aa17e9\",\r\n \"from\": {\r\n \"id\": \"fbffd1f2-c01b-40d7-93a2-eecf6eebf958\",\r\n \"x\": 24,\r\n \"y\": 45,\r\n \"pos\": {\r\n \"x\": 24,\r\n \"y\": 45\r\n },\r\n \"posSlab\": {\r\n \"x\": 24,\r\n \"y\": 45\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"a18885db-6594-4e75-a214-15df5ea51f82\",\r\n \"x\": 0,\r\n \"y\": 45,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 45\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 45\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"6c9d0041-9c66-48c5-bb4f-117c2d88ed8a\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"29c6ade2-7972-46b1-89d5-d5ee47620a4d\",\r\n \"from\": {\r\n \"id\": \"a18885db-6594-4e75-a214-15df5ea51f82\",\r\n \"x\": 0,\r\n \"y\": 45,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 45\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 45\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"8329535a-7b11-48b8-941b-fb2397b280ce\",\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"bddde005-44cb-4f3a-9e02-e4ce18508b56\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n }\r\n ],\r\n \"shapeType\": \"square\",\r\n \"rotatedDegrees\": 0,\r\n \"rotatedDegreesSlab\": 0,\r\n \"partId\": \"lower_cabinet_boxes\",\r\n \"qtCatName\": \"Kitchen\",\r\n \"fromLayout\": null,\r\n \"squareFeet\": 1,\r\n \"quantity\": 1,\r\n \"isDisabledInPopup\": false,\r\n \"rotateAngleParts\": [],\r\n \"isPointsChanged\": true,\r\n \"isPositionChanged\": true,\r\n \"isResetSlabModePopupWasDisplayed\": false,\r\n \"shapeSlab\": {\r\n \"absolutePosition\": null\r\n },\r\n \"shapeCabinet\": {\r\n \"width\": 45,\r\n \"height\": 34,\r\n \"depth\": 24\r\n },\r\n \"shapeAbsolute\": {\r\n \"absolutePosition\": {\r\n \"x\": 119.93333333333332,\r\n \"y\": -100.46666666666664\r\n },\r\n \"intersectionPoints\": [],\r\n \"snappedWithShape\": 12,\r\n \"snappedShapeGroup\": 31\r\n },\r\n \"shapeParams\": {\r\n \"shapeCabinet\": true,\r\n \"canSnap\": true,\r\n \"width\": 45,\r\n \"height\": 34,\r\n \"depth\": 24,\r\n \"diamondLength\": 0,\r\n \"thirdPartyAR3DMetaData\": {\r\n \"ActualDisplayedName\": [\r\n \"Hamilton Flat Panel BBC45-48FHLRB\"\r\n ],\r\n \"DisplayedName\": [\r\n \"Hamilton Flat Panel BBC45-48FHLRB\"\r\n ],\r\n \"Width\": [\r\n \"45\"\r\n ],\r\n \"Height\": [\r\n \"34\"\r\n ],\r\n \"Depth\": [\r\n \"24\"\r\n ],\r\n \"SKU\": [\r\n \"BBC45-48FHLRB\"\r\n ],\r\n \"Shape\": [\r\n \"BBC45-48FHLRB\"\r\n ],\r\n \"DoorStyle\": [\r\n \"Hamilton Flat Panel\"\r\n ],\r\n \"Door\": [\r\n \"2\"\r\n ],\r\n \"Drawer\": [\r\n \"0\"\r\n ],\r\n \"SpecialShape\": [\r\n \"LowerLCorner\"\r\n ],\r\n \"filters\": {\r\n \"Style\": [\r\n \"Hamilton Flat Panel\"\r\n ],\r\n \"Width\": [\r\n \"45\"\r\n ],\r\n \"Height\": [\r\n \"34\"\r\n ],\r\n \"Depth\": [\r\n \"24\"\r\n ]\r\n }\r\n },\r\n \"shapeLayout\": \"LowerLCorner\"\r\n },\r\n \"relatedParentFeatureId\": 381762693,\r\n \"slabModeCoreParentId\": null,\r\n \"parentPartId\": null,\r\n \"slabParentPartId\": null,\r\n \"shouldUseSlabPricing\": false,\r\n \"originalPointsCoords\": [\r\n {\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"id\": \"8329535a-7b11-48b8-941b-fb2397b280ce\"\r\n },\r\n {\r\n \"x\": 45,\r\n \"y\": 0,\r\n \"id\": \"5d8d5da8-afd0-441e-8277-aa8b085dfa5d\"\r\n },\r\n {\r\n \"x\": 45,\r\n \"y\": 24,\r\n \"id\": \"4792d285-2fe0-4dc7-8cf9-d7dc2866b9a5\"\r\n },\r\n {\r\n \"x\": 24,\r\n \"y\": 24,\r\n \"id\": \"7d4f9cdd-1a7e-44a5-879f-44068e01e4f1\"\r\n },\r\n {\r\n \"x\": 24,\r\n \"y\": 45,\r\n \"id\": \"fbffd1f2-c01b-40d7-93a2-eecf6eebf958\"\r\n },\r\n {\r\n \"x\": 0,\r\n \"y\": 45,\r\n \"id\": \"a18885db-6594-4e75-a214-15df5ea51f82\"\r\n }\r\n ]\r\n },\r\n {\r\n \"pos\": {\r\n \"x\": 38.20000000000003,\r\n \"y\": -101.06666666666663\r\n },\r\n \"slabPos\": {\r\n \"x\": 39,\r\n \"y\": -49.6\r\n },\r\n \"id\": 6,\r\n \"featureId\": 381183142,\r\n \"colorSet\": null,\r\n \"isHidden\": false,\r\n \"shapePieces\": [],\r\n \"seamCutPoints\": [],\r\n \"shapeParent\": null,\r\n \"lines\": [\r\n {\r\n \"id\": \"ac535fb8-daba-4237-a079-9c0a9954b91f\",\r\n \"from\": {\r\n \"id\": \"c9f4f50e-6454-4f3d-b8af-d7c2b620fe3f\",\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"lefttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"4102b6db-3cc7-4c03-ba27-ac7befbc9279\",\r\n \"x\": 42,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 42,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 42,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"righttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"22915925-981f-4852-ab18-5c98a860e57c\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"2915c96e-87a9-42fa-bcfa-097e314b068e\",\r\n \"from\": {\r\n \"id\": \"4102b6db-3cc7-4c03-ba27-ac7befbc9279\",\r\n \"x\": 42,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 42,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 42,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"righttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"6c3072f1-d3f3-476a-8d62-6041f21999f6\",\r\n \"x\": 42,\r\n \"y\": 24,\r\n \"pos\": {\r\n \"x\": 42,\r\n \"y\": 24\r\n },\r\n \"posSlab\": {\r\n \"x\": 42,\r\n \"y\": 24\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"rightbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"0fdaa99c-0c3c-49a3-afb6-d5e5fbb84af8\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"975a7d08-decb-4044-846f-7cf6ab05534c\",\r\n \"from\": {\r\n \"id\": \"6c3072f1-d3f3-476a-8d62-6041f21999f6\",\r\n \"x\": 42,\r\n \"y\": 24,\r\n \"pos\": {\r\n \"x\": 42,\r\n \"y\": 24\r\n },\r\n \"posSlab\": {\r\n \"x\": 42,\r\n \"y\": 24\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"rightbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"104b7524-8327-4458-a54b-26141bec2eec\",\r\n \"x\": 0,\r\n \"y\": 24,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 24\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 24\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"leftbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"cbd744a8-3640-4fd6-8538-cbb1c609cb77\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"f4e17ba9-6f1b-4766-bff7-d86602a6f100\",\r\n \"from\": {\r\n \"id\": \"104b7524-8327-4458-a54b-26141bec2eec\",\r\n \"x\": 0,\r\n \"y\": 24,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 24\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 24\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"leftbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"c9f4f50e-6454-4f3d-b8af-d7c2b620fe3f\",\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"lefttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"2bfe82a8-8e76-4c02-9c4d-2932511ee1e2\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n }\r\n ],\r\n \"shapeType\": \"square\",\r\n \"rotatedDegrees\": 0,\r\n \"rotatedDegreesSlab\": 0,\r\n \"partId\": \"lower_cabinet_boxes\",\r\n \"qtCatName\": \"Kitchen\",\r\n \"fromLayout\": null,\r\n \"squareFeet\": 1,\r\n \"quantity\": 1,\r\n \"isDisabledInPopup\": false,\r\n \"rotateAngleParts\": [],\r\n \"isPointsChanged\": true,\r\n \"isPositionChanged\": true,\r\n \"isResetSlabModePopupWasDisplayed\": false,\r\n \"shapeSlab\": {\r\n \"absolutePosition\": null\r\n },\r\n \"shapeCabinet\": {\r\n \"width\": 42,\r\n \"height\": 34,\r\n \"depth\": 24\r\n },\r\n \"shapeAbsolute\": {\r\n \"absolutePosition\": {\r\n \"x\": 35.93333333333333,\r\n \"y\": -100.46666666666665\r\n },\r\n \"intersectionPoints\": [],\r\n \"snappedWithShape\": 12,\r\n \"snappedShapeGroup\": 31\r\n },\r\n \"shapeParams\": {\r\n \"shapeCabinet\": true,\r\n \"canSnap\": true,\r\n \"width\": 42,\r\n \"height\": 34,\r\n \"depth\": 24,\r\n \"diamondLength\": 0,\r\n \"thirdPartyAR3DMetaData\": {\r\n \"ActualDisplayedName\": [\r\n \"Hamilton Flat Panel SM-B42\"\r\n ],\r\n \"DisplayedName\": [\r\n \"Hamilton Flat Panel SM-B42\"\r\n ],\r\n \"Width\": [\r\n \"42\"\r\n ],\r\n \"Height\": [\r\n \"34\"\r\n ],\r\n \"Depth\": [\r\n \"24\"\r\n ],\r\n \"SKU\": [\r\n \"SM-B42\"\r\n ],\r\n \"Shape\": [\r\n \"SM-B42\"\r\n ],\r\n \"DoorStyle\": [\r\n \"Hamilton Flat Panel\"\r\n ],\r\n \"Door\": [\r\n \"2\"\r\n ],\r\n \"Drawer\": [\r\n \"2\"\r\n ],\r\n \"filters\": {\r\n \"Style\": [\r\n \"Hamilton Flat Panel\"\r\n ],\r\n \"Width\": [\r\n \"42\"\r\n ],\r\n \"Height\": [\r\n \"34\"\r\n ],\r\n \"Depth\": [\r\n \"24\"\r\n ]\r\n }\r\n },\r\n \"shapeLayout\": \"rectangle\"\r\n },\r\n \"relatedParentFeatureId\": 381762693,\r\n \"slabModeCoreParentId\": null,\r\n \"parentPartId\": null,\r\n \"slabParentPartId\": null,\r\n \"shouldUseSlabPricing\": false,\r\n \"originalPointsCoords\": [\r\n {\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"id\": \"c9f4f50e-6454-4f3d-b8af-d7c2b620fe3f\"\r\n },\r\n {\r\n \"x\": 42,\r\n \"y\": 0,\r\n \"id\": \"4102b6db-3cc7-4c03-ba27-ac7befbc9279\"\r\n },\r\n {\r\n \"x\": 42,\r\n \"y\": 24,\r\n \"id\": \"6c3072f1-d3f3-476a-8d62-6041f21999f6\"\r\n },\r\n {\r\n \"x\": 0,\r\n \"y\": 24,\r\n \"id\": \"104b7524-8327-4458-a54b-26141bec2eec\"\r\n }\r\n ]\r\n },\r\n {\r\n \"pos\": {\r\n \"x\": -6.0666666666666575,\r\n \"y\": -100.46666666666665\r\n },\r\n \"slabPos\": {\r\n \"x\": 39,\r\n \"y\": -58.6\r\n },\r\n \"id\": 7,\r\n \"featureId\": 381672425,\r\n \"colorSet\": null,\r\n \"isHidden\": false,\r\n \"shapePieces\": [],\r\n \"seamCutPoints\": [],\r\n \"shapeParent\": null,\r\n \"lines\": [\r\n {\r\n \"id\": \"165ddbbe-5161-4aa6-ad24-6f5bb2dbd133\",\r\n \"from\": {\r\n \"id\": \"d1b66302-82de-4b57-8f70-38c836201254\",\r\n \"x\": 12.3065,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 12.3065,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 12.3065,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"afb94d89-9ec9-4a59-9261-b6b746126b22\",\r\n \"x\": 42,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 42,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 42,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"d30fc942-ba44-4a40-b9d4-06125d02a497\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"246453e1-e835-4841-8b49-8e9826c89584\",\r\n \"from\": {\r\n \"id\": \"afb94d89-9ec9-4a59-9261-b6b746126b22\",\r\n \"x\": 42,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 42,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 42,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"dd4f428d-2e34-4a5e-b31a-7f81822e66ea\",\r\n \"x\": 42,\r\n \"y\": 24,\r\n \"pos\": {\r\n \"x\": 42,\r\n \"y\": 24\r\n },\r\n \"posSlab\": {\r\n \"x\": 42,\r\n \"y\": 24\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"8b782418-71c8-4906-b258-9a883c1e14d7\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"777f1787-844c-4c1f-ad74-103b8c440607\",\r\n \"from\": {\r\n \"id\": \"dd4f428d-2e34-4a5e-b31a-7f81822e66ea\",\r\n \"x\": 42,\r\n \"y\": 24,\r\n \"pos\": {\r\n \"x\": 42,\r\n \"y\": 24\r\n },\r\n \"posSlab\": {\r\n \"x\": 42,\r\n \"y\": 24\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"a9636338-80eb-4493-a7da-4ed87028321e\",\r\n \"x\": 24,\r\n \"y\": 42,\r\n \"pos\": {\r\n \"x\": 24,\r\n \"y\": 42\r\n },\r\n \"posSlab\": {\r\n \"x\": 24,\r\n \"y\": 42\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"3b4fd3af-e212-4f50-9c5a-aa32bdbf040e\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"59f45381-6a35-4bd2-b230-7e9ead9e5612\",\r\n \"from\": {\r\n \"id\": \"a9636338-80eb-4493-a7da-4ed87028321e\",\r\n \"x\": 24,\r\n \"y\": 42,\r\n \"pos\": {\r\n \"x\": 24,\r\n \"y\": 42\r\n },\r\n \"posSlab\": {\r\n \"x\": 24,\r\n \"y\": 42\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"6f04935b-3540-4294-b4cc-e8a9e95a4b58\",\r\n \"x\": 0,\r\n \"y\": 42,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 42\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 42\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"0a0d3ded-0683-4fe9-86b3-d19e98e518ff\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"40fb4dd5-82c8-4a4f-a486-ed241767bd34\",\r\n \"from\": {\r\n \"id\": \"6f04935b-3540-4294-b4cc-e8a9e95a4b58\",\r\n \"x\": 0,\r\n \"y\": 42,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 42\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 42\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"c5561c94-e740-4360-82a2-f8548e6f0b87\",\r\n \"x\": 0,\r\n \"y\": 12.3065,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 12.3065\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 12.3065\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"2183cb80-52ae-4409-ab53-d569db21871d\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"691ccdc8-7e56-4b77-a086-07dc83714807\",\r\n \"from\": {\r\n \"id\": \"c5561c94-e740-4360-82a2-f8548e6f0b87\",\r\n \"x\": 0,\r\n \"y\": 12.3065,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 12.3065\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 12.3065\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"d1b66302-82de-4b57-8f70-38c836201254\",\r\n \"x\": 12.3065,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 12.3065,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 12.3065,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"5a8acee9-cada-4d78-be8c-110de6976c52\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n }\r\n ],\r\n \"shapeType\": \"square\",\r\n \"rotatedDegrees\": 0,\r\n \"rotatedDegreesSlab\": 0,\r\n \"partId\": \"lower_cabinet_boxes\",\r\n \"qtCatName\": \"Kitchen\",\r\n \"fromLayout\": null,\r\n \"squareFeet\": 1,\r\n \"quantity\": 1,\r\n \"isDisabledInPopup\": false,\r\n \"rotateAngleParts\": [],\r\n \"isPointsChanged\": true,\r\n \"isPositionChanged\": true,\r\n \"isResetSlabModePopupWasDisplayed\": false,\r\n \"shapeSlab\": {\r\n \"absolutePosition\": null\r\n },\r\n \"shapeCabinet\": {\r\n \"width\": 42,\r\n \"height\": 34,\r\n \"depth\": 24\r\n },\r\n \"shapeAbsolute\": {\r\n \"absolutePosition\": {\r\n \"x\": -6.0666666666666575,\r\n \"y\": -100.46666666666665\r\n },\r\n \"intersectionPoints\": [],\r\n \"snappedWithShape\": 6,\r\n \"snappedShapeGroup\": 31\r\n },\r\n \"shapeParams\": {\r\n \"shapeCabinet\": true,\r\n \"canSnap\": true,\r\n \"width\": 42,\r\n \"height\": 34,\r\n \"depth\": 24,\r\n \"diamondLength\": 29.6935,\r\n \"thirdPartyAR3DMetaData\": {\r\n \"ActualDisplayedName\": [\r\n \"Hamilton Flat Panel DCB42LRB\"\r\n ],\r\n \"DisplayedName\": [\r\n \"Hamilton Flat Panel DCB42LRB\"\r\n ],\r\n \"Width\": [\r\n \"42\"\r\n ],\r\n \"Height\": [\r\n \"34\"\r\n ],\r\n \"Depth\": [\r\n \"24\"\r\n ],\r\n \"SKU\": [\r\n \"DCB42LRB\"\r\n ],\r\n \"Shape\": [\r\n \"DCB42LRB\"\r\n ],\r\n \"DoorStyle\": [\r\n \"Hamilton Flat Panel\"\r\n ],\r\n \"Door\": [\r\n \"2\"\r\n ],\r\n \"Drawer\": [\r\n \"0\"\r\n ],\r\n \"SpecialShape\": [\r\n \"LowerDimondShape\"\r\n ],\r\n \"DiamondLength\": [\r\n \"29.6935in\"\r\n ],\r\n \"filters\": {\r\n \"Style\": [\r\n \"Hamilton Flat Panel\"\r\n ],\r\n \"Width\": [\r\n \"42\"\r\n ],\r\n \"Height\": [\r\n \"34\"\r\n ],\r\n \"Depth\": [\r\n \"24\"\r\n ],\r\n \"DiamondLength\": [\r\n \"29.6935in\"\r\n ]\r\n }\r\n },\r\n \"shapeLayout\": \"LowerDimondShape\"\r\n },\r\n \"relatedParentFeatureId\": 381762693,\r\n \"slabModeCoreParentId\": null,\r\n \"parentPartId\": null,\r\n \"slabParentPartId\": null,\r\n \"shouldUseSlabPricing\": false,\r\n \"originalPointsCoords\": [\r\n {\r\n \"x\": 12.3065,\r\n \"y\": 0,\r\n \"id\": \"d1b66302-82de-4b57-8f70-38c836201254\"\r\n },\r\n {\r\n \"x\": 42,\r\n \"y\": 0,\r\n \"id\": \"afb94d89-9ec9-4a59-9261-b6b746126b22\"\r\n },\r\n {\r\n \"x\": 42,\r\n \"y\": 24,\r\n \"id\": \"dd4f428d-2e34-4a5e-b31a-7f81822e66ea\"\r\n },\r\n {\r\n \"x\": 24,\r\n \"y\": 42,\r\n \"id\": \"a9636338-80eb-4493-a7da-4ed87028321e\"\r\n },\r\n {\r\n \"x\": 0,\r\n \"y\": 42,\r\n \"id\": \"6f04935b-3540-4294-b4cc-e8a9e95a4b58\"\r\n },\r\n {\r\n \"x\": 0,\r\n \"y\": 12.3065,\r\n \"id\": \"c5561c94-e740-4360-82a2-f8548e6f0b87\"\r\n }\r\n ]\r\n },\r\n {\r\n \"pos\": {\r\n \"x\": 66.53333333333335,\r\n \"y\": -99.33333333333329\r\n },\r\n \"slabPos\": {\r\n \"x\": 68.13333333333334,\r\n \"y\": -79.06666666666666\r\n },\r\n \"id\": 9,\r\n \"featureId\": 381183133,\r\n \"colorSet\": null,\r\n \"isHidden\": false,\r\n \"shapePieces\": [],\r\n \"seamCutPoints\": [],\r\n \"shapeParent\": null,\r\n \"lines\": [\r\n {\r\n \"id\": \"a41c77ab-2008-4ea5-b3b8-965943349ce6\",\r\n \"from\": {\r\n \"id\": \"2fe55550-d46f-4442-8231-44610f2cde3a\",\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"lefttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"3cbf3cd2-48f1-48df-839d-44faefc2b2fb\",\r\n \"x\": 36,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 36,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 36,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"righttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"b3582108-71aa-4c6e-b6df-0553a381ca33\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"a670d4d5-37f4-4b9e-917c-b8081cbbd2d0\",\r\n \"from\": {\r\n \"id\": \"3cbf3cd2-48f1-48df-839d-44faefc2b2fb\",\r\n \"x\": 36,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 36,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 36,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"righttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"36871fd9-8866-495c-aed1-c95115051230\",\r\n \"x\": 36,\r\n \"y\": 12,\r\n \"pos\": {\r\n \"x\": 36,\r\n \"y\": 12\r\n },\r\n \"posSlab\": {\r\n \"x\": 36,\r\n \"y\": 12\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"rightbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"1c31df18-ec68-4f44-9103-89aaf919cb28\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"2c715779-9dda-4267-b508-06b454b2935d\",\r\n \"from\": {\r\n \"id\": \"36871fd9-8866-495c-aed1-c95115051230\",\r\n \"x\": 36,\r\n \"y\": 12,\r\n \"pos\": {\r\n \"x\": 36,\r\n \"y\": 12\r\n },\r\n \"posSlab\": {\r\n \"x\": 36,\r\n \"y\": 12\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"rightbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"5b245f9e-32e5-4fc4-88e4-f03e7f5a021f\",\r\n \"x\": 0,\r\n \"y\": 12,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 12\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 12\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"leftbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"9f1ed23b-f565-4abe-9179-27085920a697\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"625a3b14-9432-412d-9d3e-64e78e4528bb\",\r\n \"from\": {\r\n \"id\": \"5b245f9e-32e5-4fc4-88e4-f03e7f5a021f\",\r\n \"x\": 0,\r\n \"y\": 12,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 12\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 12\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"leftbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"2fe55550-d46f-4442-8231-44610f2cde3a\",\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"lefttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"b6b16ec2-2e3f-41a9-be82-feef6eb33739\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n }\r\n ],\r\n \"shapeType\": \"square\",\r\n \"rotatedDegrees\": 0,\r\n \"rotatedDegreesSlab\": 0,\r\n \"partId\": \"upper_cabinet_boxes\",\r\n \"qtCatName\": \"Kitchen\",\r\n \"fromLayout\": null,\r\n \"squareFeet\": 1,\r\n \"quantity\": 1,\r\n \"isDisabledInPopup\": false,\r\n \"rotateAngleParts\": [],\r\n \"isPointsChanged\": true,\r\n \"isPositionChanged\": true,\r\n \"isResetSlabModePopupWasDisplayed\": false,\r\n \"shapeSlab\": {\r\n \"absolutePosition\": null\r\n },\r\n \"shapeCabinet\": {\r\n \"width\": 36,\r\n \"height\": 42,\r\n \"depth\": 12\r\n },\r\n \"shapeAbsolute\": {\r\n \"absolutePosition\": {\r\n \"x\": 65.93333333333335,\r\n \"y\": -100.46666666666665\r\n },\r\n \"intersectionPoints\": [],\r\n \"snappedWithShape\": 10,\r\n \"snappedShapeGroup\": 31\r\n },\r\n \"shapeParams\": {\r\n \"shapeCabinet\": true,\r\n \"canSnap\": true,\r\n \"width\": 36,\r\n \"height\": 42,\r\n \"depth\": 12,\r\n \"diamondLength\": 0,\r\n \"thirdPartyAR3DMetaData\": {\r\n \"ActualDisplayedName\": [\r\n \"Hamilton Flat Panel SM-W3642\"\r\n ],\r\n \"DisplayedName\": [\r\n \"Hamilton Flat Panel SM-W3642\"\r\n ],\r\n \"Width\": [\r\n \"36\"\r\n ],\r\n \"Height\": [\r\n \"42\"\r\n ],\r\n \"Depth\": [\r\n \"12\"\r\n ],\r\n \"SKU\": [\r\n \"SM-W3642\"\r\n ],\r\n \"Shape\": [\r\n \"SM-W3642\"\r\n ],\r\n \"DoorStyle\": [\r\n \"Hamilton Flat Panel\"\r\n ],\r\n \"Door\": [\r\n \"2\"\r\n ],\r\n \"Drawer\": [\r\n \"0\"\r\n ],\r\n \"filters\": {\r\n \"Style\": [\r\n \"Hamilton Flat Panel\"\r\n ],\r\n \"Width\": [\r\n \"36\"\r\n ],\r\n \"Height\": [\r\n \"42\"\r\n ],\r\n \"Depth\": [\r\n \"12\"\r\n ]\r\n }\r\n },\r\n \"shapeLayout\": \"rectangle\"\r\n },\r\n \"relatedParentFeatureId\": 381762675,\r\n \"slabModeCoreParentId\": null,\r\n \"parentPartId\": null,\r\n \"slabParentPartId\": null,\r\n \"shouldUseSlabPricing\": false,\r\n \"originalPointsCoords\": [\r\n {\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"id\": \"2fe55550-d46f-4442-8231-44610f2cde3a\"\r\n },\r\n {\r\n \"x\": 36,\r\n \"y\": 0,\r\n \"id\": \"3cbf3cd2-48f1-48df-839d-44faefc2b2fb\"\r\n },\r\n {\r\n \"x\": 36,\r\n \"y\": 12,\r\n \"id\": \"36871fd9-8866-495c-aed1-c95115051230\"\r\n },\r\n {\r\n \"x\": 0,\r\n \"y\": 12,\r\n \"id\": \"5b245f9e-32e5-4fc4-88e4-f03e7f5a021f\"\r\n }\r\n ]\r\n },\r\n {\r\n \"pos\": {\r\n \"x\": 28.933333333333362,\r\n \"y\": -99.06666666666665\r\n },\r\n \"slabPos\": {\r\n \"x\": 68.13333333333334,\r\n \"y\": -79.06666666666666\r\n },\r\n \"id\": 10,\r\n \"featureId\": 381183137,\r\n \"colorSet\": null,\r\n \"isHidden\": false,\r\n \"shapePieces\": [],\r\n \"seamCutPoints\": [],\r\n \"shapeParent\": null,\r\n \"lines\": [\r\n {\r\n \"id\": \"c7d0673f-c0b1-4e41-93a5-7dbe797c0c02\",\r\n \"from\": {\r\n \"id\": \"844238cb-c72c-422f-a4e1-6375df980944\",\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"lefttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"3655728d-51cb-4842-aa0c-74e9fcae6ccc\",\r\n \"x\": 36,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 36,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 36,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"righttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"c548ea6b-8a50-4519-a014-243925de5180\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"8d99dbbc-9a40-42b7-94aa-171633d87f60\",\r\n \"from\": {\r\n \"id\": \"3655728d-51cb-4842-aa0c-74e9fcae6ccc\",\r\n \"x\": 36,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 36,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 36,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"righttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"676a53bb-28d2-401a-835e-57383804d3ea\",\r\n \"x\": 36,\r\n \"y\": 12,\r\n \"pos\": {\r\n \"x\": 36,\r\n \"y\": 12\r\n },\r\n \"posSlab\": {\r\n \"x\": 36,\r\n \"y\": 12\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"rightbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"9b9cb935-af2d-41c7-9247-7662901d48f1\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"8d9829de-6472-4963-950a-402efe78e8fe\",\r\n \"from\": {\r\n \"id\": \"676a53bb-28d2-401a-835e-57383804d3ea\",\r\n \"x\": 36,\r\n \"y\": 12,\r\n \"pos\": {\r\n \"x\": 36,\r\n \"y\": 12\r\n },\r\n \"posSlab\": {\r\n \"x\": 36,\r\n \"y\": 12\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"rightbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"8fb12eda-3755-416e-ba51-965155387f63\",\r\n \"x\": 0,\r\n \"y\": 12,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 12\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 12\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"leftbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"9585ae3e-578e-4d3c-b61b-e7af31ae5748\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"fda03198-c1f8-451c-8404-34df394ecc39\",\r\n \"from\": {\r\n \"id\": \"8fb12eda-3755-416e-ba51-965155387f63\",\r\n \"x\": 0,\r\n \"y\": 12,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 12\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 12\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"leftbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"844238cb-c72c-422f-a4e1-6375df980944\",\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"lefttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"0b7dc8be-4e89-4656-96de-c6f475f1b00a\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n }\r\n ],\r\n \"shapeType\": \"square\",\r\n \"rotatedDegrees\": 0,\r\n \"rotatedDegreesSlab\": 0,\r\n \"partId\": \"upper_cabinet_boxes\",\r\n \"qtCatName\": \"Kitchen\",\r\n \"fromLayout\": null,\r\n \"squareFeet\": 1,\r\n \"quantity\": 1,\r\n \"isDisabledInPopup\": false,\r\n \"rotateAngleParts\": [],\r\n \"isPointsChanged\": true,\r\n \"isPositionChanged\": true,\r\n \"isResetSlabModePopupWasDisplayed\": false,\r\n \"shapeSlab\": {\r\n \"absolutePosition\": null\r\n },\r\n \"shapeCabinet\": {\r\n \"width\": 36,\r\n \"height\": 36,\r\n \"depth\": 12\r\n },\r\n \"shapeAbsolute\": {\r\n \"absolutePosition\": {\r\n \"x\": 29.93333333333333,\r\n \"y\": -100.46666666666665\r\n },\r\n \"intersectionPoints\": [],\r\n \"snappedWithShape\": 9,\r\n \"snappedShapeGroup\": 31\r\n },\r\n \"shapeParams\": {\r\n \"shapeCabinet\": true,\r\n \"canSnap\": true,\r\n \"width\": 36,\r\n \"height\": 36,\r\n \"depth\": 12,\r\n \"diamondLength\": 0,\r\n \"thirdPartyAR3DMetaData\": {\r\n \"ActualDisplayedName\": [\r\n \"Hamilton Flat Panel SM-W3636\"\r\n ],\r\n \"DisplayedName\": [\r\n \"Hamilton Flat Panel SM-W3636\"\r\n ],\r\n \"Width\": [\r\n \"36\"\r\n ],\r\n \"Height\": [\r\n \"36\"\r\n ],\r\n \"Depth\": [\r\n \"12\"\r\n ],\r\n \"SKU\": [\r\n \"SM-W3636\"\r\n ],\r\n \"Shape\": [\r\n \"SM-W3636\"\r\n ],\r\n \"DoorStyle\": [\r\n \"Hamilton Flat Panel\"\r\n ],\r\n \"Door\": [\r\n \"2\"\r\n ],\r\n \"Drawer\": [\r\n \"0\"\r\n ],\r\n \"filters\": {\r\n \"Style\": [\r\n \"Hamilton Flat Panel\"\r\n ],\r\n \"Width\": [\r\n \"36\"\r\n ],\r\n \"Height\": [\r\n \"36\"\r\n ],\r\n \"Depth\": [\r\n \"12\"\r\n ]\r\n }\r\n },\r\n \"shapeLayout\": \"rectangle\"\r\n },\r\n \"relatedParentFeatureId\": 381762675,\r\n \"slabModeCoreParentId\": null,\r\n \"parentPartId\": null,\r\n \"slabParentPartId\": null,\r\n \"shouldUseSlabPricing\": false,\r\n \"originalPointsCoords\": [\r\n {\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"id\": \"844238cb-c72c-422f-a4e1-6375df980944\"\r\n },\r\n {\r\n \"x\": 36,\r\n \"y\": 0,\r\n \"id\": \"3655728d-51cb-4842-aa0c-74e9fcae6ccc\"\r\n },\r\n {\r\n \"x\": 36,\r\n \"y\": 12,\r\n \"id\": \"676a53bb-28d2-401a-835e-57383804d3ea\"\r\n },\r\n {\r\n \"x\": 0,\r\n \"y\": 12,\r\n \"id\": \"8fb12eda-3755-416e-ba51-965155387f63\"\r\n }\r\n ]\r\n },\r\n {\r\n \"pos\": {\r\n \"x\": -6.799999999999994,\r\n \"y\": -99.33333333333329\r\n },\r\n \"slabPos\": {\r\n \"x\": 68.13333333333334,\r\n \"y\": -79.06666666666666\r\n },\r\n \"id\": 11,\r\n \"featureId\": 381183139,\r\n \"colorSet\": null,\r\n \"isHidden\": false,\r\n \"shapePieces\": [],\r\n \"seamCutPoints\": [],\r\n \"shapeParent\": null,\r\n \"lines\": [\r\n {\r\n \"id\": \"45e1a826-e059-49cb-a68d-db6575a4c909\",\r\n \"from\": {\r\n \"id\": \"176fe8da-27cd-41c1-89de-8dafd037ae59\",\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"lefttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"32b73148-443d-43b2-8b37-2871e61bb3cc\",\r\n \"x\": 36,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 36,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 36,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"righttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"f96261e8-94c2-438a-a40a-d7a8a8bdd56d\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"79506af2-6dd7-444a-93d3-1780eb565d0e\",\r\n \"from\": {\r\n \"id\": \"32b73148-443d-43b2-8b37-2871e61bb3cc\",\r\n \"x\": 36,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 36,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 36,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"righttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"c1c62f14-6557-4f83-a59c-3ac8af699504\",\r\n \"x\": 36,\r\n \"y\": 12,\r\n \"pos\": {\r\n \"x\": 36,\r\n \"y\": 12\r\n },\r\n \"posSlab\": {\r\n \"x\": 36,\r\n \"y\": 12\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"rightbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"4092e21b-71a5-4892-9322-ac95ab0ad4ce\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"c4bbbb29-cefd-4923-b53d-853a7f6ce8fc\",\r\n \"from\": {\r\n \"id\": \"c1c62f14-6557-4f83-a59c-3ac8af699504\",\r\n \"x\": 36,\r\n \"y\": 12,\r\n \"pos\": {\r\n \"x\": 36,\r\n \"y\": 12\r\n },\r\n \"posSlab\": {\r\n \"x\": 36,\r\n \"y\": 12\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"rightbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"73ac4a3f-49b8-4ab2-8e2e-730a5d6358c9\",\r\n \"x\": 0,\r\n \"y\": 12,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 12\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 12\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"leftbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"435366c8-54f5-42ae-820d-51e28aef018f\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n },\r\n {\r\n \"id\": \"9a87fba6-fa9c-4913-8861-66eb31350cc5\",\r\n \"from\": {\r\n \"id\": \"73ac4a3f-49b8-4ab2-8e2e-730a5d6358c9\",\r\n \"x\": 0,\r\n \"y\": 12,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 12\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 12\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"leftbottom\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"to\": {\r\n \"id\": \"176fe8da-27cd-41c1-89de-8dafd037ae59\",\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"posSlab\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"arcLength\": 0,\r\n \"angle\": 0,\r\n \"pointDirection\": \"lefttop\",\r\n \"rotateAnglePart\": null,\r\n \"angleIsChanged\": false,\r\n \"renderAngleCircle\": false,\r\n \"renderAngleArc\": false,\r\n \"featureId\": null\r\n },\r\n \"bumpout\": null,\r\n \"mitered\": null,\r\n \"underlayment\": null,\r\n \"waterfallData\": null,\r\n \"label\": null,\r\n \"titleOverlay\": null,\r\n \"overlay\": null,\r\n \"lineCorner\": {\r\n \"id\": \"112f0193-ec8e-4ed0-9519-ebdf08328c60\",\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 \"miteredOverlay\": null\r\n },\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,\r\n \"isWithUnderlayment\": false,\r\n \"isWithWaterfallEdge\": false,\r\n \"isWithPeninsulaUnderwrapEdge\": false,\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,\r\n \"backsplashName\": \"\",\r\n \"backsplashType\": \"\",\r\n \"attachedItems\": {\r\n \"isWithCrownMolding\": false,\r\n \"isWithEndCap\": false\r\n },\r\n \"movePointDistance\": 0,\r\n \"angleLinePoints\": {},\r\n \"slabModeSkipMiteredEdgeCreation\": false,\r\n \"isHiddenForever\": false,\r\n \"seamCutPoint\": null\r\n }\r\n }\r\n ],\r\n \"shapeType\": \"square\",\r\n \"rotatedDegrees\": 0,\r\n \"rotatedDegreesSlab\": 0,\r\n \"partId\": \"upper_cabinet_boxes\",\r\n \"qtCatName\": \"Kitchen\",\r\n \"fromLayout\": null,\r\n \"squareFeet\": 1,\r\n \"quantity\": 1,\r\n \"isDisabledInPopup\": false,\r\n \"rotateAngleParts\": [],\r\n \"isPointsChanged\": true,\r\n \"isPositionChanged\": true,\r\n \"isResetSlabModePopupWasDisplayed\": false,\r\n \"shapeSlab\": {\r\n \"absolutePosition\": null\r\n },\r\n \"shapeCabinet\": {\r\n \"width\": 36,\r\n \"height\": 30,\r\n \"depth\": 12\r\n },\r\n \"shapeAbsolute\": {\r\n \"absolutePosition\": {\r\n \"x\": -6.06666666666666,\r\n \"y\": -100.46666666666665\r\n },\r\n \"intersectionPoints\": [],\r\n \"snappedWithShape\": 10,\r\n \"snappedShapeGroup\": 31\r\n },\r\n \"shapeParams\": {\r\n \"shapeCabinet\": true,\r\n \"canSnap\": true,\r\n \"width\": 36,\r\n \"height\": 30,\r\n \"depth\": 12,\r\n \"diamondLength\": 0,\r\n \"thirdPartyAR3DMetaData\": {\r\n \"ActualDisplayedName\": [\r\n \"Hamilton Flat Panel SW-WBC3630\"\r\n ],\r\n \"DisplayedName\": [\r\n \"Hamilton Flat Panel SW-WBC3630\"\r\n ],\r\n \"Width\": [\r\n \"36\"\r\n ],\r\n \"Height\": [\r\n \"30\"\r\n ],\r\n \"Depth\": [\r\n \"12\"\r\n ],\r\n \"SKU\": [\r\n \"SW-WBC3630\"\r\n ],\r\n \"Shape\": [\r\n \"SW-WBC3630\"\r\n ],\r\n \"DoorStyle\": [\r\n \"Hamilton Flat Panel\"\r\n ],\r\n \"Door\": [\r\n \"1\"\r\n ],\r\n \"Drawer\": [\r\n \"0\"\r\n ],\r\n \"filters\": {\r\n \"Style\": [\r\n \"Hamilton Flat Panel\"\r\n ],\r\n \"Width\": [\r\n \"36\"\r\n ],\r\n \"Height\": [\r\n \"30\"\r\n ],\r\n \"Depth\": [\r\n \"12\"\r\n ]\r\n }\r\n },\r\n \"shapeLayout\": \"rectangle\"\r\n },\r\n \"relatedParentFeatureId\": 381762675,\r\n \"slabModeCoreParentId\": null,\r\n \"parentPartId\": null,\r\n \"slabParentPartId\": null,\r\n \"shouldUseSlabPricing\": false,\r\n \"originalPointsCoords\": [\r\n {\r\n \"x\": 0,\r\n \"y\": 0,\r\n \"id\": \"176fe8da-27cd-41c1-89de-8dafd037ae59\"\r\n },\r\n {\r\n \"x\": 36,\r\n \"y\": 0,\r\n \"id\": \"32b73148-443d-43b2-8b37-2871e61bb3cc\"\r\n },\r\n {\r\n \"x\": 36,\r\n \"y\": 12,\r\n \"id\": \"c1c62f14-6557-4f83-a59c-3ac8af699504\"\r\n },\r\n {\r\n \"x\": 0,\r\n \"y\": 12,\r\n \"id\": \"73ac4a3f-49b8-4ab2-8e2e-730a5d6358c9\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"manualCalculate\": false,\r\n \"controllers\": {\r\n \"walls\": [],\r\n \"snappedShapeGroups\": [\r\n 0,\r\n 1,\r\n 2,\r\n 3,\r\n 4,\r\n 5,\r\n 6,\r\n 7,\r\n 8,\r\n 9,\r\n 10,\r\n 11,\r\n 12,\r\n 13,\r\n 14,\r\n 15,\r\n 16,\r\n 17,\r\n 18,\r\n 19,\r\n 20,\r\n 21,\r\n 22,\r\n 23,\r\n 24,\r\n 25,\r\n 26,\r\n 27,\r\n 28,\r\n 29,\r\n 30,\r\n 31\r\n ],\r\n \"handles\": [],\r\n \"hinge\": []\r\n },\r\n \"underlayment\": []\r\n}\r\n\r\nexport const CABINET_SET2 = [\r\n {\r\n \"shapeId\": 1,\r\n \"partId\": \"lower_cabinet_boxes\",\r\n \"x\": -45.13333333333333,\r\n \"y\": 0,\r\n \"z\": -34.4666666666667,\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 const {shopPageOpened} = store.shopState;\r\n\r\n dispatch({\r\n type: types.SET_LOOK_OPENED,\r\n payload: {lookOpened, isMobile, shopPageOpened}\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 = [\r\n \"lixilAR3DUrls\",\r\n \"thirdPartyAR3DUrls\",\r\n \"lixilQRCode\",\r\n \"thirdPartyQRCode\",\r\n \"thirdPartyAR3DMetaData\",\r\n];\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 newShape.setOriginalPointsCoords(newShape.getPointsCoords());\r\n\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_LIXIL_SERVERS, 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\nexport const getDbFeatureProperty = (property) => {\r\n if (IS_LIXIL_SERVERS) {\r\n return property\r\n }\r\n switch (property) {\r\n case \"lixilAvailableQty\":\r\n return \"thirdPartyAvailableQty\"\r\n case \"lixilUPC\":\r\n return \"thirdPartyUPC\"\r\n case \"lixilVariantUrl\":\r\n return \"thirdPartyVariantUrl\"\r\n case \"lixilQRCode\":\r\n return \"thirdPartyQRCode\"\r\n case \"lixilProductCategory\":\r\n return \"thirdPartyProductCategory\"\r\n case \"lixilProductSubCategory\":\r\n return \"thirdPartyProductSubCategory\"\r\n case \"lixilRequiredNotIncluded\":\r\n return \"thirdPartyRequiredNotIncluded\"\r\n case \"lixilCertifications\":\r\n return \"thirdPartyCertifications\"\r\n case \"lixilAR3DUrls\":\r\n return \"thirdPartyAR3DUrls\"\r\n default:\r\n return property\r\n }\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[getDbFeatureProperty(\"lixilAvailableQty\")] > 0)\r\n }\r\n return feature.dbFeature[getDbFeatureProperty(\"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","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","// 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\nexport const SET_SEARCH_NAMES_REQUESTED = 'SET_SEARCH_NAMES_REQUESTED';\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\nexport const SET_SELECTED_HINGE = \"SET_SELECTED_HINGE\";\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 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 if (!feature._allFilters) {\r\n feature._allFilters = mergeFilterObjects(feature.dbFeature.filterValueIDs, feature.dbFeature.fabFilterValueIDs);\r\n }\r\n return feature._allFilters\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 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 features.filter(feature => {\r\n let unitedFilterValueIds = getAllFeatureFilters(feature);\r\n return newFiltersArray.every(filterObject => {\r\n if (filterObject.filterGroupId === \"partId\") {\r\n return filterObject.filterValues.some(filVal => filVal === feature.partId);\r\n }\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 {getDbFeatureProperty, 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[getDbFeatureProperty(\"lixilProductSubCategory\")] === currentFeature.dbFeature[getDbFeatureProperty(\"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[getDbFeatureProperty(\"lixilProductSubCategory\")] === currentFeature.dbFeature[getDbFeatureProperty(\"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[getDbFeatureProperty(\"lixilProductSubCategory\")] === currentFeature.dbFeature[getDbFeatureProperty(\"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\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 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 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, getDbFeatureProperty, 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_LIXIL_SERVERS, 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[getDbFeatureProperty(\"lixilProductSubCategory\")] !== checkFeature.dbFeature[getDbFeatureProperty(\"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 ((!IS_LIXIL_SERVERS || 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 const needToSaveCostReceipt = fabricatorState.receiptSettings && fabricatorState.receiptSettings.createCostReceipt;\r\n if ((needToRevertBackCostPrices || needToSaveCostReceipt) && !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 // console.log(\"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 if (needToSaveCostReceipt && !needToRevertBackCostPrices) {\r\n store.dispatch(toggleUseFabricatorCostPrices(false)); //the cost receipt is saved, back to retail\r\n }\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 if (needToSaveCostReceipt && !needToRevertBackCostPrices) {\r\n store.dispatch(toggleUseFabricatorCostPrices(false)); //the cost receipt is saved, back to retail\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 (Config.isDevMode()) {\r\n console.log(\"loadFiltersOnly\", response);\r\n }\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,\r\n arrayOfSkus = null,\r\n requestSharedFeatureNames = false,\r\n forVisualizer,\r\n searchString = \"\",\r\n axiosController = null) => {\r\n const featuresResponse = await JsonApi.getBathroomVisualizerFeatures(arrayOfIds, arrayOfSkus, requestSharedFeatureNames, forVisualizer, searchString, axiosController);\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,\r\n currentWizardItem = null,\r\n currentQuoteIndex = null,\r\n forceEraseAllWizardValues = false,\r\n) => {\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 || forceEraseAllWizardValues) {\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 || forceEraseAllWizardValues) {\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\r\nlet debounceTimerId = null;\r\nexport default function useDebounce(effect, dependencies, delay) {\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const callback = useCallback(effect, dependencies);\r\n\r\n useEffect(() => {\r\n debounceTimerId = setTimeout(callback, delay);\r\n return () => clearTimeout(debounceTimerId);\r\n }, [callback, delay]);\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\nimport {highlightStringOnSearch} from \"../../misc/misc2\";\r\n\r\nconst FeatureName = (props) => {\r\n const {feature, intl, fabricatorData, maxLength, filterGroups, useCollectionName, groheFiltersSearchText} = props;\r\n let stringFeatureName = getStringFeatureName(feature, intl.messages, intl.locale, fabricatorData, filterGroups, useCollectionName);\r\n const finalName = parseInt(maxLength) === maxLength ? truncate(stringFeatureName, maxLength) : stringFeatureName\r\n return highlightStringOnSearch(finalName, groheFiltersSearchText);\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 const {groheFiltersSearchText} = store.groheState;\r\n return {\r\n fabricatorData: store.fabricatorState,\r\n filterGroups,\r\n groheFiltersSearchText\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 loadAsBV6(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 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 {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 hardCodeIsHomeDepot = () => {\r\n const subDomains = [\"home_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 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 $ 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 * 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 {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 {getDbFeatureProperty, 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[getDbFeatureProperty(\"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\", \"FullWall\"];\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 this.setInflectionPoints = (points) => {\r\n this.inflectionPoints = points\r\n }\r\n this.getInflectionPoints = () => {\r\n return this.inflectionPoints\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 let intersection;\r\n try {\r\n intersection = polygonClipping.intersection([rect1], [rect2]);\r\n } catch (e) {\r\n void e;\r\n }\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, getDbFeatureProperty} 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[getDbFeatureProperty(\"lixilRequiredNotIncluded\")]) && feature.dbFeature[getDbFeatureProperty(\"lixilRequiredNotIncluded\")].length) {\r\n // todo remove\r\n //feature.dbFeature[getDbFeatureProperty(\"lixilRequiredNotIncluded\")].push(90068248, 90068237, 90068210, 90074461, 90068828, 90074449,\r\n // 90068281, 90068389, 90069955, 90069948, 90069950, 90071177, 90070070, 90069587 );\r\n // await getMissingFeatures(feature.dbFeature[getDbFeatureProperty(\"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[getDbFeatureProperty(\"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[getDbFeatureProperty(\"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 * returns feature's background styles\r\n * @param f {object} fValue\r\n * @param isColor {boolean}\r\n * @returns {object}\r\n */\r\nexport const getFilterValueBackGround = (f, isColor = false) => {\r\n if (f.icon) {\r\n return {backgroundImage: `url(https://s3.amazonaws.com/filter-images/${f.icon})`}\r\n } else if (isColor && f.value) {\r\n return {backgroundColor: f.value}\r\n }\r\n return null\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\r\nexport const getFilterTranslate = (f, intl) => {\r\n const displayTrimmed = f.displayText ? f.displayText.trim() : \"\";\r\n const valueTrimmed = f.value ? f.value.trim() : \"\";\r\n\r\n return displayTrimmed && intl.messages[displayTrimmed]\r\n ? intl.formatMessage({id: displayTrimmed})\r\n : valueTrimmed && intl.messages[valueTrimmed]\r\n ? intl.formatMessage({id: valueTrimmed})\r\n : displayTrimmed || valueTrimmed || \"\"\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 CABINET_FILTER_NAMES,\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, setSelectedHinge} 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.hinge) {\r\n itemClickCallback = (e, feature) => {\r\n store.dispatch(setSelectedHinge(feature.dbFeature.id));\r\n\r\n const shapes = workspace.getShapesWithoutAttachedResources();\r\n for (const shape of shapes) {\r\n shape.shapeCabinet.deleteAttachedFeatures(CABINET_FILTER_NAMES.hinges);\r\n shape.shapeCabinet.generateAttachedFeatures(CABINET_FILTER_NAMES.hinges);\r\n }\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, searchString = \"\", axiosController = null) {\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 const payload = searchString\r\n ? {\"Search\": [searchString]}\r\n : arrayOfSkus\r\n ? requestSharedFeatureNames ? {sharedFeatureNames: arrayOfSkus} : {skus: arrayOfSkus}\r\n : {Ids: arrayOfIds};\r\n if (axiosController) {\r\n return AxiosInstance.post(baseUrl, payload, {signal: axiosController.signal})\r\n }\r\n return _post(baseUrl, payload);\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 = null) {\r\n // fabricatorId returns fabricator filters only! QCDES-6413 issue\r\n return _get(fabricatorId\r\n ? `${_getUrlBase()}/api/public/filterGroups/${fabricatorId}`\r\n : `${_getUrlBase()}/api/public/filterGroups`\r\n );\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, getDbFeatureProperty} 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[getDbFeatureProperty(\"lixilProductCategory\")] || \"\", // \"Apparel\",\r\n item_category2: feature.dbFeature[getDbFeatureProperty(\"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 {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 React from \"react\";\r\n\r\nexport 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\r\n/**\r\n * highlights search text in the name\r\n * @param finalName {string}\r\n * @param searchText {string}\r\n * @return {string}\r\n */\r\nexport const highlightStringOnSearch = (finalName, searchText) => {\r\n if (!searchText) {\r\n return finalName\r\n }\r\n const escapedSearch = searchText.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n const regex = new RegExp(escapedSearch, \"gi\"); // Case-insensitive search\r\n return {\r\n return `${match}`\r\n })\r\n }}/>\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\r\nexport const setSelectedHinge = (selectedHinge) => ({\r\n type: types.SET_SELECTED_HINGE,\r\n payload: {selectedHinge}\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 {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 * @param allDisplayLogicCartItems {array}\r\n * @return {object} // {quantity, isMatching}\r\n */\r\nexport default function featureIsMatchingDisplayLogic(feature, cartItems = [], currentQuote = 0, allWizardsValues, allDisplayLogicCartItems = []) {\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\r\n && !feature.notAvailableInVisualizer // it means that this feature has layers! and should use filtering by room layout, size, etc. ASHS toilet issue\r\n && feature.getParent && feature.matchesMetaForArrayOfConditions // just to test methods\r\n && allDisplayLogicCartItems.some(cartItem => {\r\n return cartItem.cartFeature\r\n && cartItem.cartFeature.dbFeature\r\n && (cartItem.cartFeature.dbFeature.sharedFeatureName === feature.dbFeature.sharedFeatureName)\r\n && (cartItem.cartFeature.dbFeature.groupName === feature.dbFeature.groupName)\r\n && cartItem.cartFeature.dbFeature.id && feature.dbFeature.id\r\n && (cartItem.cartFeature.dbFeature.id !== feature.dbFeature.id)\r\n }) // there are multiple types of this feature, check this one for the metadata\r\n ) {\r\n const featureGroup = feature.getParent();\r\n visible = feature.matchesMetaForArrayOfConditions(featureGroup.getArrayOfConditions());\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 storeState.cartState.displayLogicCartItems,\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","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\r\nexport function getPerpendicularPoint(basePoint, linePoint, distance, isLeft) {\r\n const dx = linePoint.x - basePoint.x;\r\n const dy = linePoint.y - basePoint.y;\r\n\r\n const length = Math.sqrt(dx * dx + dy * dy);\r\n const unitDx = dx / length;\r\n const unitDy = dy / length;\r\n\r\n const perpDx = -unitDy;\r\n const perpDy = unitDx;\r\n\r\n return {\r\n x: basePoint.x + (isLeft ? -perpDx : perpDx) * distance,\r\n y: basePoint.y + (isLeft ? -perpDy : perpDy) * distance\r\n };\r\n}\r\n\r\n// Returns a point offset at 'offsetDistance' perpendicular\r\n// to the segment (base -> line). direction=+1 => left, -1 => right\r\nexport function getPerpOffset(basePoint, linePoint, offsetDist, dir) {\r\n const dx = linePoint.x - basePoint.x;\r\n const dy = linePoint.y - basePoint.y;\r\n const len = Math.sqrt(dx * dx + dy * dy);\r\n if (len < 1e-12) {\r\n // Degenerate segment\r\n return { ...basePoint };\r\n }\r\n // Unit direction\r\n const ux = dx / len;\r\n const uy = dy / len;\r\n\r\n // direction=+1 => offset to left => (-uy, ux)\r\n // direction=-1 => offset to right => (uy, -ux)\r\n const perpX = -uy * dir;\r\n const perpY = ux * dir;\r\n\r\n return {\r\n x: basePoint.x + perpX * offsetDist,\r\n y: basePoint.y + perpY * offsetDist\r\n };\r\n}\r\n\r\n\r\n// Returns line equation A x + B y = C\r\nexport function getLineEquation(p1, p2) {\r\n const A = p2.y - p1.y;\r\n const B = p1.x - p2.x;\r\n const C = A * p1.x + B * p1.y;\r\n return { A, B, C };\r\n}\r\n\r\n// Intersection of two lines\r\nexport function calculateIntersection(line1, line2) {\r\n const { A: A1, B: B1, C: C1 } = line1;\r\n const { A: A2, B: B2, C: C2 } = line2;\r\n const det = A1 * B2 - A2 * B1;\r\n if (Math.abs(det) < 1e-12) {\r\n // Parallel or coincident\r\n return null;\r\n }\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// Returns angle in degrees at \"curr\" formed by (prev->curr) and (curr->next).\r\n// Range: [0..360)\r\nexport function getAngleBetweenSegments(prev, curr, next) {\r\n const v1x = prev.x - curr.x;\r\n const v1y = prev.y - curr.y;\r\n const v2x = next.x - curr.x;\r\n const v2y = next.y - curr.y;\r\n\r\n const dot = v1x * v2x + v1y * v2y;\r\n const cross = v1x * v2y - v1y * v2x;\r\n const len1 = Math.sqrt(v1x * v1x + v1y * v1y);\r\n const len2 = Math.sqrt(v2x * v2x + v2y * v2y);\r\n\r\n if (len1 < 1e-12 || len2 < 1e-12) {\r\n return 0;\r\n }\r\n\r\n let cosVal = dot / (len1 * len2);\r\n if (cosVal > 1) cosVal = 1;\r\n if (cosVal < -1) cosVal = -1;\r\n\r\n let angleRad = Math.acos(cosVal);\r\n let angleDeg = (angleRad * 180) / Math.PI;\r\n\r\n // If cross < 0 => reflex angle\r\n if (cross < 0) {\r\n angleDeg = 360 - angleDeg;\r\n }\r\n return angleDeg;\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\r\nexport function areLinesParallel(line1, line2, epsilon = 1e-6) {\r\n const dx1 = line1.to.x - line1.from.x;\r\n const dy1 = line1.to.y - line1.from.y;\r\n\r\n const dx2 = line2.to.x - line2.from.x;\r\n const dy2 = line2.to.y - line2.from.y;\r\n\r\n const cross = dx1 * dy2 - dy1 * dx2;\r\n\r\n return Math.abs(cross) < epsilon;\r\n}\r\n\r\nexport function getClosestLineToPoint(lines, point) {\r\n let closest = null;\r\n let minDist = Infinity;\r\n\r\n for (const line of lines) {\r\n const center = {\r\n x: (line.from.x + line.to.x) / 2,\r\n y: (line.from.y + line.to.y) / 2,\r\n };\r\n\r\n const dx = point.x - center.x;\r\n const dy = point.y - center.y;\r\n const dist = dx * dx + dy * dy; // square of distance\r\n\r\n if (dist < minDist) {\r\n minDist = dist;\r\n closest = line;\r\n }\r\n }\r\n\r\n return closest;\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\nimport TubLiner from \"../subparts/showerTubCombo/tubLiner\";\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.tubLiner = 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\", \"Tub 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 \"Tub Liner\":\r\n relatedItemName = \"tubLiner\";\r\n RelatedItemClass = TubLiner;\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","//********* 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, paymentState} = 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 paymentState,\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","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","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 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 const _searchText = trim(searchText.toLowerCase());\r\n return arrayToFilter.filter(feature => {\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.dbFeature.sku || \"\").toLowerCase();\r\n const customDisplayName = feature.getFeatureName().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 storeState.cartState.displayLogicCartItems,\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 {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 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 $ 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 store from \"../../../../../../store\";\r\nimport workspace from \"../workspace\";\r\nimport sqftShapeManager from \"../../store/sqftShapeManager\";\r\nimport Rectangle from \"../shapes/layouts/rectangle\";\r\nimport {CABINET_FILTER_NAMES, 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\r\n const shape = workspace.getShapeById(shapeId);\r\n const reduxState = store.getState();\r\n if (shape && shape.shapeCabinet && reduxState.sqftResourceState.selectedHinge) {\r\n shape.shapeCabinet.deleteAttachedFeatures(CABINET_FILTER_NAMES.hinges);\r\n shape.shapeCabinet.generateAttachedFeatures(CABINET_FILTER_NAMES.hinges);\r\n }\r\n\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 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 {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, getDbFeatureProperty} 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[getDbFeatureProperty(\"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\nimport workspace from \"../components/canvas/core/workspace\";\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 return workspace.getShapeById(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 {getBvFeatures, getBvGroupFeatures} from \"./server-api\";\r\nimport {getCurrentLayout} from \"../bvcomponents/appLayout\";\r\nimport {setAlreadyRequestedNames} from \"../actions/filtersFunctions\";\r\nimport store from \"../store\";\r\nimport Config from \"../config\";\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\r\n/**\r\n * @param searchText {string}\r\n * @param setShowLoader {function}\r\n */\r\nexport const searchAllProductsRequest = async (searchText, setShowLoader) => {\r\n if (axiosController) {\r\n axiosController.abort();\r\n }\r\n if (!searchText || searchText.length < 3) {\r\n return Promise.resolve()\r\n }\r\n const {alreadyRequestedNames} = store.getState().filterState;\r\n if (alreadyRequestedNames.some(word => searchText.includes(word))) { // for example, we request Colo, but already had Col\r\n return Promise.resolve()\r\n }\r\n setShowLoader(true);\r\n if (AbortController) {\r\n axiosController = new AbortController();\r\n }\r\n const layout = getCurrentLayout();\r\n const response = await getBvFeatures(null, null, false, layout.visualizerType, searchText, axiosController)\r\n if (response && response.data) {\r\n if (Config.isDevMode()) {\r\n console.log(\"search response\", response.data);\r\n }\r\n layout.loadNewFeatures(response.data);\r\n }\r\n\r\n store.dispatch(setAlreadyRequestedNames(searchText));\r\n\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\nimport {removeLoadingElements} from \"../../loadingLogic\";\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 this.firstLayersAreLoaded = false;\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 } else {\r\n removeLoadingElements(\"Canvas\");\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\r\n ? this.updateGliaCanvasImage\r\n : removeLoadingElements.bind(this, \"Canvas\"));\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 if (!this.firstLayersAreLoaded) {\r\n this.firstLayersAreLoaded = true;\r\n removeLoadingElements(\"Canvas\");\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 const {language} = store.serverState;\r\n\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 language,\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.5`);\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","//********* 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\r\nexport const setAlreadyRequestedNames = (searchText) => ({\r\n type: types.SET_SEARCH_NAMES_REQUESTED,\r\n payload: searchText\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() || isMobile)\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.isMobile || 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 const {isMobile, shareUrl} = store.serverState;\r\n return {\r\n isMobile,\r\n shareUrl,\r\n fabricatorData: store.fabricatorState,\r\n visualizerTutorialStep: store.tutorialState.visualizerTutorialStep,\r\n isPhoneNumberValidated: store.userState.isPhoneNumberValidated,\r\n userIsLoggedIn: store.userState.userIsLoggedIn,\r\n }\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\nimport {IS_DEALER_FLOW} from \"../../../config\";\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, paymentState} = props;\r\n\r\n const {View, Text} = window.ReactPdfRenderer;\r\n\r\n const customerName = IS_DEALER_FLOW && paymentState.shippingAddress && paymentState.shippingAddress.fullName\r\n ? paymentState.shippingAddress.fullName\r\n : assignQuotePopupCustomer\r\n ? assignQuotePopupCustomer.fullName\r\n : userInfo.firstName + (userInfo.lastName ? (\" \" + userInfo.lastName) : \"\");\r\n const customerEmail = IS_DEALER_FLOW\r\n ? \"\"\r\n : assignQuotePopupCustomer ? assignQuotePopupCustomer.email : userInfo.email || \"\";\r\n const customerPhone = IS_DEALER_FLOW ? \"\" : 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 mainAddress = IS_DEALER_FLOW ? paymentState.shippingAddress.address1 : userInfo.address1;\r\n const customerAddress = IS_DEALER_FLOW\r\n ? getAddressFromObject(paymentState.shippingAddress)\r\n : 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 && !IS_DEALER_FLOW;\r\n\r\n return (\r\n \r\n \r\n {messages[\"receipt.mainInfo.customerInformation\"]}\r\n {customerName}\r\n {mainAddress ? {mainAddress} : null}\r\n {customerAddress ? {customerAddress} : null}\r\n {customerEmail ? {customerEmail} : null}\r\n {customerPhone ? {customerPhone} : null}\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) {\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\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\nimport {expandLineAndClosestPoints} from \"./expandLineAndClosestPoints\";\r\nimport {expandLineLeftAndRightParts} from \"./expandLineLeftAndRightParts\";\r\nimport {getClosestLineToPoint} from \"../../../helpers/lineHelper\";\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\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 lines = shape.getLines();\r\n const inflectionPoints = shape.getInflectionPoints();\r\n if (inflectionPoints) {\r\n const startPoint = inflectionPoints[0];\r\n const endPoint = inflectionPoints[inflectionPoints.length - 1];\r\n const startingLine = getClosestLineToPoint(lines, startPoint);\r\n const endingLine = getClosestLineToPoint(lines, endPoint);\r\n\r\n if ([startingLine, endingLine].includes(line)) {\r\n expandLineAndClosestPoints(line, diff);\r\n return\r\n }\r\n }\r\n expandLineLeftAndRightParts(shape, line, diff);\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","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, {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, getFilterTranslate, getFilterValueBackGround} 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\") ? \"mobileMenu.filtersButton\" : 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={getFilterTranslate(f, this.props.intl)}/>\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 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, displayLogicCartItems);\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 if (actionCartItems[sameCartItemIndex].hasOwnProperty(\"isRemoved\")) {\r\n stateCartItem.isRemoved = actionCartItems[sameCartItemIndex].isRemoved;\r\n }\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 {baseAssetsPath} 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(baseAssetsPath + \"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 { connect } from \"react-redux\";\r\nimport {FormattedMessage, injectIntl} from \"react-intl\";\r\nimport PropTypes from \"prop-types\";\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 {searchAllProductsRequest, searchProductRequest} from \"../../../../../api/search-api\";\r\nimport {getCurrentLayout} from \"../../../../appLayout\";\r\nimport {updateNavigationCount} from \"../../../../../actions/lookFunctions\";\r\nimport {setNavigationLoading} from \"../../../../../actions/navigationFunctions\";\r\nimport useDebounce from \"../../../../../misc/helperHooks\";\r\n\r\nconst GroheFiltersSearchInput = (props) => {\r\n const {activeTheme, groheFiltersSearchText, setGroheFiltersSearchText, lookActiveCategory, updateNavigationCount,\r\n setNavigationLoading, propsFeatureGroup, shouldSearchInAllGroups} = props;\r\n\r\n const layout = getCurrentLayout();\r\n const featureGroup = propsFeatureGroup || layout.getFeatureGroupByPartId(lookActiveCategory);\r\n\r\n const setShowLoader = (ended) => {\r\n setNavigationLoading(ended);\r\n if (!ended) {\r\n updateNavigationCount();\r\n }\r\n }\r\n\r\n useDebounce(async () => {\r\n if (shouldSearchInAllGroups) {\r\n await searchAllProductsRequest(groheFiltersSearchText, setNavigationLoading); // mega request\r\n updateNavigationCount();\r\n return\r\n }\r\n if (featureGroup && !featureGroup.getRealFeaturesReceivedProperty()) {\r\n return searchProductRequest(featureGroup, groheFiltersSearchText, setShowLoader)\r\n }\r\n }, [groheFiltersSearchText], 800);\r\n\r\n const handleSearchInputChange = async (event) => {\r\n setGroheFiltersSearchText(event.currentTarget.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\nGroheFiltersSearchInput.propTypes = {\r\n shouldSearchInAllGroups: PropTypes.bool,\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 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 = (generatedFeatures = Object.values(CABINET_FILTER_NAMES)) => {\r\n const filtersToProcess = generatedFeatures;\r\n const { filterGroups } = store.getState().filterState;\r\n const feature = this.__shape.getFeature();\r\n\r\n if (feature) {\r\n // Loop through each filter defined in CABINET_FILTER_NAMES.\r\n for (const key in CABINET_FILTER_NAMES) {\r\n const filterKey = CABINET_FILTER_NAMES[key];\r\n // Process only if the current filter is in the list of filters to process.\r\n if (!filtersToProcess.includes(filterKey)) {\r\n continue;\r\n }\r\n // Retrieve the quantity for this filter.\r\n const quantity = +feature.getFeatureSavedFilterName(filterGroups, filterKey, filterKey);\r\n\r\n if (quantity) {\r\n // Process hinges feature.\r\n if (filterKey === CABINET_FILTER_NAMES.hinges) {\r\n const layout = getCurrentLayout();\r\n const hingesFeatureGroup = layout.getFeatureGroupByPartId(SQFT_FEATURES.hinge);\r\n if (hingesFeatureGroup) {\r\n // Choose active feature if available, otherwise use the first one.\r\n const handlesFeature = 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 // Process knobs feature.\r\n if (filterKey === 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\r\n if (selectedHandle) {\r\n handlesFeature = handlesFeatureGroup.features.find(feature =>\r\n feature.getFeatureName() === selectedHandle.getFeatureName()\r\n );\r\n } else {\r\n handlesFeature = handlesFeatureGroup.features.find(feature =>\r\n 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 }\r\n }\r\n }\r\n };\r\n\r\n // Function to delete attached features based on an optional array of filter values.\r\n // If the parameter is not provided, resources for all filters will be deleted.\r\n deleteAttachedFeatures = (deletedFeatures = Object.values(CABINET_FILTER_NAMES)) => {\r\n const filtersToDelete = deletedFeatures;\r\n\r\n // Delete hinges\r\n if (filtersToDelete.includes(CABINET_FILTER_NAMES.hinges)) {\r\n workspaceControllers.hinge.deleteAllResourcesForTheShape(this.__shape.id);\r\n }\r\n\r\n // Delete knobs\r\n if (filtersToDelete.includes(CABINET_FILTER_NAMES.knobs)) {\r\n workspaceControllers.handles.deleteAllResourcesForTheShape(this.__shape.id);\r\n }\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 { Point } from './Point.js';\r\n\r\n// This class represents a polygon as an array of Point objects.\r\nexport class PointsPolygon {\r\n constructor(points = []) {\r\n this.points = points;\r\n }\r\n\r\n // This method returns the polygon in a format suitable for polygon-clipping:\r\n // [ [ [x1, y1], [x2, y2], ... ] ]\r\n // A single polygon with one ring (outer boundary).\r\n toClippingFormat() {\r\n const ring = this.points.map((p) => [p.x, p.y]);\r\n return [[ring]];\r\n }\r\n\r\n // This static method converts polygon-clipping output (array of polygons)\r\n // back into an array of Polygon objects with Point inside.\r\n // polygonClipping returns something like:\r\n // [ [ [ [x1, y1], [x2, y2], ... ] ], [ [ [x3, y3], ... ] ] ]\r\n // i.e. array of polygons, each polygon is array of rings, each ring is array of coords.\r\n static fromClippingFormat(clippingOutput) {\r\n // We expect clippingOutput to be an array of polygons.\r\n // We'll convert each polygon's first ring into a Polygon instance.\r\n const polygons = [];\r\n\r\n for (const poly of clippingOutput) {\r\n // poly is [ [ [x1, y1], [x2, y2], ... ], [ ... (holes) ] ]\r\n // We'll take the outer ring = poly[0]\r\n if (!poly.length) continue;\r\n const outerRing = poly[0];\r\n const points = outerRing.map(\r\n ([x, y]) => new Point(x, y)\r\n );\r\n polygons.push(new PointsPolygon(points));\r\n }\r\n return polygons;\r\n }\r\n}\r\n","export class Point {\r\n constructor(x, y) {\r\n this.x = x;\r\n this.y = y;\r\n }\r\n}\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, {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 this.renderer.toneMapping = window.THREE.NeutralToneMapping;\r\n } else {\r\n //loadHDRMap(this.scene, this.renderer, HDR_MAP_LOADER.pmremGeneratorEXR);\r\n loadHDRMap(this.scene, this.renderer, HDR_MAP_LOADER.rgb);\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 setModelsSize = (modelsCenter) => {\r\n this.modelsSize = 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 this.renderer.toneMappingExposure = 0.75;\r\n if (!boxCenter) {\r\n console.error(\"boxCenter is not defined\");\r\n return;\r\n }\r\n\r\n const originalModelPosition = { x: -1.5, y: 0, z: -4.5 };\r\n const offsetX = boxCenter.x - originalModelPosition.x;\r\n const offsetZ = boxCenter.z - originalModelPosition.z;\r\n\r\n // 1. DirectionalLight (light_10)\r\n const dirLight1 = new window.THREE.DirectionalLight(0xffffff, 0.5);\r\n dirLight1.position.set(-1.135 + offsetX, 0.898, 5.486 + offsetZ);\r\n dirLight1.target = new window.THREE.Object3D();\r\n dirLight1.target.position.set(boxCenter.x, boxCenter.y, boxCenter.z);\r\n this.scene.add(dirLight1);\r\n this.scene.add(dirLight1.target);\r\n\r\n // 2. PointLight (1)\r\n const pointLight1 = new window.THREE.PointLight(0xffffff, 21.6, 0, 2);\r\n pointLight1.position.set(-3.317 + offsetX, 3.615, -2.885 + offsetZ);\r\n pointLight1.castShadow = true;\r\n this.scene.add(pointLight1);\r\n\r\n // 3. Второй DirectionalLight\r\n const dirLight2 = new window.THREE.DirectionalLight(0xffffff, 1);\r\n dirLight2.position.set(-6.846 + offsetX, 3.330, 3.781 + offsetZ);\r\n dirLight2.target = new window.THREE.Object3D();\r\n dirLight2.target.position.set(boxCenter.x, boxCenter.y, boxCenter.z);\r\n this.scene.add(dirLight2);\r\n this.scene.add(dirLight2.target);\r\n\r\n // 4. PointLight (2)\r\n const pointLight2 = new window.THREE.PointLight(0xffffff, 44, 6.36, 2);\r\n pointLight2.position.set(5.044 + offsetX, 0.540, -2.136 + offsetZ);\r\n pointLight2.castShadow = true;\r\n this.scene.add(pointLight2);\r\n\r\n // 5. PointLight (light_9)\r\n const pointLight3 = new window.THREE.PointLight(0xffffff, 7.96, 0, 2.24);\r\n pointLight3.position.set(-1.651 + offsetX, 2.851, -3.092 + offsetZ);\r\n pointLight3.castShadow = true;\r\n this.scene.add(pointLight3);\r\n }\r\n\r\n addLightOld(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.isLight));\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, {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, shopPageOpened} = 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 const {shopPageOpened} = store.shopState;\r\n return {\r\n selectedFilters,\r\n shopPageOpened,\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[getDbFeatureProperty(\"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