{"version":3,"file":"static/js/484.6c1d4914.chunk.js","mappings":"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BACP+gF,SAAU,CACN32D,EAAG,CAAE42D,cAAe,wBACpB72D,EAAG,CAAE62D,cAAe,WAG5BrsE,GAAI,IACG8rE,EACHzgF,MAAO,yBACP+gF,SAAU,CACN32D,EAAG,CAAE42D,cAAe,2BACpB72D,EAAG,CAAE62D,cAAe,WAIhCS,oCAAqC,CACjC7sE,GAAI,IACG60D,EACHzpE,MAAO,iBACP+gF,SAAU,CACN32D,EAAG,CAAE42D,cAAe,wBACpB72D,EAAG,CAAE62D,cAAe,WAG5BrsE,GAAI,IACG80D,EACHzpE,MAAO,gBACP+gF,SAAU,CACN32D,EAAG,CAAE42D,cAAe,2BACpB72D,EAAG,CAAE62D,cAAe,WAIhCU,mCAAoC,CAChC9sE,GAAI,IACG60D,EACHzpE,MAAO,iBACP+gF,SAAU,CACN32D,EAAG,CAAE42D,cAAe,wBACpB72D,EAAG,CAAE62D,cAAe,WAG5BrsE,GAAI,IACG80D,EACHzpE,MAAO,iBACP+gF,SAAU,CACN32D,EAAG,CAAE42D,cAAe,2BACpB72D,EAAG,CAAE62D,cAAe,WAIhCW,oCAAqC,CACjC/sE,GAAI,IACG60D,EACHzpE,MAAO,iBACP+gF,SAAU,CACN32D,EAAG,CAAE42D,cAAe,wBACpB72D,EAAG,CAAE62D,cAAe,WAG5BrsE,GAAI,IACG80D,EACHzpE,MAAO,gBACP+gF,SAAU,CACN32D,EAAG,CAAE42D,cAAe,2BACpB72D,EAAG,CAAE62D,cAAe,WAIhCY,qCAAsC,CAClChtE,GAAI,IACG60D,EACHzpE,MAAO,iBACP+gF,SAAU,CACN32D,EAAG,CAAE42D,cAAe,wBACpB72D,EAAG,CAAE62D,cAAe,cAG5BrsE,GAAI,IACG80D,EACHzpE,MAAO,gBACP+gF,SAAU,CACN32D,EAAG,CAAE42D,cAAe,2BACpB72D,EAAG,CAAE62D,cAAe,YAIhCa,oCAAqC,CACjCjtE,GAAI,IACG60D,EACHzpE,MAAO,iBACP+gF,SAAU,CACN32D,EAAG,CAAE42D,cAAe,wBACpB72D,EAAG,CAAE62D,cAAe,WAG5BrsE,GAAI,IACG80D,EACHzpE,MAA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","sources":["assets/images/PayAtt_logo_white.svg","Joyride/JoyridePayAtt.tsx","api/displayViewColletions/displayViewCollectionsAPI.ts","api/notifications/notificationsAPI.ts","api/passwordReset/index.ts","api/stampCards/Form/getStampCardCampaignStatsAPI.ts","builder/components/craft/BuilderComponents/ColorPicker.tsx","builder/constants/constants.ts","builder/utils/serialize.ts","builder/utils/helpers.ts","builder/utils/uploadToAWS.ts","generalComponents/Dialog/DialogActions.tsx","generalComponents/Status/NoContent/NoContent.tsx","generalComponents/UrlShortener/UrlShortener.tsx","generalComponents/hooks/useAsync.ts","generalComponents/hooks/useBlocker.ts","index.helpers.tsx","socket/usePortalSocket.events.tsx","socket/usePortalSocket.tsx","socket/usePortalSocket.context.tsx","api/notifications.tsx","api/jwtInterceptor.ts","generalComponents/MobileView/MobilePortraitWarning.tsx","generalComponents/Particles/presets/index.ts","generalComponents/Particles/Particles.tsx","views/Navigation/Header/Banners/banners.interfaces.ts","views/Navigation/Header/Banners/CampaignsDisabled.tsx","views/Navigation/Header/Banners/TestUserBanner.tsx","views/Navigation/Header/Banners/UnauthenticatedBanner.tsx","views/Navigation/Header/Banners/HeaderBanners.tsx","index.portal.tsx","routes/routes.helpers.tsx","builder/utils/useOutsideSelectionCleanup.tsx","builder/context/builderContext.tsx","builder/context/useBuilderContext.tsx","builder/components/craft/BuilderLayout/RenderBar.tsx","builder/components/craft/BuilderLayout/SettingsPanel.tsx","builder/components/craft/BuilderLayout/ToolboxDrawer/DeviceTypeSelector.tsx","builder/components/craft/BuilderLayout/ToolboxDrawer/Toolbox.ItemList.tsx","builder/utils/getCorrectPropForDevice.ts","builder/components/craft/BuilderComponents/AccordionItem.tsx","builder/components/craft/BuilderComponents/BuilderMuiComponents.ts","builder/components/craft/BuilderComponents/BuilderSlider.tsx","builder/components/craft/Settings/Alignment.settings.tsx","builder/components/craft/BuilderComponents/ImageUpload.tsx","builder/components/craft/Settings/Background.settings.tsx","builder/components/craft/Settings/Padding.settings.tsx","builder/components/craft/BuilderParts/BodyContainer/BodyContainer.tsx","builder/utils/useLiveUpdateProp.ts","builder/components/craft/BuilderParts/BodyContainer/BodyContainer.settings.tsx","builder/components/craft/BuilderComponents/Resizer.tsx","builder/components/craft/BuilderParts/Carousel/Draggable.tsx","builder/components/craft/BuilderParts/Carousel/DraggableList.tsx","builder/utils/arrayMove.ts","builder/components/craft/BuilderParts/Carousel/defaultSlides.ts","builder/components/craft/BuilderParts/Carousel/swiperFallback.ts","builder/components/craft/Settings/Decoration.settings.tsx","builder/components/craft/Settings/Margin.settings.tsx","builder/components/craft/Settings/Size.settings.tsx","builder/components/craft/BuilderParts/Carousel/Carousel.tsx","builder/components/craft/BuilderParts/Carousel/Carousel.settings.tsx","builder/components/craft/BuilderParts/Container/Container.settings.tsx","builder/components/craft/BuilderParts/Container/Container.tsx","builder/components/craft/Settings/TextDecoration.settings.tsx","builder/components/craft/Settings/Typography.settings.tsx","builder/components/craft/BuilderParts/Text/Text.settings.tsx","builder/components/craft/BuilderParts/StampCard/ProgressText.tsx","builder/components/craft/BuilderParts/StampCard/RewardText.tsx","builder/components/craft/BuilderParts/Text/Text.tsx","builder/utils/buildNode.ts","builder/components/craft/BuilderParts/Container/Grid/Container1x2.tsx","builder/components/craft/BuilderParts/Container/Grid/Container1x3.tsx","builder/components/craft/BuilderParts/Container/Grid/Container2x1.tsx","builder/components/craft/BuilderParts/Container/Grid/Container2x2.tsx","builder/components/craft/BuilderParts/Container/Grid/Container3x1.tsx","builder/components/craft/BuilderParts/Container/Grid/ContainerCustom1.tsx","builder/components/craft/BuilderParts/Container/Grid/ContainerCustom2.tsx","builder/components/craft/BuilderComponents/TextInputWithDescription.tsx","builder/components/craft/BuilderParts/ImageAndVideo/ImageAndVideo.settings.tsx","builder/components/craft/BuilderParts/ImageAndVideo/Logo.tsx","builder/components/craft/BuilderParts/ImageAndVideo/Image.tsx","builder/components/craft/BuilderParts/ImageAndVideo/YoutubeVideo.tsx","builder/components/craft/BuilderParts/NumberPad/templates.ts","builder/components/craft/BuilderParts/NumberPad/NumberPad.settings.tsx","builder/components/craft/BuilderParts/NumberPad/NumberPad.tsx","builder/components/craft/BuilderParts/QRCode/QRCode.tsx","builder/components/craft/BuilderParts/QRCode/QRCode.settings.tsx","builder/components/craft/BuilderParts/QRCodeUser/QRCodeUser.settings.tsx","builder/components/craft/BuilderParts/QRCodeUser/QRCodeUser.tsx","builder/components/craft/BuilderParts/PayattDisclaimer.tsx","builder/components/craft/BuilderLayout/ToolboxDrawer/svgIcons.tsx","builder/components/craft/BuilderLayout/ToolboxDrawer/useToolboxComponentTree.ts","builder/components/craft/BuilderLayout/ToolboxDrawer/useToolboxIntegratedComponentTree.ts","builder/components/craft/BuilderParts/StampCard/StampCard.settings.tsx","builder/components/craft/BuilderParts/StampCard/StampCardNewJoin.tsx","builder/components/craft/BuilderParts/StampCard/StampCardProgress.tsx","builder/components/craft/BuilderParts/StampCard/StampCardReward.tsx","builder/components/craft/BuilderLayout/ToolboxDrawer/useToolboxStampCardComponentTree.ts","builder/components/craft/BuilderLayout/ToolboxDrawer/Toolbox.tsx","builder/components/craft/BuilderLayout/TopBar/RollBackDialog.tsx","builder/components/craft/BuilderLayout/TopBar/SaveDialog.tsx","builder/components/craft/BuilderLayout/TopBar/ChangeViewDialog.tsx","builder/components/craft/BuilderLayout/TopBar/QuitDialog.tsx","builder/components/craft/BuilderLayout/TopBar/TopBar.templateSelector.tsx","builder/components/craft/BuilderLayout/TopBar/TopBar.tsx","assets/images/PayAtt_logo_black.svg","builder/components/craft/BuilderParts/PoweredByPayatt/ColorAndPosition.settings.tsx","builder/components/craft/BuilderParts/PoweredByPayatt/PoweredByPayatt.settings.tsx","builder/components/craft/BuilderParts/PoweredByPayatt/PoweredByPayatt.tsx","builder/Builder.tsx","routes/routeDefinitions/builder.routes.tsx","generalComponents/Footer/Footer.tsx","views/Navigation/Header/MerchantTitle.tsx","views/Navigation/Header/Userbox/Userbox.tsx","views/Navigation/Header/Buttons/LanguageSelect/LanguageSelect.tsx","views/Navigation/Header/Buttons/Notifications/notification.popper.tsx","views/Navigation/Header/Buttons/Notifications/notifications.list.tsx","views/Navigation/Header/Buttons/Notifications/notifications-center.tsx","views/Navigation/Header/Buttons/Buttons.tsx","views/Navigation/Header/Header.tsx","generalComponents/PayAttLogo.tsx","views/Navigation/Sidebar/SidebarMenu/helpers.tsx","views/Navigation/Sidebar/SidebarMenu/styled.ts","views/Navigation/Sidebar/SidebarMenu/ManagementSection.tsx","views/Navigation/Sidebar/SidebarMenu/OverviewSection.tsx","views/Navigation/Sidebar/SidebarMenu/SidebarMenu.tsx","views/Navigation/Sidebar/Sidebar.tsx","views/Navigation/Navigation.tsx","routes/routeDefinitions/contact.routes.tsx","views/Home/GridLayout.tsx","views/Home/HomepageHeader.tsx","views/Home/JoyrideIntroduction/Main/Home.JoyrideIntro.tsx","views/Home/Home.tsx","views/Home/styles.ts","routes/routeDefinitions/home.routes.tsx","api/intelliSms/intelliSms.api.ts","api/intelliSms/intelliSms.interfaces.ts","views/Management/settings/IntelliSms/IntelliSms.ConfirmDialog.tsx","views/Management/settings/IntelliSms/IntelliSms.toasts.tsx","views/Management/settings/IntelliSms/IntelliSms.ChangeLanguage.tsx","views/Management/settings/IntelliSms/IntelliSms.Header.tsx","views/Management/settings/IntelliSms/IntelliSms.tsx","routes/routeDefinitions/management.routes.tsx","routes/routeDefinitions/smsCampaign.routes.tsx","routes/routeDefinitions/stampCard.routes.tsx","routes/routeDefinitions/dashboard.routes.tsx","routes/routeDefinitions/displayViews.routes.tsx","views/Login/helpers.ts","generalComponents/ContractBlocker/ContractBlocker.tsx","views/Login/LoginForm.tsx","views/Login/Login.tsx","views/ResetPassword/ResetPassword.tsx","views/ResetPassword/newPassword/NewPassword.tsx","routes/AuthRoute.tsx","routes/routes.tsx","store/features/auth/actions.tsx","store/locale.ts","store/store.exports.ts","store/store.populate.ts","utils/global.constants.ts","utils/smsLength.ts","views/Dashboard/Contexts/BreakpointsContext/BreakpointsContext.tsx","views/Dashboard/Contexts/DashboardSelectionContext/DashboardSelectionContext.tsx","views/Dashboard/Contexts/GlobalSettingsContext/GlobalSettingContext.tsx","views/Dashboard/Contexts/GlobalSettingsContext/utils.ts","views/Dashboard/Contexts/GridItemContext/useGridItems.ts","views/Dashboard/Contexts/GridItemContext/GridItemContext.tsx","views/Dashboard/Contexts/StampCardCampaignStatsContext/StampCardCampaignStatsContext.tsx","views/Dashboard/Dashboard.utils.tsx","views/Home/JoyrideIntroduction/Settings/Home.JoyrideWidgetMenuIntro.tsx","views/Dashboard/Interfaces/Dashboard.layout.ts","views/Dashboard/GlobalSettings/GlobalSettings.SelectBackgroundImage.tsx","views/Dashboard/GlobalSettings/MenuSections/DangerZone/DangerZone.ConfirmDeleteModal.tsx","views/Dashboard/GlobalSettings/MenuSections/DangerZone/DangerZone.DeleteButton.tsx","views/Dashboard/GlobalSettings/MenuSections/DashboardSettings/DashboardSettings.SizeItem.tsx","views/Dashboard/GlobalSettings/MenuSections/DashboardSettings/DashboardSettings.TitleItem.tsx","views/Dashboard/GlobalSettings/MenuSections/DashboardSettings/DashboardSettings.tsx","views/Dashboard/GlobalSettings/interfaces.ts","views/Dashboard/Widgets/PayAttWidgets/PayAttWidgets.specifications.ts","views/Dashboard/GlobalSettings/MenuSections/WidgetMenuSection/WidgetMenuSection.LayoutMap.ts","views/Dashboard/GlobalSettings/MenuSections/WidgetMenuSection/WidgetMenuSection.tsx","views/Dashboard/GlobalSettings/GlobalSettings.tsx","views/Dashboard/Widgets/MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.filters.ts","views/Dashboard/Contexts/ChartSettingsContext/ChartSettingsContext.tsx","views/Dashboard/Grid/ResponsiveGridLayout.TopBar.tsx","views/Dashboard/Widgets/MongoDBWidgets/MongoDBWidgets.ChartWithSettings.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartSpecification/ChartSpecification.GetChartId.ts","views/Dashboard/Widgets/MongoDBWidgets/MongoDBWidgets.Chart.tsx","views/Dashboard/Widgets/MongoDBWidgets/MongoDBWidgets.GenerateChartFromContext..tsx","views/Dashboard/Widgets/PayAttWidgets/Calculations/Calculations.BackgroundImage.tsx","views/Dashboard/Widgets/PayAttWidgets/Calculations/Helpers/Calculations.InfoButton.tsx","views/Dashboard/Widgets/PayAttWidgets/Calculations/Helpers/Calculations.styledComponents.tsx","views/Dashboard/Widgets/PayAttWidgets/Calculations/Helpers/Calculations.InlineTextField.tsx","views/Dashboard/Widgets/PayAttWidgets/Calculations/IncreasedRevenueBasedOnSMSCampaign.tsx","views/Dashboard/Widgets/PayAttWidgets/Calculations/Helpers/Calculations.SideImage.tsx","views/Dashboard/Widgets/PayAttWidgets/Calculations/Calculation.SideImageCalclulation.tsx","views/Dashboard/Widgets/PayAttWidgets/Calculations/Helpers/Calculations.GetImageUrl.tsx","views/Dashboard/Widgets/PayAttWidgets/Calculations/IncreasedRevenueBasedOnStampCardCampaign.tsx","views/Dashboard/Widgets/PayAttWidgets/Calculations/IncreasedRevenueBasedOnVisits.tsx","views/Dashboard/Widgets/PayAttWidgets/PayAttWidgets.GridItemWrapper.tsx","views/Dashboard/Widgets/PayAttWidgets/Sentences/NumberOfStampsAndStampCards.tsx","views/Dashboard/Widgets/PayAttWidgets/SmsCampaign/SendSMSCampaign.tsx","views/Dashboard/Grid/Styling/StyledGridItems.tsx","views/Dashboard/Grid/ResponsiveGridLayout.CreateGridItem.tsx","views/Dashboard/Grid/ResponsiveGridLayout.saveCreate.ts","views/Dashboard/Grid/ResponsiveGridLayout.useContainerRect.tsx","views/Dashboard/Grid/ResponsiveGridLayout.utils.ts","views/Dashboard/Interfaces/Dashboard.constants.ts","views/Dashboard/JoyrideIntroductions/Dashboard.Joyride.Steps.tsx","views/Dashboard/JoyrideIntroductions/Dashboard.Joyride.context.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartFilters/SettingsMenu.MenuTitles.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartFilters/SettingsMenu.ApplySettingsButton.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartFilters/SettingsMenu.FilterRow.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartFilters/SettingsMenu.NoFilterSettings.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartFilters/Utils/DateSelector/DateSelector.DateRangePicker.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartFilters/Utils/DateSelector/DateSelector.ForeverButton.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartFilters/Utils/DateSelector/DateSelector.TrailingDateRangePicker.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartFilters/Utils/DateSelector/DateSelector.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartFilters/Utils/StampCardCampaignSelector.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartFilters/Utils/VenueSelector.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartFilters/SettingsMenu.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartFilters/Utils/DateSelector/DateSelector.constants.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartFilters/Utils/DateSelector/DateSelector.helpers.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartFilters/Utils/DateSelector/DateSelector.interfaces.tsx","views/Dashboard/Widgets/MongoDBWidgets/ChartSpecification/ChartSpecification.DefaultLayouts.ts","views/Dashboard/Widgets/MongoDBWidgets/ChartSpecification/ChartSpecification.MongoDBRenderingSpecs.ts","views/Dashboard/Widgets/MongoDBWidgets/ChartSpecification/ChartSpecification.Filters.ts","views/Dashboard/Widgets/MongoDBWidgets/ChartSpecification/ChartSpecification.ts","views/Dashboard/Widgets/MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.chartSpecification.ts","views/Dashboard/Widgets/PayAttWidgets/PayAttWidgets.DefaultLayouts.ts","views/Dashboard/Widgets/helpers.tsx","views/Home/JoyrideIntroduction/Main/Home.WelcomeStep.Tooltip.tsx","views/Home/JoyrideIntroduction/Main/Home.Joyride.Steps.tsx","views/Home/JoyrideIntroduction/Settings/Home.JoyrideWidgetMenu.Steps.tsx","views/Home/JoyrideIntroduction/Settings/Home.JoyrideWidgetMenu.context.tsx","views/IntelliSms/SMSBox.tsx","views/IntelliSms/context/SMSCampaignContext.tsx","views/IntelliSms/dialogs/EventPopper/EventPopper.actions.tsx","views/IntelliSms/dialogs/EventPopper/EventPopper.content.tsx","views/IntelliSms/dialogs/EventPopper/EventPopper.header.tsx","views/IntelliSms/dialogs/EventPopper/EventPopper.recipientFilters.tsx","views/IntelliSms/dialogs/EventPopper/EventPopper.tsx","views/IntelliSms/dialogs/EventPopper/helpers.tsx","views/IntelliSms/dialogs/Filters/Filters.actions.tsx","generalComponents/IOSSwitch/IOSSwitch.tsx","views/IntelliSms/dialogs/Filters/Filters.everyone.tsx","views/IntelliSms/dialogs/Filters/Filters.header.tsx","views/IntelliSms/dialogs/Filters/Filters.FilterInfoPopup.tsx","views/IntelliSms/dialogs/Filters/Filters.stampCards.tsx","views/IntelliSms/dialogs/Filters/Filters.timeIntervalDialog.tsx","views/IntelliSms/dialogs/Filters/Filters.targetGroup.tsx","views/IntelliSms/dialogs/Filters/Filters.venues.tsx","views/IntelliSms/helpers/notAllowedSMSFiltersCombinations.ts","views/IntelliSms/helperHooks/useFiltersDialog.ts","views/IntelliSms/dialogs/Filters/Filters.tsx","views/IntelliSms/dialogs/Filters/interfaces.ts","generalComponents/RRuleGenerator/EndSelector.tsx","generalComponents/RRuleGenerator/constants.ts","generalComponents/RRuleGenerator/IntervalSelector.tsx","generalComponents/RRuleGenerator/RepeatDaily.tsx","generalComponents/RRuleGenerator/useRRuleHelpers.tsx","generalComponents/RRuleGenerator/RepeatMonthly.tsx","generalComponents/ToggleButtonGroups/StyledToggleButtonGroup.tsx","generalComponents/RRuleGenerator/RepeatWeekly.tsx","generalComponents/RRuleGenerator/RRuleGenerator.tsx","views/IntelliSms/dialogs/RRuleSelector.tsx","views/IntelliSms/dialogs/SavedSuggestions.tsx","views/IntelliSms/dialogs/Summary/Summary.recipientFilters.tsx","views/IntelliSms/dialogs/Summary/Summary.actions.confirmDialog.tsx","views/IntelliSms/dialogs/Summary/Summary.actions.tsx","views/IntelliSms/dialogs/Summary/Summary.excessWarning.tsx","views/IntelliSms/dialogs/Summary/Summary.header.tsx","views/IntelliSms/dialogs/Summary/Summary.skeleton.tsx","views/IntelliSms/dialogs/Summary/Summary.summary.tsx","views/IntelliSms/dialogs/Summary/Summary.tsx","views/IntelliSms/dialogs/Summary/helpers.ts","views/IntelliSms/dialogs/TimeSelector.tsx","views/IntelliSms/helperHooks/useSummaryDialog.ts","views/IntelliSms/helperHooks/useThreeBoxes.ts","views/IntelliSms/helpers/ColorIndicator.tsx","views/IntelliSms/helpers/KeyValueTypography.tsx","views/IntelliSms/helpers/MessageUrlSuffixes.tsx","views/IntelliSms/helpers/api.ts","views/IntelliSms/helpers/constants.ts","views/IntelliSms/helpers/helpers.tsx","views/IntelliSms/helpers/interfaces.ts","views/IntelliSms/helpers/sendSmsCampaign.tsx","views/IntelliSms/helpers/targetGroupEnums.ts","views/IntelliSms/helpers/toasts.tsx","views/IntelliSms/newCampaign/NewCampaign.ScheduleCalendar.constants.ts","views/IntelliSms/helperHooks/useCalendar.ts","views/IntelliSms/newCampaign/NewCampaign.ScheduleCalendar.tsx","views/IntelliSms/newCampaign/NewCampaign.menu.tsx","views/IntelliSms/overview/Joyride/Overview.Joyride.Steps.tsx","views/Navigation/Header/Context/ContextProvider.tsx","views/Navigation/Header/Context/useContextProvider.tsx","views/RegistrationDisplayViews/utils.ts","generalComponents/YoutubeEmbed/YoutubeEmbed.tsx","views/StampCardForm/UnsubcribedStampCardPage.tsx","views/StampCardForm/StampCardMenuContext.tsx"],"sourcesContent":["var _defs, _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgPayAttLogoWhite(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 194.57 33.344\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".cls-1{fill:#fff;}\"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_2\",\n \"data-name\": \"Layer 2\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_1-2\",\n \"data-name\": \"Layer 1\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M159.735,20.742a3.208,3.208,0,0,1-3.205,3.2h-1.321a3.208,3.208,0,0,1-3.205-3.2V9.385h9.812V6.725H152V1.243h-2.66V6.725h-3.19v2.66h3.19V20.742a5.871,5.871,0,0,0,5.865,5.865h1.321a5.871,5.871,0,0,0,5.866-5.865V17.789h-2.661Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M191.91,17.789v2.953a3.209,3.209,0,0,1-3.206,3.2h-1.32a3.209,3.209,0,0,1-3.206-3.2V9.385h9.812V6.725h-9.812V1.243h-2.66V6.725h-3.189v2.66h3.189V20.742a5.871,5.871,0,0,0,5.866,5.865h1.32a5.872,5.872,0,0,0,5.866-5.865V17.789Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M89.364,6.739l-6.59,17.714L75.836,6.739H72.794L81.5,27.812a6.81,6.81,0,0,1-.4.862,3.29,3.29,0,0,1-.612.781,3.175,3.175,0,0,1-.972.6,6.273,6.273,0,0,1-1.5.382,15.663,15.663,0,0,1-2.2.131v2.777a16.8,16.8,0,0,0,2.638-.179,8.679,8.679,0,0,0,1.923-.511,5.414,5.414,0,0,0,1.392-.809,5.514,5.514,0,0,0,1.013-1.081,7.5,7.5,0,0,0,.751-1.342q.321-.738.633-1.567l.44-1.117,7.837-20Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M50.535,6.185H45.819a5.708,5.708,0,0,0-5.7,5.7h2.66a3.045,3.045,0,0,1,3.042-3.041h4.716a4.343,4.343,0,0,1,4.339,4.339V17.2a2.817,2.817,0,0,0-.56-.61,4.2,4.2,0,0,0-1.2-.651,10.535,10.535,0,0,0-2.046-.5,20.291,20.291,0,0,0-3.113-.2q-1.306,0-2.461.052a12.97,12.97,0,0,0-2.128.26,6.774,6.774,0,0,0-1.733.608,3.846,3.846,0,0,0-1.3,1.111,5.014,5.014,0,0,0-.816,1.762,10.118,10.118,0,0,0-.279,2.561,5.6,5.6,0,0,0,.51,2.483,4.1,4.1,0,0,0,1.611,1.71,8.411,8.411,0,0,0,2.841.99,23.647,23.647,0,0,0,4.2.321,15.533,15.533,0,0,0,3.192-.269,5.245,5.245,0,0,0,1.815-.747,4.078,4.078,0,0,0,1.088-1.1c.16-.234.281-.422.379-.582v2.283h2.66V13.184A7.006,7.006,0,0,0,50.535,6.185ZM54.58,22.467A2.42,2.42,0,0,1,53.574,23.5a5.722,5.722,0,0,1-1.869.617,17.012,17.012,0,0,1-2.889.205q-2.285,0-3.664-.128a6.318,6.318,0,0,1-2.114-.488,1.828,1.828,0,0,1-.972-1,4.887,4.887,0,0,1-.238-1.67,4.76,4.76,0,0,1,.225-1.627,1.62,1.62,0,0,1,.876-.908,5.382,5.382,0,0,1,1.856-.394q1.2-.086,3.161-.085a27.962,27.962,0,0,1,3.29.162,7.666,7.666,0,0,1,2.141.522,2.465,2.465,0,0,1,1.156.934,2.638,2.638,0,0,1,.341,1.349v.1A3.243,3.243,0,0,1,54.58,22.467Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M116.714.01,104.833,26.678h2.912l2.743-6.157h16.2l2.744,6.157h2.912L120.46.01Zm-5.041,17.85,6.914-15.519L125.5,17.86Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M17.655,0H0V26.678H2.66V15.96l15-.02a5.873,5.873,0,0,0,5.858-5.865V5.865A5.872,5.872,0,0,0,17.655,0Zm3.2,10.075a3.21,3.21,0,0,1-3.2,3.205l-15,.02V2.66h15a3.208,3.208,0,0,1,3.2,3.205Z\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPayAttLogoWhite);\nexport default __webpack_public_path__ + \"static/media/PayAtt_logo_white.e39e6f0c8f6331d6b5d5d461dcc200f8.svg\";\nexport { ForwardRef as ReactComponent };","import { MutableRefObject, useRef } from 'react';\nimport Joyride, { CallBackProps, EVENTS, Props as JoyrideProps } from 'react-joyride';\nimport { Translate } from 'react-redux-i18n';\nimport { toast } from 'react-toastify';\n\nimport { Typography } from '@mui/material';\n\nimport { isPayAttError } from 'errorHandling/payattError';\nimport { updateShowIntro } from 'store/features/auth/authSlice';\nimport { CurrentUserShowIntroductionKeys, CurrentUserShowIntroductionSections } from 'store/features/auth/handlers';\nimport { introductionSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { AppDispatch, useAppDispatch } from 'store/store.exports';\n\nimport { NEXT_BUTTON_BG_COLOR } from './JoyridePayAtt.constants';\n\nexport const JOYRIDE_LOCALE = {\n back: ,\n close: ,\n last: ,\n next: ,\n open: ,\n skip: \n};\n\nexport const JOYRIDE_OPTIONS = {\n options: {\n arrowColor: '#fff',\n backgroundColor: '#fff',\n beaconSize: 36,\n overlayColor: 'rgba(0, 0, 0, 0.5)',\n primaryColor: '#f04',\n spotlightShadow: '0 0 15px rgba(0, 0, 0, 0.5)',\n textColor: '#333',\n zIndex: 10000\n },\n buttonNext: { backgroundColor: NEXT_BUTTON_BG_COLOR, color: '#fff', fontWeight: 'bold' },\n buttonBack: { color: '#000', fontWeight: 'bold' },\n buttonClose: { backgroundColor: 'red' },\n buttonSkip: { backgroundColor: '#dadada', borderRadius: '4px', color: '#c74600' }\n};\n\nconst handleJoyrideCallback = async (\n { status, type, action }: CallBackProps,\n introPage: CurrentUserShowIntroductionKeys,\n introSection: CurrentUserShowIntroductionSections,\n toastRef: MutableRefObject,\n dispatch: AppDispatch\n) => {\n const markIntroAsSeenInReduxAndDatabase = async () => {\n const introObj = introductionSelector(store.getState());\n\n const { payload } = await dispatch(\n updateShowIntro({ [introPage]: { ...introObj[introPage], [introSection]: false } })\n );\n\n if (!payload || isPayAttError(payload)) {\n console.error('Failed to notify backend that intro was completed');\n }\n };\n\n // Tour was skipped\n if (EVENTS.TOUR_END === type && action === 'skip') {\n // eslint-disable-next-line no-param-reassign\n toast.info(\n
\n \n \n \n
,\n { autoClose: 10000 }\n );\n\n setTimeout(() => {\n // eslint-disable-next-line no-param-reassign\n if (toastRef.current) {\n const toastContainer = toastRef.current.closest('.Toastify__toast-container') as HTMLDivElement;\n if (toastContainer) toastContainer.style.width = '400px';\n }\n }, 100);\n\n await markIntroAsSeenInReduxAndDatabase();\n }\n\n // Introduction tour is done\n if (status === 'finished') {\n await markIntroAsSeenInReduxAndDatabase();\n }\n};\n\nexport const JoyridePayAtt: React.FC<\n { introPage: CurrentUserShowIntroductionKeys; introSection: CurrentUserShowIntroductionSections } & Omit<\n JoyrideProps,\n 'run'\n > &\n Partial>\n> = ({\n introPage,\n introSection,\n callback,\n locale,\n styles,\n steps,\n continuous,\n showProgress,\n hideCloseButton,\n disableCloseOnEsc,\n disableOverlayClose,\n disableScrolling,\n run,\n ...rest\n}): JSX.Element | null => {\n const dispatch = useAppDispatch();\n\n const toastRef = useRef(null);\n\n return (\n {\n if (callback) callback(e);\n\n // Update DB when tour is complete\n handleJoyrideCallback(e, introPage, introSection, toastRef, dispatch);\n }}\n steps={steps}\n locale={locale || JOYRIDE_LOCALE}\n styles={styles || JOYRIDE_OPTIONS}\n run={typeof run === 'boolean' ? run : true}\n continuous={typeof continuous === 'boolean' ? continuous : true}\n showProgress={typeof showProgress === 'boolean' ? showProgress : true}\n hideCloseButton={typeof hideCloseButton === 'boolean' ? hideCloseButton : true}\n disableScrolling={typeof disableScrolling === 'boolean' ? disableScrolling : true}\n disableCloseOnEsc={typeof disableCloseOnEsc === 'boolean' ? disableCloseOnEsc : true}\n disableOverlayClose={typeof disableOverlayClose === 'boolean' ? disableOverlayClose : true}\n {...rest}\n />\n );\n};\n","import axios, { AxiosResponse } from 'axios';\n\nimport { BASE_URL } from 'api/helper';\nimport { DisplayViewCollection, DisplayViewCollectionTemplate, View } from 'builder/constants/types';\nimport { handleAxiosError, handleAxiosInvalidResponse } from 'errorHandling/handleResponse';\n\nconst API_ENDPOINT = `${BASE_URL}/views`;\n\nexport const getDisplayViewCollectionsAPI = async (): Promise> => {\n try {\n const response = await axios.get(`${API_ENDPOINT}`, {\n headers: { 'Content-Type': 'application/json' }\n });\n\n if (response.status >= 200 && response.status < 300) {\n return response;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const getDisplayViewCollectionsTemplatesAPI = async (): Promise<\n AxiosResponse\n> => {\n try {\n const response = await axios.get(`${API_ENDPOINT}/templates`, {\n headers: { 'Content-Type': 'application/json' }\n });\n\n if (response.status >= 200 && response.status < 300) {\n return response;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const updateOneViewAPI = async (body: {\n id: string;\n view: View;\n value: string;\n}): Promise<{ message: string }> => {\n const { id, view, value } = body;\n\n try {\n const response = await axios.patch(\n `${API_ENDPOINT}/${id}`,\n { view, value },\n {\n headers: { 'Content-Type': 'application/json' }\n }\n );\n\n if (response.status >= 200 && response.status < 300) {\n return response.data;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const updateViewCollectionByIdAPI = async (\n body: Partial\n): Promise<{ message: string }> => {\n const { id, ...rest } = body;\n\n try {\n const response = await axios.put(`${API_ENDPOINT}/${id}`, rest, {\n headers: { 'Content-Type': 'application/json' }\n });\n\n if (response.status >= 200 && response.status < 300) {\n return response.data;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const createDisplayViewCollectionAPI = async (body: {\n width: string;\n height: string;\n name: string;\n templateId: string;\n}): Promise<{ message: string }> => {\n try {\n const response = await axios.post(`${API_ENDPOINT}`, body, {\n headers: { 'Content-Type': 'application/json' }\n });\n\n if (response.status >= 200 && response.status < 300) {\n return response.data;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const getDisplayViewCollectionByIdAPI = async (id: string): Promise => {\n try {\n const response = await axios.get(`${API_ENDPOINT}/${id}`, {\n headers: { 'Content-Type': 'application/json' }\n });\n\n if (response.status >= 200 && response.status < 300) {\n return response.data;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const deleteDisplayViewCollectionByIdAPI = async (id: string): Promise => {\n try {\n const response = await axios.delete(`${API_ENDPOINT}/${id}`, {\n headers: { 'Content-Type': 'application/json' }\n });\n\n if (response.status >= 200 && response.status < 300) {\n return response.data;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const duplicateDisplayViewCollectionByIdAPI = async (\n id: string,\n newCollectionName: string\n): Promise => {\n try {\n const response = await axios.post(\n `${API_ENDPOINT}/duplicate/${id}`,\n { name: newCollectionName },\n {\n headers: { 'Content-Type': 'application/json' }\n }\n );\n\n if (response.status >= 200 && response.status < 300) {\n return response.data;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const updateLogoAPI = async ({\n id,\n logoUrl\n}: {\n id: string;\n logoUrl: string;\n}): Promise => {\n try {\n const response = await axios.patch(\n `${API_ENDPOINT}/update-logo/${id}`,\n { logoUrl },\n {\n headers: { 'Content-Type': 'application/json' }\n }\n );\n\n if (response.status >= 200 && response.status < 300) {\n return response.data;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const updateBackgroundBrightnessAPI = async ({\n id,\n brightness\n}: {\n id: string;\n brightness: number;\n}): Promise => {\n try {\n const response = await axios.patch(\n `${API_ENDPOINT}/update-brightness/${id}`,\n { brightness },\n {\n headers: { 'Content-Type': 'application/json' }\n }\n );\n\n if (response.status >= 200 && response.status < 300) {\n return response.data;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const updateDisplayViewCollectionBackgroundByIdAPI = async ({\n id,\n backgroundColor,\n backgroundImage\n}: {\n id: string;\n backgroundColor?: string;\n backgroundImage?: string;\n}): Promise => {\n const body = {} as { backgroundColor?: string; backgroundImage?: string };\n\n if (backgroundColor) {\n body.backgroundColor = backgroundColor;\n } else if (backgroundImage) {\n body.backgroundImage = backgroundImage;\n }\n\n try {\n const response = await axios.patch(`${API_ENDPOINT}/update-background/${id}`, body, {\n headers: { 'Content-Type': 'application/json' }\n });\n\n if (response.status >= 200 && response.status < 300) {\n return response.data;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const updateDisplayViewCollectionResolutionByIdAPI = async ({\n id,\n width,\n height\n}: {\n id: string;\n width: string;\n height: string;\n}): Promise => {\n try {\n const response = await axios.patch(\n `${API_ENDPOINT}/update-resolution/${id}`,\n { width, height },\n {\n headers: { 'Content-Type': 'application/json' }\n }\n );\n\n if (response.status >= 200 && response.status < 300) {\n return response.data;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n","import axios from 'axios';\n\nimport { BASE_URL } from 'api/helper';\nimport { handleAxiosError } from 'errorHandling/handleResponse';\nimport {\n NotificationsCenterItem,\n SingleNotification\n} from 'views/Navigation/Header/Buttons/Notifications/notifications.interfaces';\n\nexport type NotificationResponse = {\n notification: SingleNotification | undefined;\n};\n\nexport const checkNotificationsMilestonesAPI = async () => {\n try {\n return axios.get(`${BASE_URL}/notifications/check`);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const getLastFiftyNotificationsAPI = async () => {\n try {\n return axios.get<{ notifications: NotificationsCenterItem[] }>(`${BASE_URL}/notifications/`);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const markNotificationsAsSeenAPI = async (notificationsIds: any) => {\n try {\n return axios.post<{ message: string }>(`${BASE_URL}/notifications/mark`, { notificationsIds });\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n","import axios from 'axios';\n\nimport { BASE_URL } from 'api/helper';\nimport { handleAxiosError, handleAxiosInvalidResponse } from 'errorHandling/handleResponse';\nimport { payAttSuccess } from 'errorHandling/payattSuccess';\n\n// Portal\nconst API_ENDPOINT_GET_EMAIL = `${BASE_URL}/forgot-password`;\nconst API_ENDPOINT_INFO = `${BASE_URL}/password-reset-info`;\nconst API_ENDPOINT_RESET = `${BASE_URL}/reset-password`;\n\n// Stamp portal\nconst API_ENDPOINT_INFO_STAMP_PORTAL = `${BASE_URL}/stamp-portal/auth/password-reset-info`;\nconst API_ENDPOINT_GET_EMAIL_STAMP_PORTAL = `${BASE_URL}/stamp-portal/auth/forgot-password`;\nconst API_ENDPOINT_RESET_STAMP_PORTAL = `${BASE_URL}/stamp-portal/auth/reset-password`;\n\nexport const getResetEmail = async (email: string, stampPortal = false) => {\n try {\n const response = await axios.post(\n stampPortal ? API_ENDPOINT_GET_EMAIL_STAMP_PORTAL : API_ENDPOINT_GET_EMAIL,\n { email },\n { headers: { 'Content-Type': 'application/json' } }\n );\n\n if (response.status >= 200 && response.status < 300) {\n return payAttSuccess(response.data, response.status);\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const verifyToken = async (code: string, stampPortal = false): Promise => {\n try {\n const response = await axios.get(stampPortal ? API_ENDPOINT_INFO_STAMP_PORTAL : API_ENDPOINT_INFO, {\n params: { token: code }\n });\n\n if (response.status >= 200 && response.status < 300) {\n return true;\n }\n\n return false;\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const resetPassword = async (token: string, email: string, newPassword: string, stampPortal = false) => {\n const body = {\n token,\n email,\n newPassword\n };\n\n try {\n const response = await axios.post(stampPortal ? API_ENDPOINT_RESET_STAMP_PORTAL : API_ENDPOINT_RESET, body, {\n headers: { 'Content-Type': 'application/json' }\n });\n\n if (response.status >= 200 && response.status < 300) {\n return payAttSuccess(response.data, response.status);\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n","import axios from 'axios';\n\nimport { BASE_URL } from 'api/helper';\nimport { StampCardCampaignStats } from 'api/interfaces';\nimport { handleAxiosError, handleAxiosInvalidResponse } from 'errorHandling/handleResponse';\n\nexport const getStampCardCampaignStatsAPI = async ({ campaignId }: { campaignId: string }) => {\n try {\n return axios.get(`${BASE_URL}/stamp-cards/stats/${campaignId}`);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const getAllStampCardCampaignStatsAPI = async (): Promise => {\n try {\n const response = await axios.get(`${BASE_URL}/stamp-cards/stats`);\n\n if (response.data && response.status >= 200 && response.status < 300) {\n return response.data;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n","import { useEffect, useState } from 'react';\nimport { ColorResult, RGBColor, SketchPicker } from 'react-color';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box, Button, Collapse, Typography } from '@mui/material';\nimport { makeStyles } from '@mui/styles';\n\nimport { FlexBox, VerticalCenteredFlexBox } from 'generalComponents/BoxModifications';\nimport { contrastColor } from 'utils/contrastor';\nimport { convertRGBAToString, darkenOrLightenColor } from 'utils/utils';\n\nimport { cycleColors } from '../../../../store/features/colorPicker/colorPickerSlice';\nimport { colorPickerLastUsedColorsSelector } from '../../../../store/selectors';\nimport { store } from '../../../../store/store';\nimport { useAppDispatch } from '../../../../store/store.exports';\n\nconst useStyles = (color: string) =>\n makeStyles(() => {\n return {\n borderCSS: {\n border: '1px solid #808080',\n borderRadius: 50\n },\n colorPickerCSS: {\n margin: 5,\n padding: 20,\n borderRadius: 50,\n backgroundColor: color\n },\n modalContent: {\n backgroundColor: 'transparent',\n minHeight: 370,\n margin: 10,\n flexDirection: 'column'\n },\n colorPickerModalCSS: {\n backgroundColor: color,\n padding: 20,\n borderRadius: 3\n }\n };\n })();\n\ninterface CraftColorPickerProps {\n propColor: string | RGBColor;\n title?: string;\n alwaysShown?: boolean;\n changePropColor: (value: any) => void;\n}\n\nexport const CraftColorPicker: React.FC = ({\n propColor = '#000000',\n title = 'Color',\n alwaysShown = false,\n changePropColor\n}) => {\n const lastUsedColors = colorPickerLastUsedColorsSelector(store.getState());\n const dispatch = useAppDispatch();\n\n const [pickerColor, setPickerColor] = useState(propColor);\n const [showPicker, setShowPicker] = useState(false);\n\n const hoverCol = darkenOrLightenColor(pickerColor, -20);\n const rgbOrHexColorString = typeof pickerColor === 'object' ? convertRGBAToString(pickerColor) : pickerColor;\n const classes = useStyles(rgbOrHexColorString);\n\n const handlePickerColorChange = (newColor: ColorResult) => {\n setPickerColor(newColor.rgb);\n };\n\n const setPropColorAndClosePicker = () => {\n changePropColor(rgbOrHexColorString);\n dispatch(cycleColors(rgbOrHexColorString));\n setShowPicker(false);\n };\n\n useEffect(() => {\n setPickerColor(propColor);\n }, [propColor]);\n\n const buttonCSS = {\n width: '60%',\n margin: 'auto',\n marginTop: 2,\n alignSelf: 'center',\n color: contrastColor({ bgColor: rgbOrHexColorString }),\n backgroundColor: rgbOrHexColorString,\n border: `1px solid ${hoverCol}`,\n '&:hover': {\n backgroundColor: hoverCol,\n border: `1px solid ${hoverCol}`\n }\n };\n\n return (\n \n \n {title}\n \n {!alwaysShown && (\n \n {\n setShowPicker((v) => !v);\n setPickerColor(propColor);\n }}\n />\n \n )}\n\n \n \n \n \n \n \n \n \n \n );\n};\n","/* eslint-disable max-len */\nimport { BackgroundPositions, BackgroundSizes, JustifyContentOptions, View } from './types';\n\nexport const BUILDER_GRAY = 'rgba(68, 83, 106, 1)';\n\nexport const BACKGROUND_SIZES: BackgroundSizes[] = ['auto', 'cover', '125%', '150%', '175%', '200%'];\n\nexport const BACKGROUND_POSITIONS: BackgroundPositions[] = ['center', 'top', 'left', 'bottom', 'right'];\n\nexport const JUSTIFY_CONTENT_OPTIONS: Record = {\n Start: 'flex-start',\n Center: 'center',\n End: 'flex-end',\n 'Space between': 'space-between',\n 'Space around': 'space-around',\n 'Space evenly': 'space-evenly'\n};\n\nexport const MIN_WIDTH = 320;\nexport const MAX_WIDTH = 1920 * 2;\n\nexport const MIN_HEIGHT = 320;\nexport const MAX_HEIGHT = 1080 * 2;\n\nexport const fallbackView = `eyJST09UIjp7InR5cGXECHJlc29sdmVkTmFtZSI6IkJvZHlDb250YWluZXIifSwiaXNDYW52YXMiOnRydWUsInByb3BzxDlwYWRkaW5nQm90dG9tIjoiNXB4IizIFlRvcNATTGVmdNAUUmlnaMoVZGlzcGxheSI6ImZsZcQRxAdEaXJlY3Rpb24iOiJjb2x1bW4iLCJqdXN0aWblAKllbsRBxCotc3RhcnQiLCJhbGlnbkl0ZW1zxDRlbnRlciIsImJhY2tncm91bmRDb2xvciI6InJnYmEoMTc3LDIzNCwyNDAsMSkiLCJ3aWR0aCI6IjE5MjDlAJdoZecApjEwOMYSyktJbWFn5AE3dXJsKCcnxD/KHFNpesQbY2927wCAUG9zaegA0ugAnnNjYWxlIjowLjQyODQzNzV96QEP9QGZLCJjdXPlAXh7fSwiaGlkZGVuIjpmYWxzZSwibm9kZXMiOltdLCJsaW5rZWROxhF7fX19`;\n\nexport const fallbackCollection: Record = {\n standbyView: fallbackView,\n numPadView: fallbackView,\n newCustomerRegistrationView: fallbackView,\n returningCustomerRegistrationView: fallbackView,\n stampCardNewJoinView: fallbackView,\n stampCardProgressView: fallbackView,\n stampCardRewardView: fallbackView\n};\n\nexport const NON_DELETABLE_POWERED_BY_PAYATT_NAME = 'Powered By PayAtt';\n\nexport const PAYATT_BLACK_LOGO_SVG_URL =\n 'https://payatt-registration-display.s3.eu-north-1.amazonaws.com/template/PayAtt_logo_black.svg' as const;\n\nexport const PAYATT_WHITE_LOGO_SVG_URL =\n 'https://payatt-registration-display.s3.eu-north-1.amazonaws.com/template/PayAtt_logo_white.svg' as const;\n","import { SerializedNode, SerializedNodes } from '@craftjs/core';\n\nconst getDescendants = (parsedData: Record, nodeId: string) => {\n const nodes = {} as SerializedNodes;\n\n function recursiveMap(nodeID: string) {\n const node = parsedData[nodeID];\n\n // Add Child nodes\n node.nodes.forEach((id) => recursiveMap(id));\n\n // Add linked nodes\n Object.keys(node.linkedNodes).map((key) => {\n return recursiveMap(node.linkedNodes[key]);\n });\n\n nodes[nodeID] = node;\n }\n\n recursiveMap(nodeId);\n return nodes;\n};\n\n/**\n * `sanitizeSerializedData`\n * Starting from a `rootId`, return only the necessary\n * nodes by traversing child and linked nodes.\n */\nexport const sanitizeSerializedData = (serializedData: string, rootId: string): Record => {\n try {\n const parsed = JSON.parse(serializedData);\n const nodes = getDescendants(parsed, rootId);\n return nodes;\n } catch (error) {\n return {};\n }\n};\n","import { QueryMethods, WithoutPrivateActions } from '@craftjs/core';\nimport lz from 'lzutf8';\n\nimport { MAX_HEIGHT, MAX_WIDTH, MIN_HEIGHT, MIN_WIDTH } from 'builder/constants/constants';\nimport { View } from 'builder/constants/types';\n\nimport { updateOneViewAPI } from '../../api/displayViewColletions/displayViewCollectionsAPI';\nimport { sanitizeSerializedData } from './serialize';\n\ninterface EncodeASTProps {\n selectedViewName: View;\n id: string;\n query: ReturnType;\n actions: WithoutPrivateActions;\n}\n\ninterface ValidateIfItemIsInAST {\n itemName: string;\n query: ReturnType;\n}\n\ninterface CheckSidesArgs {\n nodeDom: HTMLElement;\n containerRect: DOMRect;\n}\n\ninterface LoadViewProps {\n stateToLoad: string;\n actions: WithoutPrivateActions;\n}\n\nconst OUTLINE_WIDTH = 2;\n\nexport const getCorrectDimensions = (width: string, height: string) => {\n const currWidth = +width.slice(0, -2);\n const currHeight = +height.slice(0, -2);\n\n let sanitizedWidth = currWidth;\n if (currWidth < MIN_WIDTH) sanitizedWidth = MIN_WIDTH;\n if (currWidth > MAX_WIDTH) sanitizedWidth = MAX_WIDTH;\n\n let sanitizedHeight = currHeight;\n if (currHeight < MIN_HEIGHT) sanitizedHeight = MIN_HEIGHT;\n if (currHeight > MAX_HEIGHT) sanitizedHeight = MAX_HEIGHT;\n\n return {\n sanitizedWidth: `${sanitizedWidth}px`,\n sanitizedHeight: `${sanitizedHeight}px`\n };\n};\n\nexport const adjustBrightness = (level: number) => {\n if (level === 0) return '';\n\n const t = level < 0 ? 0 : 255;\n const value = level * (level < 0 ? -1 : 1);\n\n return `linear-gradient( rgba(${t}, ${t}, ${t}, 0.${value}), rgba(${t}, ${t}, ${t}, 0.${value}) ), `;\n};\n\nexport const checkOverflows = (query: ReturnType) => {\n const nodeChildren = query.node('ROOT').descendants();\n\n const checkSides = ({ nodeDom, containerRect }: CheckSidesArgs) => {\n const itemRect = nodeDom?.getBoundingClientRect();\n\n const topIsOverflowing = itemRect.top < containerRect.top - OUTLINE_WIDTH;\n const leftIsOverflowing = itemRect.left < containerRect.left - OUTLINE_WIDTH;\n const bottomIsOverflowing = itemRect.bottom > containerRect.bottom + OUTLINE_WIDTH;\n const rightIsOverflowing = itemRect.right > containerRect.right + OUTLINE_WIDTH;\n\n const overflow = topIsOverflowing || leftIsOverflowing || bottomIsOverflowing || rightIsOverflowing;\n\n return overflow;\n };\n\n let overflow = false;\n const stack: string[][] = [nodeChildren];\n\n while (stack.length) {\n const nodesIds = stack.pop();\n\n if (nodesIds) {\n // eslint-disable-next-line no-loop-func\n nodesIds.forEach((nodeId) => {\n const descendants = query.node(nodeId).descendants();\n\n if (descendants.length) {\n stack.push(descendants);\n }\n\n const nodeDom = query.node(nodeId).get().dom;\n\n const containerRect = document.querySelector('.page-container')?.getBoundingClientRect();\n\n if (nodeDom && containerRect) {\n const isOverflowing = checkSides({ nodeDom, containerRect });\n if (isOverflowing) overflow = true;\n }\n });\n }\n }\n\n return overflow;\n};\n\nexport const validateIfItemIsInAST = ({ itemName, query }: ValidateIfItemIsInAST) => {\n const rootDescedantsNodesIdsArray = query.node('ROOT').descendants();\n const stack = [rootDescedantsNodesIdsArray];\n\n let hasItem = false;\n\n while (stack.length) {\n const nodeIdsArray = stack.pop();\n\n if (nodeIdsArray) {\n // eslint-disable-next-line no-loop-func\n nodeIdsArray.forEach((nodeId) => {\n const currNode = query.node(nodeId);\n\n stack.push(currNode.descendants());\n\n if (currNode.get().data.displayName === itemName) {\n hasItem = true;\n }\n });\n }\n\n if (hasItem) break;\n }\n\n return hasItem;\n};\n\nexport const encodeAndSaveAST = async ({ query, selectedViewName, id, actions }: EncodeASTProps) => {\n actions.history.clear();\n\n const json = query.serialize();\n const sanitizedJSON = sanitizeSerializedData(json, 'ROOT');\n\n const compressedJSON = lz.compress(JSON.stringify(sanitizedJSON), {\n inputEncoding: 'String',\n outputEncoding: 'Base64'\n });\n\n await updateOneViewAPI({\n view: selectedViewName,\n id,\n value: compressedJSON\n });\n\n return compressedJSON;\n};\n\nexport const loadView = ({ stateToLoad, actions }: LoadViewProps) => {\n const json = lz.decompress(lz.decodeBase64(stateToLoad));\n actions.deserialize(json);\n\n setTimeout(() => {\n actions.history.clear();\n }, 0);\n};\n","import { I18n } from 'react-redux-i18n';\nimport { toast } from 'react-toastify';\nimport uuid from 'react-uuid';\n\nimport axios from 'axios';\n\nimport { BASE_URL, compressImage, uploadImageToAWS } from 'api/helper';\nimport { GeneratePresignedURL } from 'api/interfaces';\nimport { handleAxiosError } from 'errorHandling/handleResponse';\nimport { store } from 'store/store';\nimport { UploadStatus } from 'views/StampCardForm/Form/props.interfaces';\n\nconst builderAWSFilenames = (file: File) => {\n const { merchant } = store.getState();\n const { name, type } = file;\n\n const defaultFileName = name.split('.')[0];\n const fileExtension = type.split('/')[1];\n const fileId = uuid();\n\n const fileName = `${merchant.id}/${defaultFileName}-${fileId}.${fileExtension}`;\n const sanitizedFileName = `${merchant.id}/${encodeURIComponent(defaultFileName)}-${fileId}.${fileExtension}`;\n\n return { fileName, sanitizedFileName };\n};\n\nexport const generatePresignedPOSTURLRegistrationDisplay = async ({ fileName, fileType }: GeneratePresignedURL) => {\n const body = { fileName, fileType };\n\n try {\n return axios.post<{\n data: { url: string; fields: { [key: string]: string } };\n }>(`${BASE_URL}/aws/generate-post-url-registration-display`, body);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const builderUploadFileToAWS = async (\n file: File\n): Promise<{\n status: UploadStatus.Success | UploadStatus.Failure;\n url?: string;\n}> => {\n const toastId = 'uploadImages';\n const { fileName, sanitizedFileName } = builderAWSFilenames(file);\n\n try {\n toast.info(I18n.t('stampCardForm.buttons.loading'), { toastId, autoClose: 30000, icon: '🕘' });\n\n const compressedFile = await compressImage(file);\n const { data } = await generatePresignedPOSTURLRegistrationDisplay({ fileName, fileType: file.type });\n const { fields, url: AWS_BUCKET_LINK } = data.data;\n\n const form = new FormData();\n Object.keys(fields).forEach((key) => {\n form.append(key, fields[key]);\n });\n form.append('file', compressedFile);\n\n await uploadImageToAWS({ url: AWS_BUCKET_LINK, form });\n\n toast.dismiss(toastId);\n\n return { status: UploadStatus.Success, url: `${AWS_BUCKET_LINK}${sanitizedFileName}` };\n } catch (error) {\n toast.dismiss(toastId);\n toast.error('File upload failed');\n\n return { status: UploadStatus.Failure };\n }\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { Button, ButtonProps, DialogActions, DialogActionsProps, useTheme } from '@mui/material';\n\ninterface PayAttDialogActionProps {\n handleCloseAccept: (e: React.MouseEvent) => void;\n handleCloseDecline: (e: React.MouseEvent) => void;\n dialogActionProps?: DialogActionsProps;\n confirmButtonContent?: React.ReactNode;\n confirmButtonProps?: ButtonProps;\n cancelButtonContent?: React.ReactNode;\n cancelButtonProps?: ButtonProps;\n}\n\nexport const PayAttDialogActions: React.FC = ({\n handleCloseAccept,\n handleCloseDecline,\n confirmButtonContent,\n confirmButtonProps,\n cancelButtonContent,\n cancelButtonProps,\n dialogActionProps\n}) => {\n const theme = useTheme();\n\n const { sx: confirmSx, ...confirmRest } = confirmButtonProps || {};\n const { sx: cancelSx, ...cancelRest } = cancelButtonProps || {};\n\n return (\n \n \n {cancelButtonContent || }\n \n \n {confirmButtonContent || }\n \n \n );\n};\n","import { CSSProperties } from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { I18n, Translate } from 'react-redux-i18n';\n\nimport { Typography } from '@mui/material';\n\nimport { VerticalCenteredFlexBox } from 'generalComponents/BoxModifications';\n\nconst contentCSS = {\n maxWidth: 'md',\n height: '100%',\n flex: 1,\n textAlign: 'center',\n overflow: 'auto',\n margin: '0 auto'\n};\n\nconst NoContent: React.FC<{\n header?: JSX.Element | string;\n imageURL?: string;\n imageStyle?: CSSProperties;\n displayContact?: boolean;\n overrideBrowserTabTitle?: boolean;\n}> = ({ header, imageStyle, imageURL, displayContact = true, overrideBrowserTabTitle = true }) => (\n <>\n {overrideBrowserTabTitle && (\n \n {`${I18n.t('general.noContent.browserTabTitle')}`}\n \n )}\n \n \n {header || }\n \n {displayContact && (\n \n {' '}\n \n \n \n \n )}\n\n \n \n \n);\n\nexport default NoContent;\n","import { useState } from 'react';\nimport { Controller, SubmitHandler, useForm } from 'react-hook-form';\nimport { I18n, Translate } from 'react-redux-i18n';\nimport { toast } from 'react-toastify';\n\nimport { Box, Button, Dialog, Paper, TextField, Tooltip, Typography } from '@mui/material';\n\nimport { UrlShortenerAPI } from 'api/campaign/campaignAPI';\n\ninterface UrlShortenerFormInputs {\n originalUrl: string;\n}\n\nconst HTTPS_URL_PATTERN =\n /^https:\\/\\/(?:www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b(?:[-a-zA-Z0-9()@:%_+.~#?&/=]*)$/;\n\nexport const UrlShortener = ({ open, closeDialog }: { open: boolean; closeDialog: () => void }) => {\n const [shortUrl, setShortUrl] = useState('');\n\n const { handleSubmit, control, watch } = useForm({ defaultValues: { originalUrl: '' } });\n\n const originalUrl = watch('originalUrl');\n\n const onSubmit: SubmitHandler = async (data) => {\n const shortenedUrl = await UrlShortenerAPI(data.originalUrl);\n setShortUrl(shortenedUrl);\n };\n\n const onCopy = async () => {\n try {\n navigator.clipboard?.writeText(shortUrl);\n closeDialog();\n toast.success(, {\n autoClose: 5000\n });\n } catch (err) {\n console.error('Failed to copy!', err);\n }\n };\n\n const disabled = !originalUrl.match(HTTPS_URL_PATTERN);\n\n return (\n \n \n \n \n \n\n (\n \n )}\n />\n\n }>\n \n \n \n \n \n \n\n \n\n }>\n \n \n \n \n \n \n \n \n );\n};\n","import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { parseISO } from 'date-fns';\n\ninterface UseAsyncReturn {\n loading: boolean;\n data: T | null;\n setData: React.Dispatch>;\n error: Error | null;\n execute: (params?: any) => Promise;\n}\n\nconst convertDates = (data: any): any => {\n if (data === null) return null;\n\n if (typeof data === 'string') {\n try {\n // Test if we can convert string to date (assuming ISOString format), if it fails (which it often will),\n // we just return the field as a string\n const date = parseISO(data);\n if (date.toISOString() === data) return date;\n } catch (err) {\n return data;\n }\n }\n\n if (Array.isArray(data)) return data.map((el) => convertDates(el));\n\n if (typeof data !== 'object') return data;\n\n const newObj: any = {};\n\n Object.entries(data).forEach(([key, val]) => {\n newObj[key] = convertDates(val);\n });\n\n return newObj;\n};\n\n/**\n * A hook to fetch async data.\n * @class useAsync\n * @borrows useAsyncObject\n * @param {object} _ props\n * @param {async} _.asyncFunc Promise like async function\n * @param {bool} _.immediate=false Invoke the function immediately\n * @param {object} _.funcParams Function initial parameters\n * @param {object} _.initialData Initial data\n * @returns {useAsyncObject} Async object\n * @example\n * const { execute, loading, data, error } = useAync({\n * asyncFunc: async () => { return 'data' },\n * immediate: false,\n * funcParams: { data: '1' },\n * initialData: 'Hello'\n * })\n */\n\n// https://stackoverflow.com/a/60693711\nexport const useAsync = (asyncFunc: any, funcParams = {}, immediate = true): UseAsyncReturn => {\n const [loading, setLoading] = useState(immediate);\n const [data, setData] = useState(null);\n const [error, setError] = useState(null);\n const mountedRef = useRef(true);\n\n const execute = useMemo(\n () => async (params?: any) => {\n setLoading(true);\n\n try {\n const response = await asyncFunc({ ...funcParams, ...params });\n\n if (!mountedRef.current) return null;\n\n setData(convertDates(response.data));\n setError(null);\n setLoading(false);\n return response;\n } catch (err) {\n if (!mountedRef.current) return null;\n setError(err as Error);\n setLoading(false);\n throw err;\n }\n },\n [asyncFunc, funcParams]\n );\n\n useEffect(() => {\n if (immediate) {\n execute(funcParams);\n }\n\n return () => {\n mountedRef.current = false;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return {\n execute,\n loading,\n data,\n setData,\n error\n };\n};\n","import { useCallback, useContext, useEffect } from 'react';\nimport { UNSAFE_NavigationContext as NavigationContext } from 'react-router-dom';\n\n// Alert before leaving the page / reloading it\n\nfunction useConfirmExit(confirmExit: () => boolean, when = true) {\n const { navigator } = useContext(NavigationContext);\n\n useEffect(() => {\n if (!when) return;\n\n const { push } = navigator;\n\n navigator.push = (...args: Parameters) => {\n const result = confirmExit();\n if (result !== false) push(...args);\n };\n\n // eslint-disable-next-line consistent-return\n return () => {\n navigator.push = push;\n };\n }, [navigator, confirmExit, when]);\n}\n\nexport function usePrompt(message: string, when = true) {\n useEffect(() => {\n if (when) window.onbeforeunload = () => message;\n\n return () => {\n window.onbeforeunload = null;\n };\n }, [message, when]);\n\n const confirmExit = useCallback(() => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(message);\n return confirm;\n }, [message]);\n useConfirmExit(confirmExit, when);\n}\n","import { StrictMode } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { isWebsiteInstancePayattclub } from 'api/stampCards/websiteMockAPI.ts/WebsiteMockAPI';\n\n// Do not render if we are using it in a docker container for the website\nexport const doNotRenderIfWebsiteInstance = () => {\n if (!isWebsiteInstancePayattclub()) return;\n\n ReactDOM.render(\n \n
\n

Nothing

\n
\n
,\n document.getElementById('root')\n );\n};\n","import { Translate } from 'react-redux-i18n';\nimport { toast } from 'react-toastify';\n\nimport { Message } from '@mui/icons-material';\n\nimport { Socket } from 'socket.io-client';\nimport { PortalServerToClientEvents } from 'stampPortal/types/socketIO';\n\nimport { payAttError } from 'errorHandling/payattError';\nimport { PayAttFailToastForever, PayAttSuccessToastForever } from 'generalComponents/Toasts/Toasts';\nimport { handlePostCampaignError, successToastId, successToastOptions } from 'views/IntelliSms/helpers/sendSmsCampaign';\n\nexport const portalSocketConnectionEvents = (socket: Socket) => {\n socket.on('connect', () => {\n console.info('Socket connected');\n });\n\n socket.on('connect_error', (error) => {\n console.error('Socket connect error', error);\n });\n\n socket.io.on('reconnect_failed', () => {\n console.error('Socket reconnect fail');\n });\n\n socket.io.on('reconnect_error', (error) => {\n console.error('Socket reconnect error', error);\n });\n\n socket.io.on('reconnect', (attempt) => {\n console.error('Socket reconnection attempt', attempt);\n });\n};\n\nexport const portalSocketEvents = (socket: Socket) => {\n socket.on('smsSuggestionsUpdated', (arg: { success: boolean }) => {\n if (arg.success) {\n PayAttSuccessToastForever(\n
\n \n
\n );\n } else {\n PayAttFailToastForever(\n
\n \n
\n );\n }\n });\n\n socket.on('smsCampaignSent', ({ refId }) => {\n if (toast.isActive(successToastId(refId))) {\n toast.update(successToastId(refId), {\n render: () => ,\n icon: \n });\n } else {\n PayAttSuccessToastForever(, {\n ...successToastOptions(refId),\n icon: \n });\n }\n });\n\n socket.on('smsCampaignFailedToSend', ({ status, message, refId }) => {\n handlePostCampaignError(payAttError({ message }, status), refId);\n });\n};\n","import { useEffect, useState } from 'react';\n\nimport { Socket, io } from 'socket.io-client';\nimport { PortalServerToClientEvents } from 'stampPortal/types/socketIO';\n\nimport { currentUserSelector } from 'store/selectors';\nimport { store } from 'store/store';\n\nimport { portalSocketConnectionEvents, portalSocketEvents } from './usePortalSocket.events';\n\nconst usePortalSocket = () => {\n const [socket, setSocket] = useState>(null);\n\n const subscribeSocket = () => {\n const currentUser = currentUserSelector(store.getState());\n\n if (currentUser?.jwtToken && !socket) {\n const newSocket = io(process.env.REACT_APP_SERVER_URL?.toLowerCase() || 'http://localhost:3005', {\n transports: ['websocket'],\n auth: { token: currentUser.jwtToken },\n query: { portal: true },\n reconnection: true,\n reconnectionDelay: 5000,\n reconnectionDelayMax: 10000,\n reconnectionAttempts: 20,\n forceNew: true,\n autoConnect: true\n });\n\n setSocket(newSocket);\n\n // Listeners\n portalSocketConnectionEvents(newSocket);\n portalSocketEvents(newSocket);\n } else if (!currentUser?.jwtToken && socket) {\n socket.disconnect();\n }\n };\n\n useEffect(() => {\n subscribeSocket();\n\n const unsubscribe = store.subscribe(() => {\n subscribeSocket();\n });\n\n return () => {\n if (socket && socket.connected) socket.disconnect();\n return unsubscribe();\n };\n });\n\n return socket;\n};\n\nexport default usePortalSocket;\n","import { createContext, useContext, useMemo } from 'react';\n\nimport { Socket } from 'socket.io-client';\nimport { PortalServerToClientEvents } from 'stampPortal/types/socketIO';\n\nimport usePortalSocket from './usePortalSocket';\n\ninterface PortalSocketContextProps {\n socket: Socket | null;\n}\n\nexport const PortalSocketContext = createContext(null);\n\nexport const PortalSocketContextProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const socket = usePortalSocket();\n\n const value = useMemo(() => ({ socket }), [socket]);\n\n return {children};\n};\n\nexport const usePortalSocketContext = () => {\n const dashboardJoyrideContext = useContext(PortalSocketContext);\n\n if (!dashboardJoyrideContext) {\n throw new Error('No PortalSocketContext.Provider found when calling usePortalSocketContext');\n }\n\n return dashboardJoyrideContext;\n};\n","import { toast } from 'react-toastify';\n\nimport { Box, Divider, Typography } from '@mui/material';\n\nimport PAYATT_LOGO from 'assets/images/PayAtt_logo_black.png';\nimport { differenceInMinutes } from 'date-fns';\n\nimport { VerticalCenteredFlexBox } from 'generalComponents/BoxModifications';\nimport {\n setNotificationLastChecked,\n setNotificationState,\n setShouldRefreshNotificationCenter,\n setShowNotification\n} from 'store/features/notifications/notificationsSlice';\nimport { getNotificationLastCheckedSelector, localeSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { NOTIFICATION_CHECK_INTERVAL } from 'utils/global.constants';\nimport {\n NotificationTypes,\n SingleNotification\n} from 'views/Navigation/Header/Buttons/Notifications/notifications.interfaces';\n\nimport { checkNotificationsMilestonesAPI } from './notifications/notificationsAPI';\n\nconst NotificationsCSS = {\n toastContainer: {\n borderRadius: '15px',\n width: '500px',\n fontWeight: 'bold',\n border: '1px solid #0000001c'\n },\n toastIcon: {\n position: 'absolute' as const,\n top: '10px',\n left: '10px'\n },\n divider: {\n width: '220px',\n background: 'rgb(0 0 0 / 80%)',\n mb: 2,\n ml: 2\n },\n payattLogo: {\n height: '35px',\n marginLeft: '20px',\n marginBottom: '10px'\n },\n text: { color: '#292524', marginLeft: '15px' }\n};\n\ntype ToastNotification = Extract;\n\nconst toastColorMap = {\n successToast: '#4ade80',\n warningToast: '#fdba74',\n infoToast: '#7dd3fc',\n payattToast: '#fafaf9'\n};\n\nconst toastIconMap = {\n successToast: '🎉',\n warningToast: '🧯',\n infoToast: '📚',\n payattToast: '💬'\n};\n\nconst isToastNotification = (notificationType: NotificationTypes): notificationType is ToastNotification => {\n return notificationType.includes('Toast');\n};\n\nconst handleNotifications = (notification: SingleNotification) => {\n store.dispatch(setShouldRefreshNotificationCenter(true));\n\n if (isToastNotification(notification.type)) {\n const locale = localeSelector(store.getState()) as keyof typeof notification.text;\n\n // Use rich text if available, otherwise use text\n const useRichText = notification.richText?.en?.body?.length > 0 && notification.richText?.se?.body?.length > 0;\n const currLocaleText = useRichText ? notification.richText[locale] : notification.text[locale];\n\n const toastContent = (\n \n {toastIconMap[notification.type]}\n\n {notification.type === 'payattToast' && (\n <>\n \"Payatt\n \n \n )}\n\n \n {currLocaleText.title}\n \n {useRichText && (\n \n )}\n {!useRichText && (\n \n {currLocaleText.body}\n \n )}\n \n );\n\n toast(
{toastContent}
, {\n autoClose: false,\n closeOnClick: false,\n position: 'top-center',\n style: {\n overflowY: 'scroll',\n ...NotificationsCSS.toastContainer,\n background: toastColorMap[notification.type]\n }\n });\n } else {\n store.dispatch(setNotificationState(notification));\n store.dispatch(setShowNotification(true));\n }\n};\n\nexport const checkNotifications = async () => {\n const notificationLastChecked = getNotificationLastCheckedSelector(store.getState());\n\n const minutesSinceLastChecked = differenceInMinutes(new Date(), new Date(notificationLastChecked));\n\n if (Number.isNaN(minutesSinceLastChecked) || minutesSinceLastChecked > NOTIFICATION_CHECK_INTERVAL) {\n store.dispatch(setNotificationLastChecked(new Date().toISOString()));\n\n const { status, data } = await checkNotificationsMilestonesAPI();\n\n if (status === 200 && data.notification) {\n handleNotifications(data.notification);\n }\n }\n};\n","/* eslint-disable no-param-reassign */\nimport { toast } from 'react-toastify';\n\nimport axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\n\nimport { BASE_URL } from 'api/helper';\nimport { logOut } from 'store/features/auth/actions';\nimport { useRefreshToken } from 'store/features/auth/authSlice';\nimport { AuthTokens } from 'store/features/auth/handlers';\nimport { loadState } from 'store/localStorageState';\nimport { store } from 'store/store';\nimport { useAppDispatch } from 'store/store.exports';\nimport { CONTRACT_LOGOUT_TOAST_ID } from 'utils/global.constants';\n\nimport { checkNotifications } from './notifications';\n\nexport const jwtInterceptor = () => {\n // add auth header with jwt if account is logged in and request is to the api url\n axios.interceptors.request.use(\n async (request: AxiosRequestConfig) => {\n if (!request.url?.includes('amazonaws.com')) {\n request.withCredentials = true;\n }\n\n // Check if we have token in local storage\n const state = loadState();\n if (!(state && state.auth && state.auth.currentUser && state.auth.currentUser.jwtToken)) {\n // Not logged in\n return request;\n }\n\n const { jwtToken } = state.auth.currentUser;\n\n if (!jwtToken) {\n // Token is expired or invalid, log out\n const dispatch = useAppDispatch();\n dispatch(logOut({ showToast: true }));\n return request;\n }\n\n const isApiUrl = request.url?.includes(process.env.REACT_APP_PAYATT_API || '/api/v1');\n\n if (isApiUrl) {\n request.headers = request.headers ?? {};\n request.headers.Authorization = `Bearer ${jwtToken}`;\n }\n\n // Check notifications each NOTIFICATION_CHECK_INTERVAL minutes if we are not on the contract signing page\n if (\n !window.location.href.includes('/contract') &&\n !window.location.href.includes('/login') &&\n !window.location.href.includes('/logout')\n ) {\n checkNotifications();\n }\n\n return request;\n },\n (err) => Promise.reject(err)\n );\n\n axios.defaults.headers.common = {\n 'Cache-Control': 'no-cache',\n Pragma: 'no-cache',\n Expires: '0'\n };\n};\n\n// https://stackoverflow.com/a/60750387\nlet refreshTokenPromise: Promise> | null = null;\n\nconst getRefreshToken = async () => {\n const { data } = await axios.get>(`${BASE_URL}/refresh`);\n return { token: data.token, chartToken: data.chartToken };\n};\n\nexport const refreshTokenInterceptor = () => {\n axios.interceptors.response.use(\n (response: AxiosResponse) => {\n if (toast.isActive(CONTRACT_LOGOUT_TOAST_ID) && response.status !== 401 && response.status !== 424) {\n toast.update(CONTRACT_LOGOUT_TOAST_ID, {\n onClose: () => {\n console.info('cancelled contract logout');\n }\n });\n\n toast.dismiss(CONTRACT_LOGOUT_TOAST_ID);\n }\n\n return response;\n },\n async (error) => {\n // Reject promise if usual error\n if (error.response.status !== 401) {\n return Promise.reject(error);\n }\n\n if (!refreshTokenPromise) {\n refreshTokenPromise = getRefreshToken();\n }\n\n try {\n const refreshToken = await refreshTokenPromise;\n\n store.dispatch(useRefreshToken(refreshToken));\n\n error.response.config.headers.Authorization = `Bearer ${refreshToken}`;\n return await axios(error.response.config);\n } catch (refreshTokenError) {\n // If two parallel reuqests are made, one to refreshToken and one to a separate endpoint which fails,\n // this catch block will catch the failing request and hence trigger the logout. Therefore, we must\n // check explicitly for the appropriate response codes\n if (\n axios.isAxiosError(refreshTokenError) &&\n refreshTokenError?.response?.status &&\n ![401, 424].includes(refreshTokenError.response.status)\n ) {\n if (refreshTokenError.response.status === 403) {\n store.dispatch(logOut({ showToast: true }));\n }\n\n return Promise.reject(refreshTokenError);\n }\n\n // refresh token endpoint responded with an error\n let failedBecauseOfContract = false;\n\n if (\n refreshTokenError instanceof Error &&\n refreshTokenError.message === 'Request failed with status code 424'\n ) {\n failedBecauseOfContract = true;\n }\n\n if (!toast.isActive(CONTRACT_LOGOUT_TOAST_ID)) {\n store.dispatch(\n logOut({\n showToast: true,\n contractToast: failedBecauseOfContract\n })\n );\n }\n\n return Promise.reject(refreshTokenError);\n } finally {\n refreshTokenPromise = null;\n }\n }\n );\n};\n","import { useEffect, useState } from 'react';\nimport { isMobile } from 'react-device-detect';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nimport { getOrientation, useScreenOrientation } from 'utils/utils';\n\nconst StyledBox = styled(Box)(\n () => `\n z-index: 10000;\n height: 200px;\n position: absolute;\n top: 0;\n width: 100%;\n background-color: #dd7300fc;\n color: black;\n opacity: 0.95;\n text-align: center;\n padding-top: 50px;\n font-weight: bold;\n border-radius: 0px 0px 10px 10px;\n`\n);\n\nconst shouldDisplay = (excludedRoutes: string[]): boolean => {\n const location = window.location.pathname;\n\n // Don't display warning on these routes\n if (excludedRoutes.find((el) => location.startsWith(el))) return false;\n\n const orientation = getOrientation();\n if (\n isMobile &&\n window.screen.width < 850 &&\n window.screen.height > window.screen.width &&\n (orientation === 'portrait-primary' || orientation === 'portrait-secondary')\n ) {\n return true;\n }\n return false;\n};\n\nexport const MobilePortraitWarning: React.FC<{\n excludedRoutes: string[];\n}> = ({ excludedRoutes }) => {\n const [display, setDisplay] = useState(shouldDisplay(excludedRoutes));\n const orientation = useScreenOrientation();\n\n useEffect(() => {\n setDisplay(shouldDisplay(excludedRoutes));\n }, [excludedRoutes, orientation]);\n\n return display ? (\n \n \n \n \n \n ) : null;\n};\n","import type { ISourceOptions } from 'tsparticles-engine';\n\nimport _amongUs from './amongUs.json';\nimport _basic from './basic.json';\nimport _blackHole from './blackHole.json';\nimport _bubble from './bubble.json';\nimport _collisionsAbsorb from './collisionsAbsorb.json';\nimport _collisionsBounce from './collisionsBounce.json';\nimport _collisionsDestroy from './collisionsDestroy.json';\nimport _connect from './connect.json';\nimport _dataImages from './dataImages.json';\nimport _destroy from './destroy.json';\nimport _fireworks from './fireworks.json';\nimport _hyperspace from './hyperspace.json';\nimport _imagesDirections from './imagesDirections.json';\nimport _mouseAttract from './mouseAttract.json';\nimport _mouseBounce from './mouseBounce.json';\nimport _mouseFollow from './mouseFollow.json';\nimport _nyancat from './nyancat.json';\nimport _parallax from './parallax.json';\nimport _planes from './planes.json';\nimport _reduceDuplicates from './reduceDuplicates.json';\nimport _ring from './ring.json';\nimport _textMask from './textMask.json';\nimport _virus from './virus.json';\nimport _wobble from './wobble.json';\n\nconst amongUs = _amongUs as unknown as ISourceOptions;\nconst basic = _basic as unknown as ISourceOptions;\nconst blackHole = _blackHole as unknown as ISourceOptions;\nconst bubble = _bubble as unknown as ISourceOptions;\nconst connect = _connect as unknown as ISourceOptions;\nconst collisionsAbsorb = _collisionsAbsorb as unknown as ISourceOptions;\nconst collisionsBounce = _collisionsBounce as unknown as ISourceOptions;\nconst collisionsDestroy = _collisionsDestroy as unknown as ISourceOptions;\nconst dataImages = _dataImages as unknown as ISourceOptions;\nconst destroy = _destroy as unknown as ISourceOptions;\nconst fireworks = _fireworks as unknown as ISourceOptions;\nconst hyperspace = _hyperspace as unknown as ISourceOptions;\nconst imagesDirections = _imagesDirections as unknown as ISourceOptions;\nconst mouseAttract = _mouseAttract as unknown as ISourceOptions;\nconst mouseBounce = _mouseBounce as unknown as ISourceOptions;\nconst mouseFollow = _mouseFollow as unknown as ISourceOptions;\nconst nyancat = _nyancat as unknown as ISourceOptions;\nconst parallax = _parallax as unknown as ISourceOptions;\nconst planes = _planes as unknown as ISourceOptions;\nconst reduceDuplicates = _reduceDuplicates as unknown as ISourceOptions;\nconst ring = _ring as unknown as ISourceOptions;\nconst textMask = _textMask as unknown as ISourceOptions;\nconst virus = _virus as unknown as ISourceOptions;\nconst wobble = _wobble as unknown as ISourceOptions;\n\nexport {\n amongUs,\n basic,\n blackHole,\n connect,\n bubble,\n collisionsAbsorb,\n collisionsBounce,\n collisionsDestroy,\n dataImages,\n destroy,\n fireworks,\n hyperspace,\n imagesDirections,\n mouseAttract,\n mouseBounce,\n mouseFollow,\n nyancat,\n parallax,\n planes,\n reduceDuplicates,\n ring,\n textMask,\n virus,\n wobble\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport Particles from 'react-particles';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Backdrop, Box, IconButton, LinearProgress, Paper, Typography } from '@mui/material';\n\nimport { loadFull } from 'tsparticles';\nimport type { Container, Engine } from 'tsparticles-engine';\n\nimport { setShowNotification as setShowNotificationRedux } from 'store/features/notifications/notificationsSlice';\nimport LocaleAPI from 'store/locale';\nimport { getCurrentNotificationSelector, showNotificationSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { useAppDispatch } from 'store/store.exports';\n\nimport {\n amongUs,\n basic,\n blackHole,\n bubble,\n collisionsAbsorb,\n collisionsBounce,\n collisionsDestroy,\n connect,\n dataImages,\n destroy,\n fireworks,\n hyperspace,\n imagesDirections,\n mouseAttract,\n mouseBounce,\n mouseFollow,\n nyancat,\n parallax,\n planes,\n reduceDuplicates,\n ring,\n textMask,\n virus,\n wobble\n} from './presets';\n\nexport const presets = {\n amongUs,\n bubble,\n connect,\n basic,\n blackHole,\n collisionsAbsorb,\n collisionsBounce,\n collisionsDestroy,\n dataImages,\n destroy,\n imagesDirections,\n mouseAttract,\n mouseFollow,\n mouseBounce,\n planes,\n parallax,\n reduceDuplicates,\n ring,\n textMask,\n virus,\n wobble,\n hyperspace,\n fireworks\n};\n\nconst BACKDROP_AUTOCLOSE_TIMEOUT = 60000;\nconst PROGRESS_INTERVAL = BACKDROP_AUTOCLOSE_TIMEOUT / 240;\nconst PARTICLES_BACKDROP_ZINDEX = 15000;\n\nconst NotificationCSS = {\n progressBar: {\n width: '80vw',\n height: '100px',\n position: 'absolute',\n top: 38\n },\n paper: {\n p: { xs: 2, sm: 4, md: 6, lg: 8, xl: 10 },\n maxWidth: '60vw',\n zIndex: 999999999999999\n },\n header: {\n textAlign: 'center',\n fontSize: {\n xl: '1.7rem',\n lg: '1.5rem',\n md: '1.3rem',\n sm: '1.1rem',\n xs: '1rem'\n },\n mb: 2\n },\n subHeader: {\n textAlign: 'center',\n fontSize: {\n xl: '1.4rem',\n lg: '1.15rem',\n md: '0.95rem',\n sm: '0.75rem',\n xs: '0.55rem'\n }\n },\n iconButton: {\n borderRadius: '50%',\n position: 'absolute',\n right: 8,\n top: 8,\n color: 'white'\n }\n};\n\nexport const DefaultParticlesContainer: React.FC = () => {\n const containerRef = useRef(null);\n const dispatch = useAppDispatch();\n\n const particlesInit = useCallback(async (engine: Engine) => {\n // eslint-disable-next-line no-restricted-syntax, guard-for-in\n for (const preset in presets) {\n // eslint-disable-next-line no-await-in-loop\n await engine.addPreset(preset, {\n ...presets[preset as keyof typeof presets],\n background: undefined,\n backgroundMask: undefined\n });\n }\n\n await engine.addPreset('nyancat', nyancat); // We don't want to remove background on this one\n\n await loadFull(engine);\n }, []);\n\n const particlesLoaded = useCallback(async (container: Container | undefined) => {\n console.info(container);\n }, []);\n\n const [showNotification, setShowNotification] = useState(false);\n const [preset, setPreset] = useState('fireworks');\n const [notificationTitle, setNotificationTitle] = useState('');\n const [notificationBody, setNotificationBody] = useState('');\n const [progress, setProgress] = useState(100);\n\n const close = useCallback(() => {\n setShowNotification(false);\n setPreset('');\n setProgress(100);\n containerRef.current?.stop();\n dispatch(setShowNotificationRedux(false));\n }, [dispatch]);\n\n const locale = LocaleAPI();\n\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n const showNotificationRedux = showNotificationSelector(store.getState());\n\n const currentNotification = getCurrentNotificationSelector(store.getState());\n\n if (showNotificationRedux) {\n const currLocale = locale as keyof typeof currentNotification.text;\n\n setShowNotification(true);\n setPreset(currentNotification.type);\n setNotificationTitle(currentNotification.text[currLocale].title);\n setNotificationBody(currentNotification.text[currLocale].body);\n\n containerRef.current?.start();\n }\n });\n\n return unsubscribe;\n });\n\n useEffect(() => {\n let timer: NodeJS.Timer;\n let timer2: NodeJS.Timeout;\n\n if (showNotification) {\n timer = setInterval(() => {\n setProgress((prevProgress) => {\n if (prevProgress <= 0) return 0;\n return prevProgress - 100 / 238;\n });\n }, PROGRESS_INTERVAL);\n\n timer2 = setTimeout(close, BACKDROP_AUTOCLOSE_TIMEOUT);\n }\n\n return () => {\n clearInterval(timer);\n clearTimeout(timer2);\n };\n }, [close, showNotification]);\n\n // Remove notification if page is reloaded\n useEffect(() => {\n if (showNotification) {\n window.onbeforeunload = close;\n }\n\n return () => {\n window.onbeforeunload = null;\n };\n }, [close, showNotification]);\n\n if (!showNotification) return null;\n\n return (\n \n \n \n \n\n \n \n \n\n \n \n {notificationTitle}\n \n \n {notificationBody}\n \n \n\n \n \n );\n};\n","const HEADER_BANNER_DELAY = 5000;\n\nexport const BannerTags = {\n UNAUTHENTICATED: 'UNAUTHENTICATED-BANNER-TAG-PAYATT',\n CAMPAIGN_DISABLED: 'CAMPAIGN_DISABLED-BANNER-TAG-PAYATT',\n TEST_USER: 'TEST_USER-BANNER-TAG-PAYATT'\n} as const;\n\nexport const addBannerWithDelay = (func: () => void) =>\n setTimeout(() => {\n func();\n }, HEADER_BANNER_DELAY);\n","import { useEffect } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box } from '@mui/material';\n\nimport { CurrentUserInterface } from 'store/features/auth/handlers';\nimport { MerchantInterface } from 'store/features/merchantAndVenues/handlers';\nimport { currentUserSelector, merchantSelector } from 'store/selectors';\nimport { store } from 'store/store';\n\nimport { useHeaderBannersContext } from '../Context/useContextProvider';\nimport { BannerTags, addBannerWithDelay } from './banners.interfaces';\n\nconst CampaignDisabledComponent = () => {\n return (\n \n \n {'--> '}\n \n {' <--'}\n \n \n );\n};\n\nconst showBanner = (user: CurrentUserInterface | undefined, merchant: MerchantInterface) => {\n const response =\n user &&\n user.jwtToken &&\n merchant &&\n merchant.id.length > 0 &&\n (!user.campaignAllowed || !merchant.campaignAllowed);\n\n return response;\n};\n\nexport const CampaignsDisabledBanner = () => {\n const { removeBanner, addBanner } = useHeaderBannersContext();\n\n // Add the badge 'campaignDisabled', indicating that we are not allowed to send SMS campaigns\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n const user = currentUserSelector(store.getState());\n const merchant = merchantSelector(store.getState());\n\n if (showBanner(user, merchant)) {\n addBannerWithDelay(() => {\n const userInner = currentUserSelector(store.getState());\n const merchantInner = merchantSelector(store.getState());\n\n if (showBanner(userInner, merchantInner)) {\n addBanner({\n tag: BannerTags.CAMPAIGN_DISABLED,\n component: \n });\n }\n });\n }\n });\n\n return unsubscribe;\n }, [addBanner]);\n\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n const state = store.getState();\n const user = currentUserSelector(state);\n const merchant = merchantSelector(state);\n if (user?.campaignAllowed && merchant?.campaignAllowed) {\n removeBanner(BannerTags.CAMPAIGN_DISABLED);\n }\n });\n\n return unsubscribe;\n }, [removeBanner]);\n};\n","import { useEffect } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box } from '@mui/material';\n\nimport { currentUserSelector } from 'store/selectors';\nimport { store } from 'store/store';\n\nimport { useHeaderBannersContext } from '../Context/useContextProvider';\nimport { BannerTags, addBannerWithDelay } from './banners.interfaces';\n\nconst TestUserComponent = () => {\n return (\n \n \n {'--> '}\n \n {' <--'}\n \n \n );\n};\n\nexport const TestUserBanner = () => {\n const { removeBanner, addBanner } = useHeaderBannersContext();\n\n // Add the badge 'TestUser', which displays if we are logged in with a readOnly account\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n const user = currentUserSelector(store.getState());\n\n if (user && user.readOnly) {\n addBannerWithDelay(() => {\n const userInner = currentUserSelector(store.getState());\n if (userInner && userInner.readOnly) {\n addBanner({\n tag: BannerTags.TEST_USER,\n component: \n });\n }\n });\n }\n });\n\n return unsubscribe;\n }, [addBanner]);\n\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n const currUser = currentUserSelector(store.getState());\n if (!currUser?.readOnly) {\n removeBanner(BannerTags.TEST_USER);\n }\n });\n\n return unsubscribe;\n }, [removeBanner]);\n};\n","import { useEffect } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { WarningOutlined } from '@mui/icons-material';\nimport { Box, useTheme } from '@mui/material';\n\nimport { authSelector } from 'store/selectors';\nimport { store } from 'store/store';\n\nimport { useHeaderBannersContext } from '../Context/useContextProvider';\nimport { BannerTags, addBannerWithDelay } from './banners.interfaces';\n\nconst UnauthenticatedBannerComponent = () => {\n const theme = useTheme();\n\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nconst showBanner = () => !authSelector(store.getState()).isAuth && !window.location.href.includes('/login');\n\nexport const UnauthenticatedBanner = () => {\n const { removeBanner, addBanner, banners } = useHeaderBannersContext();\n\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n if (showBanner()) {\n addBannerWithDelay(() => {\n if (showBanner()) {\n addBanner({\n tag: BannerTags.UNAUTHENTICATED,\n component: \n });\n }\n });\n }\n });\n\n return unsubscribe;\n }, [addBanner, banners]);\n\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n const innerAuth = authSelector(store.getState());\n if (innerAuth.isAuth) {\n removeBanner(BannerTags.UNAUTHENTICATED);\n }\n });\n\n return unsubscribe;\n }, [removeBanner]);\n};\n","import { Box } from '@mui/material';\n\nimport { VerticalCenteredFlexBox } from 'generalComponents/BoxModifications';\n\nimport { useHeaderBannersContext } from '../Context/useContextProvider';\nimport { CampaignsDisabledBanner } from './CampaignsDisabled';\nimport { TestUserBanner } from './TestUserBanner';\nimport { UnauthenticatedBanner } from './UnauthenticatedBanner';\n\nconst HeaderBannerDefaultStyle = {\n width: '100%',\n height: '30px',\n overflow: 'hidden',\n div: {\n width: '100%',\n height: '100%',\n textAlign: 'center',\n backgroundColor: '#efb102',\n color: 'black',\n verticalAlign: 'middle',\n fontWeight: 'bold'\n }\n};\n\nconst startBannerTrackers = () => {\n CampaignsDisabledBanner();\n TestUserBanner();\n UnauthenticatedBanner();\n};\n\n/**\n * Renders all banners from the context 'HeaderBannerContext' to the top of the website\n */\nconst HeaderBanners = () => {\n const { banners } = useHeaderBannersContext();\n\n startBannerTrackers();\n\n if (window.location.href.includes('/login')) return null;\n\n return (\n <>\n {banners.map((b) => {\n return (\n \n {b.component}\n \n );\n })}\n \n );\n};\n\nexport default HeaderBanners;\n","import React, { StrictMode } from 'react';\nimport ReactDOM from 'react-dom';\nimport { HelmetProvider } from 'react-helmet-async';\nimport { Provider } from 'react-redux';\n\nimport { Box, useTheme } from '@mui/material';\n\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport ThemeProvider from 'Theme/ThemeProvider';\nimport 'assets/scss/index.scss';\nimport { doNotRenderIfWebsiteInstance } from 'index.helpers';\nimport { PortalSocketContextProvider } from 'socket/usePortalSocket.context';\n\nimport { jwtInterceptor, refreshTokenInterceptor } from 'api/jwtInterceptor';\nimport { isWebsiteInstancePayattclub } from 'api/stampCards/websiteMockAPI.ts/WebsiteMockAPI';\nimport { SidebarProvider } from 'contexts/SidebarContext';\nimport { MobilePortraitWarning } from 'generalComponents/MobileView/MobilePortraitWarning';\nimport { DefaultParticlesContainer } from 'generalComponents/Particles/Particles';\nimport { DefaultToastContainer } from 'generalComponents/Toasts/Toasts';\nimport MainRoutes from 'routes/routes';\nimport { store } from 'store/store';\nimport HeaderBanners from 'views/Navigation/Header/Banners/HeaderBanners';\nimport { HeaderBannerContextProvider } from 'views/Navigation/Header/Context/ContextProvider';\n\nexport const SetBodyValuesFromTheme: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const theme = useTheme();\n\n const valuesToSetOnBody: Partial = {\n width: '100%',\n height: '100%',\n margin: '0px',\n padding: '0px',\n background: `${theme.palette.backgroundPrimary} !important`,\n display: 'flex',\n fontSize: `${theme.typography.fontSize}px`,\n fontWeight: `${theme.typography.fontWeightLight || 400}`,\n lineHeight: '1.5',\n fontFamily: theme.typography.fontFamily || 'Verdana, sans-serif, Inter',\n color: theme.colors.alpha.black[100],\n overflow: 'scroll'\n };\n\n Object.entries(valuesToSetOnBody).forEach(([key, val]) => {\n if (val) document.body.style[key as any] = `${val}`;\n });\n\n return {children};\n};\n\nconst RenderPortal = () => {\n if (isWebsiteInstancePayattclub()) doNotRenderIfWebsiteInstance();\n\n const helmetContext = {};\n\n const queryClient = new QueryClient();\n\n // Add middleware to API calls, this function should only be called once.\n // The below attaches the jwt token to each request\n jwtInterceptor();\n refreshTokenInterceptor();\n\n ReactDOM.render(\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ,\n document.getElementById('root')\n );\n};\n\nexport default RenderPortal;\n","import { Suspense } from 'react';\n\nimport SuspenseLoader from 'generalComponents/SuspenseLoader/SuspenseLoader';\n\nexport const Loader = (Component: any) => {\n return function innerFunc(props: any) {\n return (\n }>\n \n \n );\n };\n};\n","import { ReactElement, useEffect } from 'react';\n\nimport { useEditor } from '@craftjs/core';\n\nimport { FlexBox } from 'generalComponents/BoxModifications';\n\nfunction useOutsideSelectionCleanup() {\n const { actions } = useEditor();\n\n useEffect(() => {\n // Cleanup selection if clicked outside\n const handleClickOutside = (event: MouseEvent) => {\n if (\n event.target instanceof HTMLElement &&\n (event.target.className.includes('builder-container') || event.target.id === 'root')\n ) {\n actions.selectNode('ROOT');\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n\nconst CleansSelectionWhenClickedOutside = ({ children }: { children: ReactElement[] }) => {\n useOutsideSelectionCleanup();\n\n return {children};\n};\n\nexport default CleansSelectionWhenClickedOutside;\n","import { createContext, useMemo, useState } from 'react';\n\nimport { SetStateBooleanType, SetStateNumberType } from 'utils/global.interfaces';\nimport { generateRandomNumber } from 'utils/utils';\n\nexport type Device = 'tablet' | 'phone' | 'laptop';\n\nexport interface BuilderContextProps {\n shouldUpdateIndicator: number;\n setShouldUpdateIndicator: SetStateNumberType;\n overflow: boolean;\n setOverflow: SetStateBooleanType;\n editable: boolean;\n setEditable: SetStateBooleanType;\n device: Device;\n setDevice: React.Dispatch>;\n focusTextInput: (textInput: React.MutableRefObject | HTMLInputElement | null) => void;\n}\n\nconst BuilderContext = createContext(undefined);\n\nexport const BuilderProvider: React.FC = ({ children }) => {\n const [shouldUpdateIndicator, setShouldUpdateIndicator] = useState(generateRandomNumber());\n const [overflow, setOverflow] = useState(false);\n const [device, setDevice] = useState('tablet');\n\n const [editable, setEditable] = useState(false);\n\n const focusTextInput = (textInput: React.MutableRefObject['current'] | HTMLInputElement | null) => {\n setEditable(true);\n\n if (textInput) {\n setTimeout(() => {\n const range = document.createRange();\n const sel = window.getSelection();\n range.selectNodeContents(textInput);\n range.collapse(false);\n sel?.removeAllRanges();\n sel?.addRange(range);\n textInput.focus();\n }, 0);\n }\n };\n\n const data = useMemo(\n () => ({\n shouldUpdateIndicator,\n setShouldUpdateIndicator,\n overflow,\n setOverflow,\n device,\n setDevice,\n editable,\n setEditable,\n focusTextInput\n }),\n [shouldUpdateIndicator, overflow, device, editable]\n );\n\n return {children};\n};\n\nexport default BuilderContext;\n","import { useContext } from 'react';\n\nimport BuilderContext from './builderContext';\n\nexport const useBuilderContext = () => {\n const builderContext = useContext(BuilderContext);\n\n if (!builderContext) {\n throw new Error('No BuilderContext.Provider found when calling useBuilderContext.');\n }\n\n return builderContext;\n};\n","import { useEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport { toast } from 'react-toastify';\n\nimport { ArrowDropUp, Delete, DriveFileRenameOutline, ErrorOutline, InfoOutlined, OpenWith } from '@mui/icons-material';\nimport { IconButton, Tooltip, Typography } from '@mui/material';\n\nimport { useEditor, useNode } from '@craftjs/core';\n\nimport { NON_DELETABLE_POWERED_BY_PAYATT_NAME } from 'builder/constants/constants';\nimport { useBuilderContext } from 'builder/context/useBuilderContext';\nimport { FlexBox } from 'generalComponents/BoxModifications';\n\ninterface RenderNodeProps {\n render: React.ReactElement>;\n}\n\nconst stampCardComponentsInfoURL = 'https://payattclub.se/se/faq/';\n\nconst infoComponents = {\n 'Stamp card new join': stampCardComponentsInfoURL,\n 'Stamp card progress': stampCardComponentsInfoURL,\n 'Stamp card reward': stampCardComponentsInfoURL\n};\n\nconst barCSS = {\n marginTop: '-40.5px',\n gap: 2,\n paddingX: 1,\n paddingY: 0.5,\n backgroundColor: '#f8fafc',\n position: 'fixed',\n justifyContent: 'space-around',\n alignItems: 'center',\n border: '1px solid rgba(1, 1, 1, 0.3)'\n};\n\nexport const RenderNode = ({ render }: RenderNodeProps) => {\n const currentRef = useRef();\n\n const [pos, setPos] = useState>({ top: 0, left: 0, bottom: 0 });\n\n const { id } = useNode();\n\n const { focusTextInput, setOverflow } = useBuilderContext();\n\n const { actions, query, isActive } = useEditor((_, q) => ({\n isActive: q.getEvent('selected').contains(id)\n }));\n\n const {\n isHover,\n isSelected,\n dom,\n name,\n deletable,\n moveable,\n parent,\n connectors: { drag }\n } = useNode((node) => {\n return {\n isSelected: node.events.selected,\n isHover: node.events.hovered,\n dom: node.dom,\n name: node.data.custom.displayName || node.data.displayName,\n moveable: query.node(node.id).isDraggable(),\n deletable:\n query.node(node.id).isDeletable() &&\n (node.data.custom.displayName || node.data.displayName) !== NON_DELETABLE_POWERED_BY_PAYATT_NAME,\n\n parent: node.data.parent,\n props: node.data.props\n };\n });\n\n const { shouldUpdateIndicator } = useBuilderContext();\n\n useEffect(() => {\n if (dom) {\n const { left, top, bottom } = dom.getBoundingClientRect();\n setPos({ left, top, bottom });\n\n if (isHover) {\n dom.classList.add('component-hovered');\n } else {\n dom.classList.remove('component-hovered');\n }\n\n if (isSelected) {\n dom.classList.remove('component-hovered');\n dom.classList.add('component-selected');\n } else {\n dom.classList.remove('component-selected');\n }\n }\n }, [dom, isActive, isHover, isSelected, shouldUpdateIndicator]);\n\n const editText = () => {\n focusTextInput(dom?.firstChild as HTMLInputElement);\n };\n\n return (\n <>\n {isSelected && id !== 'ROOT'\n ? ReactDOM.createPortal(\n \n {dom?.classList.contains('overflow') && (\n \n \n \n \n \n )}\n\n \n {name}\n \n\n {infoComponents[name as keyof typeof infoComponents] && (\n \n \n \n \n \n )}\n\n \n {\n actions.selectNode(parent as string);\n\n query\n .node(parent as string)\n .get()\n ?.dom?.classList.add('component-selected');\n }}\n color=\"secondary\"\n aria-label=\"up\"\n size=\"small\">\n \n \n \n\n {name === 'Text' && (\n \n \n \n \n \n )}\n\n {moveable && (\n \n \n \n \n \n )}\n\n {deletable && (\n \n {\n e.stopPropagation();\n\n if (dom?.classList.contains('overflow')) {\n toast.dismiss('overflowToast');\n setOverflow(false);\n }\n\n actions.delete(id);\n actions.selectNode('ROOT');\n }}\n aria-label=\"delete\"\n size=\"small\">\n \n \n \n )}\n ,\n document.querySelector('.page-container') as any\n )\n : null}\n {render}\n \n );\n};\n","import { createElement, useCallback, useEffect, useRef, useState } from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport Draggable from 'react-draggable';\n\nimport { DeleteOutlineOutlined, VerticalAlignTop } from '@mui/icons-material';\nimport SwitchLeftIcon from '@mui/icons-material/SwitchLeft';\nimport SwitchRightIcon from '@mui/icons-material/SwitchRight';\nimport { Box, Chip, IconButton, Button as MaterialButton, Tooltip, Typography } from '@mui/material';\nimport { makeStyles } from '@mui/styles';\n\nimport { useEditor } from '@craftjs/core';\nimport { Layers } from '@craftjs/layers';\n\nimport { NON_DELETABLE_POWERED_BY_PAYATT_NAME } from 'builder/constants/constants';\nimport { CenteredFlexBox, FlexBox } from 'generalComponents/BoxModifications';\n\nimport './tree.scss';\n\nconst useStyles = makeStyles(() => {\n return {\n container: { borderRadius: '5px', width: '340px', zIndex: 50 },\n header: {\n justifyContent: 'space-around',\n alignItems: 'center',\n backgroundColor: 'rgba(53, 73, 94, 1)',\n height: '60px',\n cursor: 'move'\n },\n body: {\n flexDirection: 'column',\n boxShadow: '0px 0px 10px 0px rgba(0, 0, 0, 0.30000001192092896)',\n backgroundColor: 'rgba(153, 173, 194, 1)'\n }\n };\n});\n\nexport const SettingsPanel = () => {\n const [value, setValue] = useState<'settings' | 'tree'>('settings');\n\n const switchTabs = () => {\n setValue(value === 'settings' ? 'tree' : 'settings');\n };\n\n const draggableDivs: NodeListOf = document.querySelectorAll('[draggable]');\n\n useEffect(() => {\n setTimeout(() => {\n draggableDivs.forEach((div) => {\n div.draggable = false;\n });\n }, 0);\n }, [draggableDivs]);\n\n const classes = useStyles();\n\n const {\n selected: selectedNode,\n actions,\n query\n } = useEditor((state, queryArg) => {\n const { selected } = state.events;\n const myArray = Array.from(selected);\n const currentNodeId: string = myArray[0];\n\n const root = state.nodes.ROOT;\n\n if (!currentNodeId)\n return {\n selected: {\n id: root?.id,\n name: root?.data?.custom?.displayName || root?.data?.displayName,\n settings: root?.related?.settings,\n isDeletable: false\n }\n };\n\n return {\n selected: {\n id: currentNodeId,\n name: state.nodes[currentNodeId].data.custom.displayName || state.nodes[currentNodeId].data.displayName,\n settings: state.nodes[currentNodeId].related?.settings,\n isDeletable:\n queryArg.node(currentNodeId).isDeletable() &&\n (state.nodes[currentNodeId].data.custom.displayName ||\n state.nodes[currentNodeId].data.displayName) !== NON_DELETABLE_POWERED_BY_PAYATT_NAME,\n parent: queryArg.node(currentNodeId).get().data.parent\n }\n };\n });\n\n const handleDelete = () => {\n if (selectedNode) {\n actions.delete(selectedNode.id);\n actions.selectNode('ROOT');\n }\n };\n\n const goToParent = () => {\n actions.selectNode(selectedNode.parent as string);\n\n query\n .node(selectedNode.parent as string)\n .get()\n ?.dom?.classList.add('component-selected');\n };\n\n const dragRef = useRef(null);\n\n const [boundsRect, setBoundsRect] = useState({\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n\n const handleResize = useCallback(() => {\n const body = document.querySelector('body');\n if (!dragRef.current || !body) return;\n\n const node = dragRef.current;\n const width = node.clientWidth;\n\n setBoundsRect({\n left: -node.offsetLeft,\n top: -10,\n right: -(width - body.clientWidth) - node.offsetLeft,\n bottom: -node.offsetTop + 700\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dragRef.current?.clientWidth, dragRef.current?.offsetTop]);\n\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n handleResize();\n\n return () => window.removeEventListener('resize', handleResize);\n }, [handleResize]);\n\n return (\n selectedNode && (\n \n \n \n {value === 'settings' ? (\n <>\n \n \n \n Settings\n \n \n \n \n \n \n \n \n \n \n {selectedNode.settings && createElement(selectedNode.settings)}\n {selectedNode.parent && (\n }\n variant=\"contained\"\n sx={{\n width: '60%',\n alignSelf: 'center',\n marginTop: 2,\n marginBottom: selectedNode.isDeletable ? 0 : 2\n }}\n color=\"builderDarkBlue\"\n onClick={goToParent}>\n Go to parent\n \n )}\n {selectedNode.isDeletable && (\n }\n variant=\"contained\"\n sx={{\n width: '60%',\n alignSelf: 'center',\n marginTop: 2,\n marginBottom: 2\n }}\n color=\"builderDarkBlue\"\n onClick={handleDelete}>\n Delete item\n \n )}\n \n \n ) : (\n <>\n \n \n Tree\n \n\n \n \n \n \n \n \n\n \n \n )}\n \n \n \n )\n );\n};\n","import React from 'react';\n\nimport LaptopIcon from '@mui/icons-material/Laptop';\nimport PhoneAndroidIcon from '@mui/icons-material/PhoneAndroid';\nimport TabletIcon from '@mui/icons-material/Tablet';\nimport { Typography, styled } from '@mui/material';\nimport ToggleButton from '@mui/material/ToggleButton';\nimport ToggleButtonGroup from '@mui/material/ToggleButtonGroup';\n\nimport { Device } from '../../../../context/builderContext';\nimport { useBuilderContext } from '../../../../context/useBuilderContext';\n\nconst StyledToggleButton = styled(ToggleButton)({\n '&:hover': { backgroundColor: '#f1f5f9' },\n '&.Mui-selected': { backgroundColor: '#f1f5f9', '&:hover': { backgroundColor: '#f1f5f9' } }\n});\n\nexport const SelectDevice = () => {\n const { device, setDevice } = useBuilderContext();\n\n const handleDevices = (_: React.MouseEvent, newDevice: Device | null) => {\n if (newDevice !== null) {\n setDevice(newDevice);\n }\n };\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n Components will adapt according to the selected device type\n \n \n );\n};\n","import { ExpandLessTwoTone, ExpandMoreTwoTone, Mail } from '@mui/icons-material';\nimport { Collapse, ListItem, ListItemButton, ListItemIcon, ListItemText } from '@mui/material';\n\nimport { Element } from '@craftjs/core';\n\nimport { AccordionsState, ExpandableMenuItemProps, ItemListProps } from './types';\n\nconst ExpandableListItem: React.FC = ({\n children,\n text,\n Icon,\n accordionsState,\n updateAccordionsState\n}) => {\n const toggleState = () => {\n updateAccordionsState({\n [text]: !accordionsState[text]\n });\n };\n\n return (\n toggleState()}\n key=\"asd\"\n sx={{\n flexDirection: 'column',\n minWidth: '240px',\n justifyContent: 'center',\n alignItems: 'center'\n }}>\n \n \n \n \n\n \n\n \n {accordionsState[text] ? : }\n \n \n {children}\n \n );\n};\n\nconst flipIconCSS = {\n transform: 'scaleX(-1)',\n marginRight: 4,\n minWidth: 0\n};\n\nexport const ItemList = ({\n components,\n toggleDrawer,\n connectors,\n marginLeft = -2,\n accordionsState,\n updateAccordionsState,\n exclude\n}: ItemListProps) => {\n if (exclude) {\n components = components.filter((component) => !exclude.includes(component.name));\n }\n\n return components.map(({ element, name, id, Icon, children, props }) => {\n if (children) {\n return (\n \n {ItemList({\n components: children,\n connectors,\n toggleDrawer,\n marginLeft: 2,\n accordionsState,\n updateAccordionsState\n })}\n \n );\n }\n\n return (\n \n {\n connectors.create(ref as any, );\n }}>\n \n {Icon ? : }\n \n \n \n \n );\n });\n};\n","import { Device } from '../context/builderContext';\n\nexport const getCorrectPropForDevice = (device: Device) => (phone: string, tablet: string, laptop: string) => {\n const props: Record = {\n phone,\n tablet,\n laptop\n };\n\n return props[device as keyof typeof props];\n};\n\nexport const getCorrectPropsObjectForDevice =\n (device: Device) => (phone: unknown, tablet: unknown, laptop: unknown) => {\n const props: Record = {\n phone,\n tablet,\n laptop\n };\n\n return props[device as keyof typeof props];\n };\n","import { ReactNode } from 'react';\n\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport { Accordion, AccordionDetails, AccordionSummary, Typography } from '@mui/material';\n\nexport const SettingsAccordionItem = ({\n title,\n panelName,\n expanded,\n handleChange,\n border = true,\n children\n}: {\n title: string;\n panelName: string;\n expanded: boolean | string;\n // eslint-disable-next-line react/require-default-props\n border?: boolean;\n handleChange: (panel: string) => (event: React.SyntheticEvent, isExpanded: boolean) => void;\n children: ReactNode;\n}) => {\n return (\n \n }\n aria-controls=\"panel1bh-content\"\n id=\"panel1bh-header\">\n {title}\n \n \n {children}\n \n \n );\n};\n","import { FormControl, InputLabel, Select, Slider, TextField, styled } from '@mui/material';\n\nimport { BUILDER_GRAY } from 'builder/constants/constants';\n\nexport const BuilderFormControl = styled(FormControl)({\n '& .MuiInput-underline:after': { borderBottomColor: BUILDER_GRAY }\n});\n\nexport const BuilderTextField = styled(TextField)({\n // Remove autofill background\n '& input:-webkit-autofill': {\n transitionDelay: '9999s',\n transitionProperty: 'background-color, transparent'\n },\n '& label.Mui-focused': { color: BUILDER_GRAY },\n '& .MuiInput-underline:after': { borderBottomColor: BUILDER_GRAY },\n '& .MuiOutlinedInput-root': {\n '&:hover fieldset': { borderColor: BUILDER_GRAY },\n '&.Mui-focused fieldset': { borderColor: BUILDER_GRAY }\n }\n});\n\nexport const BuilderSelect = styled(Select)({\n '&.Mui-focused fieldset': { borderColor: BUILDER_GRAY },\n '&:hover .MuiOutlinedInput-notchedOutline': { borderColor: BUILDER_GRAY },\n '& .MuiInput-input:focus': { backgroundColor: 'transparent' }\n});\n\nexport const BuilderInputLabel = styled(InputLabel)({\n '&.Mui-focused': { color: BUILDER_GRAY }\n});\n\nexport const BuilderMuiSlider = styled(Slider)({\n color: '#52af77',\n height: 8,\n '& .MuiSlider-mark': { height: 8, width: 8, borderRadius: '50%' },\n '& .MuiSlider-track': { border: 'none' },\n '& .MuiSlider-thumb': {\n height: 24,\n width: 24,\n backgroundColor: '#fff',\n border: '2px solid currentColor',\n '&:focus, &:hover, &.Mui-active, &.Mui-focusVisible': {\n boxShadow: 'inherit'\n },\n '&:before': { display: 'none' }\n },\n '& .MuiSlider-valueLabel': {\n lineHeight: 1.2,\n fontSize: 12,\n background: 'unset',\n padding: 0,\n width: 32,\n height: 32,\n borderRadius: '50% 50% 50% 0',\n backgroundColor: '#52af77',\n transformOrigin: 'bottom left',\n transform: 'translate(50%, -100%) rotate(-45deg) scale(0)',\n '&:before': { display: 'none' },\n '&.MuiSlider-valueLabelOpen': {\n transform: 'translate(50%, -100%) rotate(-45deg) scale(1)'\n },\n '& > *': { transform: 'rotate(45deg)' }\n }\n});\n","import { Typography } from '@mui/material';\n\nimport { BuilderMuiSlider } from './BuilderMuiComponents';\n\ninterface BuilderSliderProps {\n title: string;\n value: number;\n min?: number;\n max?: number;\n step?: number;\n disableLabel?: boolean;\n marks?: { value: number; label: string }[];\n onChange: (_: Event, value: number | number[]) => void;\n}\n\nexport const BuilderSlider: React.FC = ({\n title,\n value,\n onChange,\n min = 0,\n max = 20,\n step = 1,\n disableLabel = false,\n marks\n}) => {\n return (\n <>\n \n {title}\n \n \n \n );\n};\n","import { Box, MenuItem, SelectChangeEvent } from '@mui/material';\n\nimport { JUSTIFY_CONTENT_OPTIONS } from 'builder/constants/constants';\nimport { AlignContentOptions, AlignmentProps, FlexDirectionOptions, UpdateProp } from 'builder/constants/types';\n\nimport { BuilderFormControl, BuilderInputLabel, BuilderSelect } from '../BuilderComponents/BuilderMuiComponents';\nimport { BuilderSlider } from '../BuilderComponents/BuilderSlider';\n\ninterface Mark {\n value: number;\n label: string;\n prop: AlignContentOptions | FlexDirectionOptions;\n}\n\ntype OnChange = (\n array: Mark[],\n prop: keyof AlignmentProps,\n fallback: 'flex-start' | 'row'\n) => (_: Event, value: number | number[]) => void;\n\nexport const AlignmentSettings = ({\n alignItems,\n flexDirection,\n justifyContent,\n updateProp\n}: Required & UpdateProp) => {\n const flexDirectionMarks: Mark[] = [\n { value: 0, label: 'Column (↓)', prop: 'column' },\n { value: 100, label: 'Row (→)', prop: 'row' }\n ];\n\n const alignItemsMarks: Mark[] = [\n { value: 0, label: 'Start', prop: 'flex-start' },\n { value: 50, label: 'Center', prop: 'center' },\n { value: 100, label: 'End', prop: 'flex-end' }\n ];\n\n const onChange: OnChange = (array, prop, fallback) => (_, value) => {\n const variant = array.find((mark) => mark.value === value);\n updateProp(prop)(variant?.prop || fallback);\n };\n\n const onJustifyContentChange = (e: SelectChangeEvent) => {\n updateProp('justifyContent')(e.target.value);\n };\n\n const flexDirectionValue = flexDirectionMarks.find((mark) => mark.prop === flexDirection)?.value;\n\n const alignItemsValue = alignItemsMarks.find((mark) => mark.prop === alignItems)?.value;\n\n return (\n \n \n\n \n\n \n Justify content\n \n {Object.entries(JUSTIFY_CONTENT_OPTIONS).map(([key, value]) => (\n \n {key}\n \n ))}\n \n \n \n );\n};\n","import { useState } from 'react';\n\nimport { FileUploadOutlined } from '@mui/icons-material';\nimport DeleteForeverIcon from '@mui/icons-material/DeleteForever';\nimport { IconButton, Tooltip } from '@mui/material';\n\nimport { builderUploadFileToAWS } from 'builder/utils/uploadToAWS';\nimport { CenteredFlexBox, FlexBox } from 'generalComponents/BoxModifications';\nimport { UploadStatus } from 'views/StampCardForm/Form/props.interfaces';\n\nimport { BuilderTextField } from './BuilderMuiComponents';\n\ninterface ImageUploadProps {\n defaultValue: string | undefined;\n updateProp: any;\n propName?: string;\n shouldAddUrl?: boolean;\n label?: string;\n hideDelete?: boolean;\n}\n\ntype OnEnterPress = (e: React.KeyboardEvent & { target: { value: string } }) => void;\n\nexport const ImageUpload = ({\n defaultValue,\n updateProp,\n propName = 'src',\n shouldAddUrl = false,\n label = 'Image URL',\n hideDelete = false\n}: ImageUploadProps) => {\n const [localSrc, setLocalSrc] = useState(\n (defaultValue?.startsWith(`url(\"`) ? defaultValue.split(\"'\")[1] : defaultValue) || ''\n );\n\n const updatePropValue = (value: any) => {\n updateProp(propName)(shouldAddUrl ? `url(\"${value}\")` : value);\n };\n\n const handleUpload = async (e: any) => {\n const { status, url } = await builderUploadFileToAWS(e.target.files[0]);\n\n if (status === UploadStatus.Success) {\n updatePropValue(url);\n setLocalSrc(url as string);\n }\n };\n\n const deleteImage = () => {\n setLocalSrc('');\n updatePropValue('');\n };\n\n const onBlur = (e: React.FocusEvent) => updatePropValue(e.target.value);\n\n const onEnterPress: OnEnterPress = (e) => {\n if (e.key === 'Enter') updatePropValue(e.target.value);\n };\n\n return (\n \n \n {\n setLocalSrc(e.target.value);\n }}\n onBlur={onBlur}\n onKeyDown={onEnterPress}\n label={label}\n variant=\"standard\"\n InputProps={{\n endAdornment: (\n \n \n \n \n \n {hideDelete ? null : (\n \n \n \n \n \n )}\n \n )\n }}\n />\n \n \n );\n};\n","import { Box, MenuItem, SelectChangeEvent } from '@mui/material';\n\nimport { BuilderSlider } from 'builder/components/craft/BuilderComponents/BuilderSlider';\nimport { BACKGROUND_POSITIONS, BACKGROUND_SIZES } from 'builder/constants/constants';\nimport { BackgroundPositions, BackgroundProps, BackgroundSizes, UpdateProp } from 'builder/constants/types';\nimport { capitalizeFirstLetter } from 'utils/utils';\n\nimport { BuilderFormControl, BuilderInputLabel, BuilderSelect } from '../BuilderComponents/BuilderMuiComponents';\nimport { CraftColorPicker } from '../BuilderComponents/ColorPicker';\nimport { ImageUpload } from '../BuilderComponents/ImageUpload';\n\nconst buildList = (arr: (BackgroundSizes | BackgroundPositions)[]) => {\n return arr.map((item) => (\n \n {capitalizeFirstLetter(item)}\n \n ));\n};\n\nconst containerCSS = {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n paddingY: 2\n};\n\ntype HandleSliderChange = (_: Event, newValue: number | number[]) => void;\n\nexport const BackgroundSettings = ({\n backgroundColor,\n backgroundPosition,\n backgroundSize,\n backgroundImage,\n brightness,\n updateProp\n}: Required & UpdateProp) => {\n const onChange = (prop: 'backgroundSize' | 'backgroundPosition') => (e: SelectChangeEvent) => {\n updateProp(prop)(e.target.value);\n };\n\n const handleBrightnessChange: HandleSliderChange = (_, newValue) => {\n updateProp('brightness')(newValue);\n };\n\n const BackgroundSizesList = buildList(BACKGROUND_SIZES);\n const BackgroundPositionsList = buildList(BACKGROUND_POSITIONS);\n\n return (\n \n \n\n \n \n\n \n Background Size\n \n {BackgroundSizesList}\n \n \n\n \n Background Position\n \n {BackgroundPositionsList}\n \n \n\n \n \n \n \n \n );\n};\n","import { Grid } from '@mui/material';\n\nimport { PaddingOptions, PaddingProps, UpdateProp } from 'builder/constants/types';\n\nimport { BuilderSlider } from '../BuilderComponents/BuilderSlider';\n\nexport const PaddingSettings = ({\n paddingTop = '0px',\n paddingBottom = '0px',\n paddingLeft = '0px',\n paddingRight = '0px',\n updateProp\n}: Required & UpdateProp) => {\n const handleSliderChange = (prop: PaddingOptions) => (_: Event, newValue: number | number[]) => {\n updateProp(prop)(`${newValue}px`);\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { toast } from 'react-toastify';\n\nimport { Box } from '@mui/material';\n\nimport { QueryMethods, useEditor, useNode } from '@craftjs/core';\nimport { useThrottledCallback } from 'use-debounce';\n\nimport { useBuilderContext } from 'builder/context/useBuilderContext';\nimport { adjustBrightness } from 'builder/utils/helpers';\nimport { generateRandomNumber } from 'utils/utils';\n\nimport { useLivePropUpdate } from '../../../../utils/useLiveUpdateProp';\nimport { BodyContainerDefaultProps, BodyContainerProps, BodyContainerSettings } from './BodyContainer.settings';\n\nconst getFactor = (currWidth: number) => {\n if (currWidth < 910) return 0.45;\n if (currWidth < 1390) return 0.6;\n\n return 0.75;\n};\n\nconst OUTLINE_WIDTH = 2;\n\nconst overflowToast = () =>\n toast.error('Overflow!', {\n toastId: 'overflowToast',\n autoClose: false\n });\n\ninterface CheckSidesArgs {\n nodeDom: HTMLElement;\n containerRect: DOMRect;\n}\n\nexport const BodyContainer = (props: BodyContainerProps) => {\n const { children, width, height, brightness, ...CSS } = props;\n\n if (brightness) CSS.backgroundImage = `${adjustBrightness(brightness)} ${CSS.backgroundImage || 'url(\"\")'}`;\n\n const { updatePropValue: updateScaleCraft } = useLivePropUpdate('scale');\n\n const { setShouldUpdateIndicator, setOverflow } = useBuilderContext();\n\n const checkOverflows = (query: ReturnType) => {\n const nodeChildren = query.node('ROOT').descendants();\n\n const checkSides = ({ nodeDom, containerRect }: CheckSidesArgs) => {\n const itemRect = nodeDom?.getBoundingClientRect();\n\n const topIsOverflowing = itemRect.top < containerRect.top - OUTLINE_WIDTH;\n const leftIsOverflowing = itemRect.left < containerRect.left - OUTLINE_WIDTH;\n const bottomIsOverflowing = itemRect.bottom > containerRect.bottom + OUTLINE_WIDTH;\n const rightIsOverflowing = itemRect.right > containerRect.right + OUTLINE_WIDTH;\n\n const overflow = topIsOverflowing || leftIsOverflowing || bottomIsOverflowing || rightIsOverflowing;\n\n if (overflow) {\n if (!toast.isActive('overflowToast')) {\n overflowToast();\n }\n\n setOverflow(true);\n nodeDom.classList.add('overflow');\n nodeDom.classList.add('component-selected');\n nodeDom.classList.remove('component-hovered');\n\n setShouldUpdateIndicator(generateRandomNumber());\n } else if (nodeDom.classList.contains('overflow')) {\n setOverflow(false);\n nodeDom.classList.remove('overflow');\n setShouldUpdateIndicator(generateRandomNumber());\n toast.dismiss('overflowToast');\n }\n };\n\n const stack: string[][] = [nodeChildren];\n\n while (stack.length) {\n const nodesIds = stack.pop();\n\n if (nodesIds) {\n // eslint-disable-next-line no-loop-func\n nodesIds.forEach((nodeId) => {\n const descendants = query.node(nodeId).descendants();\n\n if (descendants.length) {\n stack.push(descendants);\n }\n\n const nodeDom = query.node(nodeId).get().dom;\n\n const containerRect = document.querySelector('.page-container')?.getBoundingClientRect();\n\n if (nodeDom && containerRect) {\n checkSides({ nodeDom, containerRect });\n }\n });\n }\n }\n };\n\n const throttleFunc = useThrottledCallback((query: ReturnType) => {\n setTimeout(() => {\n checkOverflows(query);\n }, 100);\n }, 200);\n\n useEditor((_, query) => {\n throttleFunc(query);\n });\n\n const {\n connectors: { connect }\n } = useNode();\n\n const [scale, setScale] = useState(1);\n\n const handleResize = useCallback(() => {\n if (!width || !height) return;\n\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n\n const factor = getFactor(windowWidth);\n\n const maxWidthScale = (windowWidth * factor) / parseInt(width, 10);\n const maxHeightScale = (windowHeight * factor) / parseInt(height, 10);\n\n const newScale = Math.min(maxWidthScale, maxHeightScale, 1);\n\n updateScaleCraft(newScale);\n\n setScale(newScale);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [height, width]);\n\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n handleResize();\n\n return () => window.removeEventListener('resize', handleResize);\n }, [handleResize]);\n\n if (!width || !height) return
Error
;\n\n const containerStyle = {\n width,\n height,\n overflow: 'hidden',\n transformOrigin: 'top left',\n transform: `scale(${scale})`\n };\n\n return (\n \n
\n {children}\n
\n \n );\n};\n\nBodyContainer.craft = {\n displayName: 'Body Container',\n props: BodyContainerDefaultProps,\n related: { settings: BodyContainerSettings }\n};\n","import * as React from 'react';\n\nimport { useEditor, useNode } from '@craftjs/core';\n\n/**\n * Enables live updating a prop. This hooks does not pollute the undo/redo history and only adds to the history when calling `addToHistory`.\n * To update the prop value call `updatePropValue`.\n *\n * @param propName The name of the prop e.g. `label`\n */\nexport const useLivePropUpdate = (\n propName: string\n): {\n /**\n * submit the value to the history\n */\n addToHistory: () => void;\n /**\n * Update the prop's value\n */\n updatePropValue: (value: T) => void;\n} => {\n // We want to support live updating of a prop\n // But we do not want to pollute the history. Therefor we need to use actions.history.ignore().setProp() to bypass the history\n // Sadly that leads to a problem when calling setProp without ignoring the history (in onSubmit) to not write a history entry. Because craft's state manager\n // the prop does not change\n // So we add the history entry manually\n\n const { props, id } = useNode((node) => ({\n props: node.data.props\n }));\n\n const { actions, store } = useEditor();\n // to add the history entry manually we need to save the oldValue before editing starts\n const oldValue = React.useRef(props[propName]);\n // We also need to have a reference to the new value, for the unmount case (see below)\n const newValue = React.useRef(props[propName]);\n const { setProp: ignoredSetProp } = actions.history.ignore();\n\n // we manually add the prop change to the history\n const saveToHistory = React.useCallback(() => {\n const timelinePath = ['nodes', id, 'data', 'props', propName];\n if (oldValue.current !== newValue.current) {\n store.history.add(\n [{ op: 'replace', path: timelinePath, value: newValue.current }],\n [\n {\n op: 'replace',\n path: timelinePath,\n value: oldValue.current\n }\n ]\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // We have an onBlur listener on the text field that updates the props value. The onBlur listener fires an onSubmit, which\n // should call `addToHistory`\n // Sadly the onBlur listener does not fire, when we use the field in a PopOver because closing the PopOver (unblur) leads to an unmount of the component which fires\n // before the onSubmit. So we need to update the history on unmount, too\n React.useEffect(() => {\n return () => {\n saveToHistory();\n };\n }, [saveToHistory]);\n\n const addToHistory = () => {\n saveToHistory();\n\n // We need to update the oldValue so that we do not write another history entry when we unmount the component\n oldValue.current = newValue.current;\n };\n\n const updatePropValue = (newPropValue: T) => {\n ignoredSetProp(id, (p) => {\n // eslint-disable-next-line no-param-reassign\n p[propName] = newPropValue;\n });\n newValue.current = newPropValue;\n };\n\n return { addToHistory, updatePropValue };\n};\n","import { ReactNode, SyntheticEvent, useState } from 'react';\n\nimport { useNode } from '@craftjs/core';\n\nimport { SettingsAccordionItem } from 'builder/components/craft/BuilderComponents/AccordionItem';\nimport { AlignmentProps, BackgroundProps, PaddingProps } from 'builder/constants/types';\n\nimport { AlignmentSettings } from '../../Settings/Alignment.settings';\nimport { BackgroundSettings } from '../../Settings/Background.settings';\nimport { PaddingSettings } from '../../Settings/Padding.settings';\n\nexport const BodyContainerDefaultProps: BodyContainerProps = {\n paddingBottom: '0px',\n paddingTop: '0px',\n paddingLeft: '0px',\n paddingRight: '0px',\n\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n\n backgroundColor: '#000000',\n width: '1920px',\n height: '1080px',\n\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n brightness: 0,\n\n scale: 1\n};\n\nexport interface BodyContainerProps extends PaddingProps, AlignmentProps, BackgroundProps {\n children?: ReactNode;\n display?: 'flex' | 'block' | 'inline';\n width?: string;\n height?: string;\n scale?: number;\n}\n\nexport const BodyContainerSettings = () => {\n const {\n flexDirection,\n justifyContent,\n alignItems,\n paddingBottom,\n paddingTop,\n paddingLeft,\n paddingRight,\n backgroundColor,\n backgroundImage,\n backgroundSize,\n backgroundPosition,\n brightness,\n actions: { setProp }\n } = useNode((node) => ({\n flexDirection: node.data.props.flexDirection,\n justifyContent: node.data.props.justifyContent,\n alignItems: node.data.props.alignItems,\n paddingBottom: node.data.props.paddingBottom,\n paddingTop: node.data.props.paddingTop,\n paddingLeft: node.data.props.paddingLeft,\n paddingRight: node.data.props.paddingRight,\n backgroundColor: node.data.props.backgroundColor,\n\n brightness: node.data.props.brightness,\n backgroundImage: node.data.props.backgroundImage,\n backgroundSize: node.data.props.backgroundSize,\n backgroundPosition: node.data.props.backgroundPosition\n }));\n\n const updateProp = (prop: string) => (value: any) => {\n setProp((props: any) => {\n props[prop] = value;\n return props;\n });\n };\n\n const [expanded, setExpanded] = useState(false);\n\n const handleChange = (panel: string) => (_: SyntheticEvent, isExpanded: boolean) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const paddingProps = {\n paddingBottom,\n paddingTop,\n paddingLeft,\n paddingRight\n } as Required;\n\n const alignmentProps = {\n flexDirection,\n justifyContent,\n alignItems\n } as Required;\n\n const backgroundProps = {\n backgroundImage: backgroundImage?.split('\"')[1],\n backgroundSize,\n backgroundPosition,\n backgroundColor,\n brightness\n } as Required;\n\n return (\n <>\n \n \n \n\n \n \n \n\n \n \n \n \n );\n};\n","import { useEffect, useState } from 'react';\n\nimport { useNode } from '@craftjs/core';\nimport { Resizable } from 're-resizable';\nimport { useThrottledCallback } from 'use-debounce';\n\nimport { FlexBox } from 'generalComponents/BoxModifications';\n\nimport { ContainerProps } from '../BuilderParts/Container/Container.settings';\n\nexport const Resizer = (props: ContainerProps & { lockAspectRatio?: boolean }) => {\n const {\n width,\n height,\n connectors: { connect },\n actions: { setProp },\n store\n } = useNode((node) => {\n return {\n width: node.data.props.width,\n height: node.data.props.height\n };\n });\n\n const root = store?.query?.node('ROOT');\n const scale = root?.get()?.data?.props?.scale;\n\n const { children, lockAspectRatio, ...CSS } = props;\n\n const [internalSize, setInternalSize] = useState({ width, height });\n\n useEffect(() => {\n setInternalSize({ width, height });\n }, [width, height]);\n\n const throttle = useThrottledCallback((prop: { width: number | string; height: number | string }) => {\n prop.width = typeof internalSize.width === 'number' ? `${internalSize.width}px` : internalSize.width;\n\n prop.height = typeof internalSize.height === 'number' ? `${internalSize.height}px` : internalSize.height;\n\n return prop;\n }, 100);\n\n useEffect(() => {\n if (!throttle.isPending()) setProp(throttle);\n }, [internalSize, setProp, throttle]);\n\n const { flexDirection, alignItems, justifyContent, ...rest } = CSS;\n\n const childrenStyles = {\n width: '100%',\n height: '100%',\n position: 'absolute' as const,\n left: 0,\n top: 0,\n flexDirection,\n alignItems,\n justifyContent\n };\n\n return (\n {\n if (ref?.resizable) {\n connect(ref.resizable);\n }\n }}\n lockAspectRatio={lockAspectRatio}\n scale={scale || 1}\n size={internalSize}\n onResize={(_, __, elem) => {\n setInternalSize({\n width: elem.clientWidth,\n height: elem.clientHeight\n });\n }}>\n {children}\n \n );\n};\n","import { useEffect, useRef } from 'react';\n\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\n\nimport { Slide } from 'builder/constants/types';\nimport { CenteredFlexBox } from 'generalComponents/BoxModifications';\n\ntype DraggableItemProps = {\n id: string;\n children: React.ReactNode;\n item: Slide;\n onDragStart: (_: React.DragEvent, item: Slide) => void;\n onDrop: (event: any) => void;\n};\n\nexport const DraggableItem = ({ children, id, item, onDragStart, onDrop }: DraggableItemProps) => {\n const targetRef = useRef(null);\n\n const startDragHandler = (ev: React.DragEvent) => onDragStart(ev, item);\n\n useEffect(() => {\n if (!targetRef.current) return;\n\n const target = targetRef.current;\n\n const disableDraggable = () => {\n const parent = target.parentNode as HTMLDivElement | null;\n if (parent) parent.setAttribute('draggable', 'false');\n };\n\n const enableDraggable = () => {\n const parent = target.parentNode as HTMLDivElement | null;\n if (parent) parent.setAttribute('draggable', 'true');\n };\n\n target.addEventListener('mousedown', disableDraggable);\n target.addEventListener('mouseup', enableDraggable);\n\n return () => {\n target.removeEventListener('mousedown', disableDraggable);\n target.removeEventListener('mouseup', enableDraggable);\n };\n }, [targetRef]);\n\n return (\n ev.preventDefault()}\n onDrop={onDrop}\n onDragStart={startDragHandler}>\n \n
\n {children}\n
\n \n );\n};\n","import { useState } from 'react';\n\nimport { Delete } from '@mui/icons-material';\nimport { IconButton } from '@mui/material';\n\nimport { SwiperRef } from 'swiper/react';\n\nimport { ImageUpload } from 'builder/components/craft/BuilderComponents/ImageUpload';\nimport { DraggableItem } from 'builder/components/craft/BuilderParts/Carousel/Draggable';\nimport { SwiperFallback } from 'builder/components/craft/BuilderParts/Carousel/swiperFallback';\nimport { Slide } from 'builder/constants/types';\nimport { arrayMove } from 'builder/utils/arrayMove';\nimport { CenteredFlexBox } from 'generalComponents/BoxModifications';\n\ntype DraggableSlidesListProps = {\n slides: Slide[];\n swiper: SwiperRef['swiper'] | SwiperFallback['swiper'] | null;\n updateSlideProp: (slide: Slide) => () => (value: any) => void;\n deleteSlide: (slideId: string) => () => void;\n replaceSlides: (updatedSlides: Slide[]) => void;\n};\n\nexport const DraggableSlidesList = ({\n slides,\n swiper,\n updateSlideProp,\n deleteSlide,\n replaceSlides\n}: DraggableSlidesListProps) => {\n const [dragId, setDragId] = useState('');\n const [showBorder, setShowBorder] = useState(false);\n\n const onDrop = (ev: React.DragEvent) => {\n let currentPos = 0;\n let droppedPos = 0;\n\n for (let i = 0; i < slides.length; i += 1) {\n if (dragId === slides[i].id) currentPos = i;\n if (ev.currentTarget.id === slides[i].id) droppedPos = i;\n }\n\n replaceSlides(arrayMove([...slides], currentPos, droppedPos));\n setShowBorder(false);\n };\n\n const onDragStart = (_: React.DragEvent, item: Slide) => {\n setDragId(item.id);\n setShowBorder(true);\n };\n\n return (\n <>\n {slides.map((slide: Slide, i: number) => (\n \n {\n swiper?.slideTo(i);\n swiper?.autoplay?.stop();\n }}\n sx={{\n gap: 1.5,\n padding: showBorder ? '10px' : '11px',\n border: showBorder ? '1px dashed #1a7009' : 'none',\n marginTop: '-1px'\n }}\n key={slide.id}>\n \n\n \n \n \n \n \n ))}\n \n );\n};\n","export const arrayMove = (arr: T[], oldIndex: number, newIndex: number) => {\n if (newIndex >= arr.length) return arr;\n\n arr.splice(newIndex, 0, arr.splice(oldIndex, 1)[0]);\n\n return arr;\n};\n","import uuid from 'react-uuid';\n\nimport { Slide } from 'builder/constants/types';\n\nconst id1 = uuid();\nconst id2 = uuid();\nconst id3 = uuid();\n\nexport const defaultSlides: Slide[] = [\n {\n id: id1,\n backgroundImage: '/static/images/builder/peopleOnTerrace.webp'\n },\n {\n id: id2,\n backgroundImage: '/static/images/builder/flowerShop.webp'\n },\n {\n id: id3,\n backgroundImage: '/static/images/builder/rewardReached.webp'\n }\n];\n","export interface SwiperFallback {\n swiper: {\n autoplay: {\n start(): null;\n stop(): null;\n };\n slideTo(): null;\n };\n}\n\nexport const swiperFallback = {\n swiper: {\n autoplay: {\n start() {\n return null;\n },\n stop() {\n return null;\n }\n },\n slideTo() {\n return null;\n }\n }\n};\n","import { Grid } from '@mui/material';\n\nimport { DecorationProps, ShadowOptions, UpdateProp } from 'builder/constants/types';\n\nimport { BuilderSlider } from '../BuilderComponents/BuilderSlider';\nimport { CraftColorPicker } from '../BuilderComponents/ColorPicker';\n\nconst buildShadowString = (shadow: Record) => {\n const { shadowColor, shadowOffsetX, shadowOffsetY, shadowBlur, shadowSpread } = shadow;\n\n return `${shadowColor} ${shadowOffsetX} ${shadowOffsetY} ${shadowBlur} ${shadowSpread}`;\n};\n\nexport const DecorationSettings = ({\n borderRadius = '0px',\n boxShadow = '#000000 0px 0px 0px 0px',\n updateProp\n}: Required & UpdateProp) => {\n const [shadowColor, shadowOffsetX, shadowOffsetY, shadowBlur, shadowSpread] = boxShadow.split(' ');\n\n const shadow = {\n shadowColor,\n shadowOffsetX,\n shadowOffsetY,\n shadowBlur,\n shadowSpread\n };\n\n const handleBorderRadiusChange = (_: Event, newValue: number | number[]) => {\n updateProp('borderRadius')(`${newValue}px`);\n };\n\n const updateShadow = (type: ShadowOptions) => (_: Event, value: number | number[]) => {\n shadow[type] = `${value}px`;\n return updateProp('boxShadow')(buildShadowString(shadow));\n };\n\n const updateShadowColor = (value: string) => {\n shadow.shadowColor = value;\n return updateProp('boxShadow')(buildShadowString(shadow));\n };\n\n return (\n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n );\n};\n","import { Grid } from '@mui/material';\n\nimport { MarginOptions, MarginProps, UpdateProp } from 'builder/constants/types';\n\nimport { BuilderSlider } from '../BuilderComponents/BuilderSlider';\n\nexport const MarginSettings = ({\n marginBottom = '0px',\n marginTop = '0px',\n marginLeft = '0px',\n marginRight = '0px',\n updateProp\n}: Required & UpdateProp) => {\n const handleSliderChange = (prop: MarginOptions) => (_: Event, newValue: number | number[]) => {\n updateProp(prop)(`${newValue}px`);\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { useEffect, useState } from 'react';\n\nimport { BuilderTextField } from '../BuilderComponents/BuilderMuiComponents';\n\ninterface SizeSettingsProps {\n width: string;\n height: string;\n updateProp: (prop: any) => (value: any) => void;\n minWidth?: number;\n minHeight?: number;\n square?: boolean;\n disableHeight?: boolean;\n}\n\ntype OnBlur = (\n prop: 'width' | 'height'\n) => (e: React.FocusEvent) => void;\n\ntype onPressEnter = (prop: 'width' | 'height') => (\n e: React.KeyboardEvent & {\n target: { value: string };\n }\n) => void;\n\nconst correctFormat = /^\\d+(\\.\\d+)?(%|px)?$/;\n\nconst removePxKeepsPercentage = (value: string) => (value.includes('px') ? String(parseInt(value, 10)) : value);\n\nconst formatValue = (value: string) => {\n if (value.includes('%')) {\n return value;\n }\n\n return value.includes('px') ? value : `${value}px`;\n};\n\nexport const SizeSettings = ({\n width,\n height,\n updateProp,\n minWidth = 10,\n minHeight = 10,\n square = false,\n disableHeight = false\n}: SizeSettingsProps) => {\n const [internalWidth, setInternalWidth] = useState(removePxKeepsPercentage(width));\n const [internalHeight, setInternalHeight] = useState(removePxKeepsPercentage(height));\n\n useEffect(() => {\n setInternalWidth(removePxKeepsPercentage(width));\n }, [width]);\n\n useEffect(() => {\n setInternalHeight(removePxKeepsPercentage(height));\n }, [height]);\n\n const updateSquare = (value: string) => {\n updateProp('width')(formatValue(value));\n updateProp('height')(formatValue(value));\n setInternalWidth(value);\n setInternalHeight(value);\n };\n\n const updateSide = (prop: 'width' | 'height', value: string) => {\n let val = value;\n\n if (prop === 'width') val = +val < minWidth ? `${minWidth}` : val;\n else val = +val < minHeight ? `${minHeight}` : val;\n\n updateProp(prop)(formatValue(val));\n\n if (prop === 'width') setInternalWidth(val);\n else setInternalHeight(val);\n };\n\n const onBlur: OnBlur = (prop) => (e) => {\n if (square) updateSquare(e.target.value);\n else updateSide(prop, e.target.value);\n };\n\n const onPressEnter: onPressEnter = (prop) => (e) => {\n if (e.key === 'Enter' && e.target.value) {\n if (square) updateSquare(e.target.value);\n else updateSide(prop, e.target.value);\n }\n };\n\n return (\n <>\n {\n setInternalWidth(e.target.value);\n }}\n onKeyDown={onPressEnter('width')}\n onBlur={onBlur('width')}\n label=\"Width\"\n error={!correctFormat.test(internalWidth)}\n variant=\"standard\"\n />\n {!disableHeight && (\n {\n setInternalHeight(e.target.value);\n }}\n onKeyDown={onPressEnter('height')}\n onBlur={onBlur('height')}\n error={!correctFormat.test(internalHeight)}\n label=\"Height\"\n variant=\"standard\"\n />\n )}\n \n );\n};\n","import { Autoplay, EffectCards, EffectCube, EffectFade, EffectFlip, Navigation, Pagination } from 'swiper';\nimport { Swiper, SwiperSlide } from 'swiper/react';\n\nimport { Resizer } from '../../BuilderComponents/Resizer';\nimport { CarouselProps, CarouselSettings, carouselDefaultProps } from './Carousel.settings';\n\nexport const Carousel = (props: CarouselProps) => {\n const { slides, delay, dots, arrows, effect, controlsColor, ...CSS } = props;\n\n const slideList = slides?.map((slide) => (\n \n \"slide\"\n \n ));\n\n return (\n \n \n {slideList}\n \n \n );\n};\n\nCarousel.craft = {\n displayName: 'Carousel',\n props: { ...carouselDefaultProps, flexShrink: 0 },\n related: { settings: CarouselSettings },\n rules: { canMoveIn: () => false }\n};\n","import { SyntheticEvent, useEffect, useState } from 'react';\nimport uuid from 'react-uuid';\n\nimport { AddPhotoAlternate } from '@mui/icons-material';\nimport { Box, Button, Checkbox, FormControlLabel } from '@mui/material';\n\nimport { useEditor, useNode } from '@craftjs/core';\nimport { SwiperRef } from 'swiper/react';\n\nimport { DraggableSlidesList } from 'builder/components/craft/BuilderParts/Carousel/DraggableList';\nimport { defaultSlides } from 'builder/components/craft/BuilderParts/Carousel/defaultSlides';\nimport { swiperFallback } from 'builder/components/craft/BuilderParts/Carousel/swiperFallback';\nimport { DecorationProps, MarginProps, SizeProps, Slide } from 'builder/constants/types';\n\nimport { SettingsAccordionItem } from '../../BuilderComponents/AccordionItem';\nimport { BuilderTextField } from '../../BuilderComponents/BuilderMuiComponents';\nimport { CraftColorPicker } from '../../BuilderComponents/ColorPicker';\nimport { DecorationSettings } from '../../Settings/Decoration.settings';\nimport { MarginSettings } from '../../Settings/Margin.settings';\nimport { SizeSettings } from '../../Settings/Size.settings';\n\nexport const CarouselSettings = () => {\n const { actions, query } = useEditor();\n\n const {\n id,\n actions: { setProp },\n slides,\n dots,\n arrows,\n delay,\n borderRadius,\n boxShadow,\n controlsColor,\n marginBottom,\n marginTop,\n marginLeft,\n marginRight,\n width,\n height\n // effect\n } = useNode((node) => ({\n slides: node.data.props.slides,\n dots: node.data.props.dots,\n arrows: node.data.props.arrows,\n delay: node.data.props.delay,\n borderRadius: node.data.props.borderRadius,\n boxShadow: node.data.props.boxShadow,\n controlsColor: node.data.props.controlsColor,\n marginBottom: node.data.props.marginBottom,\n marginTop: node.data.props.marginTop,\n marginLeft: node.data.props.marginLeft,\n marginRight: node.data.props.marginRight,\n width: node.data.props.width,\n height: node.data.props.height\n // effect: node.data.props.effect\n }));\n\n const [expanded, setExpanded] = useState(false);\n\n const handleAccordionChange = (panel: string) => (_: SyntheticEvent, isExpanded: boolean) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const updateProp = (prop: any) => (value: any) => {\n setProp((props: any) => {\n props[prop] = value;\n return props;\n });\n };\n\n const onDelayBlur = (e: React.FocusEvent) => {\n setProp((props: any) => {\n props.delay = Number(e.target.value);\n return props;\n });\n };\n\n const updateDelayOnEnterPress = (\n e: React.KeyboardEvent & {\n target: { value: string };\n }\n ) => {\n setProp((props: any) => {\n props.delay = Number(e.target.value);\n return props;\n });\n };\n\n const onCheckBoxChecked = (prop: 'arrows' | 'dots') => (e: React.ChangeEvent) => {\n setProp((props: any) => {\n props[prop] = e.target.checked;\n return props;\n });\n };\n\n const updateSlideProp = (slide: Slide) => () => (value: any) => {\n setProp((props: any) => {\n props.slides = props.slides.map((sl: Slide) =>\n sl.id === slide.id ? { ...sl, backgroundImage: value } : sl\n );\n return props;\n });\n };\n\n const replaceSlides = (updatedSlides: Slide[]) => {\n setProp((props: any) => {\n props.slides = updatedSlides;\n return props;\n });\n };\n\n const addSlide = () => {\n setProp((props: any) => {\n props.slides = [\n ...props.slides,\n {\n id: uuid(),\n backgroundImage: 'https://wallpaperaccess.com/full/142778.jpg',\n text: `Slide ${slides.length + 1}`\n }\n ];\n\n return props;\n });\n };\n\n const deleteSlide = (slideId: string) => () => {\n setProp((props: any) => {\n props.slides = props.slides.filter((sld: Slide) => sld.id !== slideId);\n return props;\n });\n };\n\n const decorationProps = {\n borderRadius,\n boxShadow\n } as Required;\n\n const marginProps = {\n marginBottom,\n marginTop,\n marginLeft,\n marginRight\n } as Required;\n\n const sizeProps = {\n width,\n height\n } as Required;\n\n const sw = document.querySelector('.mySwiper');\n const { swiper } = (sw as unknown as SwiperRef | null) || swiperFallback;\n\n const dndProps = { slides, swiper, updateSlideProp, deleteSlide, replaceSlides };\n\n useEffect(() => {\n if (!slides.length && id) {\n actions.delete(id);\n query.serialize();\n }\n\n return () => {\n swiper?.autoplay?.start();\n };\n }, [actions, id, query, slides, swiper]);\n\n return (\n <>\n \n \n\n \n\n \n }\n label=\"Dots\"\n labelPlacement=\"end\"\n />\n }\n label=\"Arrows\"\n labelPlacement=\"end\"\n />\n \n \n\n \n \n = 20}\n color=\"builderDarkBlue\"\n onClick={addSlide}\n variant=\"outlined\"\n startIcon={}>\n {slides.length >= 20 ? 'Max 20 slides' : 'Add slide'}\n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n );\n};\n\nexport interface CarouselProps extends MarginProps, DecorationProps {\n slides?: Slide[];\n delay?: number;\n dots?: boolean;\n arrows?: boolean;\n effect?: 'fade'; // Keep fade for now, we can add 'flip' | 'cards' | 'cube' | 'slide' on request;\n controlsColor?: string;\n width?: string;\n height?: string;\n}\n\nexport const carouselDefaultProps: Required = {\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '0px',\n boxShadow: '#000000 0px 0px 0px 0px',\n controlsColor: '#000000',\n slides: defaultSlides,\n delay: 3000,\n arrows: true,\n dots: true,\n effect: 'fade',\n width: '50%',\n height: '30%'\n};\n","import { ReactNode, SyntheticEvent, useState } from 'react';\n\nimport { useNode } from '@craftjs/core';\n\nimport {\n AlignmentProps,\n BackgroundProps,\n DecorationProps,\n MarginProps,\n PaddingProps,\n SizeProps\n} from 'builder/constants/types';\n\nimport { SettingsAccordionItem } from '../../BuilderComponents/AccordionItem';\nimport { AlignmentSettings } from '../../Settings/Alignment.settings';\nimport { BackgroundSettings } from '../../Settings/Background.settings';\nimport { DecorationSettings } from '../../Settings/Decoration.settings';\nimport { MarginSettings } from '../../Settings/Margin.settings';\nimport { PaddingSettings } from '../../Settings/Padding.settings';\nimport { SizeSettings } from '../../Settings/Size.settings';\n\nexport interface ContainerProps extends MarginProps, PaddingProps, AlignmentProps, DecorationProps, BackgroundProps {\n children?: ReactNode;\n\n display?: 'flex' | 'block' | 'inline';\n\n flexGrow?: number;\n width?: string;\n height?: string;\n}\n\nexport const ContainerDefaultProps: ContainerProps = {\n paddingBottom: '0px',\n paddingTop: '0px',\n paddingLeft: '0px',\n paddingRight: '0px',\n\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n\n backgroundColor: '#FFFFFF',\n borderRadius: '0px',\n\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n\n width: '50%',\n height: '20%',\n\n boxShadow: '#000000 0px 0px 0px 0px',\n\n backgroundImage: '',\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n brightness: 0\n};\n\nexport const ContainerSettings = () => {\n const {\n width,\n height,\n\n paddingBottom,\n paddingTop,\n paddingLeft,\n paddingRight,\n\n marginBottom,\n marginTop,\n marginLeft,\n marginRight,\n\n flexDirection,\n justifyContent,\n alignItems,\n\n backgroundColor,\n borderRadius,\n boxShadow,\n\n brightness,\n backgroundImage,\n backgroundSize,\n backgroundPosition,\n actions: { setProp }\n } = useNode((node) => ({\n width: node.data.props.width,\n height: node.data.props.height,\n\n paddingBottom: node.data.props.paddingBottom,\n paddingTop: node.data.props.paddingTop,\n paddingLeft: node.data.props.paddingLeft,\n paddingRight: node.data.props.paddingRight,\n marginBottom: node.data.props.marginBottom,\n marginTop: node.data.props.marginTop,\n marginLeft: node.data.props.marginLeft,\n marginRight: node.data.props.marginRight,\n flexDirection: node.data.props.flexDirection,\n justifyContent: node.data.props.justifyContent,\n alignItems: node.data.props.alignItems,\n\n backgroundColor: node.data.props.backgroundColor,\n borderRadius: node.data.props.borderRadius,\n boxShadow: node.data.props.boxShadow,\n\n brightness: node.data.props.brightness,\n backgroundImage: node.data.props.backgroundImage,\n backgroundSize: node.data.props.backgroundSize,\n backgroundPosition: node.data.props.backgroundPosition\n }));\n\n const updateProp = (prop: keyof ContainerProps) => (value: any) => {\n setProp((props: any) => {\n props[prop] = value;\n return props;\n });\n };\n\n const [expanded, setExpanded] = useState(false);\n\n const handleChange = (panel: string) => (_: SyntheticEvent, isExpanded: boolean) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const marginProps = {\n marginBottom,\n marginTop,\n marginLeft,\n marginRight\n } as Required;\n\n const paddingProps = {\n paddingBottom,\n paddingTop,\n paddingLeft,\n paddingRight\n } as Required;\n\n const alignmentProps = {\n flexDirection,\n justifyContent,\n alignItems\n } as Required;\n\n const decorationProps = {\n borderRadius,\n boxShadow\n } as Required;\n\n const sizeProps = {\n width,\n height\n } as Required;\n\n const backgroundProps = {\n backgroundImage: backgroundImage?.split('\"')[1],\n backgroundSize,\n backgroundPosition,\n backgroundColor,\n brightness\n } as Required;\n\n return (\n <>\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n );\n};\n","import { useEffect, useState } from 'react';\n\nimport { useNode } from '@craftjs/core';\nimport { Resizable } from 're-resizable';\nimport { useThrottledCallback } from 'use-debounce';\n\nimport { adjustBrightness } from 'builder/utils/helpers';\nimport { FlexBox } from 'generalComponents/BoxModifications';\n\nimport { ContainerDefaultProps, ContainerProps, ContainerSettings } from './Container.settings';\n\nexport const Container = (props: ContainerProps) => {\n const {\n width,\n height,\n connectors: { connect },\n actions: { setProp },\n store\n } = useNode((node) => {\n return {\n width: node.data.props.width,\n height: node.data.props.height\n };\n });\n\n const root = store?.query?.node('ROOT');\n const scale = root?.get()?.data?.props?.scale;\n\n const { children, brightness, ...CSS } = props;\n\n if (brightness) CSS.backgroundImage = `${adjustBrightness(brightness)} ${CSS.backgroundImage || 'url(\"\")'}`;\n\n const [internalSize, setInternalSize] = useState({ width, height });\n\n useEffect(() => {\n setInternalSize({ width, height });\n }, [width, height]);\n\n const throttle = useThrottledCallback((prop: { width: number | string; height: number | string }) => {\n prop.width = typeof internalSize.width === 'number' ? `${internalSize.width}px` : internalSize.width;\n\n prop.height = typeof internalSize.height === 'number' ? `${internalSize.height}px` : internalSize.height;\n\n return prop;\n }, 100);\n\n useEffect(() => {\n if (!throttle.isPending()) setProp(throttle);\n }, [internalSize, setProp, throttle]);\n\n const { flexDirection, alignItems, justifyContent, ...rest } = CSS;\n\n const childrenStyles = {\n width: '100%',\n height: '100%',\n position: 'absolute' as const,\n left: 0,\n top: 0,\n flexDirection,\n alignItems,\n justifyContent\n };\n\n return (\n {\n if (ref?.resizable) {\n connect(ref.resizable);\n }\n }}\n scale={scale || 1}\n size={internalSize}\n onResize={(_, __, elem) => {\n setInternalSize({\n width: elem.clientWidth,\n height: elem.clientHeight\n });\n }}>\n {children}\n \n );\n};\n\nContainer.craft = {\n displayName: 'Container',\n props: { ...ContainerDefaultProps, flexShrink: 0 },\n related: { settings: ContainerSettings }\n};\n","import { Grid } from '@mui/material';\n\nimport { TextDecorationProps, TextShadowOptions, UpdateProp } from 'builder/constants/types';\n\nimport { BuilderSlider } from '../BuilderComponents/BuilderSlider';\nimport { CraftColorPicker } from '../BuilderComponents/ColorPicker';\n\nconst buildShadowString = (shadow: Record) => {\n const { shadowColor, shadowOffsetX, shadowOffsetY, shadowBlur } = shadow;\n return `${shadowColor} ${shadowOffsetX} ${shadowOffsetY} ${shadowBlur} `;\n};\n\nexport const TextDecorationSettings = ({\n textShadow = 'rgba(0,0,0,0) 0px 0px 0px',\n updateProp\n}: Required & UpdateProp) => {\n const [shadowColor, shadowOffsetX, shadowOffsetY, shadowBlur] = textShadow.split(' ');\n\n const shadow = {\n shadowColor,\n shadowOffsetX,\n shadowOffsetY,\n shadowBlur\n };\n\n const updateShadow = (type: TextShadowOptions) => (_: Event, value: number | number[]) => {\n shadow[type] = `${value}px`;\n return updateProp('textShadow')(buildShadowString(shadow));\n };\n\n const updateShadowColor = (value: string) => {\n shadow.shadowColor = value;\n return updateProp('textShadow')(buildShadowString(shadow));\n };\n\n return (\n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n );\n};\n","import { Grid, MenuItem } from '@mui/material';\n\nimport {\n FontStyleOptions,\n FontWeightOptions,\n OptionalTypographyProps,\n TextAlignOptions,\n TypographyCustomPropNames,\n TypographyProps,\n UpdateProp\n} from 'builder/constants/types';\nimport { merchantSelector } from 'store/selectors';\nimport { store } from 'store/store';\n\nimport { BuilderFormControl, BuilderInputLabel, BuilderSelect } from '../BuilderComponents/BuilderMuiComponents';\nimport { BuilderSlider } from '../BuilderComponents/BuilderSlider';\nimport { CraftColorPicker } from '../BuilderComponents/ColorPicker';\n\ninterface Mark {\n value: number;\n label: string;\n prop: FontWeightOptions | TextAlignOptions | FontStyleOptions | boolean;\n}\n\ntype OnChange = (\n array: Mark[],\n prop: string,\n fallback: 'center' | 'normal'\n) => (_: Event, value: number | number[]) => void;\n\nexport const TypographySettings = ({\n fontWeight = '400',\n fontWeightPropName = 'fontWeight',\n textAlign = 'center',\n textAlignPropName = 'textAlign',\n fontStyle = 'normal',\n fontStylePropName = 'fontStyle',\n fontFamily = 'sans-serif',\n fontFamilyPropName = 'fontFamily',\n fontSize = '16px',\n fontSizePropName = 'fontSize',\n color = '#000000',\n colorPropName = 'color',\n colon,\n updateProp\n}: Required & OptionalTypographyProps & UpdateProp & TypographyCustomPropNames) => {\n const availableFonts = [\n 'Dancing Script',\n 'Verdana',\n 'sans-serif',\n 'Poppins',\n 'Lato',\n 'Open Sans',\n 'Roboto',\n 'Nunito',\n 'IBM Plex Sans',\n 'Exo',\n 'Ubuntu',\n 'Montserrat',\n 'Playfair Display',\n 'Merriweather',\n 'Libre Baskerville',\n 'PT Serif',\n 'Lora',\n 'Raleway',\n 'Quicksand',\n 'Cabin',\n 'Alegreya',\n 'Noto Sans',\n 'Barlow',\n 'Caudex'\n ];\n\n const eliteHotelsMerchantId = '649366915647a5e21352973b';\n const { id, PayAttAdmin } = merchantSelector(store.getState());\n\n if (id === eliteHotelsMerchantId || PayAttAdmin) {\n availableFonts.push(...['Elite-AgaramondPro', 'Elite-FuturaLTPro-Book', 'Elite-FuturaLTPro-Light']);\n }\n\n const onChange: OnChange = (array, prop, fallback) => (_, value) => {\n const variant = array.find((mark) => mark.value === value);\n updateProp(prop)(variant?.prop || fallback);\n };\n\n const colonMarks: Mark[] = [\n { value: 0, label: 'Hide', prop: false },\n { value: 1, label: 'Show', prop: true }\n ];\n\n const fontStyleMarks: Mark[] = [\n { value: 0, label: 'Normal', prop: 'normal' },\n { value: 100, label: 'Italic', prop: 'italic' }\n ];\n\n const fontWeightMarks: Mark[] = [\n { value: 0, label: 'L', prop: '300' }, // Light\n { value: 33, label: 'N', prop: '400' }, // Normal\n { value: 66, label: 'M', prop: '500' }, // Medium\n { value: 100, label: 'B', prop: '700' } // Bold\n ];\n\n const textAlignMarks: Mark[] = [\n { value: 0, label: 'Left', prop: 'left' },\n { value: 50, label: 'Center', prop: 'center' },\n { value: 100, label: 'Right', prop: 'right' }\n ];\n\n const fontStyleValue = fontStyleMarks.find((mark) => mark.prop === fontStyle)?.value;\n\n const fontWeightValue = fontWeightMarks.find((mark) => mark.prop === fontWeight)?.value;\n\n const textAlignValue = textAlignMarks.find((mark) => mark.prop === textAlign)?.value;\n\n const fontsList = availableFonts.map((font) => (\n \n {font}\n \n ));\n\n const handleSliderChange = (prop: string) => (_: Event, newValue: number | number[]) => {\n updateProp(prop)(`${newValue}px`);\n };\n\n return (\n \n \n \n \n\n \n \n Select font\n {\n updateProp(fontFamilyPropName)(e.target.value);\n }}>\n {fontsList}\n \n \n \n\n {typeof colon !== 'undefined' && (\n \n {\n updateProp('colon')(e.target.value);\n }}\n />\n \n )}\n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n );\n};\n","import { SyntheticEvent, useState } from 'react';\n\nimport { useNode } from '@craftjs/core';\n\nimport { SettingsAccordionItem } from 'builder/components/craft/BuilderComponents/AccordionItem';\nimport { MarginProps, PaddingProps, TextDecorationProps, TypographyProps } from 'builder/constants/types';\n\nimport { MarginSettings } from '../../Settings/Margin.settings';\nimport { PaddingSettings } from '../../Settings/Padding.settings';\nimport { TextDecorationSettings } from '../../Settings/TextDecoration.settings';\nimport { TypographySettings } from '../../Settings/Typography.settings';\n\nexport interface TextProps extends MarginProps, PaddingProps, TextDecorationProps, TypographyProps {\n text: string;\n}\n\nexport const TextDefaultProps: TextProps = {\n text: 'Default text',\n\n color: '#000000',\n fontSize: '16px',\n fontFamily: 'Poppins',\n fontWeight: '400',\n fontStyle: 'normal',\n textAlign: 'center',\n\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n\n paddingBottom: '0px',\n paddingTop: '0px',\n paddingLeft: '0px',\n paddingRight: '0px',\n\n textShadow: 'rgba(0,0,0,0) 0px 0px 0px'\n};\n\nexport const TextSettings = () => {\n const {\n fontSize,\n fontFamily,\n fontStyle,\n color,\n marginBottom,\n marginTop,\n marginLeft,\n marginRight,\n paddingBottom,\n paddingTop,\n paddingLeft,\n paddingRight,\n textShadow,\n fontWeight,\n textAlign,\n colon,\n actions: { setProp }\n } = useNode((node) => ({\n fontSize: node.data.props.fontSize,\n fontFamily: node.data.props.fontFamily,\n fontStyle: node.data.props.fontStyle,\n color: node.data.props.color,\n marginBottom: node.data.props.marginBottom,\n marginTop: node.data.props.marginTop,\n marginLeft: node.data.props.marginLeft,\n marginRight: node.data.props.marginRight,\n paddingBottom: node.data.props.paddingBottom,\n paddingTop: node.data.props.paddingTop,\n paddingLeft: node.data.props.paddingLeft,\n paddingRight: node.data.props.paddingRight,\n backgroundColor: node.data.props.backgroundColor,\n textShadow: node.data.props.textShadow,\n fontWeight: node.data.props.fontWeight,\n textAlign: node.data.props.textAlign,\n colon: node.data.props.colon\n }));\n\n const [expanded, setExpanded] = useState(false);\n\n const handleChange = (panel: string) => (_: SyntheticEvent, isExpanded: boolean) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const updateProp = (prop: string) => (value: any) => {\n setProp((props: any) => {\n props[prop] = value;\n return props;\n });\n };\n\n const marginProps: Required = {\n marginBottom,\n marginTop,\n marginLeft,\n marginRight\n };\n\n const paddingProps: Required = {\n paddingBottom,\n paddingTop,\n paddingLeft,\n paddingRight\n };\n\n const textDecorationProps: Required = {\n textShadow\n };\n\n const typographyProps: Required = {\n color,\n fontWeight,\n fontStyle,\n textAlign,\n fontSize,\n fontFamily\n };\n\n return (\n <>\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { Tooltip } from '@mui/material';\n\nimport { useNode } from '@craftjs/core';\n\nimport { OptionalTypographyProps } from 'builder/constants/types';\n\nimport { TextDefaultProps, TextProps, TextSettings } from '../Text/Text.settings';\n\nexport const ProgressText = ({ colon, ...rest }: TextProps & OptionalTypographyProps) => {\n const {\n connectors: { connect, drag }\n } = useNode();\n\n return (\n
connect(drag(ref as HTMLDivElement))} style={rest}>\n }>\n \n \n {colon ? ':' : ''}\n \n \n
\n );\n};\n\nProgressText.craft = {\n displayName: 'Progress Text',\n props: { ...TextDefaultProps, colon: false },\n related: { settings: TextSettings }\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { Tooltip } from '@mui/material';\n\nimport { useNode } from '@craftjs/core';\n\nimport { TextDefaultProps, TextProps, TextSettings } from '../Text/Text.settings';\n\nexport const RewardText = (props: TextProps) => {\n const {\n connectors: { connect, drag }\n } = useNode();\n\n return (\n
connect(drag(ref as HTMLDivElement))} style={props}>\n }>\n \n \n \n \n
\n );\n};\n\nRewardText.craft = {\n displayName: 'Reward Text',\n props: TextDefaultProps,\n related: { settings: TextSettings }\n};\n","import { useEffect, useRef } from 'react';\nimport ContentEditable from 'react-contenteditable';\n\nimport { Box } from '@mui/material';\n\nimport { useNode } from '@craftjs/core';\n\nimport { useBuilderContext } from '../../../../context/useBuilderContext';\nimport { TextDefaultProps, TextProps, TextSettings } from './Text.settings';\n\nexport const Text = (props: TextProps) => {\n const {\n connectors: { connect },\n hasSelectedNode,\n actions: { setProp }\n } = useNode((state) => ({\n hasSelectedNode: Boolean(state.events.selected),\n hasDraggedNode: Boolean(state.events.dragged)\n }));\n\n const textInput = useRef(null);\n\n const { focusTextInput, setEditable, editable } = useBuilderContext();\n\n useEffect(() => {\n if (!hasSelectedNode) setEditable(false);\n }, [hasSelectedNode, setEditable]);\n\n const { text, ...CSS } = props;\n\n return (\n connect(ref as any)}\n onDoubleClick={() => {\n focusTextInput(textInput.current);\n }}>\n {\n setProp((pr: TextProps) => {\n pr.text = e.target.value.replace(/<\\/?[^>]+(>|$)/g, '');\n return pr;\n });\n }}\n tagName=\"div\"\n style={CSS}\n />\n \n );\n};\n\nText.craft = {\n displayName: 'Text',\n props: TextDefaultProps,\n related: { settings: TextSettings },\n rules: { canMoveIn: () => false }\n};\n","import uuid from 'react-uuid';\n\nimport { FreshNode } from '@craftjs/core';\n\nimport { Container } from '../components/craft/BuilderParts/Container/Container';\nimport { ContainerDefaultProps, ContainerProps } from '../components/craft/BuilderParts/Container/Container.settings';\nimport { ProgressText } from '../components/craft/BuilderParts/StampCard/ProgressText';\nimport { RewardText } from '../components/craft/BuilderParts/StampCard/RewardText';\nimport { Text } from '../components/craft/BuilderParts/Text/Text';\nimport { TextDefaultProps } from '../components/craft/BuilderParts/Text/Text.settings';\nimport { useBuilderContext } from '../context/useBuilderContext';\n\ninterface BuildNodeArgs {\n width?: string;\n height?: string;\n backgroundColor?: string;\n flexDirection?: string;\n}\n\nexport const buildNode = ({\n width = '60%',\n height = '30%',\n backgroundColor = 'white',\n flexDirection = 'column'\n}: BuildNodeArgs): Required => ({\n id: uuid(),\n data: {\n type: Container,\n props: {\n ...ContainerDefaultProps,\n backgroundColor,\n height,\n width,\n flexDirection\n },\n isCanvas: true\n }\n});\n\nexport const buildStampCardTextContainerNode = (props?: ContainerProps): Required => ({\n id: uuid(),\n data: {\n isCanvas: true,\n type: Container,\n props: {\n ...ContainerDefaultProps,\n backgroundColor: 'white',\n height: '50%',\n width: '100%',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n ...(props || {})\n }\n }\n});\n\nexport const buildTextNode = (props: { text: string }): Required => ({\n id: uuid(),\n data: {\n type: Text,\n props: { ...TextDefaultProps, ...props },\n isCanvas: false,\n name: 'Stamp card text',\n displayName: 'Stamp card text'\n }\n});\n\nexport const useBuildRewardTextNode = (): Required => {\n const { device } = useBuilderContext();\n\n return {\n id: uuid(),\n data: {\n isCanvas: true,\n type: RewardText,\n props: {\n ...TextDefaultProps,\n fontSize: device === 'phone' ? '30px' : '50px',\n fontWeight: '500',\n color: '#12890D',\n paddingLeft: device === 'phone' ? '5px' : '0px',\n paddingRight: device === 'phone' ? '5px' : '0px'\n }\n }\n };\n};\n\nexport const useBuildProgressTextNode = (): Required => {\n const { device } = useBuilderContext();\n\n return {\n id: uuid(),\n data: {\n isCanvas: true,\n type: ProgressText,\n props: {\n ...TextDefaultProps,\n fontSize: device === 'phone' ? '20px' : '33px',\n paddingLeft: device === 'phone' ? '5px' : '0px',\n paddingRight: device === 'phone' ? '5px' : '0px'\n }\n }\n };\n};\n","import { useEffect } from 'react';\n\nimport { useEditor, useNode } from '@craftjs/core';\n\nimport { buildNode } from '../../../../../utils/buildNode';\nimport { Resizer } from '../../../BuilderComponents/Resizer';\nimport { ContainerDefaultProps, ContainerProps, ContainerSettings } from '../Container.settings';\n\n/*\n┌───────────┬───────────┐\n│ │ │\n│ │ │\n│ │ │\n│ │ │\n│ │ │\n└───────────┴───────────┘\n */\n\nconst settings = [\n { backgroundColor: 'rgba(183,253,252,0.42)', height: '100%', width: '50%' }, // Left column\n { backgroundColor: 'rgba(209,183,253,0.42)', height: '100%', width: '50%' } // Right Column\n];\n\nexport const Container1x2 = (props: ContainerProps) => {\n const { query, actions } = useEditor();\n const { id } = useNode();\n\n useEffect(() => {\n if (!query.node(id).descendants().length) {\n settings.map(buildNode).forEach((col) => {\n actions.history.ignore().add(query.parseFreshNode(col).toNode(), id);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return ;\n};\n\nContainer1x2.craft = {\n displayName: 'Container 1x2',\n props: { ...ContainerDefaultProps, flexDirection: 'row' },\n rules: { canDrag: () => true },\n related: { settings: ContainerSettings }\n};\n","import { useEffect } from 'react';\n\nimport { useEditor, useNode } from '@craftjs/core';\n\nimport { buildNode } from '../../../../../utils/buildNode';\nimport { Resizer } from '../../../BuilderComponents/Resizer';\nimport { ContainerDefaultProps, ContainerProps, ContainerSettings } from '../Container.settings';\n\n/*\n┌──────┬──────┬──────┐\n│ │ │ │\n│ │ │ │\n│ │ │ │\n│ │ │ │\n│ │ │ │\n│ │ │ │\n└──────┴──────┴──────┘\n */\n\n// prettier-ignore\nconst settings = [\n { backgroundColor: 'rgba(183,253,252,0.42)', height: '100%', width: '33.33333%' }, // Left column\n { backgroundColor: 'rgba(209,183,253,0.42)', height: '100%', width: '33.33333%' }, // Middle Column\n { backgroundColor: 'rgba(188,253,183,0.42)', height: '100%', width: '33.33333%' } // Right Column\n];\n\nexport const Container1x3 = (props: ContainerProps) => {\n const { query, actions } = useEditor();\n const { id } = useNode();\n\n useEffect(() => {\n if (!query.node(id).descendants().length) {\n settings.map(buildNode).forEach((col) => {\n actions.history.ignore().add(query.parseFreshNode(col).toNode(), id);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return ;\n};\n\nContainer1x3.craft = {\n displayName: 'Container 1x3',\n props: { ...ContainerDefaultProps, flexDirection: 'row' },\n rules: { canDrag: () => true },\n related: { settings: ContainerSettings }\n};\n","import { useEffect } from 'react';\n\nimport { useEditor, useNode } from '@craftjs/core';\n\nimport { buildNode } from '../../../../../utils/buildNode';\nimport { Resizer } from '../../../BuilderComponents/Resizer';\nimport { ContainerDefaultProps, ContainerProps, ContainerSettings } from '../Container.settings';\n\n/*\n┌────────────────────┐\n│ │\n│ │\n│ │\n├────────────────────┤\n│ │\n│ │\n│ │\n└────────────────────┘\n */\n\nconst settings = [\n { backgroundColor: 'rgba(183,253,252,0.42)', height: '50%', width: '100%' }, // Top row\n { backgroundColor: 'rgba(209,183,253,0.42)', height: '50%', width: '100%' } // Bottom row\n];\n\nexport const Container2x1 = (props: ContainerProps) => {\n const { query, actions } = useEditor();\n const { id } = useNode();\n\n useEffect(() => {\n if (!query.node(id).descendants().length) {\n settings.map(buildNode).forEach((row) => {\n actions.history.ignore().add(query.parseFreshNode(row).toNode(), id);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return ;\n};\n\nContainer2x1.craft = {\n displayName: 'Container 2x1',\n props: ContainerDefaultProps,\n rules: { canDrag: () => true },\n related: { settings: ContainerSettings }\n};\n","import { useEffect } from 'react';\n\nimport { useEditor, useNode } from '@craftjs/core';\n\nimport { buildNode } from '../../../../../utils/buildNode';\nimport { Resizer } from '../../../BuilderComponents/Resizer';\nimport { ContainerDefaultProps, ContainerProps, ContainerSettings } from '../Container.settings';\n\n/*\n┌──────────┬──────────┐\n│ │ │\n│ │ │\n│ │ │\n├──────────┼──────────┤\n│ │ │\n│ │ │\n│ │ │\n└──────────┴──────────┘\n */\n\n// prettier-ignore\nconst settings = [\n { height: '50%', width: '100%', flexDirection: 'row' }, // Top row\n { height: '50%', width: '100%', flexDirection: 'row' }, // Bottom row\n { height: '100%', width: '50%', backgroundColor: 'rgba(183,253,252,0.42)' }, // Top row left square\n { height: '100%', width: '50%', backgroundColor: 'rgba(183, 253, 216, 0.76)' }, // Top row right square\n { height: '100%', width: '50%', backgroundColor: 'rgba(209, 183, 253, 0.42)' }, // Bottom row left square\n { height: '100%', width: '50%', backgroundColor: 'rgba(235, 8, 152, 0.42)' } // Bottom row right square\n];\n\nexport const Container2x2 = (props: ContainerProps) => {\n const { query, actions } = useEditor();\n const { id } = useNode();\n\n useEffect(() => {\n if (!query.node(id).descendants().length) {\n settings.map(buildNode).forEach((item, index, rows) => {\n actions.history.ignore().add(\n query.parseFreshNode(item).toNode(),\n // eslint-disable-next-line no-nested-ternary\n index < 2 ? id : index < 4 ? rows[0].id : rows[1].id\n );\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return ;\n};\n\nContainer2x2.craft = {\n displayName: 'Container 2x2',\n props: ContainerDefaultProps,\n rules: { canDrag: () => true },\n related: { settings: ContainerSettings }\n};\n","import { useEffect } from 'react';\n\nimport { useEditor, useNode } from '@craftjs/core';\n\nimport { buildNode } from '../../../../../utils/buildNode';\nimport { Resizer } from '../../../BuilderComponents/Resizer';\nimport { ContainerDefaultProps, ContainerProps, ContainerSettings } from '../Container.settings';\n\n/*\n┌────────────────────┐\n│ │\n│ │\n├────────────────────┤\n│ │\n│ │\n├────────────────────┤\n│ │\n│ │\n└────────────────────┘\n */\n\n// prettier-ignore\nconst settings = [\n { backgroundColor: 'rgba(11, 187, 67, 0.42)', height: '33.3333333333333%', width: '100%' }, // Top row\n { backgroundColor: 'rgba(235, 239, 5, 0.42)', height: '33.3333333333333%', width: '100%' }, // Middle row\n { backgroundColor: 'rgba(44, 11, 187, 0.42)', height: '33.3333333333333%', width: '100%' } // Bottom row\n];\n\nexport const Container3x1 = (props: ContainerProps) => {\n const { query, actions } = useEditor();\n const { id } = useNode();\n\n useEffect(() => {\n if (!query.node(id).descendants().length) {\n settings.map(buildNode).forEach((row) => {\n actions.history.ignore().add(query.parseFreshNode(row).toNode(), id);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return ;\n};\n\nContainer3x1.craft = {\n displayName: 'Container 3x1',\n props: ContainerDefaultProps,\n rules: { canDrag: () => true },\n related: { settings: ContainerSettings }\n};\n","import { useEffect } from 'react';\n\nimport { useEditor, useNode } from '@craftjs/core';\n\nimport { buildNode } from '../../../../../utils/buildNode';\nimport { Resizer } from '../../../BuilderComponents/Resizer';\nimport { ContainerDefaultProps, ContainerProps, ContainerSettings } from '../Container.settings';\n\n/*\n┌────┬───────────┐\n│ │ │\n│ │ │\n│ ├─────┬─────┤\n│ │ │ │\n│ │ │ │\n└────┴─────┴─────┘\n */\n\nconst settings = [\n { backgroundColor: 'red', height: '100%', width: '30%' }, // Left column\n { height: '100%', width: '70%' }, // Right column\n { backgroundColor: 'orange', height: '50%', width: '100%' }, // Right column row 1\n { flexDirection: 'row', height: '50%', width: '100%' }, // Right column row 1\n { backgroundColor: 'yellow', height: '100%', width: '50%' }, // Right column row 2 left square\n { backgroundColor: 'cyan', height: '100%', width: '50%' } // Right column row 2 right square\n];\n\nexport const ContainerCustom1 = (props: ContainerProps) => {\n const { query, actions } = useEditor();\n const { id } = useNode();\n\n useEffect(() => {\n if (!query.node(id).descendants().length) {\n const [cl1, cl2, cl2rw1, cl2rw2, cl2rw2sq1, cl2rw2sq2] = settings\n .map(buildNode)\n .map((item) => query.parseFreshNode(item).toNode());\n\n actions.history.ignore().add(cl1, id);\n actions.history.ignore().add(cl2, id);\n actions.history.ignore().add(cl2rw1, cl2.id);\n actions.history.ignore().add(cl2rw2, cl2.id);\n actions.history.ignore().add(cl2rw2sq1, cl2rw2.id);\n actions.history.ignore().add(cl2rw2sq2, cl2rw2.id);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return ;\n};\n\nContainerCustom1.craft = {\n displayName: 'Container Custom 1',\n props: { ...ContainerDefaultProps, flexDirection: 'row' },\n rules: { canDrag: () => true },\n related: { settings: ContainerSettings }\n};\n","import { useEffect } from 'react';\n\nimport { useEditor, useNode } from '@craftjs/core';\n\nimport { buildNode } from '../../../../../utils/buildNode';\nimport { Resizer } from '../../../BuilderComponents/Resizer';\nimport { ContainerDefaultProps, ContainerProps, ContainerSettings } from '../Container.settings';\n\n/*\n┌───────────┬────┐\n│ │ │\n│ │ │\n├─────┬─────┤ │\n│ │ │ │\n│ │ │ │\n└─────┴─────┴────┘\n */\n\nconst settings = [\n { backgroundColor: 'red', height: '100%', width: '30%' }, // Right column\n { height: '100%', width: '70%' }, // Left column\n { backgroundColor: 'orange', height: '50%', width: '100%' }, // Left column row 1\n { flexDirection: 'row', height: '50%', width: '100%' }, // Left column row 1\n { backgroundColor: 'yellow', height: '100%', width: '50%' }, // Left column row 2 left square\n { backgroundColor: 'cyan', height: '100%', width: '50%' } // Left column row 2 right square\n];\n\nexport const ContainerCustom2 = (props: ContainerProps) => {\n const { query, actions } = useEditor();\n const { id } = useNode();\n\n useEffect(() => {\n if (!query.node(id).descendants().length) {\n const [cl1, cl2, cl1rw1, cl1rw2, cl1rw2sq1, cl1rw2sq2] = settings\n .map(buildNode)\n .map((item) => query.parseFreshNode(item).toNode());\n\n actions.history.ignore().add(cl1, id);\n actions.history.ignore().add(cl2, id);\n actions.history.ignore().add(cl1rw1, cl2.id);\n actions.history.ignore().add(cl1rw2, cl2.id);\n actions.history.ignore().add(cl1rw2sq1, cl1rw2.id);\n actions.history.ignore().add(cl1rw2sq2, cl1rw2.id);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return ;\n};\n\nContainerCustom2.craft = {\n displayName: 'Container Custom 2',\n props: { ...ContainerDefaultProps, flexDirection: 'row' },\n rules: { canDrag: () => true },\n related: { settings: ContainerSettings }\n};\n","import React from 'react';\n\nimport { Box } from '@mui/material';\n\nimport { VerticalFlexBox } from 'generalComponents/BoxModifications';\n\nimport { BuilderTextField } from './BuilderMuiComponents';\n\ninterface TextInputWithDescriptionProps {\n label: string;\n description: JSX.Element;\n onBlur: (e: React.FocusEvent) => void;\n onKeyDown: (\n e: React.KeyboardEvent & {\n target: {\n value: string;\n };\n }\n ) => void;\n defaultValue?: string;\n}\n\nexport const TextInputWithDescription: React.FC = ({\n label,\n description,\n onBlur,\n onKeyDown,\n defaultValue\n}) => {\n return (\n \n {description}\n \n \n );\n};\n","import { ReactNode, SyntheticEvent, useState } from 'react';\n\nimport { Box, Typography } from '@mui/material';\n\nimport { useNode } from '@craftjs/core';\n\nimport { DecorationProps, MarginProps, PaddingProps, SizeProps } from 'builder/constants/types';\n\nimport { SettingsAccordionItem } from '../../BuilderComponents/AccordionItem';\nimport { ImageUpload } from '../../BuilderComponents/ImageUpload';\nimport { TextInputWithDescription } from '../../BuilderComponents/TextInputWithDescription';\nimport { DecorationSettings } from '../../Settings/Decoration.settings';\nimport { MarginSettings } from '../../Settings/Margin.settings';\nimport { PaddingSettings } from '../../Settings/Padding.settings';\nimport { SizeSettings } from '../../Settings/Size.settings';\n\nexport interface ImageAndVideoProps extends MarginProps, PaddingProps, DecorationProps {\n children?: ReactNode;\n backgroundColor?: string;\n display?: 'flex' | 'block' | 'inline';\n flexGrow?: number;\n width?: string;\n height?: string;\n src?: string;\n youtubeId?: string;\n}\n\nexport const BuilderImageDefaultProps: ImageAndVideoProps = {\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n\n paddingBottom: '0px',\n paddingTop: '0px',\n paddingLeft: '0px',\n paddingRight: '0px',\n\n backgroundColor: 'rgba(255, 255, 255, 0)',\n borderRadius: '0px',\n\n width: '50%',\n height: '20%',\n\n boxShadow: '#000000 0px 0px 0px 0px',\n\n src: 'https://wallpaperaccess.com/full/142778.jpg'\n};\n\nexport const BuilderImageSettings = () => {\n const {\n src,\n youtubeId,\n\n width,\n height,\n\n paddingBottom,\n paddingTop,\n paddingLeft,\n paddingRight,\n\n marginBottom,\n marginTop,\n marginLeft,\n marginRight,\n\n borderRadius,\n boxShadow,\n\n actions: { setProp }\n } = useNode((node) => ({\n src: node.data.props.src,\n youtubeId: node.data.props.youtubeId,\n\n width: node.data.props.width,\n height: node.data.props.height,\n\n paddingBottom: node.data.props.paddingBottom,\n paddingTop: node.data.props.paddingTop,\n paddingLeft: node.data.props.paddingLeft,\n paddingRight: node.data.props.paddingRight,\n\n marginBottom: node.data.props.marginBottom,\n marginTop: node.data.props.marginTop,\n marginLeft: node.data.props.marginLeft,\n marginRight: node.data.props.marginRight,\n\n backgroundColor: node.data.props.backgroundColor,\n borderRadius: node.data.props.borderRadius,\n boxShadow: node.data.props.boxShadow\n }));\n\n const updateProp = (prop: keyof ImageAndVideoProps) => (value: any) => {\n setProp((props: any) => {\n props[prop] = value;\n return props;\n });\n };\n\n const [expanded, setExpanded] = useState(false);\n\n const handleChange = (panel: string) => (_: SyntheticEvent, isExpanded: boolean) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const marginProps = {\n marginBottom,\n marginTop,\n marginLeft,\n marginRight\n } as Required;\n\n const paddingProps = {\n paddingBottom,\n paddingTop,\n paddingLeft,\n paddingRight\n } as Required;\n\n const decorationProps = {\n borderRadius,\n boxShadow\n } as Required;\n\n const sizeProps = {\n width,\n height\n } as Required;\n\n const videoSettings = typeof youtubeId === 'string';\n\n const onBlur = (e: React.FocusEvent) => updateProp('youtubeId')(e.target.value);\n\n const onEnterPress = (\n e: React.KeyboardEvent & {\n target: { value: string };\n }\n ) => {\n if (e.key === 'Enter') updateProp('youtubeId')(e.target.value);\n };\n\n // TODO: Add more image settings\n return (\n <>\n \n {videoSettings ? (\n \n \n Provide a YouTube video ID, of the video that you wish to show. This is the value\n after the 'v=' in the URL.\n
\n
\n For example, the video ID used as a default in the field below comes from the URL:\n https://www.youtube.com/watch?v=oh9SD7PItf4&ab_channel=PayAtt\n
\n \n }\n defaultValue={youtubeId}\n onBlur={onBlur}\n onKeyDown={onEnterPress}\n label=\"YouTube Video ID\"\n />\n ) : (\n \n )}\n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n );\n};\n","import { Resizer } from '../../BuilderComponents/Resizer';\nimport { BuilderImageDefaultProps, BuilderImageSettings, ImageAndVideoProps } from './ImageAndVideo.settings';\n\nexport const Logo = (props: ImageAndVideoProps) => {\n const { src, ...rest } = props;\n\n return (\n \n \n \n );\n};\n\nLogo.craft = {\n displayName: 'Logo',\n props: { ...BuilderImageDefaultProps, width: '50%', height: '50%', flexShrink: 0 },\n related: { settings: BuilderImageSettings },\n rules: { canMoveIn: () => false }\n};\n","import { Resizer } from '../../BuilderComponents/Resizer';\nimport { BuilderImageDefaultProps, BuilderImageSettings, ImageAndVideoProps } from './ImageAndVideo.settings';\n\nexport const Image = (props: ImageAndVideoProps) => {\n const { src, ...rest } = props;\n\n return (\n \n \n \n );\n};\n\nImage.craft = {\n displayName: 'Image',\n props: { ...BuilderImageDefaultProps, flexShrink: 0 },\n related: { settings: BuilderImageSettings },\n rules: { canMoveIn: () => false }\n};\n","import YouTube from 'react-youtube';\n\nimport { Resizer } from '../../BuilderComponents/Resizer';\nimport { BuilderImageDefaultProps, BuilderImageSettings, ImageAndVideoProps } from './ImageAndVideo.settings';\n\nexport const YoutubeVideo = (props: ImageAndVideoProps) => {\n const { youtubeId, ...rest } = props;\n\n return (\n \n {\n e.target.playVideo();\n }}\n />\n \n );\n};\n\nYoutubeVideo.craft = {\n displayName: 'Youtube Video',\n props: { ...BuilderImageDefaultProps, youtubeId: 'oh9SD7PItf4', flexShrink: 0 },\n related: { settings: BuilderImageSettings },\n rules: { canMoveIn: () => false }\n};\n","export const buildMobileNumpadProps = (template: object) => ({\n ...template,\n width: '350px',\n height: '480px',\n outputFontSize: '30px',\n numbersFontSize: '33px',\n deleteFontSize: '24px',\n sendFontSize: '24px'\n});\n\nexport const buildTabletNumpadProps = (template: object) => ({\n ...template,\n width: '360px',\n height: '400px',\n outputFontSize: '30px',\n numbersFontSize: '33px',\n deleteFontSize: '24px',\n sendFontSize: '24px'\n});\n\nexport const defaultTemplate = {\n template: 'Default',\n buttonsBorderRadius: '5px',\n numbersFontFamily: 'Poppins',\n numbersFontWeight: '500',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '50px',\n numbersTextColor: 'rgba(255,255,255,1)',\n numbersBackgroundColor: 'rgba(157,169,178,1)',\n deleteFontFamily: 'Poppins',\n deleteFontWeight: '500',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '45px',\n deleteTextColor: 'rgba(255,255,255,1)',\n deleteBackgroundColor: 'rgba(247,217,0,1)',\n sendFontFamily: 'Poppins',\n sendFontWeight: '500',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '45px',\n sendTextColor: 'rgba(255,255,255,1)',\n sendBackgroundColor: 'rgba(0,204,0,1)',\n containerBackgroundColor: 'rgba(30,41,59,0)',\n containerBorderColor: 'rgba(0,0,0,0)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Poppins',\n outputFontWeight: '500',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: 'rgba(85,85,85,1)',\n outputBackgroundColor: 'rgba(248,250,252,1)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(140,249,255,1) 0px 0px 0px 0px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const greenTemplate = {\n template: 'Green',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: 'rgba(252,252,252,1)',\n numbersBackgroundColor: 'rgba(24,159,44,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(250,111,111,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(255,255,56,1)',\n containerBackgroundColor: 'rgba(97,240,116,0.54)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(150,236,158,1) 0px 0px 10px 10px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const blackWhiteTemplate = {\n template: 'Black and white',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#1e293b',\n numbersBackgroundColor: 'rgba(248,250,252,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(250,111,111,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(255,255,56,1)',\n containerBackgroundColor: 'rgba(30,41,59,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(140,249,255,1) 0px 0px 0px 0px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const blackLtBlueTemplate = {\n template: 'Black and light blue',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#1e293b',\n numbersBackgroundColor: 'rgba(149,238,254,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(250,111,111,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(255,255,56,1)',\n containerBackgroundColor: 'rgba(30,41,59,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(140,249,255,1) 0px 0px 10px 10px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const blackYellowTemplate = {\n template: 'Black and yellow',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#1e293b',\n numbersBackgroundColor: 'rgba(249,254,149,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(250,111,111,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(142,255,56,1)',\n containerBackgroundColor: 'rgba(30,41,59,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(249,254,149,1) 0px 0px 10px 10px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const blackPinkTemplate = {\n template: 'Black and pink',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#1e293b',\n numbersBackgroundColor: 'rgba(255,178,239,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(250,111,111,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(142,255,56,1)',\n containerBackgroundColor: 'rgba(30,41,59,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(255,178,239,1) 0px 0px 10px 10px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const blackRedTemplate = {\n template: 'Black and red',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#1e293b',\n numbersBackgroundColor: 'rgba(239,68,68,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(161,176,255,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(142,255,56,1)',\n containerBackgroundColor: 'rgba(30,41,59,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(239,68,68,1) 0px 0px 10px 10px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const blackGreenTemplate = {\n template: 'Black and green',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#1e293b',\n numbersBackgroundColor: 'rgba(97,255,117,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(250,111,111,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(255,242,56,1)',\n containerBackgroundColor: 'rgba(30,41,59,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(97,255,117,1) 0px 0px 10px 10px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const blackBlueTemplate = {\n template: 'Black and blue',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#1e293b',\n numbersBackgroundColor: 'rgba(97,192,255,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(250,111,111,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(255,242,56,1)',\n containerBackgroundColor: 'rgba(30,41,59,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(97,192,255,1) 0px 0px 10px 10px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const blackPurpleTemplate = {\n template: 'Black and purple',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#1e293b',\n numbersBackgroundColor: 'rgba(168,85,247,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(250,111,111,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(255,242,56,1)',\n containerBackgroundColor: 'rgba(30,41,59,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(168,85,247,1) 0px 0px 10px 10px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const blackOrangeTemplate = {\n template: 'Black and orange',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#1e293b',\n numbersBackgroundColor: 'rgba(251,146,60,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(250,111,111,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(255,242,56,1)',\n containerBackgroundColor: 'rgba(30,41,59,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(251,146,60,1) 0px 0px 10px 10px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const whiteBlackTemplate = {\n template: 'White and black',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#f8fafc',\n numbersBackgroundColor: 'rgba(30,41,59,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(248,113,113,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(255,242,56,1)',\n containerBackgroundColor: 'rgba(248,250,252,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(97,255,117,1) 0px 0px 0px 0px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const whiteGreenTemplate = {\n template: 'White and green',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#f8fafc',\n numbersBackgroundColor: 'rgba(74,222,128,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(248,113,113,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(255,242,56,1)',\n containerBackgroundColor: 'rgba(248,250,252,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(97,255,117,1) 0px 0px 0px 0px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const whiteCyanTemplate = {\n template: 'White and cyan',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#f8fafc',\n numbersBackgroundColor: 'rgba(34,211,238,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(248,113,113,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(255,242,56,1)',\n containerBackgroundColor: 'rgba(248,250,252,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(97,255,117,1) 0px 0px 0px 0px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const whitePurpleTemplate = {\n template: 'White and purple',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#f8fafc',\n numbersBackgroundColor: 'rgba(192,132,252,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(248,113,113,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(255,242,56,1)',\n containerBackgroundColor: 'rgba(248,250,252,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(97,255,117,1) 0px 0px 0px 0px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const whiteBlueTemplate = {\n template: 'White and blue',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#f8fafc',\n numbersBackgroundColor: 'rgba(37,99,235,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(248,113,113,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(255,242,56,1)',\n containerBackgroundColor: 'rgba(248,250,252,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(97,255,117,1) 0px 0px 0px 0px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const whiteOrangeTemplate = {\n template: 'White and orange',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#f8fafc',\n numbersBackgroundColor: 'rgba(253,186,116,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(248,113,113,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(255,242,56,1)',\n containerBackgroundColor: 'rgba(248,250,252,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(97,255,117,1) 0px 0px 0px 0px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const whitePinkTemplate = {\n template: 'White and pink',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#f8fafc',\n numbersBackgroundColor: 'rgba(252,165,165,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(248,113,113,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(255,242,56,1)',\n containerBackgroundColor: 'rgba(248,250,252,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(97,255,117,1) 0px 0px 0px 0px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n\nexport const whiteRedTemplate = {\n template: 'White and red',\n buttonsBorderRadius: '30px',\n numbersFontFamily: 'sans-serif',\n numbersFontWeight: 'bold',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '42px',\n numbersTextColor: '#f8fafc',\n numbersBackgroundColor: 'rgba(239,68,68,1)',\n deleteFontFamily: 'Dancing Script',\n deleteFontWeight: 'normal',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '42px',\n deleteTextColor: '#1e293b',\n deleteBackgroundColor: 'rgba(168,85,247,1)',\n sendFontFamily: 'Dancing Script',\n sendFontWeight: 'bold',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '42px',\n sendTextColor: '#1e293b',\n sendBackgroundColor: 'rgba(255,242,56,1)',\n containerBackgroundColor: 'rgba(248,250,252,1)',\n containerBorderColor: 'rgba(0,0,0,0.4)',\n containerBorderWidth: '1px',\n outputFontFamily: 'Verdana',\n outputFontWeight: 'normal',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: '#1e293b',\n outputBackgroundColor: 'rgba(207,207,207,0.51)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(97,255,117,1) 0px 0px 0px 0px',\n width: '571px',\n height: '633px',\n outputVariant: 'large'\n};\n","import { SyntheticEvent, useState } from 'react';\n\nimport { Grid, MenuItem } from '@mui/material';\n\nimport { useNode } from '@craftjs/core';\n\nimport {\n DecorationProps,\n FontStyleOptions,\n FontWeightOptions,\n MarginProps,\n SizeProps,\n TextAlignOptions,\n TypographyCustomPropNames,\n TypographyProps\n} from 'builder/constants/types';\nimport { capitalizeFirstLetter } from 'utils/utils';\n\nimport { useBuilderContext } from '../../../../context/useBuilderContext';\nimport { getCorrectPropsObjectForDevice } from '../../../../utils/getCorrectPropForDevice';\nimport { SettingsAccordionItem } from '../../BuilderComponents/AccordionItem';\nimport { BuilderFormControl, BuilderInputLabel, BuilderSelect } from '../../BuilderComponents/BuilderMuiComponents';\nimport { BuilderSlider } from '../../BuilderComponents/BuilderSlider';\nimport { CraftColorPicker } from '../../BuilderComponents/ColorPicker';\nimport { DecorationSettings } from '../../Settings/Decoration.settings';\nimport { MarginSettings } from '../../Settings/Margin.settings';\nimport { SizeSettings } from '../../Settings/Size.settings';\nimport { TypographySettings } from '../../Settings/Typography.settings';\nimport {\n blackBlueTemplate,\n blackGreenTemplate,\n blackLtBlueTemplate,\n blackOrangeTemplate,\n blackPinkTemplate,\n blackPurpleTemplate,\n blackRedTemplate,\n blackWhiteTemplate,\n blackYellowTemplate,\n buildMobileNumpadProps,\n buildTabletNumpadProps,\n defaultTemplate,\n greenTemplate,\n whiteBlackTemplate,\n whiteBlueTemplate,\n whiteCyanTemplate,\n whiteGreenTemplate,\n whiteOrangeTemplate,\n whitePinkTemplate,\n whitePurpleTemplate,\n whiteRedTemplate\n} from './templates';\n\nconst templateMap = {\n Default: defaultTemplate,\n Green: greenTemplate,\n 'Black and white': blackWhiteTemplate,\n 'Black and light blue': blackLtBlueTemplate,\n 'Black and blue': blackBlueTemplate,\n 'Black and green': blackGreenTemplate,\n 'Black and orange': blackOrangeTemplate,\n 'Black and pink': blackPinkTemplate,\n 'Black and purple': blackPurpleTemplate,\n 'Black and red': blackRedTemplate,\n 'Black and yellow': blackYellowTemplate,\n 'White and black': whiteBlackTemplate,\n 'White and green': whiteGreenTemplate,\n 'White and cyan': whiteCyanTemplate,\n 'White and purple': whitePurpleTemplate,\n 'White and blue': whiteBlueTemplate,\n 'White and orange': whiteOrangeTemplate,\n 'White and pink': whitePinkTemplate,\n 'White and red': whiteRedTemplate\n};\n\nconst availableTemplates: TemplateOptions[] = [\n 'Default',\n 'Black and white',\n 'Black and light blue',\n 'Black and blue',\n 'Black and green',\n 'Black and orange',\n 'Black and pink',\n 'Black and purple',\n 'Black and red',\n 'Black and yellow',\n 'White and black',\n 'White and green',\n 'White and cyan',\n 'White and purple',\n 'White and blue',\n 'White and orange',\n 'White and pink',\n 'White and red',\n 'Green'\n];\n\nconst templateList = availableTemplates.map((temp) => (\n \n {temp}\n \n));\n\nconst typographyOptions: TypographyOptions[] = ['Numbers', 'Delete', 'Send', 'Output'];\n\nconst typographyOptionsList = typographyOptions.map((temp) => (\n \n {temp}\n \n));\n\nconst availableOutputVariants: OutputVariants[] = ['small', 'medium', 'large'];\n\nconst outputList = availableOutputVariants.map((variant) => (\n \n {capitalizeFirstLetter(variant)}\n \n));\n\nexport const NumberPadSettings = () => {\n const {\n actions: { setProp },\n template,\n buttonsBorderRadius,\n numbersFontFamily,\n numbersFontWeight,\n numbersFontStyle,\n numbersTextAlign,\n numbersFontSize,\n numbersTextColor,\n numbersBackgroundColor,\n deleteFontFamily,\n deleteFontWeight,\n deleteFontStyle,\n deleteTextAlign,\n deleteFontSize,\n deleteTextColor,\n deleteBackgroundColor,\n sendFontFamily,\n sendFontWeight,\n sendFontStyle,\n sendTextAlign,\n sendFontSize,\n sendTextColor,\n sendBackgroundColor,\n containerBackgroundColor,\n containerBorderColor,\n containerBorderWidth,\n outputVariant,\n outputFontFamily,\n outputFontWeight,\n outputFontStyle,\n outputTextAlign,\n outputFontSize,\n outputTextColor,\n outputBackgroundColor,\n marginBottom,\n marginTop,\n marginLeft,\n marginRight,\n borderRadius,\n boxShadow,\n width,\n height\n } = useNode((node) => ({\n template: node.data.props.template,\n buttonsBorderRadius: node.data.props.buttonsBorderRadius,\n numbersFontFamily: node.data.props.numbersFontFamily,\n numbersFontWeight: node.data.props.numbersFontWeight,\n numbersFontStyle: node.data.props.numbersFontStyle,\n numbersTextAlign: node.data.props.numbersTextAlign,\n numbersFontSize: node.data.props.numbersFontSize,\n numbersTextColor: node.data.props.numbersTextColor,\n numbersBackgroundColor: node.data.props.numbersBackgroundColor,\n deleteFontFamily: node.data.props.deleteFontFamily,\n deleteFontWeight: node.data.props.deleteFontWeight,\n deleteFontStyle: node.data.props.deleteFontStyle,\n deleteTextAlign: node.data.props.deleteTextAlign,\n deleteFontSize: node.data.props.deleteFontSize,\n deleteTextColor: node.data.props.deleteTextColor,\n deleteBackgroundColor: node.data.props.deleteBackgroundColor,\n sendFontFamily: node.data.props.sendFontFamily,\n sendFontWeight: node.data.props.sendFontWeight,\n sendFontStyle: node.data.props.sendFontStyle,\n sendTextAlign: node.data.props.sendTextAlign,\n sendFontSize: node.data.props.sendFontSize,\n sendTextColor: node.data.props.sendTextColor,\n sendBackgroundColor: node.data.props.sendBackgroundColor,\n containerBackgroundColor: node.data.props.containerBackgroundColor,\n containerBorderColor: node.data.props.containerBorderColor,\n containerBorderWidth: node.data.props.containerBorderWidth,\n outputVariant: node.data.props.outputVariant,\n outputFontFamily: node.data.props.outputFontFamily,\n outputFontWeight: node.data.props.outputFontWeight,\n outputFontStyle: node.data.props.outputFontStyle,\n outputTextAlign: node.data.props.outputTextAlign,\n outputFontSize: node.data.props.outputFontSize,\n outputTextColor: node.data.props.outputTextColor,\n outputBackgroundColor: node.data.props.outputBackgroundColor,\n marginBottom: node.data.props.marginBottom,\n marginTop: node.data.props.marginTop,\n marginLeft: node.data.props.marginLeft,\n marginRight: node.data.props.marginRight,\n borderRadius: node.data.props.borderRadius,\n boxShadow: node.data.props.boxShadow,\n width: node.data.props.width,\n height: node.data.props.height\n }));\n\n const { device } = useBuilderContext();\n\n const [expanded, setExpanded] = useState(false);\n\n const [selectedTypographyOption, setSelectedTypographyOption] = useState('Numbers');\n\n const handleAccordionChange = (panel: string) => (_: SyntheticEvent, isExpanded: boolean) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const updateProp = (prop: any) => (value: any) => {\n setProp((props: any) => {\n props[prop] = value;\n return props;\n });\n };\n\n const decorationProps = {\n borderRadius,\n boxShadow\n } as Required;\n\n const marginProps = {\n marginBottom,\n marginTop,\n marginLeft,\n marginRight\n } as Required;\n\n const sizeProps = {\n width,\n height\n } as Required;\n\n const numbersTypographyProps: RequiredCustomTypographyProps = {\n color: numbersTextColor,\n fontWeight: numbersFontWeight,\n fontStyle: numbersFontStyle,\n textAlign: numbersTextAlign,\n fontSize: numbersFontSize,\n fontFamily: numbersFontFamily,\n\n colorPropName: 'numbersTextColor',\n fontWeightPropName: 'numbersFontWeight',\n fontStylePropName: 'numbersFontStyle',\n textAlignPropName: 'numbersTextAlign',\n fontSizePropName: 'numbersFontSize',\n fontFamilyPropName: 'numbersFontFamily'\n };\n\n const deleteTypographyProps: RequiredCustomTypographyProps = {\n color: deleteTextColor,\n fontWeight: deleteFontWeight,\n fontStyle: deleteFontStyle,\n textAlign: deleteTextAlign,\n fontSize: deleteFontSize,\n fontFamily: deleteFontFamily,\n\n colorPropName: 'deleteTextColor',\n fontWeightPropName: 'deleteFontWeight',\n fontStylePropName: 'deleteFontStyle',\n textAlignPropName: 'deleteTextAlign',\n fontSizePropName: 'deleteFontSize',\n fontFamilyPropName: 'deleteFontFamily'\n };\n\n const sendTypographyProps: RequiredCustomTypographyProps = {\n color: sendTextColor,\n fontWeight: sendFontWeight,\n fontStyle: sendFontStyle,\n textAlign: sendTextAlign,\n fontSize: sendFontSize,\n fontFamily: sendFontFamily,\n\n colorPropName: 'sendTextColor',\n fontWeightPropName: 'sendFontWeight',\n fontStylePropName: 'sendFontStyle',\n textAlignPropName: 'sendTextAlign',\n fontSizePropName: 'sendFontSize',\n fontFamilyPropName: 'sendFontFamily'\n };\n\n const outputTypographyProps: RequiredCustomTypographyProps = {\n color: outputTextColor,\n fontWeight: outputFontWeight,\n fontStyle: outputFontStyle,\n textAlign: outputTextAlign,\n fontSize: outputFontSize,\n fontFamily: outputFontFamily,\n\n colorPropName: 'outputTextColor',\n fontWeightPropName: 'outputFontWeight',\n fontStylePropName: 'outputFontStyle',\n textAlignPropName: 'outputTextAlign',\n fontSizePropName: 'outputFontSize',\n fontFamilyPropName: 'outputFontFamily'\n };\n\n const updateTemplate = (variant: unknown) => {\n setProp((props: any) => {\n Object.entries(\n getCorrectPropsObjectForDevice(device)(\n buildMobileNumpadProps(templateMap[variant as keyof typeof templateMap]),\n buildTabletNumpadProps(templateMap[variant as keyof typeof templateMap]),\n templateMap[variant as keyof typeof templateMap]\n ) as any\n ).forEach(([prop, value]) => {\n props[prop] = value;\n });\n\n return props;\n });\n };\n\n const handleBorderRadiusChange: HandleSliderChange = (_, newValue) => {\n updateProp('buttonsBorderRadius')(`${newValue}px`);\n };\n\n const handleBorderWidthChange: HandleSliderChange = (_, newValue) => {\n updateProp('containerBorderWidth')(`${newValue}px`);\n };\n\n return (\n <>\n \n \n Select template\n {\n updateTemplate(e.target.value);\n }}>\n {templateList}\n \n \n\n \n Select output variant\n {\n updateProp('outputVariant')(e.target.value);\n }}>\n {outputList}\n \n \n\n \n\n \n\n \n \n \n \n \n \n \n \n \n\n \n \n Select target\n {\n setSelectedTypographyOption(e.target.value as TypographyOptions);\n }}>\n {typographyOptionsList}\n \n \n\n {selectedTypographyOption === 'Output' && (\n <>\n \n \n \n )}\n\n {selectedTypographyOption === 'Numbers' && (\n <>\n \n \n \n )}\n\n {selectedTypographyOption === 'Delete' && (\n <>\n \n \n \n )}\n\n {selectedTypographyOption === 'Send' && (\n <>\n \n \n \n )}\n \n\n \n \n \n\n \n \n \n\n \n \n \n \n );\n};\n\nexport type TemplateOptions =\n | 'Default'\n | 'Black and white'\n | 'Black and light blue'\n | 'Black and yellow'\n | 'Black and pink'\n | 'Black and red'\n | 'Black and green'\n | 'Black and blue'\n | 'Black and purple'\n | 'Black and orange'\n | 'White and black'\n | 'White and green'\n | 'White and cyan'\n | 'White and purple'\n | 'White and blue'\n | 'White and orange'\n | 'White and pink'\n | 'White and red'\n | 'Green';\n\nexport type TypographyOptions = 'Numbers' | 'Delete' | 'Send' | 'Output';\n\nexport type OutputVariants = 'small' | 'medium' | 'large';\n\ntype HandleSliderChange = (_: Event, newValue: number | number[]) => void;\n\ntype RequiredCustomTypographyProps = Required;\n\nexport interface NumberPadProps extends MarginProps, DecorationProps {\n template?: TemplateOptions;\n\n buttonsBorderRadius?: string;\n\n numbersFontFamily?: string;\n numbersFontWeight?: FontWeightOptions;\n numbersFontStyle?: FontStyleOptions;\n numbersTextAlign?: TextAlignOptions;\n numbersFontSize?: string;\n numbersTextColor?: string;\n numbersBackgroundColor?: string;\n\n deleteFontFamily?: string;\n deleteFontWeight?: FontWeightOptions;\n deleteFontStyle?: FontStyleOptions;\n deleteTextAlign?: TextAlignOptions;\n deleteFontSize?: string;\n deleteTextColor?: string;\n deleteBackgroundColor?: string;\n\n sendFontFamily?: string;\n sendFontWeight?: FontWeightOptions;\n sendFontStyle?: FontStyleOptions;\n sendTextAlign?: TextAlignOptions;\n sendFontSize?: string;\n sendTextColor?: string;\n sendBackgroundColor?: string;\n\n containerBackgroundColor?: string;\n containerBorderColor?: string;\n containerBorderWidth?: string;\n\n outputVariant?: OutputVariants;\n outputFontFamily?: string;\n outputFontWeight?: FontWeightOptions;\n outputFontStyle?: FontStyleOptions;\n outputTextAlign?: TextAlignOptions;\n outputFontSize?: string;\n outputTextColor?: string;\n outputBackgroundColor?: string;\n\n width?: string;\n height?: string;\n}\n\nexport const numberPadDefaultProps: Required = {\n template: 'Default',\n buttonsBorderRadius: '5px',\n numbersFontFamily: 'Poppins',\n numbersFontWeight: '500',\n numbersFontStyle: 'normal',\n numbersTextAlign: 'center',\n numbersFontSize: '50px',\n numbersTextColor: 'rgba(255,255,255,1)',\n numbersBackgroundColor: 'rgba(157,169,178,1)',\n deleteFontFamily: 'Poppins',\n deleteFontWeight: '500',\n deleteFontStyle: 'normal',\n deleteTextAlign: 'center',\n deleteFontSize: '45px',\n deleteTextColor: 'rgba(255,255,255,1)',\n deleteBackgroundColor: 'rgba(247,217,0,1)',\n sendFontFamily: 'Poppins',\n sendFontWeight: '500',\n sendFontStyle: 'normal',\n sendTextAlign: 'center',\n sendFontSize: '45px',\n sendTextColor: 'rgba(255,255,255,1)',\n sendBackgroundColor: 'rgba(0,204,0,1)',\n containerBackgroundColor: 'rgba(30,41,59,0)',\n containerBorderColor: 'rgba(0,0,0,0)',\n containerBorderWidth: '1px',\n outputVariant: 'large',\n outputFontFamily: 'Poppins',\n outputFontWeight: '500',\n outputFontStyle: 'normal',\n outputTextAlign: 'center',\n outputFontSize: '50px',\n outputTextColor: 'rgba(85,85,85,1)',\n outputBackgroundColor: 'rgba(248,250,252,1)',\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n borderRadius: '25px',\n boxShadow: 'rgba(140,249,255,1) 0px 0px 0px 0px',\n width: '30%',\n height: '60%'\n};\n","import { Box, Grid } from '@mui/material';\n\nimport { Resizer } from '../../BuilderComponents/Resizer';\nimport { NumberPadProps, NumberPadSettings, numberPadDefaultProps } from './NumberPad.settings';\n\nexport const Numberpad = (props: NumberPadProps) => {\n const {\n outputVariant,\n containerBorderColor,\n containerBorderWidth,\n buttonsBorderRadius,\n numbersFontFamily,\n numbersFontWeight,\n numbersFontStyle,\n numbersTextAlign,\n numbersFontSize,\n numbersTextColor,\n numbersBackgroundColor,\n deleteFontFamily,\n deleteFontWeight,\n deleteFontStyle,\n deleteTextAlign,\n deleteFontSize,\n deleteTextColor,\n deleteBackgroundColor,\n sendFontFamily,\n sendFontWeight,\n sendFontStyle,\n sendTextAlign,\n sendFontSize,\n sendTextColor,\n sendBackgroundColor,\n containerBackgroundColor,\n outputFontFamily,\n outputFontWeight,\n outputFontStyle,\n outputTextAlign,\n outputFontSize,\n outputTextColor,\n outputBackgroundColor,\n marginBottom,\n marginTop,\n marginLeft,\n marginRight,\n borderRadius,\n boxShadow\n } = props;\n\n const outputOptions = {\n small: '50%',\n medium: '75%',\n large: '100%'\n };\n const centerCSS = {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n };\n const buttonCSS = {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n borderRadius: buttonsBorderRadius,\n transition: 'all .3s',\n WebkitFontSmoothing: 'subpixel-antialiased',\n '&:active': {\n opacity: 0.7,\n transform: 'translateY(-2px) translateZ(0)',\n boxShadow: '0 5px 10px rgba(0, 0, 0, 0.2)',\n backfaceVisibility: 'hidden',\n WebkitFontSmoothing: 'subpixel-antialiased'\n }\n };\n const numbersCSS = {\n ...buttonCSS,\n fontFamily: numbersFontFamily,\n fontStyle: numbersFontStyle,\n textAlign: numbersTextAlign,\n fontSize: numbersFontSize,\n fontWeight: numbersFontWeight,\n color: numbersTextColor,\n backgroundColor: numbersBackgroundColor\n };\n const deleteCSS = {\n ...buttonCSS,\n fontFamily: deleteFontFamily,\n fontStyle: deleteFontStyle,\n textAlign: deleteTextAlign,\n fontSize: deleteFontSize,\n fontWeight: deleteFontWeight,\n color: deleteTextColor,\n backgroundColor: deleteBackgroundColor\n };\n const sendCSS = {\n ...buttonCSS,\n fontFamily: sendFontFamily,\n fontStyle: sendFontStyle,\n textAlign: sendTextAlign,\n fontSize: sendFontSize,\n fontWeight: sendFontWeight,\n color: sendTextColor,\n backgroundColor: sendBackgroundColor\n };\n const outputCSS = {\n fontFamily: outputFontFamily,\n fontStyle: outputFontStyle,\n textAlign: outputTextAlign,\n fontSize: outputFontSize,\n fontWeight: outputFontWeight,\n color: outputTextColor,\n backgroundColor: outputBackgroundColor,\n width: '100%',\n height: outputOptions[outputVariant as keyof typeof outputOptions]\n };\n\n const renderButtons = () => {\n const buttons = [];\n\n for (let i = 1; i <= 9; i += 1) {\n buttons.push(\n \n {i}\n \n );\n }\n\n buttons.push(\n \n DEL\n \n );\n buttons.push(\n \n 0\n \n );\n buttons.push(\n \n SKICKA\n \n );\n\n return buttons;\n };\n\n return (\n \n \n \n 0701234567\n \n {renderButtons()}\n \n
\n );\n};\n\nexport const NUMPAD_NAME = 'Numpad';\n\nNumberpad.craft = {\n displayName: NUMPAD_NAME,\n props: { ...numberPadDefaultProps, flexShrink: 0 },\n related: { settings: NumberPadSettings },\n rules: { canMoveIn: () => false }\n};\n","import { Resizer } from '../../BuilderComponents/Resizer';\nimport { QRCodeDefaultProps, QRCodeProps, QRCodeSettings } from './QRCode.settings';\n\nexport const QRCode = (props: QRCodeProps) => {\n const { borderRadius, src } = props;\n\n return (\n \n \n \n );\n};\n\nQRCode.craft = {\n displayName: 'Integrated QR Code',\n props: { ...QRCodeDefaultProps, flexShrink: 0 },\n related: { settings: QRCodeSettings },\n rules: { canMoveIn: () => false }\n};\n","import { SyntheticEvent, useState } from 'react';\n\nimport { useNode } from '@craftjs/core';\nimport payattStoreQR from 'assets/images/payattStoreQR.png';\n\nimport { DecorationProps, MarginProps, SizeProps } from 'builder/constants/types';\n\nimport { SettingsAccordionItem } from '../../BuilderComponents/AccordionItem';\nimport { DecorationSettings } from '../../Settings/Decoration.settings';\nimport { MarginSettings } from '../../Settings/Margin.settings';\nimport { SizeSettings } from '../../Settings/Size.settings';\n\nexport interface QRCodeProps extends MarginProps, DecorationProps {\n width?: string;\n height?: string;\n src?: string;\n}\n\nexport const QRCodeDefaultProps: QRCodeProps = {\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n\n borderRadius: '0px',\n\n width: '250px',\n height: '250px',\n boxShadow: '#000000 0px 0px 0px 0px',\n src: payattStoreQR\n};\n\nexport const QRCodeSettings = () => {\n const {\n width,\n height,\n\n marginBottom,\n marginTop,\n marginLeft,\n marginRight,\n\n borderRadius,\n boxShadow,\n\n actions: { setProp }\n } = useNode((node) => ({\n width: node.data.props.width,\n height: node.data.props.height,\n\n marginBottom: node.data.props.marginBottom,\n marginTop: node.data.props.marginTop,\n marginLeft: node.data.props.marginLeft,\n marginRight: node.data.props.marginRight,\n\n borderRadius: node.data.props.borderRadius,\n boxShadow: node.data.props.boxShadow\n }));\n\n const updateProp = (prop: keyof QRCodeProps) => (value: any) => {\n setProp((props: any) => {\n props[prop] = value;\n return props;\n });\n };\n\n const [expanded, setExpanded] = useState(false);\n\n const handleChange = (panel: string) => (_: SyntheticEvent, isExpanded: boolean) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const marginProps = {\n marginBottom,\n marginTop,\n marginLeft,\n marginRight\n } as Required;\n\n const decorationProps = {\n borderRadius,\n boxShadow\n } as Required;\n\n const sizeProps = {\n width,\n height\n } as Required;\n\n return (\n <>\n \n \n \n\n \n \n \n\n \n \n \n \n );\n};\n","import { SyntheticEvent, useState } from 'react';\n\nimport { useNode } from '@craftjs/core';\n\nimport { DecorationProps, MarginProps, SizeProps } from 'builder/constants/types';\n\nimport { SettingsAccordionItem } from '../../BuilderComponents/AccordionItem';\nimport { BuilderTextField } from '../../BuilderComponents/BuilderMuiComponents';\nimport { DecorationSettings } from '../../Settings/Decoration.settings';\nimport { MarginSettings } from '../../Settings/Margin.settings';\nimport { SizeSettings } from '../../Settings/Size.settings';\n\nexport interface QRCodeUserProps extends MarginProps, DecorationProps {\n width?: string;\n height?: string;\n qrCodeUrl?: string;\n}\n\nexport const QRCodeUserDefaultProps: QRCodeUserProps = {\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n\n borderRadius: '0px',\n\n width: '250px',\n height: '250px',\n boxShadow: '#000000 0px 0px 0px 0px',\n\n qrCodeUrl: 'https://payattclub.se'\n};\n\nexport const QRCodeUserSettings = () => {\n const {\n width,\n height,\n\n marginBottom,\n marginTop,\n marginLeft,\n marginRight,\n\n borderRadius,\n boxShadow,\n\n qrCodeUrl,\n\n actions: { setProp }\n } = useNode((node) => ({\n width: node.data.props.width,\n height: node.data.props.height,\n\n marginBottom: node.data.props.marginBottom,\n marginTop: node.data.props.marginTop,\n marginLeft: node.data.props.marginLeft,\n marginRight: node.data.props.marginRight,\n\n borderRadius: node.data.props.borderRadius,\n boxShadow: node.data.props.boxShadow,\n\n qrCodeUrl: node.data.props.qrCodeUrl\n }));\n\n const updateProp = (prop: keyof QRCodeUserProps) => (value: any) => {\n setProp((props: any) => {\n props[prop] = value;\n return props;\n });\n };\n\n const [expanded, setExpanded] = useState(false);\n\n const handleChange = (panel: string) => (_: SyntheticEvent, isExpanded: boolean) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const marginProps = {\n marginBottom,\n marginTop,\n marginLeft,\n marginRight\n } as Required;\n\n const decorationProps = {\n borderRadius,\n boxShadow\n } as Required;\n\n const sizeProps = {\n width,\n height\n } as Required;\n\n const onBlur = (e: React.FocusEvent) => updateProp('qrCodeUrl')(e.target.value);\n\n const onEnterPress = (\n e: React.KeyboardEvent & {\n target: { value: string };\n }\n ) => {\n if (e.key === 'Enter') updateProp('qrCodeUrl')(e.target.value);\n };\n\n const urlRegex =\n /https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;\n\n const error = !urlRegex.test(qrCodeUrl as string);\n\n return (\n <>\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n );\n};\n","import QRcode from 'react-qr-code';\n\nimport { Resizer } from '../../BuilderComponents/Resizer';\nimport { QRCodeUserDefaultProps, QRCodeUserProps, QRCodeUserSettings } from './QRCodeUser.settings';\n\nconst payattStoreQR =\n 'https://s3.eu-north-1.amazonaws.com/payatt-registration-display-development/62a615dd29e97ec04043b0a6/payattStoreQR-d2decf42-7261-9d32-4138-3b54cc37dc3e.png';\n\nexport const QRCodeUser = (props: QRCodeUserProps) => {\n const { qrCodeUrl, borderRadius } = props;\n\n return (\n \n \n \n );\n};\n\nQRCodeUser.craft = {\n displayName: 'URL QR Code',\n props: { ...QRCodeUserDefaultProps, flexShrink: 0 },\n related: { settings: QRCodeUserSettings },\n rules: { canMoveIn: () => false }\n};\n","import { useNode } from '@craftjs/core';\n\nimport { TextDefaultProps, TextProps, TextSettings } from './Text/Text.settings';\n\nexport const PayattDisclaimer = (props: TextProps) => {\n const {\n connectors: { connect, drag }\n } = useNode();\n\n const { text, ...CSS } = props;\n\n return (\n
connect(drag(ref as HTMLDivElement))}>\n {text}\n
\n );\n};\n\nexport const payattDisclaimerDefaultProps = {\n ...TextDefaultProps,\n fontSize: '24px',\n fontFamily: 'Poppins',\n text: 'Genom att registrera ditt telefonnummer accepterar du PayAtts allmänna villkor och integritetspolicy. För att ta del av dessa i sin helhet besök payattclub.se/se/tac/ och payattclub.se/se/privacy-policy/'\n};\n\nPayattDisclaimer.craft = {\n displayName: 'Payatt Disclaimer',\n props: payattDisclaimerDefaultProps,\n related: { settings: TextSettings }\n};\n","import { SvgIcon } from '@mui/material';\n\nexport const TwoColumns = (\n \n);\n\nexport const TwoRows = (\n \n);\n\nexport const TwoColumnsIcon = () => {\n return {TwoColumns};\n};\n\nexport const TwoRowsIcon = () => {\n return {TwoRows};\n};\n","import { useMemo } from 'react';\n\nimport {\n Abc,\n CheckBoxOutlineBlank,\n Crop32Outlined,\n Dialpad,\n Filter1,\n Filter2,\n Filter3,\n FormatSize,\n ImageOutlined,\n OndemandVideo,\n PhotoFilter,\n QrCode,\n ShortText,\n TableRowsOutlined,\n ViewCarouselOutlined,\n ViewQuiltOutlined,\n ViewWeekOutlined,\n WindowOutlined\n} from '@mui/icons-material';\n\nimport { regitrationDisplayViewsSelector } from '../../../../../store/selectors';\nimport { store } from '../../../../../store/store';\nimport { useBuilderContext } from '../../../../context/useBuilderContext';\nimport { getCorrectPropForDevice, getCorrectPropsObjectForDevice } from '../../../../utils/getCorrectPropForDevice';\nimport { ContainerCustom2, Logo } from '../../BuilderParts';\nimport { Carousel } from '../../BuilderParts/Carousel/Carousel';\nimport { Container } from '../../BuilderParts/Container/Container';\nimport { Container1x2 } from '../../BuilderParts/Container/Grid/Container1x2';\nimport { Container1x3 } from '../../BuilderParts/Container/Grid/Container1x3';\nimport { Container2x1 } from '../../BuilderParts/Container/Grid/Container2x1';\nimport { Container2x2 } from '../../BuilderParts/Container/Grid/Container2x2';\nimport { Container3x1 } from '../../BuilderParts/Container/Grid/Container3x1';\nimport { ContainerCustom1 } from '../../BuilderParts/Container/Grid/ContainerCustom1';\nimport { Image } from '../../BuilderParts/ImageAndVideo/Image';\nimport { YoutubeVideo } from '../../BuilderParts/ImageAndVideo/YoutubeVideo';\nimport { Numberpad } from '../../BuilderParts/NumberPad/NumberPad';\nimport {\n blackWhiteTemplate,\n buildMobileNumpadProps,\n buildTabletNumpadProps,\n defaultTemplate,\n whiteBlackTemplate\n} from '../../BuilderParts/NumberPad/templates';\nimport { PayattDisclaimer, payattDisclaimerDefaultProps } from '../../BuilderParts/PayattDisclaimer';\nimport { QRCodeUser } from '../../BuilderParts/QRCodeUser/QRCodeUser';\nimport { Text } from '../../BuilderParts/Text/Text';\nimport { TextDefaultProps } from '../../BuilderParts/Text/Text.settings';\nimport { TwoColumnsIcon, TwoRowsIcon } from './svgIcons';\nimport { Component } from './types';\n\nconst useToolboxComponentTree = () => {\n const { device } = useBuilderContext();\n const { selectedViewName } = regitrationDisplayViewsSelector(store.getState());\n\n const textChildrenListOptions = useMemo(() => {\n const textChildren = [\n { name: 'Body', fontSize: getCorrectPropForDevice(device)('16px', '20px', '20px'), id: 'text-body' },\n { name: 'H1', fontSize: getCorrectPropForDevice(device)('30px', '40px', '50px'), id: 'text-h1' },\n { name: 'H2', fontSize: getCorrectPropForDevice(device)('25px', '30px', '40px'), id: 'text-h2' },\n { name: 'H3', fontSize: getCorrectPropForDevice(device)('20px', '25px', '30px'), id: 'text-h3' },\n { name: 'H4', fontSize: getCorrectPropForDevice(device)('18px', '22px', '22px'), id: 'text-h4' }\n ];\n\n return textChildren.map(({ name, fontSize, id }) => ({\n name,\n element: Text,\n Icon: FormatSize,\n id,\n props: { ...TextDefaultProps, fontSize }\n }));\n }, [device]);\n\n const TOOLBOX_COMPONENT_TREE: Component[] = [\n {\n name: 'Container',\n Icon: CheckBoxOutlineBlank,\n id: 'container-selector',\n children: [\n {\n name: 'Default',\n element: Container,\n Icon: Crop32Outlined,\n id: 'default-container'\n },\n {\n name: '1x2',\n element: Container1x2,\n Icon: TwoColumnsIcon,\n id: 'two-columns-container'\n },\n {\n name: '1x3',\n element: Container1x3,\n Icon: ViewWeekOutlined,\n id: 'three-columns-container'\n },\n {\n name: '2x1',\n element: Container2x1,\n Icon: TwoRowsIcon,\n id: 'two-rows-container'\n },\n {\n name: '3x1',\n element: Container3x1,\n Icon: TableRowsOutlined,\n id: 'three-rows-container'\n },\n {\n name: '2x2',\n element: Container2x2,\n Icon: WindowOutlined,\n id: 'two-by-two-container'\n },\n {\n name: 'Custom 1',\n element: ContainerCustom1,\n Icon: ViewQuiltOutlined,\n id: 'custom1-container'\n },\n {\n name: 'Custom 2',\n element: ContainerCustom2,\n Icon: ViewQuiltOutlined,\n id: 'custom2-container'\n }\n ]\n },\n {\n name: 'Text',\n Icon: Abc,\n id: 'text-selector',\n children: textChildrenListOptions\n }\n ];\n\n if (selectedViewName === 'numPadView') {\n TOOLBOX_COMPONENT_TREE.push({\n name: 'Numpad',\n Icon: Dialpad,\n id: 'numpad-selector',\n children: [\n {\n name: 'Default Numpad',\n element: Numberpad,\n Icon: Filter1,\n id: 'default-numpad',\n props: getCorrectPropsObjectForDevice(device)(\n buildMobileNumpadProps(defaultTemplate),\n buildTabletNumpadProps(defaultTemplate),\n defaultTemplate\n )\n },\n {\n name: 'White Numpad',\n element: Numberpad,\n Icon: Filter2,\n id: 'white-numpad',\n props: getCorrectPropsObjectForDevice(device)(\n buildMobileNumpadProps(whiteBlackTemplate),\n buildTabletNumpadProps(whiteBlackTemplate),\n whiteBlackTemplate\n )\n },\n {\n name: 'Black Numpad',\n element: Numberpad,\n Icon: Filter3,\n id: 'black-numpad',\n props: getCorrectPropsObjectForDevice(device)(\n buildMobileNumpadProps(blackWhiteTemplate),\n buildTabletNumpadProps(blackWhiteTemplate),\n blackWhiteTemplate\n )\n }\n ]\n });\n }\n\n const rest: Component[] = [\n {\n name: 'Carousel',\n element: Carousel,\n Icon: ViewCarouselOutlined,\n id: 'default-carousel'\n },\n {\n name: 'Image',\n element: Image,\n Icon: ImageOutlined,\n id: 'default-image'\n },\n {\n name: 'Logo',\n element: Logo,\n Icon: PhotoFilter,\n id: 'default-logo'\n },\n {\n name: 'Generate QR Code',\n element: QRCodeUser,\n Icon: QrCode,\n id: 'default-qrcode-user'\n },\n {\n name: 'YouTube Video',\n element: YoutubeVideo,\n Icon: OndemandVideo,\n id: 'default-video'\n },\n {\n name: 'Payatt Disclaimer',\n element: PayattDisclaimer,\n Icon: ShortText,\n id: 'payatt-disclaimer',\n props: {\n ...payattDisclaimerDefaultProps,\n fontSize: getCorrectPropForDevice(device)('12px', '16px', '20px')\n }\n }\n ];\n\n return [...TOOLBOX_COMPONENT_TREE, ...rest];\n};\n\nexport default useToolboxComponentTree;\n","import { QrCode2 } from '@mui/icons-material';\n\nimport { QRCode } from '../../BuilderParts/QRCode/QRCode';\nimport { Component } from './types';\n\nconst useToolboxIntegratedComponentTree = () => {\n const TOOLBOX_INTEGRATED_COMPONENT_TREE: Component[] = [\n {\n name: 'QR Code',\n element: QRCode,\n Icon: QrCode2,\n id: 'default-qrcode'\n }\n ];\n\n return TOOLBOX_INTEGRATED_COMPONENT_TREE;\n};\n\nexport default useToolboxIntegratedComponentTree;\n","import { SyntheticEvent, useState } from 'react';\n\nimport { useNode } from '@craftjs/core';\n\nimport {\n AlignmentProps,\n BackgroundProps,\n DecorationProps,\n MarginProps,\n PaddingProps,\n SizeProps\n} from 'builder/constants/types';\n\nimport { SettingsAccordionItem } from '../../BuilderComponents/AccordionItem';\nimport { AlignmentSettings } from '../../Settings/Alignment.settings';\nimport { BackgroundSettings } from '../../Settings/Background.settings';\nimport { DecorationSettings } from '../../Settings/Decoration.settings';\nimport { MarginSettings } from '../../Settings/Margin.settings';\nimport { PaddingSettings } from '../../Settings/Padding.settings';\nimport { SizeSettings } from '../../Settings/Size.settings';\n\nexport interface StampCardContainerProps\n extends MarginProps,\n PaddingProps,\n DecorationProps,\n AlignmentProps,\n BackgroundProps {\n width?: string;\n height?: string;\n display?: 'flex' | 'block' | 'inline';\n}\n\nexport const StampCardContainerDefaultProps: StampCardContainerProps = {\n paddingBottom: '0px',\n paddingTop: '0px',\n paddingLeft: '0px',\n paddingRight: '0px',\n\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n\n // borderRadius: '100px',\n\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-evenly',\n alignItems: 'center',\n\n width: '80%',\n height: '50%',\n boxShadow: '#000000 0px 0px 0px 0px',\n\n backgroundColor: '#FFFFFF',\n backgroundImage: '',\n backgroundSize: 'cover',\n backgroundPosition: 'center'\n};\n\nexport const StampCardSettings = () => {\n const {\n width,\n height,\n\n paddingBottom,\n paddingTop,\n paddingLeft,\n paddingRight,\n\n marginBottom,\n marginTop,\n marginLeft,\n marginRight,\n\n flexDirection,\n justifyContent,\n alignItems,\n\n borderRadius,\n boxShadow,\n\n backgroundColor,\n backgroundImage,\n backgroundSize,\n backgroundPosition,\n\n actions: { setProp }\n } = useNode((node) => ({\n width: node.data.props.width,\n height: node.data.props.height,\n\n paddingBottom: node.data.props.paddingBottom,\n paddingTop: node.data.props.paddingTop,\n paddingLeft: node.data.props.paddingLeft,\n paddingRight: node.data.props.paddingRight,\n\n marginBottom: node.data.props.marginBottom,\n marginTop: node.data.props.marginTop,\n marginLeft: node.data.props.marginLeft,\n marginRight: node.data.props.marginRight,\n\n flexDirection: node.data.props.flexDirection,\n justifyContent: node.data.props.justifyContent,\n alignItems: node.data.props.alignItems,\n\n borderRadius: node.data.props.borderRadius,\n boxShadow: node.data.props.boxShadow,\n\n backgroundColor: node.data.props.backgroundColor,\n backgroundImage: node.data.props.backgroundImage,\n backgroundSize: node.data.props.backgroundSize,\n backgroundPosition: node.data.props.backgroundPosition\n }));\n\n const updateProp = (prop: keyof StampCardContainerProps) => (value: any) => {\n setProp((props: any) => {\n props[prop] = value;\n return props;\n });\n };\n\n const [expanded, setExpanded] = useState(false);\n\n const handleChange = (panel: string) => (_: SyntheticEvent, isExpanded: boolean) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const paddingProps = {\n paddingBottom,\n paddingTop,\n paddingLeft,\n paddingRight\n } as Required;\n\n const marginProps = {\n marginBottom,\n marginTop,\n marginLeft,\n marginRight\n } as Required;\n\n const alignmentProps = {\n flexDirection,\n justifyContent,\n alignItems\n } as Required;\n\n const decorationProps = {\n borderRadius,\n boxShadow\n } as Required;\n\n const sizeProps = {\n width,\n height\n } as Required;\n\n const backgroundProps = {\n backgroundImage: backgroundImage?.split('\"')[1],\n backgroundSize,\n backgroundPosition,\n backgroundColor\n } as Required;\n\n return (\n <>\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n );\n};\n","import { useEffect } from 'react';\n\nimport { useEditor, useNode } from '@craftjs/core';\n\nimport { useBuilderContext } from '../../../../context/useBuilderContext';\nimport {\n buildStampCardTextContainerNode,\n buildTextNode,\n useBuildProgressTextNode,\n useBuildRewardTextNode\n} from '../../../../utils/buildNode';\nimport { getCorrectPropForDevice } from '../../../../utils/getCorrectPropForDevice';\nimport { Resizer } from '../../BuilderComponents/Resizer';\nimport { StampCardContainerDefaultProps, StampCardContainerProps, StampCardSettings } from './StampCard.settings';\n\nexport const StampCardNewJoin = (props: StampCardContainerProps) => {\n const { query, actions } = useEditor();\n const { id } = useNode();\n const { device } = useBuilderContext();\n const rewardTextNode = useBuildRewardTextNode();\n const progressTextNode = useBuildProgressTextNode();\n\n const settings = [\n {\n text: 'Welcome to our stamp card campaign! 😍',\n fontSize: getCorrectPropForDevice(device)('26px', '35px', '42px'),\n fontWeight: '500',\n paddingLeft: getCorrectPropForDevice(device)('5px', '0px', '0px'),\n paddingRight: getCorrectPropForDevice(device)('5px', '0px', '0px')\n },\n {\n text: 'Next reward:',\n fontSize: getCorrectPropForDevice(device)('18px', '25px', '33px'),\n fontWeight: 'lighter',\n paddingLeft: getCorrectPropForDevice(device)('5px', '0px', '0px'),\n paddingRight: getCorrectPropForDevice(device)('5px', '0px', '0px')\n }\n ];\n\n useEffect(() => {\n if (!query.node(id).descendants().length) {\n const containerNode = buildStampCardTextContainerNode();\n\n const [headerText, nextRewardText] = settings\n .map(buildTextNode)\n .map((item) => query.parseFreshNode(item).toNode());\n\n const [container, rewardText, progressText] = [containerNode, rewardTextNode, progressTextNode].map(\n (item) => query.parseFreshNode(item).toNode()\n );\n\n actions.history.ignore().add(headerText, id);\n actions.history.ignore().add(container, id);\n actions.history.ignore().add(nextRewardText, container.id);\n actions.history.ignore().add(rewardText, container.id);\n actions.history.ignore().add(progressText, id);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return ;\n};\n\nStampCardNewJoin.craft = {\n displayName: 'Stamp card new join',\n props: { ...StampCardContainerDefaultProps, flexShrink: 0 },\n related: { settings: StampCardSettings }\n};\n","import { useEffect } from 'react';\n\nimport { useEditor, useNode } from '@craftjs/core';\n\nimport { useBuilderContext } from '../../../../context/useBuilderContext';\nimport {\n buildStampCardTextContainerNode,\n buildTextNode,\n useBuildProgressTextNode,\n useBuildRewardTextNode\n} from '../../../../utils/buildNode';\nimport { getCorrectPropForDevice } from '../../../../utils/getCorrectPropForDevice';\nimport { Resizer } from '../../BuilderComponents/Resizer';\nimport { StampCardContainerDefaultProps, StampCardContainerProps, StampCardSettings } from './StampCard.settings';\n\nexport const StampCardProgress = (props: StampCardContainerProps) => {\n const { query, actions } = useEditor();\n const { id } = useNode();\n const { device } = useBuilderContext();\n const rewardTextNode = useBuildRewardTextNode();\n const progressTextNode = useBuildProgressTextNode();\n\n const settings = [\n {\n text: 'Stamp received! 🎉',\n fontSize: getCorrectPropForDevice(device)('30px', '40px', '50px'),\n fontWeight: '500',\n paddingLeft: getCorrectPropForDevice(device)('5px', '0px', '0px'),\n paddingRight: getCorrectPropForDevice(device)('5px', '0px', '0px')\n },\n {\n text: 'Next reward:',\n fontSize: getCorrectPropForDevice(device)('18px', '25px', '33px'),\n fontWeight: 'lighter',\n paddingLeft: getCorrectPropForDevice(device)('5px', '0px', '0px'),\n paddingRight: getCorrectPropForDevice(device)('5px', '0px', '0px')\n }\n ];\n\n useEffect(() => {\n if (!query.node(id).descendants().length) {\n const containerNode = buildStampCardTextContainerNode();\n\n const [headerText, nextRewardText] = settings\n .map(buildTextNode)\n .map((item) => query.parseFreshNode(item).toNode());\n\n const [container, rewardText, progressText] = [containerNode, rewardTextNode, progressTextNode].map(\n (item) => query.parseFreshNode(item).toNode()\n );\n\n actions.history.ignore().add(headerText, id);\n actions.history.ignore().add(container, id);\n actions.history.ignore().add(nextRewardText, container.id);\n actions.history.ignore().add(rewardText, container.id);\n actions.history.ignore().add(progressText, id);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return ;\n};\n\nStampCardProgress.craft = {\n displayName: 'Stamp card progress',\n props: { ...StampCardContainerDefaultProps, flexShrink: 0 },\n related: { settings: StampCardSettings }\n};\n","import { useEffect } from 'react';\n\nimport { useEditor, useNode } from '@craftjs/core';\n\nimport { useBuilderContext } from '../../../../context/useBuilderContext';\nimport { buildStampCardTextContainerNode, buildTextNode, useBuildRewardTextNode } from '../../../../utils/buildNode';\nimport { getCorrectPropForDevice } from '../../../../utils/getCorrectPropForDevice';\nimport { Resizer } from '../../BuilderComponents/Resizer';\nimport { StampCardContainerDefaultProps, StampCardContainerProps, StampCardSettings } from './StampCard.settings';\n\nexport const StampCardReward = (props: StampCardContainerProps) => {\n const { query, actions } = useEditor();\n const { id } = useNode();\n const { device } = useBuilderContext();\n const rewardTextNode = useBuildRewardTextNode();\n\n const textContainerExtraProps = {\n marginTop: getCorrectPropForDevice(device)('20px', '30px', '40px'),\n borderRadius: getCorrectPropForDevice(device)('0px', '20px', '30px')\n };\n\n const settings = [\n {\n text: '🥳 Congratulations! 🎊',\n fontSize: getCorrectPropForDevice(device)('30px', '40px', '50px'),\n fontWeight: 'lighter',\n paddingLeft: getCorrectPropForDevice(device)('5px', '0px', '0px'),\n paddingRight: getCorrectPropForDevice(device)('5px', '0px', '0px')\n },\n {\n text: 'You have reached your stamp card reward!',\n fontSize: getCorrectPropForDevice(device)('21px', '26px', '33px'),\n fontWeight: 'lighter',\n paddingLeft: getCorrectPropForDevice(device)('5px', '0px', '0px'),\n paddingRight: getCorrectPropForDevice(device)('5px', '0px', '0px')\n }\n ];\n\n useEffect(() => {\n if (!query.node(id).descendants().length) {\n const containerNode = buildStampCardTextContainerNode(textContainerExtraProps);\n\n const [container, rewardText] = [containerNode, rewardTextNode].map((item) =>\n query.parseFreshNode(item).toNode()\n );\n\n const [congratsText, rewardReachedText] = settings\n .map(buildTextNode)\n .map((item) => query.parseFreshNode(item).toNode());\n\n actions.history.ignore().add(container, id);\n actions.history.ignore().add(congratsText, container.id);\n actions.history.ignore().add(rewardReachedText, container.id);\n actions.history.ignore().add(rewardText, id);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return ;\n};\n\nStampCardReward.craft = {\n displayName: 'Stamp card reward',\n props: { ...StampCardContainerDefaultProps, justifyContent: 'flex-start', flexShrink: 0 },\n related: { settings: StampCardSettings }\n};\n","import { ShortText } from '@mui/icons-material';\nimport EmojiEventsIcon from '@mui/icons-material/EmojiEvents';\nimport ListAltIcon from '@mui/icons-material/ListAlt';\nimport LoopIcon from '@mui/icons-material/Loop';\nimport PersonAddIcon from '@mui/icons-material/PersonAdd';\n\nimport { ProgressText } from '../../BuilderParts/StampCard/ProgressText';\nimport { RewardText } from '../../BuilderParts/StampCard/RewardText';\nimport { StampCardNewJoin } from '../../BuilderParts/StampCard/StampCardNewJoin';\nimport { StampCardProgress } from '../../BuilderParts/StampCard/StampCardProgress';\nimport { StampCardReward } from '../../BuilderParts/StampCard/StampCardReward';\nimport { Component } from './types';\n\nconst useToolboxStampCardComponentTree = () => {\n const TOOLBOX_STAMP_CARD_COMPONENT_TREE: Component[] = [\n {\n name: 'Cards',\n Icon: ListAltIcon,\n id: 'card-selector',\n children: [\n {\n name: 'New join',\n element: StampCardNewJoin,\n Icon: PersonAddIcon,\n id: 'stamp-card-new-join'\n },\n {\n name: 'Progress',\n element: StampCardProgress,\n Icon: LoopIcon,\n id: 'stamp-card-progress'\n },\n {\n name: 'Reward',\n element: StampCardReward,\n Icon: EmojiEventsIcon,\n id: 'stamp-card-reward'\n }\n ]\n },\n {\n name: 'Dynamically generated reward text',\n element: RewardText,\n Icon: ShortText,\n id: 'stamp-card-reward-text'\n },\n {\n name: 'Dynamically generated progress text',\n element: ProgressText,\n Icon: ShortText,\n id: 'stamp-card-progress-text'\n }\n ];\n\n return TOOLBOX_STAMP_CARD_COMPONENT_TREE;\n};\n\nexport default useToolboxStampCardComponentTree;\n","import React, { useReducer, useState } from 'react';\n\nimport { Menu } from '@mui/icons-material';\nimport { Box, Divider, Drawer, IconButton, Tooltip, Typography } from '@mui/material';\n\nimport { useEditor } from '@craftjs/core';\n\nimport { DisplayViews } from 'builder/constants/types';\nimport { VerticalCenteredFlexBox, VerticalCenteredList } from 'generalComponents/BoxModifications';\n\nimport { regitrationDisplayViewsSelector } from '../../../../../store/selectors';\nimport { store } from '../../../../../store/store';\nimport { SelectDevice } from './DeviceTypeSelector';\nimport { ItemList } from './Toolbox.ItemList';\nimport { AccordionsState } from './types';\nimport useToolboxComponentTree from './useToolboxComponentTree';\nimport useToolboxIntegratedComponentTree from './useToolboxIntegratedComponentTree';\nimport useToolboxStampCardComponentTree from './useToolboxStampCardComponentTree';\n\nexport const Toolbox: React.FC<{ divider?: boolean }> = ({ children, divider = false }) => {\n const { connectors } = useEditor();\n const { selectedViewName } = regitrationDisplayViewsSelector(store.getState());\n\n const TOOLBOX_COMPONENT_TREE = useToolboxComponentTree();\n const TOOLBOX_INTEGRATED_COMPONENT_TREE = useToolboxIntegratedComponentTree();\n const TOOLBOX_STAMP_CARD_COMPONENT_TREE = useToolboxStampCardComponentTree();\n\n const [open, setOpen] = useState(false);\n\n const toggleDrawer = (event: React.KeyboardEvent | React.MouseEvent) => {\n if (\n event.type === 'keydown' &&\n ((event as React.KeyboardEvent).key === 'Tab' || (event as React.KeyboardEvent).key === 'Shift')\n ) {\n return;\n }\n\n setOpen((c) => !c);\n };\n\n const [accordionsState, updateAccordionsState] = useReducer(\n (curr: AccordionsState, next: Partial) => {\n // If we would want to close all other accordions when opening any of them\n // const accordionKeys = Object.keys(curr) as (keyof AccordionsState)[];\n // accordionKeys.forEach((key) => {curr[key] = false;});\n\n return { ...curr, ...next };\n },\n { Container: false, Text: false }\n );\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n Device type\n \n \n \n \n {children}\n \n\n {divider && }\n\n \n \n General Components\n \n \n\n \n {ItemList({\n components: TOOLBOX_COMPONENT_TREE,\n connectors,\n toggleDrawer,\n accordionsState,\n updateAccordionsState,\n exclude: selectedViewName !== DisplayViews.numPadView ? ['Payatt Disclaimer'] : []\n })}\n \n\n {selectedViewName.includes('stampCard') && (\n <>\n \n \n \n Stamp card components\n \n \n \n {ItemList({\n components: TOOLBOX_STAMP_CARD_COMPONENT_TREE,\n connectors,\n toggleDrawer,\n accordionsState,\n updateAccordionsState\n })}\n \n \n )}\n\n {selectedViewName === 'numPadView' && (\n <>\n \n \n \n Integrated components\n \n \n \n {ItemList({\n components: TOOLBOX_INTEGRATED_COMPONENT_TREE,\n connectors,\n toggleDrawer,\n accordionsState,\n updateAccordionsState\n })}\n \n \n )}\n \n \n \n );\n};\n","import { Translate } from 'react-redux-i18n';\nimport { toast } from 'react-toastify';\n\nimport { Alert, AlertTitle, Dialog, DialogContent, Typography } from '@mui/material';\n\nimport { RollbackDialogProps } from 'builder/components/craft/BuilderLayout/TopBar/props';\nimport { loadView } from 'builder/utils/helpers';\nimport { PayAttDialogActions } from 'generalComponents/Dialog/DialogActions';\nimport { SlideUpTransition } from 'generalComponents/Transitions/SlideUp';\nimport { setregistationDisplayViews } from 'store/features/registationDisplayViews/registationDisplayViewsSlice';\nimport { regitrationDisplayViewsSelector } from 'store/selectors';\nimport { store } from 'store/store';\n\nexport const RollbackDialog: React.FC = ({\n rollbackDialogOpen,\n setRollbackDialogOpen,\n dispatch,\n actions,\n id,\n selectedViewName\n}) => {\n const { builderStartSessionState, viewName } = regitrationDisplayViewsSelector(store.getState());\n\n const handleClose = () => {\n setRollbackDialogOpen(false);\n };\n\n const onSubmit = async () => {\n try {\n loadView({ actions, stateToLoad: builderStartSessionState });\n handleClose();\n toast.success('Rolled back');\n dispatch(\n setregistationDisplayViews({\n id,\n selectedViewValue: builderStartSessionState,\n selectedViewName,\n builderStartSessionState,\n viewName\n })\n );\n } catch (error) {\n toast.error('Something went very wrong while trying to rollback view');\n }\n };\n\n return (\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n }\n />\n \n );\n};\n","import { Translate } from 'react-redux-i18n';\nimport { toast } from 'react-toastify';\n\nimport { Alert, AlertTitle, Dialog, DialogContent, Typography } from '@mui/material';\n\nimport { SaveDialogProps } from 'builder/components/craft/BuilderLayout/TopBar/props';\nimport { encodeAndSaveAST } from 'builder/utils/helpers';\nimport { PayAttDialogActions } from 'generalComponents/Dialog/DialogActions';\nimport { SlideUpTransition } from 'generalComponents/Transitions/SlideUp';\nimport { setregistationDisplayViews } from 'store/features/registationDisplayViews/registationDisplayViewsSlice';\nimport { regitrationDisplayViewsSelector } from 'store/selectors';\nimport { store } from 'store/store';\n\nexport const SaveDialog: React.FC = ({\n saveDialogOpen,\n setSaveDialogOpen,\n dispatch,\n actions,\n id,\n overflow,\n query,\n selectedViewName,\n hasNumpad,\n hasDisclaimer\n}) => {\n const { builderStartSessionState, viewName } = regitrationDisplayViewsSelector(store.getState());\n\n const handleClose = () => {\n setSaveDialogOpen(false);\n };\n\n const onSubmit = async () => {\n try {\n const selectedViewValue = await encodeAndSaveAST({ query, selectedViewName, id, actions });\n toast.success('Saved');\n dispatch(\n setregistationDisplayViews({\n id,\n selectedViewValue,\n selectedViewName,\n builderStartSessionState,\n viewName\n })\n );\n handleClose();\n } catch (error) {\n toast.error('Something went very wrong while saving view');\n }\n };\n\n const disabledSave = overflow || hasDisclaimer === false;\n\n return (\n \n \n \n \n \n \n \n\n {hasNumpad === false && (\n \n \n \n )}\n\n {hasDisclaimer === false && (\n \n \n \n )}\n\n {overflow && (\n \n \n \n )}\n\n {!disabledSave && (\n \n \n \n )}\n \n \n \n }\n confirmButtonContent={}\n confirmButtonProps={{ disabled: disabledSave }}\n />\n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { Alert, AlertTitle, Dialog, DialogContent, Typography } from '@mui/material';\n\nimport { ChangeViewDialogProps } from 'builder/components/craft/BuilderLayout/TopBar/props';\nimport { PayAttDialogActions } from 'generalComponents/Dialog/DialogActions';\nimport { SlideUpTransition } from 'generalComponents/Transitions/SlideUp';\n\nexport const ChangeViewDialog: React.FC = ({\n dialogOpen,\n setDialogOpen,\n setConfirmed,\n selectedViewName\n}) => {\n const handleClose = () => {\n setDialogOpen(false);\n };\n\n const confirmSwitchView = () => {\n setDialogOpen(false);\n setConfirmed(selectedViewName);\n };\n\n return (\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n }\n confirmButtonContent={}\n />\n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { Alert, AlertTitle, Dialog, DialogContent, Typography } from '@mui/material';\n\nimport { QuitDialogProps } from 'builder/components/craft/BuilderLayout/TopBar/props';\nimport { PayAttDialogActions } from 'generalComponents/Dialog/DialogActions';\nimport { SlideUpTransition } from 'generalComponents/Transitions/SlideUp';\n\nexport const QuitDialog: React.FC = ({ quitDialogOpen, setQuitDialogOpen, setQuitConfirmed }) => {\n const handleClose = () => {\n setQuitDialogOpen(false);\n };\n\n const confirmQuit = () => {\n setQuitDialogOpen(false);\n setQuitConfirmed(true);\n };\n\n return (\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n }\n confirmButtonContent={}\n />\n \n );\n};\n","import { Tooltip, Typography, tooltipClasses } from '@mui/material';\n\nimport { VerticalFlexBox } from 'generalComponents/BoxModifications';\n\nimport { regitrationDisplayViewsSelector } from '../../../../../store/selectors';\nimport { store } from '../../../../../store/store';\nimport { viewMap } from '../../../../../views/RegistrationDisplayViews/utils';\n\nexport const SelectedView = ({ zoom }: { zoom: number }) => {\n const { selectedViewName, viewName } = regitrationDisplayViewsSelector(store.getState());\n\n return (\n \n \n {viewName}\n \n \n {viewMap[selectedViewName]}\n \n \n \n Zoom: {Math.floor(zoom)}%\n \n \n \n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { useHotkeys } from 'react-hotkeys-hook';\nimport { I18n } from 'react-redux-i18n';\n\nimport { Close, Redo, Save, Undo, ViewWeekOutlined } from '@mui/icons-material';\nimport HistoryIcon from '@mui/icons-material/History';\nimport { Button, CircularProgress, IconButton, MenuItem, TextField, Tooltip, Typography } from '@mui/material';\nimport AppBar from '@mui/material/AppBar';\nimport Box from '@mui/material/Box';\nimport Toolbar from '@mui/material/Toolbar';\n\nimport { useEditor } from '@craftjs/core';\n\nimport { getDisplayViewCollectionsAPI } from 'api/displayViewColletions/displayViewCollectionsAPI';\nimport { RollbackDialog } from 'builder/components/craft/BuilderLayout/TopBar/RollBackDialog';\nimport { SaveDialog } from 'builder/components/craft/BuilderLayout/TopBar/SaveDialog';\nimport { NUMPAD_NAME } from 'builder/components/craft/BuilderParts';\nimport { DisplayViewCollection, DisplayViews, View } from 'builder/constants/types';\nimport { useBuilderContext } from 'builder/context/useBuilderContext';\nimport { validateIfItemIsInAST } from 'builder/utils/helpers';\nimport { FlexBox, FullDivider } from 'generalComponents/BoxModifications';\nimport { useAsync } from 'generalComponents/hooks/useAsync';\nimport { usePrompt } from 'generalComponents/hooks/useBlocker';\nimport { merchantIsIntegrated } from 'utils/utils';\nimport { viewMap } from 'views/RegistrationDisplayViews/utils';\n\nimport { setregistationDisplayViews } from '../../../../../store/features/registationDisplayViews/registationDisplayViewsSlice';\nimport { merchantSelector, regitrationDisplayViewsSelector } from '../../../../../store/selectors';\nimport { store } from '../../../../../store/store';\nimport { useAppDispatch } from '../../../../../store/store.exports';\nimport { BodyContainerProps } from '../../BuilderParts/BodyContainer/BodyContainer.settings';\nimport { Toolbox } from '../ToolboxDrawer/Toolbox';\nimport { ChangeViewDialog } from './ChangeViewDialog';\nimport { QuitDialog } from './QuitDialog';\nimport { SelectedView } from './TopBar.templateSelector';\nimport { ChangeViewDialogProps } from './props';\n\nconst spinnerCSS = { position: 'absolute', top: '50%', left: '50%', transform: 'translate(-50%, -50%)' };\nconst toolbarContainerCSS = {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between'\n};\n\nconst initialHistoryPointer = -1;\n\nexport const TopBar = () => {\n const { overflow } = useBuilderContext();\n const dispatch = useAppDispatch();\n\n const { selectedViewName, id } = regitrationDisplayViewsSelector(store.getState());\n\n const { data: viewCollection } = useAsync(getDisplayViewCollectionsAPI);\n\n const currentViewCollection = viewCollection?.find((el) => el.id === id);\n\n const {\n canUndo,\n canRedo,\n query,\n actions,\n width: widthProp,\n height: heightProp,\n scale: scaleProp,\n rootNode: rootNodeProp,\n store: {\n history: { pointer: historyPointer }\n }\n } = useEditor((state, q) => {\n const props: BodyContainerProps = state?.nodes?.ROOT?.data?.props;\n\n let width;\n let height;\n let scale;\n let rootNode;\n\n if (props) {\n width = props.width;\n height = props.height;\n scale = props.scale;\n rootNode = state.nodes.ROOT;\n }\n\n return {\n width,\n height,\n scale,\n rootNode,\n canUndo: q.history.canUndo(),\n canRedo: q.history.canRedo()\n };\n });\n\n const undo = () => {\n actions.history.undo();\n };\n\n const redo = () => {\n actions.history.redo();\n };\n\n useHotkeys('meta+z', () => {\n if (canUndo) undo();\n });\n\n useHotkeys('meta+shift+z', () => {\n if (canRedo) redo();\n });\n\n const [rollbackDialogOpen, setRollbackDialogOpen] = useState(false);\n const [saveDialogOpen, setSaveDialogOpen] = useState(false);\n const [quitDialogOpen, setQuitDialogOpen] = useState(false);\n const [quitConfirmed, setQuitConfirmed] = useState(false);\n const [changeViewDialogOpen, setChangeViewDialogOpen] = useState(false);\n const [newView, setNewView] = useState(undefined);\n const [hasNumpad, setHasNumpad] = useState(true);\n const [hasDisclaimer, setHasDisclaimer] = useState(true);\n\n const isIntegrated = merchantIsIntegrated({ merchant: merchantSelector(store.getState()) });\n let possibleViews: View[] = Object.values(DisplayViews);\n\n // Remove integrated view from list\n if (!isIntegrated) possibleViews = possibleViews.slice(1);\n\n const changeView = (e: View) => {\n if (!currentViewCollection) return;\n const hash = currentViewCollection.views[e];\n\n dispatch(\n setregistationDisplayViews({\n id,\n selectedViewValue: hash,\n builderStartSessionState: hash,\n selectedViewName: e,\n viewName: currentViewCollection.name\n })\n );\n };\n\n const handleChangeView = (e: React.ChangeEvent) => {\n if (historyPointer === initialHistoryPointer) return changeView(e.target.value as View);\n\n setNewView(e.target.value as View);\n setChangeViewDialogOpen(true);\n };\n\n const onQuit = useCallback(() => {\n if (historyPointer !== initialHistoryPointer) {\n setQuitDialogOpen(true);\n return;\n }\n\n setQuitConfirmed(true);\n }, [historyPointer]);\n\n useEffect(() => {\n if (!quitConfirmed) return;\n\n dispatch(\n setregistationDisplayViews({\n id: '',\n selectedViewValue: '',\n builderStartSessionState: '',\n viewName: '',\n selectedViewName: DisplayViews.numPadView\n })\n );\n\n window.history.pushState(null, '', window.location.pathname);\n window.location.reload();\n }, [dispatch, quitConfirmed]);\n\n useEffect(() => {\n const onBackButtonEvent = (e: PopStateEvent) => {\n e.preventDefault();\n onQuit();\n };\n\n window.history.pushState(null, '', window.location.pathname);\n window.addEventListener('popstate', onBackButtonEvent);\n\n return () => {\n window.removeEventListener('popstate', onBackButtonEvent);\n };\n }, [onQuit]);\n\n // Alert before leaving the page\n usePrompt(I18n.t('general.leavingThePage'), historyPointer !== initialHistoryPointer && !quitConfirmed);\n\n if (!rootNodeProp || !heightProp || !widthProp) {\n return ;\n }\n\n let zoom = 100;\n\n if (scaleProp) zoom = +scaleProp.toFixed(2) * 100;\n\n const onRollback = () => {\n setRollbackDialogOpen(true);\n };\n\n const onSave = () => {\n if (selectedViewName === DisplayViews.numPadView) {\n setHasNumpad(validateIfItemIsInAST({ itemName: NUMPAD_NAME, query }));\n setHasDisclaimer(validateIfItemIsInAST({ itemName: 'Payatt Disclaimer', query }));\n }\n\n setSaveDialogOpen(true);\n };\n\n const commonProps = {\n dispatch,\n actions,\n id,\n selectedViewName\n };\n\n const rollbackDialogProps = {\n ...commonProps,\n rollbackDialogOpen,\n setRollbackDialogOpen\n };\n\n const saveDialogProps = {\n ...commonProps,\n saveDialogOpen,\n setSaveDialogOpen,\n overflow,\n query\n };\n\n const quitDialogProps = {\n quitDialogOpen,\n setQuitDialogOpen,\n setQuitConfirmed\n };\n\n const changeViewDialogProps: ChangeViewDialogProps = {\n dialogOpen: changeViewDialogOpen,\n setDialogOpen: setChangeViewDialogOpen,\n setConfirmed: (val: View | undefined) => {\n if (val) changeView(val);\n else console.error('No view selected, this should never happen');\n },\n selectedViewName: newView\n };\n\n const displayIconProps = { display: { xs: 'inline-block', sm: 'none' } };\n const displayButtonProps = { display: { xs: 'none', sm: 'inline-block' } };\n\n const saveDisabled = historyPointer === initialHistoryPointer;\n\n return (\n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n null }}>\n svg': { display: 'none' },\n '&.MuiMenuItem-root::before': {\n content: '\"Change View\"'\n }\n }}>\n \n \n \n \n \n {possibleViews.map((el) => {\n return (\n \n {viewMap[el]}\n \n );\n })}\n \n \n\n \n\n \n \n \n \n \n \n \n \n Rollback\n \n \n \n \n\n \n \n \n \n \n \n \n Save\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n );\n};\n","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgPayAttLogoBlack(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 194.57 33.344\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_2\",\n \"data-name\": \"Layer 2\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_1-2\",\n \"data-name\": \"Layer 1\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M159.735,20.742a3.208,3.208,0,0,1-3.205,3.2h-1.321a3.208,3.208,0,0,1-3.205-3.2V9.385h9.812V6.725H152V1.243h-2.66V6.725h-3.19v2.66h3.19V20.742a5.871,5.871,0,0,0,5.865,5.865h1.321a5.871,5.871,0,0,0,5.866-5.865V17.789h-2.661Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M191.91,17.789v2.953a3.209,3.209,0,0,1-3.206,3.2h-1.32a3.209,3.209,0,0,1-3.206-3.2V9.385h9.812V6.725h-9.812V1.243h-2.66V6.725h-3.189v2.66h3.189V20.742a5.871,5.871,0,0,0,5.866,5.865h1.32a5.872,5.872,0,0,0,5.866-5.865V17.789Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M89.364,6.739l-6.59,17.714L75.836,6.739H72.794L81.5,27.812a6.81,6.81,0,0,1-.4.862,3.29,3.29,0,0,1-.612.781,3.175,3.175,0,0,1-.972.6,6.273,6.273,0,0,1-1.5.382,15.663,15.663,0,0,1-2.2.131v2.777a16.8,16.8,0,0,0,2.638-.179,8.679,8.679,0,0,0,1.923-.511,5.414,5.414,0,0,0,1.392-.809,5.514,5.514,0,0,0,1.013-1.081,7.5,7.5,0,0,0,.751-1.342q.321-.738.633-1.567l.44-1.117,7.837-20Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.535,6.185H45.819a5.708,5.708,0,0,0-5.7,5.7h2.66a3.045,3.045,0,0,1,3.042-3.041h4.716a4.343,4.343,0,0,1,4.339,4.339V17.2a2.817,2.817,0,0,0-.56-.61,4.2,4.2,0,0,0-1.2-.651,10.535,10.535,0,0,0-2.046-.5,20.291,20.291,0,0,0-3.113-.2q-1.306,0-2.461.052a12.97,12.97,0,0,0-2.128.26,6.774,6.774,0,0,0-1.733.608,3.846,3.846,0,0,0-1.3,1.111,5.014,5.014,0,0,0-.816,1.762,10.118,10.118,0,0,0-.279,2.561,5.6,5.6,0,0,0,.51,2.483,4.1,4.1,0,0,0,1.611,1.71,8.411,8.411,0,0,0,2.841.99,23.647,23.647,0,0,0,4.2.321,15.533,15.533,0,0,0,3.192-.269,5.245,5.245,0,0,0,1.815-.747,4.078,4.078,0,0,0,1.088-1.1c.16-.234.281-.422.379-.582v2.283h2.66V13.184A7.006,7.006,0,0,0,50.535,6.185ZM54.58,22.467A2.42,2.42,0,0,1,53.574,23.5a5.722,5.722,0,0,1-1.869.617,17.012,17.012,0,0,1-2.889.205q-2.285,0-3.664-.128a6.318,6.318,0,0,1-2.114-.488,1.828,1.828,0,0,1-.972-1,4.887,4.887,0,0,1-.238-1.67,4.76,4.76,0,0,1,.225-1.627,1.62,1.62,0,0,1,.876-.908,5.382,5.382,0,0,1,1.856-.394q1.2-.086,3.161-.085a27.962,27.962,0,0,1,3.29.162,7.666,7.666,0,0,1,2.141.522,2.465,2.465,0,0,1,1.156.934,2.638,2.638,0,0,1,.341,1.349v.1A3.243,3.243,0,0,1,54.58,22.467Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M116.714.01,104.833,26.678h2.912l2.743-6.157h16.2l2.744,6.157h2.912L120.46.01Zm-5.041,17.85,6.914-15.519L125.5,17.86Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.655,0H0V26.678H2.66V15.96l15-.02a5.873,5.873,0,0,0,5.858-5.865V5.865A5.872,5.872,0,0,0,17.655,0Zm3.2,10.075a3.21,3.21,0,0,1-3.2,3.205l-15,.02V2.66h15a3.208,3.208,0,0,1,3.2,3.205Z\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPayAttLogoBlack);\nexport default __webpack_public_path__ + \"static/media/PayAtt_logo_black.e181f5f5452773e82cc4c48ad5625161.svg\";\nexport { ForwardRef as ReactComponent };","import { Box } from '@mui/material';\n\nimport { UpdateProp } from 'builder/constants/types';\n\nimport { BuilderSlider } from '../../BuilderComponents/BuilderSlider';\n\nexport type Position = 'topRight' | 'topLeft' | 'bottomRight' | 'bottomLeft';\n\ntype PayattLogoType = 'white' | 'black';\n\nexport interface ColorAndPositionSettingsProps {\n type: PayattLogoType;\n position: Position;\n}\n\ninterface Mark {\n value: number;\n label: string;\n prop: Position | PayattLogoType;\n}\n\ntype OnChange = (\n array: Mark[],\n prop: 'type' | 'position',\n fallback: 'black' | 'bottomRight'\n) => (_: Event, value: number | number[]) => void;\n\nexport const ColorAndPositionSettings = ({\n position,\n type,\n updateProp\n}: ColorAndPositionSettingsProps & UpdateProp) => {\n const colorMarks: Mark[] = [\n { value: 0, label: 'Black', prop: 'black' },\n { value: 100, label: 'White', prop: 'white' }\n ];\n\n const positionMarks: Mark[] = [\n { value: 0, label: 'Bottom right', prop: 'bottomRight' },\n { value: 33, label: 'Bottom left', prop: 'bottomLeft' },\n { value: 66, label: 'Top left', prop: 'topLeft' },\n { value: 100, label: 'Top right', prop: 'topRight' }\n ];\n\n const onChange: OnChange = (array, prop, fallback) => (_, value) => {\n const variant = array.find((mark) => mark.value === value);\n updateProp(prop)(variant?.prop || fallback);\n };\n\n const payattLogoColorValue = colorMarks.find((mark) => mark.prop === type)?.value;\n const positionValue = positionMarks.find((mark) => mark.prop === position)?.value;\n\n return (\n \n \n\n \n \n );\n};\n","import { SyntheticEvent, useState } from 'react';\n\nimport { useNode } from '@craftjs/core';\n\nimport { DecorationProps, MarginProps, SizeProps } from 'builder/constants/types';\nimport { useBuilderContext } from 'builder/context/useBuilderContext';\n\nimport { SettingsAccordionItem } from '../../BuilderComponents/AccordionItem';\nimport { SizeSettings } from '../../Settings/Size.settings';\nimport { ColorAndPositionSettings, ColorAndPositionSettingsProps, Position } from './ColorAndPosition.settings';\n\nexport interface PoweredByPayattProps extends MarginProps, DecorationProps {\n width?: string;\n height?: string;\n\n type: 'white' | 'black';\n position: Position;\n}\n\nexport const PoweredByPayattDefaultProps: PoweredByPayattProps = {\n marginBottom: '0px',\n marginTop: '0px',\n marginLeft: '0px',\n marginRight: '0px',\n\n borderRadius: '0px',\n\n width: '200px',\n height: '50px',\n boxShadow: '#000000 0px 0px 0px 0px',\n type: 'black',\n position: 'bottomRight'\n};\n\nexport const PoweredByPayattSettings = () => {\n const { setShouldUpdateIndicator } = useBuilderContext();\n\n const {\n width,\n height,\n position,\n type,\n actions: { setProp },\n store\n } = useNode((node) => ({\n width: node.data.props.width,\n height: node.data.props.height,\n position: node.data.props.position,\n payattLogoColor: node.data.props.payattLogoColor,\n type: node.data.props.type\n }));\n\n const [expanded, setExpanded] = useState(false);\n\n const handleChange = (panel: string) => (_: SyntheticEvent, isExpanded: boolean) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const updateProp = (prop: keyof PoweredByPayattProps) => (value: any) => {\n setProp((props: any) => {\n props[prop] = value;\n return props;\n });\n\n if (prop === 'position') setShouldUpdateIndicator((c) => c + 1);\n };\n\n const sizeProps = {\n width,\n height\n } as Required;\n\n const colorAndPositionProps = {\n type,\n position\n } as ColorAndPositionSettingsProps;\n\n const rootWidth = store.query.node('ROOT').get().data.props.width;\n\n return (\n <>\n \n \n \n\n \n \n \n \n );\n};\n","import { useNode } from '@craftjs/core';\nimport PayAttLogoBlack from 'assets/images/PayAtt_logo_black.svg';\nimport PayAttLogoWhite from 'assets/images/PayAtt_logo_white.svg';\n\nimport { NON_DELETABLE_POWERED_BY_PAYATT_NAME } from 'builder/constants/constants';\n\nimport { PoweredByPayattDefaultProps, PoweredByPayattProps, PoweredByPayattSettings } from './PoweredByPayatt.settings';\n\nexport const PoweredByPayatt = (props: PoweredByPayattProps) => {\n const { borderRadius, type, position } = props;\n const {\n connectors: { connect }\n } = useNode();\n\n const positions = {\n topRight: { top: 10, right: 10 },\n topLeft: { top: 10, left: 10 },\n bottomRight: { bottom: 10, right: 10 },\n bottomLeft: { bottom: 10, left: 10 }\n };\n\n const selectedPosition = positions[position as keyof typeof positions];\n\n return (\n
\n \n
\n );\n};\n\nPoweredByPayatt.craft = {\n displayName: NON_DELETABLE_POWERED_BY_PAYATT_NAME,\n props: PoweredByPayattDefaultProps,\n related: { settings: PoweredByPayattSettings },\n rules: { canDrag: () => false, canMoveIn: () => false }\n};\n","import { useEffect, useState } from 'react';\nimport { Navigate } from 'react-router';\n\nimport { Editor, Element, Frame } from '@craftjs/core';\nimport lz from 'lzutf8';\n\nimport CleansSelectionWhenClickedOutside from 'builder/utils/useOutsideSelectionCleanup';\nimport { FlexBox } from 'generalComponents/BoxModifications';\n\nimport { regitrationDisplayViewsSelector } from '../store/selectors';\nimport { store } from '../store/store';\nimport { RenderNode, SettingsPanel, TopBar } from './components/craft/BuilderLayout';\nimport {\n BodyContainer,\n Carousel,\n Container,\n Container1x2,\n Container1x3,\n Container2x1,\n Container2x2,\n Container3x1,\n ContainerCustom1,\n ContainerCustom2,\n Image,\n Logo,\n Numberpad,\n PayattDisclaimer,\n QRCode,\n QRCodeUser,\n Text,\n YoutubeVideo\n} from './components/craft/BuilderParts';\nimport { PoweredByPayatt } from './components/craft/BuilderParts/PoweredByPayatt/PoweredByPayatt';\nimport { PoweredByPayattDefaultProps } from './components/craft/BuilderParts/PoweredByPayatt/PoweredByPayatt.settings';\nimport { ProgressText } from './components/craft/BuilderParts/StampCard/ProgressText';\nimport { RewardText } from './components/craft/BuilderParts/StampCard/RewardText';\nimport { StampCardNewJoin } from './components/craft/BuilderParts/StampCard/StampCardNewJoin';\nimport { StampCardProgress } from './components/craft/BuilderParts/StampCard/StampCardProgress';\nimport { StampCardReward } from './components/craft/BuilderParts/StampCard/StampCardReward';\n\nconst builderContainerCSS = { justifyContent: 'center', gap: 2, marginTop: 1, paddingY: '2px' };\n\nexport const Builder = () => {\n const { selectedViewValue, selectedViewName } = regitrationDisplayViewsSelector(store.getState());\n const [viewValue, setViewValue] = useState(selectedViewValue);\n const [viewName, setViewName] = useState(selectedViewName);\n\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n const { selectedViewValue: selectedViewValueInner, selectedViewName: selectedViewNameInner } =\n regitrationDisplayViewsSelector(store.getState());\n\n if (selectedViewNameInner !== selectedViewName) {\n setViewValue(selectedViewValueInner);\n setViewName(selectedViewNameInner);\n }\n });\n\n return unsubscribe;\n }, [selectedViewName]);\n\n if (!selectedViewValue) return ;\n\n const json = lz.decompress(lz.decodeBase64(viewValue));\n\n return (\n
\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n
\n );\n};\n","import 'swiper/swiper-bundle.min.css';\n\nimport { Builder } from 'builder/Builder';\nimport { BuilderProvider } from 'builder/context/builderContext';\n\nimport '../../assets/fonts/Adobe - AGaramondPro-Italic.otf';\nimport '../../assets/scss/builder/carousel.scss';\nimport '../../assets/scss/builder/fonts.scss';\n\nexport const builderRoutes = {\n children: [\n {\n path: '',\n component: (\n \n \n \n )\n }\n ]\n};\n","import { Translate } from 'react-redux-i18n';\nimport { useLocation } from 'react-router-dom';\n\nimport { Box, Link, Typography, TypographyStyle } from '@mui/material';\n\nimport { CenteredFlexBox, FlexBox } from 'generalComponents/BoxModifications';\n\nexport const FOOTER_HEIGTH = 75;\nexport const REDUCED_FOOTER_HEIGHT = 40;\n\nconst LinkStyle = {\n textDecoration: 'none',\n '&:focus, &:hover, &:visited, &:link, &:active': {\n textDecoration: 'none'\n },\n color: 'inherit',\n '&:not(first-child)': {\n pl: '4px'\n },\n '&:not(last-child)': {\n pr: '4px'\n }\n};\n\n// Specify on which routes the footer should be displayed\nconst DisplayRoutes = [\n // '/home', // Added from home view\n '/intellisms/new',\n '/intellisms/overview',\n '/management/profile',\n '/management/settings/merchant',\n '/management/settings/integration',\n '/dashboard',\n '/views',\n '/management/memberships',\n '/stampcard/form',\n '/stampcard/overview',\n '/stampcard/trigger',\n '/contact/form',\n '/faq'\n];\n\nconst DotSeparator = () => ;\n\nconst Row = ({\n linkText,\n href,\n typographySx,\n newPage = true\n}: {\n linkText: React.ReactNode;\n href: string;\n typographySx: TypographyStyle;\n newPage?: boolean;\n}) => {\n return (\n \n \n \n {linkText}\n \n \n \n );\n};\n\nexport const FooterComponent: React.FC<{ showBackgroundOverlay?: boolean }> = ({ showBackgroundOverlay }) => {\n const typographySx = showBackgroundOverlay ? { color: 'black' } : {};\n\n const flexBoxSx = {\n borderRadius: '0',\n mt: 'auto',\n pt: showBackgroundOverlay ? 0 : '20px',\n backgroundColor: showBackgroundOverlay ? '#ffffff74' : 'transparent',\n minHeight: showBackgroundOverlay ? `${REDUCED_FOOTER_HEIGHT}px` : `${FOOTER_HEIGTH}px`\n };\n\n const data = [\n {\n href: 'https://payattclub.se/tac/',\n linkText: ,\n typographySx\n },\n {\n href: 'https://payattclub.se/privacy-policy/',\n linkText: ,\n typographySx\n },\n {\n href: `/faq`,\n linkText: 'FAQ',\n typographySx,\n newPage: false\n },\n {\n href: 'https://payattclub.se',\n linkText: 'payattclub.se',\n typographySx\n }\n ];\n\n return (\n \n {data.map((el, index) => {\n return (\n \n {Row(el)}\n {index !== data.length - 1 && }\n \n );\n })}\n \n );\n};\n\nconst Footer = (): JSX.Element | null => {\n const location = useLocation();\n\n return DisplayRoutes.includes(location.pathname.toLowerCase()) ? : null;\n};\n\nexport default Footer;\n","import { useEffect, useState } from 'react';\n\nimport { Typography } from '@mui/material';\n\nimport { MerchantInterface } from 'store/features/merchantAndVenues/handlers';\nimport { merchantSelector } from 'store/selectors';\nimport { store } from 'store/store';\n\nconst getTitle = (merchant: MerchantInterface) => {\n // If we are only managing 1 Venue, display the Venue title\n if (merchant.venues.length === 1) {\n return merchant.venues[0].venueTitle;\n }\n return merchant.merchantTitle;\n};\n\nconst MerchantTitle = () => {\n const [merchant, setMerchant] = useState(merchantSelector(store.getState()));\n\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n const merchantCurr = merchantSelector(store.getState());\n if (merchant !== merchantCurr) {\n setMerchant(merchantCurr);\n }\n });\n\n return unsubscribe;\n }, [merchant]);\n\n return (\n \n {getTitle(merchant)}\n \n );\n};\n\nexport default MerchantTitle;\n","import { useEffect, useRef, useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\nimport { NavLink } from 'react-router-dom';\n\nimport AccountBoxIcon from '@mui/icons-material/AccountBox';\nimport ExpandMoreTwoToneIcon from '@mui/icons-material/ExpandMoreTwoTone';\nimport LockOpenTwoToneIcon from '@mui/icons-material/LockOpenTwoTone';\nimport { Avatar, Box, Button, Divider, Hidden, List, ListItem, ListItemText, Popover, Typography } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nimport { logOut } from 'store/features/auth/actions';\nimport { currentUserSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { useAppDispatch } from 'store/store.exports';\nimport { introStepHome } from 'views/Home/JoyrideIntroduction/Main/Home.Joyride.Steps';\n\nconst UserBoxButton = styled(Button)(\n ({ theme }) => `\n padding-left: ${theme.spacing(1)};\n padding-right: ${theme.spacing(1)};\n`\n);\n\nconst MenuUserBox = styled(Box)(\n ({ theme }) => `\n padding: ${theme.spacing(2)};\n`\n);\n\nconst UserBoxText = styled(Box)(\n ({ theme }) => `\n text-align: left;\n padding-left: ${theme.spacing(1)};\n`\n);\n\nconst UserBoxLabel = styled(Typography)(\n ({ theme }) => `\n font-weight: ${theme.typography.fontWeightBold};\n display: block;\n`\n);\n\nconst HeaderUserbox = (): JSX.Element => {\n const dispatch = useAppDispatch();\n const currentUser = currentUserSelector(store.getState());\n\n const [user, setUser] = useState({\n name: currentUser ? currentUser.username : '',\n jobtitle: currentUser ? currentUser.title : ''\n });\n\n const ref = useRef(null);\n const [isOpen, setOpen] = useState(false);\n\n const handleOpen = (): void => {\n setOpen(true);\n };\n\n const handleClose = (): void => {\n setOpen(false);\n };\n\n // Check if we changed the user title\n // Username will trigger logout, so we don't need to check for that\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n const currUser = currentUserSelector(store.getState());\n\n // Old venue was {}, but now we have data from DB\n if (currUser && currUser.title !== user.jobtitle) {\n setUser({ ...user, jobtitle: currUser.title });\n }\n });\n return unsubscribe;\n }, [user]);\n\n return (\n <>\n \n \n \n {user.name}\n \n {user.jobtitle}\n \n \n \n \n {user.name ? (\n \n ) : null}\n \n \n \n \n \n \n \n \n {user.name}\n {user.jobtitle}\n \n \n \n \n \n \n } />\n \n \n \n \n {\n dispatch(logOut());\n }}\n fullWidth>\n \n \n \n \n \n \n );\n};\n\nexport default HeaderUserbox;\n","import { useEffect, useState } from 'react';\nimport { setLocale } from 'react-redux-i18n';\n\nimport { Box, IconButton } from '@mui/material';\n\nimport { localeSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { useAppDispatch } from 'store/store.exports';\nimport Translations from 'translations/translations';\nimport { introStepHome } from 'views/Home/JoyrideIntroduction/Main/Home.Joyride.Steps';\n\nconst GB = '/static/images/flags/GB.png';\nconst SE = '/static/images/flags/SE.png';\n\nconst LanguageSwitcherSelector = () => {\n const dispatch = useAppDispatch();\n const stateStore = store.getState();\n\n const storeLang: string = localeSelector(stateStore);\n\n const [currentLanguage, setCurrentLanguage] = useState(storeLang);\n\n useEffect(() => {\n dispatch(setLocale(currentLanguage));\n }, [currentLanguage, dispatch]);\n\n const options = Object.keys(Translations);\n\n const DropdownStyle = {\n position: 'relative',\n left: 0,\n display: 'none',\n margin: 0,\n padding: 0,\n listStyle: 'none'\n };\n\n const ImageStyle = {\n width: '30px',\n height: '30px',\n '&:hover': {\n width: '40px',\n height: '40px'\n }\n };\n\n const WrapperStyle = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n margin: 'auto 0',\n mb: '50px',\n '&:hover': {\n '.dropdown': {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center'\n }\n }\n };\n\n return (\n \n \n \n {options.map((lang) =>\n lang !== currentLanguage ? (\n \n setCurrentLanguage(lang)}\n sx={ImageStyle}\n />\n \n ) : null\n )}\n \n \n );\n};\n\nconst HeaderLanguageSelect = () => {\n return (\n \n \n \n );\n};\n\nexport default HeaderLanguageSelect;\n","import { cloneElement, useState } from 'react';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Box, Fade, IconButton, Popper, SxProps, Theme, Typography } from '@mui/material';\nimport { makeStyles } from '@mui/styles';\n\nimport { VerticalCenteredFlexBox } from 'generalComponents/BoxModifications';\nimport LocaleAPI from 'store/locale';\n\nimport { SingleNotificationPopperProps } from './notifications.interfaces';\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n popoverRoot: {\n boxShadow: '0 5px 10px rgba(0,0,0,.1)',\n background: 'rgba(255, 255, 255, 1)',\n borderRadius: '16px',\n border: '1px solid rgba(255, 255, 255, 0.3)'\n },\n content: {\n marginTop: 10,\n padding: theme.spacing(2)\n },\n\n // https://github.com/mui/material-ui/blob/master/docs/data/material/components/popper/ScrollPlayground.js\n popper: {\n zIndex: 255555,\n boxShadow: 'none',\n maxHeight: '100%',\n '&[data-popper-placement*=\"left\"] $arrow': {\n right: 0,\n marginRight: '-0.9em',\n height: '3em',\n width: '1em',\n '&::before': {\n borderWidth: '1em 0 1em 1em',\n borderColor: `transparent transparent transparent #bcbaba`\n }\n }\n },\n arrow: {\n position: 'absolute',\n fontSize: 7,\n width: '3em',\n height: '3em',\n '&::before': {\n content: '\"\"',\n margin: 'auto',\n display: 'block',\n width: 0,\n height: 0,\n borderStyle: 'solid'\n }\n }\n };\n});\n\nexport const SingleNotificationPopper: React.FC = ({\n open,\n text,\n children,\n arrowColor,\n closePoppers,\n richText\n}) => {\n const classes = useStyles({ richText });\n\n const [arrowRef, setArrowRef] = useState(null);\n const [childNode, setChildNode] = useState(null);\n\n const locale = LocaleAPI();\n\n const openInCenter = window.innerWidth < 1400;\n\n const hasRichText = richText && richText?.en?.body?.length > 0 && richText?.se?.body?.length > 0;\n\n const popoverRootConditionalStyles: SxProps = openInCenter\n ? { minHeight: '150px' }\n : { maxWidth: !hasRichText ? '400px' : '700px', overflowY: 'auto', maxHeight: '500px' };\n\n return (\n <>\n {cloneElement(children, {\n ...children.props,\n ref: setChildNode\n })}\n \n {({ TransitionProps }) => (\n \n \n {!openInCenter && (\n \n )}\n\n \n \n {text[locale as keyof typeof text].title}\n \n\n {hasRichText && Object.keys(richText).length !== 0 ? (\n \n ) : (\n \n {text[locale as keyof typeof text].body}\n \n )}\n\n theme.palette.grey[500]\n }}>\n \n \n \n \n \n )}\n \n \n );\n};\n","/* eslint-disable react/display-name */\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box, Button, Divider, Typography } from '@mui/material';\n\nimport { CenteredFlexBox, FlexBox, VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { dateDifferenceInLocale } from 'utils/utils';\n\nimport { SingleNotificationPopper } from './notification.popper';\nimport { INotificationText, NotificationsCenterItem } from './notifications.interfaces';\n\nconst notificationsSeparator = (\n <>\n \n \n \n \n);\n\nconst viewButtonProps = {\n sx: {\n mt: 0.5,\n width: '40px',\n height: '30px'\n },\n size: 'small' as const,\n variant: 'outlined' as const,\n color: 'payAttGray' as const\n};\n\nconst glassMorphCSS = (background: string, border: string) => ({\n p: 1.3,\n background,\n borderRadius: '16px',\n backdropFilter: 'blur(10.9px)',\n border: `1px solid ${border}`\n});\n\nconst seenNotificationsCSS = glassMorphCSS('rgba(139, 135, 135, 0.2)', 'rgba(204, 200, 200, 0.5)');\n\nconst unseenNotificationsCSS = glassMorphCSS('rgba(84, 255, 0, 0.25)', 'rgba(84, 255, 0, 0.5)');\n\nconst importantNotificationsCSS = glassMorphCSS('rgba(233, 81, 255, 0.2)', 'rgba(233, 81, 255, 0.5)');\n\nexport const buildNotificationsList =\n ({\n seenNotifications,\n setOpenPopperIndex,\n setPopperText,\n popperText,\n openPopperIndex,\n closePoppers,\n notifications,\n locale\n }: {\n seenNotifications: Set;\n setOpenPopperIndex: React.Dispatch>;\n setPopperText: React.Dispatch<\n React.SetStateAction<{\n en: INotificationText;\n se: INotificationText;\n }>\n >;\n popperText: { en: INotificationText; se: INotificationText };\n openPopperIndex: number;\n closePoppers: () => void;\n notifications: NotificationsCenterItem[];\n locale: string;\n }) =>\n (item: NotificationsCenterItem, index: number) => {\n let notificationCSS = seenNotificationsCSS;\n\n const { viewed, notificationId, important, text, createdAt, richText } = item;\n\n if (!viewed) {\n notificationCSS = important ? importantNotificationsCSS : unseenNotificationsCSS;\n }\n\n const { body, title } = text[locale as keyof typeof text];\n\n const time = dateDifferenceInLocale(new Date(createdAt), locale);\n\n const onClick = () => {\n setOpenPopperIndex(index);\n setPopperText(text);\n seenNotifications.add(notificationId);\n };\n\n let headingColor = '#4b4b4b';\n if (!viewed) headingColor = '#005e0e';\n if (important) headingColor = '#841277';\n\n const headingStyle = {\n color: headingColor,\n marginBottom: '5px'\n };\n\n return (\n \n \n \n \n \n {important ? `! ${title}` : title}\n \n \n {time}\n \n \n \n \n {body}\n \n \n \n \n {notifications && index !== notifications.length ? notificationsSeparator : null}\n \n \n );\n };\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { I18n, Translate } from 'react-redux-i18n';\n\nimport NotificationsActiveTwoToneIcon from '@mui/icons-material/NotificationsActiveTwoTone';\nimport {\n Badge,\n Box,\n Divider,\n IconButton,\n List,\n ListItem,\n Pagination,\n Popover,\n Tooltip,\n Typography\n} from '@mui/material';\n\nimport { getLastFiftyNotificationsAPI, markNotificationsAsSeenAPI } from 'api/notifications/notificationsAPI';\nimport { FlexBox } from 'generalComponents/BoxModifications';\nimport { useAsync } from 'generalComponents/hooks/useAsync';\nimport { setShouldRefreshNotificationCenter } from 'store/features/notifications/notificationsSlice';\nimport LocaleAPI from 'store/locale';\nimport { store } from 'store/store';\nimport { useAppDispatch } from 'store/store.exports';\nimport { introStepHome } from 'views/Home/JoyrideIntroduction/Main/Home.Joyride.Steps';\n\nimport { INotificationText, NotificationsCenterItem } from './notifications.interfaces';\nimport { buildNotificationsList } from './notifications.list';\n\nconst listItemCSS = {\n p: 2,\n minWidth: 350,\n width: 450,\n display: { xs: 'block', sm: 'flex' }\n};\n\nexport const HeaderNotifications = () => {\n const ref = useRef(null);\n\n const [isOpen, setOpen] = useState(false);\n const [page, setPage] = useState(0);\n const [popperText, setPopperText] = useState<{\n en: INotificationText;\n se: INotificationText;\n }>({\n en: { title: '', body: '' },\n se: { title: '', body: '' }\n });\n const [openPopperIndex, setOpenPopperIndex] = useState(-1);\n const [shownNotifications, setShownNotifications] = useState(null);\n\n const { data, execute, loading } = useAsync<{\n notifications: NotificationsCenterItem[];\n }>(getLastFiftyNotificationsAPI);\n\n const notifications = data?.notifications;\n const seenNotifications = useMemo(() => new Set(), []);\n\n const refreshNotifications = async () => {\n // Type 'Set' can only be iterated through when using the '--downlevelIteration' flag or with a '--target' of 'es2015' or higher.ts(2802)\n const notificationIdsWithNoDuplicates: string[] = [];\n seenNotifications.forEach((item) => {\n notificationIdsWithNoDuplicates.push(item);\n });\n\n seenNotifications.clear();\n\n await markNotificationsAsSeenAPI(notificationIdsWithNoDuplicates);\n await execute({});\n };\n\n const closePoppers = useCallback(() => {\n setOpenPopperIndex(-1);\n }, []);\n\n const handleOpen = (): void => {\n setOpen(true);\n closePoppers();\n };\n\n const handleClose = (): void => {\n setOpen(false);\n closePoppers();\n\n if (seenNotifications.size) {\n refreshNotifications();\n }\n };\n\n const locale = LocaleAPI();\n\n useEffect(() => {\n if (notifications) {\n const props = {\n seenNotifications,\n setOpenPopperIndex,\n setPopperText,\n popperText,\n openPopperIndex,\n closePoppers,\n notifications,\n locale\n };\n\n const currentNotificationsPage = notifications\n .slice(page * 5, page * 5 + 5)\n .map(buildNotificationsList(props));\n\n setShownNotifications(currentNotificationsPage);\n }\n }, [closePoppers, notifications, openPopperIndex, page, popperText, seenNotifications, locale]);\n\n const refresh = useSelector(() => store.getState().notifications.shouldRefreshNotificationsCenter);\n const dispatch = useAppDispatch();\n\n if (refresh) {\n execute({});\n dispatch(setShouldRefreshNotificationCenter(false));\n }\n\n const unseenNotificationsCount = notifications && notifications.filter((item) => !item.viewed).length;\n\n const badgeColor = unseenNotificationsCount ? 'primary' : 'action';\n\n const onPageChange = (_: React.ChangeEvent, currPage: number) => {\n setPage(currPage - 1);\n closePoppers();\n\n if (seenNotifications.size) {\n refreshNotifications();\n }\n };\n\n const pagesCount = (notifications && notifications.length > 5 && Math.ceil(notifications.length / 5)) || 1;\n\n const pagination = (\n \n );\n\n return (\n <>\n \n \n \n \n \n \n \n\n \n \n \n \n \n\n {notifications && notifications.length !== 0 && pagination}\n \n\n \n\n \n \n \n {loading || !notifications || notifications.length === 0 ? (\n <>\n {loading && (\n \n \n \n )}\n {!loading && (\n \n \n \n )}\n \n ) : (\n shownNotifications\n )}\n \n \n \n \n \n );\n};\n","import { Box } from '@mui/material';\n\nimport { FlexBox } from 'generalComponents/BoxModifications';\n\nimport HeaderUserbox from '../Userbox/Userbox';\nimport HeaderLanguageSelect from './LanguageSelect/LanguageSelect';\nimport { HeaderNotifications } from './Notifications/notifications-center';\n\nconst HeaderButtons = () => {\n return (\n <>\n \n \n \n \n \n \n \n \n );\n};\n\nexport default HeaderButtons;\n","import { useContext } from 'react';\n\nimport CloseTwoToneIcon from '@mui/icons-material/CloseTwoTone';\nimport MenuTwoToneIcon from '@mui/icons-material/MenuTwoTone';\nimport { Box, IconButton, Tooltip } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nimport 'assets/scss/components/headerMenu/base.scss';\n\nimport { SidebarContext } from 'contexts/SidebarContext';\nimport { FlexBox } from 'generalComponents/BoxModifications';\nimport { introStepHome } from 'views/Home/JoyrideIntroduction/Main/Home.Joyride.Steps';\nimport MerchantTitle from 'views/Navigation/Header/MerchantTitle';\n\nimport HeaderButtons from './Buttons/Buttons';\n\nconst HeaderWrapper = styled(Box)(\n ({ theme }) => `\n color: ${theme.header.textColor};\n box-shadow: ${theme.header.boxShadow};\n`\n);\n\nconst Header = (): JSX.Element => {\n const { sidebarToggle, toggleSidebar } = useContext(SidebarContext);\n\n return (\n \n \n \n \n \n \n {!sidebarToggle ? : }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Header;\n","import { Box, Typography, useTheme } from '@mui/material';\n\nimport logoBlack from 'assets/images/PayAtt_logo_black.svg';\nimport logoWhite from 'assets/images/PayAtt_logo_white.svg';\n\nimport { CenteredFlexBox, FlexBox } from './BoxModifications';\n\nexport const MainHomeLogo = () => {\n const theme = useTheme();\n\n return (\n \n \n \n powered by\n \n \n \n \n );\n};\n\nconst LoginLogo = () => {\n return (\n \n \n powered by\n \n \n \n );\n};\n\nexport default LoginLogo;\n","import { FC, ReactNode, useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\nimport { NavLink as RouterLink, matchPath } from 'react-router-dom';\n\nimport ExpandLessTwoToneIcon from '@mui/icons-material/ExpandLessTwoTone';\nimport ExpandMoreTwoToneIcon from '@mui/icons-material/ExpandMoreTwoTone';\nimport { Badge, Button, Collapse, ListItem } from '@mui/material';\n\nimport clsx from 'clsx';\n\nimport { introStepHome } from 'views/Home/JoyrideIntroduction/Main/Home.Joyride.Steps';\n\ninterface SidebarMenuItemProps {\n children?: ReactNode;\n link?: string;\n icon?: any;\n badge?: string;\n open?: boolean;\n active?: boolean;\n name: string;\n}\n\nexport const SidebarMenuItem: FC = ({\n children,\n link,\n icon: Icon,\n badge,\n open: openParent,\n active,\n name\n}) => {\n const [menuToggle, setMenuToggle] = useState(!!openParent);\n\n let homeIntroStepName = '';\n switch (name) {\n case 'sidebar.menu.campaigns.root': {\n homeIntroStepName = introStepHome(9);\n break;\n }\n case 'sidebar.menu.stampCard.root': {\n homeIntroStepName = introStepHome(10);\n break;\n }\n case 'sidebar.menu.views': {\n homeIntroStepName = introStepHome(11);\n break;\n }\n case 'sidebar.menu.dashboard': {\n homeIntroStepName = introStepHome(12);\n break;\n }\n default:\n }\n\n if (children) {\n return (\n \n }\n onClick={() => setMenuToggle(!menuToggle)}\n endIcon={menuToggle ? : }>\n \n \n \n {children}\n \n \n );\n }\n\n return (\n \n }>\n \n {badge && }\n \n \n );\n};\n\nexport const RenderItem = ({\n path,\n name,\n link,\n icon\n}: {\n path: string;\n name: string;\n link: string;\n icon: React.ReactNode;\n}) => {\n const exactMatch = link ? !!matchPath({ path: link, end: true }, path) : false;\n\n return ;\n};\n","import { List, styled } from '@mui/material';\n\nexport const MenuWrapper = styled(List)(\n ({ theme }) => `\n padding: 0;\n margin-bottom: ${theme.spacing(1)};\n \n .MuiListSubheader-root {\n color: #ffffff;\n text-transform: uppercase;\n font-weight: bold;\n line-height: 1.4;\n font-size: ${theme.typography.pxToRem(12)};\n padding: ${theme.spacing(0.5, 2)};\n }\n`\n);\n\nexport const SubMenuWrapper = styled(List)(\n ({ theme }) => `\n padding: 0px;\n\n .MuiList-root .MuiList-root .MuiListItem-root .MuiButton-root {\n font-weight: normal !important;\n }\n \n &.MuiList-root {\n .MuiListItem-root {\n padding: 6px 0px 6px 10px;\n \n .MuiButton-root {\n font-size: ${theme.typography.pxToRem(13)};\n padding-top: ${theme.spacing(0.8)};\n padding-bottom: ${theme.spacing(0.8)};\n color: #cdcdcd;\n background-color: #ffffff00;\n width: 100%;\n justify-content: flex-start;\n position: relative;\n\n .MuiBadge-root {\n position: absolute;\n right: ${theme.spacing(4)};\n\n .MuiBadge-standard {\n font-size: ${theme.typography.pxToRem(9)};\n background: #ffffff00;\n font-weight: bold;\n text-transform: uppercase;\n color: #cdcdcd;\n }\n }\n \n .MuiButton-startIcon,\n .MuiButton-endIcon {\n transition: ${theme.transitions.create(['color'])};\n\n .MuiSvgIcon-root {\n font-size: inherit;\n transition: none;\n }\n }\n\n .MuiButton-startIcon {\n font-size: ${theme.typography.pxToRem(20)};\n margin-right: ${theme.spacing(1)};\n color: #d3d3d3;\n background-color: #bbbbbb00;\n }\n \n .MuiButton-endIcon {\n font-size: ${theme.typography.pxToRem(22)};\n margin-left: auto;\n }\n\n &.Mui-active,\n &:hover {\n background-color: #f2f5f910;\n color: #ffffff;\n\n .MuiButton-startIcon,\n .MuiButton-endIcon {\n color: #ffffff;\n background-color: #f2f5f900;\n }\n }\n }\n\n &.Mui-children {\n flex-direction: column;\n line-height: 1;\n }\n\n .MuiCollapse-root {\n width: 100%;\n\n .MuiList-root {\n padding: ${theme.spacing(0.5, 0)};\n }\n\n .MuiListItem-root {\n padding: 2px ${theme.spacing(0)};\n\n .MuiButton-root {\n font-size: ${theme.typography.pxToRem(12)};\n padding: ${theme.spacing(0.5, 2, 0.5, 6.5)};\n &.Mui-active,\n &:hover {\n background-color: #ffffff00;\n }\n }\n }\n }\n }\n }\n`\n);\n","import { matchPath } from 'react-router-dom';\n\nimport {\n ContactMail,\n Group,\n Insights,\n IntegrationInstructions,\n Message,\n Store,\n TipsAndUpdates\n} from '@mui/icons-material';\nimport SettingsIcon from '@mui/icons-material/Settings';\n\nimport { RenderItem, SidebarMenuItem } from './helpers';\nimport { SubMenuWrapper } from './styled';\n\nconst Dashboard = ({ path }: { path: string }) => {\n return ;\n};\n\nconst MemberManagement = ({ path }: { path: string }) => {\n return ;\n};\n\nconst Settings = ({ path }: { path: string }) => {\n const link = '/management/settings';\n const partialMatch = !!matchPath({ path: link, end: false }, path);\n\n return (\n \n \n \n \n \n \n );\n};\n\nconst Contact = ({ path }: { path: string }) => {\n return ;\n};\n\nexport const Management = ({ path }: { path: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n","import { matchPath } from 'react-router-dom';\n\nimport { CalendarMonth, CardGiftcard, Cast, FiberNew, GridView, Message, SmartScreen } from '@mui/icons-material';\nimport ChatIcon from '@mui/icons-material/Chat';\n\nimport { RenderItem, SidebarMenuItem } from './helpers';\nimport { SubMenuWrapper } from './styled';\n\nconst SMS = ({ path }: { path: string }) => {\n const link = '/IntelliSMS';\n const partialMatch = !!matchPath({ path: link, end: false }, path);\n\n return (\n \n \n \n \n );\n};\n\nconst StampCard = ({ path }: { path: string }) => {\n const link = '/stampcard';\n const partialMatch = !!matchPath({ path: link, end: false }, path);\n\n return (\n \n \n \n \n \n );\n};\n\nconst Views = ({ path }: { path: string }) => {\n return ;\n};\n\nexport const Overview = ({ path }: { path: string }) => {\n return (\n \n \n \n \n \n );\n};\n","import { Translate } from 'react-redux-i18n';\nimport { useLocation } from 'react-router-dom';\n\nimport HomeIcon from '@mui/icons-material/Home';\nimport { ListSubheader } from '@mui/material';\n\nimport { Management } from './ManagementSection';\nimport { Overview } from './OverviewSection';\nimport { RenderItem } from './helpers';\nimport { MenuWrapper, SubMenuWrapper } from './styled';\n\nconst SidebarMenu = (): JSX.Element => {\n const location = useLocation();\n\n return (\n <>\n }>\n \n \n \n \n\n {/* Overview section */}\n \n \n \n }>\n \n \n \n \n\n {/* Management section */}\n \n \n \n }>\n \n \n \n \n \n );\n};\n\nexport default SidebarMenu;\n","import { useContext } from 'react';\n\nimport { Box, SwipeableDrawer, styled } from '@mui/material';\n\nimport sassVariables from 'assets/scss/export.module.scss';\n\nimport { SidebarContext } from 'contexts/SidebarContext';\nimport { MainHomeLogo } from 'generalComponents/PayAttLogo';\nimport { parseNumberSassVariable } from 'utils/utils';\n\nimport { useHeaderBannersContext } from '../Header/Context/useContextProvider';\nimport SidebarMenu from './SidebarMenu/SidebarMenu';\n\ninterface RootProps {\n numberOfBanners?: number;\n}\n\nconst SwipeableDrawerWrapper = styled(SwipeableDrawer, {\n shouldForwardProp: (prop) => prop !== 'numberOfBanners'\n})(({ numberOfBanners }) => ({\n '.MuiPaper-elevation': {\n // 40 is the size of header badges\n marginTop: `${\n numberOfBanners ? numberOfBanners * parseNumberSassVariable(sassVariables.menuHeaderBannerHeight) : 0\n }px`\n }\n}));\n\nconst SidebarWrapperStyled = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'numberOfBanners'\n})(({ numberOfBanners }) => ({\n height: `calc(100% - ${\n 65 + (numberOfBanners ? numberOfBanners * parseNumberSassVariable(sassVariables.menuHeaderBannerHeight) : 0)\n }px)`,\n overflow: 'hidden'\n}));\n\nconst Sidebar = (): JSX.Element => {\n const { sidebarToggle, toggleSidebar } = useContext(SidebarContext);\n const { banners } = useHeaderBannersContext();\n\n const iOS = typeof navigator !== 'undefined' && /iPad|iPhone|iPod/.test(navigator.userAgent);\n\n return (\n \n {\n console.info('On Open Left Sidebar Menu');\n }}\n swipeAreaWidth={20}\n variant=\"persistent\"\n elevation={9}\n transitionDuration={{ enter: 200, exit: 400 }}\n disableBackdropTransition={!iOS}\n disableDiscovery={iOS}>\n theme.sidebar.width,\n color: '#121010',\n background: '#4d4d4d',\n boxShadow: '2px 0 3px rgb(159 162 191 / 18%), 1px 0 1px rgb(159 162 191 / 32%)'\n }}>\n \n \n \n \n theme.sidebar.width,\n backgroundColor: '#ffffff00'\n }}>\n \n \n \n \n \n \n );\n};\n\nexport default Sidebar;\n","import { FC, ReactNode, useContext } from 'react';\nimport { Outlet } from 'react-router-dom';\n\nimport { Box } from '@mui/material';\n\nimport sassVariables from 'assets/scss/export.module.scss';\nimport 'assets/scss/mainPage.scss';\n\nimport { SidebarContext } from 'contexts/SidebarContext';\nimport Footer from 'generalComponents/Footer/Footer';\nimport { parseNumberSassVariable } from 'utils/utils';\n\nimport { useHeaderBannersContext } from './Header/Context/useContextProvider';\nimport Header from './Header/Header';\nimport Sidebar from './Sidebar/Sidebar';\n\ninterface SidebarLayoutProps {\n children?: ReactNode;\n}\n\n// The sidebar creates both left sidebar and header on the top. the MainContent component renders whatever shouold\n// be displayed on the dashboard\nconst SidebarLayout: FC = () => {\n const { sidebarToggle } = useContext(SidebarContext);\n const { banners } = useHeaderBannersContext();\n\n const withoutSidebarStyle = {\n paddingLeft: '0px',\n transform: 'none',\n transition: 'padding-left 300ms cubic-bezier(0.5, 0.15, 0.53, 1) 0ms',\n height: `calc(100% - ${banners.length * parseNumberSassVariable(sassVariables.menuHeaderBannerHeight)}px`\n };\n\n const withSidebarStyle = {\n transform: 'none',\n transition: 'padding-left 200ms cubic-bezier(0, 0, 0.2, 1) 0ms',\n height: `calc(100% - ${banners.length * parseNumberSassVariable(sassVariables.menuHeaderBannerHeight)}px`\n };\n\n return (\n <>\n
\n {/* Left sidebar */}\n \n \n {/* Render the main content, (specific View fetched from Routes) */}\n
\n \n \n \n );\n};\n\nexport default SidebarLayout;\n","import { lazy } from 'react';\nimport { Navigate } from 'react-router-dom';\n\nimport { Loader } from 'routes/routes.helpers';\nimport SidebarLayout from 'views/Navigation/Navigation';\n\nconst ContactForm = Loader(lazy(() => import('views/Management/ContactPayAtt/ContactUs')));\n\nexport const contactRoutes = {\n path: '/contact/*',\n component: ,\n children: [\n {\n path: '',\n component: \n },\n {\n path: 'form',\n component: \n }\n ]\n};\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport { Responsive, WidthProvider } from 'react-grid-layout';\n// Grid styling\nimport 'react-grid-layout/css/styles.css';\nimport 'react-resizable/css/styles.css';\n\nimport { Box, useTheme } from '@mui/material';\n\nimport { venuesSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport {\n GridBreakpointsContextProvider,\n useBreakpointsContext\n} from 'views/Dashboard/Contexts/BreakpointsContext/BreakpointsContext';\nimport { IGlobalGridSettings } from 'views/Dashboard/Contexts/Contexts.interfaces';\nimport { DashboardSelectionProvider } from 'views/Dashboard/Contexts/DashboardSelectionContext/DashboardSelectionContext';\nimport {\n GlobalSettingsContextProvider,\n useGlobalSettingsContext\n} from 'views/Dashboard/Contexts/GlobalSettingsContext/GlobalSettingContext';\nimport { GridItemContextProvider } from 'views/Dashboard/Contexts/GridItemContext/GridItemContext';\nimport { StampCardCampaignStatsContextProvider } from 'views/Dashboard/Contexts/StampCardCampaignStatsContext/StampCardCampaignStatsContext';\nimport { dashboardContainerBreakpoint } from 'views/Dashboard/Dashboard.utils';\nimport { CreateGridItem } from 'views/Dashboard/Grid/ResponsiveGridLayout.CreateGridItem';\nimport { useContainerRect } from 'views/Dashboard/Grid/ResponsiveGridLayout.useContainerRect';\nimport { DashboardBreakpoint } from 'views/Dashboard/Interfaces/Dashboard.breakpoints';\nimport {\n DefaultGridSettings,\n GRID_MARGIN,\n GRID_ROW_HEIGHT,\n RESPONSIVE_COLUMNS\n} from 'views/Dashboard/Interfaces/Dashboard.constants';\nimport { DashboardBreakpointLayouts } from 'views/Dashboard/Interfaces/Dashboard.layout';\nimport { DashboardJoyrideContextProvider } from 'views/Dashboard/JoyrideIntroductions/Dashboard.Joyride.context';\n\nimport { HomeWidgetMenuJoyrideContextProvider } from './JoyrideIntroduction/Settings/Home.JoyrideWidgetMenu.context';\n\nconst ResponsiveGridLayout = WidthProvider(Responsive);\n\nexport const HomepageGrid: React.FC<{ layouts: DashboardBreakpointLayouts }> = ({ layouts }) => {\n const theme = useTheme();\n\n const { globalDragability, globalResizability } = useGlobalSettingsContext();\n\n const [venueIds] = useState(venuesSelector(store.getState())?.map((el) => el.id));\n const { breakpoint, setBreakpoint } = useBreakpointsContext();\n\n const containerRef = useRef(null);\n const containerRect = useContainerRect(containerRef);\n\n useEffect(() => {\n const newBreakpoint: DashboardBreakpoint = dashboardContainerBreakpoint(\n theme.breakpoints.values,\n containerRect.width\n );\n\n if (containerRect.width > 0) setBreakpoint(newBreakpoint);\n }, [containerRect.width, setBreakpoint, theme.breakpoints.values]);\n\n const GridLayout = useMemo(() => {\n if (!breakpoint || containerRect.width < 0) return null;\n\n // Will be recalculated every time the breakpoint changes\n const itemsToShow = layouts[breakpoint].map((gridItemLayout) =>\n CreateGridItem({ gridItemLayout, venueIds, showItemTopBar: false })\n );\n\n return (\n \n {itemsToShow}\n \n );\n\n // We need both breakpoint and containerWidth, to cover all possible scenarios, here are a few examples:\n // 1. First load, the breakpoint is updated after the containerWidth, when it goes from null to value. So we need the breakpoint\n // 2. Toggle sidebar, this will update the container width, but may not change the breakpoint (depends on resolution)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [breakpoint, layouts, theme.breakpoints.values, venueIds]);\n\n return (\n \n {GridLayout}\n \n );\n};\n\n// The order of the providers is important!\nexport const HomepageGridLayoutWrapper: React.FC<{\n children: React.ReactNode;\n globalGridSettings?: IGlobalGridSettings;\n}> = ({ children, globalGridSettings = DefaultGridSettings }) => (\n \n \n \n \n {/* GridBreakpointsContextProvider, DashboardJoyrideContextProvider and GridItemContextProvider are not used, but needed since there are many components shared with the dashboard. \n E.g. closing a chart from the chart header uses the removeItem function from DashboardSelectionProvider context, but since we hide the close button on the homepage it is OK */}\n \n \n \n {children}\n \n \n \n \n \n \n \n);\n","import { Translate } from 'react-redux-i18n';\n\nimport { Box, Grid, Typography } from '@mui/material';\n\nimport { currentUserSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { GlobalSettings } from 'views/Dashboard/GlobalSettings/GlobalSettings';\n\nconst HomepageHeader: React.FC<{ isLoading: boolean }> = ({ isLoading }) => {\n const state = store.getState();\n const currentUser = currentUserSelector(state);\n\n const user = {\n name: currentUser?.contact.firstName\n };\n\n return (\n \n \n \n \n {user.name}!\n \n \n \n \n \n \n\n {!isLoading && }\n \n );\n};\n\nexport default HomepageHeader;\n","import { useEffect, useState } from 'react';\n\nimport { Box } from '@mui/material';\n\nimport { JoyridePayAtt } from 'Joyride/JoyridePayAtt';\nimport { SHOW_HOMEPAGE_INTRO_SEARCH_PARAMS } from 'Joyride/JoyridePayAtt.constants';\n\nimport { introductionSelector } from 'store/selectors';\nimport { store } from 'store/store';\n\nimport { homeIntroSteps, introStepHome } from './Home.Joyride.Steps';\n\nexport const JoyrideIntroductionMain = () => {\n const [show, setShow] = useState(false);\n const [showSkipButton, setShowSkipButton] = useState(false);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n let shouldStart = false;\n\n // Start intro as we were navigated here from Introduction tab\n if (window.location.search.includes(SHOW_HOMEPAGE_INTRO_SEARCH_PARAMS)) {\n shouldStart = true;\n setShowSkipButton(true);\n window.history.replaceState(null, '', window.location.pathname);\n } else {\n shouldStart = introductionSelector(store.getState()).homepage.main;\n }\n\n if (shouldStart) {\n setShow(shouldStart);\n\n setTimeout(() => {\n // Auto scroll the navigation menu to the top to prepare for intro steps\n const sidebarMenu = document.querySelector('.sidebarWrapper .menuWrapper');\n if (sidebarMenu) sidebarMenu.scrollTo(0, 0);\n }, 500);\n }\n }, 2000);\n\n return () => {\n clearTimeout(timer);\n };\n }, []);\n\n if (!show) return null;\n\n return (\n <>\n \n \n \n \n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { I18n } from 'react-redux-i18n';\n\nimport { Box, CircularProgress, Container } from '@mui/material';\n\nimport { VerticalCenteredFlexBox, VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { FooterComponent, REDUCED_FOOTER_HEIGHT } from 'generalComponents/Footer/Footer';\nimport { BackgroundImages } from 'store/features/dashboard/handlers';\nimport {\n authSelector,\n dashboardBackgroundImageSelector,\n homepageLayoutSelector,\n merchantSelector\n} from 'store/selectors';\nimport { store } from 'store/store';\nimport { useAppDispatch } from 'store/store.exports';\nimport {\n PopulateHomepageLayouts,\n PopulateMerchantAndVenues,\n PopulateStampCardCampaigns,\n PopulateStatistics\n} from 'store/store.populate';\nimport { DashboardBreakpointLayouts } from 'views/Dashboard/Interfaces/Dashboard.layout';\n\nimport { HomepageGrid, HomepageGridLayoutWrapper } from './GridLayout';\nimport HomepageHeader from './HomepageHeader';\nimport { introStepHome } from './JoyrideIntroduction/Main/Home.Joyride.Steps';\nimport { JoyrideIntroductionMain } from './JoyrideIntroduction/Main/Home.JoyrideIntro';\nimport { HOMEPAGE_BACKGROUND_COLOR } from './styles';\n\nconst HomepageGridWithBackgroundImage: React.FC<{ layouts: DashboardBreakpointLayouts; isLoading?: boolean }> = ({\n layouts,\n isLoading\n}) => {\n const [backgroundImage, setBackgroundImage] = useState(dashboardBackgroundImageSelector(store.getState()));\n\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n const backgroundImageNew = dashboardBackgroundImageSelector(store.getState());\n if (backgroundImageNew.name !== backgroundImage.name) setBackgroundImage(backgroundImageNew);\n });\n\n return unsubscribe;\n });\n\n const backgroundStyleImage = {\n backgroundImage: `url('${backgroundImage.url}')`,\n backgroundSize: 'cover',\n backgroundRepeat: 'no-repeat'\n };\n\n const backgroundStyleNoImage = { backgroundColor: HOMEPAGE_BACKGROUND_COLOR };\n const backgroundImageStyle = {\n pb: `${REDUCED_FOOTER_HEIGHT}px`,\n mb: `-${REDUCED_FOOTER_HEIGHT}px`,\n flexGrow: 1,\n ...(backgroundImage.name !== BackgroundImages.hide ? backgroundStyleImage : backgroundStyleNoImage)\n };\n\n return (\n <>\n theme.spacing(1, 0, 1, 0) }}>\n \n \n {!isLoading && }\n \n {isLoading ? (\n \n \n \n ) : (\n \n )}\n \n \n );\n};\n\nconst Home = (): JSX.Element | null => {\n const dispatch = useAppDispatch();\n\n const [fetchingData, setFetchingData] = useState(true);\n\n // Populate redux store with new data every time the page is focused or refreshed\n useEffect(() => {\n const populateStore = async () => {\n const currUser = authSelector(store.getState()).currentUser;\n\n if (currUser) {\n await PopulateMerchantAndVenues(dispatch, currUser);\n const merchantAfterPopulation = merchantSelector(store.getState());\n\n await PopulateHomepageLayouts(dispatch);\n await PopulateStatistics(dispatch, merchantAfterPopulation);\n await PopulateStampCardCampaigns(dispatch, merchantAfterPopulation);\n\n setFetchingData(false);\n }\n };\n\n populateStore();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const layouts: DashboardBreakpointLayouts = useMemo(() => {\n if (fetchingData) {\n return { xs: [], sm: [], md: [], lg: [], xl: [] };\n }\n\n const homepageLayouts = homepageLayoutSelector(store.getState()).data;\n const xsLayout = homepageLayouts.find((el) => el.breakpoint === 'xs');\n const smLayout = homepageLayouts.find((el) => el.breakpoint === 'sm');\n const mdLayout = homepageLayouts.find((el) => el.breakpoint === 'md');\n const lgLayout = homepageLayouts.find((el) => el.breakpoint === 'lg');\n const xlLayout = homepageLayouts.find((el) => el.breakpoint === 'xl');\n\n const fallBackLayout = lgLayout || mdLayout || xlLayout || smLayout || xsLayout || { layout: [] };\n\n return {\n xs: xsLayout?.layout || fallBackLayout.layout,\n sm: smLayout?.layout || fallBackLayout.layout,\n md: mdLayout?.layout || fallBackLayout.layout,\n lg: lgLayout?.layout || fallBackLayout.layout,\n xl: xlLayout?.layout || fallBackLayout.layout\n };\n }, [fetchingData]);\n\n const gridOrSpinner = fetchingData ? (\n \n \n \n ) : (\n \n \n \n );\n\n return (\n <>\n \n {`${I18n.t('homepage.title')}`}\n \n {gridOrSpinner}\n \n \n );\n};\n\nexport default Home;\n","export const HOMEPAGE_BACKGROUND_COLOR = '#e6eaec';\n","import { lazy } from 'react';\nimport { Navigate } from 'react-router-dom';\n\nimport { Loader } from 'routes/routes.helpers';\nimport Home from 'views/Home/Home';\nimport { SMSCampaignProvider } from 'views/IntelliSms/context/SMSCampaignContext';\nimport SidebarLayout from 'views/Navigation/Navigation';\n\nconst Registrations = Loader(lazy(() => import('views/Registrations/Registrations')));\n\nconst Profile = Loader(lazy(() => import('views/Profile/Profile')));\n\nexport const homeRoutes = {\n path: '/home/*',\n component: (\n \n \n \n ),\n children: [\n {\n path: '',\n component: \n },\n {\n path: 'registrations',\n component: \n },\n {\n path: 'profile',\n component: \n },\n {\n path: '*',\n component: \n }\n ]\n};\n","import axios from 'axios';\n\nimport { BASE_URL } from 'api/helper';\nimport { handleAxiosError, handleAxiosInvalidResponse } from 'errorHandling/handleResponse';\n\nimport { SmsSuggestionLanguage } from './intelliSms.interfaces';\n\nexport type SetSmsSuggestionResponse = { message: string; status: number; ttl?: number };\n\nexport const getSmsSuggestionLanguageAPI = async (): Promise => {\n try {\n const response = await axios.get(`${BASE_URL}/sms-campaign/sms-suggestion-language`, {\n headers: { 'Content-Type': 'application/json' }\n });\n\n if (response.data && response.status === 200 && response.data.language) {\n return response.data.language;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (err) {\n throw handleAxiosError(err);\n }\n};\n\nexport const setSmsSuggestionLanguageAPI = async (\n language: SmsSuggestionLanguage\n): Promise => {\n try {\n const response = await axios.patch(\n `${BASE_URL}/sms-campaign/sms-suggestion-language`,\n { language },\n { headers: { 'Content-Type': 'application/json' } }\n );\n\n if (response.data && response.status === 200 && response.data.message) {\n return { status: response.status, ...response.data };\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (err: any) {\n if (axios.isAxiosError(err)) {\n if (err.response && err.response.data) {\n return { status: err.response.status, ...err.response.data };\n }\n }\n\n throw handleAxiosError(err);\n }\n};\n","export const smsSuggestionLanguage = {\n Swedish: 'Swedish',\n English: 'English'\n} as const;\n\nexport type SmsSuggestionLanguage = keyof typeof smsSuggestionLanguage;\n","import React from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Box, Dialog, DialogContent, DialogContentText, DialogTitle, IconButton, Typography } from '@mui/material';\n\nimport { SmsSuggestionLanguage } from 'api/intelliSms/intelliSms.interfaces';\nimport { PayAttDialogActions } from 'generalComponents/Dialog/DialogActions';\nimport { SlideUpTransition } from 'generalComponents/Transitions/SlideUp';\nimport { venuesSelector } from 'store/selectors';\nimport { store } from 'store/store';\n\ninterface ConfirmChangeLanguageProps {\n open: boolean;\n setOpen: React.Dispatch>;\n onConfirm: () => void;\n language: SmsSuggestionLanguage;\n}\n\nexport const ConfirmChangeLanguage: React.FC = ({ open, setOpen, onConfirm, language }) => {\n const venues = venuesSelector(store.getState());\n\n const handleCloseAccept = () => {\n onConfirm();\n setOpen(false); // Indicate that we accepted with the second 'true'\n };\n\n const handleCloseDecline = () => {\n setOpen(false);\n };\n\n return (\n \n \n \n \n \n \n \n 1 ? 'subtitleMultiVenue' : 'subtitle'\n }`}\n dangerousHTML\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { Translate } from 'react-redux-i18n';\nimport { toast } from 'react-toastify';\n\nimport { Box } from '@mui/material';\n\nimport { SetSmsSuggestionResponse } from 'api/intelliSms/intelliSms.api';\nimport { PayAttFailToast, PayAttSuccessToast } from 'generalComponents/Toasts/Toasts';\n\nexport const handleResponse = (data: SetSmsSuggestionResponse) => {\n if (data.status === 200) {\n if (data.message.includes('Language already set')) {\n return toast.info(\n
\n \n
\n );\n }\n\n return PayAttSuccessToast(\n
\n \n
\n );\n }\n\n // This means we failed since there is still a ttl on the previous update, in seconds\n if (data.status === 423 && data.ttl) {\n const remainingMinutes = Math.floor(data.ttl / 60);\n const remainingSeconds = Math.floor(data.ttl % 60);\n\n return toast.error(\n
\n {' '}\n \n {remainingMinutes}m {remainingSeconds % 60}s\n \n
\n );\n }\n\n return PayAttFailToast(\n
\n \n
\n );\n};\n","import { useEffect, useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box, Button, MenuItem, Select, SelectChangeEvent, Typography } from '@mui/material';\n\nimport { getSmsSuggestionLanguageAPI, setSmsSuggestionLanguageAPI } from 'api/intelliSms/intelliSms.api';\nimport {\n SmsSuggestionLanguage,\n smsSuggestionLanguage as smsSuggestionLanguageObj\n} from 'api/intelliSms/intelliSms.interfaces';\nimport { FlexBox } from 'generalComponents/BoxModifications';\n\nimport { ConfirmChangeLanguage } from './IntelliSms.ConfirmDialog';\nimport { handleResponse } from './IntelliSms.toasts';\n\nexport const ChangeLanguage = (): JSX.Element => {\n const [language, setLanguage] = useState(null);\n const [dialogOpen, setDialogOpen] = useState(false);\n\n useEffect(() => {\n const fetch = async () => {\n const smsSuggestionLanguage = await getSmsSuggestionLanguageAPI();\n\n if (!Object.keys(smsSuggestionLanguageObj).includes(smsSuggestionLanguage)) {\n throw new Error('Failed to get smsSuggestionLanguage');\n }\n\n setLanguage(smsSuggestionLanguage);\n };\n\n fetch();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleChange = (e: SelectChangeEvent) => {\n setLanguage(e.target.value as SmsSuggestionLanguage);\n };\n\n const submit = async () => {\n if (!language) return;\n\n try {\n const response = await setSmsSuggestionLanguageAPI(language);\n handleResponse(response);\n } catch (error) {\n console.error(error);\n }\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n {Object.keys(smsSuggestionLanguageObj).map((lang: any) => (\n \n \n \n ))}\n \n \n \n \n\n submit()}\n language={language || 'Swedish'}\n />\n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { Box, Typography } from '@mui/material';\n\nimport { FlexBox } from 'generalComponents/BoxModifications';\n\nexport const IntelliSmsHeader = (): JSX.Element => {\n return (\n \n \n \n \n \n \n theme.palette.payAttGray.main }}>\n \n \n \n \n \n );\n};\n","import { Helmet } from 'react-helmet-async';\nimport { I18n } from 'react-redux-i18n';\n\nimport { Card, Container } from '@mui/material';\n\nimport { FullDivider } from 'generalComponents/BoxModifications';\n\nimport { ChangeLanguage } from './IntelliSms.ChangeLanguage';\nimport { IntelliSmsHeader } from './IntelliSms.Header';\n\nconst IntelliSmsSettings = (): JSX.Element => {\n return (\n <>\n \n {`${I18n.t('management.settings.intelliSms.title')}`}\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default IntelliSmsSettings;\n","import { lazy } from 'react';\nimport { Navigate } from 'react-router-dom';\n\nimport { Loader } from 'routes/routes.helpers';\nimport IntelliSmsSettings from 'views/Management/settings/IntelliSms/IntelliSms';\nimport SidebarLayout from 'views/Navigation/Navigation';\n\nconst Settings = Loader(lazy(() => import('views/Management/settings/VenueSettings/VenueSettings')));\n\nconst Profile = Loader(lazy(() => import('views/Profile/Profile')));\n\nconst IntegrationSettings = Loader(lazy(() => import('views/Management/settings/Integration/IntegrationSettings')));\n\nconst MemberManagement = Loader(lazy(() => import('views/Management/MemberManagement/MemberManagement')));\n\nconst Introduction = Loader(lazy(() => import('views/Management/settings/Introduction/Introduction')));\n\nexport const managementRoutes = {\n path: '/management/*',\n component: ,\n children: [\n { path: '', component: },\n { path: 'memberships', component: },\n {\n path: 'settings/*',\n children: [\n { path: '', component: },\n { path: 'merchant', component: },\n { path: 'intelliSms', component: },\n { path: 'introductions', component: },\n { path: 'integration', component: }\n ]\n },\n { path: 'profile', component: },\n { path: '*', component: }\n ]\n};\n","import { lazy } from 'react';\n\nimport { Loader } from 'routes/routes.helpers';\nimport { SMSCampaignProvider } from 'views/IntelliSms/context/SMSCampaignContext';\nimport SidebarLayout from 'views/Navigation/Navigation';\n\nconst NewCampaign = Loader(lazy(() => import('views/IntelliSms/newCampaign/NewCampaign')));\nconst CampaignsOverview = Loader(lazy(() => import('views/IntelliSms/overview/Overview')));\n\nexport const intelliSmsRoutes = {\n path: '/IntelliSMS/*',\n component: ,\n children: [\n {\n path: 'new',\n component: (\n \n \n \n )\n },\n {\n path: 'overview',\n component: (\n \n \n \n )\n }\n ]\n};\n","import { lazy } from 'react';\nimport { Navigate } from 'react-router';\n\nimport { Loader } from 'routes/routes.helpers';\nimport SidebarLayout from 'views/Navigation/Navigation';\nimport { StampCardMenuProvider } from 'views/StampCardForm/StampCardMenuContext';\n\nconst CreateStampCard = Loader(lazy(() => import('views/StampCardForm/CreateStampCard')));\nconst CampaignsOverview = Loader(lazy(() => import('views/StampCardForm/CampaignsOverview/CampaignsOverview')));\nconst StampCardTriggers = Loader(lazy(() => import('views/StampCardForm/StampCardTriggers/StampCardTriggers')));\n\nexport const stampCardRoutes = {\n path: '/stampcard/*',\n component: (\n \n \n \n ),\n children: [\n {\n path: '',\n component: \n },\n {\n path: 'form',\n component: \n },\n {\n path: 'overview',\n component: \n },\n {\n path: 'trigger',\n component: \n }\n ]\n};\n","import { lazy } from 'react';\nimport { Navigate } from 'react-router-dom';\n\nimport { Loader } from 'routes/routes.helpers';\nimport { SMSCampaignProvider } from 'views/IntelliSms/context/SMSCampaignContext';\nimport SidebarLayout from 'views/Navigation/Navigation';\n\nconst Dashboard = Loader(lazy(() => import('views/Dashboard/Dashboard')));\n\nexport const dashboardRoutes = {\n path: '/dashboard/*',\n component: (\n \n \n \n ),\n children: [\n {\n path: '',\n component: \n },\n {\n path: '*',\n component: \n }\n ]\n};\n","import { lazy } from 'react';\n\nimport { Loader } from 'routes/routes.helpers';\nimport SidebarLayout from 'views/Navigation/Navigation';\n\nconst RegistrationDisplayViews = Loader(lazy(() => import('views/RegistrationDisplayViews/RegistrationDisplayViews')));\n\nexport const displayViewsRoutes = {\n path: '/views',\n component: ,\n children: [{ path: '', component: }]\n};\n","import { login, showContractGuard } from 'store/features/auth/authSlice';\nimport { AuthTokens, CurrentUserInterface, LoginInfo } from 'store/features/auth/handlers';\nimport { getCampaignHistory } from 'store/features/campaigns/campaignHistorySlice';\nimport { getHomepageDashboards } from 'store/features/dashboard/actions';\nimport { ContractStructure, MerchantInterface } from 'store/features/merchantAndVenues/handlers';\nimport { getMerchant } from 'store/features/merchantAndVenues/merchantSlice';\nimport { getVenueCategories } from 'store/features/venueCategories/venueCategorySlice';\nimport { AppDispatch } from 'store/store.exports';\n\nexport const populateDB = async (dispatch: AppDispatch, merchant: MerchantInterface) => {\n try {\n await dispatch(getVenueCategories(merchant));\n } catch (error) {\n console.error('Error fetching SMS suggestions', error);\n }\n\n try {\n await dispatch(getCampaignHistory());\n } catch (error) {\n console.error('Error fetching campaign history', error);\n }\n};\n\nexport const dispatchGetMerchant = async (dispatch: AppDispatch, user: CurrentUserInterface) => {\n try {\n const payload = await dispatch(getMerchant(user));\n const merchant = payload.payload as unknown as MerchantInterface;\n\n if (merchant.merchantTitle !== undefined) {\n await populateDB(dispatch, merchant);\n } else {\n throw Error('Error fetching merchant');\n }\n } catch (error) {\n console.error('Error logging in', error);\n }\n};\n\nexport const dispatchLogin = async (dispatch: AppDispatch, info: LoginInfo) => {\n try {\n const response = await dispatch(login(info));\n\n if ((response.payload as unknown as AuthTokens)?.contract) {\n return response.payload as { contract: ContractStructure; token: string; chartToken: string };\n }\n\n if ((response.payload as unknown as CurrentUserInterface)?.jwtToken !== undefined) {\n dispatchGetMerchant(dispatch, response.payload as unknown as CurrentUserInterface);\n\n dispatch(showContractGuard(true));\n dispatch(getHomepageDashboards());\n } else {\n throw Error(`Failed to fetch token and user from database: ${JSON.stringify(response.payload)}`);\n }\n } catch (error) {\n console.error('Error logging in', error);\n }\n};\n","import { useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\nimport { Navigate, useNavigate } from 'react-router-dom';\n\nimport { Brush, Start } from '@mui/icons-material';\nimport { AppBar, Button, Paper, Toolbar, Typography } from '@mui/material';\n\nimport { format } from 'date-fns';\nimport { isBefore } from 'date-fns/esm';\n\nimport { CenteredFlexBox, FlexBox } from 'generalComponents/BoxModifications';\nimport { LoginInfo } from 'store/features/auth/handlers';\nimport { ContractStructure } from 'store/features/merchantAndVenues/handlers';\nimport { useAppDispatch } from 'store/store.exports';\nimport { delay } from 'utils/utils';\nimport { dispatchLogin } from 'views/Login/helpers';\n\nconst APP_BAR_HEIGHT = '50px';\n\nconst ContractGuardCSS = {\n appBar: { height: APP_BAR_HEIGHT, backgroundColor: '#1a1a1a', display: 'flex', justifyContent: 'center' },\n container: { height: `calc(100vh - ${APP_BAR_HEIGHT})` },\n paper: { p: { xs: 2, sm: 4, md: 6, lg: 8, xl: 10 } },\n signBeforeBox: { justifyContent: 'center' },\n header: {\n textAlign: 'center',\n fontSize: { xl: '1.85rem', lg: '1.7rem', md: '1.5rem', sm: '1.3rem', xs: '1.05rem' },\n mb: 1\n },\n subHeader: {\n textAlign: 'center',\n fontSize: { xl: '1.7rem', lg: '1.55rem', md: '1.35rem', sm: '1.15rem', xs: '0.9rem' },\n mb: 3\n },\n buttonsBox: { justifyContent: 'center', gap: 2, mb: 2 },\n buttons: { fontSize: { xs: 10, sm: 14 } }\n};\n\nexport const ContractBlocker: React.FC<{\n contract: ContractStructure;\n token: string;\n chartToken: string;\n userLoginData: LoginInfo;\n}> = ({ contract, token, chartToken, userLoginData }) => {\n const navigate = useNavigate();\n const dispatch = useAppDispatch();\n\n const signingDateHasNotPassed = isBefore(new Date(), new Date(contract.hasToBeSignedBefore));\n\n const signDateFormatted = format(new Date(contract.hasToBeSignedBefore), 'yyyy-MM-dd hh:mm');\n\n const [goToLogin, setGoToLogin] = useState(false);\n\n return (\n <>\n {goToLogin && }\n \n \n \n \n \n \n PayAtt\n \n \n \n\n \n \n \n \n \n \n \n \n \n {\n setGoToLogin(true);\n }}\n href={contract.userContractSignUrl}\n variant=\"contained\"\n color=\"green\"\n target=\"_blank\"\n sx={{\n ...ContractGuardCSS.buttons,\n '&:hover': { color: 'white' }\n }}\n endIcon={}>\n \n \n {signingDateHasNotPassed && (\n {\n await dispatchLogin(dispatch, {\n ...userLoginData,\n skipContractCheck: true,\n token,\n chartToken\n });\n\n await delay(200);\n navigate('/home');\n }}\n variant=\"contained\"\n color=\"payAttBlack\"\n sx={ContractGuardCSS.buttons}\n endIcon={}>\n \n \n )}\n \n {signingDateHasNotPassed && (\n \n \n {signDateFormatted}\n \n \n )}\n \n \n \n );\n};\n","import { useState } from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useForm } from 'react-hook-form';\nimport { useSelector } from 'react-redux';\nimport { I18n, Translate } from 'react-redux-i18n';\nimport { useNavigate } from 'react-router';\n\nimport { Visibility, VisibilityOff } from '@mui/icons-material';\nimport { Box, Button, Card, InputAdornment, TextField, Typography, useTheme } from '@mui/material';\n\nimport { isPayAttError } from 'errorHandling/payattError';\nimport { ContractBlocker } from 'generalComponents/ContractBlocker/ContractBlocker';\nimport LoginLogo from 'generalComponents/PayAttLogo';\nimport { setAuthFailed } from 'store/features/auth/authSlice';\nimport { LoginInfo } from 'store/features/auth/handlers';\nimport { ContractStructure } from 'store/features/merchantAndVenues/handlers';\nimport { authSelector } from 'store/selectors';\nimport { useAppDispatch } from 'store/store.exports';\n\nimport { dispatchLogin } from './helpers';\n\nconst LoginForm = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const theme = useTheme();\n\n const {\n register,\n handleSubmit,\n formState: { errors }\n } = useForm();\n\n const { isLoading, error } = useSelector(authSelector);\n\n const [passwordShown, setPasswordShown] = useState(false);\n\n const togglePasswordShown = () => {\n setPasswordShown((s) => !s);\n };\n\n const [contractAndLoginData, setContractAndLoginData] = useState<{\n contract: ContractStructure;\n token: string;\n chartToken: string;\n userLoginData: LoginInfo;\n } | null>(null);\n\n // eslint-disable-next-line\n const onSubmit = async (data: any): Promise => {\n const info: LoginInfo = {\n username: data.username,\n password: data.password\n };\n if (data.username.includes('@')) {\n info.email = data.username;\n delete info.username;\n }\n\n try {\n const hasContractData = await dispatchLogin(dispatch, info);\n if (hasContractData) setContractAndLoginData({ ...hasContractData, userLoginData: info });\n else navigate('/home');\n } catch (err) {\n if (!isPayAttError(err)) {\n dispatch(\n setAuthFailed({\n authError: true,\n message: I18n.t('general.errors.unknownError')\n })\n );\n } else {\n dispatch(setAuthFailed({ authError: true, message: err.message }));\n }\n }\n };\n\n // We check that contract is not signed in authLogin function\n if (contractAndLoginData) {\n window.history.replaceState(null, '', '/contract');\n\n return (\n <>\n \n Sign contract\n \n ;\n \n );\n }\n\n return (\n <>\n \n Login\n \n \n
\n \n \n \n \n \n \n \n \n \n {errors.username && (\n \n \n \n )}\n \n \n \n \n \n \n {passwordShown ? : }\n \n )\n }}\n />\n\n {errors.password && (\n \n \n \n )}\n \n {error.authError ? {error.message} : null}\n \n \n \n \n {' '}\n \n \n \n \n \n
\n \n \n \n );\n};\n\nexport default LoginForm;\n","import { useEffect } from 'react';\nimport { useNavigate } from 'react-router';\n\nimport { authSelector } from 'store/selectors';\nimport { store } from 'store/store';\n\nimport { useHeaderBannersContext } from '../Navigation/Header/Context/useContextProvider';\nimport Login from './LoginForm';\n\n// Component automatically redirects to Home if the user is logged in\nconst LoginView = () => {\n const { removeAllBanners } = useHeaderBannersContext();\n const navigate = useNavigate();\n\n useEffect(() => {\n removeAllBanners();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (authSelector(store.getState())?.isAuth) navigate('/home');\n }, [navigate]);\n\n return ;\n};\n\nexport default LoginView;\n","import { useState } from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useForm } from 'react-hook-form';\nimport { I18n, Translate } from 'react-redux-i18n';\nimport { useNavigate } from 'react-router-dom';\n\nimport LockResetIcon from '@mui/icons-material/LockReset';\nimport { Button, Card, CardContent, CardHeader, TextField, Typography, useTheme } from '@mui/material';\n\nimport { getResetEmail, verifyToken } from 'api/passwordReset';\nimport { isPayAttError } from 'errorHandling/payattError';\nimport { CenteredFlexBox, VerticalCenteredFlexBox } from 'generalComponents/BoxModifications';\n\nconst ResetPassword = () => {\n const navigate = useNavigate();\n const theme = useTheme();\n\n const initState = { email: '', code: '' };\n const [responseError, setResponseError] = useState({\n status: -1,\n message: ''\n });\n const [codeSent, setCodeSent] = useState(false);\n\n const {\n register,\n handleSubmit,\n getValues,\n formState: { errors },\n watch\n } = useForm({\n mode: 'onBlur',\n defaultValues: initState\n });\n\n const onSubmit = async () => {\n const email = getValues('email');\n const token = getValues('code');\n\n if (codeSent) {\n try {\n const response = await verifyToken(token);\n\n if (response === true) {\n navigate(`/newPassword?token=${token}&email=${email}`);\n } else {\n setResponseError({\n status: 500,\n message: I18n.t('passwordReset.error.unexpectedErrorTokenVerify')\n });\n }\n } catch (error) {\n if (isPayAttError(error) && error.status === 410) {\n setResponseError({\n status: 410,\n message: I18n.t('passwordReset.error.expiredToken')\n });\n }\n setResponseError({\n status: 500,\n message: I18n.t('passwordReset.error.verifyCodeFail')\n });\n }\n } else {\n try {\n const res = await getResetEmail(email);\n\n if (res.status && res.status >= 200 && res.status < 300) {\n setCodeSent(true);\n } else if (res.status) {\n setResponseError({\n status: res.status,\n message: I18n.t('passwordReset.error.failed')\n });\n }\n } catch (err) {\n if (isPayAttError(err)) {\n setResponseError({\n status: err.status,\n message: I18n.t('passwordReset.error.failed')\n });\n } else {\n setResponseError({\n status: 500,\n message: I18n.t('passwordReset.error.failed')\n });\n }\n }\n }\n };\n\n return (\n <>\n \n {I18n.t('passwordReset.title')}\n \n \n
\n \n }\n title={I18n.t('passwordReset.header.title')}\n subheader={I18n.t('passwordReset.header.subheader')}\n titleTypographyProps={{ textAlign: 'left', variant: 'h1' }}\n subheaderTypographyProps={{ textAlign: 'left' }}\n />\n \n \n {codeSent ? (\n <>\n \n \n \n \n \n \n }\n {...register('code')}\n error={!!errors?.code || responseError.status >= 300}\n helperText={\n responseError.status >= 300\n ? responseError.message\n : errors?.code?.message\n }\n placeholder={I18n.t('passwordReset.verify')}\n />\n \n ) : (\n <>\n \n \n \n }\n {...register('email', {\n pattern: {\n value: /^\\S+@\\S+$/i,\n message: `${I18n.t('passwordReset.error.invalid')}`\n },\n validate: (value: any) =>\n value.length || `${I18n.t('passwordReset.error.required')}`\n })}\n error={!!errors?.email || responseError.status >= 300}\n helperText={\n responseError.status >= 300\n ? responseError.message\n : errors?.email?.message\n }\n placeholder={I18n.t('passwordReset.submit')}\n />\n \n )}\n \n \n \n \n {\n navigate('/login');\n }}\n sx={{ backgroundColor: '#6c757d' }}>\n \n \n \n {codeSent ? (\n \n ) : (\n \n )}\n \n \n \n \n \n
\n \n );\n};\n\nexport default ResetPassword;\n","import { useEffect, useMemo, useState } from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { useForm } from 'react-hook-form';\nimport { I18n, Translate } from 'react-redux-i18n';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nimport LockResetIcon from '@mui/icons-material/LockReset';\nimport Visibility from '@mui/icons-material/Visibility';\nimport VisibilityOff from '@mui/icons-material/VisibilityOff';\nimport { Button, Card, CardContent, CardHeader, IconButton, InputAdornment, TextField } from '@mui/material';\n\nimport { resetPassword, verifyToken } from 'api/passwordReset';\nimport { isPayAttError } from 'errorHandling/payattError';\nimport { CenteredFlexBox, VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { PayAttSuccessToastForever } from 'generalComponents/Toasts/Toasts';\nimport { login } from 'store/features/auth/authSlice';\nimport { CurrentUserInterface, LoginInfo } from 'store/features/auth/handlers';\nimport { useAppDispatch } from 'store/store.exports';\nimport { dispatchGetMerchant } from 'views/Login/helpers';\n\nconst URL_PARAM_TOKEN = 'token';\nconst URL_PARAM_EMAIL = 'email';\n\nconst logUserInWithNewPassword = async (info: LoginInfo, dispatch: any, navigate: any) => {\n try {\n const response = await dispatch(login(info));\n\n if ((response.payload as unknown as CurrentUserInterface).jwtToken !== undefined) {\n await dispatchGetMerchant(dispatch, response.payload as unknown as CurrentUserInterface);\n\n navigate('/home');\n } else {\n throw Error(`Failed to fetch token and user from database: ${JSON.stringify(response.payload)}`);\n }\n } catch (error) {\n // This happens if the contract is not signed\n console.error('Error logging in', error);\n navigate('/login');\n }\n};\n\nexport const NewPassword = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const { search } = useLocation();\n const searchParams = useMemo(() => new URLSearchParams(search), [search]);\n const token = searchParams.get(URL_PARAM_TOKEN);\n const email = searchParams.get(URL_PARAM_EMAIL);\n const [serverResponse, setServerResponse] = useState({\n status: -1,\n message: ''\n });\n const [showPassword, setShowPassword] = useState(false);\n const [tokenValid, setTokenValid] = useState(true);\n const [pageLoad, setPageLoad] = useState(true);\n\n const initState = {\n password: '',\n passwordRepeat: ''\n };\n const {\n register,\n handleSubmit,\n getValues,\n formState: { errors, isDirty }\n } = useForm({\n mode: 'all',\n defaultValues: initState\n });\n\n const onSubmit = async () => {\n if (token && email) {\n try {\n const res = await resetPassword(token, email, getValues('password'));\n\n if (res.status >= 200 && res.status < 300) {\n PayAttSuccessToastForever(\n
\n \n
\n );\n const info: LoginInfo = { email, password: getValues('password') };\n logUserInWithNewPassword(info, dispatch, navigate);\n }\n\n setServerResponse({\n status: res.status,\n message: res.message\n });\n } catch (error) {\n console.error('Failed to set new password', error);\n\n if (isPayAttError(error)) {\n if (error.message.includes('Invalid token')) {\n setServerResponse({\n status: error.status,\n message: I18n.t('passwordReset.newPassword.error.invalidToken')\n });\n }\n setServerResponse({\n status: error.status,\n message: I18n.t('passwordReset.newPassword.error.serverError')\n });\n }\n }\n } else {\n console.error('Missing token and/or email');\n }\n };\n\n const handleClickShowPassword = () => {\n setShowPassword(!showPassword);\n };\n\n const handleMouseDownPassword = (event: React.MouseEvent) => {\n event.preventDefault();\n };\n\n const validatePassword = (value: any): string | true => {\n if (value.length < 8) {\n return I18n.t('passwordReset.newPassword.error.minPasswordLength');\n }\n\n const regex =\n /^(?=[^A-Z\\n]*[A-Z])(?=[^a-z\\n]*[a-z])(?=[^0-9\\n]*[0-9])(?=[^!@£$%^&*()_+}|\":?><,./\\-=[\\]|~`\"'\\\\\\n]*[!@£$%^&*()_+}|\":?><,./\\-=[\\]|~`\"'\\\\]).{8,}$/;\n\n if (!regex.test(value)) {\n return `${I18n.t('passwordReset.newPassword.error.formatRequirements')}`;\n }\n\n return true;\n };\n\n useEffect(() => {\n const verifyTokenFunc = async () => {\n if (pageLoad && token && email) {\n setPageLoad(false);\n\n try {\n const response = await verifyToken(token);\n\n if (!response) {\n setServerResponse({\n status: 999,\n message: I18n.t('passwordReset.error.unexpectedErrorTokenVerify')\n });\n setTokenValid(false);\n return;\n }\n\n setTokenValid(true);\n } catch (error) {\n setServerResponse({\n status: 999,\n message: I18n.t('passwordReset.error.expiredToken')\n });\n setTokenValid(false);\n }\n }\n };\n\n verifyTokenFunc();\n }, [email, pageLoad, token]);\n\n // if (!token || !email) {\n // return ;\n // }\n\n return (\n <>\n \n {I18n.t('passwordReset.newPassword.title')}\n \n \n
\n \n }\n title={I18n.t('passwordReset.newPassword.header')}\n subheader={I18n.t('passwordReset.newPassword.subheader')}\n titleTypographyProps={{ textAlign: 'left', variant: 'h1' }}\n subheaderTypographyProps={{ textAlign: 'left' }}\n />\n \n \n \n \n {showPassword ? : }\n \n \n )\n }}\n />\n {\n const res = validatePassword(val);\n if (!res) return res;\n\n if (val !== getValues('password')) {\n return I18n.t('passwordReset.newPassword.error.passwordNotSame');\n }\n return true;\n }\n })}\n error={\n !!errors?.passwordRepeat ||\n (serverResponse.status >= 300 && serverResponse.status < 600)\n }\n helperText={\n \n {(() => {\n if (serverResponse.status >= 300) {\n return serverResponse.message;\n }\n return errors?.passwordRepeat?.message;\n })()}\n \n }\n label={I18n.t('passwordReset.newPassword.confirmPasswordText')}\n InputProps={{\n endAdornment: (\n \n \n {showPassword ? : }\n \n \n )\n }}\n />\n \n \n \n {!tokenValid && (\n {\n navigate('/resetPassword');\n }}>\n \n \n )}\n \n \n \n \n
\n \n );\n};\n","import { Component } from 'react';\nimport { Navigate, Outlet } from 'react-router-dom';\n\nimport { store } from 'store/store';\n\nconst AuthRoute = (props: any) => {\n const state = store.getState();\n\n if (!state.auth.isAuth) {\n return ;\n }\n\n return } />;\n};\n\nexport default AuthRoute;\n","import { lazy } from 'react';\nimport { Navigate, Route, BrowserRouter as Router, Routes } from 'react-router-dom';\n\nimport {\n builderRoutes,\n contactRoutes,\n dashboardRoutes,\n homeRoutes,\n intelliSmsRoutes,\n managementRoutes,\n stampCardRoutes\n} from 'routes/routeDefinitions';\nimport { displayViewsRoutes } from 'routes/routeDefinitions/displayViews.routes';\nimport { logOut } from 'store/features/auth/actions';\nimport { authSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { useAppDispatch } from 'store/store.exports';\nimport LoginView from 'views/Login/Login';\nimport SidebarLayout from 'views/Navigation/Navigation';\nimport ResetPassword from 'views/ResetPassword/ResetPassword';\nimport { NewPassword } from 'views/ResetPassword/newPassword/NewPassword';\n\nimport AuthRoute from './AuthRoute';\nimport { Loader } from './routes.helpers';\n\nconst FAQ = Loader(lazy(() => import('views/Management/FAQ/FaqComponent')));\n\nconst DefaultRoute = () => {\n const state = store.getState();\n\n return state.auth.isAuth ? : ;\n};\n\nconst LogoutRoute = () => {\n const dispatch = useAppDispatch();\n\n // Log us out unless we are already at the login screen\n const auth = authSelector(store.getState());\n if (auth.isAuth) dispatch(logOut());\n\n if (window.location.href.includes('/login')) return null;\n\n return ;\n};\n\n// Get all the routes from a JSON object, including nested routes\n// and Navigator items\nexport const getRoutes = (myRoutes: any) => {\n if (myRoutes.children) {\n return (\n \n {/* Create sub-routes */}\n {myRoutes.children.map((child: any) => getRoutes(child))}\n \n );\n }\n if (myRoutes.component instanceof Navigate) {\n return myRoutes.component;\n }\n return ;\n};\n\n// Declares all Routes for the web app, different base routes are declared in different JSON files,\n// extract values with getRoutes()\nconst MainRoutes = (): JSX.Element => {\n // Add logout handler, to make sure ALL open tabs/windows are logged out\n window.addEventListener('storage', (e) => {\n if (e.newValue && e.oldValue) {\n const newState = JSON.parse(e.newValue);\n const oldState = JSON.parse(e.oldValue);\n\n // Trigger logout in tab\n if (oldState && oldState.auth && oldState.auth.isAuth && !newState?.auth?.isAuth) window.location.reload();\n }\n });\n\n return (\n \n \n } />\n {/* Use below syntax to enfore autheticated routes on ALL private routes */}\n }>\n {getRoutes(homeRoutes)}\n \n }>\n {getRoutes(dashboardRoutes)}\n \n }>\n {getRoutes(intelliSmsRoutes)}\n \n }>\n {getRoutes(stampCardRoutes)}\n \n }>\n {getRoutes(displayViewsRoutes)}\n \n }>\n {getRoutes(managementRoutes)}\n \n }>\n {getRoutes(contactRoutes)}\n \n }>\n {getRoutes(builderRoutes)}\n \n }>\n }>\n } />\n \n \n } />\n } />\n } />\n } />\n \n \n );\n};\n\nexport default MainRoutes;\n","import { Translate } from 'react-redux-i18n';\nimport { toast } from 'react-toastify';\n\nimport { endUserSession } from 'api/auth/authApi';\nimport { PayAttLogOutToast } from 'generalComponents/Toasts/Toasts';\nimport { setAuthFailed, setLoading, setLogOut } from 'store/features/auth/authSlice';\nimport { saveLogoutState } from 'store/localStorageState';\nimport { store } from 'store/store';\nimport { AppThunk } from 'store/store.exports';\nimport { CONTRACT_LOGOUT_TOAST_ID } from 'utils/global.constants';\n\nexport const logOut = (() => {\n /*\n * We are only allowing toasts to be shown once to prevent problems caused by running multiple toasts\n * (ex. something goes wrong when trying to refresh token and we get spammed with toasts)\n */\n let logOutToastWasShown = false;\n let contractToastWasShown = false;\n\n return (args?: { showToast: boolean; contractToast?: boolean }): AppThunk =>\n async (dispatch) => {\n try {\n const onClose = async () => {\n dispatch(setLoading(true));\n await endUserSession();\n saveLogoutState(store.getState());\n dispatch(setLogOut());\n window.location.reload();\n };\n\n const showToast = args?.showToast;\n const contractToast = args?.contractToast;\n const fiveMinutesInMilliseconds = 5 * 60 * 1000;\n const tenSecondsInMilliseconds = 10 * 1000;\n\n if (showToast) {\n const toastDuration = contractToast ? fiveMinutesInMilliseconds : tenSecondsInMilliseconds;\n\n if (contractToast && !contractToastWasShown) {\n const { merchant } = store.getState();\n\n const logoutContractMsg = (\n
\n \n
\n \n \n \n
\n );\n\n toast.warning(logoutContractMsg, {\n toastId: CONTRACT_LOGOUT_TOAST_ID,\n position: 'bottom-center',\n style: {\n width: '800px',\n left: '-50%'\n },\n autoClose: toastDuration,\n closeOnClick: false,\n closeButton: false,\n draggable: false,\n pauseOnHover: false,\n pauseOnFocusLoss: false,\n onClose\n });\n\n contractToastWasShown = true;\n }\n\n if (!contractToast && !logOutToastWasShown) {\n const logOutMessage = ;\n\n PayAttLogOutToast({ onClose, content: logOutMessage, type: 'warn' });\n\n logOutToastWasShown = true;\n }\n } else {\n await onClose();\n }\n } catch (error: any) {\n dispatch(setAuthFailed({ authError: true, message: error.message }));\n } finally {\n dispatch(setLoading(false));\n }\n };\n})();\n","import { useEffect, useState } from 'react';\n\nimport { localeSelector } from 'store/selectors';\nimport { store } from 'store/store';\n\nconst LocaleAPI = () => {\n const [locale, setCurrentLanguage] = useState(localeSelector(store.getState()));\n\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n setCurrentLanguage(localeSelector(store.getState()));\n });\n\n return unsubscribe;\n }, [locale]);\n\n return locale;\n};\n\nexport default LocaleAPI;\n","import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\n\nimport { Action } from '@reduxjs/toolkit';\nimport { ThunkAction } from 'redux-thunk';\n\nimport { store } from 'store/store';\n\nexport type AppDispatch = typeof store.dispatch;\nexport const useAppDispatch = () => useDispatch();\nexport type RootState = ReturnType;\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\nexport type AppThunk = ThunkAction;\n","import { getBillingSettings } from 'store/features/PayAttSettings/billingSettingsSlice';\nimport { updateUser } from 'store/features/auth/authSlice';\nimport { CurrentUserInterface } from 'store/features/auth/handlers';\nimport { getCampaignHistory } from 'store/features/campaigns/campaignHistorySlice';\nimport { MerchantInterface } from 'store/features/merchantAndVenues/handlers';\nimport { getMerchant } from 'store/features/merchantAndVenues/merchantSlice';\nimport { getRegistrationsPerVenue } from 'store/features/registrations/registrationSlice';\nimport { getStampCardCampaigns } from 'store/features/stampCardCampaigns/stampCardFormSlice';\nimport { getVenueCategories } from 'store/features/venueCategories/venueCategorySlice';\n\nimport { getHomepageDashboards } from './features/dashboard/actions';\nimport { AppDispatch } from './store.exports';\n\nexport const PopulateStatistics = async (dispatch: AppDispatch, merchant: MerchantInterface) => {\n const { venues } = merchant;\n if (venues.length === 0) return;\n\n try {\n await dispatch(getRegistrationsPerVenue(venues));\n } catch (error) {\n console.error('Error fetching registration stats', error);\n }\n};\n\nexport const PopulateGeneralStats = async (dispatch: AppDispatch, merchant: MerchantInterface) => {\n const { venues } = merchant;\n if (venues.length === 0) return;\n\n try {\n await dispatch(getRegistrationsPerVenue(venues));\n } catch (error) {\n console.error('Error fetching registration stats', error);\n }\n};\n\nexport const PopulateMerchantAndVenues = async (dispatch: AppDispatch, user: CurrentUserInterface) => {\n try {\n await dispatch(getMerchant(user));\n } catch (error) {\n console.error('Error fetching Merchant and Venues', error);\n }\n};\n\nexport const PopulateUser = async (dispatch: AppDispatch) => {\n await dispatch(updateUser());\n};\n\nexport const PopulateCampaignHistory = async (dispatch: AppDispatch) => {\n await dispatch(getCampaignHistory());\n};\n\nexport const PopulateSmsSuggestions = async (dispatch: AppDispatch, merchant: MerchantInterface) => {\n await dispatch(getVenueCategories(merchant));\n};\n\nexport const PopulateBillingSettings = async (dispatch: AppDispatch) => {\n await dispatch(getBillingSettings());\n};\n\nexport const PopulateStampCardCampaigns = async (dispatch: AppDispatch, merchant: MerchantInterface) => {\n await dispatch(getStampCardCampaigns(merchant));\n};\n\nexport const PopulateHomepageLayouts = async (dispatch: AppDispatch) => dispatch(getHomepageDashboards());\n","export const NOTIFICATION_CHECK_INTERVAL = 10; // in minutes\nexport const CONTRACT_LOGOUT_TOAST_ID = 'contractLogOut';\n","export type Encoding = 'GSM_7BIT' | 'GSM_7BIT_EXT' | 'UTF16';\n\nexport interface TextSummary {\n encoding: Encoding;\n length: number;\n characterPerMessage: number;\n inCurrentMessage: number;\n remaining: number;\n messages: number;\n}\n\nconst GSM_7BIT_REGEXP =\n /^[@£$¥èéùìòÇ\\nØø\\rÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\"#¤%&'()*+,\\-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà]*$/;\nconst GSM_7BIT_EXT_REGEXP =\n /^[@£$¥èéùìòÇ\\nØø\\rÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\"#¤%&'()*+,\\-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà^{}\\\\[~\\]|€]*$/;\nconst GSM_7BIT_EXT_CHAR_REGEXP = /^[\\^{}\\\\[~\\]|€]$/;\n\nconst messageLength: { [key in Encoding]: number } = {\n GSM_7BIT: 160,\n GSM_7BIT_EXT: 160,\n UTF16: 70\n};\n\nconst multiMessageLength: { [key in Encoding]: number } = {\n GSM_7BIT: 153,\n GSM_7BIT_EXT: 153,\n UTF16: 67\n};\n\nconst detectEncoding = (text: string): Encoding => {\n switch (false) {\n case text.match(GSM_7BIT_REGEXP) == null:\n return 'GSM_7BIT';\n case text.match(GSM_7BIT_EXT_REGEXP) == null:\n return 'GSM_7BIT_EXT';\n default:\n return 'UTF16';\n }\n};\n\nconst countGsm7bitExt = (text: string): number => {\n const extChar = [];\n for (let i = 0; i < text.length; i += 1) {\n const char = text[i];\n if ((char.match(GSM_7BIT_EXT_CHAR_REGEXP) || []).length > 0) {\n extChar.push(char);\n }\n }\n\n return extChar.length;\n};\n\nexport const countSMSCharacters = (text: string): TextSummary => {\n const encoding = detectEncoding(text);\n let { length } = text;\n\n if (encoding === 'GSM_7BIT_EXT') {\n length += countGsm7bitExt(text);\n }\n\n let characterPerMessage = messageLength[encoding];\n if (length > characterPerMessage) {\n characterPerMessage = multiMessageLength[encoding];\n }\n\n const messages = Math.ceil(length / characterPerMessage);\n\n let inCurrentMessage = length;\n if (messages > 0) {\n inCurrentMessage = length - characterPerMessage * (messages - 1);\n }\n\n let remaining = characterPerMessage * messages - length;\n if (remaining === 0 && messages === 0) {\n remaining = characterPerMessage;\n }\n\n return {\n encoding,\n length,\n characterPerMessage,\n inCurrentMessage,\n remaining,\n messages\n };\n};\n","import { createContext, useContext, useMemo, useState } from 'react';\n\nimport { DashboardBreakpoint } from 'views/Dashboard/Interfaces/Dashboard.breakpoints';\n\nimport { IGridBreakpointsContext } from '../Contexts.interfaces';\n\nexport const GridBreakpointsContext = createContext(null);\n\nexport const GridBreakpointsContextProvider: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const [breakpoint, setBreakpoint] = useState(null);\n\n const value = useMemo(\n () => ({\n breakpoint,\n setBreakpoint\n }),\n [breakpoint]\n );\n\n return {children};\n};\n\nexport const useBreakpointsContext = () => {\n const breakpointsContext = useContext(GridBreakpointsContext);\n\n if (!breakpointsContext) {\n throw new Error('No breakpointsContext.Provider found when calling useBreakpointsContext');\n }\n\n return breakpointsContext;\n};\n","import React, { createContext, useContext, useEffect, useMemo, useState } from 'react';\n\nimport { getDashboard } from 'store/features/dashboard/actions';\nimport { DashboardDoc, DashboardDocs } from 'store/features/dashboard/handlers';\nimport { allDashboardsSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { useAppDispatch } from 'store/store.exports';\n\ninterface DashboardSelectionContext {\n allDashboards: DashboardDocs;\n dashboard: DashboardDoc | null;\n setDashboard: React.Dispatch>;\n isLoading: boolean;\n}\n\nexport const DashboardSelectionContext = createContext(null);\n\nexport const DashboardSelectionProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const dispatch = useAppDispatch();\n const [allDashboards, setAllDashboards] = useState([]);\n const [dashboard, setDashboard] = useState(null);\n const [isLoading, setIsLoading] = useState(true);\n\n // Fetch all dashboards from the server\n useEffect(() => {\n dispatch(getDashboard());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n const dashboards = allDashboardsSelector(store.getState());\n\n if (dashboards.isLoading) setIsLoading(true);\n else {\n if (dashboards.data.length > 0) {\n setAllDashboards(dashboards.data);\n\n // Set the default dashboard for the first time (initial load)\n if (!dashboard) {\n const defaultDashboard = dashboards.data.find((el) => el.default);\n\n setDashboard(defaultDashboard || dashboards.data[0]);\n } else {\n // Check if we updated the selected dashboard\n const selectedDashboard = dashboards.data.find((el) => el.id === dashboard.id);\n if (selectedDashboard) {\n setDashboard(selectedDashboard);\n } else {\n const defaultDashboard = dashboards.data.find((el) => el.default);\n setDashboard(defaultDashboard || dashboards.data[0]);\n }\n }\n }\n\n setIsLoading(false);\n }\n });\n\n return unsubscribe;\n }, [dashboard]);\n\n const value = useMemo(\n () => ({\n allDashboards,\n dashboard,\n setDashboard,\n isLoading\n }),\n [allDashboards, dashboard, isLoading]\n );\n\n return {children};\n};\n\nexport const useDashboardSelectionContext = () => {\n const dashboardSelectionContext = useContext(DashboardSelectionContext);\n\n if (!dashboardSelectionContext) {\n throw new Error('No dashboardSelectionContext.Provider found when calling useDashboardSelectionContext');\n }\n\n return dashboardSelectionContext;\n};\n","import React, { createContext, useContext, useMemo, useState } from 'react';\n\nimport ChartsEmbedSDK from '@mongodb-js/charts-embed-dom';\n\nimport { authSelector, stampCardsSelector, venuesSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { AllChartFilters } from 'views/Dashboard/Widgets/MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.filters';\n\nimport { GlobalSettingsContextInterface, GlobalSettingsProviderProps } from '../Contexts.interfaces';\n\nconst DEFAULT_PAST_MONTHS_TO_SHOW = 1;\n\nexport const GlobalSettingsContext = createContext(null);\n\nexport const GlobalSettingsContextProvider: React.FC = ({\n children,\n globalGridSettings\n}) => {\n const pastDate = new Date();\n pastDate.setMonth(pastDate.getMonth() - DEFAULT_PAST_MONTHS_TO_SHOW);\n pastDate.setHours(0, 0, 0, 0);\n\n const state = store.getState();\n\n const [globalFilter, setGlobalFilter] = useState({\n forever: false,\n createdAt: { $gte: pastDate, $lte: new Date() },\n venueIdStr: { $in: venuesSelector(state).map((el) => el.id) },\n stampCardCampaignIdStr: { $in: stampCardsSelector({ state }).map((el) => el.id) },\n\n // Not in MongoDB documents, but added to store in DB\n trailingTimeFrame: { unit: 'months', value: DEFAULT_PAST_MONTHS_TO_SHOW },\n hourlyPeriodic: false,\n dailyPeriodic: false\n });\n\n const [globalDragability, setGlobalDragability] = useState(globalGridSettings.globalDragability);\n const [globalResizability, setGlobalResizability] = useState(globalGridSettings.globalResizability);\n const [globalCloseability, setGlobalCloseability] = useState(globalGridSettings.globalCloseability);\n\n const [dashboardSettings] = useState({\n hideAddButton: globalGridSettings.hideAddButton || false,\n hideRemoveButton: globalGridSettings.hideRemoveButton || false\n });\n\n const chartSDK = useMemo(() => {\n return new ChartsEmbedSDK({\n baseUrl: process.env.REACT_APP_PAYATT_CHART_BASE_URL,\n getUserToken: async () => {\n const { currentUser } = authSelector(store.getState());\n if (!currentUser?.chartToken) {\n console.warn('No chart token was found, chartSDK will not work');\n }\n\n return currentUser?.chartToken || 'none';\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const value = useMemo(\n () => ({\n globalFilter,\n setGlobalFilter,\n globalDragability,\n setGlobalDragability,\n globalResizability,\n setGlobalResizability,\n globalCloseability,\n setGlobalCloseability,\n dashboardSettings,\n chartSDK\n }),\n [globalFilter, globalDragability, globalResizability, globalCloseability, dashboardSettings, chartSDK]\n );\n\n return {children};\n};\n\nexport const useGlobalSettingsContext = () => {\n const globalSettingsContext = useContext(GlobalSettingsContext);\n\n if (!globalSettingsContext) {\n throw new Error('No globalSettingsContext.Provider found when calling useGlobalSettingsContext');\n }\n\n return globalSettingsContext;\n};\n","import { AllChartFilters } from 'views/Dashboard/Widgets/MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.filters';\n\nexport const cloneChartFilter = (filter: AllChartFilters): AllChartFilters => ({\n forever: filter.forever,\n createdAt: { $gte: new Date(filter.createdAt.$gte), $lte: new Date(filter.createdAt.$lte) },\n trailingTimeFrame: filter.trailingTimeFrame\n ? { unit: filter.trailingTimeFrame.unit, value: filter.trailingTimeFrame.value }\n : undefined,\n dailyPeriodic: filter.dailyPeriodic,\n hourlyPeriodic: filter.hourlyPeriodic,\n stampCardCampaignIdStr: {\n $in: [...filter.stampCardCampaignIdStr.$in]\n },\n venueIdStr: {\n $in: [...filter.venueIdStr.$in]\n }\n});\n\nexport const isFilterFieldEqual = (a: any, b: any): boolean => {\n if (typeof a !== typeof b) return false;\n\n if (a instanceof Date) return b instanceof Date && a.getTime() === b.getTime();\n if (b instanceof Date) return false;\n\n if (Array.isArray(a) && Array.isArray(b) && a.length === b.length) {\n return a.every((val, i) => isFilterFieldEqual(val, b[i]));\n }\n if (Array.isArray(a) || Array.isArray(b)) return false;\n\n if (['bigInt', 'boolean', 'number', 'string', 'undefined', 'function', 'symbol'].includes(typeof a)) return a === b;\n\n if (\n typeof a === 'object' &&\n typeof b === 'object' &&\n JSON.stringify(Object.keys(a).sort()) === JSON.stringify(Object.keys(b).sort())\n ) {\n return Object.keys(a)\n .map((val) => isFilterFieldEqual(a[val], b[val]))\n .every((el) => el === true);\n }\n\n return false;\n};\n\nexport const isFilterEqual = (a: AllChartFilters, b: AllChartFilters): boolean => {\n if (\n typeof a !== 'object' ||\n typeof b !== 'object' ||\n JSON.stringify(Object.keys(a).sort()) !== JSON.stringify(Object.keys(b).sort())\n ) {\n return false;\n }\n\n return Object.keys(a)\n .map((val) => isFilterFieldEqual(a[val as keyof AllChartFilters], b[val as keyof AllChartFilters]))\n .every((el) => el === true);\n};\n","import { useCallback, useState } from 'react';\nimport ReactGridLayout from 'react-grid-layout';\nimport uuid from 'react-uuid';\n\nimport { MAX_NUMBER_OF_WIDGETS_PER_DASHBOARD } from 'api/dashboard/interface';\nimport { DashboardBreakpoint } from 'views/Dashboard/Interfaces/Dashboard.breakpoints';\nimport { RESPONSIVE_COLUMNS } from 'views/Dashboard/Interfaces/Dashboard.constants';\nimport { DashboardItemLayout, DashboardLayout } from 'views/Dashboard/Interfaces/Dashboard.layout';\nimport { ChartDefaultLayouts } from 'views/Dashboard/Widgets/MongoDBWidgets/ChartSpecification/ChartSpecification.DefaultLayouts';\nimport { ChartNames } from 'views/Dashboard/Widgets/MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.names';\nimport { PayAttWidgetDefaultLayouts } from 'views/Dashboard/Widgets/PayAttWidgets/PayAttWidgets.DefaultLayouts';\nimport { PayAttWidgetNames } from 'views/Dashboard/Widgets/PayAttWidgets/PayAttWidgets.names';\n\nconst ASSUMED_MAX_NUMBER_OF_ROWS = 2000;\n\nexport const getUniqueItemID = (gridItems: DashboardLayout, newItemI: string, id: string): string => {\n const val = `${newItemI}:::${id}`;\n\n if (gridItems.find((el) => el.i === val)) {\n return getUniqueItemID(gridItems, newItemI, uuid());\n }\n\n return val;\n};\n\n// This could cause the widgets to expand larger than they previously were, which could render the dashboard layout\n// ugly, with elements shifting to new rows and changing heights. USE WITH CAUTION.\n/* eslint-disable no-param-reassign */\nexport const validateAndAdjustLayout = (item: DashboardItemLayout) => {\n // min/max values in code should always take precedence\n const { layoutType } = item;\n\n if (Object.keys(ChartNames).includes(layoutType)) {\n item.minW = ChartDefaultLayouts[layoutType as keyof typeof ChartNames].minW;\n item.minH = ChartDefaultLayouts[layoutType as keyof typeof ChartNames].minH;\n item.maxW = ChartDefaultLayouts[layoutType as keyof typeof ChartNames].maxW;\n item.maxH = ChartDefaultLayouts[layoutType as keyof typeof ChartNames].maxH;\n } else if (Object.keys(PayAttWidgetNames).includes(layoutType)) {\n item.minW = PayAttWidgetDefaultLayouts[layoutType as keyof typeof PayAttWidgetNames].minW;\n item.minH = PayAttWidgetDefaultLayouts[layoutType as keyof typeof PayAttWidgetNames].minH;\n item.maxW = PayAttWidgetDefaultLayouts[layoutType as keyof typeof PayAttWidgetNames].maxW;\n item.maxH = PayAttWidgetDefaultLayouts[layoutType as keyof typeof PayAttWidgetNames].maxH;\n }\n\n // Adjust w and height if needed\n if (item.w < item.minW) item.w = item.minW;\n if (item.w > item.maxW) item.w = item.maxW;\n if (item.h < item.minH) item.h = item.minH;\n if (item.h > item.maxH) item.h = item.maxH;\n};\n/* eslint-enable no-param-reassign */\n\nconst doesFit = ({\n y,\n x,\n width,\n height,\n grid\n}: {\n y: number;\n x: number;\n width: number;\n height: number;\n grid: boolean[][];\n}): boolean => {\n for (let i = y; i < y + height; i += 1) {\n for (let j = x; j < x + width; j += 1) {\n if (grid[i][j]) return false;\n }\n }\n\n return true;\n};\n\nconst markAsOccupied = (item: ReactGridLayout.Layout, grid: boolean[][]) => {\n for (let { y } = item; y < item.y + item.h; y += 1) {\n for (let { x } = item; x < item.x + item.w; x += 1) {\n // eslint-disable-next-line no-param-reassign\n grid[y][x] = true;\n }\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst getItemPosition = ({\n width,\n height,\n layout,\n breakpoint\n}: {\n width: number;\n height: number;\n layout: ReactGridLayout.Layout[];\n breakpoint: DashboardBreakpoint;\n}): { x: number; y: number } => {\n const cols = RESPONSIVE_COLUMNS[breakpoint];\n const rows = ASSUMED_MAX_NUMBER_OF_ROWS;\n\n const grid = Array.from(Array(rows), () => Array(cols).fill(false));\n layout.forEach((item) => markAsOccupied(item, grid));\n\n for (let y = 0; y < rows - height + 1; y += 1) {\n for (let x = 0; x < cols - width + 1; x += 1) {\n if (doesFit({ x, y, width, height, grid })) return { x, y };\n }\n }\n\n return { x: 0, y: ASSUMED_MAX_NUMBER_OF_ROWS };\n};\n\nexport const useGridItems = () => {\n const [gridItems, setGridItems] = useState([]);\n const [layout, setLayout] = useState([]);\n\n const addGridItem = useCallback(\n (item: DashboardItemLayout, breakpoint: DashboardBreakpoint, calculateGridItemPosition = false): boolean => {\n if (gridItems.length >= MAX_NUMBER_OF_WIDGETS_PER_DASHBOARD) return false;\n\n setGridItems((currentGridItems) => {\n const newGridItem = { ...item } as DashboardItemLayout;\n newGridItem.i = getUniqueItemID(currentGridItems, item.layoutType, uuid());\n if (!calculateGridItemPosition) {\n newGridItem.y = ASSUMED_MAX_NUMBER_OF_ROWS;\n newGridItem.x = 0;\n } else {\n const { x, y } = getItemPosition({\n width: newGridItem.w,\n height: newGridItem.h,\n layout,\n breakpoint\n });\n\n newGridItem.x = x;\n newGridItem.y = y;\n }\n\n return [...currentGridItems, newGridItem];\n });\n\n return true;\n },\n [gridItems.length, layout]\n );\n\n const addGridItems = useCallback((items: DashboardLayout) => {\n const itemsToAdd: DashboardItemLayout[] = [];\n\n for (let n = 0; n < items.length; n += 1) {\n const item = items[n];\n const newGridItem = { ...item };\n newGridItem.i = getUniqueItemID(itemsToAdd, item.layoutType, uuid());\n\n itemsToAdd.push(newGridItem);\n }\n\n setGridItems(itemsToAdd);\n }, []);\n\n const removeGridItem = useCallback((i: string) => {\n setGridItems((currentGridItems) => currentGridItems.filter((el) => el.i !== i));\n }, []);\n\n const updateGridItem = useCallback((item: DashboardItemLayout) => {\n setGridItems((currentGridItems) =>\n currentGridItems.map((el) => {\n if (el.i === item.i) return { ...el, ...item };\n\n return { ...el };\n })\n );\n }, []);\n\n return [gridItems, addGridItem, addGridItems, removeGridItem, updateGridItem, layout, setLayout] as const;\n};\n","import React, { createContext, useContext, useMemo } from 'react';\n\nimport { GridItemContextInterface } from '../Contexts.interfaces';\nimport { useGridItems } from './useGridItems';\n\nexport const GridItemContext = createContext(null);\n\nexport const GridItemContextProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const [gridItems, addGridItem, addGridItems, removeGridItem, updateGridItem, layout, setLayout] = useGridItems();\n\n const value = useMemo(\n () => ({\n gridItems,\n addGridItem,\n addGridItems,\n updateGridItem,\n removeGridItem,\n\n // Responsive Grid Layout\n layout,\n setLayout\n }),\n [gridItems, addGridItem, addGridItems, updateGridItem, removeGridItem, layout, setLayout]\n );\n\n return {children};\n};\n\nexport const useGridItemContext = () => {\n const gridItemContext = useContext(GridItemContext);\n\n if (!gridItemContext) {\n throw new Error('No GridItemContextProvider.Provider found when calling useGridItemContext');\n }\n\n return gridItemContext;\n};\n","import { createContext, useContext, useEffect, useMemo, useState } from 'react';\n\nimport { StampCardCampaignStats } from 'api/interfaces';\nimport { getAllStampCardCampaignStatsAPI } from 'api/stampCards/Form/getStampCardCampaignStatsAPI';\n\nimport { IStampCardCampaignStatsContext, StampCardCampaignStatsContextProps } from '../Contexts.interfaces';\n\n// Some components require stamp card campaign statisics (number of stamps, campaigns, etc.)\n// By wrapping the dashboard in this context, we can make sure to ONLY fetch stats if there is at least 1 component that\n// requires it. The stats are then shared across all grid items.\n\nexport const StampCardCampaignStatsContext = createContext(null);\n\nexport const StampCardCampaignStatsContextProvider: React.FC = ({ children }) => {\n const [stats, setStats] = useState([]);\n\n const updateStats = async () => {\n try {\n const data = await getAllStampCardCampaignStatsAPI();\n if (data.length) setStats(data);\n } catch (err) {\n console.error(err);\n }\n };\n\n useEffect(() => {\n updateStats();\n }, []);\n\n const value = useMemo(\n () => ({\n stats,\n updateStats\n }),\n [stats]\n );\n\n return {children};\n};\n\nexport const useStampCardCampaignStatsContext = () => {\n const chartSettingsContext = useContext(StampCardCampaignStatsContext);\n\n if (!chartSettingsContext) {\n throw new Error(\n 'No StampCardCampaignStatsContext.Provider found when calling useStampCardCampaignStatsContext'\n );\n }\n\n return chartSettingsContext;\n};\n","import { Responsive } from 'react-grid-layout';\n\nimport { Breakpoint, Theme } from '@mui/material';\n\nexport const dashboardMaxWidth = (theme: Theme) => `calc(${theme.breakpoints.values.xl}px + 400px)`;\n\nexport const dashboardContainerBreakpoint = (\n breakpoints: { [key in Breakpoint]: number },\n containerWidth: number | undefined\n) => {\n return (Responsive as any).utils.getBreakpointFromWidth(breakpoints, containerWidth);\n};\n","import { JoyridePayAtt } from 'Joyride/JoyridePayAtt';\n\nimport { homeWidgetMenuIntroSteps } from './Home.JoyrideWidgetMenu.Steps';\nimport { useHomeWidgetMenuJoyrideContext } from './Home.JoyrideWidgetMenu.context';\n\nexport const HomeWidgetMenuJoyrideIntro = () => {\n const { isRunning, stepIndex, handleJoyrideCallback, isManuallyStartedIntro } = useHomeWidgetMenuJoyrideContext();\n\n if (!isRunning) return null;\n\n return (\n \n );\n};\n","import { AllChartFilters } from '../Widgets/MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.filters';\nimport { ChartNames } from '../Widgets/MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.names';\nimport { PayAttWidgetNames } from '../Widgets/PayAttWidgets/PayAttWidgets.names';\nimport { DashboardBreakpoint } from './Dashboard.breakpoints';\n\nexport const GridItemKeys = { ...ChartNames, ...PayAttWidgetNames } as const;\n\n// DashboardItemLayout must match backend structure\nexport interface DashboardItemLayout extends ReactGridLayout.Layout {\n layoutType: keyof typeof GridItemKeys;\n i: string; // Automatically generated from the type to be unique, when added to the grid\n requiresStampCardStats: boolean;\n filter?: AllChartFilters;\n\n // Make the follow layout props required\n minW: number;\n minH: number;\n maxW: number;\n maxH: number;\n w: number;\n h: number;\n}\n\nexport type DashboardLayout = DashboardItemLayout[];\n\nconst dashboardBreakpointLayouts: { [key in DashboardBreakpoint]: DashboardLayout } = {\n xl: [],\n lg: [],\n md: [],\n sm: [],\n xs: []\n};\n\nexport type DashboardBreakpointLayouts = typeof dashboardBreakpointLayouts;\n","import { useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box, List, ListItem, ListProps, Select, SelectChangeEvent, Typography } from '@mui/material';\nimport FormControl from '@mui/material/FormControl';\nimport MenuItem from '@mui/material/MenuItem';\n\nimport { JOYRIDE_OPTIONS } from 'Joyride/JoyridePayAtt';\n\nimport { FullDivider } from 'generalComponents/BoxModifications';\nimport { setBackgroundImage } from 'store/features/dashboard/dashboardSlice';\nimport { BackgroundImageType, BackgroundImages } from 'store/features/dashboard/handlers';\nimport { dashboardBackgroundImageSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { useAppDispatch } from 'store/store.exports';\n\nexport const SelectBackgroundImage: React.FC<{ ListProps: ListProps }> = ({ ListProps: ListProperties }) => {\n const dispatch = useAppDispatch();\n\n const { sx: ListPropSx, ...ListPropsRest } = ListProperties;\n\n const [image, setImage] = useState(dashboardBackgroundImageSelector(store.getState()).name);\n const [open, setOpen] = useState(false);\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleChange = (event: SelectChangeEvent) => {\n dispatch(setBackgroundImage({ name: event.target.value as BackgroundImageType }));\n setImage(event.target.value as BackgroundImageType);\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { Alert, AlertTitle, Button, Dialog, DialogActions, DialogContent, Typography } from '@mui/material';\n\nimport { SlideUpTransition } from 'generalComponents/Transitions/SlideUp';\nimport { DashboardDoc } from 'store/features/dashboard/handlers';\nimport { useAppDispatch } from 'store/store.exports';\n\nimport { deleteDashboard } from '../../../Grid/ResponsiveGridLayout.saveCreate';\n\nexport const ConfirmDeleteModal: React.FC<{\n dashboard: DashboardDoc;\n deleteDialogOpen: boolean;\n setDeleteDialogOpen: React.Dispatch>;\n setIsLoading: React.Dispatch>;\n}> = ({ dashboard, deleteDialogOpen, setDeleteDialogOpen, setIsLoading }) => {\n const dispatch = useAppDispatch();\n const handleClose = () => {\n setDeleteDialogOpen(false);\n };\n\n const onSubmit = async () => {\n setIsLoading(true);\n const response = await deleteDashboard({ id: dashboard.id, name: dashboard.name, dispatch });\n setIsLoading(false);\n\n // This means the dashboard has been deleted, the store should already have been updated to reflect this in redux\n if (response) setDeleteDialogOpen(false);\n };\n\n return (\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n );\n};\n","import { useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box, Button, Tooltip } from '@mui/material';\n\nimport { CenteredFlexBox } from 'generalComponents/BoxModifications';\nimport { DashboardDoc } from 'store/features/dashboard/handlers';\nimport { introStepDashboard } from 'views/Dashboard/JoyrideIntroductions/Dashboard.Joyride.Steps';\n\nimport { ConfirmDeleteModal } from './DangerZone.ConfirmDeleteModal';\n\nexport const DeleteDashboard: React.FC<{ dashboard: DashboardDoc }> = ({ dashboard }) => {\n const [isLoading, setIsLoading] = useState(false);\n const [modalIsOpen, setModalIsOpen] = useState(false);\n\n const handleClick = async () => {\n if (!modalIsOpen) setModalIsOpen(true);\n };\n\n const deleteButton = () => (\n \n \n \n );\n\n return (\n \n {dashboard.default ? (\n \n }\n placement=\"top\"\n enterDelay={500}\n arrow>\n {deleteButton()}\n \n ) : (\n deleteButton()\n )}\n\n \n \n );\n};\n","import { I18n, Translate } from 'react-redux-i18n';\n\nimport { Box, ListItem, Tooltip, Typography, useTheme } from '@mui/material';\n\nimport { DashboardDoc } from 'store/features/dashboard/handlers';\nimport { useBreakpointsContext } from 'views/Dashboard/Contexts/BreakpointsContext/BreakpointsContext';\nimport { introStepDashboard } from 'views/Dashboard/JoyrideIntroductions/Dashboard.Joyride.Steps';\n\nexport const DashboardSizeItem: React.FC<{ dashboard: DashboardDoc }> = ({ dashboard }) => {\n const theme = useTheme();\n\n const { breakpoint } = useBreakpointsContext();\n\n return (\n \n \n \n

\n \n

\n \n
\n \n
\n }\n placement=\"top\"\n arrow\n enterDelay={500}>\n \n :{' '}\n \n \n
\n \n \n \n );\n};\n","import { useState } from 'react';\nimport { I18n } from 'react-redux-i18n';\n\nimport { Edit, EditOff } from '@mui/icons-material';\nimport { IconButton, ListItem, TextField, Tooltip, useTheme } from '@mui/material';\n\nimport { DASHBOARD_VALID_NAME_REG_EXP, DASHBOARD_WHILE_TYPING_REG_EXP } from 'api/dashboard/interface';\nimport { FlexBox } from 'generalComponents/BoxModifications';\nimport { useAppDispatch } from 'store/store.exports';\nimport { introStepDashboard } from 'views/Dashboard/JoyrideIntroductions/Dashboard.Joyride.Steps';\n\nimport { saveDashboardName } from '../../../Grid/ResponsiveGridLayout.saveCreate';\n\nconst HiddenElementToAdjustFlexAlignment = () => {\n return (\n \n \n \n \n \n );\n};\n\nexport const TitleWithEditButton: React.FC<{ dashboardId: string; initValue: string }> = ({\n dashboardId,\n initValue\n}) => {\n const theme = useTheme();\n const dispatch = useAppDispatch();\n\n const [value, setValue] = useState(initValue);\n const [isEditing, setIsEditing] = useState(false);\n\n const updateValue = (val: string) => {\n if (DASHBOARD_WHILE_TYPING_REG_EXP.test(val)) setValue(val);\n };\n\n const saveName = async () => {\n if (value !== initValue) {\n const response = await saveDashboardName({ dashboardId, name: value, dispatch });\n if (!response) return;\n }\n\n setIsEditing(false);\n };\n\n const inputStyle = {\n p: '10px',\n opacity: `1 !important`,\n textAlign: 'center !important',\n fontSize: '220%',\n width: '260px'\n };\n\n const disabledInputProps = {\n disableUnderline: true,\n inputProps: { sx: { ...inputStyle, WebkitTextFillColor: '#223354 !important' } }\n };\n\n const enabledInputProps = { inputProps: { sx: inputStyle } };\n\n return (\n \n \n\n \n {\n e.stopPropagation();\n updateValue(e.target.value);\n }}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => {\n if (e.key === 'Enter') saveName();\n e.stopPropagation();\n }}\n disabled={!isEditing}\n error={!DASHBOARD_VALID_NAME_REG_EXP.test(value)}\n />\n \n\n \n {\n e.preventDefault();\n e.stopPropagation();\n if (isEditing) saveName();\n else setIsEditing(true);\n }}\n sx={{ color: theme.palette.payAttDarkBlue.dark }}>\n {isEditing ? : }\n \n \n \n );\n};\n","import { useState } from 'react';\nimport { I18n, Translate } from 'react-redux-i18n';\nimport { toast } from 'react-toastify';\n\nimport { Checkbox, CircularProgress, List, ListItem, Tooltip } from '@mui/material';\n\nimport { PayAttSuccess } from 'errorHandling/payattSuccess';\nimport { updateDashboardDefault } from 'store/features/dashboard/actions';\nimport { DashboardDoc } from 'store/features/dashboard/handlers';\nimport { useAppDispatch } from 'store/store.exports';\nimport { introStepDashboard } from 'views/Dashboard/JoyrideIntroductions/Dashboard.Joyride.Steps';\n\nimport { DashboardSizeItem } from './DashboardSettings.SizeItem';\nimport { TitleWithEditButton } from './DashboardSettings.TitleItem';\n\nexport const DashboardSettings: React.FC<{ dashboard: DashboardDoc }> = ({ dashboard }) => {\n const dispatch = useAppDispatch();\n\n const [checked, setChecked] = useState(dashboard.default || false);\n const [isLoading, setIsLoading] = useState(false);\n\n const handleClick = async () => {\n if (dashboard.default) {\n toast.warning(I18n.t('dashboard.toasts.cannotDeselectDefault'), { autoClose: 10000 });\n return;\n }\n\n try {\n setIsLoading(true);\n const response = (await dispatch(updateDashboardDefault({ id: dashboard.id }))) as {\n payload: PayAttSuccess;\n };\n\n if (response.payload?.status === 200) setChecked(true);\n else throw response;\n\n setIsLoading(false);\n } catch (error) {\n console.error(error);\n\n toast.error(I18n.t('dashboard.toasts.errorUpdatingDefault', { name: dashboard.name }), {\n autoClose: 10000\n });\n }\n };\n\n return (\n \n \n \n \n \n \n :\n \n \n \n {isLoading && }\n \n \n );\n};\n","import { ChartCategories } from '../Widgets/MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.names';\n\nexport interface DashboardSettings {\n hideAddButton?: boolean;\n hideRemoveButton?: boolean;\n}\n\nexport enum AccordionLabels {\n GlobalFilters = 'GlobalFilters',\n ComponentMenu = 'ComponentMenu',\n DangerZone = 'DangerZone'\n}\n\nexport type ComponentCategories = ChartCategories | 'Others';\n\nexport const ComponentCategoryEnum: Record = {\n TimeBasedCharts: 'TimeBasedCharts',\n NumericCharts: 'NumericCharts',\n DonutCharts: 'DonutCharts',\n HistogramCharts: 'HistogramCharts',\n Others: 'Others'\n};\n","import { AllPayAttWidgetStructure } from './Interfaces/PayAttWidgets.interfaces.structure';\nimport { PayAttWidgetDefaultLayouts } from './PayAttWidgets.DefaultLayouts';\n\nexport const PayAttWidgetsSpecifications: AllPayAttWidgetStructure = {\n sendSMSCampaign: { defaultLayout: PayAttWidgetDefaultLayouts.sendSMSCampaign },\n numberOfStampsAndStampCardsSentence: {\n defaultLayout: PayAttWidgetDefaultLayouts.numberOfStampsAndStampCardsSentence\n },\n increasedRevenueBasedOnVisits: {\n defaultLayout: PayAttWidgetDefaultLayouts.increasedRevenueBasedOnVisits\n },\n increasedRevenueBasedOnSMSCampaign: {\n defaultLayout: PayAttWidgetDefaultLayouts.increasedRevenueBasedOnSMSCampaign\n },\n increasedRevenueBasedOnStampCardCampaign: {\n defaultLayout: PayAttWidgetDefaultLayouts.increasedRevenueBasedOnStampCardCampaign\n }\n};\n","import { DashboardItemLayout, GridItemKeys } from 'views/Dashboard/Interfaces/Dashboard.layout';\nimport { ChartSpecification } from 'views/Dashboard/Widgets/MongoDBWidgets/ChartSpecification/ChartSpecification';\nimport { PayAttWidgetsSpecifications } from 'views/Dashboard/Widgets/PayAttWidgets/PayAttWidgets.specifications';\n\nexport const LayoutMap: { [key in keyof typeof GridItemKeys]: DashboardItemLayout } = {\n numberOfStampsPerStampCardCampaignHistogram:\n ChartSpecification.numberOfStampsPerStampCardCampaignHistogram.defaultLayout,\n averageStampsPerStampCardDonut: ChartSpecification.averageStampsPerStampCardDonut.defaultLayout,\n SMSCampaignsTotal: ChartSpecification.SMSCampaignsTotal.defaultLayout,\n campaignSMSSentTotal: ChartSpecification.campaignSMSSentTotal.defaultLayout,\n numberOfStampsTotal: ChartSpecification.numberOfStampsTotal.defaultLayout,\n stampCardsRewardsClaimedTotal: ChartSpecification.stampCardsRewardsClaimedTotal.defaultLayout,\n stampCardsCreatedTotal: ChartSpecification.stampCardsCreatedTotal.defaultLayout,\n numberOfRegistrationsTotal: ChartSpecification.numberOfRegistrationsTotal.defaultLayout,\n numberOfUniqueRegistrationsTotal: ChartSpecification.numberOfUniqueRegistrationsTotal.defaultLayout,\n registrationsOverTime: ChartSpecification.registrationsOverTime.defaultLayout,\n registrationsOverTimePerVenue: ChartSpecification.registrationsOverTimePerVenue.defaultLayout,\n registrationsNewOrReturningOverTime: ChartSpecification.registrationsNewOrReturningOverTime.defaultLayout,\n purchasesOverTime: ChartSpecification.purchasesOverTime.defaultLayout,\n newStampCardsOverTime: ChartSpecification.newStampCardsOverTime.defaultLayout,\n numberOfStampsOverTime: ChartSpecification.numberOfStampsOverTime.defaultLayout,\n numberOfStampsOverTimePerVenue: ChartSpecification.numberOfStampsOverTimePerVenue.defaultLayout,\n numberOfStampsNewOrReturningOverTime: ChartSpecification.numberOfStampsNewOrReturningOverTime.defaultLayout,\n sendSMSCampaign: PayAttWidgetsSpecifications.sendSMSCampaign.defaultLayout,\n numberOfStampsAndStampCardsSentence: PayAttWidgetsSpecifications.numberOfStampsAndStampCardsSentence.defaultLayout,\n increasedRevenueBasedOnVisits: PayAttWidgetsSpecifications.increasedRevenueBasedOnVisits.defaultLayout,\n increasedRevenueBasedOnSMSCampaign: PayAttWidgetsSpecifications.increasedRevenueBasedOnSMSCampaign.defaultLayout,\n increasedRevenueBasedOnStampCardCampaign:\n PayAttWidgetsSpecifications.increasedRevenueBasedOnStampCardCampaign.defaultLayout\n};\n","import { SyntheticEvent, useEffect, useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\nimport { toast } from 'react-toastify';\n\nimport { ExpandMore } from '@mui/icons-material';\nimport { Accordion, AccordionDetails, AccordionSummary, Box, Button, List, ListItem, Typography } from '@mui/material';\n\nimport { JOYRIDE_TIMEOUT_ACCORDION_OPEN } from 'Joyride/JoyridePayAtt.constants';\n\nimport { MAX_NUMBER_OF_WIDGETS_PER_DASHBOARD } from 'api/dashboard/interface';\nimport { CenteredFlexBox } from 'generalComponents/BoxModifications';\nimport { merchantSelector, stampCardSubscriptionSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { merchantIsIntegrated } from 'utils/utils';\nimport { useBreakpointsContext } from 'views/Dashboard/Contexts/BreakpointsContext/BreakpointsContext';\nimport { useStampCardCampaignStatsContext } from 'views/Dashboard/Contexts/StampCardCampaignStatsContext/StampCardCampaignStatsContext';\nimport { DashboardItemLayout, GridItemKeys } from 'views/Dashboard/Interfaces/Dashboard.layout';\nimport { useDashboardJoyrideContext } from 'views/Dashboard/JoyrideIntroductions/Dashboard.Joyride.context';\nimport {\n ChartsThatRequireIntegration,\n ChartsThatRequireStampCardFeature,\n DonutCharts,\n HistogramCharts,\n NumericCharts,\n TimeBasedCharts\n} from 'views/Dashboard/Widgets/MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.names';\nimport { PayAttWidgetNames } from 'views/Dashboard/Widgets/PayAttWidgets/PayAttWidgets.names';\n\nimport { useGlobalSettingsContext } from '../../../Contexts/GlobalSettingsContext/GlobalSettingContext';\nimport { useGridItemContext } from '../../../Contexts/GridItemContext/GridItemContext';\nimport { ComponentCategories, ComponentCategoryEnum } from '../../interfaces';\nimport { LayoutMap } from './WidgetMenuSection.LayoutMap';\n\nexport const ComponentMenuSection = () => {\n const { isRunning, refreshTooltip } = useDashboardJoyrideContext();\n\n const { dashboardSettings } = useGlobalSettingsContext();\n const { addGridItem } = useGridItemContext();\n\n const { updateStats: updateStampCardStats } = useStampCardCampaignStatsContext();\n const { breakpoint } = useBreakpointsContext();\n\n // Only display Stamp Card related chart items if we have at least one venue subscribed\n const subscribedToStampCardFeature = stampCardSubscriptionSelector(store.getState()).length > 0;\n\n // Only display integrated items if we are integrated\n const integrated = merchantIsIntegrated({ merchant: merchantSelector(store.getState()) });\n\n // Only allow one accordion to be open at a time\n const [accordionExpanded, setAccordionExpanded] = useState(false);\n const handleAccordionClick = (label: ComponentCategories) => (_: SyntheticEvent, isExpanded: boolean) => {\n setAccordionExpanded(isExpanded ? label : false);\n };\n\n useEffect(() => {\n if (isRunning) refreshTooltip(JOYRIDE_TIMEOUT_ACCORDION_OPEN);\n }, [isRunning, accordionExpanded, refreshTooltip]);\n\n const addNewGridItem = (gridItemLayout: DashboardItemLayout) => {\n if (breakpoint) {\n const success = addGridItem(gridItemLayout, breakpoint, true);\n if (!success) {\n toast.error(\n \n );\n } else if (gridItemLayout.requiresStampCardStats) updateStampCardStats();\n return;\n }\n\n console.error(\n 'No breakpoint set for dashboard, make sure the dahsboard sets/updates the BreakpointsContext when loaded and on all resize events that cause a breakpoint change'\n );\n };\n\n if (dashboardSettings.hideAddButton) return null;\n\n const chartItem = ({\n name,\n gridItemLayout\n }: {\n name: keyof typeof GridItemKeys;\n gridItemLayout: DashboardItemLayout;\n }) => {\n if (\n ChartsThatRequireStampCardFeature.includes(gridItemLayout.layoutType as any) &&\n !subscribedToStampCardFeature\n ) {\n return null;\n }\n\n if (ChartsThatRequireIntegration.includes(gridItemLayout.layoutType as any) && !integrated) return null;\n\n return (\n \n \n addNewGridItem(gridItemLayout)}>\n \n \n \n \n \n \n \n \n \n );\n };\n\n const chartGroup = ({ title, group }: { title: ComponentCategories; group: Partial }) => {\n const items = Object.keys(group)\n .map((name) =>\n chartItem({\n name: name as keyof typeof GridItemKeys,\n gridItemLayout: LayoutMap[name as keyof typeof GridItemKeys]\n })\n )\n .filter((el) => el !== null);\n\n if (!items.length) return null;\n\n return (\n \n }>\n \n \n \n \n {items}\n \n );\n };\n\n const gridItems = () => {\n return (\n \n {chartGroup({ title: ComponentCategoryEnum.TimeBasedCharts, group: TimeBasedCharts })}\n {chartGroup({ title: ComponentCategoryEnum.NumericCharts, group: NumericCharts })}\n {chartGroup({ title: ComponentCategoryEnum.DonutCharts, group: DonutCharts })}\n {chartGroup({ title: ComponentCategoryEnum.HistogramCharts, group: HistogramCharts })}\n {chartGroup({ title: ComponentCategoryEnum.Others, group: PayAttWidgetNames })}\n \n );\n };\n\n return {gridItems()};\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Close, ExpandMore } from '@mui/icons-material';\nimport SettingsIcon from '@mui/icons-material/Settings';\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Box,\n Button,\n Container,\n Popover,\n Typography,\n useTheme\n} from '@mui/material';\n\nimport { JOYRIDE_TIMEOUT_MENU_OPEN, SHOW_HOMEPAGE_SETTINGS_INTRO_SEARCH_PARAMS } from 'Joyride/JoyridePayAtt.constants';\n\nimport { FullDivider, VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { introductionSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { delay } from 'utils/utils';\nimport { introStepHomeSettings } from 'views/Home/JoyrideIntroduction/Settings/Home.JoyrideWidgetMenu.Steps';\nimport {\n INTRO_WIDGET_MENU_CLASS_NAMES,\n useHomeWidgetMenuJoyrideContext\n} from 'views/Home/JoyrideIntroduction/Settings/Home.JoyrideWidgetMenu.context';\nimport { HomeWidgetMenuJoyrideIntro } from 'views/Home/JoyrideIntroduction/Settings/Home.JoyrideWidgetMenuIntro';\n\nimport { useDashboardSelectionContext } from '../Contexts/DashboardSelectionContext/DashboardSelectionContext';\nimport { useGlobalSettingsContext } from '../Contexts/GlobalSettingsContext/GlobalSettingContext';\nimport { isFilterEqual } from '../Contexts/GlobalSettingsContext/utils';\nimport { GridItemKeys } from '../Interfaces/Dashboard.layout';\nimport { introStepDashboard } from '../JoyrideIntroductions/Dashboard.Joyride.Steps';\nimport { useDashboardJoyrideContext } from '../JoyrideIntroductions/Dashboard.Joyride.context';\nimport { SettingsMenu } from '../Widgets/MongoDBWidgets/ChartFilters/SettingsMenu';\nimport { HomepageSettingsTitle } from '../Widgets/MongoDBWidgets/ChartFilters/SettingsMenu.MenuTitles';\nimport { ChartTypes } from '../Widgets/MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.chartSpecification';\nimport {\n AllChartFilters,\n GLOBAL_FILTERS\n} from '../Widgets/MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.filters';\nimport { ChartStructure } from '../Widgets/MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.structure';\nimport { SelectBackgroundImage } from './GlobalSettings.SelectBackgroundImage';\nimport { DeleteDashboard } from './MenuSections/DangerZone/DangerZone.DeleteButton';\nimport { DashboardSettings } from './MenuSections/DashboardSettings/DashboardSettings';\nimport { ComponentMenuSection } from './MenuSections/WidgetMenuSection/WidgetMenuSection';\nimport { AccordionLabels } from './interfaces';\n\nconst MARGIN_THRESHOLD = 20;\n\n// Since we re-use the settings component for charts charts, we have to provide a specification. Since we don't have one\n// globaly, we create the below dummy spec.\n//\n// The filter array indicates which settings we should be able to filter on\nconst dummyChartSpecification: ChartStructure = {\n type: ChartTypes.BAR,\n filters: GLOBAL_FILTERS,\n defaultLayout: {\n i: '',\n layoutType: GridItemKeys.registrationsOverTime,\n requiresStampCardStats: false,\n x: 0,\n y: 0,\n w: 1,\n h: 1,\n minW: 0,\n minH: 0,\n maxW: 0,\n maxH: 0\n },\n MongoDBRefsAndRenderingSpec: {}\n};\n\nconst Styles = {\n Accordion: {\n Typography: { pb: '15px', mt: '10px', ml: '25.6px', flexGrow: '1', textAlign: 'center', fontWeight: 'normal' }\n }\n};\n\nexport const GlobalSettings: React.FC<{ homepage?: boolean }> = ({ homepage }) => {\n const { globalFilter, setGlobalFilter } = useGlobalSettingsContext();\n const { dashboard } = useDashboardSelectionContext();\n\n const {\n isRunning: isRunningDashboard,\n stepIndex,\n setStepIndex,\n openGlobalSettingsMenu\n } = useDashboardJoyrideContext();\n const {\n setIsRunning: setIsRunningHomeWidgetMenu,\n isRunning: isRunningHomeWidgetMenu,\n setIsManuallyStartedIntro\n } = useHomeWidgetMenuJoyrideContext();\n\n // Maintain a copy of the context here, in order to save upon closing the menue\n const [startDateSetting, setStartDateSetting] = useState(new Date(globalFilter.createdAt?.$gte));\n const [endDateSetting, setEndDateSetting] = useState(new Date(globalFilter.createdAt?.$lte));\n const [venueIdsSetting, setVenueIdsSetting] = useState(globalFilter.venueIdStr.$in);\n const [stampCardCampaignIdsSetting, setStampCardCampaignIdsSetting] = useState(\n globalFilter.stampCardCampaignIdStr.$in\n );\n const [trailingTimeFrameSetting, setTrailingTimeFrameSetting] = useState(\n globalFilter.trailingTimeFrame\n ? { unit: globalFilter.trailingTimeFrame.unit, value: globalFilter.trailingTimeFrame.value }\n : undefined\n );\n const [hourlyPeriodicSetting, setHourlyPeriodicSetting] = useState(globalFilter.hourlyPeriodic);\n const [dailyPeriodicSetting, setDailyPeriodicSetting] = useState(globalFilter.dailyPeriodic);\n const [foreverSetting, setForeverSetting] = useState(globalFilter.forever);\n\n const theme = useTheme();\n const [anchorEl, setAnchorEl] = useState(null);\n\n const settingsButton = useRef(null);\n\n // Only allow one accordion to be open at a time\n const [accordionExpanded, setAccordionExpanded] = useState(false);\n const handleAccordionClick = (label: AccordionLabels) => (_: React.SyntheticEvent, isExpanded: boolean) => {\n setAccordionExpanded(isExpanded ? label : false);\n };\n\n const updateContext = () => {\n const newFilter: AllChartFilters = {\n createdAt: { $gte: new Date(startDateSetting), $lte: new Date(endDateSetting) },\n forever: foreverSetting,\n trailingTimeFrame: trailingTimeFrameSetting\n ? { unit: trailingTimeFrameSetting.unit, value: trailingTimeFrameSetting.value }\n : undefined,\n dailyPeriodic: dailyPeriodicSetting,\n hourlyPeriodic: hourlyPeriodicSetting,\n stampCardCampaignIdStr: {\n $in: [...stampCardCampaignIdsSetting]\n },\n venueIdStr: {\n $in: [...venueIdsSetting]\n }\n };\n\n // Only update context if some field actually changed\n if (isFilterEqual(globalFilter, newFilter)) return;\n\n setGlobalFilter(newFilter);\n };\n\n const handleClose = (apply: boolean) => {\n if (apply) updateContext();\n\n setAnchorEl(null);\n };\n\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const open = Boolean(anchorEl);\n\n useEffect(() => {\n const handle = async () => {\n if (openGlobalSettingsMenu && settingsButton.current) {\n setAnchorEl(settingsButton.current);\n await delay(100);\n setStepIndex((index) => index + 1);\n } else {\n setAnchorEl(null);\n }\n };\n\n handle();\n }, [openGlobalSettingsMenu, setStepIndex]);\n\n const settingsMenu = (\n \n );\n\n const closeMenuButton = () => {\n return (\n handleClose(false)}>\n \n \n );\n };\n\n const dashboardSettings = () => {\n if (!dashboard) return null;\n\n return (\n <>\n \n \n \n );\n };\n\n const accordionFilterSection = (home: boolean) =>\n home ? (\n settingsMenu\n ) : (\n \n } className={introStepDashboard(8)}>\n \n \n \n \n {settingsMenu}\n \n );\n\n const componentMenuSection = () => (\n <>\n \n \n }>\n \n \n \n \n \n \n \n \n \n );\n const dangerZone = () => {\n if (!dashboard) return null;\n\n return (\n <>\n \n \n \n \n \n );\n };\n\n // Open settings modal to show intro if we were navigated here from the Introduction tab\n useEffect(() => {\n let timerIntro: NodeJS.Timeout | null = null;\n\n // If we have never seen the intro, show immediately\n const showIntro = introductionSelector(store.getState()).homepage.settings;\n if (showIntro) {\n setIsRunningHomeWidgetMenu(true);\n return;\n }\n\n const timer = setTimeout(() => {\n // Check if we were navigated here from the introduction tab\n if (window.location.search.includes(SHOW_HOMEPAGE_SETTINGS_INTRO_SEARCH_PARAMS)) {\n if (!settingsButton.current) return;\n\n // Set the anchorEl of the popup to be the button\n setAnchorEl(settingsButton.current);\n\n timerIntro = setTimeout(() => {\n setIsRunningHomeWidgetMenu(true);\n setIsManuallyStartedIntro(true);\n window.history.replaceState(null, '', window.location.pathname);\n }, JOYRIDE_TIMEOUT_MENU_OPEN);\n }\n }, JOYRIDE_TIMEOUT_MENU_OPEN);\n\n return () => {\n clearTimeout(timer);\n if (timerIntro) clearTimeout(timerIntro);\n };\n }, [setIsManuallyStartedIntro, setIsRunningHomeWidgetMenu]);\n\n const anchorElBottomLocation = anchorEl?.getBoundingClientRect().bottom || 0 + window.scrollX;\n const popoverMaxHeight =\n window.innerHeight < 575 ? `calc(100% - 20px)` : `calc(100% - ${MARGIN_THRESHOLD + anchorElBottomLocation}px)`;\n\n const showOnHomepage = homepage;\n const showOnDashboardGlobalSettings = !homepage;\n\n return (\n \n \n\n \n \n \n handleClose(false)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n className=\"payatt-widget-menu-popover\"\n transitionDuration={openGlobalSettingsMenu ? { enter: 0, exit: 0, appear: 0 } : 'auto'}>\n {/* Sections */}\n {showOnHomepage && (\n <>\n {closeMenuButton()}\n \n \n \n \n {accordionFilterSection(true)}\n \n )}\n\n {showOnDashboardGlobalSettings && (\n <>\n {dashboardSettings()}\n {accordionFilterSection(false)}\n {componentMenuSection()}\n {dangerZone()}\n \n )}\n \n \n );\n};\n","import { TrailingTimeFrame } from '../ChartFilters/Utils/DateSelector/DateSelector.interfaces';\nimport { AllowedMongoFilterSettings } from './MongoDBWidgets.interfaces.chartSpecification';\n\ntype FilterObject = { [key in AllowedMongoFilterSettings]: any };\n\nexport interface AllChartFilters extends Partial {\n forever: boolean;\n createdAt: { $gte: Date; $lte: Date };\n trailingTimeFrame: TrailingTimeFrame | undefined;\n dailyPeriodic: boolean;\n hourlyPeriodic: boolean;\n stampCardCampaignIdStr: { $in: string[] };\n venueIdStr: { $in: string[] };\n isFirst?: boolean;\n owner?: boolean;\n endpoint?: string[];\n}\n\nexport const GLOBAL_FILTERS: AllowedMongoFilterSettings[] = [\n 'forever',\n 'createdAt',\n 'trailingTimeframe',\n 'dailyPeriodic',\n 'hourlyPeriodic',\n 'venueId',\n 'stampCardCampaignId'\n];\n","import { ReactNode, createContext, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useGridItemContext } from 'views/Dashboard/Contexts/GridItemContext/GridItemContext';\nimport { DEFAULT_TRAILING_TIME_FRAME } from 'views/Dashboard/Widgets/MongoDBWidgets/ChartFilters/Utils/DateSelector/DateSelector.interfaces';\nimport { AllChartFilters } from 'views/Dashboard/Widgets/MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.filters';\n\nimport { useGlobalSettingsContext } from '../GlobalSettingsContext/GlobalSettingContext';\nimport { cloneChartFilter } from '../GlobalSettingsContext/utils';\nimport { ChartSettingsContextInterface, CreateChartSettingsFilterProps } from './ChartSettingsContext.interfaces';\n\nexport const ChartSettingsContext = createContext(null);\n\nconst createInitialFilter = ({ backendSavedFilter, globalFilter }: CreateChartSettingsFilterProps): AllChartFilters => {\n const filter: AllChartFilters = {\n // ##### Directly relates to MongoDB Chart filters\n createdAt: {\n $gte: new Date(backendSavedFilter?.createdAt?.$gte || globalFilter.createdAt.$gte),\n $lte: new Date(backendSavedFilter?.createdAt?.$lte || globalFilter.createdAt.$lte)\n },\n venueIdStr: {\n $in: backendSavedFilter?.venueIdStr?.$in\n ? [...backendSavedFilter.venueIdStr.$in]\n : [...globalFilter.venueIdStr.$in]\n },\n stampCardCampaignIdStr: {\n $in: backendSavedFilter?.stampCardCampaignIdStr?.$in\n ? [...backendSavedFilter.stampCardCampaignIdStr.$in]\n : [...globalFilter.stampCardCampaignIdStr.$in]\n },\n\n // ##### Not valid MongoDB Chart filters\n hourlyPeriodic: backendSavedFilter?.hourlyPeriodic || false,\n dailyPeriodic: backendSavedFilter?.dailyPeriodic || false,\n forever: backendSavedFilter?.forever || false,\n\n // Can be undefined\n trailingTimeFrame: backendSavedFilter?.trailingTimeFrame || DEFAULT_TRAILING_TIME_FRAME\n };\n\n return filter;\n};\n\nexport const ChartSettingsContextProvider: React.FC<{\n children: ReactNode;\n gridItemId: string;\n filter?: AllChartFilters;\n}> = ({ children, gridItemId, filter: backendSavedFilter }) => {\n const { globalFilter } = useGlobalSettingsContext();\n const { gridItems, updateGridItem } = useGridItemContext();\n\n const [filter, setFilter] = useState(createInitialFilter({ backendSavedFilter, globalFilter }));\n\n // Count all the useEffects to make sure that none of them are not run on first load, there are 2 useEffects\n const firstLoadCount = useRef(2);\n\n const firstLoadCheck = () => {\n if (firstLoadCount.current > 0) {\n firstLoadCount.current -= 1;\n return false;\n }\n\n return true;\n };\n\n // Update local filter with changes from the global filter\n useEffect(() => {\n if (!firstLoadCheck()) return;\n\n setFilter(cloneChartFilter(globalFilter));\n }, [globalFilter]);\n\n // Update global context gridItems when a chart filter is applied to have all information in one place, this\n // makes it easy to update the layouts in the DB when requested\n useEffect(() => {\n if (!firstLoadCheck()) return;\n\n const item = gridItems.find((el) => el.i === gridItemId);\n if (item) updateGridItem({ ...item, filter: cloneChartFilter(filter) });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filter, gridItemId, updateGridItem]);\n\n const value = useMemo(() => ({ filter, setFilter }), [filter]);\n\n return {children};\n};\n\nexport const useChartSettingsContext = () => {\n const chartSettingsContext = useContext(ChartSettingsContext);\n\n if (!chartSettingsContext) {\n throw new Error('No ChartSettingsContext.Provider found when calling useChartSettingsContext');\n }\n\n return chartSettingsContext;\n};\n","import { DragHandle } from '@mui/icons-material';\nimport Close from '@mui/icons-material/Close';\nimport { Box, IconButton, useTheme } from '@mui/material';\n\nimport { FlexBox } from 'generalComponents/BoxModifications';\n\nimport { CloseGridItem } from '../Widgets/helpers';\nimport { GridItemTopBarProps } from './ResponsiveGridLayout.interfaces';\n\nexport const GRID_ITEM_TOP_BAR_HEIGHT_INLINE = 30;\nexport const GRID_ITEM_TOP_BAR_HEIGHT = 45;\n\nexport const GridItemTopBar: React.FC = ({\n globalDragability,\n globalCloseability,\n removeGridItem,\n showTopBarInlineWithChartName,\n settingsButton,\n refreshStampCardDataButton\n}) => {\n const theme = useTheme();\n\n const homepageStyle = { position: 'absolute', right: '0' };\n\n return (\n \n {globalDragability && (\n \n \n \n )}\n \n {refreshStampCardDataButton}\n {settingsButton}\n {globalCloseability && (\n \n CloseGridItem(e, removeGridItem)}>\n \n \n \n )}\n \n );\n};\n","import React, { useEffect, useState } from 'react';\n\nimport SettingsIcon from '@mui/icons-material/Settings';\nimport { Box, IconButton, Popover, useTheme } from '@mui/material';\n\nimport { VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport {\n ChartSettingsContextProvider,\n useChartSettingsContext\n} from 'views/Dashboard/Contexts/ChartSettingsContext/ChartSettingsContext';\nimport { useGlobalSettingsContext } from 'views/Dashboard/Contexts/GlobalSettingsContext/GlobalSettingContext';\nimport { isFilterFieldEqual } from 'views/Dashboard/Contexts/GlobalSettingsContext/utils';\nimport { useGridItemContext } from 'views/Dashboard/Contexts/GridItemContext/GridItemContext';\nimport { GridItemTopBar } from 'views/Dashboard/Grid/ResponsiveGridLayout.TopBar';\n\nimport { SettingsMenu } from './ChartFilters/SettingsMenu';\nimport { ChartWithSettingsProps } from './Interfaces/MongoDBWidgets.interfaces.props';\n\nconst ChartWithSettingsInner: React.FC = ({ chart, chartSpecification, layoutType }) => {\n const theme = useTheme();\n\n const { filter, setFilter } = useChartSettingsContext();\n const { globalDragability, globalCloseability } = useGlobalSettingsContext();\n const { removeGridItem } = useGridItemContext();\n\n // Maintain a copy of the context here, in order to save upon closing the menue\n const [startDateSetting, setStartDateSetting] = useState(new Date(filter.createdAt.$gte));\n const [endDateSetting, setEndDateSetting] = useState(new Date(filter.createdAt.$lte));\n const [hourlyPeriodicSetting, setHourlyPeriodicSetting] = useState(filter.hourlyPeriodic);\n const [dailyPeriodicSetting, setDailyPeriodicSetting] = useState(filter.dailyPeriodic);\n const [venueIdsSetting, setVenueIdsSetting] = useState([...filter.venueIdStr.$in]);\n const [stampCardCampaignIdsSetting, setStampCardCampaignIdsSetting] = useState([\n ...filter.stampCardCampaignIdStr.$in\n ]);\n const [trailingTimeFrameSetting, setTrailingTimeFrameSetting] = useState(\n typeof filter.trailingTimeFrame !== 'undefined'\n ? { unit: filter.trailingTimeFrame.unit, value: filter.trailingTimeFrame.value }\n : undefined\n );\n const [foreverSetting, setForeverSetting] = useState(filter.forever);\n\n const chartTopPadding = 10;\n const settingsButtonWidth = 30;\n const showTopBarInlineWithChartName = !globalCloseability && !globalDragability;\n\n const [anchorEl, setAnchorEl] = useState(null);\n\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const updateContext = () => {\n setFilter((currFilter) => {\n const newFilter = { ...currFilter };\n\n if (!isFilterFieldEqual(startDateSetting, currFilter.createdAt.$gte)) {\n newFilter.createdAt.$gte = new Date(startDateSetting);\n }\n if (!isFilterFieldEqual(endDateSetting, currFilter.createdAt.$lte)) {\n newFilter.createdAt.$lte = new Date(endDateSetting);\n }\n if (!isFilterFieldEqual(trailingTimeFrameSetting, currFilter.trailingTimeFrame)) {\n newFilter.trailingTimeFrame = trailingTimeFrameSetting\n ? { unit: trailingTimeFrameSetting.unit, value: trailingTimeFrameSetting.value }\n : undefined;\n }\n if (!isFilterFieldEqual(hourlyPeriodicSetting, currFilter.hourlyPeriodic)) {\n newFilter.hourlyPeriodic = hourlyPeriodicSetting;\n }\n if (!isFilterFieldEqual(dailyPeriodicSetting, currFilter.dailyPeriodic)) {\n newFilter.dailyPeriodic = dailyPeriodicSetting;\n }\n if (!isFilterFieldEqual(foreverSetting, currFilter.forever)) {\n newFilter.forever = foreverSetting;\n }\n if (!isFilterFieldEqual(venueIdsSetting, currFilter.venueIdStr.$in)) {\n newFilter.venueIdStr.$in = [...venueIdsSetting];\n }\n if (!isFilterFieldEqual(stampCardCampaignIdsSetting, currFilter.stampCardCampaignIdStr.$in)) {\n newFilter.stampCardCampaignIdStr.$in = [...stampCardCampaignIdsSetting];\n }\n\n return newFilter;\n });\n };\n\n const resetValues = () => {\n setStartDateSetting(new Date(filter.createdAt.$gte));\n setEndDateSetting(new Date(filter.createdAt.$lte));\n setHourlyPeriodicSetting(filter.hourlyPeriodic);\n setDailyPeriodicSetting(filter.dailyPeriodic);\n setVenueIdsSetting(filter.venueIdStr.$in);\n setStampCardCampaignIdsSetting(filter.stampCardCampaignIdStr.$in);\n setTrailingTimeFrameSetting(\n typeof filter.trailingTimeFrame !== 'undefined'\n ? { unit: filter.trailingTimeFrame.unit, value: filter.trailingTimeFrame.value }\n : undefined\n );\n setForeverSetting(filter.forever);\n };\n\n const handleClose = (apply: boolean) => {\n if (apply) updateContext();\n else setTimeout(resetValues, 500);\n\n setAnchorEl(null);\n };\n\n // Update local settings when the global context is updated\n useEffect(() => {\n setStartDateSetting(new Date(filter.createdAt.$gte));\n setEndDateSetting(new Date(filter.createdAt.$lte));\n setTrailingTimeFrameSetting(\n filter.trailingTimeFrame\n ? { unit: filter.trailingTimeFrame.unit, value: filter.trailingTimeFrame.value }\n : undefined\n );\n setForeverSetting(filter.forever);\n setHourlyPeriodicSetting(filter.hourlyPeriodic);\n setDailyPeriodicSetting(filter.dailyPeriodic);\n setVenueIdsSetting([...filter.venueIdStr.$in]);\n setStampCardCampaignIdsSetting([...filter.stampCardCampaignIdStr.$in]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filter]);\n\n const open = Boolean(anchorEl);\n\n const SettingsButton = (\n \n {\n if (showTopBarInlineWithChartName) return { p: 0 };\n return {};\n })()\n }}>\n \n \n handleClose(false)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}>\n \n \n \n );\n\n return (\n \n \n \n {React.cloneElement(chart, { chartSpecification })}\n \n \n \n );\n};\n\nexport const ChartWithSettings: React.FC = ({ gridItemId, filter, ...rest }) => (\n \n \n \n);\n","import {\n ChartRefAndRenderingSpecResponse,\n GetChartRefAndrenderingSpec,\n GetTimeVariantChartIdProps\n} from 'views/Dashboard/Interfaces/Dashboard.props';\n\nimport {\n ChartReferenceEnvironments,\n TimeBasedChartVariations\n} from '../Interfaces/MongoDBWidgets.interfaces.chartSpecification';\nimport { DefaultRenderSpecDescreteLine } from './ChartSpecification.MongoDBRenderingSpecs';\n\nconst MS = 1000;\nconst Hour = MS * 60 * 60;\nconst Day = Hour * 24;\nconst Week = Day * 7;\nconst Month = Day * 30; // Doesn't have to be precise, just a rough estimate\nconst Year = Day * 365;\n\nconst getType = (\n startDate: Date,\n endDate: Date,\n hourlyPeriodic: boolean,\n dailyPeriodic: boolean\n): TimeBasedChartVariations => {\n if (hourlyPeriodic) return 'hourlyPeriodic';\n if (dailyPeriodic) return 'dailyPeriodic';\n\n const timeDiff = endDate.getTime() - startDate.getTime();\n\n if (timeDiff <= Week) return 'hourly';\n if (timeDiff <= Month * 3) return 'daily';\n if (timeDiff <= Year) return 'weekly';\n if (timeDiff <= Year * 2) return 'monthly';\n\n return 'yearly';\n};\n\nconst getEnvironment = (): ChartReferenceEnvironments => {\n if (process.env.REACT_APP_ENV === 'staging') return 'staging';\n if (process.env.REACT_APP_ENV === 'development') return 'dev';\n\n return 'prod';\n};\n\nconst emptyResponse = { renderingSpec: { version: DefaultRenderSpecDescreteLine.version }, ref: '' };\n\nexport const getTimeVariantChartInfo = ({\n chartSpecification,\n locale,\n startDate,\n endDate,\n hourlyPeriodic,\n dailyPeriodic\n}: GetTimeVariantChartIdProps): ChartRefAndRenderingSpecResponse => {\n const allChartIds =\n chartSpecification.MongoDBRefsAndRenderingSpec[getType(startDate, endDate, hourlyPeriodic, dailyPeriodic)];\n if (!allChartIds) return emptyResponse;\n\n const renderingSpec = allChartIds.renderingSpec[locale];\n const ref = allChartIds[getEnvironment()];\n\n if (typeof ref !== 'string') return emptyResponse;\n\n return { renderingSpec, ref };\n};\n\nexport const getChartId = ({\n chartSpecification,\n locale\n}: GetChartRefAndrenderingSpec): ChartRefAndRenderingSpecResponse => {\n const allChartIds = chartSpecification.MongoDBRefsAndRenderingSpec.default;\n if (!allChartIds) return emptyResponse;\n\n const renderingSpec = allChartIds.renderingSpec[locale];\n const ref = allChartIds[getEnvironment()];\n\n if (typeof ref !== 'string') return emptyResponse;\n\n return { renderingSpec, ref };\n};\n","import React, { useEffect, useRef, useState } from 'react';\n\nimport { Box } from '@mui/material';\nimport Backdrop from '@mui/material/Backdrop';\n\nimport { Chart as EmbedChart, EmbedChartOptions } from '@mongodb-js/charts-embed-dom';\n\nimport NoContent from 'generalComponents/Status/NoContent/NoContent';\nimport { useGlobalSettingsContext } from 'views/Dashboard/Contexts/GlobalSettingsContext/GlobalSettingContext';\n\nimport { ChartProps } from './Interfaces/MongoDBWidgets.interfaces.props';\n\nconst DefaultChartProps: Omit = {\n height: '100%',\n width: '100%',\n theme: 'light',\n showAttribution: false\n};\n\nconst ChartWrapperStyle = { position: 'relative', height: '100%', width: '100%' };\n\nconst ChartStyle = { width: '100%', height: '100%' };\n\nconst NoContentBackdrop: React.FC<{ show: boolean }> = ({ show }) => {\n return (\n \n \n \n );\n};\n\nconst FirstLoadBackdrop: React.FC<{ show: boolean }> = ({ show }) => {\n return (\n \n \n \n );\n};\n\nexport const Chart = ({ filter, chartId, renderingSpec }: ChartProps) => {\n const { chartSDK } = useGlobalSettingsContext();\n\n const chartDiv = useRef(null);\n const [rendered, setRendered] = useState(false);\n\n const [chart, setChart] = useState(undefined);\n\n useEffect(() => {\n setRendered(false);\n }, [chartId]);\n\n useEffect(() => {\n if (chartSDK) {\n setChart(chartSDK.createChart({ ...DefaultChartProps, chartId, filter, renderingSpec }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [chartId, chartSDK]);\n\n useEffect(() => {\n const displayChart = async () => {\n if (chartDiv.current && chart) {\n try {\n await chart.render(chartDiv.current);\n setRendered(true);\n } catch (err: any) {\n console.error('Error during Charts rendering.', err);\n }\n }\n };\n\n displayChart();\n }, [chart]);\n\n useEffect(() => {\n const updateFilter = async () => {\n if (rendered && chart) {\n try {\n await chart.setFilter(filter);\n } catch (err: any) {\n console.error('Error while filtering', err);\n }\n }\n };\n\n updateFilter();\n }, [chart, rendered, filter]);\n\n useEffect(() => {\n const updateRenderingSpec = async () => {\n if (rendered && chart) {\n try {\n await chart.setRenderingSpecOverride(renderingSpec);\n } catch (err: any) {\n console.error('Error while updating rendering spec', err);\n }\n }\n };\n\n updateRenderingSpec();\n }, [chart, rendered, renderingSpec]);\n\n if (!chart) return null;\n\n return (\n \n \n \n \n \n );\n};\n","import LocaleAPI from 'store/locale';\nimport { useChartSettingsContext } from 'views/Dashboard/Contexts/ChartSettingsContext/ChartSettingsContext';\n\nimport { ChartSpecification } from './ChartSpecification/ChartSpecification';\nimport { getChartId, getTimeVariantChartInfo } from './ChartSpecification/ChartSpecification.GetChartId';\nimport { ChartPresetPerCountry } from './Interfaces/MongoDBWidgets.interfaces.chartSpecification';\nimport { AllChartFilters } from './Interfaces/MongoDBWidgets.interfaces.filters';\nimport { ChartStructure } from './Interfaces/MongoDBWidgets.interfaces.structure';\nimport { Chart } from './MongoDBWidgets.Chart';\n\nconst setupFilters = (chartSpecification: ChartStructure, contextFilter: AllChartFilters) => {\n const allowedFilters: RecursivePartial = {};\n\n if (chartSpecification.filters.includes('createdAt')) allowedFilters.createdAt = contextFilter.createdAt;\n if (chartSpecification.filters.includes('stampCardCampaignId'))\n allowedFilters.stampCardCampaignIdStr = contextFilter.stampCardCampaignIdStr;\n if (chartSpecification.filters.includes('venueId')) allowedFilters.venueIdStr = contextFilter.venueIdStr;\n\n return allowedFilters;\n};\n\nexport const GenerateChartFromContext: React.FC<{\n layoutType: keyof typeof ChartSpecification;\n chartSpecification?: ChartStructure;\n chartWithTimeVariant?: boolean;\n}> = ({ layoutType, chartSpecification, chartWithTimeVariant }) => {\n const { filter } = useChartSettingsContext();\n\n const locale = LocaleAPI() as unknown as keyof ChartPresetPerCountry;\n\n if (!chartSpecification) {\n console.error('Missing chartSpecification');\n return null;\n }\n\n const { ref, renderingSpec } = chartWithTimeVariant\n ? getTimeVariantChartInfo({\n chartSpecification,\n locale,\n startDate: filter.createdAt.$gte,\n endDate: filter.createdAt.$lte,\n hourlyPeriodic: filter.hourlyPeriodic,\n dailyPeriodic: filter.dailyPeriodic\n })\n : getChartId({ chartSpecification, locale });\n\n const allowedFilters = setupFilters(chartSpecification, filter);\n\n return ;\n};\n","import { useRef } from 'react';\n\nimport { Box, SxProps } from '@mui/material';\n\nimport { GRID_ITEM_TOP_BAR_HEIGHT } from 'views/Dashboard/Grid/ResponsiveGridLayout.TopBar';\nimport { useContainerRect } from 'views/Dashboard/Grid/ResponsiveGridLayout.useContainerRect';\n\nimport { imageSpec } from './Helpers/Calculations.Interfaces';\n\nexport const CalculationBackgroundImage: React.FC<{\n showItemTopBar?: boolean;\n image: Required;\n children: React.ReactNode;\n}> = ({ showItemTopBar, image, children }) => {\n const marginTopWrapper = showItemTopBar ? -GRID_ITEM_TOP_BAR_HEIGHT + 4 : 0;\n\n const ref = useRef(null);\n const containerRect = useContainerRect(ref);\n\n const wrapperBoxStyle = { mt: `${marginTopWrapper}px`, height: '100%' };\n const backgroundImageStyle: SxProps = { objectFit: 'cover', position: 'absolute', zIndex: '1' };\n\n if (!image.width || !image.height) {\n console.error('Missing image width and height');\n return null;\n }\n\n const aspectRatioImg = image.width / image.height;\n const aspectRatioContainer = containerRect.width / containerRect.height;\n\n if (aspectRatioImg > aspectRatioContainer) backgroundImageStyle.height = '100%';\n else backgroundImageStyle.width = '100%';\n\n return (\n \n \n {children}\n \n );\n};\n","import { useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box, Button, Popover, SxProps, Typography } from '@mui/material';\n\nimport { CenteredFlexBox } from 'generalComponents/BoxModifications';\nimport { addCancelGridDragabilityToPopups } from 'views/Dashboard/Grid/ResponsiveGridLayout.utils';\n\nexport const InfoButton: React.FC<{\n children: React.ReactNode;\n buttonTransStr?: string;\n buttonVariant?: 'text' | 'outlined' | 'contained';\n buttonSx?: SxProps;\n}> = ({ children, buttonTransStr, buttonVariant, buttonSx }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n\n const handleClick = (event: React.MouseEvent) => {\n addCancelGridDragabilityToPopups();\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const open = Boolean(anchorEl);\n const popoverId = open ? 'info-popover' : undefined;\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n {children}\n \n \n \n );\n};\n","import { TextField, styled } from '@mui/material';\n\nexport const TextFieldNumericStyled = styled(TextField)(\n () => `\n input::-webkit-outer-spin-button,\n input::-webkit-inner-spin-button {\n opacity: 1;\n }\n\n /* Firefox */\n input[type=number] {\n opacity: 1;\n }\n`\n);\n","import { useEffect, useState } from 'react';\n\nimport { Box, MenuItem, Select, SelectChangeEvent } from '@mui/material';\n\nimport { TextFieldNumericStyled } from './Calculations.styledComponents';\nimport { EMPHASIZED_TEXT_FONT_SIZE } from './Calculations.utils';\n\ninterface InlineNumericTextFieldProps {\n value: string;\n setValue: (val: string) => void;\n emph?: boolean;\n maxValue?: number;\n minValue?: number;\n step?: string;\n fontSize?: number;\n allowEditing?: boolean;\n}\n\ninterface InlineSelectTextFieldProps {\n value: string;\n setValue: (val: string) => void;\n items: { key: string; value: React.ReactNode }[];\n allowEditing?: boolean;\n}\n\nexport const InlineNumericTextField = ({\n value,\n setValue,\n step,\n maxValue,\n minValue,\n emph = false,\n fontSize = 11,\n allowEditing = true\n}: InlineNumericTextFieldProps) => {\n const defaultInputWidth = 33;\n const max = 99999999;\n const min = 0;\n\n const [inputWidth, setInputWidth] = useState(defaultInputWidth);\n\n // Make sure the width of the input field is inline with the text\n useEffect(() => {\n if (value.length * fontSize > 30) {\n setInputWidth((value.length + 1) * fontSize);\n } else {\n setInputWidth(defaultInputWidth);\n }\n }, [fontSize, value]);\n\n const setValueWithStep: React.ChangeEventHandler | undefined = (e) => {\n const newVal = e.target.value;\n\n // Sanity check, test if number\n if (!/^[0-9]*(\\.[0-9][0-9]*)?$/.test(newVal)) return;\n const newValAsNumber = parseFloat(newVal);\n\n if (Number.isNaN(newValAsNumber)) return minValue;\n\n if (newValAsNumber < 0) return;\n if (newValAsNumber > 9999999) return;\n\n if (step && newValAsNumber > 1) return;\n if ((typeof maxValue === 'number' && newValAsNumber > maxValue) || newValAsNumber > max) return;\n if ((typeof minValue === 'number' && newValAsNumber < minValue) || newValAsNumber < min) return;\n\n setValue(newVal);\n };\n\n if (!allowEditing) {\n return (\n \n {value}\n \n );\n }\n\n return (\n \n );\n};\n\nexport const InlineSelectTextField = ({ value, setValue, items, allowEditing = true }: InlineSelectTextFieldProps) => {\n const setSelectedValue = (e: SelectChangeEvent) => {\n setValue(e.target.value);\n };\n\n if (!allowEditing) {\n const item = items.find((el) => el.key === value);\n return {item?.value};\n }\n\n return (\n \n {items.map((item) => {\n return (\n \n {item.value}\n \n );\n })}\n \n );\n};\n","import { useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box, ListItem, Typography } from '@mui/material';\n\nimport { VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { allVenueRegistrationStats } from 'store/selectors';\nimport { store } from 'store/store';\n\nimport { CalculationBackgroundImage } from './Calculations.BackgroundImage';\nimport { InfoButton } from './Helpers/Calculations.InfoButton';\nimport { InlineNumericTextField } from './Helpers/Calculations.InlineTextField';\nimport { CalculationProps, CustomizableValuesSMSCampaign } from './Helpers/Calculations.Interfaces';\nimport { EmphBoxNumeric, MEMBER_THRESHOLD, useLiveData } from './Helpers/Calculations.utils';\n\nconst DEFAULT_VALUES: CustomizableValuesSMSCampaign = {\n numOfMembers: MEMBER_THRESHOLD,\n averagePurchase: 100,\n recipientRatio: 33\n};\n\nconst calculateValues = ({ numOfMembers, averagePurchase, recipientRatio }: CustomizableValuesSMSCampaign) => {\n const recipients = Math.round(numOfMembers * (recipientRatio / 100));\n const revenueIncrease = averagePurchase * recipients;\n\n return { recipients, revenueIncrease };\n};\n\nexport const IncreasedRevenueBasedOnSMSCampaign: React.FC = ({ showItemTopBar }) => {\n const stats = allVenueRegistrationStats(store.getState());\n const members = stats.data.reduce((acc, ven) => acc + ven.totalCustomers, 0);\n\n const liveData = useLiveData(members);\n\n const [numOfMembers, setNumOfMembers] = useState(liveData ? members : DEFAULT_VALUES.numOfMembers);\n const [averagePurchase, setAveragePurchase] = useState(DEFAULT_VALUES.averagePurchase);\n const [recipientRatio, setRecipientRatio] = useState(DEFAULT_VALUES.recipientRatio);\n\n const { revenueIncrease } = calculateValues({\n numOfMembers,\n averagePurchase,\n recipientRatio\n });\n\n const editStr = liveData ? 'editingAllowed' : 'editingDisabled';\n\n const setValue = (val: string, key: keyof CustomizableValuesSMSCampaign) => {\n switch (key) {\n case 'numOfMembers':\n setNumOfMembers(parseInt(val, 10));\n break;\n case 'averagePurchase':\n setAveragePurchase(parseInt(val, 10));\n break;\n case 'recipientRatio':\n default:\n setRecipientRatio(parseInt(val, 10));\n break;\n }\n };\n\n return (\n \n \n {members >= MEMBER_THRESHOLD ? (\n \n {' '}\n {members}{' '}\n \n \n ) : (\n \n \n \n )}\n \n \n \n {' '}\n setValue(val, 'recipientRatio')}\n maxValue={100}\n allowEditing\n minValue={0}\n />\n %{' '}\n = MEMBER_THRESHOLD ? 'above120' : 'below120'\n }`}\n />{' '}\n kr\n {' '}\n setValue(val, 'averagePurchase')}\n allowEditing\n />{' '}\n kr.{' '}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { Box } from '@mui/material';\n\nexport const SideImage: React.FC<{ backgroundImagePath: string }> = ({ backgroundImagePath }) => {\n return (\n \n \n \n );\n};\n","import { Box } from '@mui/material';\n\nimport { CenteredFlexBox, FlexBox, VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { GRID_ITEM_TOP_BAR_HEIGHT } from 'views/Dashboard/Grid/ResponsiveGridLayout.TopBar';\n\nimport { InfoButton } from './Helpers/Calculations.InfoButton';\nimport { CalculationWrapperProps } from './Helpers/Calculations.Interfaces';\nimport { SideImage } from './Helpers/Calculations.SideImage';\n\nexport const CalculationSideImage: React.FC = ({\n showItemTopBar,\n image,\n calculationBox,\n titleTextBox,\n infoButtonContent\n}) => {\n const marginTopWrapper = showItemTopBar ? -GRID_ITEM_TOP_BAR_HEIGHT + 4 : 0;\n const titlePaddingTop = showItemTopBar ? 10 : 2;\n\n const wrapperBoxStyle = { mt: `${marginTopWrapper}px`, height: '100%' };\n\n return (\n \n \n \n {titleTextBox}\n {calculationBox}\n {infoButtonContent}\n \n \n );\n};\n","import { VenueCategories } from 'store/features/venueCategories/handlers';\nimport { venuesSelector } from 'store/selectors';\nimport { store } from 'store/store';\n\ntype URL = string;\n\nconst getRandomImage = (images: URL[]): URL => {\n return images[Math.floor(Math.random() * images.length)];\n};\n\nconst categoryToVisitImgMap: Record = {\n Pizzeria: ['guy-serving-coffee.webp', 'restaurant-pizzeria.webp'],\n Bar: ['guy-serving-coffee.webp'],\n BarRestaurant: ['guy-serving-coffee.webp', 'restaurant-general-2.webp'],\n Restaurant: ['guy-serving-coffee.webp', 'restaurant-general-2.webp', 'restaurant-general-3.webp'],\n ThaiRestaurant: ['guy-serving-coffee.webp', 'restaurant-general-2.webp'],\n IndianRestaurant: ['guy-serving-coffee.webp', 'restaurant-general-2.webp'],\n BurgerRestaurant: ['guy-serving-coffee.webp', 'restaurant-general-2.webp', 'restaurant-general-3.webp'],\n ItalianRestaurant: ['guy-serving-coffee.webp', 'restaurant-general-2.webp', 'restaurant-general-3.webp'],\n SushiRestaurant: ['guy-serving-coffee.webp', 'restaurant-general-2.webp'],\n FlowerShop: ['flower-shop-2.webp', 'flower-shop-3.webp'],\n PetStore: ['guy-serving-coffee.webp'],\n Cafe: ['guy-serving-coffee.webp'],\n BagelCafe: ['guy-serving-coffee.webp'],\n FishStore: ['guy-serving-coffee.webp'],\n MeatStore: ['guy-serving-coffee.webp'],\n YarnStore: ['clothes-store.webp'],\n DeliStore: ['guy-serving-coffee.webp'],\n FastFoodGrill: ['guy-serving-coffee.webp'],\n CandyStore: ['guy-serving-coffee.webp'],\n HealthyStore: ['beauty-allround.webp'],\n ClothingStore: ['clothes-store.webp', 'clothes-store-4.webp', 'clothes-store-5.webp'],\n Lifestyle: ['beauty-allround.webp'],\n BeautySalon: ['beauty-allround.webp'],\n IcecreamShop: ['guy-serving-coffee.webp'],\n FoodTruckHealthyFood: ['guy-serving-coffee.webp'],\n WineImporter: ['guy-serving-coffee.webp'],\n Hairdresser: ['hairdresser-barbershop.webp'],\n HairdresserBeauty: ['beauty-hairdresser.webp'],\n Barber: ['hairdresser-barbershop.webp'],\n Other: ['guy-serving-coffee.webp'],\n Default: ['guy-serving-coffee.webp']\n};\n\nconst categoryToSCImgMap: Record = {\n Pizzeria: ['woman-with-croissant.webp', 'restaurant-pizzeria-2.webp'],\n Bar: ['woman-with-croissant.webp'],\n BarRestaurant: ['woman-with-croissant.webp'],\n Restaurant: ['woman-with-croissant.webp', 'restaurant-general.webp'],\n ThaiRestaurant: ['woman-with-croissant.webp'],\n IndianRestaurant: ['woman-with-croissant.webp'],\n BurgerRestaurant: ['woman-with-croissant.webp'],\n ItalianRestaurant: ['woman-with-croissant.webp'],\n SushiRestaurant: ['woman-with-croissant.webp'],\n FlowerShop: ['flower-shop.webp'],\n PetStore: ['woman-with-croissant.webp'],\n Cafe: ['woman-with-croissant.webp'],\n BagelCafe: ['woman-with-croissant.webp'],\n FishStore: ['woman-with-croissant.webp'],\n MeatStore: ['woman-with-croissant.webp'],\n YarnStore: ['clothes-store-2.webp'],\n DeliStore: ['woman-with-croissant.webp'],\n FastFoodGrill: ['woman-with-croissant.webp'],\n CandyStore: ['woman-with-croissant.webp'],\n HealthyStore: ['beauty-salon.webp', 'store-general.webp'],\n ClothingStore: ['clothes-store-2.webp', 'store-general.webp', 'clothes-store-3.webp'],\n Lifestyle: ['beauty-salon.webp', 'store-general.webp'],\n BeautySalon: ['beauty-salon.webp', 'store-general.webp'],\n IcecreamShop: ['woman-with-croissant.webp', 'store-general.webp'],\n FoodTruckHealthyFood: ['woman-with-croissant.webp'],\n WineImporter: ['woman-with-croissant.webp', 'store-general.webp'],\n Hairdresser: ['barbershop.webp'],\n HairdresserBeauty: ['beauty-hairdresser-2.webp'],\n Barber: ['barbershop.webp'],\n Other: ['woman-with-croissant.webp', 'store-general.webp'],\n Default: ['woman-with-croissant.webp', 'store-general.webp']\n};\n\nexport const getImageUrl = (type: 'stampCard' | 'visit') => {\n const venues = venuesSelector(store.getState());\n const allCategories = venues.map((el) => el.category as keyof typeof VenueCategories);\n\n if (!allCategories.length) console.warn(`No venue categories found, using default image`);\n\n // Since we can only show 1 image in the portal, but have multiple venues, we select one category at random\n const venueCategory = allCategories[Math.floor(Math.random() * allCategories.length)];\n\n const name =\n type === 'stampCard'\n ? getRandomImage(categoryToSCImgMap[venueCategory || 'Default'])\n : getRandomImage(categoryToVisitImgMap[venueCategory || 'Default']);\n\n const folder = type === 'stampCard' ? 'stampCardCalculation' : 'visitCalculation';\n\n return `/static/images/widgets/${folder}/${name}`;\n};\n","import { useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box, ListItem, Typography } from '@mui/material';\n\nimport { allVenueRegistrationStats } from 'store/selectors';\nimport { store } from 'store/store';\n\nimport { CalculationSideImage } from './Calculation.SideImageCalclulation';\nimport { getImageUrl } from './Helpers/Calculations.GetImageUrl';\nimport { InlineNumericTextField } from './Helpers/Calculations.InlineTextField';\nimport { CalculationProps, CustomizableValuesStampCardCampaign } from './Helpers/Calculations.Interfaces';\nimport { EmphBoxNumeric, MEMBER_THRESHOLD, useLiveData } from './Helpers/Calculations.utils';\n\nconst DEFAULT_VALUES: CustomizableValuesStampCardCampaign = {\n numOfMembers: MEMBER_THRESHOLD,\n averagePurchase: 200,\n numOfPurchases: 1,\n timespan: 'Monthly'\n};\n\nconst calculateValues = ({\n numOfMembers,\n averagePurchase,\n numOfPurchases\n}: Omit) => {\n const revenue = numOfMembers * numOfPurchases * averagePurchase;\n\n const revenueIncrease = { '12': Math.round(revenue * 0.12), '18': Math.round(revenue * 0.18) };\n\n return revenueIncrease;\n};\n\nconst Calculation: React.FC<{ members: number }> = ({ members }) => {\n const liveData = useLiveData(members);\n\n const [numOfMembers, setNumOfMembers] = useState(liveData ? members : DEFAULT_VALUES.numOfMembers);\n const [averagePurchase, setAveragePurchase] = useState(DEFAULT_VALUES.averagePurchase);\n const [numOfPurchases, setNumOfPurchases] = useState(DEFAULT_VALUES.numOfPurchases);\n\n const revenueIncrease = calculateValues({ numOfMembers, averagePurchase, numOfPurchases });\n\n const setValue = (val: string, key: keyof CustomizableValuesStampCardCampaign) => {\n switch (key) {\n case 'numOfMembers':\n setNumOfMembers(parseInt(val, 10));\n break;\n case 'averagePurchase':\n setAveragePurchase(parseInt(val, 10));\n break;\n case 'numOfPurchases':\n default:\n setNumOfPurchases(parseInt(val, 10));\n }\n };\n\n return (\n \n \n {' '}\n 12-18%\n \n \n
\n \n {' '}\n \n - \n {' '}\n kr{' '}\n {' '}\n setValue(val, 'numOfMembers')}\n allowEditing\n minValue={120}\n />{' '}\n {' '}\n {' '}\n setValue(val, 'averagePurchase')}\n allowEditing\n />{' '}\n kr{' '}\n \n \n
\n );\n};\n\nexport const IncreasedRevenueBasedOnStampCardCampaign: React.FC = ({ showItemTopBar }) => {\n const stats = allVenueRegistrationStats(store.getState());\n const members = stats.data.reduce((acc, ven) => acc + ven.totalCustomers, 0);\n\n const editStr = useLiveData(members) ? 'editingAllowed' : 'editingDisabled';\n\n return (\n }\n infoButtonContent={\n \n \n \n \n \n \n \n\n \n \n \n \n \n\n \n *\n \n \n
\n \n \n *\n \n \n
\n \n \n }\n titleTextBox={\n \n \n \n }\n showItemTopBar={showItemTopBar}\n />\n );\n};\n","import { useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box, ListItem, Typography } from '@mui/material';\n\nimport { allVenueRegistrationStats } from 'store/selectors';\nimport { store } from 'store/store';\n\nimport { CalculationSideImage } from './Calculation.SideImageCalclulation';\nimport { getImageUrl } from './Helpers/Calculations.GetImageUrl';\nimport { InlineNumericTextField, InlineSelectTextField } from './Helpers/Calculations.InlineTextField';\nimport { CalculationProps, CustomizableValuesVisits, Timespan } from './Helpers/Calculations.Interfaces';\nimport { EmphBoxNumeric, MEMBER_THRESHOLD, useLiveData } from './Helpers/Calculations.utils';\n\nconst DEFAULT_VALUES: CustomizableValuesVisits = {\n numOfMembers: MEMBER_THRESHOLD,\n averagePurchase: 100,\n numOfPurchases: 1,\n margin: 60,\n timespan: 'Quarterly'\n};\n\nconst calculateValues = ({\n numOfMembers,\n margin,\n averagePurchase,\n numOfPurchases\n}: Omit) => {\n const revenueIncrease = averagePurchase * numOfMembers * numOfPurchases;\n\n const earning = Math.round(revenueIncrease * (margin / 100));\n\n return { revenueIncrease, earning };\n};\n\nconst Calculation: React.FC<{ members: number }> = ({ members }) => {\n const liveData = useLiveData(members);\n\n const [numOfMembers, setNumOfMembers] = useState(liveData ? members : DEFAULT_VALUES.numOfMembers);\n const [averagePurchase, setAveragePurchase] = useState(DEFAULT_VALUES.averagePurchase);\n const [numOfPurchases, setNumOfPurchases] = useState(DEFAULT_VALUES.numOfPurchases);\n const [margin, setMargin] = useState(DEFAULT_VALUES.margin);\n const [timespan, setTimespan] = useState(DEFAULT_VALUES.timespan);\n\n const { earning, revenueIncrease } = calculateValues({ numOfMembers, averagePurchase, margin, numOfPurchases });\n\n const timespanSelectItems = [\n {\n key: 'Quarterly',\n value: (\n \n )\n },\n {\n key: 'Yearly',\n value: (\n \n )\n }\n ];\n\n const setValue = (val: string, key: keyof CustomizableValuesVisits) => {\n switch (key) {\n case 'numOfMembers':\n setNumOfMembers(parseInt(val, 10));\n break;\n case 'averagePurchase':\n setAveragePurchase(parseInt(val, 10));\n break;\n case 'timespan':\n setTimespan(val as Timespan);\n break;\n case 'numOfPurchases':\n setNumOfPurchases(parseInt(val, 10));\n break;\n case 'margin':\n default:\n setMargin(parseFloat(val));\n }\n };\n\n return (\n \n \n {' '}\n setValue(e, 'numOfPurchases')}\n minValue={1}\n allowEditing\n emph={false}\n />{' '}\n 1 ? 'times' : 'time'\n }.${timespan}`}\n />{' '}\n setValue(e, 'timespan')}\n items={timespanSelectItems}\n />{' '}\n {' '}\n kr\n {' '}\n kr{' '}\n \n !\n \n
\n \n {' '}\n setValue(val, 'numOfMembers')}\n minValue={120}\n />{' '}\n {' '}\n setValue(val, 'averagePurchase')}\n allowEditing\n emph={false}\n />{' '}\n kr {' '}\n setValue(val, 'margin')}\n maxValue={100}\n allowEditing\n emph={false}\n />\n %.\n \n
\n );\n};\n\nexport const IncreasedRevenueBasedOnVisits: React.FC = ({ showItemTopBar }) => {\n const stats = allVenueRegistrationStats(store.getState());\n const members = stats.data.reduce((acc, ven) => acc + ven.totalCustomers, 0);\n\n const editStr = useLiveData(members) ? 'editingAllowed' : 'editingDisabled';\n\n return (\n }\n infoButtonContent={\n \n \n \n \n \n }\n titleTextBox={\n \n \n \n }\n showItemTopBar={showItemTopBar}\n />\n );\n};\n","import { useEffect, useState } from 'react';\nimport { I18n } from 'react-redux-i18n';\n\nimport { Refresh } from '@mui/icons-material';\nimport { Box, CircularProgress, IconButton, Tooltip, useTheme } from '@mui/material';\n\nimport { VerticalCenteredFlexBox, VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { useStampCardCampaignStatsContext } from 'views/Dashboard/Contexts/StampCardCampaignStatsContext/StampCardCampaignStatsContext';\nimport { GridItemTopBar } from 'views/Dashboard/Grid/ResponsiveGridLayout.TopBar';\nimport { GridItemKeys } from 'views/Dashboard/Interfaces/Dashboard.layout';\nimport { useDashboardJoyrideContext } from 'views/Dashboard/JoyrideIntroductions/Dashboard.Joyride.context';\nimport { introStepHome } from 'views/Home/JoyrideIntroduction/Main/Home.Joyride.Steps';\n\nimport { useGlobalSettingsContext } from '../../Contexts/GlobalSettingsContext/GlobalSettingContext';\nimport { useGridItemContext } from '../../Contexts/GridItemContext/GridItemContext';\n\nexport const RefreshStampCardDataButton = () => {\n const theme = useTheme();\n\n const { updateStats: updateStampCardStats } = useStampCardCampaignStatsContext();\n const [loading, setLoading] = useState(false);\n\n const handleClick = async () => {\n if (loading) return;\n\n setLoading(true);\n await updateStampCardStats();\n setLoading(false);\n };\n\n return (\n \n {loading && (\n \n \n \n )}\n {!loading && (\n \n \n \n \n \n )}\n \n );\n};\n\nexport const GridItemWrapper: React.FC<{\n children: React.ReactNode;\n layoutType: keyof typeof GridItemKeys;\n refreshStampCardStatsButton?: boolean;\n showItemTopBar?: boolean;\n}> = ({ layoutType, children, refreshStampCardStatsButton, showItemTopBar = true }) => {\n const { globalDragability, globalCloseability } = useGlobalSettingsContext();\n const { isRunning, stepIndex, setStepIndex } = useDashboardJoyrideContext();\n\n const { removeGridItem } = useGridItemContext();\n\n // We need to set the zIndex dynamically as we can't pass it into react-grid-layout as a prop\n useEffect(() => {\n setTimeout(() => {\n const resizeHandles = document.querySelectorAll('.react-resizable-handle') as NodeListOf;\n\n for (let i = 0; i < resizeHandles.length; i += 1) {\n resizeHandles[i].style.zIndex = '10';\n }\n }, 200);\n });\n\n const removeItem = (i: string) => {\n // Automatically continue to the next intro step if we are doing the walkthrough intro\n if (isRunning) {\n setStepIndex(stepIndex + 1);\n }\n\n removeGridItem(i);\n };\n\n const showTopBarInlineWithChartName =\n showItemTopBar && !globalCloseability && !globalDragability && !refreshStampCardStatsButton;\n\n const homepageIntroStep =\n window.location.href.includes('home') && layoutType === 'sendSMSCampaign' ? introStepHome(6) : '';\n\n return (\n \n {showItemTopBar && (\n : undefined\n }\n removeGridItem={removeItem}\n showTopBarInlineWithChartName={showTopBarInlineWithChartName}\n />\n )}\n {children}\n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { Typography, useTheme } from '@mui/material';\n\nimport { VerticalCenteredFlexBox } from 'generalComponents/BoxModifications';\nimport { useStampCardCampaignStatsContext } from 'views/Dashboard/Contexts/StampCardCampaignStatsContext/StampCardCampaignStatsContext';\n\nexport const NumberOfStampsAndStampCards = () => {\n const theme = useTheme();\n const { stats } = useStampCardCampaignStatsContext();\n\n const stamps = stats?.reduce((acc, curr) => acc + curr.totalVisits, 0) || 0;\n const stampCards = stats?.reduce((acc, curr) => acc + curr.totalClients, 0) || 0;\n\n return (\n \n \n \n \n \n );\n};\n","import { useEffect } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Button, Tooltip, Typography } from '@mui/material';\n\nimport { CenteredFlexBox } from 'generalComponents/BoxModifications';\nimport { UrlShortener } from 'generalComponents/UrlShortener/UrlShortener';\nimport { SMSBox } from 'views/IntelliSms/SMSBox';\nimport { SMSBoxFilters } from 'views/IntelliSms/dialogs/Filters/Filters';\nimport { INTELLI_SMS_BASE_Z_INDEX } from 'views/IntelliSms/dialogs/Filters/interfaces';\nimport { SavedSuggestionsDialog } from 'views/IntelliSms/dialogs/SavedSuggestions';\nimport { SMSCampaignSummary } from 'views/IntelliSms/dialogs/Summary/Summary';\nimport { useThreeBoxes } from 'views/IntelliSms/helperHooks/useThreeBoxes';\nimport { ActiveBoxes } from 'views/IntelliSms/helpers/interfaces';\nimport { ScheduleCalendar } from 'views/IntelliSms/newCampaign/NewCampaign.ScheduleCalendar';\nimport { NewCampaignMenu } from 'views/IntelliSms/newCampaign/NewCampaign.menu';\n\nexport const SendSMSCampaign = () => {\n const {\n suggestionsLoading,\n messageBoxOpacity,\n box1State,\n updateBox1State,\n debounced,\n switchActiveBox,\n activeBox,\n editTextDialogNext,\n loadSmsCampaignWidget,\n menuArgs,\n savedSuggestionsOpen,\n closeSavedSuggestionsDialog,\n urlShortenerDialogOpen,\n closeUrlShortenerDialog,\n openMenu\n } = useThreeBoxes(false);\n\n useEffect(() => {\n loadSmsCampaignWidget();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n\n \n\n \n }>\n \n \n \n \n \n \n \n \n );\n};\n","import { Card } from '@mui/material';\n\nimport styled from '@emotion/styled';\n\nexport const StyledGridItem = styled(Card)(\n () => `\n backgroundColor: #ffffff;\n padding: 0px;\n margin: 0px;\n cursor: pointer;\n`\n);\n\nexport const StyledGridItemHighlighted = styled(Card)(\n () => `\n backgroundColor: #ffffff;\n padding: 0px;\n margin: 0px;\n cursor: pointer;\n box-shadow: 0px 9px 16px #1bf4032e, 0px 2px 2px #1bf4032e;\n border: 1px solid #1bf4032e;\n`\n);\n","import { ChartSpecification } from '../Widgets/MongoDBWidgets/ChartSpecification/ChartSpecification';\nimport { TimeBasedCharts } from '../Widgets/MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.names';\nimport { ChartWithSettings } from '../Widgets/MongoDBWidgets/MongoDBWidgets.ChartWithSettings';\nimport { GenerateChartFromContext } from '../Widgets/MongoDBWidgets/MongoDBWidgets.GenerateChartFromContext.';\nimport { IncreasedRevenueBasedOnSMSCampaign } from '../Widgets/PayAttWidgets/Calculations/IncreasedRevenueBasedOnSMSCampaign';\nimport { IncreasedRevenueBasedOnStampCardCampaign } from '../Widgets/PayAttWidgets/Calculations/IncreasedRevenueBasedOnStampCardCampaign';\nimport { IncreasedRevenueBasedOnVisits } from '../Widgets/PayAttWidgets/Calculations/IncreasedRevenueBasedOnVisits';\nimport { GridItemWrapper } from '../Widgets/PayAttWidgets/PayAttWidgets.GridItemWrapper';\nimport { PayAttWidgetNames } from '../Widgets/PayAttWidgets/PayAttWidgets.names';\nimport { NumberOfStampsAndStampCards } from '../Widgets/PayAttWidgets/Sentences/NumberOfStampsAndStampCards';\nimport { SendSMSCampaign } from '../Widgets/PayAttWidgets/SmsCampaign/SendSMSCampaign';\nimport { ChartItemProps, CreateGridItemProps, CreatePayAttComponentProps } from './ResponsiveGridLayout.interfaces';\nimport { StyledGridItem, StyledGridItemHighlighted } from './Styling/StyledGridItems';\n\nconst CreatePayAttComponent = ({ gridItemLayout, showItemTopBar = true }: CreatePayAttComponentProps) => {\n const gridData = {\n key: gridItemLayout.i,\n className: 'react-grid-item grid-item',\n 'data-grid': gridItemLayout,\n 'data-grid-id': gridItemLayout.i\n };\n\n if (gridItemLayout.layoutType === PayAttWidgetNames.sendSMSCampaign) {\n return (\n \n \n \n \n \n );\n }\n\n if (gridItemLayout.layoutType === PayAttWidgetNames.numberOfStampsAndStampCardsSentence) {\n return (\n \n \n \n \n \n );\n }\n\n const component = (() => {\n switch (gridItemLayout.layoutType) {\n case PayAttWidgetNames.increasedRevenueBasedOnSMSCampaign:\n return ;\n case PayAttWidgetNames.increasedRevenueBasedOnVisits:\n return ;\n case PayAttWidgetNames.increasedRevenueBasedOnStampCardCampaign:\n return ;\n default:\n console.error(\n `No PayAtt component found for the layoutType ${gridItemLayout.layoutType}. Available widgets are: ${PayAttWidgetNames}`\n );\n return null;\n }\n })();\n\n return (\n \n \n {component || }\n \n \n );\n};\n\nconst ChartItem = ({ gridItemLayout, chart, chartStructure }: ChartItemProps) => {\n return (\n \n \n \n );\n};\n\nexport const CreateGridItem = ({ gridItemLayout, venueIds, showItemTopBar }: CreateGridItemProps) => {\n const layoutType = gridItemLayout.layoutType as keyof typeof ChartSpecification;\n\n if (Object.keys(PayAttWidgetNames).includes(layoutType)) {\n return CreatePayAttComponent({ gridItemLayout, venueIds, showItemTopBar });\n }\n\n if (Object.keys(TimeBasedCharts).includes(layoutType)) {\n return ChartItem({\n gridItemLayout,\n chartStructure: ChartSpecification[layoutType],\n chart: \n });\n }\n\n return ChartItem({\n gridItemLayout,\n chartStructure: ChartSpecification[layoutType],\n chart: \n });\n};\n","import { I18n } from 'react-redux-i18n';\nimport { toast } from 'react-toastify';\n\nimport { DASHBOARD_VALID_NAME_REG_EXP, MAX_NUMBER_OF_DASHBOARDS } from 'api/dashboard/interface';\nimport { isPayAttError } from 'errorHandling/payattError';\nimport {\n createDashboard as createDashboardAction,\n deleteDashboard as deleteDashboardAction,\n updateDashboard,\n updateDashboardName\n} from 'store/features/dashboard/actions';\nimport { DashboardDoc } from 'store/features/dashboard/handlers';\n\nimport {\n CreateDashboardLayoutProps,\n DeleteDashboardLayoutProps,\n SaveDashboardLayoutProps,\n SaveDashboardNameProps\n} from '../Interfaces/Dashboard.props';\n\nconst successToast = (message: string) => {\n toast.success(message, { autoClose: 5000 });\n};\n\nconst errorToast = (message: string) => {\n toast.error(message, { autoClose: 10000 });\n};\n\nexport const saveDashboard = async ({\n gridItems,\n layout,\n dashboard,\n breakpoint,\n dispatch\n}: SaveDashboardLayoutProps) => {\n const allItems = gridItems.map((el) => {\n const item = layout.find((el2) => el2.i === el.i);\n if (item) return { ...el, ...item };\n return { ...el };\n });\n\n const { payload } = await dispatch(updateDashboard({ id: dashboard.id, layout: allItems, breakpoint }));\n\n if (!payload || isPayAttError(payload)) {\n return errorToast(I18n.t('dashboard.toasts.dashboardNotUpdated'));\n }\n\n if (payload.status >= 200 || payload.status < 300) {\n return successToast(I18n.t('dashboard.toasts.dashboardUpdated', { name: dashboard.name }));\n }\n\n errorToast(I18n.t('dashboard.toasts.dashboardNotUpdated'));\n};\n\nexport const saveDashboardName = async ({ dashboardId, name, dispatch }: SaveDashboardNameProps): Promise => {\n if (!DASHBOARD_VALID_NAME_REG_EXP.test(name)) {\n errorToast(I18n.t('dashboard.toasts.invalidDashboardName', { name }));\n return false;\n }\n\n const response = await dispatch(updateDashboardName({ id: dashboardId, name }));\n\n const status = (response.payload as any).status as number;\n if (status >= 200 || status < 300) {\n successToast(I18n.t('dashboard.toasts.dashboardNameUpdated', { name }));\n return true;\n }\n\n errorToast(I18n.t('dashboard.toasts.dashboardNameNotUpdated'));\n return false;\n};\n\nexport const createDashboard = async ({\n name,\n breakpoint,\n layout,\n dispatch\n}: CreateDashboardLayoutProps): Promise => {\n try {\n const { payload } = await dispatch(createDashboardAction({ name, layout, breakpoint }));\n\n if (isPayAttError(payload)) {\n if (payload.status === 409) {\n errorToast(\n I18n.t('dashboard.toasts.maximumNumberOfDashboardsReached', {\n maximumNumberOfDashboards: MAX_NUMBER_OF_DASHBOARDS\n })\n );\n } else {\n throw new Error('error');\n }\n } else if (payload) {\n successToast(I18n.t('dashboard.toasts.dashboardCreated', { name }));\n return payload;\n } else {\n errorToast(I18n.t('dashboard.toasts.unknownError'));\n }\n } catch (err) {\n errorToast(I18n.t('dashboard.toasts.dashboardNotCreated'));\n }\n};\n\nexport const deleteDashboard = async ({ id, name, dispatch }: DeleteDashboardLayoutProps): Promise => {\n try {\n const { payload } = await dispatch(deleteDashboardAction({ id }));\n\n if (!payload) throw new Error('Unknown error');\n\n if (!payload || isPayAttError(payload)) {\n errorToast(I18n.t('dashboard.toasts.dashboardNotDeleted', { name }));\n return false;\n }\n\n if (payload.status >= 200 || payload.status < 300) {\n successToast(I18n.t('dashboard.toasts.dashboardDeleted', { name }));\n return true;\n }\n\n throw Error('Unknown error');\n } catch (err) {\n errorToast(I18n.t('dashboard.toasts.unknownError'));\n return false;\n }\n};\n","import React, { useContext, useEffect, useState } from 'react';\n\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport { SidebarContext } from 'contexts/SidebarContext';\n\nconst EMPTY_DOM_RECT = {\n height: 0,\n width: 0,\n x: 0,\n y: 0,\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n toJSON: () => {\n // do nothing\n }\n};\n\nexport const useContainerRect = (containerRef: React.RefObject, initialRect?: DOMRect) => {\n const [rect, setRect] = useState(initialRect || EMPTY_DOM_RECT);\n const { toggleSidebar } = useContext(SidebarContext);\n\n const handleResizeDebounce = useDebouncedCallback(() => {\n if (containerRef.current) {\n const { width, height } = containerRef.current.getBoundingClientRect();\n\n if (width !== rect?.width || height !== rect?.height) {\n setRect(containerRef.current.getBoundingClientRect());\n }\n }\n }, 500);\n\n // ###### First render, start an observer on the resize event. We need this to re-calculate the container size\n useEffect(() => {\n let observer: ResizeObserver;\n let timer: NodeJS.Timeout;\n\n const startObserver = (timeout: number, count: number, max: number) => {\n if (timer) clearTimeout(timer);\n if (count > max) return;\n\n if (containerRef.current) {\n observer = new ResizeObserver(() => {\n handleResizeDebounce();\n // handleResize();\n });\n observer.observe(containerRef.current);\n } else {\n timer = setTimeout(() => {\n startObserver(timeout, count + 1, max);\n }, timeout);\n }\n };\n\n timer = setTimeout(() => {\n startObserver(500, 1, 20);\n }, 500);\n\n return () => {\n if (timer) clearTimeout(100);\n if (observer) observer.disconnect();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // ###### Create a delayed resize event to update the container width when the sidebar is toggled\n useEffect(() => {\n const timer = setTimeout(() => {\n if (containerRef?.current) {\n setRect(containerRef.current.getBoundingClientRect());\n window.dispatchEvent(new Event('resize'));\n }\n }, 500);\n\n return () => clearTimeout(timer);\n }, [containerRef, toggleSidebar]);\n\n return rect;\n};\n","import { delay } from 'utils/utils';\n\nimport { GRID_MARGIN, GRID_ROW_HEIGHT } from '../Interfaces/Dashboard.constants';\n\nexport const cellStrikeColor = '#cccccc31';\nexport const cellStrikeColorEditing = '#cccccc';\n\nexport const addCancelGridDragabilityToPopups = async (delayTime?: number) => {\n // Wait for backdrop to load\n await delay(delayTime || 500);\n\n const backdrops = document.querySelectorAll(\n '.MuiPopover-root:not(.cancelGridDragability), .MuiPickersPopper-root:not(.cancelGridDragability)'\n );\n backdrops.forEach((backdrop) => backdrop.classList.add('cancelGridDragability'));\n};\n\nexport const calculateGridSize = ({ cols, containerWidth }: { cols: number; containerWidth: number }) => {\n const marginSlotsCount = cols - 1;\n const totalHorizontalMargin = marginSlotsCount * GRID_MARGIN[0];\n const freeSpace = containerWidth - totalHorizontalMargin;\n\n return {\n width: freeSpace / cols,\n height: GRID_ROW_HEIGHT\n };\n};\n\nexport const generateGridBackground = ({\n cellSize,\n cols,\n gridWidth,\n cellStrokeColor,\n margin = GRID_MARGIN\n}: {\n cellSize: { width: number; height: number };\n cols: number;\n gridWidth: number;\n cellStrokeColor: string;\n margin?: [number, number];\n}) => {\n const XMLNS = 'http://www.w3.org/2000/svg';\n const [horizontalMargin, verticalMargin] = margin;\n const rowHeight = cellSize.height + verticalMargin;\n\n const y = 0;\n const w = cellSize.width;\n const h = cellSize.height;\n\n const rectangles: string[] = [];\n\n for (let i = 0; i < cols; i += 1) {\n const x = i * (cellSize.width + horizontalMargin);\n rectangles.push(\n ``\n );\n }\n\n const svg = [``, ...rectangles, ``].join('');\n\n return `url(\"data:image/svg+xml;utf8,${encodeURIComponent(svg)}\")`;\n};\n","import { DashboardBreakpoint } from './Dashboard.breakpoints';\n\nexport const GRID_MARGIN: [number, number] = [10, 10]; // [width, height]\n\nexport const GRID_ROW_HEIGHT = 30;\n\nexport const RESPONSIVE_COLUMNS: { [key in DashboardBreakpoint]: number } = { xl: 30, lg: 26, md: 20, sm: 16, xs: 10 };\n\nexport const DefaultGridSettings = { globalDragability: true, globalResizability: true, globalCloseability: true };\n","import { Step } from 'react-joyride';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Lightbulb } from '@mui/icons-material';\nimport { Box } from '@mui/material';\n\nimport { CreateIntroStep, DashboardMainIntroStepLength } from 'Joyride/JoyridePayAtt.constants';\n\nimport { CenteredFlexBox } from 'generalComponents/BoxModifications';\n\ntype DashboardIntroSteps = Tuple;\n\nconst createIntroStep = (count: number, step?: CreateIntroStep): Step => {\n return {\n ...step,\n disableBeacon: true,\n disableScrolling: step?.disableScrolling || true,\n disableScrollParentFix: step?.disableScrollParentFix || false,\n target: `.dashboard-intro-step-${count}`,\n title:\n step?.title === null\n ? undefined\n : step?.title || ,\n content:\n step?.content === null\n ? undefined\n : step?.content || \n };\n};\n\nexport const dashboardIntroSteps: DashboardIntroSteps = [\n createIntroStep(1, {\n placement: 'center',\n spotlightPadding: 25,\n styles: { tooltip: { width: '800px', maxWidth: '80%' }, tooltipContent: { textAlign: 'left' } },\n content: (\n \n \n \n )\n }),\n createIntroStep(2, { placement: 'right', styles: { tooltipContent: { textAlign: 'left' } } }),\n createIntroStep(3, {\n placement: 'right',\n styles: { tooltipContent: { textAlign: 'left' } },\n spotlightClicks: true,\n content: \n }),\n createIntroStep(4, { placement: 'right', styles: { tooltipContent: { textAlign: 'left' } } }),\n createIntroStep(5, {\n placement: 'right',\n styles: { tooltipContent: { textAlign: 'left' } },\n spotlightPadding: 0,\n spotlightClicks: true,\n content: \n }),\n createIntroStep(6, {\n placement: 'right',\n spotlightPadding: 0,\n spotlightClicks: true,\n styles: { tooltipContent: { textAlign: 'left' } },\n content: \n }),\n createIntroStep(7, {\n placement: 'right',\n styles: { tooltipContent: { textAlign: 'left' } },\n content: \n }),\n createIntroStep(8, {\n placement: 'right',\n styles: { tooltipContent: { textAlign: 'left' }, options: { width: '500px' } },\n content: \n }),\n createIntroStep(9, {\n placement: 'right',\n styles: { tooltipContent: { textAlign: 'left' } },\n content: \n }),\n createIntroStep(10, { placement: 'right', styles: { tooltipContent: { textAlign: 'left' } } }),\n createIntroStep(11, {\n placement: 'right',\n styles: { tooltipContent: { textAlign: 'left' } },\n spotlightClicks: true,\n spotlightPadding: 0,\n content: \n }),\n createIntroStep(12, {\n placement: 'left',\n styles: { tooltipContent: { textAlign: 'left' } },\n content: (\n \n \n \n \n \n \n )\n }),\n createIntroStep(13, {\n placement: 'center',\n styles: { tooltipContent: { textAlign: 'left' } },\n content: \n })\n];\n\n// Start at 1, just like JoyRide step array\nexport const introStepDashboard = (val: number) => {\n const { target } = dashboardIntroSteps[val - 1];\n\n if (typeof target === 'string') return target.substring(1);\n\n throw new Error('Cannot call introStepDashboard on a step with a target set to JSX.Element');\n};\n","import { createContext, useCallback, useContext, useMemo, useState } from 'react';\nimport { ACTIONS, CallBackProps, EVENTS, STATUS } from 'react-joyride';\n\ninterface DashboardJoyrideContext {\n stepIndex: number;\n setStepIndex: React.Dispatch>;\n isRunning: boolean;\n setIsRunning: React.Dispatch>;\n refreshTooltip: (timeout?: number) => void;\n handleJoyrideCallback: (data: CallBackProps) => void;\n openDashboardsMenu: boolean;\n openGlobalSettingsMenu: boolean;\n openSaveMenu: boolean;\n}\n\nconst refreshTooltip = (timeout?: number) => {\n const time = timeout || 0;\n setTimeout(() => window.dispatchEvent(new Event('resize')), time);\n};\n\nexport const DashboardJoyrideContext = createContext(null);\nexport const DashboardJoyrideContextProvider: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const [stepIndex, setStepIndex] = useState(0);\n const [isRunning, setIsRunning] = useState(false);\n\n const [openDashboardsMenu, setOpenDashboardsMenu] = useState(false);\n const [openGlobalSettingsMenu, setOpenGlobalSettingsMenu] = useState(false);\n const [openSaveMenu, setOpenSaveMenu] = useState(false);\n\n const handleJoyrideCallback = useCallback(async (data: CallBackProps) => {\n const { action, index, type, status } = data;\n\n if (EVENTS.STEP_AFTER === type) {\n if (ACTIONS.NEXT === action) {\n // Programmatically advance index after menu has opened\n if (index === 1) return setOpenDashboardsMenu(true);\n\n if (index === 2) setOpenDashboardsMenu(false);\n\n // Programmatically advance index after menu has opened\n if (index === 3) return setOpenGlobalSettingsMenu(true);\n\n if (index === 9) setOpenGlobalSettingsMenu(false);\n\n // Programmatically advance index after menu has opened\n if (index === 10) return setOpenSaveMenu(true);\n\n if (index === 11) setOpenSaveMenu(false);\n }\n\n if (ACTIONS.PREV === action) {\n if (index === 2) setOpenDashboardsMenu(false);\n\n if (index === 3) {\n // The function listening to the variable openDashboardMenu advances the index with 1, hence we must set it to be 1 less than what we want\n setStepIndex(1);\n return setOpenDashboardsMenu(true);\n }\n\n if (index === 4) setOpenGlobalSettingsMenu(false);\n\n if (index === 10) return setStepIndex(3);\n\n if (index === 11) setOpenSaveMenu(false);\n\n if (index === 12) {\n // The function listening to the variable openSaveMenu advances the index with 1, hence we must set it to be 1 less than what we want\n setStepIndex(10);\n return setOpenSaveMenu(true);\n }\n }\n }\n\n // Handle what to do when the tour is finished or skipped:\n if ([STATUS.FINISHED, STATUS.SKIPPED].includes(status as any)) {\n // Need to set our running state to false, so we can restart if we click start again.\n setIsRunning(false);\n setStepIndex(0);\n return;\n }\n\n // Handle what to do when a Joyride button is clicked (eg 'Next', close, 'Back', etc), or if a Joyride button is clicked and the target for the next step doesn't exist.\n if ([EVENTS.STEP_AFTER, EVENTS.TARGET_NOT_FOUND].includes(type as any)) {\n const newIndex = index + (action === ACTIONS.PREV ? -1 : 1);\n setStepIndex(newIndex);\n }\n }, []);\n\n const value = useMemo(\n () => ({\n stepIndex,\n setStepIndex,\n isRunning,\n setIsRunning,\n refreshTooltip,\n handleJoyrideCallback,\n openDashboardsMenu,\n openGlobalSettingsMenu,\n openSaveMenu\n }),\n [stepIndex, isRunning, handleJoyrideCallback, openDashboardsMenu, openGlobalSettingsMenu, openSaveMenu]\n );\n\n return {children};\n};\n\nexport const useDashboardJoyrideContext = () => {\n const dashboardJoyrideContext = useContext(DashboardJoyrideContext);\n\n if (!dashboardJoyrideContext) {\n throw new Error('No DashboardJoyrideContext.Provider found when calling useDashboardJoyrideContext');\n }\n\n return dashboardJoyrideContext;\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { InfoOutlined } from '@mui/icons-material';\nimport { Box, Tooltip, Typography, useTheme } from '@mui/material';\n\nimport { CenteredFlexBox, FlexBox, FullDivider } from 'generalComponents/BoxModifications';\nimport { getTextWidth } from 'utils/utils';\nimport { introStepHomeSettings } from 'views/Home/JoyrideIntroduction/Settings/Home.JoyrideWidgetMenu.Steps';\n\nexport const HomepageSettingsTitle = () => {\n const theme = useTheme();\n\n return (\n \n \n \n \n \n \n\n \n }>\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport const ChartSettingsFilterTitle: React.FC<{ name: string | undefined }> = ({ name }) => {\n const theme = useTheme();\n\n const textWidth = name\n ? getTextWidth(name, `${theme.typography.h3.fontSize}px ${theme.typography.h3.fontFamily}`)\n : -1;\n\n const nameComponent = () => (\n \n {name || }\n \n );\n\n const text = () => {\n return textWidth > 330 ? (\n \n {nameComponent()}\n \n ) : (\n nameComponent()\n );\n };\n\n return (\n \n {text()}\n \n \n );\n};\n\nexport const HomepageGeneralTitle = () => {\n return (\n \n \n \n \n \n );\n};\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Button } from '@mui/material';\n\nimport { FlexBox, FullDivider } from 'generalComponents/BoxModifications';\nimport { introStepHomeSettings } from 'views/Home/JoyrideIntroduction/Settings/Home.JoyrideWidgetMenu.Steps';\nimport { INTRO_WIDGET_MENU_CLASS_NAMES } from 'views/Home/JoyrideIntroduction/Settings/Home.JoyrideWidgetMenu.context';\n\nexport const ApplySettingsButton: React.FC<{ closeMenu: (apply: boolean) => void; localSettingsMenu?: boolean }> = ({\n closeMenu,\n localSettingsMenu\n}) => {\n return (\n <>\n {localSettingsMenu && }\n \n closeMenu(true)}>\n \n \n \n \n );\n};\n","import React from 'react';\nimport { Translate, TranslateProps } from 'react-redux-i18n';\n\nimport { Box, ListItem, ListItemProps, Tooltip, Typography, TypographyProps } from '@mui/material';\n\nimport { VerticalFlexBox } from 'generalComponents/BoxModifications';\n\nexport const TitleText: React.FC<{\n title: string;\n typographyProps?: TypographyProps;\n translateProps?: Partial;\n}> = ({ title, typographyProps = { variant: 'h4' }, translateProps = {} }) => {\n const { variant, ...rest } = typographyProps;\n\n return (\n \n \n \n );\n};\n\nexport const FilterRow: React.FC<{\n title?: string;\n typographyProps?: TypographyProps;\n translateProps?: Partial;\n tooltip?: string;\n listItemProps?: ListItemProps;\n children?: React.ReactNode;\n}> = ({ title, typographyProps, translateProps, tooltip, listItemProps, children }) => {\n const { sx: listItemSx, ...listItemRest } = listItemProps || {};\n\n const titleWithTooltip = () => {\n if (!title) return null;\n\n if (tooltip) {\n return (\n } placement=\"top\">\n \n \n \n \n );\n }\n\n return ;\n };\n\n return (\n \n \n {titleWithTooltip()}\n {children}\n \n \n );\n};\n","import React from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Container, Typography } from '@mui/material';\n\nimport { CenteredFlexBox } from 'generalComponents/BoxModifications';\n\nexport const NoFilterSettings = () => {\n return (\n \n \n \n \n \n \n \n );\n};\n","import { useEffect, useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box } from '@mui/material';\nimport { DatePicker, LocalizationProvider } from '@mui/x-date-pickers';\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\nimport { svSE } from '@mui/x-date-pickers/locales';\n\nimport { FlexBox, VerticalFlexBox } from 'generalComponents/BoxModifications';\n\nimport { addCancelGridDragabilityToPopups } from '../../../../../Grid/ResponsiveGridLayout.utils';\nimport { MAX_RANGE_IN_DAYS } from './DateSelector.constants';\nimport { newDateZeroSecond } from './DateSelector.helpers';\nimport { DateRangeProps, Errors } from './DateSelector.interfaces';\n\nexport const DateRangePicker: React.FC = ({\n startDate,\n setStartDate,\n endDate,\n setEndDate,\n disabled: disabledProp = false,\n maxRangeInDays = MAX_RANGE_IN_DAYS\n}) => {\n const [error, setError] = useState(Errors.Nothing);\n const [startDateInner, setStartDateInner] = useState(startDate);\n const [endDateInner, setEndDateInner] = useState(endDate);\n\n const getDayDiff = (start: Date, end: Date): number => {\n const dayDiff = (end.getTime() - start.getTime()) / 1000 / 60 / 60 / 24;\n\n return dayDiff;\n };\n\n useEffect(() => {\n setStartDateInner(startDate);\n }, [startDate]);\n\n useEffect(() => {\n setEndDateInner(endDate);\n }, [endDate]);\n\n const today = newDateZeroSecond();\n\n const shouldDisableStartDate = (start: Date): boolean => {\n return start.getTime() > endDate.getTime();\n };\n\n const shouldDisableEndDate = (end: Date): boolean => {\n return end.getTime() > today.getTime() || end.getTime() < startDate.getTime();\n };\n\n useEffect(() => {\n if (endDateInner) {\n if (getDayDiff(startDateInner, endDateInner) <= maxRangeInDays) {\n setStartDate(startDateInner);\n setEndDate(endDateInner);\n setError(Errors.Nothing);\n } else {\n setError(Errors.MaxLength);\n }\n } else {\n setStartDate(startDateInner);\n }\n }, [startDateInner, endDateInner, maxRangeInDays, setStartDate, setEndDate]);\n\n const DatePickerStyle = {\n width: '200px',\n '.MuiInputBase-root': {\n border: error === Errors.Nothing ? 'none' : '1px solid red'\n }\n };\n\n const startDateSelector = () => (\n }\n onChange={(value) => {\n if (value) setStartDateInner(value);\n }}\n format=\"yyyy/MM/dd\"\n value={startDateInner}\n shouldDisableDate={shouldDisableStartDate}\n disabled={disabledProp}\n onError={(err) => {\n console.error('error in datePicker', err);\n }}\n onOpen={() => addCancelGridDragabilityToPopups()}\n />\n );\n\n const endDateSelector = () => (\n }\n onChange={(value) => {\n if (value) setEndDateInner(value);\n }}\n shouldDisableDate={shouldDisableEndDate}\n format=\"yyyy/MM/dd\"\n value={endDateInner}\n disabled={disabledProp}\n onError={(err) => {\n console.error('error in datePicker', err);\n }}\n onOpen={() => addCancelGridDragabilityToPopups()}\n />\n );\n\n return (\n \n \n \n {startDateSelector()}\n {endDateSelector()}\n \n \n {error !== Errors.Nothing && (\n \n \n \n )}\n \n );\n};\n","import { useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Button, Checkbox, Typography } from '@mui/material';\n\nimport { introStepHomeSettings } from 'views/Home/JoyrideIntroduction/Settings/Home.JoyrideWidgetMenu.Steps';\n\nimport { newDateZeroSecond, newForeverStartDate } from './DateSelector.helpers';\nimport { ForeverButtonProps } from './DateSelector.interfaces';\n\nexport const ForeverButton: React.FC = ({\n checked,\n setChecked,\n startDate,\n setStartDate,\n endDate,\n setEndDate,\n setTrailingTimeFrame\n}) => {\n const [oldStartDate] = useState(startDate);\n const [oldEndDate] = useState(endDate);\n\n const onClick = () => {\n if (!checked) {\n setStartDate(newForeverStartDate());\n setEndDate(newDateZeroSecond());\n\n // When selecting to show data from all time, we should remove the trailing time frame settings and stick to\n // normal dates\n setTrailingTimeFrame(undefined);\n } else {\n setStartDate(oldStartDate);\n setEndDate(oldEndDate);\n }\n\n setChecked(!checked);\n };\n\n return (\n \n \n \n \n \n \n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { MenuItem, Select } from '@mui/material';\n\nimport { CenteredFlexBox } from 'generalComponents/BoxModifications';\n\nimport { addCancelGridDragabilityToPopups } from '../../../../../Grid/ResponsiveGridLayout.utils';\nimport { getStartDateFromValAndUnit, getTimeFrameRange, newDateZeroSecond } from './DateSelector.helpers';\nimport { TrailingDateRangeProps, UnitValues, unitRange } from './DateSelector.interfaces';\n\nexport const TrailingDateRangePicker: React.FC = ({\n trailingTimeFrame,\n setTrailingTimeFrame,\n setStartDate,\n setEndDate,\n disabled = false\n}) => {\n const [unit, setUnit] = useState(trailingTimeFrame.unit);\n const [selectedValue, setSelectedValue] = useState(trailingTimeFrame.value);\n const [valueOptions, setValueOptions] = useState(getTimeFrameRange(trailingTimeFrame.unit));\n\n const [firstLoad, setFirstLoad] = useState(2);\n\n const setNewDates = useCallback(() => {\n if (!valueOptions.includes(selectedValue)) return;\n\n setStartDate(getStartDateFromValAndUnit(unit, selectedValue));\n setEndDate(newDateZeroSecond());\n }, [selectedValue, setEndDate, setStartDate, unit, valueOptions]);\n\n const checkFirstLoad = () => {\n if (firstLoad > 0) {\n setFirstLoad((el) => el - 1);\n return true;\n }\n\n return false;\n };\n\n useEffect(() => {\n if (checkFirstLoad()) return;\n\n setValueOptions(getTimeFrameRange(unit));\n setNewDates();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [unit]);\n\n useEffect(() => {\n if (checkFirstLoad()) return;\n\n if (!valueOptions.includes(selectedValue)) return setSelectedValue(valueOptions[0]);\n\n setTrailingTimeFrame({ unit, value: selectedValue });\n setNewDates();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedValue, unit, valueOptions]);\n\n return (\n \n addCancelGridDragabilityToPopups()}\n onChange={(e) => setSelectedValue(+e.target.value)}>\n {valueOptions.map((el) => (\n \n {el}\n \n ))}\n \n addCancelGridDragabilityToPopups()}\n onChange={(e) => setUnit(e.target.value as UnitValues)}>\n {unitRange.map((el) => (\n \n \n \n ))}\n \n \n );\n};\n","import { useEffect } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Button } from '@mui/material';\n\nimport { introStepHomeSettings } from 'views/Home/JoyrideIntroduction/Settings/Home.JoyrideWidgetMenu.Steps';\n\nimport { DateRangePicker } from './DateSelector.DateRangePicker';\nimport { ForeverButton } from './DateSelector.ForeverButton';\nimport { TrailingDateRangePicker } from './DateSelector.TrailingDateRangePicker';\nimport { calculateTrailingTimeFrame, getStartDateFromValAndUnit } from './DateSelector.helpers';\nimport { SelectTypeOfDateRangePickerProps } from './DateSelector.interfaces';\n\nexport const SelectTypeOfDateRangePicker: React.FC = ({\n trailingTimeFrame,\n setTrailingTimeFrame,\n showTrailingTimeSelector,\n showDatePickers,\n showForeverButton,\n startDate,\n setStartDate,\n forever,\n setForever,\n ...rest\n}) => {\n const onClick = () => {\n if (typeof trailingTimeFrame === 'undefined') {\n setTrailingTimeFrame(calculateTrailingTimeFrame(startDate));\n } else {\n setTrailingTimeFrame(undefined);\n }\n };\n\n const data: JSX.Element[] = [];\n\n if (showForeverButton) {\n data.push(\n \n );\n }\n\n if (showDatePickers && !trailingTimeFrame) {\n data.push();\n }\n\n if (showTrailingTimeSelector && trailingTimeFrame) {\n data.push(\n \n );\n }\n\n if (showDatePickers && showTrailingTimeSelector) {\n data.push(\n \n );\n }\n\n useEffect(() => {\n if (!forever && showTrailingTimeSelector && trailingTimeFrame) {\n const newTrailingTimeFrame = calculateTrailingTimeFrame(startDate);\n const startDateFromTrailingTimeFrame = getStartDateFromValAndUnit(\n newTrailingTimeFrame.unit,\n newTrailingTimeFrame.value\n );\n\n if (startDateFromTrailingTimeFrame.getTime() !== startDate.getTime()) {\n setTrailingTimeFrame(newTrailingTimeFrame);\n setStartDate(startDateFromTrailingTimeFrame);\n }\n }\n }, [forever, setStartDate, setTrailingTimeFrame, showTrailingTimeSelector, startDate, trailingTimeFrame]);\n\n return data.reduce((acc, item) => {\n return (\n <>\n {acc} {item}\n \n );\n });\n};\n","import { useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport {\n Checkbox,\n Divider,\n FormControl,\n ListItemText,\n ListSubheader,\n MenuItem,\n OutlinedInput,\n Select,\n SelectChangeEvent,\n Typography\n} from '@mui/material';\n\nimport { stampCardsSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { introStepHomeSettings } from 'views/Home/JoyrideIntroduction/Settings/Home.JoyrideWidgetMenu.Steps';\nimport { IStampCardCampaign } from 'views/StampCardPage/stampCardPage.interfaces';\n\nimport { addCancelGridDragabilityToPopups } from '../../../../Grid/ResponsiveGridLayout.utils';\n\nexport const StampCardCampaignSelector: React.FC<{\n stampCardCampaignIds: string[];\n setStampCardCampaignIds: (stampCardCampaignIds: string[]) => void;\n}> = ({ setStampCardCampaignIds, stampCardCampaignIds }) => {\n const stampCardCampaigns = stampCardsSelector({ state: store.getState() });\n const [selected, setSelected] = useState(\n stampCardCampaigns.filter((el) => stampCardCampaignIds.includes(el.id)).map((el) => el.id)\n );\n\n const isAllSelected = stampCardCampaigns.length > 0 && selected.length === stampCardCampaigns.length;\n\n const handleChange = (event: SelectChangeEvent) => {\n const {\n target: { value }\n } = event;\n\n if (value.includes('all')) {\n if (isAllSelected) setSelected([]);\n else setSelected(stampCardCampaigns.map((el) => el.id));\n return;\n }\n\n setSelected(\n // On autofill we get a stringified value.\n typeof value === 'string' ? value.split(',') : value\n );\n };\n\n const onClose = () => {\n const selectedCampaigns = stampCardCampaigns.filter((el) => selected.includes(el.id));\n\n setStampCardCampaignIds(selectedCampaigns.map((el) => el.id));\n };\n\n const menuItem = (camp: IStampCardCampaign) => {\n return (\n \n -1} />\n \n \n );\n };\n\n const menuItems = (): React.ReactNode[] => {\n if (stampCardCampaigns.length === 1) {\n return [menuItem(stampCardCampaigns[0])];\n }\n\n const expired = stampCardCampaigns.filter(\n (el) => el.endDate && new Date(el.endDate).getTime() > new Date().getTime()\n );\n\n const active = stampCardCampaigns.filter(\n (el) => el.activated && !el.disabled && !expired.find((ex) => ex.id === el.id)\n );\n\n const testMode = stampCardCampaigns.filter(\n (el) => !el.activated && !el.disabled && !expired.find((ex) => ex.id === el.id)\n );\n\n const disabled = stampCardCampaigns.filter(\n (el) =>\n !active.find((ac) => ac.id === el.id) &&\n !testMode.find((tm) => tm.id === el.id) &&\n !expired.find((ex) => ex.id === el.id)\n );\n\n const items: React.ReactElement[] = [];\n\n if (active.length) {\n items.push(\n \n \n \n \n \n );\n items.push(...active.map(menuItem));\n }\n\n if (testMode.length) {\n items.push(\n \n \n \n \n \n );\n items.push(...testMode.map(menuItem));\n }\n\n if (expired.length) {\n items.push(\n \n \n \n \n \n );\n items.push(...expired.map(menuItem));\n }\n\n if (disabled.length) {\n items.push(\n \n \n \n \n \n );\n items.push(...disabled.map(menuItem));\n }\n\n return items;\n };\n\n return (\n \n }\n renderValue={(sel) => {\n if (sel.length === 0) {\n return ;\n }\n\n return sel.map((el) => stampCardCampaigns.find((c) => c.id === el)?.name)?.join(', ');\n }}\n MenuProps={{\n PaperProps: {\n style: { padding: '0px', margin: '0px' }\n }\n }}\n onOpen={() => addCancelGridDragabilityToPopups()}>\n {stampCardCampaigns.length > 1 && (\n \n 0 && selected.length < stampCardCampaigns.length}\n />\n \n \n )}\n {stampCardCampaigns.length > 1 && }\n {menuItems()}\n \n \n );\n};\n","import { useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport {\n Checkbox,\n Divider,\n FormControl,\n ListItemText,\n MenuItem,\n OutlinedInput,\n Select,\n SelectChangeEvent\n} from '@mui/material';\n\nimport { VenuesInterface } from 'store/features/merchantAndVenues/handlers';\nimport { venuesSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { introStepHomeSettings } from 'views/Home/JoyrideIntroduction/Settings/Home.JoyrideWidgetMenu.Steps';\n\nimport { addCancelGridDragabilityToPopups } from '../../../../Grid/ResponsiveGridLayout.utils';\n\nexport const VenueSelector: React.FC<{\n venueIds: string[];\n setVenueIds: (venueIds: string[]) => void;\n}> = ({ setVenueIds, venueIds }) => {\n const venues = venuesSelector(store.getState());\n const [selected, setSelected] = useState(\n venues.filter((el) => venueIds.includes(el.id)).map((el) => el.venueTitle)\n );\n\n const isAllSelected = venues.length > 0 && selected.length === venues.length;\n\n const handleChange = (event: SelectChangeEvent) => {\n const {\n target: { value }\n } = event;\n\n if (value.includes('all')) {\n if (isAllSelected) setSelected([]);\n else setSelected(venues.map((el) => el.venueTitle));\n return;\n }\n\n setSelected(\n // On autofill we get a stringified value.\n typeof value === 'string' ? value.split(',') : value\n );\n };\n\n const onClose = () => {\n const selectedVenues = venues.filter((el) => selected.includes(el.venueTitle));\n\n setVenueIds(selectedVenues.map((el) => el.id));\n };\n\n const menuItem = (ven: VenuesInterface) => {\n return (\n \n -1 || venues.length === 1} />\n \n \n );\n };\n\n return (\n \n }\n renderValue={(sel) => {\n if (sel.length === 0) {\n return ;\n }\n return sel.join(', ');\n }}\n MenuProps={{\n PaperProps: {\n style: { padding: '0px', margin: '0px' }\n }\n }}\n onOpen={() => addCancelGridDragabilityToPopups()}>\n {venues.length > 1 && (\n \n 0 && selected.length < venues.length}\n />\n \n \n )}\n {venues.length > 1 && }\n {venues.map(menuItem)}\n \n \n );\n};\n","import React from 'react';\nimport { I18n } from 'react-redux-i18n';\n\nimport { Box, Checkbox, Divider, List, ListItem, ListItemButton, ListItemIcon, ListItemText } from '@mui/material';\n\nimport { VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport LocaleAPI from 'store/locale';\nimport { stampCardSubscriptionSelector, venuesSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { introStepHomeSettings } from 'views/Home/JoyrideIntroduction/Settings/Home.JoyrideWidgetMenu.Steps';\nimport { INTRO_WIDGET_MENU_CLASS_NAMES } from 'views/Home/JoyrideIntroduction/Settings/Home.JoyrideWidgetMenu.context';\n\nimport { SettingsMenuProps } from '../../../Contexts/ChartSettingsContext/ChartSettingsContext.interfaces';\nimport {\n AllowedMongoFilterSettings,\n ChartPresetPerCountry\n} from '../Interfaces/MongoDBWidgets.interfaces.chartSpecification';\nimport { ApplySettingsButton } from './SettingsMenu.ApplySettingsButton';\nimport { FilterRow } from './SettingsMenu.FilterRow';\nimport { ChartSettingsFilterTitle } from './SettingsMenu.MenuTitles';\nimport { NoFilterSettings } from './SettingsMenu.NoFilterSettings';\nimport { SelectTypeOfDateRangePicker } from './Utils/DateSelector/DateSelector';\nimport { StampCardCampaignSelector } from './Utils/StampCardCampaignSelector';\nimport { VenueSelector } from './Utils/VenueSelector';\n\nconst noFiltersAvailable = (\n allowedFilters: AllowedMongoFilterSettings[],\n multiVenue: boolean,\n subscribedToStampCardFeature: boolean\n) => {\n let filters = [...allowedFilters];\n if (!multiVenue) filters = filters.filter((el) => el !== 'venueId');\n if (!subscribedToStampCardFeature) filters = filters.filter((el) => el !== 'stampCardCampaignId');\n\n if (filters.length === 0) return true;\n};\n\nexport const SettingsMenu: React.FC = ({\n chartSpecification,\n startDate,\n setStartDate,\n endDate,\n setEndDate,\n hourlyPeriodic,\n setHourlyPeriodic,\n dailyPeriodic,\n setDailyPeriodic,\n forever,\n setForever,\n venueIdsStr,\n setVenueIdsStr,\n stampCardCampaignIdsStr,\n setStampCardCampaignIdsStr,\n trailingTimeFrameSetting,\n setTrailingTimeFrameSetting,\n closeMenu,\n localSettingsMenu\n}) => {\n const allowedFilters = chartSpecification.filters;\n const multiVenue = venuesSelector(store.getState()).length > 1;\n const subscribedToStampCardFeature = stampCardSubscriptionSelector(store.getState()).length > 0;\n\n const locale = LocaleAPI();\n\n const datePickers = () => {\n if (!allowedFilters.includes('createdAt') && !allowedFilters.includes('trailingTimeframe')) return null;\n\n return (\n \n \n \n \n \n \n );\n };\n\n const venueSelector = () => {\n if (!allowedFilters.includes('venueId') || !multiVenue) return null;\n\n return (\n \n \n \n );\n };\n\n const stampCardCampaignSelector = () => {\n if (!allowedFilters.includes('stampCardCampaignId') || !subscribedToStampCardFeature) return null;\n\n return (\n \n \n \n );\n };\n\n const hourlyPeriodicCheckbox = () => {\n if (!allowedFilters.includes('hourlyPeriodic')) return null;\n\n return (\n \n {\n setHourlyPeriodic(!hourlyPeriodic);\n }}\n disabled={dailyPeriodic}>\n \n \n \n \n \n \n );\n };\n\n const dailyPeriodicCheckbox = () => {\n if (!allowedFilters.includes('dailyPeriodic')) return null;\n\n return (\n \n {\n setDailyPeriodic(!dailyPeriodic);\n }}\n disabled={hourlyPeriodic}>\n \n \n \n \n \n \n );\n };\n\n const periodicSelectors = () => {\n if (allowedFilters.includes('dailyPeriodic') || allowedFilters.includes('hourlyPeriodic')) {\n return (\n \n \n {hourlyPeriodicCheckbox()}\n {dailyPeriodicCheckbox()}\n \n );\n }\n };\n\n if (noFiltersAvailable(allowedFilters, multiVenue, subscribedToStampCardFeature)) {\n return ;\n }\n\n return (\n \n {localSettingsMenu && (\n \n )}\n {datePickers()}\n {venueSelector()}\n {stampCardCampaignSelector()}\n {periodicSelectors()}\n {allowedFilters.length > 0 && (\n \n )}\n \n );\n};\n","export enum Errors {\n Nothing = 'nothing',\n MaxLength = 'maxLength',\n StartAfterEnd = 'startAfterEnd'\n}\n\nexport const MAX_RANGE_IN_DAYS = Infinity;\n\nexport const TIME_FRAME_MINUTE_RANGE: number[] = [];\nfor (let x = 5; x <= 60; x += 5) TIME_FRAME_MINUTE_RANGE.push(x);\n\nexport const TIMEFRAME_HOUR_RANGE: number[] = [];\nfor (let x = 1; x <= 24; x += 1) TIMEFRAME_HOUR_RANGE.push(x);\n\nexport const TIMEFRAME_DAY_RANGE: number[] = [];\nfor (let x = 1; x <= 31; x += 1) TIMEFRAME_DAY_RANGE.push(x);\n\nexport const TIMEFRAME_MONTH_RANGE: number[] = [];\nfor (let x = 1; x <= 12; x += 1) TIMEFRAME_MONTH_RANGE.push(x);\n\nexport const FOREVER_START_YEAR = 0;\n","import { intervalToDuration, subDays, subHours, subMinutes, subMonths } from 'date-fns';\n\nimport {\n FOREVER_START_YEAR,\n TIMEFRAME_DAY_RANGE,\n TIMEFRAME_HOUR_RANGE,\n TIMEFRAME_MONTH_RANGE,\n TIME_FRAME_MINUTE_RANGE\n} from './DateSelector.constants';\nimport { TrailingTimeFrame, UnitValues } from './DateSelector.interfaces';\n\nexport const newDateZeroSecond = () => new Date(new Date().setSeconds(0, 0));\n\nexport const newForeverStartDate = () => new Date(new Date(`${FOREVER_START_YEAR}`).setSeconds(0, 0));\n\nexport const getStartDateFromValAndUnit = (unit: UnitValues, value: number) => {\n if (unit === 'minutes') return subMinutes(newDateZeroSecond(), value);\n if (unit === 'hours') return subHours(newDateZeroSecond(), value);\n if (unit === 'days') return subDays(newDateZeroSecond(), value);\n\n return subMonths(newDateZeroSecond(), value);\n};\n\nexport const calculateTrailingTimeFrame = (startDate: Date): TrailingTimeFrame => {\n const diff = intervalToDuration({ start: startDate, end: newDateZeroSecond() });\n\n if (diff.months) {\n if (diff.months >= TIMEFRAME_MONTH_RANGE.length) return { unit: 'months', value: TIMEFRAME_MONTH_RANGE.length };\n return { unit: 'months', value: diff.months };\n }\n\n if (diff.days) return { unit: 'days', value: diff.days };\n if (diff.hours) return { unit: 'hours', value: diff.hours };\n if (diff.minutes) return { unit: 'minutes', value: diff.minutes };\n\n return { unit: 'days', value: 30 };\n};\n\nexport const getTimeFrameRange = (unit: UnitValues): number[] => {\n if (unit === 'minutes') return TIME_FRAME_MINUTE_RANGE;\n if (unit === 'hours') return TIMEFRAME_HOUR_RANGE;\n if (unit === 'days') return TIMEFRAME_DAY_RANGE;\n return TIMEFRAME_MONTH_RANGE;\n};\n","export const unitRange = ['months', 'days', 'hours', 'minutes'] as const;\nexport type UnitValues = (typeof unitRange)[number];\n\nexport type TrailingTimeFrame = { unit: UnitValues; value: number };\n\nexport const DEFAULT_TRAILING_TIME_FRAME: TrailingTimeFrame = { unit: 'days', value: 30 };\n\nexport interface DateRangeProps {\n startDate: Date;\n setStartDate: (date: Date) => void;\n endDate: Date;\n setEndDate: (date: Date) => void;\n disabled?: boolean;\n maxRangeInDays?: number;\n}\n\nexport interface TrailingDateRangeProps {\n trailingTimeFrame: TrailingTimeFrame;\n setTrailingTimeFrame: (val: TrailingTimeFrame | undefined) => void;\n setStartDate: (date: Date) => void;\n setEndDate: (date: Date) => void;\n disabled?: boolean;\n}\n\nexport interface ForeverButtonProps {\n checked: boolean;\n setChecked: (val: boolean) => void;\n startDate: Date;\n setStartDate: (date: Date) => void;\n endDate: Date;\n setEndDate: (date: Date) => void;\n setTrailingTimeFrame: (val: TrailingTimeFrame | undefined) => void;\n}\n\nexport type SelectTypeOfDateRangePickerProps = DateRangeProps & {\n trailingTimeFrame: TrailingTimeFrame | undefined;\n setTrailingTimeFrame: (val: TrailingTimeFrame | undefined) => void;\n forever: boolean;\n setForever: React.Dispatch>;\n showForeverButton: boolean;\n showTrailingTimeSelector?: boolean;\n showDatePickers?: boolean;\n};\n\nexport enum Errors {\n Nothing = 'nothing',\n MaxLength = 'maxLength',\n StartAfterEnd = 'startAfterEnd'\n}\n","import { DashboardItemLayout } from 'views/Dashboard/Interfaces/Dashboard.layout';\n\nimport { GenerateLayout } from '../../helpers';\nimport { newForeverStartDate } from '../ChartFilters/Utils/DateSelector/DateSelector.helpers';\nimport { AllChartFilters } from '../Interfaces/MongoDBWidgets.interfaces.filters';\nimport { ChartNames } from '../Interfaces/MongoDBWidgets.interfaces.names';\n\nconst NumericTotalSize = { w: 3, h: 4, minW: 3, minH: 3 };\nconst TimeGraphSize = { w: 10, h: 8, minW: 6, minH: 4 };\n\nexport const ChartDefaultLayouts: { [key in keyof typeof ChartNames]: DashboardItemLayout } = {\n numberOfStampsPerStampCardCampaignHistogram: GenerateLayout({\n layoutType: ChartNames.numberOfStampsPerStampCardCampaignHistogram,\n w: 6,\n h: 9,\n minW: 4,\n minH: 9\n }),\n averageStampsPerStampCardDonut: GenerateLayout({\n layoutType: ChartNames.averageStampsPerStampCardDonut,\n w: 6,\n h: 7,\n minW: 3,\n minH: 5\n }),\n SMSCampaignsTotal: GenerateLayout({ layoutType: ChartNames.SMSCampaignsTotal, ...NumericTotalSize }),\n campaignSMSSentTotal: GenerateLayout({ layoutType: ChartNames.campaignSMSSentTotal, ...NumericTotalSize }),\n numberOfStampsTotal: GenerateLayout({ layoutType: ChartNames.numberOfStampsTotal, ...NumericTotalSize }),\n stampCardsRewardsClaimedTotal: GenerateLayout({\n layoutType: ChartNames.stampCardsRewardsClaimedTotal,\n ...NumericTotalSize\n }),\n stampCardsCreatedTotal: GenerateLayout({ layoutType: ChartNames.stampCardsCreatedTotal, ...NumericTotalSize }),\n numberOfUniqueRegistrationsTotal: GenerateLayout({\n layoutType: ChartNames.numberOfUniqueRegistrationsTotal,\n filter: { forever: true, createdAt: { $gte: newForeverStartDate() } } as AllChartFilters, // Since we check each field in the chartContext, we can leave out required parameters here\n ...NumericTotalSize\n }),\n numberOfRegistrationsTotal: GenerateLayout({\n layoutType: ChartNames.numberOfRegistrationsTotal,\n ...NumericTotalSize\n }),\n registrationsOverTime: GenerateLayout({\n layoutType: ChartNames.registrationsOverTime,\n ...TimeGraphSize\n }),\n registrationsOverTimePerVenue: GenerateLayout({\n layoutType: ChartNames.registrationsOverTimePerVenue,\n ...TimeGraphSize\n }),\n registrationsNewOrReturningOverTime: GenerateLayout({\n layoutType: ChartNames.registrationsNewOrReturningOverTime,\n ...TimeGraphSize\n }),\n purchasesOverTime: GenerateLayout({ layoutType: ChartNames.purchasesOverTime, ...TimeGraphSize }),\n newStampCardsOverTime: GenerateLayout({ layoutType: ChartNames.newStampCardsOverTime, ...TimeGraphSize }),\n numberOfStampsOverTime: GenerateLayout({ layoutType: ChartNames.numberOfStampsOverTime, ...TimeGraphSize }),\n numberOfStampsOverTimePerVenue: GenerateLayout({\n layoutType: ChartNames.numberOfStampsOverTimePerVenue,\n ...TimeGraphSize\n }),\n numberOfStampsNewOrReturningOverTime: GenerateLayout({\n layoutType: ChartNames.numberOfStampsNewOrReturningOverTime,\n ...TimeGraphSize\n })\n};\n","import { RenderingSpec } from '@mongodb-js/charts-embed-dom';\nimport sassVariables from 'assets/scss/export.module.scss';\n\nimport { CHART_VERSION, MongoDBRenderingSpecs } from '../Interfaces/MongoDBWidgets.interfaces.chartSpecification';\n\nconst ColorPalette = [\n sassVariables.payAttDarkBlue,\n sassVariables.payAttGreen,\n sassVariables.payAttPurple,\n 'red',\n sassVariables.payAttPink,\n sassVariables.payAttDarkTurquoise,\n sassVariables.payAttGray,\n sassVariables.payAttBlue,\n sassVariables.payAttBlack\n];\n\nexport const DefaultRenderSpecDescreteLine: RenderingSpec = {\n version: CHART_VERSION,\n options: {\n colorPalette: { type: 'discrete', value: ColorPalette },\n markers: false,\n lineSmoothing: 'monotone'\n },\n axes: { x: { labelAngle: 'diagonal' } }\n};\n\nexport const DefaultRenderSpecBarChart: RenderingSpec = {\n version: CHART_VERSION,\n options: { colorPalette: { type: 'discrete', value: ColorPalette } }\n};\n\nexport const DefaultRenderSpecNumber: RenderingSpec = {\n version: CHART_VERSION\n};\n\nexport const DefaultRenderHistogram: RenderingSpec = {\n version: CHART_VERSION,\n options: { colorPalette: { type: 'continuous', color: 'purpleblue' } }\n};\n\nexport const DefaultRenderDonut: RenderingSpec = {\n version: CHART_VERSION,\n options: { colorPalette: { type: 'discrete', value: ColorPalette }, categoryLabels: true }\n};\n\nexport const mongoDBRenderingSpecs: MongoDBRenderingSpecs = {\n numberOfStampsPerStampCardCampaignHistogram: {\n se: {\n ...DefaultRenderHistogram,\n title: 'Antal stämplar per stämpelkortskampanj',\n channels: {\n color: { labelOverride: 'Antal stämplar' },\n x: { labelOverride: 'Stämpelkortskampanj' },\n y: { labelOverride: 'Antal stämplar' }\n }\n },\n en: {\n ...DefaultRenderHistogram,\n title: 'Number of stamps per stamp card campaign',\n channels: {\n color: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Stamp card campaign' },\n y: { labelOverride: 'Number of stamps' }\n }\n }\n },\n averageStampsPerStampCardDonut: {\n se: {\n ...DefaultRenderDonut,\n title: 'Distribution av stämplar på kunders stämpelkort',\n channels: { value: { labelOverride: 'Antal stämplar' }, label: { labelOverride: 'Grupp' } }\n },\n en: {\n ...DefaultRenderDonut,\n title: 'Distribution of stamps on customers stamp cards',\n channels: { value: { labelOverride: 'Stamps' }, label: { labelOverride: 'Group' } }\n }\n },\n SMSCampaignsTotal: {\n se: {\n ...DefaultRenderSpecNumber,\n title: 'SMS-kampanjer',\n channels: { value: { labelOverride: 'SMS-kampanjer', numberThousandsSeparators: true } }\n },\n en: {\n ...DefaultRenderSpecNumber,\n title: 'SMS campaigns',\n channels: { value: { labelOverride: 'SMS campaigns', numberThousandsSeparators: true } }\n }\n },\n campaignSMSSentTotal: {\n se: {\n ...DefaultRenderSpecNumber,\n title: 'SMS skickade i SMS-kampanjer',\n channels: { value: { labelOverride: 'SMS skickade', numberThousandsSeparators: true } }\n },\n en: {\n ...DefaultRenderSpecNumber,\n title: 'SMS sent in SMS campaigns',\n channels: { value: { labelOverride: 'SMS sent', numberThousandsSeparators: true } }\n }\n },\n numberOfStampsTotal: {\n se: {\n ...DefaultRenderSpecNumber,\n title: 'Antal stämplar utdelade',\n channels: { value: { labelOverride: 'Stämplar', numberThousandsSeparators: true } }\n },\n en: {\n ...DefaultRenderSpecNumber,\n title: 'Number of stamps handed out',\n channels: { value: { labelOverride: 'Stamp count', numberThousandsSeparators: true } }\n }\n },\n stampCardsRewardsClaimedTotal: {\n se: {\n ...DefaultRenderSpecNumber,\n title: 'Stämpelkortsbelöningar uthämtade',\n channels: { value: { labelOverride: 'Antal belöningar', numberThousandsSeparators: true } }\n },\n en: {\n ...DefaultRenderSpecNumber,\n title: 'Stamp card rewards claimed',\n channels: { value: { labelOverride: 'Rewards', numberThousandsSeparators: true } }\n }\n },\n stampCardsCreatedTotal: {\n se: {\n ...DefaultRenderSpecNumber,\n title: 'Stämpelkort skapade åt kunder',\n channels: { value: { labelOverride: 'Stämpelkort', numberThousandsSeparators: true } }\n },\n en: {\n ...DefaultRenderSpecNumber,\n title: 'Stamp cards created for customers',\n channels: { value: { labelOverride: 'Stamp cards', numberThousandsSeparators: true } }\n }\n },\n numberOfUniqueRegistrationsTotal: {\n se: {\n ...DefaultRenderSpecNumber,\n title: 'Medlemmar',\n channels: { value: { labelOverride: 'Medlemmar', numberThousandsSeparators: true } }\n },\n en: {\n ...DefaultRenderSpecNumber,\n title: 'Members',\n channels: { value: { labelOverride: 'Members', numberThousandsSeparators: true } }\n }\n },\n numberOfRegistrationsTotal: {\n se: {\n ...DefaultRenderSpecNumber,\n title: 'Antal registreringar',\n channels: { value: { labelOverride: 'Registreringar', numberThousandsSeparators: true } }\n },\n en: {\n ...DefaultRenderSpecNumber,\n title: 'Number of registrations',\n channels: { value: { labelOverride: 'Registrations', numberThousandsSeparators: true } }\n }\n },\n registrationsOverTimeHourly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Timme' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Hour' }\n }\n }\n },\n registrationsOverTimeDaily: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Datum' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations ',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Date' }\n }\n }\n },\n registrationsOverTimeWeekly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Vecka' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Week' }\n }\n }\n },\n registrationsOverTimeMonthly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Månad' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Month' }\n }\n }\n },\n registrationsOverTimeYearly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'År' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Year' }\n }\n }\n },\n registrationsOverTimeWeekdayPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Registreringar per veckodag',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Veckodag' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Registrations per weekday',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Weekday' }\n }\n }\n },\n registrationsOverTimeHourPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Registreringar per timme',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Timme' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Registrations per hour',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Hour' }\n }\n }\n },\n registrationsOverTimePerVenueHourly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Timme' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Hour' }\n }\n }\n },\n registrationsOverTimePerVenueDaily: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Datum' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations ',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Date' }\n }\n }\n },\n registrationsOverTimePerVenueWeekly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Vecka' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Week' }\n }\n }\n },\n registrationsOverTimePerVenueMonthly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Månad' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Month' }\n }\n }\n },\n registrationsOverTimePerVenueYearly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'År' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Year' }\n }\n }\n },\n registrationsOverTimePerVenueWeekdayPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Registreringar per veckodag',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Veckodag' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Registrations per weekday',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Weekday' }\n }\n }\n },\n registrationsOverTimePerVenueHourPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Registreringar per timme',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Timme' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Registrations per hour',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Hour' }\n }\n }\n },\n registrationsNewOrReturningOverTimeHourly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Timme' },\n color: { labelOverride: 'Kund' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Hour' },\n color: { labelOverride: 'Customer' }\n }\n }\n },\n registrationsNewOrReturningOverTimeDaily: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Datum' },\n color: { labelOverride: 'Kund' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations ',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Date' },\n color: { labelOverride: 'Customer' }\n }\n }\n },\n registrationsNewOrReturningOverTimeWeekly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Vecka' },\n color: { labelOverride: 'Kund' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Week' },\n color: { labelOverride: 'Customer' }\n }\n }\n },\n registrationsNewOrReturningOverTimeMonthly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Månad' },\n color: { labelOverride: 'Kund' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Month' },\n color: { labelOverride: 'Customer' }\n }\n }\n },\n registrationsNewOrReturningOverTimeYearly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'År' },\n color: { labelOverride: 'Kund' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Year' },\n color: { labelOverride: 'Customer' }\n }\n }\n },\n registrationsNewOrReturningOverTimeWeekdayPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Registreringar per veckodag',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Veckodag' },\n color: { labelOverride: 'Kund' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Registrations per weekday',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Weekday' },\n color: { labelOverride: 'Customer' }\n }\n }\n },\n registrationsNewOrReturningOverTimeHourPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Registreringar per timme',\n channels: {\n y: { labelOverride: 'Antal Registreringar' },\n x: { labelOverride: 'Timme' },\n color: { labelOverride: 'Kund' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Registrations per hour',\n channels: {\n y: { labelOverride: 'Number of Registrations' },\n x: { labelOverride: 'Hour' },\n color: { labelOverride: 'Customer' }\n }\n }\n },\n purchasesOverTimeHourly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar kontra köp',\n channels: {\n y: { labelOverride: 'Antal' },\n x: { labelOverride: 'Timme' },\n color: { labelOverride: 'Serie' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations against purchases',\n channels: {\n y: { labelOverride: 'Value' },\n x: { labelOverride: 'Hour' },\n color: { labelOverride: 'Series' }\n }\n }\n },\n purchasesOverTimeDaily: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar kontra köp',\n channels: {\n y: { labelOverride: 'Antal' },\n x: { labelOverride: 'Datum' },\n color: { labelOverride: 'Serie' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations against purchases',\n channels: {\n y: { labelOverride: 'Value' },\n x: { labelOverride: 'Date' },\n color: { labelOverride: 'Series' }\n }\n }\n },\n purchasesOverTimeWeekly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar kontra köp',\n channels: {\n y: { labelOverride: 'Antal' },\n x: { labelOverride: 'Vecka' },\n color: { labelOverride: 'Serie' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations against purchases',\n channels: {\n y: { labelOverride: 'Value' },\n x: { labelOverride: 'Week' },\n color: { labelOverride: 'Series' }\n }\n }\n },\n purchasesOverTimeMonthly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar kontra köp',\n channels: {\n y: { labelOverride: 'Antal' },\n x: { labelOverride: 'Månad' },\n color: { labelOverride: 'Serie' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations against purchases',\n channels: {\n y: { labelOverride: 'Value' },\n x: { labelOverride: 'Month' },\n color: { labelOverride: 'Series' }\n }\n }\n },\n purchasesOverTimeYearly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registreringar kontra köp',\n channels: { y: { labelOverride: 'Antal' }, x: { labelOverride: 'År' }, color: { labelOverride: 'Serie' } }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Registrations against purchases',\n channels: {\n y: { labelOverride: 'Value' },\n x: { labelOverride: 'Year' },\n color: { labelOverride: 'Series' }\n }\n }\n },\n purchasesOverTimeWeekdayPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Registreringar kontra köp per veckodag',\n channels: {\n y: { labelOverride: 'Antal' },\n x: { labelOverride: 'Veckodag' },\n color: { labelOverride: 'Serie' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Registrations against purchases per weekday',\n channels: {\n y: { labelOverride: 'Value' },\n x: { labelOverride: 'Weekday' },\n color: { labelOverride: 'Series' }\n }\n }\n },\n purchasesOverTimeHourPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Registreringar kontra köp per timme',\n channels: {\n y: { labelOverride: 'Antal' },\n x: { labelOverride: 'Timme' },\n color: { labelOverride: 'Serie' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Registrations against purchases per hour',\n channels: {\n y: { labelOverride: 'Value' },\n x: { labelOverride: 'Hour' },\n color: { labelOverride: 'Series' }\n }\n }\n },\n newStampCardsOverTimeHourly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Nya stämpelkort utgivna',\n channels: {\n y: { labelOverride: 'Stämpelkort' },\n x: { labelOverride: 'Timme' },\n color: { labelOverride: 'Stämpelkortskampanj' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'New stamp cards created',\n channels: {\n y: { labelOverride: 'Stamp cards' },\n x: { labelOverride: 'Hour' },\n color: { labelOverride: 'Stamp card campaign' }\n }\n }\n },\n newStampCardsOverTimeDaily: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Nya stämpelkort utgivna',\n channels: {\n y: { labelOverride: 'Stämpelkort' },\n x: { labelOverride: 'Datum' },\n color: { labelOverride: 'Stämpelkortskampanj' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'New stamp cards created',\n channels: {\n y: { labelOverride: 'Stamp cards' },\n x: { labelOverride: 'Date' },\n color: { labelOverride: 'Stamp card campaign' }\n }\n }\n },\n newStampCardsOverTimeWeekly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Nya stämpelkort utgivna',\n channels: {\n y: { labelOverride: 'Stämpelkort' },\n x: { labelOverride: 'Vecka' },\n color: { labelOverride: 'Stämpelkortskampanj' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'New stamp cards created',\n channels: {\n y: { labelOverride: 'Stamp cards' },\n x: { labelOverride: 'Week' },\n color: { labelOverride: 'Stamp card campaign' }\n }\n }\n },\n newStampCardsOverTimeMonthly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Nya stämpelkort utgivna',\n channels: {\n y: { labelOverride: 'Stämpelkort' },\n x: { labelOverride: 'Månad' },\n color: { labelOverride: 'Stämpelkortskampanj' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'New stamp cards created',\n channels: {\n y: { labelOverride: 'Stamp cards' },\n x: { labelOverride: 'Month' },\n color: { labelOverride: 'Stamp card campaign' }\n }\n }\n },\n newStampCardsOverTimeYearly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Nya stämpelkort utgivna',\n channels: {\n y: { labelOverride: 'Stämpelkort' },\n x: { labelOverride: 'År' },\n color: { labelOverride: 'Stämpelkortskampanj' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'New stamp cards created',\n channels: {\n y: { labelOverride: 'Stamp cards' },\n x: { labelOverride: 'Year' },\n color: { labelOverride: 'Stamp card campaign' }\n }\n }\n },\n newStampCardsOverTimeWeekdayPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Nya stämpelkort utgivna per veckodag',\n channels: {\n y: { labelOverride: 'Stämpelkort' },\n x: { labelOverride: 'Veckodag' },\n color: { labelOverride: 'Stämpelkortskampanj' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'New stamp cards created per weekday',\n channels: {\n y: { labelOverride: 'Stamp cards' },\n x: { labelOverride: 'Weekday' },\n color: { labelOverride: 'Stamp card campaign' }\n }\n }\n },\n newStampCardsOverTimeHourPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Nya stämpelkort utgivna per timme',\n channels: {\n y: { labelOverride: 'Stämpelkort' },\n x: { labelOverride: 'Timme' },\n color: { labelOverride: 'Stämpelkortskampanj' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'New stamp cards created per hour',\n channels: {\n y: { labelOverride: 'Stamp cards' },\n x: { labelOverride: 'Hour' },\n color: { labelOverride: 'Stamp card campaign' }\n }\n }\n },\n numberOfStampsOverTimeHourly: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Timme' },\n color: { labelOverride: 'Typ av registrering' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Hour' },\n color: { labelOverride: 'Type of registration' }\n }\n }\n },\n numberOfStampsOverTimeDaily: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Datum' },\n color: { labelOverride: 'Typ av registrering' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Date' },\n color: { labelOverride: 'Type of registration' }\n }\n }\n },\n numberOfStampsOverTimeWeekly: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Vecka' },\n color: { labelOverride: 'Typ av registrering' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Week' },\n color: { labelOverride: 'Type of registration' }\n }\n }\n },\n numberOfStampsOverTimeMonthly: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Månad' },\n color: { labelOverride: 'Typ av registrering' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Month' },\n color: { labelOverride: 'Type of registration' }\n }\n }\n },\n numberOfStampsOverTimeYearly: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'år' },\n color: { labelOverride: 'Typ av registrering' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Year' },\n color: { labelOverride: 'Type of registration' }\n }\n }\n },\n numberOfStampsOverTimeWeekdayPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna per veckodag',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Veckodag' },\n color: { labelOverride: 'Typ av registrering' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out per weekday',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Weekday' },\n color: { labelOverride: 'Type of registration' }\n }\n }\n },\n numberOfStampsOverTimeHourPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna per timme',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Timme' },\n color: { labelOverride: 'Typ av registrering' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out per hour',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Hour' },\n color: { labelOverride: 'Type of registration' }\n }\n }\n },\n numberOfStampsOverTimePerVenueHourly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Antal stämplar utgivna',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Timme' },\n color: { labelOverride: 'Verksamhet' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Number of stamps handed out',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Hour' },\n color: { labelOverride: 'Venue' }\n }\n }\n },\n numberOfStampsOverTimePerVenueDaily: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Antal stämplar utgivna',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Datum' },\n color: { labelOverride: 'Verksamhet' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Number of stamps handed out',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Date' },\n color: { labelOverride: 'Venue' }\n }\n }\n },\n numberOfStampsOverTimePerVenueWeekly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Antal stämplar utgivna',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Vecka' },\n color: { labelOverride: 'Verksamhet' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Number of stamps handed out',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Week' },\n color: { labelOverride: 'Venue' }\n }\n }\n },\n numberOfStampsOverTimePerVenueMonthly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Antal stämplar utgivna',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Månad' },\n color: { labelOverride: 'Verksamhet' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Number of stamps handed out',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Month' },\n color: { labelOverride: 'Venue' }\n }\n }\n },\n numberOfStampsOverTimePerVenueYearly: {\n se: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Antal stämplar utgivna',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'år' },\n color: { labelOverride: 'Verksamhet' }\n }\n },\n en: {\n ...DefaultRenderSpecDescreteLine,\n title: 'Number of stamps handed out',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Year' },\n color: { labelOverride: 'Venue' }\n }\n }\n },\n numberOfStampsOverTimePerVenueWeekdayPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna per veckodag',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Veckodag' },\n color: { labelOverride: 'Verksamhet' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out per weekday',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Weekday' },\n color: { labelOverride: 'Venue' }\n }\n }\n },\n numberOfStampsOverTimePerVenueHourPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna per timme',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Timme' },\n color: { labelOverride: 'Verksamhet' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out per hour',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Hour' },\n color: { labelOverride: 'Venue' }\n }\n }\n },\n numberOfStampsNewOrReturningOverTimeHourly: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Timme' },\n color: { labelOverride: 'Kund' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Hour' },\n color: { labelOverride: 'Customer' }\n }\n }\n },\n numberOfStampsNewOrReturningOverTimeDaily: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Datum' },\n color: { labelOverride: 'Kund' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Date' },\n color: { labelOverride: 'Customer' }\n }\n }\n },\n numberOfStampsNewOrReturningOverTimeWeekly: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Vecka' },\n color: { labelOverride: 'Kund' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Week' },\n color: { labelOverride: 'Customer' }\n }\n }\n },\n numberOfStampsNewOrReturningOverTimeMonthly: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Månad' },\n color: { labelOverride: 'Kund' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Month' },\n color: { labelOverride: 'Customer' }\n }\n }\n },\n numberOfStampsNewOrReturningOverTimeYearly: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'År' },\n color: { labelOverride: 'Kund' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Year' },\n color: { labelOverride: 'Customer' }\n }\n }\n },\n numberOfStampsNewOrReturningOverTimeWeekdayPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna per veckodag',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Veckodag' },\n color: { labelOverride: 'Kund' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out per weekday',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Weekday' },\n color: { labelOverride: 'Customer' }\n }\n }\n },\n numberOfStampsNewOrReturningOverTimeHourPeriodic: {\n se: {\n ...DefaultRenderSpecBarChart,\n title: 'Antal stämplar utgivna per timme',\n channels: {\n y: { labelOverride: 'Antal stämplar utgivna' },\n x: { labelOverride: 'Timme' },\n color: { labelOverride: 'Kund' }\n }\n },\n en: {\n ...DefaultRenderSpecBarChart,\n title: 'Number of stamps handed out per hour',\n channels: {\n y: { labelOverride: 'Number of stamps' },\n x: { labelOverride: 'Hour' },\n color: { labelOverride: 'Customer' }\n }\n }\n }\n};\n","import { AllowedMongoFilterSettings } from '../Interfaces/MongoDBWidgets.interfaces.chartSpecification';\nimport { ChartNames } from '../Interfaces/MongoDBWidgets.interfaces.names';\n\nexport const AllowedChartFilters: { [key in keyof typeof ChartNames]: AllowedMongoFilterSettings[] } = {\n numberOfStampsPerStampCardCampaignHistogram: [],\n averageStampsPerStampCardDonut: ['stampCardCampaignId'],\n SMSCampaignsTotal: ['venueId'],\n campaignSMSSentTotal: ['venueId'],\n numberOfStampsTotal: ['stampCardCampaignId', 'createdAt', 'trailingTimeframe', 'forever'],\n stampCardsRewardsClaimedTotal: ['stampCardCampaignId', 'createdAt', 'trailingTimeframe', 'forever'],\n stampCardsCreatedTotal: ['stampCardCampaignId', 'createdAt', 'trailingTimeframe', 'forever'],\n numberOfUniqueRegistrationsTotal: ['venueId', 'createdAt', 'trailingTimeframe', 'forever'],\n numberOfRegistrationsTotal: ['venueId', 'createdAt', 'trailingTimeframe', 'forever'],\n registrationsOverTime: ['venueId', 'createdAt', 'hourlyPeriodic', 'dailyPeriodic', 'trailingTimeframe', 'forever'],\n registrationsOverTimePerVenue: [\n 'venueId',\n 'createdAt',\n 'hourlyPeriodic',\n 'dailyPeriodic',\n 'trailingTimeframe',\n 'forever'\n ],\n registrationsNewOrReturningOverTime: [\n 'venueId',\n 'createdAt',\n 'hourlyPeriodic',\n 'dailyPeriodic',\n 'trailingTimeframe',\n 'forever'\n ],\n purchasesOverTime: ['venueId', 'createdAt', 'hourlyPeriodic', 'dailyPeriodic', 'trailingTimeframe', 'forever'],\n newStampCardsOverTime: [\n 'stampCardCampaignId',\n 'createdAt',\n 'hourlyPeriodic',\n 'dailyPeriodic',\n 'trailingTimeframe',\n 'forever'\n ],\n numberOfStampsOverTime: [\n 'stampCardCampaignId',\n 'createdAt',\n 'hourlyPeriodic',\n 'dailyPeriodic',\n 'trailingTimeframe',\n 'forever'\n ],\n numberOfStampsOverTimePerVenue: [\n 'stampCardCampaignId',\n 'createdAt',\n 'hourlyPeriodic',\n 'dailyPeriodic',\n 'trailingTimeframe',\n 'forever'\n ],\n numberOfStampsNewOrReturningOverTime: [\n 'createdAt',\n 'trailingTimeframe',\n 'forever',\n 'hourlyPeriodic',\n 'dailyPeriodic',\n 'stampCardCampaignId'\n ]\n};\n","import { ChartTypes } from '../Interfaces/MongoDBWidgets.interfaces.chartSpecification';\nimport { AllChartsStructure } from '../Interfaces/MongoDBWidgets.interfaces.structure';\nimport { ChartDefaultLayouts } from './ChartSpecification.DefaultLayouts';\nimport { AllowedChartFilters } from './ChartSpecification.Filters';\nimport { mongoDBRenderingSpecs } from './ChartSpecification.MongoDBRenderingSpecs';\n\nexport const ChartSpecification: AllChartsStructure = {\n registrationsOverTime: {\n type: ChartTypes.LINE,\n filters: AllowedChartFilters.registrationsOverTime,\n defaultLayout: ChartDefaultLayouts.registrationsOverTime,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.registrationsOverTimeDaily,\n dev: '9198594a-4330-4378-bbac-2c8a79f629e7',\n staging: '47afeffa-28de-40c2-ab25-fd27375b46ed',\n prod: 'ccda2643-d952-4fed-b305-ccdfd8af1922'\n },\n hourly: {\n renderingSpec: mongoDBRenderingSpecs.registrationsOverTimeHourly,\n dev: '03ef818c-0d58-413c-85c9-3708841da710',\n staging: 'a6e89c97-f00d-420f-af6a-ecd3b28adaf4',\n prod: '6765b1e3-f8c4-4347-9a69-fa2a6eb50c3d'\n },\n daily: {\n renderingSpec: mongoDBRenderingSpecs.registrationsOverTimeDaily,\n dev: '9198594a-4330-4378-bbac-2c8a79f629e7',\n staging: '47afeffa-28de-40c2-ab25-fd27375b46ed',\n prod: 'ccda2643-d952-4fed-b305-ccdfd8af1922'\n },\n weekly: {\n renderingSpec: mongoDBRenderingSpecs.registrationsOverTimeWeekly,\n dev: 'f67ae4c2-87ca-48e4-99c9-916749947893',\n staging: '2b08a05a-5826-439c-a1a4-8fd38a188823',\n prod: '1b61137b-7ea8-4ecf-90b1-71e696409911'\n },\n monthly: {\n renderingSpec: mongoDBRenderingSpecs.registrationsOverTimeMonthly,\n dev: '30a8ebf4-1dc4-4d5d-beb8-6815864ad51d',\n staging: 'b4034973-fca5-45da-aa75-8157a550cee0',\n prod: '0e1194f2-8172-4ec0-b5b0-610b0e299f56'\n },\n yearly: {\n renderingSpec: mongoDBRenderingSpecs.registrationsOverTimeYearly,\n dev: '65cd31ce-efeb-476f-8493-7212fbe15940',\n staging: '5b56d1d3-d28c-4ae9-adb3-05d51abad5c7',\n prod: 'e136fe5d-fef5-4adc-a31b-452bb31b3342'\n },\n dailyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.registrationsOverTimeWeekdayPeriodic,\n dev: 'e78f68d4-dcb5-4fd8-add9-e304ec3a753b',\n staging: 'd1836dfe-3e3b-4981-b850-0ebb5161cea0',\n prod: '710c413c-fae4-467e-b6df-33b95fe7271f'\n },\n hourlyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.registrationsOverTimeHourPeriodic,\n dev: '7063e2cb-8cd9-4f00-b122-945fcf24347e',\n staging: 'd42e405b-a63c-4ccb-ab72-bd4efc92c922',\n prod: 'a48a9129-e484-4217-aeac-f77930d6dd14'\n }\n }\n },\n registrationsOverTimePerVenue: {\n type: ChartTypes.LINE,\n filters: AllowedChartFilters.registrationsOverTimePerVenue,\n defaultLayout: ChartDefaultLayouts.registrationsOverTimePerVenue,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.registrationsOverTimePerVenueDaily,\n dev: '6633624a-59f2-49f5-8247-ed8f07c13f24',\n staging: '6633a370-49d2-4c15-8e75-d1f6146a9734',\n prod: '662166a3-3b26-42c6-8573-ed6084290c95'\n },\n hourly: {\n renderingSpec: mongoDBRenderingSpecs.registrationsOverTimePerVenueHourly,\n dev: '6633624a-59f2-4420-8a66-ed8f07c13f26',\n staging: '6633a370-49d2-4a9f-89e9-d1f6146a9736',\n prod: '59674d5c-cf35-4493-bf34-f22e872f039c'\n },\n daily: {\n renderingSpec: mongoDBRenderingSpecs.registrationsOverTimePerVenueDaily,\n dev: '6633624a-59f2-49f5-8247-ed8f07c13f24',\n staging: '6633a370-49d2-4c15-8e75-d1f6146a9734',\n prod: '662166a3-3b26-42c6-8573-ed6084290c95'\n },\n weekly: {\n renderingSpec: mongoDBRenderingSpecs.registrationsOverTimePerVenueWeekly,\n dev: '6633624a-59f2-4fb9-82ff-ed8f07c13f2a',\n staging: '6633a370-49d2-4894-8f6f-d1f6146a973a',\n prod: 'c610d1e6-a34b-492e-9d54-7c1add0435b6'\n },\n monthly: {\n renderingSpec: mongoDBRenderingSpecs.registrationsOverTimePerVenueMonthly,\n dev: '6633624a-59f2-43c6-8da2-ed8f07c13f28',\n staging: '6633a370-49d2-4fc7-8244-d1f6146a9738',\n prod: 'f72fff27-ef23-42ff-9d1b-6100d9b12dda'\n },\n yearly: {\n renderingSpec: mongoDBRenderingSpecs.registrationsOverTimePerVenueYearly,\n dev: '6633624a-59f2-499c-81b9-ed8f07c13f2c',\n staging: '6633a370-49d2-461a-819b-d1f6146a973c',\n prod: 'b2ea3170-e95e-41ea-a12b-20fbfc561fa4'\n },\n dailyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.registrationsOverTimePerVenueWeekdayPeriodic,\n dev: '6633624a-59f2-46b8-8615-ed8f07c13f2e',\n staging: '6633a370-49d2-4499-8afc-d1f6146a973e',\n prod: 'c1671299-18fc-4b4b-876c-d7db3673eacb'\n },\n hourlyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.registrationsNewOrReturningOverTimeHourPeriodic,\n dev: '6633624a-59f2-44e0-83bf-ed8f07c13f30',\n staging: '6633a370-49d2-40a7-850d-d1f6146a9740',\n prod: 'ebeb9189-7530-45c4-a635-a4c7d016fa6a'\n }\n }\n },\n registrationsNewOrReturningOverTime: {\n type: ChartTypes.LINE,\n filters: AllowedChartFilters.registrationsNewOrReturningOverTime,\n defaultLayout: ChartDefaultLayouts.registrationsNewOrReturningOverTime,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.registrationsNewOrReturningOverTimeDaily,\n dev: '64831249-1717-4ca1-812a-8659c8d19784',\n staging: '6578ab17-36db-423a-88dd-d4da6652236c',\n prod: '6578aa90-6a42-4c49-8af3-12a8d7f51d65'\n },\n hourly: {\n renderingSpec: mongoDBRenderingSpecs.registrationsNewOrReturningOverTimeHourly,\n dev: 'cb77230a-d77e-4429-a6be-d34664b2e542',\n staging: '6578ab17-36db-4ebd-86be-d4da6652237e',\n prod: '6578aa90-6a42-4cad-838f-12a8d7f51d78'\n },\n daily: {\n renderingSpec: mongoDBRenderingSpecs.registrationsNewOrReturningOverTimeDaily,\n dev: '64831249-1717-4ca1-812a-8659c8d19784',\n staging: '6578ab17-36db-423a-88dd-d4da6652236c',\n prod: '6578aa90-6a42-4c49-8af3-12a8d7f51d65'\n },\n weekly: {\n renderingSpec: mongoDBRenderingSpecs.registrationsNewOrReturningOverTimeWeekly,\n dev: '3ace09c8-dc00-4af9-9b01-aff11e63e55e',\n staging: '6578ab17-36db-4673-81a9-d4da66522378',\n prod: '6578aa90-6a42-4409-83cc-12a8d7f51d72'\n },\n monthly: {\n renderingSpec: mongoDBRenderingSpecs.registrationsNewOrReturningOverTimeMonthly,\n dev: 'ea4aaf62-9988-4090-bfb2-1f266b48dbdf',\n staging: '6578ab17-36db-4af5-8fae-d4da6652237a',\n prod: '6578aa90-6a42-4e1c-8afd-12a8d7f51d74'\n },\n yearly: {\n renderingSpec: mongoDBRenderingSpecs.registrationsNewOrReturningOverTimeYearly,\n dev: '5e151ae9-4733-4d62-986c-d100da43b852',\n staging: '6578ab17-36db-4054-8782-d4da6652237c',\n prod: '6578aa90-6a42-4324-8291-12a8d7f51d76'\n },\n dailyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.registrationsNewOrReturningOverTimeWeekdayPeriodic,\n dev: '8ffdaff7-8b62-459e-adb9-8bd3eafe3e8a',\n staging: '6578ab17-36db-4481-8a77-d4da665223a6',\n prod: '6578aa90-6a42-4b2c-840c-12a8d7f51da0'\n },\n hourlyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.registrationsNewOrReturningOverTimeHourPeriodic,\n dev: '7c89f778-8b8e-4c75-afee-b97010131be1',\n staging: '6578ab17-36db-4f77-85d7-d4da665223a8',\n prod: '6578aa90-6a42-45a7-8ef6-12a8d7f51da2'\n }\n }\n },\n purchasesOverTime: {\n type: ChartTypes.LINE,\n filters: AllowedChartFilters.purchasesOverTime,\n defaultLayout: ChartDefaultLayouts.purchasesOverTime,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.purchasesOverTimeDaily,\n dev: 'ae3d8697-1f8e-41fa-9c32-c28dee9e6b8d',\n staging: '6578ab17-36db-406c-88d5-d4da66522384',\n prod: '6578aa90-6a42-46d1-8c34-12a8d7f51d7e'\n },\n hourly: {\n renderingSpec: mongoDBRenderingSpecs.purchasesOverTimeHourly,\n dev: 'a09a0652-bd79-4315-8fc2-3b0880ecc399',\n staging: '6578ab17-36db-4b67-8334-d4da66522380',\n prod: '6578aa90-6a42-4ca6-8eb9-12a8d7f51d7a'\n },\n daily: {\n renderingSpec: mongoDBRenderingSpecs.purchasesOverTimeDaily,\n dev: 'ae3d8697-1f8e-41fa-9c32-c28dee9e6b8d',\n staging: '6578ab17-36db-406c-88d5-d4da66522384',\n prod: '6578aa90-6a42-46d1-8c34-12a8d7f51d7e'\n },\n weekly: {\n renderingSpec: mongoDBRenderingSpecs.purchasesOverTimeWeekly,\n dev: 'ca37b853-f574-4c0c-88c0-79434aa49fc6',\n staging: '6578ab17-36db-4c1a-8a5d-d4da66522382',\n prod: '6578aa90-6a42-46ac-84d1-12a8d7f51d7c'\n },\n monthly: {\n renderingSpec: mongoDBRenderingSpecs.purchasesOverTimeMonthly,\n dev: 'dda18148-7db2-428e-970d-26a2d89b3c18',\n staging: '6578ab17-36db-4797-8b09-d4da6652236e',\n prod: '6578aa90-6a42-45b3-850d-12a8d7f51d68'\n },\n yearly: {\n renderingSpec: mongoDBRenderingSpecs.purchasesOverTimeYearly,\n dev: '60741378-0eac-4972-92d1-630c1fbf1c61',\n staging: '6578ab17-36db-4264-8411-d4da66522386',\n prod: '6578aa90-6a42-46bc-80ba-12a8d7f51d80'\n },\n dailyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.purchasesOverTimeWeekdayPeriodic,\n dev: 'd70d2ce5-bba4-42cd-8307-7a63c7fb5c92',\n staging: '6578ab17-36db-4a47-8645-d4da665223aa',\n prod: '6578aa90-6a42-451a-81e8-12a8d7f51da4'\n },\n hourlyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.purchasesOverTimeHourPeriodic,\n dev: 'c8b7c0b4-b5ea-4ebf-835f-fda8207aed01',\n staging: '6578ab17-36db-4464-8bfa-d4da665223ac',\n prod: '6578aa90-6a42-49ed-802d-12a8d7f51da6'\n }\n }\n },\n newStampCardsOverTime: {\n type: ChartTypes.LINE,\n filters: AllowedChartFilters.newStampCardsOverTime,\n defaultLayout: ChartDefaultLayouts.newStampCardsOverTime,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.newStampCardsOverTimeDaily,\n dev: '90dd98f4-ce47-4a02-952b-34f157604b0f',\n staging: '6578ab17-36db-47fc-847e-d4da6652238a',\n prod: '6578aa90-6a42-484a-836f-12a8d7f51d85'\n },\n hourly: {\n renderingSpec: mongoDBRenderingSpecs.newStampCardsOverTimeHourly,\n dev: '60b56e39-5846-47ae-aab7-639f3a70cc62',\n staging: '6578ab17-36db-4ba2-8df2-d4da66522388',\n prod: '6578aa90-6a42-46b3-8b6f-12a8d7f51d82'\n },\n daily: {\n renderingSpec: mongoDBRenderingSpecs.newStampCardsOverTimeDaily,\n dev: '90dd98f4-ce47-4a02-952b-34f157604b0f',\n staging: '6578ab17-36db-47fc-847e-d4da6652238a',\n prod: '6578aa90-6a42-484a-836f-12a8d7f51d85'\n },\n weekly: {\n renderingSpec: mongoDBRenderingSpecs.newStampCardsOverTimeWeekly,\n dev: '676aa4f8-ad30-4b2b-9b48-fdf0113865e8',\n staging: '6578ab17-36db-4d06-80f1-d4da6652238c',\n prod: '6578aa90-6a42-47c2-8a38-12a8d7f51d88'\n },\n monthly: {\n renderingSpec: mongoDBRenderingSpecs.newStampCardsOverTimeMonthly,\n dev: '345aa107-7aa6-4a47-a8ba-9f36a4facb1e',\n staging: '6578ab17-36db-46ee-8e61-d4da6652238e',\n prod: '6578aa90-6a42-4edd-87e5-12a8d7f51d8a'\n },\n yearly: {\n renderingSpec: mongoDBRenderingSpecs.newStampCardsOverTimeYearly,\n dev: '363a109a-7389-4c84-b837-944ef00b6df0',\n staging: '6578ab17-36db-4dd9-837c-d4da66522390',\n prod: '6578aa90-6a42-4fb7-8c48-12a8d7f51d8c'\n },\n dailyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.newStampCardsOverTimeWeekdayPeriodic,\n dev: '2959d16f-9084-495d-8e91-7e19b829588f',\n staging: '6578ab17-36db-47ba-8f69-d4da665223ae',\n prod: '6578aa90-6a42-4023-8346-12a8d7f51da8'\n },\n hourlyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.newStampCardsOverTimeHourPeriodic,\n dev: 'b5afbda5-efb9-4e49-a298-516ee2b8e216',\n staging: '6578ab17-36db-4c85-8b26-d4da665223b0',\n prod: '6578aa90-6a42-4bae-82de-12a8d7f51daa'\n }\n }\n },\n numberOfStampsOverTime: {\n type: ChartTypes.BAR,\n filters: AllowedChartFilters.numberOfStampsOverTime,\n defaultLayout: ChartDefaultLayouts.numberOfStampsOverTime,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimeDaily,\n dev: '0453ac1c-4e7a-4823-be08-5b947fecf45c',\n staging: '6578ab17-36db-4b74-8eee-d4da66522396',\n prod: '6578aa90-6a42-4e44-8e5d-12a8d7f51d92'\n },\n hourly: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimeHourly,\n dev: 'd4558bbe-abdb-4e45-a231-6e4ef42605e6',\n staging: '6578ab17-36db-4d0e-81b2-d4da66522394',\n prod: '6578aa90-6a42-41f0-898a-12a8d7f51d90'\n },\n daily: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimeDaily,\n dev: '0453ac1c-4e7a-4823-be08-5b947fecf45c',\n staging: '6578ab17-36db-4b74-8eee-d4da66522396',\n prod: '6578aa90-6a42-4e44-8e5d-12a8d7f51d92'\n },\n weekly: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimeWeekly,\n dev: 'f6ca3c03-d229-42e0-93c7-11da938f7760',\n staging: '6578ab17-36db-4aec-8809-d4da66522398',\n prod: '6578aa90-6a42-47cb-863a-12a8d7f51d94'\n },\n monthly: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimeMonthly,\n dev: '9cb20353-f402-4f8c-9d03-996d81ef5775',\n staging: '6578ab17-36db-4393-8b93-d4da6652239a',\n prod: '6578aa90-6a42-47ed-8a60-12a8d7f51d96'\n },\n yearly: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimeYearly,\n dev: '81937974-7899-4d97-83e3-306f7cc86559',\n staging: '6578ab17-36db-4cdd-815b-d4da6652239d',\n prod: '6578aa90-6a42-4905-81f6-12a8d7f51d98'\n },\n dailyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimeWeekdayPeriodic,\n dev: 'a31cc71a-67da-4041-a1aa-70bc567a612f',\n staging: '6578ab17-36db-4e12-8762-d4da665223b3',\n prod: '6578aa90-6a42-4157-8388-12a8d7f51dac'\n },\n hourlyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimeHourPeriodic,\n dev: '0ef68175-92b3-4df6-bc07-03f00707b544',\n staging: '6578ab17-36db-44a4-85f7-d4da665223b5',\n prod: '6578aa90-6a42-4627-8458-12a8d7f51dae'\n }\n }\n },\n numberOfStampsOverTimePerVenue: {\n type: ChartTypes.BAR,\n filters: AllowedChartFilters.numberOfStampsOverTimePerVenue,\n defaultLayout: ChartDefaultLayouts.numberOfStampsOverTimePerVenue,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimePerVenueDaily,\n dev: '6633624a-59f2-4d83-83bf-ed8f07c13f34',\n staging: '6633a37c-4bbe-4bc4-8f8f-ebe3ee5aaf5c',\n prod: '5d03b000-7fd2-47e0-af7a-6cfaf1ad5ba5'\n },\n hourly: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimePerVenueHourly,\n dev: '6633624a-59f2-4b50-8622-ed8f07c13f32',\n staging: '6633a37c-4bbe-49c5-8702-ebe3ee5aaf5a',\n prod: 'a8e747e3-a9ec-4e04-b38e-6bca8adf01a9'\n },\n daily: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimePerVenueDaily,\n dev: '6633624a-59f2-4d83-83bf-ed8f07c13f34',\n staging: '6633a37c-4bbe-4bc4-8f8f-ebe3ee5aaf5c',\n prod: '5d03b000-7fd2-47e0-af7a-6cfaf1ad5ba5'\n },\n weekly: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimePerVenueWeekly,\n dev: '6633624a-59f2-47ff-8ed0-ed8f07c13f36',\n staging: '6633a37c-4bbe-46f0-822e-ebe3ee5aaf5e',\n prod: '404ff659-c3e5-43d4-9480-5fc2dbadf5d8'\n },\n monthly: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimePerVenueMonthly,\n dev: '6633624a-59f2-43e4-8e9e-ed8f07c13f38',\n staging: '6633a37c-4bbe-4874-80cf-ebe3ee5aaf60',\n prod: 'a48d902c-97cd-49d3-a897-185aed7dfa9c'\n },\n yearly: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimePerVenueYearly,\n dev: '6633624a-59f2-4814-8ce7-ed8f07c13f3a',\n staging: '6633a37c-4bbe-4ccf-8bb8-ebe3ee5aaf62',\n prod: 'de54fb59-1b30-4fa8-afb4-4371bc39dda3'\n },\n dailyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimePerVenueWeekdayPeriodic,\n dev: '6633624a-59f2-487e-8f7f-ed8f07c13f3c',\n staging: '6633a37c-4bbe-4d08-8e5c-ebe3ee5aaf64',\n prod: 'a5e5e42d-29a2-4314-a6aa-c6724ef47419'\n },\n hourlyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsOverTimePerVenueHourPeriodic,\n dev: '6633624a-59f2-4e1f-8c3e-ed8f07c13f3e',\n staging: '6633a37c-4bbe-41be-8bce-ebe3ee5aaf66',\n prod: '9d72f554-da0d-42cd-b651-7d03d6a1c2ee'\n }\n }\n },\n numberOfStampsNewOrReturningOverTime: {\n type: ChartTypes.BAR,\n filters: AllowedChartFilters.numberOfStampsNewOrReturningOverTime,\n defaultLayout: ChartDefaultLayouts.numberOfStampsNewOrReturningOverTime,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsNewOrReturningOverTimeDaily,\n dev: '8f320ec3-8334-47c4-b03e-e379e41d8686',\n staging: '370d7197-530e-464c-ace1-8b0835239b33',\n prod: 'f44a7b58-3c23-41ca-81ea-5e73d3705414'\n },\n hourly: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsNewOrReturningOverTimeHourly,\n dev: '4de2d859-e344-479a-af16-5a7198d276fd',\n staging: 'f8c4cb1b-022f-44de-b09e-08532517acf6',\n prod: '88369bee-b65b-4120-b508-ec82dc2d2485'\n },\n daily: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsNewOrReturningOverTimeDaily,\n dev: '8f320ec3-8334-47c4-b03e-e379e41d8686',\n staging: '370d7197-530e-464c-ace1-8b0835239b33',\n prod: 'f44a7b58-3c23-41ca-81ea-5e73d3705414'\n },\n weekly: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsNewOrReturningOverTimeWeekly,\n dev: '5c553e8d-2f0a-401f-abf6-cc17cbe37d0f',\n staging: '3b719850-c1a7-4e1e-8b22-73f0a82a9320',\n prod: '8e473680-ef0c-4f8a-88f1-b8e1dd1c940b'\n },\n monthly: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsNewOrReturningOverTimeMonthly,\n dev: '0497e4c6-4552-47c8-bb9c-742948b5e4a5',\n staging: '5343014d-38dd-4241-add5-9a61e467d01a',\n prod: '9f276c93-dbbc-43f8-b1fd-507c3b539959'\n },\n yearly: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsNewOrReturningOverTimeYearly,\n dev: '2f682e6e-e75f-46df-84b6-60bb4877fec3',\n staging: '90d92e82-9a55-4eb7-9d1f-ff9acfb13cea',\n prod: ''\n },\n dailyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsNewOrReturningOverTimeWeekdayPeriodic,\n dev: 'f4b8ac06-59cf-47c8-8c98-5fb2a738ded3',\n staging: 'ba417944-d184-43ac-b55b-03f3b88d1794',\n prod: '9a183199-97a5-4ccb-8f5c-7093fb78ac1e'\n },\n hourlyPeriodic: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsNewOrReturningOverTimeHourPeriodic,\n dev: 'f96fa9a1-758b-44fc-ace4-0850c38a243b',\n staging: '58b74ed9-e998-4e53-99ff-9c5fae829a38',\n prod: '99bfa8d7-6484-4dee-8106-431a0626729c'\n }\n }\n },\n campaignSMSSentTotal: {\n type: ChartTypes.NUMERIC,\n filters: AllowedChartFilters.campaignSMSSentTotal,\n defaultLayout: ChartDefaultLayouts.campaignSMSSentTotal,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.campaignSMSSentTotal,\n dev: '020d39dd-a317-497b-9a1d-7e718a661c26',\n staging: '6578ab17-36db-472d-81bb-d4da66522376',\n prod: '6578aa90-6a42-4a89-8bc1-12a8d7f51d70'\n }\n }\n },\n SMSCampaignsTotal: {\n type: ChartTypes.NUMERIC,\n filters: AllowedChartFilters.SMSCampaignsTotal,\n defaultLayout: ChartDefaultLayouts.SMSCampaignsTotal,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.SMSCampaignsTotal,\n dev: '6488539e-7e88-42d5-83f9-8101db8cdd4b',\n staging: '6578ab17-36db-4580-880a-d4da66522370',\n prod: '6578aa90-6a42-46a8-8638-12a8d7f51d6a'\n }\n }\n },\n numberOfStampsTotal: {\n type: ChartTypes.NUMERIC,\n filters: AllowedChartFilters.numberOfStampsTotal,\n defaultLayout: ChartDefaultLayouts.numberOfStampsTotal,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsTotal,\n dev: 'd039c856-5520-4834-9284-4e0200bc56a0',\n staging: '6578ab17-36db-482e-83dc-d4da6652239f',\n prod: '6578aa90-6a42-4a04-8889-12a8d7f51d9a'\n }\n }\n },\n numberOfRegistrationsTotal: {\n type: ChartTypes.NUMERIC,\n filters: AllowedChartFilters.numberOfRegistrationsTotal,\n defaultLayout: ChartDefaultLayouts.numberOfRegistrationsTotal,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.numberOfRegistrationsTotal,\n dev: 'eb02f9f7-6237-4d58-bf86-cc013ce30bf5',\n staging: '6578ab17-36db-4c1a-8c49-d4da665223b9',\n prod: '6578aa90-6a42-4cb2-81c1-12a8d7f51db2'\n }\n }\n },\n numberOfUniqueRegistrationsTotal: {\n type: ChartTypes.NUMERIC,\n filters: AllowedChartFilters.numberOfUniqueRegistrationsTotal,\n defaultLayout: ChartDefaultLayouts.numberOfUniqueRegistrationsTotal,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.numberOfUniqueRegistrationsTotal,\n dev: '64fb429f-a9f5-4fe5-821f-f8f81687ee5a',\n staging: '6578ab17-36db-4bc8-8228-d4da665223b7',\n prod: '6578aa90-6a42-4287-8243-12a8d7f51db0'\n }\n }\n },\n stampCardsRewardsClaimedTotal: {\n type: ChartTypes.NUMERIC,\n filters: AllowedChartFilters.stampCardsRewardsClaimedTotal,\n defaultLayout: ChartDefaultLayouts.stampCardsRewardsClaimedTotal,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.stampCardsRewardsClaimedTotal,\n dev: '5cc1031f-dfb8-4655-bdc7-9d58f7b690ca',\n staging: '6578ab17-36db-4dd4-83e6-d4da66522374',\n prod: '6578aa90-6a42-4494-814d-12a8d7f51d6e'\n }\n }\n },\n stampCardsCreatedTotal: {\n type: ChartTypes.NUMERIC,\n filters: AllowedChartFilters.stampCardsCreatedTotal,\n defaultLayout: ChartDefaultLayouts.stampCardsCreatedTotal,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.stampCardsCreatedTotal,\n dev: '648855fa-fe03-47c9-8e74-9786d2539ec9',\n staging: '6578ab17-36db-4e2f-8fea-d4da66522372',\n prod: '6578aa90-6a42-4d50-8ad6-12a8d7f51d6c'\n }\n }\n },\n averageStampsPerStampCardDonut: {\n type: ChartTypes.DONUT,\n filters: AllowedChartFilters.averageStampsPerStampCardDonut,\n defaultLayout: ChartDefaultLayouts.averageStampsPerStampCardDonut,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.averageStampsPerStampCardDonut,\n dev: 'a0711600-deba-4476-be60-0fd0acfdf1a1',\n staging: '6578ab17-36db-417a-87f5-d4da665223a4',\n prod: '6578aa90-6a42-42f2-8419-12a8d7f51d9e'\n }\n }\n },\n numberOfStampsPerStampCardCampaignHistogram: {\n type: ChartTypes.HISTOGRAM,\n filters: AllowedChartFilters.numberOfStampsPerStampCardCampaignHistogram,\n defaultLayout: ChartDefaultLayouts.numberOfStampsPerStampCardCampaignHistogram,\n MongoDBRefsAndRenderingSpec: {\n default: {\n renderingSpec: mongoDBRenderingSpecs.numberOfStampsPerStampCardCampaignHistogram,\n dev: '10359420-07cc-4e79-90ca-09dc05763d5e',\n staging: '6578ab17-36db-4248-81c0-d4da66522392',\n prod: '6578aa90-6a42-47c4-8aa6-12a8d7f51d8e'\n }\n }\n }\n};\n","import { RenderingSpec } from '@mongodb-js/charts-embed-dom';\n\nimport { ChartsWithVariants } from './MongoDBWidgets.interfaces.names';\n\nexport const ChartTypes = {\n LINE: 'LINE',\n NUMERIC: 'NUMERIC',\n TABLE: 'TABLE',\n DONUT: 'DONUT',\n PIE: 'PIE',\n BAR: 'BAR',\n BAR_STACKED: 'BAR_STACKED',\n BAR_GROUPED: 'BAR_GROUPED',\n HISTOGRAM: 'HISTOGRAM',\n SCATTER: 'SCATTER'\n} as const;\n\nexport const CHART_VERSION = 1 as const;\n\nexport interface ChartPresetPerCountry {\n se: RenderingSpec;\n en: RenderingSpec;\n}\n\nexport interface ChartReferenceAndPreset {\n renderingSpec: ChartPresetPerCountry;\n dev: string;\n staging: string;\n prod: string;\n}\n\nexport type ChartReferenceEnvironments = keyof Omit;\n\nexport const timeBasedChartVariations = [\n 'default', // MUST ALWAYS BE PRESENT\n 'hourly',\n 'daily',\n 'weekly',\n 'monthly',\n 'yearly',\n 'hourlyPeriodic',\n 'dailyPeriodic'\n] as const;\nexport type TimeBasedChartVariations = (typeof timeBasedChartVariations)[number];\n\nexport const allowedMongoFilterSettings = [\n // Time based filters\n 'forever',\n 'createdAt',\n 'trailingTimeframe',\n 'hourlyPeriodic',\n 'dailyPeriodic',\n\n // Collection filters\n 'venueId',\n 'stampCardCampaignId',\n 'isFirst',\n 'owner',\n 'endpoint',\n 'state'\n] as const;\nexport type AllowedMongoFilterSettings = (typeof allowedMongoFilterSettings)[number];\n\nexport type MongoDBRenderingSpecs = {\n [key in keyof typeof ChartsWithVariants]: {\n [key2 in keyof ChartPresetPerCountry]: RenderingSpec & { title: string };\n };\n};\n","import { DashboardItemLayout } from 'views/Dashboard/Interfaces/Dashboard.layout';\n\nimport { GenerateLayout } from '../helpers';\nimport { PayAttWidgetNames } from './PayAttWidgets.names';\n\nconst SizeSettingsCalculations = { w: 10, h: 5, minW: 4, minH: 4 };\n\nexport const PayAttWidgetDefaultLayouts: { [key in keyof typeof PayAttWidgetNames]: DashboardItemLayout } = {\n sendSMSCampaign: GenerateLayout({ layoutType: PayAttWidgetNames.sendSMSCampaign, minW: 6, minH: 9, w: 9, h: 9 }),\n numberOfStampsAndStampCardsSentence: GenerateLayout({\n layoutType: PayAttWidgetNames.numberOfStampsAndStampCardsSentence,\n requiresStampCardStats: true,\n h: 3,\n w: 6,\n minW: 2,\n minH: 2\n }),\n increasedRevenueBasedOnVisits: GenerateLayout({\n layoutType: PayAttWidgetNames.increasedRevenueBasedOnVisits,\n ...SizeSettingsCalculations\n }),\n increasedRevenueBasedOnSMSCampaign: GenerateLayout({\n layoutType: PayAttWidgetNames.increasedRevenueBasedOnSMSCampaign,\n ...SizeSettingsCalculations\n }),\n increasedRevenueBasedOnStampCardCampaign: GenerateLayout({\n layoutType: PayAttWidgetNames.increasedRevenueBasedOnStampCardCampaign,\n ...SizeSettingsCalculations\n })\n};\n","import { RESPONSIVE_COLUMNS } from '../Interfaces/Dashboard.constants';\nimport { DashboardItemLayout } from '../Interfaces/Dashboard.layout';\nimport { AllChartFilters } from './MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.filters';\nimport { ChartNames } from './MongoDBWidgets/Interfaces/MongoDBWidgets.interfaces.names';\nimport { PayAttWidgetNames } from './PayAttWidgets/PayAttWidgets.names';\n\nexport interface GenerateLayoutProps {\n layoutType: keyof typeof PayAttWidgetNames | keyof typeof ChartNames;\n requiresStampCardStats?: boolean;\n minW?: number;\n minH?: number;\n maxW?: number;\n maxH?: number;\n w?: number;\n h?: number;\n x?: number;\n y?: number;\n isDraggable?: boolean;\n isResizable?: boolean;\n isStatic?: boolean;\n filter?: AllChartFilters;\n}\nexport const CloseGridItem = (\n e: React.MouseEvent,\n removeGridItem: (gridId: string) => void\n) => {\n // Traverse the DOM tree to find the parent element with the data-grid-id attribute\n let { parentElement } = e.currentTarget;\n while (parentElement && parentElement.getAttribute('data-grid-id') === null) {\n parentElement = parentElement.parentElement;\n }\n\n if (parentElement) {\n const gridId = parentElement.getAttribute('data-grid-id');\n\n if (gridId) removeGridItem(gridId);\n }\n};\n\nexport const GenerateLayout = ({\n layoutType,\n requiresStampCardStats = false,\n minW = 1,\n minH = 1,\n maxW = RESPONSIVE_COLUMNS.xl,\n maxH = 40,\n w = 9,\n h = 7,\n x = 0,\n y = 0,\n isDraggable = true,\n isResizable = true,\n isStatic = false,\n filter\n}: GenerateLayoutProps): DashboardItemLayout => {\n const item: DashboardItemLayout = {\n // i is calculated dynamically when added to dashboard\n i: '',\n layoutType,\n x,\n y,\n w,\n h,\n minW,\n minH,\n maxW,\n maxH,\n isDraggable,\n isResizable,\n static: isStatic,\n requiresStampCardStats,\n filter: filter || undefined\n };\n\n if (item.w > RESPONSIVE_COLUMNS.xl) {\n console.info(\n `Width of ${layoutType} is larger than the maximum number of columns for breakpoint xl, setting to ${RESPONSIVE_COLUMNS.xl}`\n );\n item.w = RESPONSIVE_COLUMNS.xl;\n } else if (item.w < 1) {\n console.info(`Width of ${layoutType} may not be negative, setting to 1`);\n item.w = 1;\n }\n\n if (item.minW > RESPONSIVE_COLUMNS.xl) {\n console.info(\n `Minimum width of ${layoutType} is larger than the maximum number of columns for breakpoint xl, setting to ${RESPONSIVE_COLUMNS.xl}`\n );\n item.minW = RESPONSIVE_COLUMNS.xl;\n } else if (item.minW < 1) {\n console.info(`Minimum width of ${layoutType} may not be negative, setting to 1`);\n item.minW = 1;\n }\n\n if (item.maxW > RESPONSIVE_COLUMNS.xl) {\n console.info(\n `Maximum width of ${layoutType} is larger than the minimum number of columns for breakpoint xl, setting to ${RESPONSIVE_COLUMNS.xl}`\n );\n item.maxW = RESPONSIVE_COLUMNS.xl;\n } else if (item.maxW < 1) {\n console.info(`Maximum width of ${layoutType} may not be negative, setting to 1`);\n item.minW = 1;\n }\n\n if (item.w < item.minW) {\n console.info(\n `Minimum width of ${layoutType} may not be bigger than width, setting minimum width to match width`\n );\n item.minW = item.w;\n }\n\n if (item.w > item.maxW) {\n console.info(\n `Maximum width of ${layoutType} may not be smaller than width, setting maximum width to match width`\n );\n item.maxW = item.w;\n }\n\n return item;\n};\n","import React from 'react';\nimport { TooltipRenderProps } from 'react-joyride';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box, Button, Typography } from '@mui/material';\n\nimport { JOYRIDE_OPTIONS } from 'Joyride/JoyridePayAtt';\nimport LogoWhite from 'assets/images/PayAtt_logo_white.svg';\n\nimport { CenteredFlexBox, VerticalCenteredFlexBox } from 'generalComponents/BoxModifications';\n\nconst TooltipFooter: React.FC> = ({\n continuous,\n index,\n backProps,\n closeProps,\n primaryProps\n}) => {\n return (\n \n {index > 0 && (\n \n )}\n {continuous && (\n \n \n \n )}\n {!continuous && (\n \n )}\n \n );\n};\n\nexport const WelcomeTooltip: React.FC = ({ tooltipProps, ...rest }) => {\n const screenWidth = window.innerWidth;\n\n let bgImgWidth = 740;\n let bgImgHeight = 416;\n\n if (screenWidth <= bgImgWidth + 20) {\n bgImgWidth *= 0.7;\n bgImgHeight *= 0.7;\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n
\n );\n};\n","import { Step } from 'react-joyride';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box } from '@mui/material';\n\nimport { CreateIntroStep, HomepageMainIntroStepLength } from 'Joyride/JoyridePayAtt.constants';\n\nimport { CenteredFlexBox } from 'generalComponents/BoxModifications';\n\nimport { WelcomeTooltip } from './Home.WelcomeStep.Tooltip';\n\ntype HomepageIntroSteps = Tuple;\n\nconst createIntroStep = (count: number, step?: CreateIntroStep): Step => {\n return {\n ...step,\n disableBeacon: true,\n disableScrolling: step?.disableScrolling || true,\n target: `.home-intro-step-${count}`,\n title:\n step?.title === null\n ? undefined\n : step?.title || ,\n content:\n step?.content === null\n ? undefined\n : step?.content || \n };\n};\n\nexport const homeIntroSteps: HomepageIntroSteps = [\n createIntroStep(1, {\n placement: 'center',\n styles: { overlay: { backgroundColor: '#000000c2' } },\n tooltipComponent: (props) => \n }),\n createIntroStep(2, {\n spotlightClicks: true,\n placement: 'left-start',\n styles: { spotlight: { padding: '10px 10px 100px 10px' }, tooltipContent: { textAlign: 'left' } },\n title: (\n \n \n \n \n \n \n ),\n content: \n }),\n createIntroStep(3, { placement: 'left-start' }),\n createIntroStep(4, { placement: 'left-start', styles: { tooltipContent: { textAlign: 'left' } } }),\n createIntroStep(5, {\n placement: 'bottom',\n styles: { tooltip: { width: '700px', maxWidth: '80%' }, tooltipContent: { textAlign: 'left' } }\n }),\n createIntroStep(6, {\n placement: 'right',\n spotlightPadding: 0,\n styles: { tooltipContent: { textAlign: 'left' } },\n content: \n }),\n createIntroStep(7, { placement: 'left-start', styles: { tooltipContent: { textAlign: 'left' } } }),\n createIntroStep(8, { placement: 'right-end' }),\n createIntroStep(9, { placement: 'right', spotlightPadding: 0, styles: { tooltipContent: { textAlign: 'left' } } }),\n createIntroStep(10, {\n placement: 'right',\n spotlightPadding: 0,\n styles: { tooltip: { width: '700px', maxWidth: '80%' }, tooltipContent: { textAlign: 'left' } }\n }),\n createIntroStep(11, {\n placement: 'right',\n spotlightPadding: 0,\n styles: { tooltip: { width: '700px', maxWidth: '80%' }, tooltipContent: { textAlign: 'left' } }\n }),\n createIntroStep(12, { placement: 'right', spotlightPadding: 0, styles: { tooltipContent: { textAlign: 'left' } } }),\n createIntroStep(13, {\n placement: 'center',\n styles: { tooltipContent: { textAlign: 'left' } },\n content: \n })\n];\n\n// Start at 1, just like JoyRide step array\nexport const introStepHome = (val: number) => {\n const { target } = homeIntroSteps[val - 1];\n\n if (typeof target === 'string') return target.substring(1);\n\n throw new Error('Cannot call introStepHome on a step with a target set to JSX.Element');\n};\n","import { Step } from 'react-joyride';\nimport { Translate } from 'react-redux-i18n';\n\nimport { HomepageSettingsIntroStepLength } from 'Joyride/JoyridePayAtt.constants';\n\ntype HomepageSettingsIntroSteps = Tuple;\n\nconst createIntroStep = (\n count: number,\n step?: Omit & Partial>\n): Step => {\n return {\n ...step,\n disableBeacon: true,\n disableScrolling: step?.disableScrolling || true,\n target: `.homepage-settings-intro-step-${count}`,\n title:\n step?.title === null\n ? undefined\n : step?.title || ,\n content:\n step?.content === null\n ? undefined\n : step?.content || \n };\n};\n\nexport const homeWidgetMenuIntroSteps: HomepageSettingsIntroSteps = [\n createIntroStep(1, {\n placement: 'left',\n spotlightPadding: 0,\n styles: { tooltipContent: { textAlign: 'left' } }\n }),\n createIntroStep(2, {\n placement: 'left',\n spotlightClicks: true,\n spotlightPadding: 0,\n styles: { tooltipContent: { textAlign: 'left' } },\n content: \n }),\n createIntroStep(3, { placement: 'left-end', spotlightClicks: true }),\n createIntroStep(4, {\n placement: 'left-end',\n spotlightClicks: true,\n styles: { tooltipContent: { textAlign: 'left' } }\n }),\n createIntroStep(5, {\n placement: 'left-end',\n spotlightClicks: true,\n styles: { tooltipContent: { textAlign: 'left' } }\n }),\n createIntroStep(6, {\n placement: 'left-end',\n spotlightClicks: true,\n styles: { tooltipContent: { textAlign: 'left' } }\n }),\n createIntroStep(7, {\n placement: 'left-end',\n spotlightClicks: true,\n spotlightPadding: 0,\n styles: { tooltipContent: { textAlign: 'left' } },\n content: \n }),\n createIntroStep(8, {\n placement: 'top',\n spotlightPadding: 0,\n styles: { spotlight: { paddingBottom: '50px', marginTop: '-6px' } }\n })\n];\n\n// Start at 1, just like JoyRide step array. Returns the target without the leading period\nexport const introStepHomeSettings = (val: number) => {\n const { target } = homeWidgetMenuIntroSteps[val - 1];\n\n if (typeof target === 'string') return target.substring(1);\n\n throw new Error('Cannot call introStepHomeWidget on a step with a target set to JSX.Element');\n};\n","import { createContext, useCallback, useContext, useMemo, useState } from 'react';\nimport { ACTIONS, CallBackProps, EVENTS, STATUS } from 'react-joyride';\n\nexport const INTRO_WIDGET_MENU_CLASS_NAMES = {\n scrollContainer: 'payatt-widget-menu-scroll-container',\n backgroundImage: 'payatt-widget-menu-row-backgroundImage',\n trailingOrDatePickersSelector: 'payatt-widget-menu-row-trailingOrDatepickerSelector',\n venueSelector: 'payatt-widget-menu-row-venueSelector',\n stampCardSelector: 'payatt-widget-menu-row-campaignSelector',\n periodic: 'payatt-widget-menu-row-periodic',\n apply: 'payatt-widget-menu-row-submitButton'\n};\n\ninterface HomeWidgetMenuJoyrideContext {\n stepIndex: number;\n setStepIndex: React.Dispatch>;\n isRunning: boolean;\n setIsRunning: React.Dispatch>;\n isManuallyStartedIntro: boolean;\n setIsManuallyStartedIntro: React.Dispatch>;\n handleJoyrideCallback: (data: CallBackProps) => void;\n}\n\nconst scrollToElement = (elementClassName?: string) => {\n const container = document.querySelector(`.${INTRO_WIDGET_MENU_CLASS_NAMES.scrollContainer}`);\n\n if (!elementClassName && container) return container.scroll(0, 0);\n\n const child = document.querySelector(`.${elementClassName}`);\n if (container && child) {\n const heightToScroll = container.scrollTop + child.getBoundingClientRect().top;\n container.scroll(0, heightToScroll);\n }\n};\n\nexport const HomeWidgetMenuJoyrideContext = createContext(null);\nexport const HomeWidgetMenuJoyrideContextProvider: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const [stepIndex, setStepIndex] = useState(0);\n const [isRunning, setIsRunning] = useState(false);\n const [isManuallyStartedIntro, setIsManuallyStartedIntro] = useState(false);\n\n const handleJoyrideCallback = useCallback((data: CallBackProps) => {\n const { action, index, type, status } = data;\n\n if (EVENTS.STEP_BEFORE === type) {\n if (action === ACTIONS.NEXT || action === ACTIONS.PREV) {\n if (index === 1) scrollToElement();\n if (index === 2) scrollToElement();\n if (index === 3) scrollToElement(INTRO_WIDGET_MENU_CLASS_NAMES.trailingOrDatePickersSelector);\n if (index === 4) scrollToElement(INTRO_WIDGET_MENU_CLASS_NAMES.venueSelector);\n if (index === 5) scrollToElement(INTRO_WIDGET_MENU_CLASS_NAMES.stampCardSelector);\n if (index === 6) scrollToElement(INTRO_WIDGET_MENU_CLASS_NAMES.periodic);\n if (index === 7) scrollToElement(INTRO_WIDGET_MENU_CLASS_NAMES.apply);\n }\n }\n\n // Handle what to do when the tour is finished or skipped:\n if ([STATUS.FINISHED, STATUS.SKIPPED].includes(status as any)) {\n // Need to set our running state to false, so we can restart if we click start again.\n setIsRunning(false);\n setStepIndex(0);\n return;\n }\n\n // Handle what to do when a Joyride button is clicked (eg 'Next', close, 'Back', etc), or if a Joyride button is clicked and the target for the next step doesn't exist.\n if ([EVENTS.STEP_AFTER, EVENTS.TARGET_NOT_FOUND].includes(type as any)) {\n const newIndex = index + (action === ACTIONS.PREV ? -1 : 1);\n setStepIndex(newIndex);\n }\n }, []);\n\n const value = useMemo(\n () => ({\n stepIndex,\n setStepIndex,\n isRunning,\n setIsRunning,\n isManuallyStartedIntro,\n setIsManuallyStartedIntro,\n handleJoyrideCallback\n }),\n [stepIndex, isRunning, isManuallyStartedIntro, handleJoyrideCallback]\n );\n\n return {children};\n};\n\nexport const useHomeWidgetMenuJoyrideContext = () => {\n const homeWidgetMenuJoyrideContext = useContext(HomeWidgetMenuJoyrideContext);\n\n if (!homeWidgetMenuJoyrideContext) {\n throw new Error('No HomeWidgetMenuJoyrideContext.Provider found when calling useHomeWidgetMenuJoyrideContext');\n }\n\n return homeWidgetMenuJoyrideContext;\n};\n","import { I18n, Translate } from 'react-redux-i18n';\nimport { toast } from 'react-toastify';\n\nimport { ChevronRight, Menu } from '@mui/icons-material';\nimport SaveIcon from '@mui/icons-material/Save';\nimport { Box, CircularProgress, IconButton, ListItem, Tooltip } from '@mui/material';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\n\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\n\nimport { FlexBox, VerticalCenteredFlexBox } from 'generalComponents/BoxModifications';\nimport { saveSMSSuggestion } from 'views/IntelliSms/helpers/api';\nimport { SMSBoxProps } from 'views/IntelliSms/helpers/interfaces';\n\nimport { SummaryTimeInterval } from './dialogs/Summary/Summary.recipientFilters';\nimport { addSuffixToMessage, getMessageWithoutSuffix, getSuffix } from './helpers/MessageUrlSuffixes';\nimport { TARGET_GROUP, TARGET_GROUP_GENERAL_ENUM, TARGET_GROUP_TYPE } from './helpers/targetGroupEnums';\n\nconst TopBar: React.FC<{\n saveSuggestion: () => void;\n isActive: boolean;\n openMenu: (event: React.MouseEvent) => void;\n}> = ({ saveSuggestion, openMenu, isActive }) => {\n return (\n \n \n\n {isActive ? (\n }\n placement=\"top\"\n arrow>\n \n \n \n \n ) : (\n \n \n \n )}\n\n {isActive ? (\n } placement=\"top\" arrow>\n \n \n \n \n ) : (\n \n \n \n )}\n \n );\n};\n\nconst SMSSummaryText = ({ filters }: Pick) => {\n const targetFilters = filters?.preSelectedTargetOptions;\n const venueFilters = filters?.preSelectedVenueOptions;\n const stampCardFilters = filters?.preSelectedStampCardOptions;\n const preSelectedDates = filters?.preSelectedDates;\n\n const getFilterSummaryTranslations = (el: TARGET_GROUP_TYPE) => {\n if (el === TARGET_GROUP.Everyone) {\n if (!stampCardFilters || !venueFilters) {\n return ;\n }\n\n // Everyone from all stamp cards and venues\n if (stampCardFilters.length === 0 && venueFilters.length === 0) {\n return ;\n }\n\n // Everyone from specific stamp card (and maybe venue too)\n if (stampCardFilters.length > 0) {\n return ;\n }\n\n // Everyone from specific venue\n if (venueFilters.length > 0) {\n return ;\n }\n }\n\n if (\n el === TARGET_GROUP.TimeInterval &&\n preSelectedDates &&\n preSelectedDates.startTime?.hour.length &&\n preSelectedDates.startTime?.min.length &&\n preSelectedDates.endTime?.hour.length &&\n preSelectedDates.endTime?.min.length\n ) {\n return (\n \n {' '}\n \n \n );\n }\n\n return ;\n };\n\n const singleTargetFilterSummary = () => {\n if (!targetFilters || targetFilters.length !== 1) return null;\n\n return {getFilterSummaryTranslations(targetFilters[0])};\n };\n\n const multipleTargetFilterSummary = () => {\n if (!targetFilters || targetFilters.length <= 1) return null;\n\n return targetFilters.slice(3).map((el) => (\n \n \n \n \n \n {getFilterSummaryTranslations(el)}\n \n \n ));\n };\n\n const noTargetFilterSummary = () => {\n if (targetFilters && targetFilters.length > 0) return null;\n\n return (\n \n {getFilterSummaryTranslations(TARGET_GROUP_GENERAL_ENUM.Everyone)}\n \n );\n };\n\n return (\n \n {singleTargetFilterSummary()}\n {multipleTargetFilterSummary()}\n {noTargetFilterSummary()}\n \n );\n};\n\nexport const SMSBox = ({\n count,\n debounced,\n loading,\n message,\n opacity,\n isActive,\n setActive,\n setMessage,\n filters,\n hideTextSummary,\n includeStampCardUrl,\n includeUnregUrl,\n openMenu\n}: SMSBoxProps) => {\n const queryClient = useQueryClient();\n\n const { mutate } = useMutation({\n mutationFn: async (currentMessage: string) => {\n await saveSMSSuggestion(currentMessage);\n },\n onSuccess: async () => {\n await queryClient.invalidateQueries({ queryKey: ['last10SavedSuggestions'] });\n toast.success(, { autoClose: 5000 });\n },\n onError: (error) => {\n console.error(error);\n toast.error(, { autoClose: 5000 });\n }\n });\n\n const saveSuggestion = () => {\n if (message.length === 0) {\n toast.warning();\n return;\n }\n mutate(message);\n };\n\n return (\n \n {loading ? (\n \n ) : (\n <>\n \n\n {\n const suffix = getSuffix({ includeStampCardUrl, includeUnregUrl });\n\n try {\n const val = getMessageWithoutSuffix({\n includeStampCardUrl,\n includeUnregUrl,\n message: e.target.value,\n suffix\n });\n\n debounced(val);\n setMessage({ currentMessage: val, unmodifiedSuggestion: false });\n } catch {\n toast.warning(\n ,\n {\n autoClose: 3000\n }\n );\n }\n }}\n />\n\n \n \n \n \n\n \n \n \n \n\n {!hideTextSummary && }\n \n )}\n \n );\n};\n","import { createContext, useCallback, useContext, useMemo, useReducer, useState } from 'react';\nimport { I18n } from 'react-redux-i18n';\n\nimport { EventInput } from '@fullcalendar/core';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\n\nimport { VenuesInterface } from 'store/features/merchantAndVenues/handlers';\nimport { billingSettingsSelector, merchantSelector, stampCardsSelector, venuesSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { countSMSCharacters } from 'utils/smsLength';\nimport { getScheduledCampaigns } from 'views/IntelliSms/helpers/api';\nimport {\n DEFAULT_FILTERS,\n IntelliSmsQueryKeys,\n boxesOpacityHalfed,\n defaultBoxOpacity\n} from 'views/IntelliSms/helpers/constants';\nimport {\n ActiveBox,\n ActiveBoxes,\n SMSBoxState,\n SelectionOption,\n SmsContextProps,\n SummaryDataResponse\n} from 'views/IntelliSms/helpers/interfaces';\n\nexport const convertVenueToVenueOption = (venue: VenuesInterface) => {\n return {\n label: venue.venueTitle,\n value: venue.id,\n POSIds: venue.POS.map((P) => P.id)\n };\n};\n\nconst SMSCampaignContext = createContext(undefined);\n\nconst boxesFn = (curr: SMSBoxState, next: Partial) => ({ ...curr, ...next });\nconst defaultBoxesState: SMSBoxState = {\n currentMessage: 'Loading...',\n count: countSMSCharacters('Loading...'),\n filters: DEFAULT_FILTERS,\n unmodifiedSuggestion: true,\n intelliSmsSuggestion: '',\n includeStampCardUrl: false,\n includeUnregUrl: false\n};\n\nexport const SMSCampaignProvider: React.FC = ({ children }) => {\n const scheduledCampaignsQueryResult = useQuery({\n staleTime: 1000 * 60 * 2,\n queryKey: [IntelliSmsQueryKeys.ScheduledCampaigns],\n queryFn: getScheduledCampaigns\n });\n\n const query = useQueryClient();\n const state = store.getState();\n\n const merchant = merchantSelector(state);\n const venuesFromStore = venuesSelector(state);\n const stampCardCampaignsFromStore = stampCardsSelector({\n state,\n includeFuture: false,\n includeNotActivated: false,\n includeExpired: true,\n includeDisabled: true\n });\n const globalSettings = billingSettingsSelector(state);\n\n const noneSCSelected = useMemo(\n () => ({ label: I18n.t('campaigns.filtersModal.none'), value: 'none', POSIds: [] }),\n []\n );\n\n const [box1State, updateBox1State] = useReducer(boxesFn, defaultBoxesState);\n const [box2State, updateBox2State] = useReducer(boxesFn, defaultBoxesState);\n const [box3State, updateBox3State] = useReducer(boxesFn, defaultBoxesState);\n\n const [messageBoxOpacity, setMessageBoxOpacity] = useState>(defaultBoxOpacity);\n\n const [activeBox, setActiveBox] = useState(ActiveBoxes.box1);\n const [scheduledCampaign, setScheduledCampaign] = useState(false);\n const [urlShortenerDialogOpen, setUrlShortenerDialogOpen] = useState(false);\n const [savedSuggestionsOpen, setSavedSuggestionsOpened] = useState(false);\n const [filtersModalOpen, setFiltersModalOpen] = useState(false);\n const [everyone, setEveryone] = useState(true);\n const [stampCardFilterSelected, setStampCardFilterSelected] = useState(false);\n const [openSMSSummary, setOpenSMSSummary] = useState(false);\n const [openScheduler, setOpenScheduler] = useState(false);\n const [venueOptions, setVenueOptions] = useState([]);\n const [targetOptions, setTargetOptions] = useState([]);\n const [selectedStampCardCampaigns, setSelectedStampCardCampaigns] = useState([noneSCSelected]);\n const [selectedVenues, setSelectedVenues] = useState(\n venuesFromStore.length === 1 ? [convertVenueToVenueOption(venuesFromStore[0])] : []\n );\n const [selectedTargetFilters, setSelectedTargetFilters] = useState([]);\n const [events, setEvents] = useState([]);\n const [summaryData, setSummaryData] = useState(null);\n const [openPopper, setOpenPopper] = useState(false);\n const [refreshFilters, setRefreshFilters] = useState(0);\n\n const [timeIntervalDialogOpen, setTimeIntervalDialogOpen] = useState(false);\n\n const [editTextDialogOpen, setEditTextDialogOpen] = useState(false);\n\n const [acceptedExtraChanges, setAcceptedExtraCharges] = useState(false);\n\n const boxStateMap = useMemo(\n () => ({ box1: box1State, box2: box2State, box3: box3State }),\n [box1State, box2State, box3State]\n );\n\n const { currentMessage } = boxStateMap[activeBox];\n\n const updateActiveBoxState = useCallback(\n (args: Partial) => {\n if (activeBox === ActiveBoxes.box1) updateBox1State(args);\n if (activeBox === ActiveBoxes.box2) updateBox2State(args);\n if (activeBox === ActiveBoxes.box3) updateBox3State(args);\n },\n [activeBox]\n );\n\n const reset = useCallback(() => {\n setScheduledCampaign(false);\n setUrlShortenerDialogOpen(false);\n setSavedSuggestionsOpened(false);\n setFiltersModalOpen(false);\n setEveryone(true);\n setStampCardFilterSelected(false);\n setOpenSMSSummary(false);\n setOpenScheduler(false);\n setOpenPopper(false);\n setEditTextDialogOpen(false);\n setAcceptedExtraCharges(false);\n setVenueOptions([]);\n setTargetOptions([]);\n setSelectedStampCardCampaigns([noneSCSelected]);\n setSelectedVenues(venuesFromStore.length === 1 ? [convertVenueToVenueOption(venuesFromStore[0])] : []);\n setSelectedTargetFilters([]);\n setEvents([]);\n setSummaryData(null);\n setActiveBox(ActiveBoxes.box1);\n setMessageBoxOpacity(defaultBoxOpacity);\n setTimeIntervalDialogOpen(false);\n\n updateBox1State({ includeStampCardUrl: false, includeUnregUrl: false });\n updateBox2State({ includeStampCardUrl: false, includeUnregUrl: false });\n updateBox3State({ includeStampCardUrl: false, includeUnregUrl: false });\n\n query.refetchQueries({ queryKey: [IntelliSmsQueryKeys.ScheduledCampaigns] });\n }, [noneSCSelected, query, venuesFromStore]);\n\n const switchActiveBox = useCallback(\n (box: ActiveBox) => () => {\n setActiveBox(box);\n setMessageBoxOpacity({ ...boxesOpacityHalfed, [box]: 1 });\n },\n []\n );\n\n const data = useMemo(\n () => ({\n acceptedExtraChanges,\n activeBox,\n box1State,\n box2State,\n box3State,\n boxStateMap,\n currentMessage,\n editTextDialogOpen,\n events,\n everyone,\n filtersModalOpen,\n globalSettings,\n merchant,\n messageBoxOpacity,\n noneSCSelected,\n openPopper,\n openScheduler,\n openSMSSummary,\n refreshFilters,\n reset,\n savedSuggestionsOpen,\n scheduledCampaign,\n selectedStampCardCampaigns,\n selectedTargetFilters,\n selectedVenues,\n setAcceptedExtraCharges,\n setActiveBox,\n setEditTextDialogOpen,\n setEvents,\n setEveryone,\n setFiltersModalOpen,\n setOpenPopper,\n setOpenScheduler,\n setOpenSMSSummary,\n setRefreshFilters,\n setSavedSuggestionsOpened,\n setScheduledCampaign,\n setSelectedStampCardCampaigns,\n setSelectedTargetFilters,\n setSelectedVenues,\n setStampCardFilterSelected,\n setSummaryData,\n setTargetOptions,\n setUrlShortenerDialogOpen,\n setVenueOptions,\n stampCardCampaignsFromStore,\n stampCardFilterSelected,\n summaryData,\n switchActiveBox,\n targetOptions,\n updateActiveBoxState,\n updateBox1State,\n updateBox2State,\n updateBox3State,\n urlShortenerDialogOpen,\n venueOptions,\n venuesFromStore,\n timeIntervalDialogOpen,\n setTimeIntervalDialogOpen,\n scheduledCampaignsQueryResult\n }),\n [\n acceptedExtraChanges,\n activeBox,\n box1State,\n box2State,\n box3State,\n boxStateMap,\n currentMessage,\n editTextDialogOpen,\n events,\n everyone,\n filtersModalOpen,\n globalSettings,\n merchant,\n messageBoxOpacity,\n noneSCSelected,\n openPopper,\n openScheduler,\n openSMSSummary,\n refreshFilters,\n reset,\n savedSuggestionsOpen,\n scheduledCampaign,\n selectedStampCardCampaigns,\n selectedTargetFilters,\n selectedVenues,\n stampCardCampaignsFromStore,\n stampCardFilterSelected,\n summaryData,\n switchActiveBox,\n targetOptions,\n updateActiveBoxState,\n urlShortenerDialogOpen,\n venueOptions,\n venuesFromStore,\n timeIntervalDialogOpen,\n scheduledCampaignsQueryResult\n ]\n );\n\n return {children};\n};\n\nexport const useSMSCampaignContext = () => {\n const smsCampaignContext = useContext(SMSCampaignContext);\n\n if (!smsCampaignContext) {\n throw new Error('No SMSCampaignContext.Provider found when calling useSMSCampaignContext.');\n }\n\n return smsCampaignContext;\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { Button } from '@mui/material';\n\nimport { HorizontalCenteredFlexBox } from 'generalComponents/BoxModifications';\nimport { ActionsSectionProps } from 'views/IntelliSms/dialogs/EventPopper/interfaces';\nimport { introStepCalendar } from 'views/IntelliSms/overview/Joyride/Overview.Joyride.Steps';\n\nexport const ActionsSection = ({ disabled, onDelete, onUpdate, showDelete }: ActionsSectionProps) => {\n return (\n \n {showDelete && (\n \n \n \n )}\n \n \n \n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { CachedTwoTone, ErrorOutline, PersonOff } from '@mui/icons-material';\nimport { Box, Tooltip, Typography } from '@mui/material';\n\nimport {\n FullDivider,\n HorizontalCenteredFlexBox,\n VerticalCenteredFlexBox,\n VerticalFlexBox\n} from 'generalComponents/BoxModifications';\nimport { ContentSectionProps } from 'views/IntelliSms/dialogs/EventPopper/interfaces';\n\nexport const TooltipUrlSuffixExplanation = ({\n includeStampCardUrl,\n includeUnregUrl\n}: {\n includeStampCardUrl?: boolean;\n includeUnregUrl?: boolean;\n}) => {\n if (includeStampCardUrl && includeUnregUrl) {\n return ;\n }\n\n if (includeStampCardUrl) {\n return ;\n }\n\n if (includeUnregUrl) {\n return ;\n }\n\n return '';\n};\n\nexport const ContentSection = ({\n bonusSMSUsed,\n campaigns,\n children,\n numberOfPaidSMSParts,\n recipientsCount,\n smsParts,\n storeVenuesLength,\n title,\n venuesList,\n campaignInPastError,\n campaignInPastWarning,\n historical,\n includeStampCardUrl,\n includeUnregUrl,\n eventIsBeingUpdated\n}: ContentSectionProps) => {\n const showPastError = campaignInPastError && !historical;\n const showPastWarning = campaignInPastWarning && !historical && !showPastError;\n\n const noRecipients = recipientsCount === 0;\n\n const stats = {\n smsParts,\n recipientsCount,\n totalSmsUsed: smsParts * recipientsCount\n };\n\n const completedCampaignStats = {\n paidSms: numberOfPaidSMSParts,\n freeSmsUsed: recipientsCount * smsParts - numberOfPaidSMSParts - bonusSMSUsed,\n bonusSMSUsed\n };\n\n return (\n \n {showPastError && !eventIsBeingUpdated && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n\n {showPastWarning && !eventIsBeingUpdated && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n\n {noRecipients && !eventIsBeingUpdated && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n\n \n \n {title}\n \n \n\n {historical && (\n <>\n \n \n \n \n \n {stats.smsParts}\n \n \n {stats.recipientsCount}\n \n \n {stats.smsParts * recipientsCount}\n \n\n \n \n \n {completedCampaignStats.bonusSMSUsed > 0 && (\n \n {' '}\n {completedCampaignStats.bonusSMSUsed}\n \n )}\n \n {completedCampaignStats.freeSmsUsed}\n \n \n {completedCampaignStats.paidSms}\n \n \n )}\n\n \n\n {storeVenuesLength > 1 && (\n \n \n {' '}\n \n {Array.isArray(venuesList) ? venuesList.map((el) => {el}) : venuesList}\n \n )}\n {campaigns.length !== 0 && (\n \n {campaigns.join(', ')}\n \n )}\n {children}\n \n );\n};\n","import { Close } from '@mui/icons-material';\nimport { IconButton, Typography } from '@mui/material';\n\nimport { FlexBox } from 'generalComponents/BoxModifications';\nimport { localeDateFnsSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { capitalizeFirstLetter } from 'utils/utils';\nimport { eventPopperTopRowCSS } from 'views/IntelliSms/helpers/constants';\n\nimport { formatSelectedEventDate } from './helpers';\nimport { HeaderSectionProps } from './interfaces';\n\nexport const HeaderSection = ({ closePopper, date, isNew, overview }: HeaderSectionProps) => {\n const eventStart = formatSelectedEventDate({\n start: date || new Date(),\n locale: localeDateFnsSelector(store.getState())\n });\n\n const pastEventInOverview = (overview && date && date.getTime() < new Date().getTime()) || false;\n\n return (\n \n \n {capitalizeFirstLetter(eventStart.date)}\n \n \n {eventStart.time}\n \n \n \n \n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { ExpandMore } from '@mui/icons-material';\nimport { Accordion, AccordionDetails, AccordionSummary, Typography } from '@mui/material';\n\nimport { VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { accordionCSS } from 'views/IntelliSms/helpers/constants';\nimport { SMSBoxRecipients } from 'views/IntelliSms/helpers/interfaces';\nimport { TARGET_GROUP_GENERAL_ENUM, TARGET_GROUP_TYPE } from 'views/IntelliSms/helpers/targetGroupEnums';\n\nimport { SummaryTimeInterval } from '../Summary/Summary.recipientFilters';\n\nconst FilterItem: React.FC<{\n category: TARGET_GROUP_TYPE;\n preSelectedDates: SMSBoxRecipients['preSelectedDates'];\n fromUtc?: boolean;\n}> = ({ category, preSelectedDates, fromUtc }) => {\n if (category === TARGET_GROUP_GENERAL_ENUM.TimeInterval && preSelectedDates) {\n return (\n \n • {' '}\n \n \n );\n }\n return (\n \n • \n \n );\n};\n\nexport const RecipientsFilters = ({\n targetGroups,\n preSelectedDates,\n fromUtc\n}: {\n targetGroups: TARGET_GROUP_TYPE[];\n preSelectedDates: SMSBoxRecipients['preSelectedDates'];\n fromUtc?: boolean;\n}) => {\n if (!targetGroups.length) return null;\n\n return (\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\">\n \n \n \n \n \n \n {targetGroups.map((category) => (\n \n ))}\n \n \n \n );\n};\n","import { Card, Popover } from '@mui/material';\n\nimport { EventImpl } from '@fullcalendar/core/internal';\n\nimport { VenuesInterface } from 'store/features/merchantAndVenues/handlers';\nimport { useSMSCampaignContext } from 'views/IntelliSms/context/SMSCampaignContext';\nimport { ActionsSection } from 'views/IntelliSms/dialogs/EventPopper/EventPopper.actions';\nimport { ContentSection } from 'views/IntelliSms/dialogs/EventPopper/EventPopper.content';\nimport { HeaderSection } from 'views/IntelliSms/dialogs/EventPopper/EventPopper.header';\nimport { RecipientsFilters } from 'views/IntelliSms/dialogs/EventPopper/EventPopper.recipientFilters';\nimport { eventInPastThresholdErrorMs, getVenueList } from 'views/IntelliSms/dialogs/EventPopper/helpers';\nimport { EventExtendedProps, EventPopperContentProps } from 'views/IntelliSms/dialogs/EventPopper/interfaces';\nimport { addSuffixToMessage } from 'views/IntelliSms/helpers/MessageUrlSuffixes';\nimport { eventPopperCSS } from 'views/IntelliSms/helpers/constants';\nimport { IStampCardCampaign } from 'views/StampCardPage/stampCardPage.interfaces';\n\nexport const eventPopperEventData = ({\n selectedEvent,\n stampCardCampaignsFromStore,\n venuesFromStore,\n colorMap,\n venueListMargin = true\n}: {\n selectedEvent: EventImpl | null;\n stampCardCampaignsFromStore: IStampCardCampaign[];\n venuesFromStore: VenuesInterface[];\n colorMap: Record | undefined;\n venueListMargin?: boolean;\n}) => {\n const {\n isNew,\n recipients,\n bonusSMSUsed,\n numberOfPaidSMSParts,\n recipientsCount,\n messageInfo,\n introPast,\n introUpcoming,\n historical,\n recipientsPerVenue,\n includeStampCardUrl,\n includeUnregUrl,\n failedVenues\n } = selectedEvent?.extendedProps as EventExtendedProps;\n\n const selectedVenues = venuesFromStore\n .filter((v) => recipients.preSelectedVenueOptions.includes(v.id))\n .map((v) => ({ venueTitle: v.venueTitle, id: v.id }));\n\n const selectedSCCampaign = stampCardCampaignsFromStore\n .filter((v) => recipients.preSelectedStampCardOptions.includes(v.id))\n .map((c) => c.name);\n\n const venuesList = getVenueList(\n colorMap,\n selectedVenues,\n recipientsPerVenue || [],\n failedVenues || [],\n venueListMargin ? {} : { ml: 0 }\n );\n\n const disabled = !isNew;\n\n const campaignInPastError =\n (selectedEvent?.start?.getTime() || 0) < new Date().getTime() - eventInPastThresholdErrorMs;\n const campaignInPastWarning = (selectedEvent?.start?.getTime() || 0) < new Date().getTime();\n\n return {\n event: {\n isNew,\n recipients,\n bonusSMSUsed,\n numberOfPaidSMSParts,\n recipientsCount,\n messageInfo,\n introPast,\n introUpcoming,\n historical\n },\n disabled,\n campaignInPastError,\n campaignInPastWarning,\n venuesList,\n selectedSCCampaign,\n recipientsPerVenue,\n failedVenues,\n includeStampCardUrl,\n includeUnregUrl\n };\n};\n\nexport const EventPopper = ({\n anchorEl,\n colorMap,\n handleClosePopper,\n onDelete,\n onUpdate,\n openPopper,\n selectedEvent,\n parentZIndex,\n eventIsBeingUpdated\n}: EventPopperContentProps) => {\n const { stampCardCampaignsFromStore, venuesFromStore, boxStateMap, activeBox } = useSMSCampaignContext();\n\n if (!selectedEvent) return null;\n\n const {\n event: { isNew, recipients, bonusSMSUsed, numberOfPaidSMSParts, messageInfo, historical, recipientsCount },\n selectedSCCampaign,\n venuesList,\n disabled,\n campaignInPastWarning,\n campaignInPastError,\n includeStampCardUrl: includeStampCardUrlRaw,\n includeUnregUrl: includeUnregUrlRaw,\n failedVenues,\n recipientsPerVenue\n } = eventPopperEventData({ selectedEvent, colorMap, stampCardCampaignsFromStore, venuesFromStore });\n\n // Historical campaigns have the correct message in the title\n // Future campaigns need to dynamically add suffix, whether to add suffix stored on event\n // New campaigns being scheduled need to dynamically add suffix, whether to add suffix stored in context (boxStateMap)\n let includeStampCardUrl = includeStampCardUrlRaw;\n let includeUnregUrl = includeUnregUrlRaw;\n if (isNew) {\n includeStampCardUrl = boxStateMap[activeBox].includeStampCardUrl;\n includeUnregUrl = boxStateMap[activeBox].includeUnregUrl;\n }\n\n return (\n \n \n \n \n \n \n\n {!historical && (\n \n )}\n \n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { Tooltip, Typography, TypographyProps } from '@mui/material';\n\nimport { Locale, format } from 'date-fns';\n\nimport { VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { FailedVenues, RecipientsPerVenue } from 'views/IntelliSms/helpers/interfaces';\n\nexport const formatSelectedEventDate = ({ start, locale }: { start: Date; locale: Locale }) => {\n let date = format(start as Date, 'EEEE, MMMM d', { locale });\n const time = format(start as Date, 'HH:mm', { locale }).replace('24:00', '00:00');\n\n if (locale.code === 'sv') {\n date = format(start as Date, 'EEEE, d MMMM', { locale });\n }\n\n return { date, time };\n};\n\nconst failedVenueNode = ({\n selectedVenue,\n failedVenue,\n sx\n}: {\n selectedVenue: { venueTitle: string; id: string };\n failedVenue: FailedVenues;\n sx: TypographyProps;\n}) => {\n return (\n }\n key={selectedVenue.id}>\n \n {selectedVenue.venueTitle}\n \n \n );\n};\n\nexport const getVenueList = (\n colorMap: Record | undefined,\n selectedVenues: { venueTitle: string; id: string }[],\n recipientsPerVenue: RecipientsPerVenue[],\n failedVenues: FailedVenues[],\n sx: TypographyProps = {}\n) => {\n if (!colorMap) return selectedVenues.map((sv) => sv.venueTitle).join(', ');\n\n return selectedVenues.map((v) => {\n const commonSX = {\n backgroundColor: colorMap[v.id],\n p: '1px 5px',\n ml: 1,\n ...sx\n };\n\n if (failedVenues.length > 0) {\n const failed = failedVenues.find((el) => el.venueId === v.id);\n if (failed) return failedVenueNode({ failedVenue: failed, selectedVenue: v, sx: commonSX });\n }\n\n const venueInfo =\n recipientsPerVenue.length > 0\n ? recipientsPerVenue.find((el) => el.venueId === v.id) || {\n recipientCount: 0,\n ownerCount: 0\n }\n : undefined;\n\n // If the campaign is scheduled but not sent yet, recipientsPerVenue will be undefined\n if (venueInfo) {\n return (\n \n \n \n {venueInfo.recipientCount}\n \n \n }\n key={v.id}>\n \n {v.venueTitle}\n \n \n );\n }\n\n return (\n \n {v.venueTitle}\n \n );\n });\n};\n\n// bullqueue retries jobs after 1m, 2m, 4m, 8m, 16m\n\n// We are sure there won't be any more retries after 1 hour\nexport const eventInPastThresholdErrorMs = 1000 * 60 * 60;\n","import { Translate } from 'react-redux-i18n';\n\nimport { Button, Typography } from '@mui/material';\n\nimport { FlexBox, VerticalCenteredFlexBox } from 'generalComponents/BoxModifications';\nimport { ActionsSectionProps } from 'views/IntelliSms/dialogs/Filters/interfaces';\n\nconst errorBlocker = ({\n everyone,\n selectedVenues,\n selectedStampCardCampaigns,\n needToSelectStampCard,\n includeStampCardUrl\n}: Pick<\n ActionsSectionProps,\n 'needToSelectStampCard' | 'selectedStampCardCampaigns' | 'selectedVenues' | 'everyone' | 'includeStampCardUrl'\n>) => {\n let errorTrans: string | null = null;\n\n if (everyone) return null;\n\n let missingPosOnCampaign = false;\n\n if (selectedStampCardCampaigns.length > 0) {\n selectedStampCardCampaigns.forEach((el) => {\n if (el.value !== 'none' && el.POSIds?.length === 0) {\n missingPosOnCampaign = true;\n }\n });\n }\n\n if (selectedVenues.length === 0) errorTrans = 'campaigns.newCampaign.errorsToProceed.noVenueSelected';\n if (missingPosOnCampaign) errorTrans = 'campaigns.newCampaign.errorsToProceed.noDisplaysConnectedToCampaign';\n if (needToSelectStampCard) {\n if (includeStampCardUrl) {\n errorTrans = 'campaigns.newCampaign.errorsToProceed.includesStampCardUrlButMissingCampaign';\n } else errorTrans = 'campaigns.newCampaign.errorsToProceed.filterRequiresStampCardCampaign';\n }\n if (errorTrans) return errorTrans;\n\n return null;\n};\n\nexport const ActionsSection = ({\n everyone,\n handleOpenSMSSummary,\n needToSelectStampCard,\n selectedVenues,\n selectedStampCardCampaigns,\n includeStampCardUrl\n}: ActionsSectionProps) => {\n const errorTranslationString = errorBlocker({\n everyone,\n selectedVenues,\n selectedStampCardCampaigns,\n needToSelectStampCard,\n includeStampCardUrl\n });\n\n return (\n \n \n \n \n \n\n {errorTranslationString ? (\n \n \n \n ) : (\n \n \n \n )}\n \n \n );\n};\n","import { Switch, SwitchProps } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nexport const IOSSwitch = styled((props: SwitchProps) => (\n \n))(({ theme }) => ({\n width: 42,\n height: 26,\n padding: 0,\n '& .MuiSwitch-switchBase': {\n padding: 0,\n margin: 2,\n transitionDuration: '300ms',\n '&.Mui-checked': {\n transform: 'translateX(16px)',\n color: '#fff',\n '& + .MuiSwitch-track': {\n backgroundColor: '#38bdf8',\n opacity: 1,\n border: 0\n },\n '&.Mui-disabled + .MuiSwitch-track': {\n opacity: 0.5\n }\n },\n '&.Mui-focusVisible .MuiSwitch-thumb': {\n color: '#38bdf8',\n border: '6px solid #fff'\n },\n '&.Mui-disabled .MuiSwitch-thumb': {\n color: theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[600]\n },\n '&.Mui-disabled + .MuiSwitch-track': {\n opacity: theme.palette.mode === 'light' ? 0.7 : 0.3\n }\n },\n '& .MuiSwitch-thumb': {\n backgroundColor: '#fff !important',\n boxSizing: 'border-box',\n width: 22,\n height: 22\n },\n '& .MuiSwitch-track': {\n borderRadius: 26 / 2,\n backgroundColor: theme.palette.mode === 'light' ? '#E9E9EA' : '#39393D',\n opacity: 1,\n transition: theme.transitions.create(['background-color'], {\n duration: 500\n })\n }\n}));\n","import { Translate } from 'react-redux-i18n';\n\nimport { FormControlLabel } from '@mui/material';\n\nimport { VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { IOSSwitch } from 'generalComponents/IOSSwitch/IOSSwitch';\nimport { EveryoneSectionProps } from 'views/IntelliSms/dialogs/Filters/interfaces';\n\nexport const EveryoneSection = ({ everyone, toggleEveryone, disabled }: EveryoneSectionProps) => {\n const checked = !disabled && everyone;\n\n return (\n \n }\n label={}\n />\n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { ArrowBack } from '@mui/icons-material';\nimport { IconButton, Typography } from '@mui/material';\n\nexport const HeaderSection = ({ closeFiltersModal }: { closeFiltersModal: () => void }) => {\n return (\n <>\n \n \n \n\n \n \n \n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { Box, Menu } from '@mui/material';\n\nexport const FilterInfoPopup = ({\n infoAnchorEl,\n infoOpen,\n closeInfo,\n titleTrans,\n textTrans\n}: {\n infoAnchorEl: HTMLElement | null;\n infoOpen: boolean;\n closeInfo: () => void;\n titleTrans: string;\n textTrans: string;\n}) => {\n // const theme = useTheme();\n\n const onClose = () => {\n closeInfo();\n };\n\n return (\n \n \n \n \n \n \n \n \n );\n};\n","import { useState } from 'react';\nimport { MultiSelect } from 'react-multi-select-component';\nimport { I18n, Translate } from 'react-redux-i18n';\n\nimport { InfoOutlined } from '@mui/icons-material';\nimport { Box, IconButton, Tooltip, Typography } from '@mui/material';\n\nimport { CenteredFlexBox, HorizontalCenteredFlexBox } from 'generalComponents/BoxModifications';\nimport { stampCardSubscriptionSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { StampCardsSectionProps } from 'views/IntelliSms/dialogs/Filters/interfaces';\nimport { CustomStampCardRenderer, customValueRenderer } from 'views/IntelliSms/helpers/helpers';\n\nimport { FilterInfoPopup } from './Filters.FilterInfoPopup';\n\nexport const StampCardsSection = ({\n handleStampCardSelectChange,\n selectedStampCardCampaigns,\n stampCardCampaignOptions,\n includeStampCardUrl,\n stampCardFilterSelected\n}: StampCardsSectionProps) => {\n const [infoAnchorEl, setInfoAnchorEl] = useState(null);\n const infoOpen = Boolean(infoAnchorEl);\n\n const openInfo = (event: React.MouseEvent) => {\n setInfoAnchorEl(event.currentTarget);\n };\n\n const closeInfo = () => {\n setInfoAnchorEl(null);\n };\n\n const subscribedToStampCardFeature = stampCardSubscriptionSelector(store.getState()).length > 0;\n\n const data = stampCardCampaignOptions.map((el) => {\n return { ...el, disabled: false, campaignDisabledOrExpired: el.disabled };\n });\n\n return subscribedToStampCardFeature && data.length !== 0 ? (\n <>\n \n \n {' '}\n {stampCardFilterSelected || includeStampCardUrl ? '*' : ''}\n \n\n \n\n }\n placement=\"top\"\n arrow>\n \n \n \n \n \n \n \n\n \n \n \n \n ) : null;\n};\n","import { useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\nimport { toast } from 'react-toastify';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Button, Dialog, DialogContent, IconButton } from '@mui/material';\nimport { TimePicker } from '@mui/x-date-pickers';\n\nimport dayjs, { Dayjs } from 'dayjs';\n\nimport { VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { TargetGroupSectionProps } from 'views/IntelliSms/dialogs/Filters/interfaces';\nimport { TARGET_GROUP_GENERAL_ENUM } from 'views/IntelliSms/helpers/targetGroupEnums';\n\nexport const FilterSelectTimeInterval = ({\n setTimeIntervalDialogOpen,\n timeIntervalDialogOpen,\n timeInterval,\n setTimeInterval,\n selectedTargetFilters,\n setSelectedTargetFilters\n}: Pick<\n TargetGroupSectionProps,\n | 'timeIntervalDialogOpen'\n | 'setTimeIntervalDialogOpen'\n | 'selectedTargetFilters'\n | 'setSelectedTargetFilters'\n | 'timeInterval'\n | 'setTimeInterval'\n>) => {\n const [startTimeDayjs, setStartTimeDayJs] = useState(\n dayjs(\n `2022-04-17T${timeInterval?.startTime ? timeInterval.startTime.hour : '00'}:${\n timeInterval?.endTime ? timeInterval.endTime.min : '00'\n }`\n )\n );\n const [endTimeDayjs, setEndTimeDayjs] = useState(\n dayjs(\n `2022-04-17T${timeInterval?.endTime ? timeInterval.endTime.hour : '00'}:${\n timeInterval?.endTime ? timeInterval.endTime.min : '00'\n }`\n )\n );\n\n const onCloseButton = () => {\n toast.info(\n
\n \n
,\n { autoClose: 5000 }\n );\n\n setTimeInterval(undefined);\n setTimeIntervalDialogOpen(false);\n\n const newSelectedTargetFilters = selectedTargetFilters.filter(\n (filter) => filter.value !== TARGET_GROUP_GENERAL_ENUM.TimeInterval\n );\n setSelectedTargetFilters(newSelectedTargetFilters);\n };\n\n const onClose = () => {\n if (!startTimeDayjs || !endTimeDayjs) {\n toast.warning(\n
\n \n
\n );\n return;\n }\n\n if (startTimeDayjs.valueOf() >= endTimeDayjs.valueOf()) {\n toast.warning(\n
\n \n
\n );\n return;\n }\n\n if (startTimeDayjs.valueOf() + 1000 * 60 * 30 > endTimeDayjs.valueOf()) {\n toast.warning(\n
\n \n
\n );\n return;\n }\n\n setTimeInterval({\n startTime: { hour: startTimeDayjs.hour().toString(), min: startTimeDayjs.minute().toString() },\n endTime: { hour: endTimeDayjs.hour().toString(), min: endTimeDayjs.minute().toString() }\n });\n\n setTimeIntervalDialogOpen(false);\n };\n\n return (\n \n \n \n \n \n\n \n }\n value={startTimeDayjs}\n onChange={setStartTimeDayJs}\n />\n\n }\n value={endTimeDayjs}\n onChange={setEndTimeDayjs}\n />\n\n \n \n \n \n );\n};\n","import { useState } from 'react';\nimport { MultiSelect } from 'react-multi-select-component';\nimport { I18n, Translate } from 'react-redux-i18n';\n\nimport { InfoOutlined } from '@mui/icons-material';\nimport { IconButton, Tooltip, Typography } from '@mui/material';\nimport { LocalizationProvider } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\n\nimport { CenteredFlexBox, HorizontalCenteredFlexBox } from 'generalComponents/BoxModifications';\nimport { TargetGroupSectionProps } from 'views/IntelliSms/dialogs/Filters/interfaces';\nimport { CustomItemRenderer, customValueRenderer } from 'views/IntelliSms/helpers/helpers';\nimport { SetStateSelectedOptions } from 'views/IntelliSms/helpers/interfaces';\n\nimport { FilterInfoPopup } from './Filters.FilterInfoPopup';\nimport { FilterSelectTimeInterval } from './Filters.timeIntervalDialog';\n\nexport const TargetGroupSection = ({\n selectedTargetFilters,\n setSelectedTargetFilters,\n targetOptions,\n ...rest\n}: TargetGroupSectionProps) => {\n const [infoAnchorEl, setInfoAnchorEl] = useState(null);\n const infoOpen = Boolean(infoAnchorEl);\n\n const openInfo = (event: React.MouseEvent) => {\n setInfoAnchorEl(event.currentTarget);\n };\n\n const closeInfo = () => {\n setInfoAnchorEl(null);\n };\n\n const onChange: SetStateSelectedOptions = (data) => {\n setSelectedTargetFilters(data);\n };\n\n return (\n <>\n \n \n \n\n \n \n \n \n\n \n\n }\n placement=\"top\"\n arrow>\n \n \n \n \n \n \n \n\n \n \n );\n};\n","import { useState } from 'react';\nimport { MultiSelect } from 'react-multi-select-component';\nimport { I18n, Translate } from 'react-redux-i18n';\n\nimport { InfoOutlined } from '@mui/icons-material';\nimport { IconButton, Tooltip, Typography } from '@mui/material';\n\nimport { CenteredFlexBox, HorizontalCenteredFlexBox } from 'generalComponents/BoxModifications';\nimport { VenuesSectionProps } from 'views/IntelliSms/dialogs/Filters/interfaces';\nimport { CustomItemRenderer, customValueRenderer } from 'views/IntelliSms/helpers/helpers';\n\nimport { FilterInfoPopup } from './Filters.FilterInfoPopup';\n\nexport const VenuesSection = ({ selectedVenues, setSelectedVenues, venueOptions }: VenuesSectionProps) => {\n const [infoAnchorEl, setInfoAnchorEl] = useState(null);\n const infoOpen = Boolean(infoAnchorEl);\n\n const openInfo = (event: React.MouseEvent) => {\n setInfoAnchorEl(event.currentTarget);\n };\n\n const closeInfo = () => {\n setInfoAnchorEl(null);\n };\n\n return venueOptions.length > 1 ? (\n <>\n \n \n \n \n\n \n\n }\n placement=\"top\"\n arrow>\n \n \n \n \n \n \n \n\n 1}\n options={venueOptions}\n value={selectedVenues}\n onChange={setSelectedVenues}\n labelledBy=\"Select-venues\"\n overrideStrings={{\n selectAll: I18n.t('campaigns.filtersModal.selectAll'),\n selectSomeItems: I18n.t('campaigns.filtersModal.selectVenues')\n }}\n />\n \n ) : null;\n};\n","import {\n TARGET_GROUP_GENERAL_ENUM,\n TARGET_GROUP_REWARDS_ENUM,\n TARGET_GROUP_STAMPS_ENUM,\n TargetGroupGeneralValues,\n TargetGroupRewardValues,\n TargetGroupStampsValues\n} from 'views/IntelliSms/helpers/targetGroupEnums';\n\nconst buildNotAllowedGeneralCombinations = () => {\n return TargetGroupGeneralValues.reduce((acc, el) => {\n // eslint-disable-next-line no-param-reassign\n acc[el] = TargetGroupGeneralValues.filter((value) => el !== value);\n\n return acc;\n }, {} as Record);\n};\n\n// TODO: finish up\nexport const notAllowedCombinations = {\n ...buildNotAllowedGeneralCombinations(),\n [TARGET_GROUP_REWARDS_ENUM.RewardToClaimAny]: [\n TARGET_GROUP_REWARDS_ENUM.RewardToClaim1,\n TARGET_GROUP_REWARDS_ENUM.RewardToClaim2,\n TARGET_GROUP_REWARDS_ENUM.RewardToClaim3,\n TARGET_GROUP_REWARDS_ENUM.NeverReachedReward,\n TARGET_GROUP_STAMPS_ENUM.OneStampRecieved\n ],\n [TARGET_GROUP_REWARDS_ENUM.RewardToClaim1]: [\n TARGET_GROUP_REWARDS_ENUM.RewardToClaimAny,\n TARGET_GROUP_REWARDS_ENUM.NeverReachedReward,\n TARGET_GROUP_STAMPS_ENUM.OneStampRecieved\n ],\n [TARGET_GROUP_REWARDS_ENUM.RewardToClaim2]: [\n TARGET_GROUP_REWARDS_ENUM.RewardToClaimAny,\n TARGET_GROUP_REWARDS_ENUM.NeverReachedReward,\n TARGET_GROUP_STAMPS_ENUM.OneStampRecieved\n ],\n [TARGET_GROUP_REWARDS_ENUM.RewardToClaim3]: [\n TARGET_GROUP_REWARDS_ENUM.RewardToClaimAny,\n TARGET_GROUP_REWARDS_ENUM.NeverReachedReward,\n TARGET_GROUP_STAMPS_ENUM.OneStampRecieved\n ],\n [TARGET_GROUP_REWARDS_ENUM.NeverReachedReward]: [\n TARGET_GROUP_REWARDS_ENUM.RewardToClaimAny,\n TARGET_GROUP_REWARDS_ENUM.RewardToClaim1,\n TARGET_GROUP_REWARDS_ENUM.RewardToClaim2,\n TARGET_GROUP_REWARDS_ENUM.RewardToClaim3,\n TARGET_GROUP_STAMPS_ENUM.OneStampRecieved,\n TARGET_GROUP_REWARDS_ENUM.OneStampLeftForReward2,\n TARGET_GROUP_REWARDS_ENUM.OneStampLeftForReward3,\n TARGET_GROUP_REWARDS_ENUM.OneStampLeftForReward,\n ...TargetGroupStampsValues\n ],\n\n [TARGET_GROUP_REWARDS_ENUM.OneStampLeftForReward]: [\n TARGET_GROUP_REWARDS_ENUM.OneStampLeftForReward1,\n TARGET_GROUP_REWARDS_ENUM.OneStampLeftForReward2,\n TARGET_GROUP_REWARDS_ENUM.OneStampLeftForReward3,\n TARGET_GROUP_STAMPS_ENUM.OneStampRecieved\n ],\n [TARGET_GROUP_REWARDS_ENUM.OneStampLeftForReward1]: [\n TARGET_GROUP_REWARDS_ENUM.OneStampLeftForReward,\n TARGET_GROUP_STAMPS_ENUM.OneStampRecieved\n ],\n [TARGET_GROUP_REWARDS_ENUM.OneStampLeftForReward2]: [\n TARGET_GROUP_REWARDS_ENUM.OneStampLeftForReward,\n TARGET_GROUP_STAMPS_ENUM.OneStampRecieved\n ],\n [TARGET_GROUP_REWARDS_ENUM.OneStampLeftForReward3]: [\n TARGET_GROUP_REWARDS_ENUM.OneStampLeftForReward,\n TARGET_GROUP_STAMPS_ENUM.OneStampRecieved\n ],\n [TARGET_GROUP_STAMPS_ENUM.OneStampRecieved]: [\n ...TargetGroupRewardValues,\n ...TargetGroupStampsValues.filter((el) => el !== TARGET_GROUP_STAMPS_ENUM.OneStampRecieved)\n ],\n [TARGET_GROUP_STAMPS_ENUM.SmallNumberOfStamps]: [\n TARGET_GROUP_STAMPS_ENUM.OneStampRecieved,\n TARGET_GROUP_STAMPS_ENUM.MediumNumberOfStamps,\n TARGET_GROUP_STAMPS_ENUM.LargeNumberOfStamps\n ],\n [TARGET_GROUP_STAMPS_ENUM.MediumNumberOfStamps]: [\n TARGET_GROUP_STAMPS_ENUM.OneStampRecieved,\n TARGET_GROUP_STAMPS_ENUM.SmallNumberOfStamps,\n TARGET_GROUP_STAMPS_ENUM.LargeNumberOfStamps\n ],\n [TARGET_GROUP_STAMPS_ENUM.LargeNumberOfStamps]: [\n TARGET_GROUP_STAMPS_ENUM.OneStampRecieved,\n TARGET_GROUP_STAMPS_ENUM.SmallNumberOfStamps,\n TARGET_GROUP_STAMPS_ENUM.MediumNumberOfStamps\n ]\n};\n\nexport type TargetGroupFilter = keyof typeof notAllowedCombinations;\n","import { useEffect, useMemo, useState } from 'react';\nimport { I18n } from 'react-redux-i18n';\n\nimport { handleAxiosError } from 'errorHandling/handleResponse';\nimport { PayAttFailToast } from 'generalComponents/Toasts/Toasts';\nimport LocaleAPI from 'store/locale';\nimport { errorSummaryData } from 'views/IntelliSms/helpers/constants';\nimport { SMSBoxRecipients, SelectionOption, SummaryDataResponse } from 'views/IntelliSms/helpers/interfaces';\nimport { TargetGroupFilter, notAllowedCombinations } from 'views/IntelliSms/helpers/notAllowedSMSFiltersCombinations';\nimport {\n TARGET_GROUP_GENERAL_ENUM,\n TARGET_GROUP_REWARDS_ENUM,\n TARGET_GROUP_STAMPS_ENUM,\n TARGET_GROUP_TYPE,\n TargetGroupGeneralValuesLastVisitBefore,\n TargetGroupGeneralValuesLastVisitWithin,\n TargetGroupGeneralValuesNoCategory,\n TargetGroupRewardValues,\n TargetGroupStampsValues\n} from 'views/IntelliSms/helpers/targetGroupEnums';\n\nimport { convertVenueToVenueOption, useSMSCampaignContext } from '../context/SMSCampaignContext';\nimport { generateSMS } from '../helpers/api';\n\nexport const useFiltersDialog = () => {\n const {\n activeBox,\n boxStateMap,\n currentMessage,\n everyone,\n filtersModalOpen,\n noneSCSelected,\n openSMSSummary,\n refreshFilters,\n selectedStampCardCampaigns,\n selectedTargetFilters,\n selectedVenues,\n setEveryone,\n setFiltersModalOpen,\n setOpenSMSSummary,\n setSelectedStampCardCampaigns,\n setSelectedTargetFilters,\n setSelectedVenues,\n setStampCardFilterSelected,\n setSummaryData,\n setTargetOptions,\n setVenueOptions,\n stampCardCampaignsFromStore,\n stampCardFilterSelected,\n targetOptions,\n updateActiveBoxState,\n venueOptions,\n venuesFromStore,\n timeIntervalDialogOpen,\n setTimeIntervalDialogOpen\n } = useSMSCampaignContext();\n\n const {\n filters: {\n preSelectedStampCardOptions = [],\n preSelectedVenueOptions = [],\n preSelectedTargetOptions = [],\n preSelectedEveryone = true,\n preSelectedDates = undefined\n },\n unmodifiedSuggestion,\n intelliSmsSuggestion,\n includeStampCardUrl,\n includeUnregUrl\n } = boxStateMap[activeBox];\n\n const locale = LocaleAPI();\n\n const [applyingBackendFilters, setApplyingBackendFilters] = useState(false);\n\n const [timeInterval, setTimeInterval] = useState(undefined);\n\n const defaulVenueOptions = venuesFromStore.map(convertVenueToVenueOption);\n\n const defaultSCOption = stampCardCampaignsFromStore.length ? [noneSCSelected] : [];\n\n const stampCardCampaignOptions: SelectionOption[] = [\n ...defaultSCOption,\n ...stampCardCampaignsFromStore\n .filter(({ disabled, activated, endDate }) => {\n if (!includeStampCardUrl) return true;\n\n // Do not show disabled, expired or inactive campaigns when including Stamp Card URL in SMS (it makes no sense sending to these)\n if (disabled) return false;\n if (!activated) return false;\n if (endDate && new Date().getTime() > new Date(endDate).getTime()) return false;\n\n return true;\n })\n .map(({ name: label, id: value, POSIds, disabled, endDate }) => ({\n label,\n value,\n POSIds,\n disabled: disabled || (endDate && new Date().getTime() > new Date(endDate).getTime())\n }))\n ];\n\n const initialTargetOptions: SelectionOption[] = useMemo(() => {\n const mapFn =\n (stampCard = false) =>\n (el: TARGET_GROUP_TYPE) => ({\n label: I18n.t(`campaigns.filtersModal.fields.${el}`),\n value: el,\n stampCard\n });\n\n const mostUsedGeneral = [\n TARGET_GROUP_GENERAL_ENUM.LastVisitBefore1Week,\n TARGET_GROUP_GENERAL_ENUM.LastVisitWithin1Week\n ].map(mapFn());\n\n const mostUsedStampCard = [\n TARGET_GROUP_REWARDS_ENUM.OneStampLeftForReward,\n TARGET_GROUP_STAMPS_ENUM.LargeNumberOfStamps\n ].map(mapFn(true));\n\n const generalBefore = TargetGroupGeneralValuesLastVisitBefore.map(mapFn());\n const generalWithin = TargetGroupGeneralValuesLastVisitWithin.map(mapFn());\n const generalNoCategory = TargetGroupGeneralValuesNoCategory.map(mapFn());\n const rewards = TargetGroupRewardValues.map(mapFn(true));\n const stamps = TargetGroupStampsValues.map(mapFn(true));\n\n const general = [\n {\n label: I18n.t(`campaigns.filtersModal.labels.general`),\n value: 'general',\n isTitle: true,\n type: 'general' as const\n },\n ...generalNoCategory,\n { label: I18n.t(`campaigns.filtersModal.labels.generalBefore`), value: 'general', isSubtitle: true },\n ...generalBefore,\n { label: I18n.t(`campaigns.filtersModal.labels.generalWithin`), value: 'general', isSubtitle: true },\n ...generalWithin\n ];\n const stampCard = [\n {\n label: I18n.t(`campaigns.filtersModal.labels.stampCard`),\n value: 'stamp card',\n isTitle: true,\n type: 'stampCard' as const\n },\n { label: I18n.t(`campaigns.filtersModal.labels.stamps`), value: 'stamp card', isSubtitle: true },\n ...stamps,\n { label: I18n.t(`campaigns.filtersModal.labels.rewards`), value: 'stamp card', isSubtitle: true },\n ...rewards\n ];\n\n return [\n {\n label: I18n.t(`campaigns.filtersModal.labels.mostUsed`),\n value: 'mostUsed',\n isTitle: true,\n type: 'mostUsed' as const\n },\n ...mostUsedGeneral,\n ...(stampCardCampaignOptions.length ? mostUsedStampCard : []),\n ...(stampCardCampaignOptions.length ? stampCard : []),\n ...general\n ];\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [locale, stampCardCampaignOptions.length]);\n\n const closeFiltersModal = () => {\n setFiltersModalOpen(false);\n };\n\n const handleOpenSMSSummary = async () => {\n const stampCards = selectedStampCardCampaigns.map((o) => o.value);\n\n const targetFiltersWithoutDuplicates = [\n ...new Set(selectedTargetFilters.map((o) => o.value))\n ] as TARGET_GROUP_TYPE[];\n\n const targetGroupContainsTimeInterval = targetFiltersWithoutDuplicates.find(\n (el) => el === TARGET_GROUP_GENERAL_ENUM.TimeInterval\n );\n\n const filters: SMSBoxRecipients = everyone\n ? {\n preSelectedEveryone: everyone,\n preSelectedVenueOptions: defaulVenueOptions.map((v) => v.value),\n preSelectedStampCardOptions: ['none'],\n preSelectedTargetOptions: []\n }\n : {\n preSelectedEveryone: everyone,\n preSelectedStampCardOptions: stampCards,\n preSelectedVenueOptions: selectedVenues.map((o) => o.value),\n preSelectedTargetOptions: targetFiltersWithoutDuplicates,\n\n // Only include start and end time if we selected the filter TimeInterval\n preSelectedDates: targetGroupContainsTimeInterval && timeInterval ? timeInterval : undefined\n };\n\n updateActiveBoxState({ filters });\n\n try {\n const { data } = await generateSMS({\n messageText: currentMessage,\n recipients: filters,\n unmodifiedSuggestion,\n includeStampCardUrl,\n includeUnregUrl,\n intelliSmsSuggestion\n });\n\n setSummaryData(data);\n setOpenSMSSummary(true);\n setFiltersModalOpen(false);\n } catch (error) {\n const message = handleAxiosError(error)?.data?.message;\n\n if (message?.includes('No customers')) {\n setSummaryData({\n ...errorSummaryData,\n error: message\n } as SummaryDataResponse);\n setOpenSMSSummary(true);\n setFiltersModalOpen(false);\n\n return;\n }\n\n console.error(error, message);\n\n if (message === 'Not all venues are subscribed to the stamp card feature') {\n PayAttFailToast(I18n.t('campaigns.newCampaign.stampCardNotSubscribedToast'));\n } else {\n PayAttFailToast(I18n.t('campaigns.content.send.unknownError'));\n }\n }\n };\n\n // Detect if we selected time interval filter but have not yet set a start and end date\n useEffect(() => {\n const timeIntervalPresent = selectedTargetFilters.find(\n (el) => el.value === TARGET_GROUP_GENERAL_ENUM.TimeInterval\n );\n\n if (!timeIntervalPresent) {\n setTimeInterval(undefined);\n }\n\n if (timeIntervalPresent && !timeInterval) {\n setTimeIntervalDialogOpen(true);\n } else {\n setTimeIntervalDialogOpen(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedTargetFilters]);\n\n const handleStampCardSelectChange = (val: SelectionOption[]) => {\n setSelectedStampCardCampaigns(val.length ? [val.at(-1) as SelectionOption] : []);\n };\n\n const resetFilters = () => {\n setSelectedVenues(venuesFromStore.length === 1 ? defaulVenueOptions : []);\n setSelectedStampCardCampaigns(defaultSCOption);\n setSelectedTargetFilters([]);\n setTimeInterval(undefined);\n setVenueOptions(defaulVenueOptions);\n };\n\n const toggleEveryone = (e: React.ChangeEvent) => {\n setEveryone(e.target.checked);\n resetFilters();\n };\n\n // Initial load\n useEffect(() => {\n setEveryone(preSelectedEveryone);\n setVenueOptions(defaulVenueOptions);\n setTargetOptions(defaultSCOption);\n setTimeInterval(preSelectedDates);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Update translations\n useEffect(() => {\n setTargetOptions(initialTargetOptions);\n\n setSelectedTargetFilters((o) =>\n o.map((el) => initialTargetOptions.find((target) => target.value === el.value) || el)\n );\n }, [initialTargetOptions, setSelectedTargetFilters, setTargetOptions]);\n\n // Handle filter combinations\n useEffect(() => {\n setStampCardFilterSelected(false);\n\n const notAllowedOptions = new Set();\n\n selectedTargetFilters.forEach((option) => {\n if (option.stampCard) setStampCardFilterSelected(true);\n notAllowedCombinations[option.value as TargetGroupFilter]?.forEach((el) => notAllowedOptions.add(el));\n });\n\n setTargetOptions((o) => o.map((el) => ({ ...el, disabled: notAllowedOptions.has(el.value) })));\n }, [selectedTargetFilters, setStampCardFilterSelected, setTargetOptions]);\n\n useEffect(() => {\n if (applyingBackendFilters) {\n setApplyingBackendFilters(false);\n return;\n }\n\n const noStampCardCampaignsSelected =\n !selectedStampCardCampaigns.length ||\n (selectedStampCardCampaigns.length === 1 && selectedStampCardCampaigns[0].value === 'none');\n\n // If all stamp cards are deselected, we must reset venues to initial state\n if (noStampCardCampaignsSelected) {\n setVenueOptions(defaulVenueOptions);\n\n // Set selected venues to be the only one we have, otherwise let it stay as was previously selected by user\n if (venuesFromStore.length === 1) setSelectedVenues(defaulVenueOptions);\n\n return;\n }\n\n // Otherwise only venues that are part of stamp card campaign should be available for selection (also automatically selected)\n const usedPOSIds = new Set();\n\n selectedStampCardCampaigns.forEach((c) => c.POSIds?.forEach((POSId) => usedPOSIds.add(POSId)));\n\n const newVenueOptions = venuesFromStore\n .filter((option) => option.POS?.some((POSId) => usedPOSIds.has(POSId.id)))\n .map(({ venueTitle: label, id: value, POS }) => ({ label, value, POSIds: POS.map((P) => P.id) }));\n\n setSelectedVenues(newVenueOptions);\n setVenueOptions(newVenueOptions);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedStampCardCampaigns, venuesFromStore]);\n\n // Pre-defined backend / overview page filters\n useEffect(() => {\n setApplyingBackendFilters(true);\n setVenueOptions(defaulVenueOptions);\n\n const selectedSC = !preSelectedStampCardOptions.length\n ? [noneSCSelected]\n : stampCardCampaignOptions.filter((o) => preSelectedStampCardOptions.includes(o.value));\n\n if (selectedSC.length && selectedSC[0].value !== 'none') {\n const usedPOSIds = new Set();\n\n selectedSC.forEach((c) => c.POSIds?.forEach((POSId) => usedPOSIds.add(POSId)));\n\n setVenueOptions(\n venuesFromStore\n .filter((option) => option.POS?.some((POSId) => usedPOSIds.has(POSId.id)))\n .map(convertVenueToVenueOption)\n );\n\n setSelectedStampCardCampaigns(selectedSC);\n } else {\n setSelectedStampCardCampaigns([]);\n }\n\n setSelectedVenues(defaulVenueOptions.filter((o) => preSelectedVenueOptions.includes(o.value)));\n setSelectedTargetFilters(\n initialTargetOptions.filter((o) => preSelectedTargetOptions.includes(o.value as TARGET_GROUP_TYPE))\n );\n\n setEveryone(preSelectedEveryone);\n setTimeInterval(preSelectedDates);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeBox, refreshFilters]);\n\n const needToSelectStampCard = Boolean(\n (stampCardFilterSelected || includeStampCardUrl) &&\n (!selectedStampCardCampaigns.length || selectedStampCardCampaigns[0].value === 'none')\n );\n\n return {\n closeFiltersModal,\n everyone,\n filtersModalOpen,\n handleOpenSMSSummary,\n handleStampCardSelectChange,\n needToSelectStampCard,\n openSMSSummary,\n selectedStampCardCampaigns,\n selectedTargetFilters,\n selectedVenues,\n setSelectedTargetFilters,\n setSelectedVenues,\n stampCardCampaignOptions,\n stampCardFilterSelected,\n targetOptions,\n toggleEveryone,\n venueOptions,\n includeStampCardUrl,\n includeUnregUrl,\n timeIntervalDialogOpen,\n timeInterval,\n setTimeInterval,\n setTimeIntervalDialogOpen\n };\n};\n","import { Dialog, DialogContent } from '@mui/material';\n\nimport { VerticalCenteredFlexBox } from 'generalComponents/BoxModifications';\nimport { ActionsSection } from 'views/IntelliSms/dialogs/Filters/Filters.actions';\nimport { EveryoneSection } from 'views/IntelliSms/dialogs/Filters/Filters.everyone';\nimport { HeaderSection } from 'views/IntelliSms/dialogs/Filters/Filters.header';\nimport { StampCardsSection } from 'views/IntelliSms/dialogs/Filters/Filters.stampCards';\nimport { TargetGroupSection } from 'views/IntelliSms/dialogs/Filters/Filters.targetGroup';\nimport { VenuesSection } from 'views/IntelliSms/dialogs/Filters/Filters.venues';\nimport { useFiltersDialog } from 'views/IntelliSms/helperHooks/useFiltersDialog';\n\nimport '../sms-filters.scss';\n\nexport const SMSBoxFilters = ({ parentZIndex }: { parentZIndex: number }) => {\n const {\n closeFiltersModal,\n everyone,\n filtersModalOpen,\n handleOpenSMSSummary,\n handleStampCardSelectChange,\n needToSelectStampCard,\n selectedStampCardCampaigns,\n selectedTargetFilters,\n selectedVenues,\n setSelectedTargetFilters,\n setSelectedVenues,\n stampCardCampaignOptions,\n stampCardFilterSelected,\n targetOptions,\n toggleEveryone,\n venueOptions,\n includeStampCardUrl,\n includeUnregUrl,\n setTimeIntervalDialogOpen,\n timeIntervalDialogOpen,\n timeInterval,\n setTimeInterval\n } = useFiltersDialog();\n\n const everyoneSectionArgs = {\n everyone,\n toggleEveryone,\n disabled: includeStampCardUrl\n };\n\n const targetGroupSectionArgs = {\n selectedTargetFilters,\n setSelectedTargetFilters,\n targetOptions,\n setTimeIntervalDialogOpen,\n timeIntervalDialogOpen,\n parentZIndex: parentZIndex + 1,\n timeInterval,\n setTimeInterval\n };\n\n const stampCardsSectionArgs = {\n handleStampCardSelectChange,\n selectedStampCardCampaigns,\n stampCardCampaignOptions,\n stampCardFilterSelected,\n parentZIndex: parentZIndex + 1,\n includeStampCardUrl,\n includeUnregUrl\n };\n\n const venuesSectionArgs = {\n selectedVenues,\n setSelectedVenues,\n venueOptions,\n parentZIndex: parentZIndex + 1\n };\n\n const actionsSectionArgs = {\n everyone,\n handleOpenSMSSummary,\n needToSelectStampCard,\n selectedVenues,\n selectedStampCardCampaigns,\n includeStampCardUrl\n };\n\n return (\n \n \n \n \n \n {!everyone && (\n <>\n \n \n \n \n )}\n \n\n \n \n \n );\n};\n","import {\n SMSBoxRecipients,\n SelectionOption,\n SetStateSelectedOptions,\n SmsContextProps\n} from 'views/IntelliSms/helpers/interfaces';\n\nexport const INTELLI_SMS_BASE_Z_INDEX = 1300;\n\nexport interface ActionsSectionProps {\n everyone: boolean;\n handleOpenSMSSummary: () => Promise;\n needToSelectStampCard: boolean;\n selectedVenues: SelectionOption[];\n selectedStampCardCampaigns: SelectionOption[];\n includeStampCardUrl: boolean;\n}\n\nexport interface EveryoneSectionProps {\n everyone: boolean;\n toggleEveryone: (e: React.ChangeEvent) => void;\n disabled: boolean;\n}\n\nexport interface StampCardsSectionProps {\n handleStampCardSelectChange: (val: SelectionOption[]) => void;\n selectedStampCardCampaigns: SelectionOption[];\n stampCardCampaignOptions: SelectionOption[];\n stampCardFilterSelected: boolean;\n parentZIndex: number;\n includeUnregUrl: boolean;\n includeStampCardUrl: boolean;\n}\n\nexport type TargetGroupSectionProps = {\n selectedTargetFilters: SelectionOption[];\n setSelectedTargetFilters: SetStateSelectedOptions;\n targetOptions: SelectionOption[];\n parentZIndex: number;\n timeIntervalDialogOpen: boolean;\n setTimeIntervalDialogOpen: SmsContextProps['setTimeIntervalDialogOpen'];\n timeInterval: SMSBoxRecipients['preSelectedDates'];\n setTimeInterval: React.Dispatch>;\n};\n\nexport interface VenuesSectionProps {\n selectedVenues: SelectionOption[];\n setSelectedVenues: SetStateSelectedOptions;\n venueOptions: SelectionOption[];\n parentZIndex: number;\n}\n","import { useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Box, FormControlLabel, InputAdornment, OutlinedInput, Radio, RadioGroup, Typography } from '@mui/material';\nimport { DatePicker, LocalizationProvider, svSE } from '@mui/x-date-pickers';\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\n\nimport { FlexBox } from 'generalComponents/BoxModifications';\nimport { EndSelectorProps, EndType, PartialRRuleOptions } from 'generalComponents/RRuleGenerator/interfaces';\n\nexport const EndSelector = ({ state, setState, updatingEvent, parentZIndex }: EndSelectorProps) => {\n let initialEndRadioState: EndType = 'Never';\n if (updatingEvent && state.count) initialEndRadioState = 'After';\n if (updatingEvent && state.until) initialEndRadioState = 'Date';\n\n const [endType, setEndType] = useState(initialEndRadioState);\n\n const handleEverySelection = (e: React.ChangeEvent) => {\n setState({ count: Number(e.target.value) });\n };\n\n const handleEndTypeChange = (_: React.ChangeEvent, newValue: string) => {\n const stateMap: Record = {\n After: { until: undefined, count: 1 },\n Date: { count: undefined, until: new Date() },\n Never: { count: undefined, until: undefined }\n };\n\n setState(stateMap[newValue as EndType]);\n setEndType(newValue as EndType);\n };\n\n const onDateChange = (value: Date | null) => {\n setState({ until: value as Date });\n };\n\n return (\n \n \n \n \n \n\n \n }\n label={}\n />\n }\n label={}\n />\n }\n label={}\n />\n \n \n\n {endType !== 'Never' && (\n \n {endType === 'After' && (\n \n \n \n \n }\n aria-describedby=\"outlined-weight-helper-text\"\n inputProps={{ 'aria-label': 'day-selection' }}\n onChange={handleEverySelection}\n />\n \n )}\n\n {endType === 'Date' && (\n \n \n \n )}\n \n )}\n \n );\n};\n","export const TEXT_AND_SELECTOR_WIDTH = '340px';\nexport const SELECTOR_WIDTH = '170px';\nexport const SMALL_SELECTOR_WIDTH = '150px';\n","import { Translate } from 'react-redux-i18n';\n\nimport { InputAdornment, OutlinedInput, Typography } from '@mui/material';\n\nimport { FlexBox } from 'generalComponents/BoxModifications';\nimport { SMALL_SELECTOR_WIDTH } from 'generalComponents/RRuleGenerator/constants';\nimport { RRuleIntervalSelectorProps } from 'generalComponents/RRuleGenerator/interfaces';\n\nexport const RRuleIntervalSelector = ({ type, state, setState }: RRuleIntervalSelectorProps) => {\n const handleIntervalSelection = (e: React.ChangeEvent) => {\n setState({ interval: Number(e.target.value) });\n };\n\n return (\n \n \n \n \n\n \n 1 ? 'Plural' : ''}`}\n />\n \n }\n value={state.interval}\n onChange={handleIntervalSelection}\n />\n \n );\n};\n","import { useEffect } from 'react';\n\nimport { VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { RRuleIntervalSelector } from 'generalComponents/RRuleGenerator/IntervalSelector';\nimport { SelectorsProps } from 'generalComponents/RRuleGenerator/interfaces';\n\nexport const RepeatDaily = ({ state, setState, cleanUpState }: SelectorsProps) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(cleanUpState, []);\n\n return (\n \n \n \n );\n};\n","import { I18n } from 'react-redux-i18n';\n\nimport { MenuItem } from '@mui/material';\n\nimport { ByWeekday, RRule, Weekday } from 'rrule';\n\nexport const useRRuleHelpers = () => {\n const onTheOptsOne: string[] = [\n I18n.t('campaigns.rruleGenerator.first'),\n I18n.t('campaigns.rruleGenerator.second'),\n I18n.t('campaigns.rruleGenerator.third'),\n I18n.t('campaigns.rruleGenerator.fourth'),\n I18n.t('campaigns.rruleGenerator.last')\n ];\n\n const setPosMap: Record = {\n [I18n.t('campaigns.rruleGenerator.first')]: 1,\n [I18n.t('campaigns.rruleGenerator.second')]: 2,\n [I18n.t('campaigns.rruleGenerator.third')]: 3,\n [I18n.t('campaigns.rruleGenerator.fourth')]: 4,\n [I18n.t('campaigns.rruleGenerator.last')]: -1\n };\n\n const setPosMapReversed: Record = {\n 1: I18n.t('campaigns.rruleGenerator.first'),\n 2: I18n.t('campaigns.rruleGenerator.second'),\n 3: I18n.t('campaigns.rruleGenerator.third'),\n 4: I18n.t('campaigns.rruleGenerator.fourth'),\n '-1': I18n.t('campaigns.rruleGenerator.last')\n };\n\n const byweekdayOptionsMap: Record = {\n [I18n.t('campaigns.rruleGenerator.monday')]: RRule.MO,\n [I18n.t('campaigns.rruleGenerator.tuesday')]: RRule.TU,\n [I18n.t('campaigns.rruleGenerator.wednesday')]: RRule.WE,\n [I18n.t('campaigns.rruleGenerator.thursday')]: RRule.TH,\n [I18n.t('campaigns.rruleGenerator.friday')]: RRule.FR,\n [I18n.t('campaigns.rruleGenerator.saturday')]: RRule.SA,\n [I18n.t('campaigns.rruleGenerator.sunday')]: RRule.SU,\n [I18n.t('campaigns.rruleGenerator.anyDay')]: [\n RRule.MO,\n RRule.TU,\n RRule.WE,\n RRule.TH,\n RRule.FR,\n RRule.SA,\n RRule.SU\n ],\n [I18n.t('campaigns.rruleGenerator.weekday')]: [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR],\n [I18n.t('campaigns.rruleGenerator.weekendDay')]: [RRule.SA, RRule.SU]\n };\n\n const byweekdayToLongDayMap = {\n [RRule.MO.weekday]: I18n.t('campaigns.rruleGenerator.monday'),\n [RRule.TU.weekday]: I18n.t('campaigns.rruleGenerator.tuesday'),\n [RRule.WE.weekday]: I18n.t('campaigns.rruleGenerator.wednesday'),\n [RRule.TH.weekday]: I18n.t('campaigns.rruleGenerator.thursday'),\n [RRule.FR.weekday]: I18n.t('campaigns.rruleGenerator.friday'),\n [RRule.SA.weekday]: I18n.t('campaigns.rruleGenerator.saturday'),\n [RRule.SU.weekday]: I18n.t('campaigns.rruleGenerator.sunday')\n };\n\n const onTheOptsTwo = [\n I18n.t('campaigns.rruleGenerator.monday'),\n I18n.t('campaigns.rruleGenerator.tuesday'),\n I18n.t('campaigns.rruleGenerator.wednesday'),\n I18n.t('campaigns.rruleGenerator.thursday'),\n I18n.t('campaigns.rruleGenerator.friday'),\n I18n.t('campaigns.rruleGenerator.saturday'),\n I18n.t('campaigns.rruleGenerator.sunday'),\n I18n.t('campaigns.rruleGenerator.anyDay'),\n I18n.t('campaigns.rruleGenerator.weekday'),\n I18n.t('campaigns.rruleGenerator.weekendDay')\n ];\n\n const byweekdayOptionsMapReversed = (opts: ByWeekday | ByWeekday[] | undefined | null) => {\n if (!opts) return '';\n\n if (!Array.isArray(opts)) return byweekdayToLongDayMap[(opts as Weekday).weekday];\n if (opts.length === 7) return I18n.t('campaigns.rruleGenerator.anyDay');\n if (opts.length === 5) return I18n.t('campaigns.rruleGenerator.weekday');\n if (opts.length === 2) return I18n.t('campaigns.rruleGenerator.weekendDay');\n };\n\n const setPosSelectOptions = onTheOptsOne.map((option) => (\n \n {option}\n \n ));\n\n const byweekdaySelectOptions = onTheOptsTwo.map((option) => (\n \n {option}\n \n ));\n\n const byweekdayToShortDayMap = {\n [RRule.MO.weekday]: I18n.t('campaigns.rruleGenerator.mon'),\n [RRule.TU.weekday]: I18n.t('campaigns.rruleGenerator.tue'),\n [RRule.WE.weekday]: I18n.t('campaigns.rruleGenerator.wed'),\n [RRule.TH.weekday]: I18n.t('campaigns.rruleGenerator.thu'),\n [RRule.FR.weekday]: I18n.t('campaigns.rruleGenerator.fri'),\n [RRule.SA.weekday]: I18n.t('campaigns.rruleGenerator.sat'),\n [RRule.SU.weekday]: I18n.t('campaigns.rruleGenerator.sun')\n };\n\n const shortDayToByweekdayMap: Record = {\n [I18n.t('campaigns.rruleGenerator.mon')]: RRule.MO,\n [I18n.t('campaigns.rruleGenerator.tue')]: RRule.TU,\n [I18n.t('campaigns.rruleGenerator.wed')]: RRule.WE,\n [I18n.t('campaigns.rruleGenerator.thu')]: RRule.TH,\n [I18n.t('campaigns.rruleGenerator.fri')]: RRule.FR,\n [I18n.t('campaigns.rruleGenerator.sat')]: RRule.SA,\n [I18n.t('campaigns.rruleGenerator.sun')]: RRule.SU\n };\n\n const weekdaysShort: string[] = [\n I18n.t('campaigns.rruleGenerator.mon'),\n I18n.t('campaigns.rruleGenerator.tue'),\n I18n.t('campaigns.rruleGenerator.wed'),\n I18n.t('campaigns.rruleGenerator.thu'),\n I18n.t('campaigns.rruleGenerator.fri'),\n I18n.t('campaigns.rruleGenerator.sat'),\n I18n.t('campaigns.rruleGenerator.sun')\n ];\n\n return {\n setPosMap,\n setPosMapReversed,\n byweekdayOptionsMap,\n byweekdayOptionsMapReversed,\n setPosSelectOptions,\n byweekdaySelectOptions,\n byweekdayToShortDayMap,\n shortDayToByweekdayMap,\n weekdaysShort\n };\n};\n","import { useEffect, useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { FormControlLabel, MenuItem, Radio, RadioGroup, Select, SelectChangeEvent } from '@mui/material';\n\nimport { RRule } from 'rrule';\n\nimport { FlexBox, VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { RRuleIntervalSelector } from 'generalComponents/RRuleGenerator/IntervalSelector';\nimport { SMALL_SELECTOR_WIDTH } from 'generalComponents/RRuleGenerator/constants';\nimport {\n ByweekdayOptions,\n MonthlyType,\n PartialRRuleOptions,\n SelectorsProps\n} from 'generalComponents/RRuleGenerator/interfaces';\nimport { useRRuleHelpers } from 'generalComponents/RRuleGenerator/useRRuleHelpers';\nimport { removeTopGapFromMUITextField } from 'utils/utils';\n\nconst monthDaySelectOptions = Array.from({ length: 31 }, (_, i) => {\n const day = i + 1;\n return (\n \n {day}\n \n );\n});\n\nexport const RepeatMonthly = ({ state, setState, cleanUpState, parentZIndex }: SelectorsProps) => {\n const {\n setPosMap,\n byweekdayOptionsMap,\n setPosMapReversed,\n setPosSelectOptions,\n byweekdaySelectOptions,\n byweekdayOptionsMapReversed\n } = useRRuleHelpers();\n\n const [monthlyType, setMonthlyType] = useState('Date');\n\n const handleMonthlyTypeChange = (_: React.ChangeEvent, value: string) => {\n setMonthlyType(value as MonthlyType);\n };\n\n const handleMonthDayChange = (e: SelectChangeEvent) => {\n setState({ bymonthday: Number(e.target.value) });\n };\n\n const handleSetPosChange = (e: SelectChangeEvent) => {\n setState({ bysetpos: setPosMap[e.target.value] });\n };\n\n const handleWeekdayChange = (e: SelectChangeEvent) => {\n setState({ byweekday: byweekdayOptionsMap[e.target.value as ByweekdayOptions] });\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(cleanUpState, []);\n\n useEffect(() => {\n const stateMap: Record = {\n Date: { bymonthday: 1, bysetpos: undefined, byweekday: undefined },\n 'Day of the week': { bymonthday: undefined, bysetpos: 1, byweekday: RRule.MO }\n };\n\n setState(stateMap[monthlyType]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [monthlyType]);\n\n return (\n \n \n\n \n }\n label={}\n />\n }\n label={}\n />\n \n\n \n {monthlyType === 'Date' && (\n \n {monthDaySelectOptions}\n \n )}\n\n {monthlyType === 'Day of the week' && (\n \n \n {setPosSelectOptions}\n \n\n \n {byweekdaySelectOptions}\n \n \n )}\n \n \n );\n};\n","import { ToggleButtonGroup, styled } from '@mui/material';\n\nexport const StyledToggleButtonGroup = styled(ToggleButtonGroup)(({ theme }) => ({\n '> .MuiButtonBase-root': {\n marginLeft: '-1px !important',\n borderLeft: '1px solid rgba(203, 203, 203, 1) !important',\n border: '1px solid rgba(203, 203, 203, 1)',\n backgroundColor: 'transparent',\n color: theme.palette.payAttBlue.dark,\n '&.Mui-selected': {\n color: theme.palette.payAttGray.dark,\n backgroundColor: theme.palette.payAttLightBlue.main,\n '&:hover': {\n backgroundColor: theme.palette.payAttLightBlue.light,\n color: theme.palette.payAttBlue.dark\n }\n },\n '&:hover': {\n backgroundColor: theme.palette.payAttLightBlue.light,\n color: theme.palette.payAttBlue.dark\n }\n }\n}));\n","import { useEffect } from 'react';\n\nimport { ToggleButton } from '@mui/material';\n\nimport { Weekday } from 'rrule';\n\nimport { VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { RRuleIntervalSelector } from 'generalComponents/RRuleGenerator/IntervalSelector';\nimport { SelectorsProps, WeekdayShort } from 'generalComponents/RRuleGenerator/interfaces';\nimport { useRRuleHelpers } from 'generalComponents/RRuleGenerator/useRRuleHelpers';\nimport { StyledToggleButtonGroup } from 'generalComponents/ToggleButtonGroups/StyledToggleButtonGroup';\n\nexport const RepeatWeekly = ({ state, setState, cleanUpState }: SelectorsProps) => {\n const { shortDayToByweekdayMap, weekdaysShort, byweekdayToShortDayMap } = useRRuleHelpers();\n\n const handleDaySelection = (_: React.MouseEvent, selectedDays: WeekdayShort[]) => {\n setState({ byweekday: selectedDays.map((day) => shortDayToByweekdayMap[day]) });\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(cleanUpState, []);\n\n const weekdaysButtons = weekdaysShort.map((day) => (\n \n {day}\n \n ));\n\n const selectedDays = (Array.isArray(state.byweekday) ? state.byweekday : []).map(\n (day) => byweekdayToShortDayMap[(day as Weekday).weekday]\n );\n\n return (\n \n \n\n \n {weekdaysButtons}\n \n \n );\n};\n","import { useEffect, useReducer, useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\nimport { toast } from 'react-toastify';\n\nimport { Divider, MenuItem, Select, SelectChangeEvent, Typography } from '@mui/material';\nimport { DatePicker, LocalizationProvider, TimeField, svSE } from '@mui/x-date-pickers';\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\n\nimport { format } from 'date-fns';\nimport { Frequency, Options } from 'rrule';\n\nimport { CenteredFlexBox, FlexBox, VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { PayAttDialogActions } from 'generalComponents/Dialog/DialogActions';\nimport { EndSelector } from 'generalComponents/RRuleGenerator/EndSelector';\nimport { RepeatDaily } from 'generalComponents/RRuleGenerator/RepeatDaily';\nimport { RepeatMonthly } from 'generalComponents/RRuleGenerator/RepeatMonthly';\nimport { RepeatWeekly } from 'generalComponents/RRuleGenerator/RepeatWeekly';\nimport { SELECTOR_WIDTH, TEXT_AND_SELECTOR_WIDTH } from 'generalComponents/RRuleGenerator/constants';\nimport { RRuleGeneratorProps } from 'generalComponents/RRuleGenerator/interfaces';\nimport { removeTopGapFromMUITextField } from 'utils/utils';\n\nexport const RRuleGenerator = ({\n handleClose,\n handleEvent,\n initialRules,\n parentZIndex,\n updatingEvent = false\n}: RRuleGeneratorProps) => {\n const initialDate = initialRules ? new Date(initialRules.dtstart as Date) : new Date();\n\n const [startDate, setStartDate] = useState(initialDate);\n const [startTime, setStartTime] = useState(initialDate);\n\n const [rules, setRules] = useReducer(\n (curr: Partial, next: Partial) => ({ ...curr, ...next }),\n initialRules || { freq: Frequency.MONTHLY, dtstart: new Date(), interval: 1 }\n );\n\n const handleDateChange = (setDate: React.Dispatch>) => (value: Date | null) => {\n setDate(value as Date);\n };\n\n const handleFreqChange = (e: SelectChangeEvent) => {\n setRules({ freq: e.target.value as Frequency });\n };\n\n const cleanUpState = () => () => {\n setRules({ bymonthday: undefined, bysetpos: undefined, byweekday: undefined });\n };\n\n useEffect(() => {\n try {\n const date = format(startDate as Date, 'yyyy-MM-dd');\n const time = format(startTime as Date, 'HH:mm');\n\n const utc = new Date(`${date}T${time}`);\n\n setRules({ dtstart: utc });\n } catch (error) {\n toast.info('Invalid time format', { autoClose: 5000 });\n }\n }, [startDate, startTime]);\n\n const args = {\n state: rules,\n setState: setRules,\n cleanUpState,\n parentZIndex: parentZIndex + 1\n };\n\n return (\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n\n {rules.freq === Frequency.MONTHLY && }\n {rules.freq === Frequency.WEEKLY && }\n {rules.freq === Frequency.DAILY && }\n\n \n\n \n\n \n \n ) : (\n \n )\n }\n cancelButtonProps={{ variant: 'text' }}\n confirmButtonProps={{ variant: 'text', sx: { color: (theme) => theme.palette.payAttGreen.main } }}\n />\n \n \n );\n};\n","import { Dialog, DialogContent } from '@mui/material';\n\nimport { RRuleGenerator } from 'generalComponents/RRuleGenerator/RRuleGenerator';\nimport { RRuleSelectorDialogProps } from 'generalComponents/RRuleGenerator/interfaces';\n\nexport const RRuleSelectorDialog = ({\n open,\n handleClose,\n handleEvent,\n initialRules,\n updatingEvent,\n parentZIndex\n}: RRuleSelectorDialogProps) => {\n return (\n \n \n \n \n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { ContentCopy, Delete } from '@mui/icons-material';\nimport { CircularProgress, Dialog, DialogContent, IconButton, List, Typography } from '@mui/material';\n\nimport { useQuery } from '@tanstack/react-query';\n\nimport { CenteredFlexBox } from 'generalComponents/BoxModifications';\nimport { PayAttSuccessToast } from 'generalComponents/Toasts/Toasts';\nimport { deleteSMSSuggestion, getSavedSMSSuggestions } from 'views/IntelliSms/helpers/api';\n\nexport const SavedSuggestionsDialog = ({ open, close }: { open: boolean; close: () => void }) => {\n const { data, isLoading, refetch } = useQuery({\n staleTime: 1000 * 60 * 2,\n queryKey: ['last10SavedSuggestions'],\n queryFn: getSavedSMSSuggestions\n });\n\n let dialogContent;\n\n if (isLoading) {\n dialogContent = ;\n } else if (!data || data.length === 0) {\n dialogContent = (\n \n \n \n );\n } else {\n dialogContent = (\n \n {data.map((el) => (\n \n {el}\n {\n try {\n await navigator.clipboard?.writeText(el);\n PayAttSuccessToast(\n \n );\n } catch (err) {\n console.error('Failed to copy!', err);\n }\n }}>\n \n \n {\n await deleteSMSSuggestion(el);\n await refetch();\n }}>\n \n \n \n ))}\n \n );\n }\n\n return (\n \n \n \n \n \n {dialogContent}\n \n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { ExpandMore } from '@mui/icons-material';\nimport { Accordion, AccordionDetails, AccordionSummary, Card, Typography } from '@mui/material';\n\nimport { adjustTimeForTimezoneOffset } from 'api/helper';\nimport { VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { RecipientFiltersSectionProps } from 'views/IntelliSms/dialogs/Summary/interfaces';\nimport { KeyValueTypography } from 'views/IntelliSms/helpers/KeyValueTypography';\nimport { GRAY_COLOR_7B, summaryCSS } from 'views/IntelliSms/helpers/constants';\nimport { FilterTimeIntervals } from 'views/IntelliSms/helpers/interfaces';\nimport { TARGET_GROUP_GENERAL_ENUM } from 'views/IntelliSms/helpers/targetGroupEnums';\n\nimport { numberFormatLeadingZero } from './helpers';\n\nexport const SummaryTimeInterval: React.FC<{\n offsetAdjust?: boolean;\n fromUtc?: boolean;\n preSelectedDates: FilterTimeIntervals;\n}> = ({ preSelectedDates, fromUtc = false, offsetAdjust = false }) => {\n const timeInterval = offsetAdjust\n ? adjustTimeForTimezoneOffset({\n fromUtc,\n startTime: preSelectedDates.startTime,\n endTime: preSelectedDates.endTime\n })\n : preSelectedDates;\n\n return (\n \n {numberFormatLeadingZero(timeInterval.startTime.hour)}:{numberFormatLeadingZero(timeInterval.startTime.min)}{' '}\n - {numberFormatLeadingZero(timeInterval.endTime.hour)}:{numberFormatLeadingZero(timeInterval.endTime.min)}\n \n );\n};\n\nexport const RecipientFiltersSection = ({\n allCustomers,\n categories,\n preSelectedEveryone,\n preSelectedDates,\n selectedSCCampaign,\n selectedVenues\n}: RecipientFiltersSectionProps) => {\n const categoriesList = categories.map((category) => {\n if (category === TARGET_GROUP_GENERAL_ENUM.TimeInterval && preSelectedDates) {\n return (\n \n • {' '}\n \n \n );\n }\n\n return (\n \n • \n \n );\n });\n\n return (\n \n \n \n \n\n {preSelectedEveryone || allCustomers ? (\n \n 1 ? 'allCustomersMultiVenue' : 'allCustomers'\n }`}\n dangerousHTML\n venueCount={selectedVenues.length}\n />\n \n ) : (\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\">\n \n \n \n \n \n <>\n }\n end={selectedVenues.join(', ')}\n />\n {!!selectedSCCampaign.length && (\n }\n end={selectedSCCampaign[0]}\n />\n )}\n \n\n {!!categories.length && (\n <>\n \n :\n \n\n \n {categoriesList}\n \n \n )}\n \n \n )}\n \n );\n};\n","import React from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Dialog, DialogTitle, IconButton, Typography } from '@mui/material';\n\nimport { PayAttDialogActions } from 'generalComponents/Dialog/DialogActions';\nimport { SlideUpTransition } from 'generalComponents/Transitions/SlideUp';\nimport { ConfirmDialogAction } from 'translations/campaigns/intelliSms.summaryModal';\n\ninterface ConfirmSummaryDialogProps {\n open: boolean;\n setOpen: React.Dispatch>;\n onConfirm: () => Promise;\n action: ConfirmDialogAction;\n parentZIndex: number;\n}\n\nexport const ConfirmAction: React.FC = ({\n open,\n setOpen,\n onConfirm,\n action,\n parentZIndex\n}) => {\n const handleCloseAccept = async () => {\n onConfirm();\n setOpen(false); // Indicate that we accepted with the second 'true'\n };\n\n const handleCloseDecline = () => {\n setOpen(false);\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Button, Typography } from '@mui/material';\n\nimport { FlexBox, VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { ActionsSectionProps } from 'views/IntelliSms/dialogs/Summary/interfaces';\n\nimport { ConfirmAction } from './Summary.actions.confirmDialog';\n\nexport const ActionsSection = ({\n disabledSubmitButton,\n handleOpenScheduler,\n handleSendTestCampaign,\n onSubmit,\n scheduledCampaign,\n parentZIndex\n}: ActionsSectionProps) => {\n // Confirm dialogs\n const [sendNowOpen, setSendNowOpen] = useState(false);\n const [testOpen, setTestOpen] = useState(false);\n const [scheduleOpen, setScheduleOpen] = useState(false);\n\n return (\n <>\n \n \n \n\n \n \n\n \n \n {\n if (scheduledCampaign) setScheduleOpen(true);\n else setSendNowOpen(true);\n }}\n variant=\"contained\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { ReportProblemTwoTone } from '@mui/icons-material';\nimport { Box, Checkbox, Typography } from '@mui/material';\n\nimport { CenteredFlexBox, FlexBox } from 'generalComponents/BoxModifications';\nimport { ExcessWarningProps } from 'views/IntelliSms/dialogs/Summary/interfaces';\nimport { warningBoxCSS } from 'views/IntelliSms/helpers/constants';\n\nexport const ExcessWarning = ({\n acceptedExtraChanges,\n costPerSms,\n positiveTotalSmsAvailable,\n recipients,\n scheduledCampaign,\n smsParts,\n toggleExtraCharges,\n totalCost,\n totalSmsAvailable\n}: ExcessWarningProps) => {\n if (scheduledCampaign) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n\n return totalSmsAvailable < recipients * smsParts ? (\n \n \n \n \n \n \n {' '}\n {!scheduledCampaign && (\n <>\n \n 1 ? 'multiPart' : 'singlePart'}`}\n parts={smsParts}\n allowance={positiveTotalSmsAvailable}\n costPerMessage={Math.ceil(costPerSms * smsParts * 100) / 100}\n costPerPart={costPerSms}\n recipients={recipients}\n dangerousHTML\n />\n \n \n \n \n \n \n \n \n )}\n \n ) : null;\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { ArrowBack } from '@mui/icons-material';\nimport { IconButton, TextField, Tooltip, Typography } from '@mui/material';\n\nimport { FlexBox, VerticalCenteredFlexBox } from 'generalComponents/BoxModifications';\nimport { HeaderSectionProps } from 'views/IntelliSms/dialogs/Summary/interfaces';\nimport { KeyValueTypography } from 'views/IntelliSms/helpers/KeyValueTypography';\nimport { addSuffixToMessage } from 'views/IntelliSms/helpers/MessageUrlSuffixes';\nimport { GRAY_COLOR_7B, SMSFieldCSS } from 'views/IntelliSms/helpers/constants';\n\nimport { TooltipUrlSuffixExplanation } from '../EventPopper/EventPopper.content';\n\nexport const HeaderSection = ({\n characters,\n currentMessage,\n handleCloseSmsSummary,\n parts,\n includeStampCardUrl,\n includeUnregUrl\n}: HeaderSectionProps) => {\n return (\n \n \n \n \n\n \n \n \n\n \n \n \n\n \n } end={characters} />\n } end={parts} />\n \n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { Dialog, DialogContent, Skeleton, Typography } from '@mui/material';\n\nimport { VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { GRAY_COLOR, modalCSS } from 'views/IntelliSms/helpers/constants';\n\nexport const SummarySkeleton = ({\n handleCloseSmsSummary,\n openSMSSummary\n}: {\n handleCloseSmsSummary: () => void;\n openSMSSummary: boolean;\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { Box, Card, Tooltip, Typography } from '@mui/material';\n\nimport { DateInput } from '@fullcalendar/core';\n\nimport { FlexBox, VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { localeDateFnsSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { capitalizeFirstLetter } from 'utils/utils';\nimport { SummarySectionProps } from 'views/IntelliSms/dialogs/Summary/interfaces';\nimport { KeyValueTypography } from 'views/IntelliSms/helpers/KeyValueTypography';\nimport { GRAY_COLOR_7B, summaryCSS } from 'views/IntelliSms/helpers/constants';\n\nimport { formatSelectedEventDate } from '../EventPopper/helpers';\n\nconst sendTime = (date?: DateInput) => {\n const eventStart = formatSelectedEventDate({\n start: date instanceof Date && !Number.isNaN(date.valueOf()) ? date : new Date(),\n locale: localeDateFnsSelector(store.getState())\n });\n\n return (\n theme.palette.payAttGreen.dark }}>\n {capitalizeFirstLetter(`${eventStart.date}: ${eventStart.time}`)}\n \n );\n};\n\nexport const SummarySection = ({\n monthlySms,\n bonusSmsAfterSending,\n showBonusSms,\n children,\n freeMonthlySmsAfterSending,\n noCustomersFound,\n recipients,\n scheduledCampaign,\n selectedVenues,\n venuesFromStore,\n events,\n totalSmsParts\n}: SummarySectionProps) => {\n const selectedVenuesObjects = venuesFromStore.filter((el) => selectedVenues.includes(el.venueTitle));\n\n const smsSenderNames = new Set();\n\n selectedVenuesObjects.forEach((el) => {\n smsSenderNames.add(el.smsSenderName);\n });\n\n const smsSenderName = smsSenderNames.size === 1 ? smsSenderNames.values().next().value : undefined;\n\n const multiSmsSenderNameTooltip = () => (\n \n {selectedVenuesObjects.map((el) => {\n return (\n \n {el.venueTitle}\n {el.smsSenderName}\n \n );\n })}\n \n );\n\n if (smsSenderNames.size < 1) console.error('No sms sender name found, this should never happen');\n\n const multipleEvents = events.length > 1;\n const atLeastOneRecurringEvent = events.some((el) => typeof el.rrule !== 'undefined');\n\n return (\n \n {noCustomersFound ? (\n \n \n \n ) : (\n <>\n \n \n \n {events.length > 0 && (\n }\n end={\n theme.palette.payAttGreen.dark }}>\n {multipleEvents && }\n {atLeastOneRecurringEvent && !multipleEvents && (\n \n )}\n {!multipleEvents && !atLeastOneRecurringEvent && sendTime(events[0].date)}\n \n }\n />\n )}\n {smsSenderName && (\n }\n end={smsSenderName}\n />\n )}\n {!smsSenderName && (\n \n \n }\n end={}\n />\n \n \n )}\n\n }\n end={recipients}\n addStars={scheduledCampaign}\n />\n \n }>\n \n }\n end={totalSmsParts}\n addStars={scheduledCampaign}\n />\n \n \n }\n end={monthlySms}\n addStars={scheduledCampaign}\n />\n }\n end={freeMonthlySmsAfterSending}\n addStars={scheduledCampaign}\n />\n {showBonusSms && (\n }\n end={bonusSmsAfterSending}\n addStars={scheduledCampaign}\n />\n )}\n \n )}\n\n {children}\n \n );\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { TipsAndUpdatesTwoTone } from '@mui/icons-material';\nimport { Dialog, DialogContent, Typography } from '@mui/material';\n\nimport {\n HorizontalCenteredFlexBox,\n VerticalCenteredFlexBox,\n VerticalFlexBox\n} from 'generalComponents/BoxModifications';\nimport { ActionsSection } from 'views/IntelliSms/dialogs/Summary/Summary.actions';\nimport { ExcessWarning } from 'views/IntelliSms/dialogs/Summary/Summary.excessWarning';\nimport { HeaderSection } from 'views/IntelliSms/dialogs/Summary/Summary.header';\nimport { RecipientFiltersSection } from 'views/IntelliSms/dialogs/Summary/Summary.recipientFilters';\nimport { SummarySkeleton } from 'views/IntelliSms/dialogs/Summary/Summary.skeleton';\nimport { SummarySection } from 'views/IntelliSms/dialogs/Summary/Summary.summary';\nimport { calculateCost, getExcessMessages } from 'views/IntelliSms/dialogs/Summary/helpers';\nimport { useSummaryDialog } from 'views/IntelliSms/helperHooks/useSummaryDialog';\nimport { modalCSS } from 'views/IntelliSms/helpers/constants';\n\nimport { ActionsSectionProps, SummarySectionProps } from './interfaces';\n\nexport const SMSCampaignSummary = ({\n parentZIndex,\n onCampaignScheduledOrSent\n}: {\n parentZIndex: number;\n onCampaignScheduledOrSent?: () => void;\n}) => {\n const {\n acceptedExtraChanges,\n allCustomers,\n categories,\n currentMessage,\n filters,\n globalSettings,\n handleCloseSmsSummary,\n handleOpenScheduler,\n handleSendCampaignNow,\n handleSendTestCampaign,\n handleSubmitScheduledCampaigns,\n info,\n merchant,\n openScheduler,\n openSMSSummary,\n scheduledCampaign,\n selectedSCCampaign,\n selectedVenues,\n summaryData,\n toggleExtraCharges,\n venuesFromStore,\n events,\n includeStampCardUrl,\n includeUnregUrl\n } = useSummaryDialog();\n\n const positiveSmsRemaining = Math.max(merchant.smsRemaining, 0);\n const totalSmsAvailable = positiveSmsRemaining + merchant.bonusSmsPoolCount;\n const positiveTotalSmsAvailable = Math.max(totalSmsAvailable, 0);\n const costPerSms = summaryData?.costPerSMS ?? merchant?.costPerSMS ?? globalSettings.data?.costPerSMS ?? 0.6;\n\n if (!summaryData) {\n return ;\n }\n\n const onSubmit = async () => {\n if (scheduledCampaign) {\n const success = await handleSubmitScheduledCampaigns();\n if (!success) return;\n } else {\n await handleSendCampaignNow();\n }\n\n if (onCampaignScheduledOrSent) onCampaignScheduledOrSent();\n };\n\n const onTestsms = async () => {\n await handleSendTestCampaign();\n if (onCampaignScheduledOrSent) onCampaignScheduledOrSent();\n };\n\n const smsParts = summaryData.messageInfo.messages;\n const totalSmsParts = summaryData.recipients * smsParts;\n const excess = getExcessMessages(totalSmsParts, positiveTotalSmsAvailable);\n const totalCost = calculateCost(excess, costPerSms);\n\n const smsLimitExcessed = totalSmsAvailable < summaryData.recipients * smsParts;\n\n const disabledSubmitButton =\n (!!summaryData.error && !scheduledCampaign) ||\n (!scheduledCampaign && smsLimitExcessed && !acceptedExtraChanges);\n\n const headerSectionArgs = {\n characters: info.length,\n currentMessage,\n handleCloseSmsSummary,\n parts: info.messages,\n includeStampCardUrl,\n includeUnregUrl\n };\n\n const recipientFiltersSectionArgs = {\n allCustomers,\n categories,\n preSelectedEveryone: filters.preSelectedEveryone,\n preSelectedDates: filters.preSelectedDates,\n selectedSCCampaign,\n selectedVenues\n };\n\n const excessWarningArgs = {\n acceptedExtraChanges,\n costPerSms,\n positiveTotalSmsAvailable,\n recipients: summaryData.recipients,\n scheduledCampaign,\n smsParts,\n totalSmsParts,\n toggleExtraCharges,\n totalCost,\n totalSmsAvailable\n };\n\n const summarySectionArgs: Omit = {\n monthlySms: positiveSmsRemaining,\n bonusSmsAfterSending: summaryData.bonusSmsAfterSending,\n showBonusSms: merchant.bonusSmsPoolCount > 0,\n freeMonthlySmsAfterSending: summaryData.freeMonthlySmsAfterSending,\n noCustomersFound: Boolean(summaryData.error),\n recipients: summaryData.recipients,\n totalSmsParts,\n scheduledCampaign,\n selectedVenues,\n venuesFromStore,\n events\n };\n\n const actionsSectionArgs: ActionsSectionProps = {\n disabledSubmitButton,\n handleOpenScheduler,\n handleSendTestCampaign: onTestsms,\n onSubmit,\n scheduledCampaign,\n parentZIndex: parentZIndex + 1\n };\n\n return (\n \n \n \n \n\n \n\n \n \n \n\n {smsParts > 1 && (\n \n \n theme.palette.iconLightBulb.main }} />\n \n \n \n \n \n )}\n\n \n \n \n \n );\n};\n","export const getExcessMessages = (smsParts: number, smsAvailable: number) => {\n return smsParts - smsAvailable;\n};\n\nexport const calculateCost = (excess: number, rate: number) => {\n const decimalPrecision = 100;\n const calculatedCost = excess * rate;\n\n return Math.round(calculatedCost * decimalPrecision) / decimalPrecision;\n};\n\nexport const numberFormatLeadingZero = (val: string) => {\n return val.length === 1 ? `0${val}` : val;\n};\n","import { useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Dialog, DialogContent, Typography } from '@mui/material';\nimport { DatePicker, LocalizationProvider, TimeField, svSE } from '@mui/x-date-pickers';\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\n\nimport { VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { PayAttDialogActions } from 'generalComponents/Dialog/DialogActions';\nimport { TimeSelectorDialogProps } from 'generalComponents/RRuleGenerator/interfaces';\n\nexport const TimeSelectorDialog = ({\n open,\n handleClose,\n handleEvent,\n time,\n setTime,\n date,\n setDate,\n updatingEvent,\n parentZIndex\n}: TimeSelectorDialogProps) => {\n const [error, setError] = useState(false);\n\n return (\n \n \n \n \n {updatingEvent ? (\n \n ) : (\n \n )}\n \n\n \n {\n if (timeError.validationError) {\n setError(true);\n } else {\n setTime(newValue as Date);\n setError(false);\n }\n }}\n format=\"HH:mm\"\n />\n \n\n {updatingEvent && (\n \n {\n setDate(newValue as Date);\n }}\n value={date ? new Date(date) : null}\n />\n \n )}\n\n {error && (\n \n \n \n )}\n \n \n \n ) : (\n \n )\n }\n cancelButtonProps={{ variant: 'text' }}\n confirmButtonProps={{\n disabled: !!error,\n variant: 'text',\n sx: { color: (theme) => theme.palette.payAttGreen.main }\n }}\n />\n \n );\n};\n","import { useEffect } from 'react';\nimport { I18n } from 'react-redux-i18n';\n\nimport axios from 'axios';\n\nimport { EventInput } from '@fullcalendar/core';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport { BASE_URL, adjustTimeForTimezoneOffset } from 'api/helper';\nimport { handleAxiosError } from 'errorHandling/handleResponse';\nimport { PayAttFailToast, PayAttSuccessToast } from 'generalComponents/Toasts/Toasts';\nimport { currentUserSelector, venueSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { useAppDispatch } from 'store/store.exports';\nimport { sendTestSMS } from 'views/IntelliSms/helpers/api';\nimport { SMSBoxRecipients, ScheduleCampaignReq } from 'views/IntelliSms/helpers/interfaces';\nimport { failToastTestSMS, successToastTestSMS } from 'views/IntelliSms/helpers/toasts';\n\nimport { useSMSCampaignContext } from '../context/SMSCampaignContext';\nimport { IntelliSmsQueryKeys } from '../helpers/constants';\nimport { sendSmsCampaignNow } from '../helpers/sendSmsCampaign';\n\nexport const scheduledURL = `${BASE_URL}/sms-campaign/scheduled`;\n\nexport const generateBody = ({\n event,\n messageText,\n recipients,\n unmodifiedSuggestion,\n includeStampCardUrl,\n includeUnregUrl,\n intelliSmsSuggestion = undefined\n}: {\n event: EventInput;\n messageText: string;\n recipients: SMSBoxRecipients;\n unmodifiedSuggestion: boolean;\n includeStampCardUrl: boolean;\n includeUnregUrl: boolean;\n intelliSmsSuggestion?: string;\n}) => {\n const body: ScheduleCampaignReq = {\n messageText,\n recipients,\n unmodifiedSuggestion,\n intelliSmsSuggestion,\n includeStampCardUrl,\n includeUnregUrl\n };\n\n if (body.recipients.preSelectedDates) {\n body.recipients = {\n ...body.recipients,\n preSelectedDates: adjustTimeForTimezoneOffset(body.recipients.preSelectedDates)\n };\n }\n\n if (event.rrule) body.rrule = event.rrule as string;\n else body.executionTime = event.date;\n\n return body;\n};\n\nexport const useSummaryDialog = () => {\n const query = useQueryClient();\n const dispatch = useAppDispatch();\n\n const {\n acceptedExtraChanges,\n activeBox,\n boxStateMap,\n currentMessage,\n events,\n globalSettings,\n merchant,\n openScheduler,\n openSMSSummary,\n reset,\n scheduledCampaign,\n setAcceptedExtraCharges,\n setFiltersModalOpen,\n setOpenScheduler,\n setOpenSMSSummary,\n setSummaryData,\n stampCardCampaignsFromStore,\n summaryData,\n venuesFromStore\n } = useSMSCampaignContext();\n\n const {\n count: info,\n filters,\n unmodifiedSuggestion,\n intelliSmsSuggestion,\n includeStampCardUrl,\n includeUnregUrl\n } = boxStateMap[activeBox];\n\n const categories = filters.preSelectedTargetOptions || [];\n\n const selectedVenues = venuesFromStore\n .filter((v) => filters.preSelectedVenueOptions?.includes(v.id))\n .map((v) => v.venueTitle);\n\n const selectedSCCampaign = stampCardCampaignsFromStore\n .filter((v) => filters.preSelectedStampCardOptions?.includes(v.id))\n .map((c) => c.name);\n\n const allCustomers =\n !selectedSCCampaign.length && selectedVenues.length === venuesFromStore.length && !categories.length;\n\n const compareFilters = { ...filters };\n if (compareFilters.preSelectedStampCardOptions.includes('none')) compareFilters.preSelectedStampCardOptions = [];\n\n const handleCloseSmsSummary = () => {\n setOpenSMSSummary(false);\n setFiltersModalOpen(true);\n setAcceptedExtraCharges(false);\n };\n\n const handleOpenScheduler = () => {\n setOpenScheduler(true);\n };\n\n const toggleExtraCharges = () => {\n setAcceptedExtraCharges((v) => !v);\n };\n\n const handleSubmitScheduledCampaigns = async (): Promise => {\n try {\n const campaigns = events.map((e) =>\n generateBody({\n event: e,\n messageText: currentMessage,\n recipients: filters,\n unmodifiedSuggestion,\n includeStampCardUrl,\n includeUnregUrl,\n intelliSmsSuggestion\n })\n );\n\n await axios.post(scheduledURL, { campaigns });\n await query.refetchQueries({ queryKey: [IntelliSmsQueryKeys.ScheduledCampaigns] });\n\n PayAttSuccessToast(I18n.t('campaigns.summaryModal.successfullyScheduled'));\n\n reset();\n\n return true;\n } catch (error) {\n const err = handleAxiosError(error);\n console.error('Failed to schedule campaigns:', err.data);\n if (err.status === 406) {\n PayAttFailToast(I18n.t('campaigns.summaryModal.toSoon'));\n } else {\n PayAttFailToast(err.data.message || 'Something went wrong!');\n }\n\n return false;\n }\n };\n\n const handleSendCampaignNow = async () => {\n if (!summaryData?.refId || !filters.preSelectedVenueOptions) return;\n\n try {\n await sendSmsCampaignNow({ dispatch, refId: summaryData.refId, recipients: summaryData.recipients });\n reset();\n\n return true;\n } catch (error) {\n console.error(error);\n return false;\n }\n };\n\n const handleSendTestCampaign = async () => {\n const currUser = currentUserSelector(store.getState());\n if (!currUser) return;\n\n const phoneNumber = `${currUser?.contact.countryCode} ${currUser?.contact.phoneNumber.substring(1)}`;\n\n const venue =\n filters.preSelectedVenueOptions && filters.preSelectedVenueOptions.length > 0\n ? venueSelector({ state: store.getState(), venueId: filters.preSelectedVenueOptions[0] })\n : undefined;\n\n if (!venue) return;\n\n const stampCardCampaignId =\n filters.preSelectedStampCardOptions.length && filters.preSelectedStampCardOptions[0] !== 'none'\n ? filters.preSelectedStampCardOptions[0]\n : undefined;\n\n try {\n const res = await sendTestSMS({\n messageText: currentMessage,\n venueId: venue.id,\n includeStampCardUrl,\n includeUnregUrl,\n stampCardCampaignId\n });\n\n if (res.status === 200) {\n successToastTestSMS(phoneNumber);\n } else {\n console.error('Failed to send SMS campaign', res);\n failToastTestSMS();\n }\n } catch (error: any) {\n console.error('Failed to send SMS campaing', error);\n failToastTestSMS(error);\n }\n };\n\n useEffect(() => {\n return () => setSummaryData(null);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return {\n acceptedExtraChanges,\n allCustomers,\n categories,\n currentMessage,\n filters,\n globalSettings,\n handleCloseSmsSummary,\n handleOpenScheduler,\n handleSendCampaignNow,\n handleSendTestCampaign,\n handleSubmitScheduledCampaigns,\n info,\n merchant,\n openScheduler,\n openSMSSummary,\n scheduledCampaign,\n selectedSCCampaign,\n selectedVenues,\n summaryData,\n toggleExtraCharges,\n venuesFromStore,\n events,\n includeStampCardUrl,\n includeUnregUrl\n };\n};\n","import { useEffect, useState } from 'react';\nimport { I18n } from 'react-redux-i18n';\nimport { toast } from 'react-toastify';\n\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport { merchantSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { countSMSCharacters } from 'utils/smsLength';\nimport { getSMSSuggestion } from 'views/IntelliSms/helpers/api';\nimport { DEFAULT_FILTERS } from 'views/IntelliSms/helpers/constants';\nimport { ActiveBoxes } from 'views/IntelliSms/helpers/interfaces';\n\nimport { useSMSCampaignContext } from '../context/SMSCampaignContext';\nimport { addSuffixToMessage } from '../helpers/MessageUrlSuffixes';\nimport { NewCampaignInfoProps } from '../newCampaign/interfaces.info';\nimport { NewCampaignIntelliSmsMenuProps, NewCampaignMenuProps } from '../newCampaign/interfaces.menu';\nimport { ThreeBoxesSectionArgs, TopSectionArgs, UseThreeBoxes } from './useThreeBoxes.interfaces';\n\nexport const useThreeBoxes = (shouldFetchSuggestions = true): UseThreeBoxes => {\n const merchant = merchantSelector(store.getState());\n\n const {\n activeBox,\n box1State,\n box2State,\n box3State,\n boxStateMap,\n editTextDialogOpen,\n messageBoxOpacity,\n reset,\n savedSuggestionsOpen,\n setEditTextDialogOpen,\n setEvents,\n setFiltersModalOpen,\n setSavedSuggestionsOpened,\n setUrlShortenerDialogOpen,\n switchActiveBox,\n updateBox1State,\n updateBox2State,\n updateBox3State,\n urlShortenerDialogOpen,\n setEveryone\n } = useSMSCampaignContext();\n\n const [refresh, setRefresh] = useState(1);\n const [suggestionsLoading, setSuggestionsLoading] = useState(false);\n const [menuAnchorEl, setMenuAnchorEl] = useState(null);\n const [menuIntelliSmsAnchorEl, setMenuIntelliSmsAnchorEl] = useState(null);\n const [infoAnchorEl, setInfoAnchorEl] = useState(null);\n\n const menuOpen = Boolean(menuAnchorEl);\n const infoOpen = Boolean(infoAnchorEl);\n\n const menuIntelliSmsOpen = Boolean(menuIntelliSmsAnchorEl);\n\n const debounced = useDebouncedCallback((message: string) => {\n const currStateBox = boxStateMap[activeBox];\n let messageWithSuffix = message;\n\n if (currStateBox.includeStampCardUrl || currStateBox.includeUnregUrl) {\n messageWithSuffix = addSuffixToMessage({\n includeStampCardUrl: currStateBox.includeStampCardUrl,\n includeUnregUrl: currStateBox.includeUnregUrl,\n message\n });\n }\n\n boxStateMap[activeBox].count = countSMSCharacters(messageWithSuffix);\n }, 300);\n\n const SMSLimitExceeded = merchant.smsRemaining < 0;\n const SMSRemaining = SMSLimitExceeded ? 0 : merchant.smsRemaining;\n const paidSMSCount = SMSLimitExceeded ? merchant.smsRemaining * -1 : 0;\n\n const getSuggestions = async () => {\n setSuggestionsLoading(true);\n try {\n const [suggestion1, suggestion2, suggestion3] = await getSMSSuggestion();\n updateBox1State({\n currentMessage: suggestion1.suggestion,\n filters: suggestion1,\n unmodifiedSuggestion: true,\n intelliSmsSuggestion: suggestion1.suggestion,\n includeStampCardUrl: false,\n includeUnregUrl: false\n });\n updateBox2State({\n currentMessage: suggestion2.suggestion,\n filters: suggestion2,\n unmodifiedSuggestion: true,\n intelliSmsSuggestion: suggestion2.suggestion,\n includeStampCardUrl: false,\n includeUnregUrl: false\n });\n updateBox3State({\n currentMessage: suggestion3.suggestion,\n filters: suggestion3,\n unmodifiedSuggestion: true,\n intelliSmsSuggestion: suggestion3.suggestion,\n includeStampCardUrl: false,\n includeUnregUrl: false\n });\n } catch (error) {\n console.error(error);\n } finally {\n setSuggestionsLoading(false);\n }\n };\n\n const openInfo = (event: React.MouseEvent) => {\n setInfoAnchorEl(event.currentTarget);\n };\n\n const closeInfo = () => {\n setInfoAnchorEl(null);\n };\n\n const openMenu = (event: React.MouseEvent) => {\n setMenuAnchorEl(event.currentTarget);\n };\n\n const closeMenu = () => {\n setMenuAnchorEl(null);\n };\n\n const openIntelliSmsMenu = (event: React.MouseEvent) => {\n setMenuIntelliSmsAnchorEl(event.currentTarget);\n };\n\n const closeIntelliSmsMenu = () => {\n setMenuIntelliSmsAnchorEl(null);\n };\n\n const openUrlShortenerDialog = () => {\n setUrlShortenerDialogOpen(true);\n };\n\n const closeUrlShortenerDialog = () => {\n setUrlShortenerDialogOpen(false);\n };\n\n const openFiltersModal = () => {\n if (boxStateMap[activeBox].currentMessage.length === 0) {\n toast.warning(I18n.t('campaigns.newCampaign.errorsToProceed.noMessage'), { autoClose: 5000 });\n return;\n }\n\n setFiltersModalOpen(true);\n };\n\n const openSavedSuggestionsDialog = () => {\n setSavedSuggestionsOpened(true);\n };\n\n const closeSavedSuggestionsDialog = () => {\n setSavedSuggestionsOpened(false);\n };\n\n const closeEditTextDialog = () => {\n setEditTextDialogOpen(false);\n reset();\n };\n\n const editTextDialogNext = () => {\n openFiltersModal();\n setEditTextDialogOpen(false);\n };\n\n const openUrlShortener = () => {\n closeMenu();\n openUrlShortenerDialog();\n };\n\n const openSavedSuggestions = () => {\n closeMenu();\n openSavedSuggestionsDialog();\n };\n\n const refreshSuggestions = () => {\n setRefresh((c) => c + 1);\n };\n\n const loadSmsCampaignWidget = () => {\n switchActiveBox(ActiveBoxes.box1);\n updateBox1State({ currentMessage: '', filters: DEFAULT_FILTERS });\n };\n\n useEffect(() => {\n setEvents([]);\n }, [activeBox, setEvents]);\n\n useEffect(() => {\n let messageWithSuffix = box1State.currentMessage;\n\n if (box1State.includeStampCardUrl || box1State.includeUnregUrl) {\n messageWithSuffix = addSuffixToMessage({\n includeStampCardUrl: box1State.includeStampCardUrl,\n includeUnregUrl: box1State.includeUnregUrl,\n message: box1State.currentMessage\n });\n }\n\n // We cannot send stamp card message to everyone\n if (box1State.includeStampCardUrl) setEveryone(false);\n\n updateBox1State({ count: countSMSCharacters(messageWithSuffix) });\n }, [\n box1State.currentMessage,\n box1State.includeStampCardUrl,\n box1State.includeUnregUrl,\n setEveryone,\n updateBox1State\n ]);\n\n useEffect(() => {\n let messageWithSuffix = box2State.currentMessage;\n\n if (box2State.includeStampCardUrl || box2State.includeUnregUrl) {\n messageWithSuffix = addSuffixToMessage({\n includeStampCardUrl: box2State.includeStampCardUrl,\n includeUnregUrl: box2State.includeUnregUrl,\n message: box2State.currentMessage\n });\n }\n\n // We cannot send stamp card message to everyone\n if (box2State.includeStampCardUrl) setEveryone(false);\n\n updateBox2State({ count: countSMSCharacters(messageWithSuffix) });\n }, [\n box2State.currentMessage,\n box2State.includeStampCardUrl,\n box2State.includeUnregUrl,\n setEveryone,\n updateBox2State\n ]);\n\n useEffect(() => {\n let messageWithSuffix = box3State.currentMessage;\n\n if (box3State.includeStampCardUrl || box3State.includeUnregUrl) {\n messageWithSuffix = addSuffixToMessage({\n includeStampCardUrl: box3State.includeStampCardUrl,\n includeUnregUrl: box3State.includeUnregUrl,\n message: box3State.currentMessage\n });\n }\n\n // We cannot send stamp card message to everyone\n if (box3State.includeStampCardUrl) setEveryone(false);\n\n updateBox3State({ count: countSMSCharacters(messageWithSuffix) });\n }, [\n box3State.currentMessage,\n box3State.includeStampCardUrl,\n box3State.includeUnregUrl,\n setEveryone,\n updateBox3State\n ]);\n\n const toggleIncludeStampCardUrl = () => {\n switch (activeBox) {\n case ActiveBoxes.box1: {\n updateBox1State({ includeStampCardUrl: !box1State.includeStampCardUrl });\n break;\n }\n case ActiveBoxes.box2: {\n updateBox2State({ includeStampCardUrl: !box2State.includeStampCardUrl });\n break;\n }\n case ActiveBoxes.box3: {\n updateBox3State({ includeStampCardUrl: !box3State.includeStampCardUrl });\n break;\n }\n default: // do nothing\n }\n };\n\n const toggleIncludeUnregUrl = () => {\n switch (activeBox) {\n case ActiveBoxes.box1: {\n updateBox1State({ includeUnregUrl: !box1State.includeUnregUrl });\n break;\n }\n case ActiveBoxes.box2: {\n updateBox2State({ includeUnregUrl: !box2State.includeUnregUrl });\n break;\n }\n case ActiveBoxes.box3: {\n updateBox3State({ includeUnregUrl: !box3State.includeUnregUrl });\n break;\n }\n default: // do nothing\n }\n };\n\n useEffect(() => {\n if (shouldFetchSuggestions) getSuggestions();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [refresh]);\n\n const topSectionArgs: TopSectionArgs = {\n openInfo,\n openMenu: openIntelliSmsMenu\n };\n\n const menuArgs: NewCampaignMenuProps = {\n closeMenu,\n menuAnchorEl,\n menuOpen,\n openSavedSuggestions,\n openUrlShortener,\n stampCardUrl: boxStateMap[activeBox].includeStampCardUrl,\n toggleIncludeStampCardUrl,\n unregUrl: boxStateMap[activeBox].includeUnregUrl,\n toggleIncludeUnregUrl\n };\n\n const menuIntelliSmsArgs: NewCampaignIntelliSmsMenuProps = {\n closeMenu: closeIntelliSmsMenu,\n menuAnchorEl: menuIntelliSmsAnchorEl,\n menuOpen: menuIntelliSmsOpen,\n openSavedSuggestions,\n openUrlShortener\n };\n\n const infoArgs: NewCampaignInfoProps = {\n closeInfo,\n infoAnchorEl,\n infoOpen,\n merchant,\n paidSMSCount,\n SMSRemaining\n };\n\n const threeBoxesSectionArgs: ThreeBoxesSectionArgs = {\n activeBox,\n box1State,\n box2State,\n box3State,\n debounced,\n loading: suggestionsLoading,\n messageBoxOpacity,\n switchActiveBox,\n updateBox1State,\n updateBox2State,\n updateBox3State\n };\n\n return {\n activeBox,\n box1State,\n box2State,\n box3State,\n closeEditTextDialog,\n closeInfo,\n closeMenu,\n closeSavedSuggestionsDialog,\n closeUrlShortenerDialog,\n debounced,\n editTextDialogNext,\n editTextDialogOpen,\n infoAnchorEl,\n infoArgs,\n infoOpen,\n loadSmsCampaignWidget,\n menuAnchorEl,\n menuArgs,\n menuIntelliSmsArgs,\n menuOpen,\n messageBoxOpacity,\n openFiltersModal,\n openInfo,\n openMenu,\n openSavedSuggestions,\n openSavedSuggestionsDialog,\n openUrlShortener,\n openUrlShortenerDialog,\n refreshSuggestions,\n savedSuggestionsOpen,\n suggestionsLoading,\n switchActiveBox,\n threeBoxesSectionArgs,\n topSectionArgs,\n updateBox1State,\n updateBox2State,\n updateBox3State,\n urlShortenerDialogOpen\n };\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { Box, Tooltip, Typography, useTheme } from '@mui/material';\n\nimport { FlexBox } from 'generalComponents/BoxModifications';\nimport { getTextWidth } from 'utils/utils';\n\nexport const ColorIndicator = ({ color, text }: { color: string; text: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport const VenueColorIndicator = ({ color, venueTitle }: { color: string; venueTitle: string }) => {\n const theme = useTheme();\n\n const textWidth = getTextWidth(\n venueTitle,\n `${theme.typography.body1.fontSize}px ${theme.typography.body1.fontFamily}`\n );\n\n const maxTextWidth = 150;\n\n const showTooltip = textWidth >= maxTextWidth;\n\n const venueTitleText = () => {\n return (\n \n {venueTitle}\n \n );\n };\n\n return (\n \n \n\n {showTooltip ? (\n \n {venueTitleText()}\n \n ) : (\n venueTitleText()\n )}\n \n );\n};\n","import { I18n, Translate } from 'react-redux-i18n';\n\nimport { Box, List, ListItem, ListItemText, Theme, Tooltip, Typography } from '@mui/material';\n\nimport { FlexBox } from 'generalComponents/BoxModifications';\nimport { BonusSmsPoolStructure } from 'store/features/merchantAndVenues/handlers';\nimport { isValidDate } from 'utils/utils';\n\nexport const KeyValueTypography = ({\n start,\n end,\n addStars = false\n}: {\n start: string | JSX.Element;\n end: string | number | JSX.Element;\n addStars?: boolean;\n}) => {\n return (\n \n {start}{' '}\n \n {end}\n {addStars ? '*' : ''}\n \n \n );\n};\n\nexport const generateKeyValueTypography = (theme: Theme, key: string, val: string | number, tooltip?: JSX.Element) => (\n \n \n \n {': '}\n \n {val}\n \n \n \n);\n\nexport const getSmsPoolTooltip = (bonusSmsPool: BonusSmsPoolStructure[]): JSX.Element | undefined => {\n const bonusSmsPoolOnlyValid = bonusSmsPool.filter(\n (el) => typeof el.expirationTime === 'undefined' || new Date(el.expirationTime).getTime() > new Date().getTime()\n );\n\n if (!bonusSmsPoolOnlyValid || !bonusSmsPoolOnlyValid.length) {\n return undefined;\n }\n\n const bonusSmsPoolNoExpiry = bonusSmsPoolOnlyValid.filter((el) => !el.expirationTime);\n const bonusSmsPoolExpirationData = bonusSmsPoolOnlyValid\n .filter((el) => isValidDate(el.expirationTime))\n .sort((a, b) => new Date(a.expirationTime).getTime() - new Date(b.expirationTime).getTime())\n .map((el) => {\n const expirationTime = new Date(el.expirationTime.toString());\n const secs = Math.floor((expirationTime.getTime() - new Date().getTime()) / 1000);\n\n const mins = Math.floor(secs / 60);\n const hours = Math.floor(mins / 60);\n const days = Math.floor(hours / 24);\n const years = Math.floor(days / 365);\n\n let dateStr = '';\n if (years > 0) dateStr = `${years}y`;\n else if (days > 0) dateStr = `${days}d`;\n else dateStr = `${hours % 24}h ${mins % 60}m`;\n\n return (\n \n \n \n \n \n \n );\n });\n\n if (bonusSmsPoolNoExpiry.length) {\n bonusSmsPoolExpirationData.push(\n \n \n sum + el.smsLeft, 0)}`}\n />\n \n \n \n );\n }\n\n const bonusSmsHasExpiry = bonusSmsPoolOnlyValid.filter((el) => el.expirationTime).length > 0;\n\n return (\n \n \n {bonusSmsHasExpiry && (\n <>\n \n \n - \n \n \n \n \n \n \n {bonusSmsPoolExpirationData}\n \n )}\n \n );\n};\n\nexport const BoldUnderLineTypography = ({ text }: { text: string | number }) => (\n \n {text}\n \n);\n","import { PAYATT_DOMAIN } from 'utils/utils';\n\nconst UNREG_URL_PLACEHOLDER = `Avreg? ${PAYATT_DOMAIN}/unreg/abcd1234`;\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst STAMP_CARD_URL_PLACEHOLDER = `${PAYATT_DOMAIN}/stamp-card/abcdef123456`;\n\n/**\n * Results:\n * 1. text + \\nAvreg? payatt.club/unreg/abcd1234\n * 2. text + payatt.club/stamp-card/abcdef123456\n * 3. text + payatt.club/stamp-card/abcdef123456\\n\\nAvreg? payatt.club/unreg/abcd1234\n */\nexport const getSuffix = ({\n includeStampCardUrl,\n includeUnregUrl\n}: {\n includeStampCardUrl: boolean;\n includeUnregUrl: boolean;\n}) => {\n if (!includeStampCardUrl && !includeUnregUrl) return '';\n\n let suffix = '';\n\n if (includeStampCardUrl) {\n suffix += STAMP_CARD_URL_PLACEHOLDER;\n\n if (includeUnregUrl) return `${suffix}\\n\\n${UNREG_URL_PLACEHOLDER}`;\n }\n\n if (includeUnregUrl) suffix += `\\n${UNREG_URL_PLACEHOLDER}`;\n\n return suffix;\n};\n\nexport const addSuffixToMessage = ({\n includeStampCardUrl,\n includeUnregUrl,\n message\n}: {\n includeStampCardUrl: boolean;\n includeUnregUrl: boolean;\n message: string;\n}) => {\n return `${message}${getSuffix({ includeStampCardUrl, includeUnregUrl })}`;\n};\n\nexport const getMessageWithoutSuffix = ({\n includeStampCardUrl,\n includeUnregUrl,\n suffix,\n message\n}: {\n suffix: string;\n message: string;\n includeStampCardUrl: boolean;\n includeUnregUrl: boolean;\n}) => {\n if (!includeStampCardUrl && !includeUnregUrl) return message;\n\n if (!message.includes(suffix)) throw new Error('Trying to modify the suffix');\n\n return message.split(suffix)[0];\n};\n","import axios, { AxiosError, AxiosResponse } from 'axios';\n\nimport { EventInput } from '@fullcalendar/core';\n\nimport { BASE_URL, adjustTimeForTimezoneOffset } from 'api/helper';\nimport { handleAxiosError, handleAxiosInvalidResponse } from 'errorHandling/handleResponse';\nimport { PayAttError } from 'errorHandling/payattError';\nimport { PayAttSuccess, payAttSuccess } from 'errorHandling/payattSuccess';\nimport {\n EndTime,\n HistoricalCampaignsRes,\n SMSBoxFiltersArgs,\n SMSBoxRecipients,\n ScheduleCampaignRes,\n StartTime,\n SummaryDataResponse\n} from 'views/IntelliSms/helpers/interfaces';\n\nimport { tooManySuggestionRequests } from './toasts';\n\nexport const getSMSSuggestion = async (): Promise<({ suggestion: string } & SMSBoxFiltersArgs)[]> => {\n try {\n const response = await axios.get(`${BASE_URL}/open-ai/suggestions?amount=3`);\n\n if (response.status >= 200 && response.status < 300) {\n return response.data;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error: any) {\n const err = error as AxiosError;\n if (err.response?.status === 429) {\n tooManySuggestionRequests();\n }\n throw handleAxiosError(error);\n }\n};\n\nexport const saveSMSSuggestion = async (suggestion: string): Promise<{ message: string }> => {\n try {\n const response = await axios.post(`${BASE_URL}/open-ai/saved-suggestions`, { suggestion });\n\n if (response.status >= 200 && response.status < 300) {\n return response.data;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const deleteSMSSuggestion = async (suggestion: string): Promise<{ message: string }> => {\n try {\n const response = await axios.delete(`${BASE_URL}/open-ai/saved-suggestions`, { data: { suggestion } });\n\n if (response.status >= 200 && response.status < 300) {\n return response.data;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const getSavedSMSSuggestions = async () => {\n try {\n const response = await axios.get(`${BASE_URL}/open-ai/saved-suggestions`);\n\n if (response.status >= 200 && response.status < 300) {\n return response.data;\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const getScheduledCampaigns = async (): Promise => {\n const [res1, res2] = await Promise.all([\n axios.get(`${BASE_URL}/sms-campaign/scheduled`),\n axios.get(`${BASE_URL}/sms-campaign/history`)\n ]);\n\n if (res1.status !== 200) throw handleAxiosInvalidResponse(res1);\n if (res2.status !== 200) throw handleAxiosInvalidResponse(res2);\n\n const scheduled = res1.data.map(\n ({ id, messageText: title, rrule, nextExecution: date, recipients, includeStampCardUrl, includeUnregUrl }) => {\n return { id, title, rrule, date, recipients, includeStampCardUrl, includeUnregUrl };\n }\n );\n\n const historical = res2.data.map(\n ({\n id,\n messageText: title,\n executionTime: date,\n recipients,\n recipientsCount,\n numberOfPaidSMSParts,\n bonusSMSUsed,\n messageInfo,\n failedVenues,\n recipientsPerVenue,\n includeStampCardUrl,\n includeUnregUrl\n }) => {\n return {\n id,\n title,\n date,\n recipients,\n historical: true,\n recipientsCount,\n numberOfPaidSMSParts,\n bonusSMSUsed,\n messageInfo,\n failedVenues,\n recipientsPerVenue,\n includeStampCardUrl,\n includeUnregUrl\n };\n }\n );\n\n return [...scheduled, ...historical];\n};\n\n// Accepts both username and email, server will send a password reset link to the email of the user\nexport const sendSMSCampaign = async (refId: string): Promise => {\n try {\n const response = await axios.post(`${BASE_URL}/sms-campaign/${refId}`);\n\n if (response.status >= 200 && response.status < 300) {\n return payAttSuccess(response.data, response.status);\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const sendTestSMS = async ({\n messageText,\n venueId,\n stampCardCampaignId,\n includeUnregUrl,\n includeStampCardUrl\n}: {\n messageText: string;\n venueId: string;\n includeUnregUrl: boolean;\n includeStampCardUrl: boolean;\n stampCardCampaignId?: string;\n}): Promise => {\n try {\n const response = await axios.post(`${BASE_URL}/sms-campaign/test`, {\n messageText,\n venueId,\n stampCardCampaignId,\n includeUnregUrl,\n includeStampCardUrl\n });\n\n if (response.status >= 200 && response.status < 300) {\n return payAttSuccess(response.data, response.status);\n }\n\n throw handleAxiosInvalidResponse(response);\n } catch (error) {\n throw handleAxiosError(error);\n }\n};\n\nexport const generateSMS = async ({\n messageText,\n recipients,\n unmodifiedSuggestion,\n includeStampCardUrl,\n includeUnregUrl,\n intelliSmsSuggestion,\n startTime,\n endTime\n}: {\n messageText: string;\n recipients: SMSBoxRecipients;\n unmodifiedSuggestion: boolean;\n includeStampCardUrl: boolean;\n includeUnregUrl: boolean;\n intelliSmsSuggestion?: string | undefined;\n startTime?: StartTime | undefined;\n endTime?: EndTime | undefined;\n}): Promise> => {\n let recipientsAfterDateOffsetAdjustment = recipients;\n if (recipientsAfterDateOffsetAdjustment.preSelectedDates) {\n recipientsAfterDateOffsetAdjustment = {\n ...recipientsAfterDateOffsetAdjustment,\n preSelectedDates: adjustTimeForTimezoneOffset(recipientsAfterDateOffsetAdjustment.preSelectedDates)\n };\n }\n\n return axios.post(`${BASE_URL}/sms-campaign/generate-sms`, {\n messageText,\n recipients: recipientsAfterDateOffsetAdjustment,\n unmodifiedSuggestion,\n includeStampCardUrl,\n includeUnregUrl,\n intelliSmsSuggestion,\n startTime,\n endTime\n });\n};\n","import { PAYATT_DOMAIN } from 'utils/utils';\n\nexport const errorSummaryData = {\n bonusSmsAfterSending: 0,\n costPerSMS: 0,\n freeMonthlySmsAfterSending: 0,\n payingRecipientCount: 0,\n recipients: 0,\n messageInfo: {\n characterPerMessage: 160,\n encoding: 'GSM_7BIT',\n inCurrentMessage: 0,\n length: 0,\n messages: 0,\n remaining: 0\n }\n};\n\nexport const SMSFieldCSS = {\n width: '100%',\n '& > div > textarea': { WebkitTextFillColor: '#4b5563 !important' }\n};\n\nexport const summaryCSS = {\n p: 2,\n pt: 1,\n display: 'flex',\n justifyContent: 'center',\n flexDirection: 'column',\n alignItems: 'left'\n};\n\nexport const modalCSS = {\n minWidth: '550px',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between'\n};\n\nexport const GRAY_COLOR_7B = '#7b7b7b';\nexport const GRAY_COLOR = '#64748b !important';\nexport const defaultBoxOpacity = { box1: 1, box2: 0.5, box3: 0.5 };\nexport const boxesOpacityHalfed = { box1: 0.5, box2: 0.5, box3: 0.5 };\n\nexport const eventFailedToSendWarningColor = '#FFA319';\nexport const eventFailedToSendErrorColor = '#FF6F1A';\n\nexport const eventTextCSS = { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis', color: '#1a1a1a' };\n\nexport const newEventSchedulingColors = {\n previousCampaigns: '#d6d3d1',\n previouslyScheduled: '#f3e8ff',\n newEvent: '#a3e635',\n updatedEvent: '#facc15'\n};\n\nexport const newEventCSS = {\n background: 'none',\n backgroundColor: newEventSchedulingColors.newEvent,\n borderColor: newEventSchedulingColors.newEvent,\n outline: `1px solid ${newEventSchedulingColors.newEvent}`,\n borderRadius: '2px'\n};\n\nexport const updatedEventCSS = {\n background: 'none',\n backgroundColor: newEventSchedulingColors.updatedEvent,\n borderColor: newEventSchedulingColors.updatedEvent,\n outline: `1px solid ${newEventSchedulingColors.updatedEvent}`,\n borderRadius: '2px'\n};\n\nexport const previouslyScheduledEventCSS = {\n background: 'none',\n backgroundColor: newEventSchedulingColors.previouslyScheduled,\n borderColor: newEventSchedulingColors.previouslyScheduled,\n outline: `1px solid ${newEventSchedulingColors.previouslyScheduled}`,\n borderRadius: '2px'\n};\n\nexport const previousEventCSS = {\n background: 'none',\n backgroundColor: newEventSchedulingColors.previousCampaigns,\n borderColor: newEventSchedulingColors.previousCampaigns,\n outline: `1px solid ${newEventSchedulingColors.previousCampaigns}`,\n textDecoration: 'line-through',\n borderRadius: '2px'\n};\n\nexport const eventPopperCSS = {\n maxWidth: '400px',\n minWidth: '200px',\n borderRadius: 0,\n border: '1px solid rgba(93, 93, 93, 0.5)'\n};\n\nexport const eventPopperTopRowCSS = (newEvent: boolean, overview: boolean, pastOverviewEvent: boolean) => {\n let backgroundColor = newEventSchedulingColors.previousCampaigns;\n if (newEvent) backgroundColor = newEventSchedulingColors.newEvent;\n if (overview) backgroundColor = '#bae6fd'; // light blue\n if (pastOverviewEvent) backgroundColor = newEventSchedulingColors.previousCampaigns;\n\n return {\n alignItems: 'center',\n backgroundColor,\n width: '100%',\n height: '30px',\n py: 2\n };\n};\n\nexport const defaultRenderEventCSS = {\n alignItems: 'center',\n cursor: 'pointer',\n maxHeight: '20px',\n outline: `1px solid rgba(119, 119, 119, 0.47)`,\n borderRadius: '2px'\n};\n\nexport const DEFAULT_FILTERS = {\n preSelectedEveryone: true,\n preSelectedStampCardOptions: [],\n preSelectedTargetOptions: [],\n preSelectedVenueOptions: []\n};\n\nexport const editTextDialogCSS = {\n '.MuiDialog-paper': {\n width: '80%',\n maxWidth: '600px',\n borderRadius: '12px',\n padding: '20px'\n }\n};\n\nexport const editTextDialogContentCSS = {\n minWidth: '500px',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '20px'\n};\n\nexport const warningBoxCSS = {\n backgroundColor: '#ffc81254',\n alignItems: 'center',\n borderRadius: '7px',\n p: '5px 100px 5px 10px'\n};\n\nexport const accordionCSS = { backgroundColor: '#ededed', minHeight: '32px !important', maxHeight: '32px', mt: 2 };\n\nexport const eventColorPool = [\n '#a3e635', // Lime\n '#38bdf8', // Sky\n '#fb923c', // Orange\n '#f472b6', // Pink\n '#2dd4bf', // Teal\n '#818cf8', // Indigo\n '#fbbf24', // Amber\n '#60a5fa', // Blue\n '#a78bfa', // Violet\n '#34d399', // Emerald\n '#fb7185', // Rose\n '#c084fc', // Purple\n '#4ade80', // Green\n '#e879f9', // Fuchsia\n '#f87171', // Red\n '#22d3ee', // Cyan\n '#facc15', // Yellow\n '#a8a29e' // Gray\n];\n\nexport const MAX_SMS_CHARACTERS = 160;\nexport const MIN_SMS_CHARACTERS = 10;\n\nconst unregUrlSyntax = `${PAYATT_DOMAIN}/unreg/abcd1234`;\nconst unregText = '\\n\\nAvreg? ';\n\nexport const MAX_SMS_CHARACTERS_WITH_UNREG = (removeWelcomeSMSEnding: boolean) => {\n if (removeWelcomeSMSEnding) return MAX_SMS_CHARACTERS - unregUrlSyntax.length;\n\n return MAX_SMS_CHARACTERS - `${unregText}${unregUrlSyntax}`.length;\n};\n\nexport enum IntelliSmsQueryKeys {\n ScheduledCampaigns = 'ScheduledCampaigns'\n}\n","import { Box, Typography, useTheme } from '@mui/material';\n\nimport { FlexBox } from 'generalComponents/BoxModifications';\nimport { SelectionOption, TitleType } from 'views/IntelliSms/helpers/interfaces';\n\ninterface CustomItemRendererProps {\n checked: boolean;\n option: SelectionOption;\n onClick: () => void;\n disabled: boolean;\n}\n\nexport const CustomItemRenderer = ({ checked, option, onClick, disabled }: CustomItemRendererProps) => {\n const theme = useTheme();\n\n if (option.isSubtitle) {\n return (\n \n {option.label}\n \n );\n }\n\n const colorMap: Record = {\n general: theme.palette.payAttPink.dark,\n stampCard: theme.palette.payAttBlue.dark,\n mostUsed: theme.palette.payAttGreen.dark\n };\n\n return option.isTitle ? (\n \n {option.label}\n \n ) : (\n \n \n\n \n {option.label}\n \n \n );\n};\n\nexport const CustomStampCardRenderer = ({ checked, option, onClick, disabled }: CustomItemRendererProps) => {\n return (\n \n \n \n {option.label}\n \n \n \n );\n};\n\nexport const customValueRenderer =\n (noItemsText = '🙅‍♂️ No Items Selected') =>\n (selected: SelectionOption[]) => {\n const selectedSet = new Set();\n\n selected.forEach((s) => selectedSet.add(s.value));\n\n const selectedWithoutDuplicates: SelectionOption[] = [];\n\n selectedSet.forEach((value) => {\n selectedWithoutDuplicates.push(selected.find((s) => s.value === value) as SelectionOption);\n });\n\n return selectedWithoutDuplicates.length\n ? selectedWithoutDuplicates.map(\n ({ label }, i) => `${label}${i !== selectedWithoutDuplicates.length - 1 ? ', ' : ''}`\n )\n : noItemsText;\n };\n\nexport const calculateGradientPercentage = (colorsLength: number, currentIndex: number) => {\n return `${(100 / colorsLength) * currentIndex}% ${(100 / colorsLength) * (currentIndex + 1)}%`;\n};\n","import { DateInput, EventInput } from '@fullcalendar/core';\nimport { UseQueryResult } from '@tanstack/react-query';\nimport { DebouncedState } from 'use-debounce';\n\nimport { BillingSettingsState } from 'store/features/PayAttSettings/handlers';\nimport { MerchantInterface, VenuesInterface } from 'store/features/merchantAndVenues/handlers';\nimport { SetStateBooleanType, SetStateNumberType } from 'utils/global.interfaces';\nimport { TextSummary } from 'utils/smsLength';\nimport { TARGET_GROUP_TYPE } from 'views/IntelliSms/helpers/targetGroupEnums';\nimport { IStampCardCampaign } from 'views/StampCardPage/stampCardPage.interfaces';\n\nexport type SetStateSelectedOptions = React.Dispatch>;\nexport type UpdateBoxState = React.Dispatch>;\n\nexport type TitleType = 'general' | 'stampCard' | 'mostUsed';\n\nexport interface SelectionOption {\n label: string;\n value: string;\n disabled?: boolean;\n isTitle?: boolean;\n isSubtitle?: boolean;\n POSIds?: POSId[];\n stampCard?: boolean;\n type?: TitleType;\n campaignDisabledOrExpired?: boolean;\n}\n\nexport const ActiveBoxes = {\n box1: 'box1',\n box2: 'box2',\n box3: 'box3'\n} as const;\n\nexport type ActiveBox = (typeof ActiveBoxes)[keyof typeof ActiveBoxes];\n\nexport interface FilterTimeIntervals {\n startTime: StartTime;\n endTime: EndTime;\n}\n\nexport interface SMSBoxRecipients {\n preSelectedStampCardOptions: StampCardCampaignId[];\n preSelectedVenueOptions: VenueId[];\n preSelectedTargetOptions: TARGET_GROUP_TYPE[];\n preSelectedEveryone: boolean;\n preSelectedDates?: FilterTimeIntervals;\n}\nexport interface SMSBoxFiltersArgs extends SMSBoxRecipients {\n activeBox: ActiveBox;\n currentMessage: string;\n open: boolean;\n handleClose: () => void;\n}\n\nexport interface SMSBoxState {\n currentMessage: string;\n count: TextSummary;\n filters: SMSBoxRecipients;\n unmodifiedSuggestion: boolean;\n intelliSmsSuggestion: string;\n includeUnregUrl: boolean;\n includeStampCardUrl: boolean;\n}\n\nexport interface ScheduleCampaignReq {\n messageText: string;\n recipients: SMSBoxRecipients;\n unmodifiedSuggestion: boolean;\n includeStampCardUrl: boolean;\n includeUnregUrl: boolean;\n intelliSmsSuggestion?: string;\n rrule?: string;\n executionTime?: DateInput;\n}\n\nexport interface ScheduleCampaignRes {\n id: string;\n merchantId: MerchantId;\n senderName: string;\n messageText: string;\n recipients: SMSBoxRecipients;\n acceptedExtraCosts: boolean;\n includeStampCardUrl?: boolean;\n includeUnregUrl?: boolean;\n rrule?: string;\n nextExecution?: string;\n}\n\nexport interface RecipientsPerVenue {\n venueId: string;\n recipientCount: number; // Includes owners\n ownerCount: number;\n costPerSMS: number;\n numberOfPaidSMS: number;\n numberOfBonusSMS: number;\n numberOfFreeSMS: number;\n smsSenderName: string;\n}\n\nexport interface FailedVenues {\n venueId: string;\n count: number;\n}\n\nexport interface HistoricalCampaignsRes {\n id: string;\n merchantId: string;\n messageText: string;\n recipients: SMSBoxRecipients;\n executionTime: string;\n recipientsCount: number;\n numberOfPaidSMSParts: number;\n bonusSMSUsed: number;\n messageInfo: TextSummary;\n failedVenues: FailedVenues[];\n recipientsPerVenue: RecipientsPerVenue[];\n includeStampCardUrl?: boolean;\n includeUnregUrl?: boolean;\n}\n\nexport type SMSBoxProps = {\n count: TextSummary;\n message: string;\n debounced: DebouncedState<(message: string) => void>;\n setMessage: UpdateBoxState;\n opacity: number;\n isActive: boolean;\n setActive: () => void;\n loading: boolean;\n openMenu: (event: React.MouseEvent) => void;\n includeUnregUrl: boolean;\n includeStampCardUrl: boolean;\n filters?: SMSBoxRecipients;\n hideTextSummary?: boolean;\n};\n\nexport interface SummaryDataResponse {\n bonusSmsAfterSending: number;\n costPerSMS: number;\n freeMonthlySmsAfterSending: number;\n payingRecipientCount: number;\n recipients: number;\n messageInfo: TextSummary;\n refId?: string;\n error?: string;\n}\n\nexport interface RenderEventContentOverviewProps {\n eventBeingUpdatedId: string;\n colorMap: Record;\n}\n\nexport interface StartTime {\n hour: string;\n min: string;\n}\n\nexport interface EndTime {\n hour: string;\n min: string;\n}\n\nexport interface SmsContextProps {\n acceptedExtraChanges: boolean;\n activeBox: ActiveBox;\n box1State: SMSBoxState;\n box2State: SMSBoxState;\n box3State: SMSBoxState;\n boxStateMap: { box1: SMSBoxState; box2: SMSBoxState; box3: SMSBoxState };\n currentMessage: string;\n editTextDialogOpen: boolean;\n events: EventInput[];\n everyone: boolean;\n filtersModalOpen: boolean;\n globalSettings: BillingSettingsState;\n merchant: MerchantInterface;\n messageBoxOpacity: Record;\n noneSCSelected: { label: string; value: string; POSIds: never[] };\n openPopper: boolean;\n openScheduler: boolean;\n openSMSSummary: boolean;\n refreshFilters: number;\n reset: () => void;\n savedSuggestionsOpen: boolean;\n scheduledCampaign: boolean;\n selectedStampCardCampaigns: SelectionOption[];\n selectedTargetFilters: SelectionOption[];\n selectedVenues: SelectionOption[];\n setAcceptedExtraCharges: SetStateBooleanType;\n setActiveBox: React.Dispatch>;\n setEditTextDialogOpen: SetStateBooleanType;\n setEvents: React.Dispatch>;\n setEveryone: SetStateBooleanType;\n setFiltersModalOpen: SetStateBooleanType;\n setOpenPopper: SetStateBooleanType;\n setOpenScheduler: SetStateBooleanType;\n setOpenSMSSummary: SetStateBooleanType;\n setRefreshFilters: SetStateNumberType;\n setSavedSuggestionsOpened: SetStateBooleanType;\n setScheduledCampaign: SetStateBooleanType;\n setSelectedStampCardCampaigns: SetStateSelectedOptions;\n setSelectedTargetFilters: SetStateSelectedOptions;\n setSelectedVenues: SetStateSelectedOptions;\n setStampCardFilterSelected: SetStateBooleanType;\n setSummaryData: React.Dispatch>;\n setTargetOptions: SetStateSelectedOptions;\n setUrlShortenerDialogOpen: SetStateBooleanType;\n setVenueOptions: SetStateSelectedOptions;\n stampCardCampaignsFromStore: IStampCardCampaign[];\n stampCardFilterSelected: boolean;\n summaryData: SummaryDataResponse | null;\n switchActiveBox: (box: ActiveBox) => () => void;\n targetOptions: SelectionOption[];\n updateActiveBoxState: (args: Partial) => void;\n updateBox1State: UpdateBoxState;\n updateBox2State: UpdateBoxState;\n updateBox3State: UpdateBoxState;\n urlShortenerDialogOpen: boolean;\n venueOptions: SelectionOption[];\n venuesFromStore: VenuesInterface[];\n scheduledCampaignsQueryResult: UseQueryResult;\n timeIntervalDialogOpen: boolean;\n setTimeIntervalDialogOpen: SetStateBooleanType;\n}\n","import { I18n, Translate } from 'react-redux-i18n';\nimport { ToastOptions } from 'react-toastify';\n\nimport { Message, PriorityHigh } from '@mui/icons-material';\n\nimport { PayAttFailToastForever, PayAttSuccessToastForever } from 'generalComponents/Toasts/Toasts';\nimport { currentUserSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { PopulateMerchantAndVenues } from 'store/store.populate';\nimport { sendSMSCampaign } from 'views/IntelliSms/helpers/api';\n\nconst ERROR_TOAST_ID = 'payatt-sms-campaign-error-when-sending';\nconst SUCCESS_TOAST_ID = 'payatt-sms-campaign-success-when-sending';\n\nexport const successToastId = (refId: string) => `${SUCCESS_TOAST_ID}-${refId}`;\n\nexport const errorToastOptions = (refId: string): ToastOptions => {\n return {\n icon: ,\n closeButton: true,\n autoClose: 5000,\n toastId: `${ERROR_TOAST_ID}-${refId}`\n };\n};\n\nexport const successToastOptions = (refId: string): ToastOptions => {\n return {\n icon: ,\n closeButton: true,\n autoClose: 15000,\n toastId: successToastId(refId)\n };\n};\n\nexport const failToastBody = (err?: React.ReactNode) => (\n
\n \n {err ? (\n \n : {err}\n \n ) : null}\n
\n);\n\nconst getMinSecFromStr = (msg: string) => {\n let timeLeft = msg.split(': ');\n timeLeft = timeLeft[1].split('m');\n const minLeft = timeLeft[0].trim();\n timeLeft = timeLeft[1].split('s');\n const secLeft = timeLeft[0].trim();\n\n return { minLeft, secLeft };\n};\n\nexport const handlePostCampaignError = async (error: any, refId: string) => {\n console.error('Failed to send SMS campaign', error);\n\n const msg: string = error?.message || 'Unknown error';\n\n let toastBody = failToastBody();\n\n if (msg.includes('No customers after filtering away')) {\n toastBody = failToastBody();\n } else if (msg.includes('Insufficient SMS balance')) {\n toastBody = failToastBody();\n } else if (msg.includes('Minutes left until you can send another SMS campaign')) {\n try {\n const { minLeft, secLeft } = getMinSecFromStr(msg);\n\n if (parseInt(minLeft, 10) > 0) {\n toastBody = failToastBody(`${I18n.t('campaigns.content.send.timeLeft')} ${minLeft}m ${secLeft}s`);\n } else {\n toastBody = failToastBody(`${I18n.t('campaigns.content.send.timeLeft')} ${secLeft}s`);\n }\n } catch (err) {\n console.error('Failed to parse error', err);\n\n toastBody = failToastBody();\n }\n } else if (msg.includes('Unexpected error, campaign is already being sent, try again later')) {\n toastBody = failToastBody();\n }\n\n return PayAttFailToastForever(toastBody, errorToastOptions(refId));\n};\n\nexport const sendSmsCampaignNow = async ({\n dispatch,\n refId,\n recipients\n}: {\n dispatch: any;\n refId: string;\n recipients: number;\n}) => {\n try {\n const res = await sendSMSCampaign(refId);\n\n if (res.status === 200) {\n const user = currentUserSelector(store.getState());\n if (user) PopulateMerchantAndVenues(dispatch, user);\n\n return PayAttSuccessToastForever(\n = 500 ? 'successLargeCampaign' : 'success'}`}\n dangerousHTML\n />,\n successToastOptions(refId)\n );\n }\n\n console.error(`Failed to send SMS campaign with status ${res.status}`, res.message);\n\n let toastBody = failToastBody();\n\n if (res.status === 204) {\n toastBody = failToastBody();\n }\n\n return PayAttFailToastForever(toastBody, errorToastOptions(refId));\n } catch (error) {\n await handlePostCampaignError(error, refId);\n }\n};\n","export enum TARGET_GROUP_GENERAL_ENUM {\n Everyone = 'Everyone',\n TimeInterval = 'TimeInterval',\n LastVisitWithin1Week = 'LastVisitWithin1Week',\n LastVisitWithin2Weeks = 'LastVisitWithin2Weeks',\n LastVisitWithin1Month = 'LastVisitWithin1Month',\n LastVisitWithin3Months = 'LastVisitWithin3Months',\n LastVisitWithin6Months = 'LastVisitWithin6Months',\n LastVisitBefore1Week = 'LastVisitBefore1Week',\n LastVisitBefore2Weeks = 'LastVisitBefore2Weeks',\n LastVisitBefore1Month = 'LastVisitBefore1Month',\n LastVisitBefore3Months = 'LastVisitBefore3Months',\n LastVisitBefore6Months = 'LastVisitBefore6Months'\n}\n\nexport enum TARGET_GROUP_REWARDS_ENUM {\n OneStampLeftForReward = 'OneStampLeftForReward',\n OneStampLeftForReward1 = 'OneStampLeftForReward1',\n OneStampLeftForReward2 = 'OneStampLeftForReward2',\n OneStampLeftForReward3 = 'OneStampLeftForReward3',\n RewardToClaimAny = 'RewardToClaimAny',\n RewardToClaim1 = 'RewardToClaim1',\n RewardToClaim2 = 'RewardToClaim2',\n RewardToClaim3 = 'RewardToClaim3',\n NeverReachedReward = 'NeverReachedReward',\n OneOrMoreRewardsClaimed = 'OneOrMoreRewardsClaimed'\n}\n\nexport enum TARGET_GROUP_STAMPS_ENUM {\n OneStampRecieved = 'OneStampRecieved',\n SmallNumberOfStamps = 'SmallNumberOfStamps',\n MediumNumberOfStamps = 'MediumNumberOfStamps',\n LargeNumberOfStamps = 'LargeNumberOfStamps',\n WithoutStampCard = 'WithoutStampCard'\n}\n\nexport const TARGET_GROUP = {\n ...TARGET_GROUP_GENERAL_ENUM,\n ...TARGET_GROUP_REWARDS_ENUM,\n ...TARGET_GROUP_STAMPS_ENUM\n};\n\nexport type TARGET_GROUP_TYPE = TARGET_GROUP_GENERAL_ENUM | TARGET_GROUP_REWARDS_ENUM | TARGET_GROUP_STAMPS_ENUM;\n\nexport const TargetGroupGeneralValues = Object.values(TARGET_GROUP_GENERAL_ENUM);\nexport const TargetGroupGeneralValuesLastVisitBefore = TargetGroupGeneralValues.filter((el) => el.includes('Before'));\nexport const TargetGroupGeneralValuesLastVisitWithin = TargetGroupGeneralValues.filter((el) => el.includes('Within'));\nexport const TargetGroupGeneralValuesNoCategory = TargetGroupGeneralValues.filter(\n (el) =>\n !TargetGroupGeneralValuesLastVisitBefore.includes(el) &&\n !TargetGroupGeneralValuesLastVisitWithin.includes(el) &&\n el !== TARGET_GROUP_GENERAL_ENUM.Everyone\n);\n\nexport const TargetGroupRewardValues = Object.values(TARGET_GROUP_REWARDS_ENUM);\nexport const TargetGroupStampsValues = Object.values(TARGET_GROUP_STAMPS_ENUM);\nexport const TargetGroupAllValues = [\n ...TargetGroupGeneralValues,\n ...TargetGroupRewardValues,\n ...TargetGroupStampsValues\n];\n","import { Translate } from 'react-redux-i18n';\n\nimport { Box } from '@mui/material';\n\nimport { PayAttFailToast, PayAttSuccessToastForever } from 'generalComponents/Toasts/Toasts';\n\nexport const successToastTestSMS = (userNumber: string) => {\n PayAttSuccessToastForever(\n
\n \n {userNumber}\n
\n );\n};\n\nexport const failToastTestSMS = (err?: any) => {\n const getErrorText = (error: any) => {\n if (error.message && error.status === 423) {\n return ;\n }\n if (error.message) {\n return (\n \n Error {error.message}\n \n );\n }\n return { error };\n };\n\n PayAttFailToast(\n
{err ? {getErrorText(err)} : }
\n );\n};\n\nexport const tooManySuggestionRequests = () => {\n PayAttFailToast(\n
\n \n
\n );\n};\n","import { I18n } from 'react-redux-i18n';\n\nimport { ButtonHintCompoundInput, ButtonTextCompoundInput, CustomButtonInput, ToolbarInput } from '@fullcalendar/core';\n\nexport const calendarCustomButtons = (\n openPopper: boolean,\n handleAccept: () => void,\n handleOpenRecurringSelector: () => void\n): Record => {\n return {\n recurring: {\n text: I18n.t('campaigns.scheduleCampaign.scheduleRecurring'),\n click: openPopper ? undefined : handleOpenRecurringSelector,\n hint: I18n.t('campaigns.scheduleCampaign.scheduleRecurringHint')\n },\n accept: {\n text: I18n.t('campaigns.scheduleCampaign.accept'),\n click: handleAccept,\n hint: I18n.t('campaigns.scheduleCampaign.acceptHint')\n }\n };\n};\n\nexport const calendarButtonHints: ButtonHintCompoundInput = {\n next: (unit: string) => {\n if (['year', 'år'].includes(unit.toLowerCase())) return I18n.t('campaigns.scheduleCampaign.hints.nextYear');\n if (['month', 'månad'].includes(unit.toLowerCase()))\n return I18n.t('campaigns.scheduleCampaign.hints.nextMonth');\n if (['week', 'vecka'].includes(unit.toLowerCase())) return I18n.t('campaigns.scheduleCampaign.hints.nextWeek');\n\n return I18n.t('campaigns.scheduleCampaign.hints.nextDay');\n },\n prev: (unit: string) => {\n if (['year', 'år'].includes(unit.toLowerCase())) return I18n.t('campaigns.scheduleCampaign.hints.prevYear');\n if (['month', 'månad'].includes(unit.toLowerCase()))\n return I18n.t('campaigns.scheduleCampaign.hints.prevMonth');\n if (['week', 'vecka'].includes(unit.toLowerCase())) return I18n.t('campaigns.scheduleCampaign.hints.prevWeek');\n\n return I18n.t('campaigns.scheduleCampaign.hints.prevDay');\n },\n week: I18n.t('campaigns.scheduleCampaign.hints.weekView'),\n month: I18n.t('campaigns.scheduleCampaign.hints.monthView'),\n today: I18n.t('campaigns.scheduleCampaign.hints.today')\n};\n\nexport const calendarHeaderToolbar: ToolbarInput = {\n left: 'prev,next today',\n center: 'title',\n right: 'recurring accept'\n};\n\nexport const calendarButtonText: ButtonTextCompoundInput = {\n today: I18n.t('campaigns.scheduleCampaign.today'),\n week: I18n.t('campaigns.scheduleCampaign.views.timeGridWeek'),\n month: I18n.t('campaigns.scheduleCampaign.views.dayGridMonth'),\n listWeek: I18n.t('campaigns.scheduleCampaign.views.listWeek'),\n listMonth: I18n.t('campaigns.scheduleCampaign.views.listMonth')\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport uuid from 'react-uuid';\n\nimport { EventClickArg, EventInput } from '@fullcalendar/core';\nimport { EventImpl } from '@fullcalendar/core/internal';\nimport { DateClickArg } from '@fullcalendar/interaction';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { format } from 'date-fns';\nimport { Options, RRule } from 'rrule';\n\nimport { useSMSCampaignContext } from '../context/SMSCampaignContext';\nimport { IntelliSmsQueryKeys } from '../helpers/constants';\n\nexport const useCalendar = ({ initialDateClicked }: { initialDateClicked?: DateClickArg }) => {\n const query = useQueryClient();\n\n const databaseEvents = query.getQueryData([IntelliSmsQueryKeys.ScheduledCampaigns]);\n\n const {\n activeBox,\n boxStateMap,\n currentMessage,\n events,\n openPopper,\n openScheduler,\n setEvents,\n setOpenPopper,\n setOpenScheduler,\n openSMSSummary,\n setOpenSMSSummary,\n setScheduledCampaign,\n stampCardCampaignsFromStore,\n venuesFromStore\n } = useSMSCampaignContext();\n\n const { filters, includeStampCardUrl, includeUnregUrl } = boxStateMap[activeBox];\n\n const [deletedButNotAcceptedEvents, setDeletedButNotAcceptedEvents] = useState([]);\n\n // Before the user confirms the selection of events in the scheduler\n const [localEvents, setLocalEvents] = useState([]);\n\n const [time, setTime] = useState(new Date());\n const [updatedDate, setUpdatedDate] = useState(new Date());\n\n const [openTimeSelector, setOpenTimeSelector] = useState(false);\n const [openRRuleSelector, setOpenRRuleSelector] = useState(false);\n const [initialRules, setInitialRules] = useState | null>(null);\n const [eventBeingUpdatedId, setEventBeingUpdatedId] = useState('');\n const [anchorEl, setAnchorEl] = useState(null);\n const [selectedEvent, setSelectedEvent] = useState(null);\n const [initialEvent, setInitialEvent] = useState(initialDateClicked);\n\n const newEvent = useCallback(\n ({ rrule, date }: { rrule?: string; date?: Date }) => ({\n date,\n id: uuid(),\n isNew: true,\n recipients: filters,\n rrule,\n title: currentMessage\n }),\n [currentMessage, filters]\n );\n\n const addNewLocalEvent = useCallback(\n ({ date, rrule }: { date?: Date; rrule?: string }) => {\n setLocalEvents((e) => [...e.map((el) => ({ ...el, title: currentMessage })), newEvent({ date, rrule })]);\n },\n [currentMessage, newEvent]\n );\n\n const addNewEvent = useCallback(\n ({ date, rrule }: { date?: Date; rrule?: string }) => {\n setEvents((e) => [...e.map((el) => ({ ...el, title: currentMessage })), newEvent({ date, rrule })]);\n },\n [currentMessage, newEvent, setEvents]\n );\n\n const updateLocalEvent = ({ date, rrule }: { date?: Date; rrule?: string }) => {\n setLocalEvents((e) =>\n e.map((ev) =>\n ev.id === eventBeingUpdatedId\n ? { ...ev, date: date || ev.date, rrule: rrule || ev.rrule, title: currentMessage }\n : { ev, title: currentMessage }\n )\n );\n };\n\n const updateEvents = ({ date, rrule }: { date?: Date; rrule?: string }) => {\n setEvents((e) =>\n e.map((ev) =>\n ev.id === eventBeingUpdatedId\n ? { ...ev, date: date || ev.date, rrule: rrule || ev.rrule, title: currentMessage }\n : { ev, title: currentMessage }\n )\n );\n };\n\n const newEventStartDate = (date: DateClickArg): Date => {\n const now = new Date();\n const eventDate = new Date(date.date);\n\n eventDate.setHours(\n // If the event we are trying to schedule is for today, we set the time to be 1 hour in the future\n eventDate.getDate() === now.getDate() ? now.getHours() + 1 : now.getHours(),\n now.getMinutes(),\n 0,\n 0\n );\n\n return eventDate;\n };\n\n // Add the initial event if present when summary is opened\n useEffect(() => {\n if (initialEvent && localEvents.length === 0 && events.length === 0 && openSMSSummary) {\n const now = new Date();\n const eventDate = new Date(initialEvent.date);\n eventDate.setHours(now.getHours() + 1, now.getMinutes(), 0, 0);\n\n addNewEvent({ ...initialEvent, date: newEventStartDate(initialEvent) });\n setInitialEvent(undefined);\n }\n }, [addNewEvent, events.length, initialEvent, localEvents.length, openSMSSummary]);\n\n const emptyInternalState = () => {\n setEventBeingUpdatedId('');\n setOpenTimeSelector(false);\n setOpenRRuleSelector(false);\n setOpenPopper(false);\n setInitialRules(null);\n setAnchorEl(null);\n setSelectedEvent(null);\n };\n\n const handleOpenPopper = (elem: HTMLElement) => {\n setAnchorEl(elem);\n setOpenPopper(true);\n };\n\n const handleOpenRecurringSelector = () => {\n setOpenRRuleSelector(true);\n };\n\n const handleOpenTimeSelector = (arg: DateClickArg) => {\n if (arg.date.getTime() + 1000 * 60 * 60 * 24 < new Date().getTime() || openPopper) return;\n setOpenTimeSelector(true);\n setTime(arg.date);\n };\n\n const handleRecurringEventUpdate = (newEventRules: Partial) => () => {\n const rruleObj = new RRule(newEventRules);\n const rrule = rruleObj.toString();\n\n if (eventBeingUpdatedId) {\n updateEvents({ rrule });\n updateLocalEvent({ rrule });\n } else {\n addNewLocalEvent({ rrule });\n }\n\n emptyInternalState();\n };\n\n const handleSingleEventUpdate = () => {\n emptyInternalState();\n\n if (eventBeingUpdatedId) {\n const date = new Date(`${format(updatedDate, 'yyyy-MM-dd')}T${format(time, 'HH:mm')}`);\n\n updateEvents({ date });\n updateLocalEvent({ date });\n\n return;\n }\n\n if (currentMessage !== '' && currentMessage != null) addNewLocalEvent({ date: time });\n };\n\n const handleEventClick = (arg: EventClickArg) => {\n if (openPopper) return;\n\n setSelectedEvent(arg.event);\n handleOpenPopper(arg.el);\n\n if (!arg.event.extendedProps.isNew) return;\n\n setEventBeingUpdatedId(arg.event.id);\n\n // eslint-disable-next-line no-underscore-dangle\n const eventRules = arg.event._def?.recurringDef?.typeData?.rruleSet?._rrule[0].origOptions;\n\n if (eventRules) {\n setInitialRules(eventRules);\n } else {\n setTime(arg.event.start as Date);\n setUpdatedDate(arg.event.start as Date);\n }\n };\n\n const handleDeleteEvent = () => {\n if (eventBeingUpdatedId) {\n setEvents((e) =>\n e.filter((event) => {\n if (event.id !== eventBeingUpdatedId) return true;\n\n setDeletedButNotAcceptedEvents((ev) => [...ev, event]);\n return false;\n })\n );\n\n setLocalEvents((e) => e.filter((event) => event.id !== eventBeingUpdatedId));\n }\n\n emptyInternalState();\n };\n\n const onDeletePopperEditing = () => {\n handleDeleteEvent();\n emptyInternalState();\n };\n\n const onUpdatePopperEditing = () => {\n if (initialRules) setOpenRRuleSelector(true);\n else setOpenTimeSelector(true);\n };\n\n const handleClose = () => {\n emptyInternalState();\n setOpenScheduler(false);\n setOpenSMSSummary(true);\n setEvents((e) => [...e, ...deletedButNotAcceptedEvents]);\n setLocalEvents([]);\n setDeletedButNotAcceptedEvents([]);\n };\n\n const handleAccept = () => {\n emptyInternalState();\n setOpenScheduler(false);\n setOpenSMSSummary(true);\n setEvents((e) => [...e, ...localEvents]);\n setLocalEvents([]);\n setDeletedButNotAcceptedEvents([]);\n };\n\n useEffect(() => {\n if (!eventBeingUpdatedId) {\n emptyInternalState();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [eventBeingUpdatedId]);\n\n useEffect(() => {\n setEvents((e) => e.map((event) => ({ ...event, title: currentMessage })));\n setLocalEvents((e) => e.map((event) => ({ ...event, title: currentMessage })));\n }, [currentMessage, setEvents]);\n\n useEffect(() => {\n setScheduledCampaign(!!events.length);\n }, [events.length, setScheduledCampaign]);\n\n const timeSelectorArgs = {\n date: updatedDate,\n handleClose: emptyInternalState,\n handleDelete: handleDeleteEvent,\n handleEvent: handleSingleEventUpdate,\n open: openTimeSelector,\n setDate: setUpdatedDate,\n setTime,\n time,\n updatingEvent: Boolean(eventBeingUpdatedId)\n };\n\n const rruleSelectorArgs = {\n handleClose: emptyInternalState,\n handleDelete: handleDeleteEvent,\n handleEvent: handleRecurringEventUpdate,\n initialRules,\n open: openRRuleSelector,\n updatingEvent: Boolean(eventBeingUpdatedId)\n };\n\n return {\n anchorEl,\n databaseEvents,\n eventBeingUpdatedId,\n events,\n handleAccept,\n handleClose,\n handleClosePopper: emptyInternalState,\n handleEventClick,\n handleOpenRecurringSelector,\n handleOpenTimeSelector,\n initialRules,\n localEvents,\n onUpdatePopperEditing,\n onDeletePopperEditing,\n openPopper,\n openScheduler,\n rruleSelectorArgs,\n selectedEvent,\n setLocalEvents,\n setOpenPopper,\n setOpenRRuleSelector,\n setOpenTimeSelector,\n stampCardCampaignsFromStore,\n timeSelectorArgs,\n includeStampCardUrl,\n includeUnregUrl,\n venuesFromStore\n };\n};\n","import { Translate } from 'react-redux-i18n';\n\nimport { ArrowBack, Loop } from '@mui/icons-material';\nimport { Box, Dialog, DialogContent, IconButton, Typography, useMediaQuery } from '@mui/material';\n\nimport { EventContentArg } from '@fullcalendar/core';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport interactionPlugin, { DateClickArg } from '@fullcalendar/interaction';\nimport listPlugin from '@fullcalendar/list';\nimport FullCalendar from '@fullcalendar/react';\nimport rrulePlugin from '@fullcalendar/rrule';\nimport timeGridPlugin from '@fullcalendar/timegrid';\n\nimport { CenteredFlexBox, FlexBox } from 'generalComponents/BoxModifications';\nimport LocaleAPI from 'store/locale';\nimport { convertLocale } from 'utils/utils';\nimport 'views/IntelliSms/calendar.scss';\nimport { EventPopper } from 'views/IntelliSms/dialogs/EventPopper/EventPopper';\nimport { RRuleSelectorDialog } from 'views/IntelliSms/dialogs/RRuleSelector';\nimport { TimeSelectorDialog } from 'views/IntelliSms/dialogs/TimeSelector';\nimport { useCalendar } from 'views/IntelliSms/helperHooks/useCalendar';\nimport { ColorIndicator } from 'views/IntelliSms/helpers/ColorIndicator';\nimport {\n eventTextCSS,\n newEventCSS,\n newEventSchedulingColors,\n previousEventCSS,\n previouslyScheduledEventCSS,\n updatedEventCSS\n} from 'views/IntelliSms/helpers/constants';\n\nimport { EventExtendedProps } from '../dialogs/EventPopper/interfaces';\nimport { addSuffixToMessage } from '../helpers/MessageUrlSuffixes';\nimport {\n calendarButtonHints,\n calendarButtonText,\n calendarCustomButtons,\n calendarHeaderToolbar\n} from './NewCampaign.ScheduleCalendar.constants';\n\nconst renderEventContent = ({\n eventBeingUpdatedId,\n includeStampCardUrl,\n includeUnregUrl\n}: {\n eventBeingUpdatedId: string;\n includeStampCardUrl?: boolean;\n includeUnregUrl?: boolean;\n}) => {\n return function renderEventContentComponent({ event }: EventContentArg) {\n const {\n _def: { recurringDef: recurring },\n title,\n extendedProps,\n id\n } = event;\n\n const { historical } = extendedProps as EventExtendedProps;\n\n return (\n \n \n {addSuffixToMessage({\n includeStampCardUrl: includeStampCardUrl || false,\n includeUnregUrl: includeUnregUrl || false,\n message: title\n })}\n \n {recurring && }\n \n );\n };\n};\n\nexport const ScheduleCalendar = ({\n parentZIndex,\n initialDateClicked\n}: {\n parentZIndex: number;\n initialDateClicked?: DateClickArg;\n}) => {\n const matches = useMediaQuery('(min-width:768px)');\n\n const locale = LocaleAPI();\n\n const {\n anchorEl,\n databaseEvents,\n eventBeingUpdatedId,\n events,\n handleAccept,\n handleClose,\n handleClosePopper,\n handleEventClick,\n handleOpenRecurringSelector,\n handleOpenTimeSelector,\n localEvents,\n onDeletePopperEditing,\n onUpdatePopperEditing,\n openPopper,\n openScheduler,\n rruleSelectorArgs,\n selectedEvent,\n includeStampCardUrl,\n includeUnregUrl,\n timeSelectorArgs\n } = useCalendar({ initialDateClicked });\n\n const allEvents = [...(databaseEvents || []), ...events, ...localEvents];\n\n const eventPopperArgs = {\n anchorEl,\n handleClosePopper,\n onDelete: onDeletePopperEditing,\n onUpdate: onUpdatePopperEditing,\n openPopper,\n selectedEvent,\n eventIsBeingUpdated: eventBeingUpdatedId === selectedEvent?.id\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n\n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n );\n};\n","import { useState } from 'react';\nimport { Translate } from 'react-redux-i18n';\n\nimport { Approval, ContentCut, ContentPaste, InfoOutlined, Lightbulb, PhonelinkErase } from '@mui/icons-material';\nimport {\n Box,\n IconButton,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n Tooltip,\n Typography,\n useTheme\n} from '@mui/material';\n\nimport { CenteredFlexBox, HorizontalCenteredFlexBox, VerticalFlexBox } from 'generalComponents/BoxModifications';\nimport { PAYATT_DOMAIN } from 'utils/utils';\nimport { NewCampaignIntelliSmsMenuProps, NewCampaignMenuProps } from 'views/IntelliSms/newCampaign/interfaces.menu';\n\nconst MenuInfoPopup = ({\n infoAnchorEl,\n infoOpen,\n closeInfo,\n children\n}: {\n infoAnchorEl: HTMLElement | null;\n infoOpen: boolean;\n closeInfo: () => void;\n children: React.ReactNode;\n}) => {\n return (\n {\n e.stopPropagation();\n return false;\n }}\n MenuListProps={{ 'aria-labelledby': 'menu-button' }}>\n {children}\n
\n );\n};\n\nexport const IntelliSmsMenu = ({\n menuAnchorEl,\n menuOpen,\n closeMenu,\n openUrlShortener,\n openSavedSuggestions\n}: NewCampaignIntelliSmsMenuProps) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n};\n\nconst MenuItemIncludeStampCardUrl = ({\n stampCardUrl,\n toggleIncludeStampCardUrl\n}: Pick) => {\n const theme = useTheme();\n\n const onClickStampCard = () => {\n toggleIncludeStampCardUrl();\n };\n\n const [infoAnchorEl, setInfoAnchorEl] = useState(null);\n const infoOpen = Boolean(infoAnchorEl);\n\n const openInfo = (event: React.MouseEvent) => {\n setInfoAnchorEl(event.currentTarget);\n\n event.stopPropagation();\n return false;\n };\n\n const closeInfo = () => {\n setInfoAnchorEl(null);\n };\n\n return (\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n
\n\n \n \n \n
\n\n \n \n \n
\n\n \n \n \n \n \n \n
\n
\n\n \n }\n placement=\"top\"\n arrow>\n \n \n \n \n
\n
\n \n \n );\n};\n\nconst MenuItemIncludeUnregUrl = ({\n unregUrl,\n toggleIncludeUnregUrl\n}: Pick) => {\n const theme = useTheme();\n\n const [infoAnchorEl, setInfoAnchorEl] = useState(null);\n const infoOpen = Boolean(infoAnchorEl);\n\n const openInfo = (event: React.MouseEvent) => {\n setInfoAnchorEl(event.currentTarget);\n\n event.stopPropagation();\n return false;\n };\n\n const closeInfo = () => {\n setInfoAnchorEl(null);\n };\n\n const onClickUnreg = () => {\n toggleIncludeUnregUrl();\n };\n\n return (\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n
\n\n \n \n \n
\n\n \n \n \n
\n\n \n \n \n
\n\n \n \n \n \n \n \n
\n
\n\n \n }\n placement=\"top\"\n arrow>\n \n \n \n \n \n \n \n
\n );\n};\n\nexport const NewCampaignMenu = ({\n menuAnchorEl,\n menuOpen,\n closeMenu,\n openUrlShortener,\n openSavedSuggestions,\n stampCardUrl,\n unregUrl,\n toggleIncludeStampCardUrl,\n toggleIncludeUnregUrl\n}: NewCampaignMenuProps) => {\n return (\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n\n \n \n );\n};\n","import { Step } from 'react-joyride';\nimport { Translate } from 'react-redux-i18n';\n\nimport { CreateIntroStep, IntelliSmsCalendarIntroStepLength } from 'Joyride/JoyridePayAtt.constants';\n\ntype IntelliSmsCalendarIntroSteps = Tuple;\n\nconst createIntroStep = ({ count, step, target }: { count: number; step?: CreateIntroStep; target?: string }): Step => {\n return {\n ...step,\n disableBeacon: true,\n disableScrolling: typeof step?.disableScrolling === 'boolean' ? step.disableScrolling : false,\n target: target || `.calendar-intro-step-${count}`,\n title:\n step?.title === null\n ? undefined\n : step?.title || ,\n content:\n step?.content === null\n ? undefined\n : step?.content || \n };\n};\n\nexport const calendarIntroSteps: IntelliSmsCalendarIntroSteps = [\n createIntroStep({ count: 1, step: { styles: { tooltipContent: { textAlign: 'left' } } } }),\n createIntroStep({\n count: 2,\n step: {\n spotlightClicks: true,\n placement: 'bottom-end',\n spotlightPadding: 0,\n styles: { buttonNext: { visibility: 'hidden' }, tooltipContent: { textAlign: 'left' } },\n content: \n }\n }),\n createIntroStep({ count: 3, step: { placement: 'bottom', styles: { tooltipContent: { textAlign: 'left' } } } }),\n createIntroStep({\n count: 4,\n step: {\n placement: 'bottom-end',\n spotlightClicks: true,\n spotlightPadding: 0,\n styles: { buttonNext: { visibility: 'hidden' }, tooltipContent: { textAlign: 'left' } },\n content: \n }\n }),\n createIntroStep({ count: 5, step: { placement: 'bottom', styles: { tooltipContent: { textAlign: 'left' } } } }),\n createIntroStep({ count: 6, step: { placement: 'bottom', styles: { tooltipContent: { textAlign: 'left' } } } }),\n createIntroStep({\n count: 7,\n step: {\n styles: { tooltipContent: { textAlign: 'left' } },\n placement: 'center',\n content: \n }\n })\n];\n\n// Start at 1, just like JoyRide step array\nexport const introStepCalendar = (val: number) => {\n const { target } = calendarIntroSteps[val - 1];\n\n if (typeof target === 'string') return target.substring(1);\n\n throw new Error('Cannot call introStepCalendar on a step with a target set to JSX.Element');\n};\n","import { ReactNode, createContext, useCallback, useMemo, useState } from 'react';\n\nimport {\n BANNER_TAG,\n HeaderBannerContextInterface,\n HeaderBannerInterface\n} from 'views/Navigation/Header/Context/handlers';\n\nexport const HeaderBannerContext = createContext(null);\n\ntype Props = { children: ReactNode };\n\n/**\n * Header badges / banners\n * This context holds a list of badges that are displayed on the top of the website\n */\nexport const HeaderBannerContextProvider: React.FC = ({ children }) => {\n const initialState: HeaderBannerInterface[] = [];\n const [banners, setBanners] = useState(initialState);\n\n const addBanner = useCallback((banner: HeaderBannerInterface) => {\n if (!document.getElementById(banner.tag)) {\n setBanners((current) => [...current, banner]);\n }\n }, []);\n\n const removeBanner = useCallback((tag: BANNER_TAG) => {\n setBanners((current) => [\n ...current.filter((val) => {\n return val.tag !== tag;\n })\n ]);\n }, []);\n\n const removeAllBanners = useCallback(() => setBanners([]), []);\n\n const value = useMemo(\n () => ({ banners, addBanner, removeBanner, removeAllBanners }),\n [banners, addBanner, removeBanner, removeAllBanners]\n );\n\n return {children};\n};\n","import { useContext } from 'react';\n\nimport { HeaderBannerContext } from './ContextProvider';\n\nexport const useHeaderBannersContext = () => {\n const builderContext = useContext(HeaderBannerContext);\n\n if (!builderContext) {\n throw new Error('No HeaderBannerContext.Provider found when calling useBuilderContext.');\n }\n\n return builderContext;\n};\n","import { View } from 'builder/constants/types';\n\nexport const tooltipCardsMap: Record = {\n standbyView: 'Standby view (Only needed if integrated with payment provider)',\n numPadView: 'Numpad view (Reqired)',\n newCustomerRegistrationView: 'New customer registration view (Required)',\n returningCustomerRegistrationView: 'Returning customer registration view (Required)',\n stampCardNewJoinView: 'Stamp card new join view (Only needed if using stamp card)',\n stampCardProgressView: 'Stamp card progress view (Only needed if using stamp card)',\n stampCardRewardView: 'Stamp card reward view (Only needed if using stamp card)'\n};\n\nexport const viewMap: Record = {\n standbyView: 'Standby view',\n numPadView: 'Registration view',\n newCustomerRegistrationView: 'New customer registration view',\n returningCustomerRegistrationView: 'Returning customer registration view',\n stampCardNewJoinView: 'Stamp card new join view',\n stampCardProgressView: 'Stamp card progress view',\n stampCardRewardView: 'Stamp card reward view'\n};\n\n// eslint-disable-next-line max-len\nexport const NOT_IMPLEMENTED_VIEW = `eyJuNVJYUWN6Z3ZTIjp7InR5cGXECHJlc29sdmVkTmFtZSI6IlRleHQifSwiaXNDYW52YXMiOnRydWUsInByb3BzxTjEIToiVGhpcyB2aWV3IGlzIG5vdCBpbXBsZW1lbnRlZCIsImNvbG9yIjoiIzDFASIsImZvbnRTaXrEZDUwcHjHEkZhbWlseSI6IlBvcHBpbnPHF1dlaWdoxGdub3JtYWzIP3R5bMRAyRXkAIxBbGlnbiI6ImPEe3IiLCJtYXJnaW5Cb3R0b20iOiLGbMYVVG9wzxJMZWbEZ8wTUsd7xhRwYWRkaW5nz0/HFsxQxxPNUccUzlLkALVTaGFkb3ciOiJyZ2JhKDAsxQIpIDBweMgE5AGEZGlzcGxheewBmiwiY3Vz5QCKe33EYHJlbsRaUk9PVCIsImhpZGRlbiI6ZmFsc2UsIm5vZGVzIjpbXSwibGlua2VkTsYRe319LMYz+gIIQm9keUNvbnRhaW5lcv0CEfABIjXyASLNE+cBIs0U6AEixhXnAPgiOiJmbGXEEcQHRGlyZWN0aW/lAexvbHVtbiIsImp1c3RpZuUAqeYBCekCBmHkAhdJdGVtc8wWYmFja2dyb3VuZEPnAqHlAYEyNTUsMTMxLDkxLDEpIiwid2lkdGgiOiIxOTLmAbRo6AKQMTA4xhLKSucC1WNvds9jUG9zaegAsegAgXNjYeQCwzAuNjgwNcsBNvEB7+QBgSDqAYLuAfn3AensA+PzAfV9`;\n","import './youtubeEmbed.scss';\n\ninterface YoutubeEmbedProps {\n embedId: string;\n width: string;\n height: string;\n}\n\nexport const YoutubeEmbed: React.FC = ({ embedId, width = '560', height = '315' }) => (\n
\n \n
\n);\n","import { useContext } from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { I18n, Translate } from 'react-redux-i18n';\n\nimport { Box, Link, Typography, useTheme } from '@mui/material';\n\nimport { SidebarContext } from 'contexts/SidebarContext';\nimport { VerticalCenteredFlexBox } from 'generalComponents/BoxModifications';\n\nimport { YoutubeEmbed } from '../../generalComponents/YoutubeEmbed/YoutubeEmbed';\n\nexport const UnsubsribedStampCardOverlay: React.FC = () => {\n const theme = useTheme();\n\n const { sidebarToggle } = useContext(SidebarContext);\n const sidebarWidthInPx = parseInt(theme.sidebar.width.split('px')[0], 10);\n\n const sidebarWidth = `${sidebarToggle ? sidebarWidthInPx / 2 : 0}px`;\n\n const CSS = {\n container: {\n position: 'absolute',\n width: `100%`,\n zIndex: 1000,\n left: 0,\n top: 0,\n mt: theme.header.height,\n '&::after': {\n content: '\"\"',\n opacity: 0.8,\n background: 'rgba(255, 255, 255, 0.2)',\n backdropFilter: 'blur(2px)',\n backgroundSize: 'cover',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n position: 'absolute',\n zIndex: -1,\n height: '100vh'\n }\n },\n mainBox: {\n border: '1px solid gray',\n backgroundColor: 'rgba(255, 255, 255, 0.7)',\n boxShadow: '0 4px 30px rgba(0, 0, 0, 0.3)',\n p: 3,\n borderRadius: '30px',\n maxWidth: 'max-content',\n width: '790px',\n ml: `calc(calc(50% - calc(790px / 2) + ${sidebarWidth}))`,\n mt: '30px',\n transition: sidebarToggle\n ? `margin-left ${theme.sidebar.transitionInSidebar}`\n : `margin-left ${theme.sidebar.transitionAwaySidebar}`\n },\n textOne: {\n mb: 2,\n p: '5px 20px',\n background: 'rgba(142, 229, 240, 0.45)',\n borderRadius: '10px',\n boxShadow: '0 4px 30px rgba(0, 0, 0, 0.1)',\n border: '1px solid rgba(142, 229, 240, 0.25)'\n },\n textTwo: {\n mb: 4,\n p: '5px 20px',\n background: 'rgba(142, 229, 240, 0.45)',\n borderRadius: '10px',\n boxShadow: '0 4px 30px rgba(0, 0, 0, 0.1)',\n border: '1px solid rgba(142, 229, 240, 0.25)'\n },\n video: {\n boxShadow: '0 4px 30px rgba(0, 0, 0, 0.1)',\n border: '1px solid rgba(142, 229, 240, 0.25)'\n }\n };\n\n return (\n <>\n \n {`${I18n.t('general.noContent.browserTabTitle')}`}\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n );\n};\n","import { createContext, useCallback, useMemo, useState } from 'react';\nimport { useNavigate } from 'react-router';\n\nimport { stampCardSubscriptionSelector, venuesSelector } from 'store/selectors';\nimport { store } from 'store/store';\nimport { UnsubsribedStampCardOverlay } from 'views/StampCardForm/UnsubcribedStampCardPage';\n\nimport { StampCardMenuContextProps } from './Form/props.interfaces';\n\nconst StampCardMenuContext = createContext(undefined);\n\nexport const StampCardMenuProvider: React.FC = ({ children }) => {\n const [showForm, setShowForm] = useState(false);\n const [activatedCampaign, setActivatedCampaign] = useState(false);\n const [cardSelected, setCardSelected] = useState(false);\n const [copyCampaign, setCopyCampaign] = useState(false);\n const [loading, setLoading] = useState(false);\n const [loadedDraft, setLoadedDraft] = useState(false);\n\n const venues = venuesSelector(store.getState());\n const subscribedVenues = stampCardSubscriptionSelector(store.getState());\n\n const subscribedVenue = venues.find((venue) => subscribedVenues.includes(venue.id));\n\n const navigate = useNavigate();\n const navigateToOverview = useCallback(\n (time: number) => {\n setTimeout(() => {\n navigate('overview');\n }, time);\n },\n [navigate]\n );\n\n const isUnsubscribed = !subscribedVenue;\n\n const data = useMemo(\n () => ({\n showForm,\n setShowForm,\n loading,\n setLoading,\n loadedDraft,\n setLoadedDraft,\n activatedCampaign,\n setActivatedCampaign,\n cardSelected,\n setCardSelected,\n copyCampaign,\n setCopyCampaign,\n isUnsubscribed,\n navigateToOverview\n }),\n [\n showForm,\n loading,\n loadedDraft,\n activatedCampaign,\n cardSelected,\n copyCampaign,\n isUnsubscribed,\n navigateToOverview\n ]\n );\n\n return (\n \n {isUnsubscribed && }\n {children}\n \n );\n};\n\nexport default StampCardMenuContext;\n"],"names":["JOYRIDE_LOCALE","back","_jsx","Translate","value","close","last","next","open","skip","JOYRIDE_OPTIONS","options","arrowColor","backgroundColor","beaconSize","overlayColor","primaryColor","spotlightShadow","textColor","zIndex","buttonNext","NEXT_BUTTON_BG_COLOR","color","fontWeight","buttonBack","buttonClose","buttonSkip","borderRadius","JoyridePayAtt","_ref2","introPage","introSection","callback","locale","styles","steps","continuous","showProgress","hideCloseButton","disableCloseOnEsc","disableOverlayClose","disableScrolling","run","rest","dispatch","useAppDispatch","toastRef","useRef","Joyride","e","async","_ref","status","type","action","markIntroAsSeenInReduxAndDatabase","introObj","introductionSelector","store","payload","updateShowIntro","isPayAttError","console","error","EVENTS","toast","ref","children","Typography","variant","dangerousHTML","autoClose","setTimeout","current","toastContainer","closest","style","width","handleJoyrideCallback","API_ENDPOINT","BASE_URL","getDisplayViewCollectionsAPI","response","axios","headers","handleAxiosInvalidResponse","handleAxiosError","getDisplayViewCollectionsTemplatesAPI","updateOneViewAPI","id","view","body","data","updateViewCollectionByIdAPI","createDisplayViewCollectionAPI","deleteDisplayViewCollectionByIdAPI","duplicateDisplayViewCollectionByIdAPI","newCollectionName","name","updateLogoAPI","logoUrl","updateBackgroundBrightnessAPI","brightness","updateDisplayViewCollectionBackgroundByIdAPI","backgroundImage","_ref3","updateDisplayViewCollectionResolutionByIdAPI","height","_ref4","checkNotificationsMilestonesAPI","getLastFiftyNotificationsAPI","markNotificationsAsSeenAPI","notificationsIds","API_ENDPOINT_GET_EMAIL","API_ENDPOINT_INFO","API_ENDPOINT_RESET","API_ENDPOINT_INFO_STAMP_PORTAL","API_ENDPOINT_GET_EMAIL_STAMP_PORTAL","API_ENDPOINT_RESET_STAMP_PORTAL","getResetEmail","email","stampPortal","arguments","length","undefined","payAttSuccess","verifyToken","code","params","token","resetPassword","newPassword","getStampCardCampaignStatsAPI","campaignId","getAllStampCardCampaignStatsAPI","CraftColorPicker","propColor","title","alwaysShown","changePropColor","lastUsedColors","colorPickerLastUsedColorsSelector","pickerColor","setPickerColor","useState","showPicker","setShowPicker","hoverCol","darkenOrLightenColor","rgbOrHexColorString","convertRGBAToString","classes","makeStyles","borderCSS","border","colorPickerCSS","margin","padding","modalContent","minHeight","flexDirection","colorPickerModalCSS","useEffect","buttonCSS","marginTop","alignSelf","contrastColor","bgColor","_jsxs","VerticalCenteredFlexBox","textAlign","gutterBottom","Box","className","role","tabIndex","onClick","v","Collapse","orientation","in","FlexBox","SketchPicker","onChange","newColor","rgb","presetColors","Button","sx","setPropColorAndClosePicker","cycleColors","BUILDER_GRAY","BACKGROUND_SIZES","BACKGROUND_POSITIONS","JUSTIFY_CONTENT_OPTIONS","Start","Center","End","NON_DELETABLE_POWERED_BY_PAYATT_NAME","sanitizeSerializedData","serializedData","rootId","parsed","JSON","parse","getDescendants","parsedData","nodeId","nodes","recursiveMap","nodeID","node","forEach","Object","keys","linkedNodes","map","key","adjustBrightness","level","t","validateIfItemIsInAST","itemName","query","stack","descendants","hasItem","nodeIdsArray","pop","currNode","push","get","displayName","encodeAndSaveAST","selectedViewName","actions","history","clear","json","serialize","sanitizedJSON","compressedJSON","lz","stringify","inputEncoding","outputEncoding","loadView","stateToLoad","deserialize","builderUploadFileToAWS","toastId","fileName","sanitizedFileName","file","merchant","defaultFileName","split","fileExtension","fileId","uuid","encodeURIComponent","builderAWSFilenames","I18n","icon","compressedFile","compressImage","fileType","generatePresignedPOSTURLRegistrationDisplay","fields","url","AWS_BUCKET_LINK","form","FormData","append","uploadImageToAWS","UploadStatus","PayAttDialogActions","handleCloseAccept","handleCloseDecline","confirmButtonContent","confirmButtonProps","cancelButtonContent","cancelButtonProps","dialogActionProps","theme","useTheme","confirmSx","confirmRest","cancelSx","cancelRest","DialogActions","palette","secondary","main","fontSize","contentCSS","maxWidth","flex","overflow","header","imageStyle","imageURL","displayContact","overrideBrowserTabTitle","_Fragment","Helmet","mt","mb","target","href","alt","src","HTTPS_URL_PATTERN","UrlShortener","closeDialog","shortUrl","setShortUrl","handleSubmit","control","watch","useForm","defaultValues","originalUrl","disabled","match","Dialog","onClose","Paper","display","minWidth","Controller","rules","required","render","field","TextField","placeholder","autoComplete","Tooltip","fullWidth","shortenedUrl","UrlShortenerAPI","_navigator$clipboard","navigator","clipboard","writeText","err","convertDates","date","parseISO","toISOString","Array","isArray","el","newObj","entries","val","useAsync","asyncFunc","funcParams","immediate","loading","setLoading","setData","setError","mountedRef","execute","useMemo","usePrompt","message","when","window","onbeforeunload","confirmExit","useContext","NavigationContext","useConfirmExit","useCallback","confirm","doNotRenderIfWebsiteInstance","isWebsiteInstancePayattclub","ReactDOM","StrictMode","document","getElementById","usePortalSocket","socket","setSocket","subscribeSocket","currentUser","currentUserSelector","jwtToken","_process$env$REACT_AP","newSocket","io","process","toLowerCase","transports","auth","portal","reconnection","reconnectionDelay","reconnectionDelayMax","reconnectionAttempts","forceNew","autoConnect","on","info","attempt","portalSocketConnectionEvents","arg","success","PayAttSuccessToastForever","PayAttFailToastForever","refId","successToastId","Message","successToastOptions","handlePostCampaignError","payAttError","portalSocketEvents","disconnect","unsubscribe","connected","PortalSocketContext","createContext","PortalSocketContextProvider","Provider","NotificationsCSS","toastIcon","position","top","left","divider","background","ml","payattLogo","marginLeft","marginBottom","text","toastColorMap","successToast","warningToast","infoToast","payattToast","toastIconMap","checkNotifications","notificationLastChecked","getNotificationLastCheckedSelector","minutesSinceLastChecked","differenceInMinutes","Date","Number","isNaN","NOTIFICATION_CHECK_INTERVAL","setNotificationLastChecked","notification","setShouldRefreshNotificationCenter","includes","_notification$richTex","_notification$richTex2","_notification$richTex3","_notification$richTex4","_notification$richTex5","_notification$richTex6","localeSelector","useRichText","richText","en","se","currLocaleText","toastContent","PAYATT_LOGO","Divider","align","dangerouslySetInnerHTML","__html","closeOnClick","overflowY","setNotificationState","setShowNotification","handleNotifications","refreshTokenPromise","refreshTokenInterceptor","CONTRACT_LOGOUT_TOAST_ID","Promise","reject","chartToken","getRefreshToken","refreshToken","useRefreshToken","config","Authorization","refreshTokenError","_refreshTokenError$re","logOut","showToast","failedBecauseOfContract","Error","contractToast","StyledBox","styled","shouldDisplay","excludedRoutes","location","pathname","find","startsWith","getOrientation","isMobile","screen","MobilePortraitWarning","setDisplay","useScreenOrientation","nyancat","_nyancat","presets","amongUs","_amongUs","bubble","_bubble","connect","_connect","basic","_basic","blackHole","_blackHole","collisionsAbsorb","_collisionsAbsorb","collisionsBounce","_collisionsBounce","collisionsDestroy","_collisionsDestroy","dataImages","_dataImages","destroy","_destroy","imagesDirections","_imagesDirections","mouseAttract","_mouseAttract","mouseFollow","_mouseFollow","mouseBounce","_mouseBounce","planes","_planes","parallax","_parallax","reduceDuplicates","_reduceDuplicates","ring","_ring","textMask","_textMask","virus","_virus","wobble","_wobble","hyperspace","_hyperspace","fireworks","_fireworks","NotificationCSS","progressBar","paper","p","xs","sm","md","lg","xl","subHeader","iconButton","right","DefaultParticlesContainer","containerRef","particlesInit","preset","engine","addPreset","backgroundMask","loadFull","particlesLoaded","container","showNotification","setPreset","notificationTitle","setNotificationTitle","notificationBody","setNotificationBody","progress","setProgress","_containerRef$current","stop","setShowNotificationRedux","LocaleAPI","showNotificationRedux","showNotificationSelector","currentNotification","getCurrentNotificationSelector","_containerRef$current2","currLocale","start","timer","timer2","setInterval","prevProgress","BACKDROP_AUTOCLOSE_TIMEOUT","clearInterval","clearTimeout","Backdrop","LinearProgress","IconButton","CloseIcon","elevation","Particles","init","loaded","BannerTags","addBannerWithDelay","func","CampaignDisabledComponent","component","showBanner","user","campaignAllowed","TestUserComponent","UnauthenticatedBannerComponent","dark","alignItems","paddingLeft","paddingRight","WarningOutlined","authSelector","isAuth","HeaderBannerDefaultStyle","div","verticalAlign","startBannerTrackers","CampaignsDisabledBanner","removeBanner","addBanner","useHeaderBannersContext","merchantSelector","userInner","merchantInner","tag","state","TestUserBanner","readOnly","currUser","UnauthenticatedBanner","banners","HeaderBanners","b","SetBodyValuesFromTheme","valuesToSetOnBody","backgroundPrimary","typography","fontWeightLight","lineHeight","fontFamily","colors","alpha","black","m","RenderPortal","queryClient","QueryClient","_request$url","_request$url2","request","withCredentials","loadState","_request$headers","Pragma","Expires","QueryClientProvider","client","HelmetProvider","context","SidebarProvider","ThemeProvider","HeaderBannerContextProvider","DefaultToastContainer","bodyStyle","MainRoutes","Loader","Component","props","Suspense","fallback","SuspenseLoader","useEditor","handleClickOutside","event","HTMLElement","selectNode","addEventListener","removeEventListener","useOutsideSelectionCleanup","justifyContent","gap","BuilderContext","BuilderProvider","shouldUpdateIndicator","setShouldUpdateIndicator","generateRandomNumber","setOverflow","device","setDevice","editable","setEditable","focusTextInput","textInput","range","createRange","sel","getSelection","selectNodeContents","collapse","removeAllRanges","addRange","focus","useBuilderContext","builderContext","stampCardComponentsInfoURL","infoComponents","barCSS","paddingX","paddingY","RenderNode","currentRef","pos","setPos","bottom","useNode","isActive","_","q","getEvent","contains","isHover","isSelected","dom","deletable","moveable","parent","connectors","drag","events","selected","hovered","custom","isDraggable","isDeletable","getBoundingClientRect","classList","add","remove","editText","firstChild","componentsProps","tooltip","placement","size","ErrorOutline","InfoOutlined","_query$node$get","_query$node$get$dom","ArrowDropUp","DriveFileRenameOutline","OpenWith","stopPropagation","delete","Delete","querySelector","useStyles","cursor","boxShadow","SettingsPanel","_dragRef$current","_dragRef$current2","setValue","switchTabs","draggableDivs","querySelectorAll","draggable","selectedNode","queryArg","_root$data","_root$data$custom","_root$data2","_root$related","_state$nodes$currentN","currentNodeId","from","root","ROOT","settings","related","dragRef","boundsRect","setBoundsRect","handleResize","clientWidth","offsetLeft","offsetTop","Draggable","nodeRef","defaultPosition","x","y","handle","bounds","Scrollbars","autoHide","CenteredFlexBox","Chip","label","marginRight","edge","SwitchRightIcon","createElement","MaterialButton","endIcon","VerticalAlignTop","goToParent","DeleteOutlineOutlined","handleDelete","SwitchLeftIcon","Layers","expandRootOnLoad","StyledToggleButton","ToggleButton","SelectDevice","ToggleButtonGroup","exclusive","handleDevices","newDevice","TabletIcon","PhoneAndroidIcon","LaptopIcon","px","ExpandableListItem","Icon","accordionsState","updateAccordionsState","ListItem","ListItemButton","ListItemIcon","ListItemText","primary","pl","ExpandLessTwoTone","ExpandMoreTwoTone","flipIconCSS","transform","ItemList","components","toggleDrawer","exclude","filter","element","Mail","disablePadding","onDragStart","create","Element","is","canvas","getCorrectPropForDevice","phone","tablet","laptop","getCorrectPropsObjectForDevice","SettingsAccordionItem","panelName","expanded","handleChange","Accordion","borderBottom","square","AccordionSummary","expandIcon","ExpandMoreIcon","flexShrink","AccordionDetails","BuilderFormControl","FormControl","borderBottomColor","BuilderTextField","transitionDelay","transitionProperty","borderColor","BuilderSelect","Select","BuilderInputLabel","InputLabel","BuilderMuiSlider","Slider","transformOrigin","BuilderSlider","_marks$at","min","max","step","disableLabel","marks","at","valueLabelDisplay","track","AlignmentSettings","_flexDirectionMarks$f","_alignItemsMarks$find","updateProp","flexDirectionMarks","prop","alignItemsMarks","array","mark","flexDirectionValue","alignItemsValue","labelId","MenuItem","ImageUpload","defaultValue","propName","shouldAddUrl","hideDelete","localSrc","setLocalSrc","updatePropValue","enterNextDelay","enterDelay","arrow","onBlur","onKeyDown","InputProps","endAdornment","FileUploadOutlined","accept","hidden","files","deleteImage","DeleteForeverIcon","buildList","arr","item","capitalizeFirstLetter","containerCSS","BackgroundSettings","backgroundPosition","backgroundSize","BackgroundSizesList","BackgroundPositionsList","handleBrightnessChange","newValue","PaddingSettings","paddingTop","paddingBottom","handleSliderChange","Grid","columns","columnSpacing","parseInt","BodyContainer","CSS","updateScaleCraft","oldValue","React","setProp","ignoredSetProp","ignore","saveToHistory","timelinePath","op","path","addToHistory","newPropValue","useLivePropUpdate","checkOverflows","nodeChildren","checkSides","nodeDom","containerRect","itemRect","topIsOverflowing","leftIsOverflowing","bottomIsOverflowing","rightIsOverflowing","nodesIds","_document$querySelect","throttleFunc","useThrottledCallback","scale","setScale","windowWidth","innerWidth","windowHeight","innerHeight","factor","currWidth","maxWidthScale","maxHeightScale","newScale","Math","containerStyle","outline","craft","BodyContainerSettings","setExpanded","panel","isExpanded","paddingProps","alignmentProps","backgroundProps","Resizer","_store$query","_root$get","_root$get$data","_root$get$data$props","lockAspectRatio","internalSize","setInternalSize","throttle","isPending","childrenStyles","Resizable","resizable","onResize","__","elem","clientHeight","DraggableItem","onDrop","targetRef","disableDraggable","parentNode","setAttribute","enableDraggable","onDragOver","ev","preventDefault","DragIndicatorIcon","DraggableSlidesList","slides","swiper","updateSlideProp","deleteSlide","replaceSlides","dragId","setDragId","showBorder","setShowBorder","currentPos","droppedPos","i","currentTarget","arrayMove","oldIndex","newIndex","splice","slide","_swiper$autoplay","slideTo","autoplay","id1","id2","id3","swiperFallback","buildShadowString","shadow","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","shadowSpread","DecorationSettings","updateShadow","handleBorderRadiusChange","MarginSettings","correctFormat","removePxKeepsPercentage","String","formatValue","SizeSettings","disableHeight","internalWidth","setInternalWidth","internalHeight","setInternalHeight","updateSquare","updateSide","onPressEnter","test","Carousel","delay","dots","arrows","effect","controlsColor","slideList","SwiperSlide","objectFit","Swiper","allowTouchMove","spaceBetween","centeredSlides","disableOnInteraction","pagination","clickable","navigation","modules","Autoplay","Pagination","Navigation","EffectFade","EffectFlip","EffectCards","EffectCube","CarouselSettings","handleAccordionChange","onCheckBoxChecked","checked","decorationProps","marginProps","sizeProps","sw","dndProps","sl","slideId","sld","updatedSlides","FormControlLabel","Checkbox","labelPlacement","addSlide","startIcon","AddPhotoAlternate","canMoveIn","ContainerDefaultProps","ContainerSettings","Container","TextDecorationSettings","textShadow","TypographySettings","_fontStyleMarks$find","_fontWeightMarks$find","_textAlignMarks$find","fontWeightPropName","textAlignPropName","fontStyle","fontStylePropName","fontFamilyPropName","fontSizePropName","colorPropName","colon","availableFonts","PayAttAdmin","fontStyleMarks","fontWeightMarks","textAlignMarks","fontStyleValue","fontWeightValue","textAlignValue","fontsList","font","TextDefaultProps","TextSettings","textDecorationProps","typographyProps","ProgressText","RewardText","Text","hasSelectedNode","Boolean","hasDraggedNode","dragged","onDoubleClick","ContentEditable","innerRef","html","pr","replace","tagName","buildNode","isCanvas","buildStampCardTextContainerNode","buildTextNode","useBuildRewardTextNode","useBuildProgressTextNode","Container1x2","col","parseFreshNode","toNode","canDrag","Container1x3","Container2x1","row","Container2x2","index","rows","Container3x1","ContainerCustom1","cl1","cl2","cl2rw1","cl2rw2","cl2rw2sq1","cl2rw2sq2","ContainerCustom2","cl1rw1","cl1rw2","cl1rw2sq1","cl1rw2sq2","TextInputWithDescription","description","VerticalFlexBox","BuilderImageDefaultProps","BuilderImageSettings","youtubeId","videoSettings","Logo","Image","YoutubeVideo","YouTube","videoId","pointerEvents","opts","playerVars","loop","mute","controls","playsinline","playlist","onReady","playVideo","buildMobileNumpadProps","template","outputFontSize","numbersFontSize","deleteFontSize","sendFontSize","buildTabletNumpadProps","defaultTemplate","buttonsBorderRadius","numbersFontFamily","numbersFontWeight","numbersFontStyle","numbersTextAlign","numbersTextColor","numbersBackgroundColor","deleteFontFamily","deleteFontWeight","deleteFontStyle","deleteTextAlign","deleteTextColor","deleteBackgroundColor","sendFontFamily","sendFontWeight","sendFontStyle","sendTextAlign","sendTextColor","sendBackgroundColor","containerBackgroundColor","containerBorderColor","containerBorderWidth","outputFontFamily","outputFontWeight","outputFontStyle","outputTextAlign","outputTextColor","outputBackgroundColor","outputVariant","blackWhiteTemplate","whiteBlackTemplate","templateMap","Default","Green","templateList","temp","typographyOptionsList","outputList","Numberpad","centerCSS","transition","WebkitFontSmoothing","opacity","backfaceVisibility","numbersCSS","deleteCSS","sendCSS","outputCSS","small","medium","large","spacing","renderButtons","buttons","NUMPAD_NAME","NumberPadSettings","selectedTypographyOption","setSelectedTypographyOption","numbersTypographyProps","deleteTypographyProps","sendTypographyProps","outputTypographyProps","handleBorderWidthChange","QRCode","QRCodeSettings","QRCodeUser","qrCodeUrl","QRcode","QRCodeUserSettings","helperText","PayattDisclaimer","payattDisclaimerDefaultProps","TwoColumns","d","fill","TwoRows","TwoColumnsIcon","SvgIcon","TwoRowsIcon","useToolboxComponentTree","regitrationDisplayViewsSelector","textChildrenListOptions","FormatSize","TOOLBOX_COMPONENT_TREE","CheckBoxOutlineBlank","Crop32Outlined","ViewWeekOutlined","TableRowsOutlined","WindowOutlined","ViewQuiltOutlined","Abc","Dialpad","Filter1","Filter2","Filter3","ViewCarouselOutlined","ImageOutlined","PhotoFilter","QrCode","OndemandVideo","ShortText","useToolboxIntegratedComponentTree","QrCode2","StampCardContainerDefaultProps","StampCardSettings","StampCardNewJoin","rewardTextNode","progressTextNode","containerNode","headerText","nextRewardText","rewardText","progressText","StampCardProgress","StampCardReward","textContainerExtraProps","congratsText","rewardReachedText","useToolboxStampCardComponentTree","ListAltIcon","PersonAddIcon","LoopIcon","EmojiEventsIcon","Toolbox","TOOLBOX_INTEGRATED_COMPONENT_TREE","TOOLBOX_STAMP_CARD_COMPONENT_TREE","setOpen","c","useReducer","curr","Menu","Drawer","anchor","VerticalCenteredList","DisplayViews","RollbackDialog","rollbackDialogOpen","setRollbackDialogOpen","builderStartSessionState","viewName","handleClose","TransitionComponent","SlideUpTransition","keepMounted","DialogContent","Alert","severity","AlertTitle","setregistationDisplayViews","selectedViewValue","SaveDialog","saveDialogOpen","setSaveDialogOpen","hasNumpad","hasDisclaimer","disabledSave","mr","ChangeViewDialog","dialogOpen","setDialogOpen","setConfirmed","confirmSwitchView","QuitDialog","quitDialogOpen","setQuitDialogOpen","setQuitConfirmed","confirmQuit","SelectedView","zoom","noWrap","viewMap","PopperProps","tooltipClasses","floor","spinnerCSS","toolbarContainerCSS","TopBar","viewCollection","currentViewCollection","canUndo","canRedo","widthProp","heightProp","scaleProp","rootNode","rootNodeProp","pointer","historyPointer","_state$nodes","_state$nodes$ROOT","_state$nodes$ROOT$dat","undo","redo","useHotkeys","quitConfirmed","changeViewDialogOpen","setChangeViewDialogOpen","newView","setNewView","setHasNumpad","setHasDisclaimer","isIntegrated","merchantIsIntegrated","possibleViews","values","slice","changeView","hash","views","onQuit","pushState","reload","onBackButtonEvent","CircularProgress","disableShrink","thickness","toFixed","onRollback","onSave","commonProps","rollbackDialogProps","saveDialogProps","quitDialogProps","changeViewDialogProps","displayIconProps","displayButtonProps","saveDisabled","flexGrow","AppBar","Toolbar","Undo","Redo","select","SelectProps","disableUnderline","IconComponent","content","FullDivider","HistoryIcon","Save","Close","ColorAndPositionSettings","_colorMarks$find","_positionMarks$find","colorMarks","positionMarks","payattLogoColorValue","positionValue","PoweredByPayattDefaultProps","PoweredByPayatt","selectedPosition","topRight","topLeft","bottomRight","bottomLeft","PayAttLogoBlack","PayAttLogoWhite","PoweredByPayattSettings","payattLogoColor","colorAndPositionProps","rootWidth","builderContainerCSS","Builder","viewValue","setViewValue","setViewName","selectedViewValueInner","selectedViewNameInner","Navigate","to","Editor","resolver","enabled","onRender","CleansSelectionWhenClickedOutside","Frame","builderRoutes","LinkStyle","textDecoration","DisplayRoutes","DotSeparator","Row","linkText","typographySx","newPage","Link","rel","FooterComponent","showBackgroundOverlay","flexBoxSx","pt","Footer","useLocation","getTitle","venues","venueTitle","merchantTitle","MerchantTitle","setMerchant","merchantCurr","UserBoxButton","MenuUserBox","UserBoxText","UserBoxLabel","fontWeightBold","HeaderUserbox","setUser","username","jobtitle","isOpen","handleOpen","introStepHome","Hidden","mdDown","mdUp","Avatar","textTransform","smDown","ExpandMoreTwoToneIcon","Popover","anchorEl","anchorOrigin","vertical","horizontal","List","button","NavLink","AccountBoxIcon","LockOpenTwoToneIcon","GB","SE","LanguageSwitcherSelector","stateStore","storeLang","currentLanguage","setCurrentLanguage","setLocale","Translations","ImageStyle","listStyle","lang","HeaderLanguageSelect","popoverRoot","popper","maxHeight","borderWidth","borderStyle","SingleNotificationPopper","_richText$en","_richText$en$body","_richText$se","_richText$se$body","closePoppers","arrowRef","setArrowRef","childNode","setChildNode","openInCenter","hasRichText","popoverRootConditionalStyles","cloneElement","Popper","slotProps","modifiers","boundariesElement","offset","TransitionProps","Fade","timeout","grey","notificationsSeparator","viewButtonProps","glassMorphCSS","backdropFilter","seenNotificationsCSS","unseenNotificationsCSS","importantNotificationsCSS","listItemCSS","HeaderNotifications","page","setPage","popperText","setPopperText","openPopperIndex","setOpenPopperIndex","shownNotifications","setShownNotifications","notifications","seenNotifications","Set","refreshNotifications","notificationIdsWithNoDuplicates","currentNotificationsPage","notificationCSS","viewed","notificationId","important","createdAt","time","dateDifferenceInLocale","headingColor","headingStyle","lineClamp","textOverflow","WebkitLineClamp","WebkitBoxOrient","buildNotificationsList","refresh","useSelector","shouldRefreshNotificationsCenter","unseenNotificationsCount","badgeColor","pagesCount","ceil","count","shape","onPageChange","currPage","Badge","badgeContent","NotificationsActiveTwoToneIcon","HeaderButtons","HeaderWrapper","Header","sidebarToggle","toggleSidebar","SidebarContext","CloseTwoToneIcon","MenuTwoToneIcon","MainHomeLogo","sidebar","logoWhite","LoginLogo","pb","logoBlack","SidebarMenuItem","link","badge","openParent","active","menuToggle","setMenuToggle","homeIntroStepName","clsx","ExpandLessTwoToneIcon","a","RouterLink","RenderItem","exactMatch","matchPath","end","MenuWrapper","pxToRem","SubMenuWrapper","transitions","Dashboard","Insights","MemberManagement","Group","Settings","partialMatch","SettingsIcon","Store","TipsAndUpdates","IntegrationInstructions","Contact","ContactMail","Management","_ref5","SMS","ChatIcon","FiberNew","CalendarMonth","StampCard","CardGiftcard","GridView","Cast","Views","SmartScreen","Overview","SidebarMenu","subheader","ListSubheader","disableSticky","HomeIcon","SwipeableDrawerWrapper","SwipeableDrawer","shouldForwardProp","numberOfBanners","parseNumberSassVariable","sassVariables","SidebarWrapperStyled","Sidebar","iOS","userAgent","borderRight","onOpen","swipeAreaWidth","transitionDuration","enter","exit","disableBackdropTransition","disableDiscovery","overflowX","appearance","SidebarLayout","withoutSidebarStyle","withSidebarStyle","Outlet","ContactForm","lazy","contactRoutes","ResponsiveGridLayout","WidthProvider","Responsive","HomepageGrid","_venuesSelector","layouts","globalDragability","globalResizability","useGlobalSettingsContext","venueIds","venuesSelector","breakpoint","setBreakpoint","useBreakpointsContext","useContainerRect","newBreakpoint","dashboardContainerBreakpoint","breakpoints","GridLayout","itemsToShow","gridItemLayout","CreateGridItem","showItemTopBar","isResizable","cols","RESPONSIVE_COLUMNS","rowHeight","GRID_ROW_HEIGHT","draggableCancel","autoSize","allowOverlap","useCSSTransforms","measureBeforeMount","GRID_MARGIN","HomepageGridLayoutWrapper","globalGridSettings","DefaultGridSettings","GridBreakpointsContextProvider","DashboardJoyrideContextProvider","HomeWidgetMenuJoyrideContextProvider","DashboardSelectionProvider","StampCardCampaignStatsContextProvider","GridItemContextProvider","GlobalSettingsContextProvider","isLoading","contact","firstName","GlobalSettings","homepage","JoyrideIntroductionMain","show","setShow","showSkipButton","setShowSkipButton","shouldStart","search","SHOW_HOMEPAGE_INTRO_SEARCH_PARAMS","replaceState","sidebarMenu","scrollTo","homeIntroSteps","HomepageGridWithBackgroundImage","setBackgroundImage","dashboardBackgroundImageSelector","backgroundImageNew","backgroundStyleImage","backgroundRepeat","backgroundStyleNoImage","backgroundImageStyle","BackgroundImages","HomepageHeader","Home","fetchingData","setFetchingData","PopulateMerchantAndVenues","merchantAfterPopulation","PopulateHomepageLayouts","PopulateStatistics","PopulateStampCardCampaigns","populateStore","homepageLayouts","homepageLayoutSelector","xsLayout","smLayout","mdLayout","lgLayout","xlLayout","fallBackLayout","layout","gridOrSpinner","globalCloseability","hideRemoveButton","hideAddButton","Registrations","Profile","homeRoutes","SMSCampaignProvider","smsSuggestionLanguage","Swedish","English","ConfirmChangeLanguage","onConfirm","language","DialogTitle","dividers","DialogContentText","whiteSpace","wordWrap","ChangeLanguage","setLanguage","getSmsSuggestionLanguageAPI","smsSuggestionLanguageObj","fetch","submit","setSmsSuggestionLanguageAPI","PayAttSuccessToast","ttl","remainingMinutes","remainingSeconds","PayAttFailToast","handleResponse","IntelliSmsHeader","payAttGray","IntelliSmsSettings","Card","IntegrationSettings","Introduction","managementRoutes","NewCampaign","CampaignsOverview","intelliSmsRoutes","CreateStampCard","StampCardTriggers","stampCardRoutes","StampCardMenuProvider","dashboardRoutes","RegistrationDisplayViews","displayViewsRoutes","dispatchGetMerchant","getMerchant","getVenueCategories","getCampaignHistory","populateDB","dispatchLogin","_response$payload","_response$payload2","login","contract","showContractGuard","getHomepageDashboards","APP_BAR_HEIGHT","ContractGuardCSS","appBar","signBeforeBox","buttonsBox","ContractBlocker","userLoginData","navigate","useNavigate","signingDateHasNotPassed","isBefore","hasToBeSignedBefore","signDateFormatted","format","goToLogin","setGoToLogin","userContractSignUrl","Brush","skipContractCheck","LoginForm","register","formState","errors","passwordShown","setPasswordShown","contractAndLoginData","setContractAndLoginData","onSubmit","password","hasContractData","setAuthFailed","authError","InputAdornment","togglePasswordShown","s","Visibility","VisibilityOff","payAttDarkBlue","LoginView","removeAllBanners","_authSelector","Login","ResetPassword","_errors$code","_errors$email","responseError","setResponseError","codeSent","setCodeSent","getValues","mode","res","CardHeader","avatar","LockResetIcon","titleTypographyProps","subheaderTypographyProps","CardContent","payAttGreen","InputLabelProps","shrink","pattern","validate","NewPassword","_errors$password","searchParams","URLSearchParams","serverResponse","setServerResponse","showPassword","setShowPassword","tokenValid","setTokenValid","pageLoad","setPageLoad","isDirty","passwordRepeat","handleClickShowPassword","handleMouseDownPassword","validatePassword","verifyTokenFunc","logUserInWithNewPassword","onMouseDown","_errors$passwordRepea","FAQ","DefaultRoute","LogoutRoute","getRoutes","myRoutes","Route","child","_newState$auth","newState","oldState","Router","Routes","AuthRoute","logOutToastWasShown","contractToastWasShown","args","endUserSession","saveLogoutState","setLogOut","toastDuration","_merchant$contract","logoutContractMsg","closeButton","pauseOnHover","pauseOnFocusLoss","logOutMessage","PayAttLogOutToast","useDispatch","getRegistrationsPerVenue","PopulateGeneralStats","PopulateUser","updateUser","getStampCardCampaigns","GSM_7BIT_REGEXP","GSM_7BIT_EXT_REGEXP","GSM_7BIT_EXT_CHAR_REGEXP","messageLength","GSM_7BIT","GSM_7BIT_EXT","UTF16","multiMessageLength","countSMSCharacters","encoding","detectEncoding","extChar","char","countGsm7bitExt","characterPerMessage","messages","inCurrentMessage","remaining","GridBreakpointsContext","breakpointsContext","DashboardSelectionContext","allDashboards","setAllDashboards","dashboard","setDashboard","setIsLoading","getDashboard","dashboards","allDashboardsSelector","selectedDashboard","defaultDashboard","default","useDashboardSelectionContext","dashboardSelectionContext","GlobalSettingsContext","pastDate","setMonth","getMonth","setHours","globalFilter","setGlobalFilter","forever","$gte","$lte","venueIdStr","$in","stampCardCampaignIdStr","stampCardsSelector","trailingTimeFrame","unit","hourlyPeriodic","dailyPeriodic","setGlobalDragability","setGlobalResizability","setGlobalCloseability","dashboardSettings","chartSDK","ChartsEmbedSDK","baseUrl","getUserToken","warn","globalSettingsContext","cloneChartFilter","isFilterFieldEqual","getTime","every","sort","isFilterEqual","ASSUMED_MAX_NUMBER_OF_ROWS","getUniqueItemID","gridItems","newItemI","doesFit","grid","j","useGridItems","setGridItems","setLayout","addGridItem","calculateGridItemPosition","MAX_NUMBER_OF_WIDGETS_PER_DASHBOARD","currentGridItems","newGridItem","layoutType","markAsOccupied","h","w","getItemPosition","addGridItems","items","itemsToAdd","n","removeGridItem","updateGridItem","GridItemContext","useGridItemContext","gridItemContext","StampCardCampaignStatsContext","stats","setStats","updateStats","useStampCardCampaignStatsContext","chartSettingsContext","dashboardMaxWidth","containerWidth","HomeWidgetMenuJoyrideIntro","isRunning","stepIndex","isManuallyStartedIntro","useHomeWidgetMenuJoyrideContext","homeWidgetMenuIntroSteps","GridItemKeys","ChartNames","PayAttWidgetNames","SelectBackgroundImage","ListProps","ListProperties","ListPropSx","ListPropsRest","image","setImage","MenuProps","PaperProps","ConfirmDeleteModal","deleteDialogOpen","setDeleteDialogOpen","deleteDashboard","DeleteDashboard","modalIsOpen","setModalIsOpen","handleClick","deleteButton","introStepDashboard","DashboardSizeItem","dashboardBreakpoint","HiddenElementToAdjustFlexAlignment","visibility","Edit","TitleWithEditButton","dashboardId","initValue","isEditing","setIsEditing","saveName","saveDashboardName","inputStyle","disabledInputProps","inputProps","WebkitTextFillColor","enabledInputProps","DASHBOARD_WHILE_TYPING_REG_EXP","DASHBOARD_VALID_NAME_REG_EXP","EditOff","DashboardSettings","setChecked","updateDashboardDefault","AccordionLabels","ComponentCategoryEnum","PayAttWidgetsSpecifications","sendSMSCampaign","defaultLayout","PayAttWidgetDefaultLayouts","numberOfStampsAndStampCardsSentence","increasedRevenueBasedOnVisits","increasedRevenueBasedOnSMSCampaign","increasedRevenueBasedOnStampCardCampaign","LayoutMap","numberOfStampsPerStampCardCampaignHistogram","ChartSpecification","averageStampsPerStampCardDonut","SMSCampaignsTotal","campaignSMSSentTotal","numberOfStampsTotal","stampCardsRewardsClaimedTotal","stampCardsCreatedTotal","numberOfRegistrationsTotal","numberOfUniqueRegistrationsTotal","registrationsOverTime","registrationsOverTimePerVenue","registrationsNewOrReturningOverTime","purchasesOverTime","newStampCardsOverTime","numberOfStampsOverTime","numberOfStampsOverTimePerVenue","numberOfStampsNewOrReturningOverTime","ComponentMenuSection","refreshTooltip","useDashboardJoyrideContext","updateStampCardStats","subscribedToStampCardFeature","stampCardSubscriptionSelector","integrated","accordionExpanded","setAccordionExpanded","JOYRIDE_TIMEOUT_ACCORDION_OPEN","chartItem","ChartsThatRequireStampCardFeature","ChartsThatRequireIntegration","disableGutters","requiresStampCardStats","addNewGridItem","chartGroup","group","ExpandMore","TimeBasedCharts","NumericCharts","DonutCharts","HistogramCharts","dummyChartSpecification","ChartTypes","filters","minW","minH","maxW","maxH","MongoDBRefsAndRenderingSpec","Styles","_globalFilter$created","_globalFilter$created2","isRunningDashboard","setStepIndex","openGlobalSettingsMenu","setIsRunning","setIsRunningHomeWidgetMenu","isRunningHomeWidgetMenu","setIsManuallyStartedIntro","startDateSetting","setStartDateSetting","endDateSetting","setEndDateSetting","venueIdsSetting","setVenueIdsSetting","stampCardCampaignIdsSetting","setStampCardCampaignIdsSetting","trailingTimeFrameSetting","setTrailingTimeFrameSetting","hourlyPeriodicSetting","setHourlyPeriodicSetting","dailyPeriodicSetting","setDailyPeriodicSetting","foreverSetting","setForeverSetting","setAnchorEl","settingsButton","handleAccordionClick","apply","updateContext","newFilter","settingsMenu","SettingsMenu","closeMenu","startDate","setStartDate","endDate","setEndDate","venueIdsStr","setVenueIdsStr","stampCardCampaignIdsStr","setStampCardCampaignIdsStr","chartSpecification","setHourlyPeriodic","setDailyPeriodic","setForever","accordionFilterSection","home","GlobalFilters","timerIntro","SHOW_HOMEPAGE_SETTINGS_INTRO_SEARCH_PARAMS","JOYRIDE_TIMEOUT_MENU_OPEN","anchorElBottomLocation","scrollX","popoverMaxHeight","showOnHomepage","showOnDashboardGlobalSettings","disableEnforceFocus","INTRO_WIDGET_MENU_CLASS_NAMES","appear","HomepageSettingsTitle","introStepHomeSettings","ComponentMenu","ChartSettingsContext","ChartSettingsContextProvider","gridItemId","backendSavedFilter","setFilter","_backendSavedFilter$c","_backendSavedFilter$c2","_backendSavedFilter$v","_backendSavedFilter$s","DEFAULT_TRAILING_TIME_FRAME","createInitialFilter","firstLoadCount","firstLoadCheck","useChartSettingsContext","GridItemTopBar","showTopBarInlineWithChartName","refreshStampCardDataButton","DragHandle","CloseGridItem","ChartWithSettingsInner","chart","resetValues","currFilter","SettingsButton","localSettingsMenu","ChartWithSettings","Day","Hour","Year","emptyResponse","renderingSpec","version","DefaultRenderSpecDescreteLine","getTimeVariantChartInfo","allChartIds","getType","timeDiff","Month","DefaultChartProps","showAttribution","ChartWrapperStyle","ChartStyle","NoContentBackdrop","NoContent","FirstLoadBackdrop","Chart","chartId","chartDiv","rendered","setRendered","setChart","createChart","displayChart","updateFilter","setRenderingSpecOverride","updateRenderingSpec","GenerateChartFromContext","chartWithTimeVariant","getChartId","allowedFilters","setupFilters","contextFilter","CalculationBackgroundImage","marginTopWrapper","wrapperBoxStyle","InfoButton","buttonTransStr","buttonVariant","buttonSx","popoverId","addCancelGridDragabilityToPopups","TextFieldNumericStyled","InlineNumericTextField","maxValue","minValue","emph","allowEditing","inputWidth","setInputWidth","EMPHASIZED_TEXT_FONT_SIZE","newVal","newValAsNumber","parseFloat","InlineSelectTextField","DEFAULT_VALUES","numOfMembers","MEMBER_THRESHOLD","averagePurchase","recipientRatio","IncreasedRevenueBasedOnSMSCampaign","members","allVenueRegistrationStats","reduce","acc","ven","totalCustomers","liveData","useLiveData","setNumOfMembers","setAveragePurchase","setRecipientRatio","revenueIncrease","recipients","round","calculateValues","editStr","EmphBoxNumeric","num","memberThreshold","SideImage","backgroundImagePath","CalculationSideImage","calculationBox","titleTextBox","infoButtonContent","titlePaddingTop","getRandomImage","images","random","categoryToVisitImgMap","Pizzeria","Bar","BarRestaurant","Restaurant","ThaiRestaurant","IndianRestaurant","BurgerRestaurant","ItalianRestaurant","SushiRestaurant","FlowerShop","PetStore","Cafe","BagelCafe","FishStore","MeatStore","YarnStore","DeliStore","FastFoodGrill","CandyStore","HealthyStore","ClothingStore","Lifestyle","BeautySalon","IcecreamShop","FoodTruckHealthyFood","WineImporter","Hairdresser","HairdresserBeauty","Barber","Other","categoryToSCImgMap","getImageUrl","allCategories","category","venueCategory","numOfPurchases","timespan","Calculation","setNumOfPurchases","revenue","IncreasedRevenueBasedOnStampCardCampaign","setMargin","setTimespan","earning","timespanSelectItems","IncreasedRevenueBasedOnVisits","RefreshStampCardDataButton","Refresh","GridItemWrapper","refreshStampCardStatsButton","resizeHandles","homepageIntroStep","NumberOfStampsAndStampCards","stamps","totalVisits","stampCards","totalClients","payAttBlack","SendSMSCampaign","suggestionsLoading","messageBoxOpacity","box1State","updateBox1State","debounced","switchActiveBox","activeBox","editTextDialogNext","loadSmsCampaignWidget","menuArgs","savedSuggestionsOpen","closeSavedSuggestionsDialog","urlShortenerDialogOpen","closeUrlShortenerDialog","openMenu","useThreeBoxes","SMSBoxFilters","parentZIndex","INTELLI_SMS_BASE_Z_INDEX","SMSCampaignSummary","ScheduleCalendar","SavedSuggestionsDialog","NewCampaignMenu","SMSBox","box1","currentMessage","setMessage","ActiveBoxes","setActive","hideTextSummary","includeStampCardUrl","includeUnregUrl","StyledGridItem","StyledGridItemHighlighted","ChartItem","chartStructure","gridData","CreatePayAttComponent","errorToast","saveDashboard","allItems","el2","updateDashboard","updateDashboardName","createDashboard","createDashboardAction","maximumNumberOfDashboards","MAX_NUMBER_OF_DASHBOARDS","deleteDashboardAction","EMPTY_DOM_RECT","toJSON","initialRect","rect","setRect","handleResizeDebounce","useDebouncedCallback","observer","startObserver","ResizeObserver","observe","dispatchEvent","Event","cellStrikeColor","cellStrikeColorEditing","delayTime","backdrop","calculateGridSize","generateGridBackground","cellSize","gridWidth","cellStrokeColor","horizontalMargin","verticalMargin","rectangles","svg","join","createIntroStep","disableBeacon","disableScrollParentFix","dashboardIntroSteps","spotlightPadding","tooltipContent","spotlightClicks","Lightbulb","substring","DashboardJoyrideContext","openDashboardsMenu","setOpenDashboardsMenu","setOpenGlobalSettingsMenu","openSaveMenu","setOpenSaveMenu","ACTIONS","STATUS","dashboardJoyrideContext","payAttLightBlue","light","ChartSettingsFilterTitle","textWidth","getTextWidth","h3","nameComponent","ApplySettingsButton","TitleText","translateProps","FilterRow","listItemProps","listItemSx","listItemRest","NoFilterSettings","DateRangePicker","disabledProp","maxRangeInDays","MAX_RANGE_IN_DAYS","Errors","startDateInner","setStartDateInner","endDateInner","setEndDateInner","today","newDateZeroSecond","shouldDisableStartDate","shouldDisableEndDate","getDayDiff","DatePickerStyle","LocalizationProvider","dateAdapter","AdapterDateFns","localeText","svSE","DatePicker","shouldDisableDate","onError","ForeverButton","setTrailingTimeFrame","oldStartDate","oldEndDate","newForeverStartDate","disableFocusRipple","disableRipple","disableTouchRipple","TrailingDateRangePicker","setUnit","selectedValue","setSelectedValue","valueOptions","setValueOptions","getTimeFrameRange","firstLoad","setFirstLoad","setNewDates","getStartDateFromValAndUnit","checkFirstLoad","unitRange","SelectTypeOfDateRangePicker","showTrailingTimeSelector","showDatePickers","showForeverButton","calculateTrailingTimeFrame","newTrailingTimeFrame","startDateFromTrailingTimeFrame","StampCardCampaignSelector","setStampCardCampaignIds","stampCardCampaignIds","stampCardCampaigns","setSelected","isAllSelected","menuItem","camp","indexOf","multiple","displayEmpty","selectedCampaigns","input","OutlinedInput","renderValue","_sel$map","_stampCardCampaigns$f","indeterminate","menuItems","expired","activated","ex","testMode","ac","tm","VenueSelector","setVenueIds","selectedVenues","_chartSpecification$M","_chartSpecification$M2","multiVenue","noFiltersAvailable","periodicSelectors","Infinity","TIME_FRAME_MINUTE_RANGE","TIMEFRAME_HOUR_RANGE","TIMEFRAME_DAY_RANGE","TIMEFRAME_MONTH_RANGE","FOREVER_START_YEAR","setSeconds","subMinutes","subHours","subDays","subMonths","diff","intervalToDuration","months","days","hours","minutes","NumericTotalSize","TimeGraphSize","ChartDefaultLayouts","GenerateLayout","ColorPalette","CHART_VERSION","colorPalette","markers","lineSmoothing","axes","labelAngle","DefaultRenderSpecBarChart","DefaultRenderSpecNumber","DefaultRenderHistogram","DefaultRenderDonut","categoryLabels","mongoDBRenderingSpecs","channels","labelOverride","numberThousandsSeparators","registrationsOverTimeHourly","registrationsOverTimeDaily","registrationsOverTimeWeekly","registrationsOverTimeMonthly","registrationsOverTimeYearly","registrationsOverTimeWeekdayPeriodic","registrationsOverTimeHourPeriodic","registrationsOverTimePerVenueHourly","registrationsOverTimePerVenueDaily","registrationsOverTimePerVenueWeekly","registrationsOverTimePerVenueMonthly","registrationsOverTimePerVenueYearly","registrationsOverTimePerVenueWeekdayPeriodic","registrationsOverTimePerVenueHourPeriodic","registrationsNewOrReturningOverTimeHourly","registrationsNewOrReturningOverTimeDaily","registrationsNewOrReturningOverTimeWeekly","registrationsNewOrReturningOverTimeMonthly","registrationsNewOrReturningOverTimeYearly","registrationsNewOrReturningOverTimeWeekdayPeriodic","registrationsNewOrReturningOverTimeHourPeriodic","purchasesOverTimeHourly","purchasesOverTimeDaily","purchasesOverTimeWeekly","purchasesOverTimeMonthly","purchasesOverTimeYearly","purchasesOverTimeWeekdayPeriodic","purchasesOverTimeHourPeriodic","newStampCardsOverTimeHourly","newStampCardsOverTimeDaily","newStampCardsOverTimeWeekly","newStampCardsOverTimeMonthly","newStampCardsOverTimeYearly","newStampCardsOverTimeWeekdayPeriodic","newStampCardsOverTimeHourPeriodic","numberOfStampsOverTimeHourly","numberOfStampsOverTimeDaily","numberOfStampsOverTimeWeekly","numberOfStampsOverTimeMonthly","numberOfStampsOverTimeYearly","numberOfStampsOverTimeWeekdayPeriodic","numberOfStampsOverTimeHourPeriodic","numberOfStampsOverTimePerVenueHourly","numberOfStampsOverTimePerVenueDaily","numberOfStampsOverTimePerVenueWeekly","numberOfStampsOverTimePerVenueMonthly","numberOfStampsOverTimePerVenueYearly","numberOfStampsOverTimePerVenueWeekdayPeriodic","numberOfStampsOverTimePerVenueHourPeriodic","numberOfStampsNewOrReturningOverTimeHourly","numberOfStampsNewOrReturningOverTimeDaily","numberOfStampsNewOrReturningOverTimeWeekly","numberOfStampsNewOrReturningOverTimeMonthly","numberOfStampsNewOrReturningOverTimeYearly","numberOfStampsNewOrReturningOverTimeWeekdayPeriodic","numberOfStampsNewOrReturningOverTimeHourPeriodic","AllowedChartFilters","dev","staging","prod","hourly","daily","weekly","monthly","yearly","LINE","NUMERIC","TABLE","DONUT","PIE","BAR","BAR_STACKED","BAR_GROUPED","HISTOGRAM","SCATTER","SizeSettingsCalculations","parentElement","getAttribute","gridId","isStatic","static","TooltipFooter","backProps","closeProps","primaryProps","WelcomeTooltip","tooltipProps","bgImgWidth","bgImgHeight","LogoWhite","overlay","tooltipComponent","spotlight","scrollContainer","trailingOrDatePickersSelector","venueSelector","stampCardSelector","periodic","scrollToElement","elementClassName","scroll","heightToScroll","scrollTop","HomeWidgetMenuJoyrideContext","homeWidgetMenuJoyrideContext","saveSuggestion","SaveIcon","SMSSummaryText","targetFilters","preSelectedTargetOptions","venueFilters","preSelectedVenueOptions","stampCardFilters","preSelectedStampCardOptions","preSelectedDates","getFilterSummaryTranslations","_preSelectedDates$sta","_preSelectedDates$sta2","_preSelectedDates$end","_preSelectedDates$end2","TARGET_GROUP","startTime","hour","endTime","SummaryTimeInterval","offsetAdjust","ChevronRight","TARGET_GROUP_GENERAL_ENUM","useQueryClient","mutate","useMutation","mutationFn","saveSMSSuggestion","onSuccess","invalidateQueries","queryKey","multiline","addSuffixToMessage","suffix","getSuffix","getMessageWithoutSuffix","unmodifiedSuggestion","convertVenueToVenueOption","venue","POSIds","POS","P","SMSCampaignContext","boxesFn","defaultBoxesState","DEFAULT_FILTERS","intelliSmsSuggestion","scheduledCampaignsQueryResult","useQuery","staleTime","IntelliSmsQueryKeys","queryFn","getScheduledCampaigns","venuesFromStore","stampCardCampaignsFromStore","includeFuture","includeNotActivated","includeExpired","includeDisabled","globalSettings","billingSettingsSelector","noneSCSelected","box2State","updateBox2State","box3State","updateBox3State","setMessageBoxOpacity","defaultBoxOpacity","setActiveBox","scheduledCampaign","setScheduledCampaign","setUrlShortenerDialogOpen","setSavedSuggestionsOpened","filtersModalOpen","setFiltersModalOpen","everyone","setEveryone","stampCardFilterSelected","setStampCardFilterSelected","openSMSSummary","setOpenSMSSummary","openScheduler","setOpenScheduler","venueOptions","setVenueOptions","targetOptions","setTargetOptions","selectedStampCardCampaigns","setSelectedStampCardCampaigns","setSelectedVenues","selectedTargetFilters","setSelectedTargetFilters","setEvents","summaryData","setSummaryData","openPopper","setOpenPopper","refreshFilters","setRefreshFilters","timeIntervalDialogOpen","setTimeIntervalDialogOpen","editTextDialogOpen","setEditTextDialogOpen","acceptedExtraChanges","setAcceptedExtraCharges","boxStateMap","box2","box3","updateActiveBoxState","reset","refetchQueries","box","boxesOpacityHalfed","useSMSCampaignContext","smsCampaignContext","ActionsSection","onDelete","onUpdate","showDelete","HorizontalCenteredFlexBox","introStepCalendar","TooltipUrlSuffixExplanation","ContentSection","bonusSMSUsed","campaigns","numberOfPaidSMSParts","recipientsCount","smsParts","storeVenuesLength","venuesList","campaignInPastError","campaignInPastWarning","historical","eventIsBeingUpdated","showPastError","showPastWarning","noRecipients","totalSmsUsed","completedCampaignStats","paidSms","freeSmsUsed","CachedTwoTone","PersonOff","HeaderSection","closePopper","isNew","overview","eventStart","formatSelectedEventDate","localeDateFnsSelector","pastEventInOverview","eventPopperTopRowCSS","FilterItem","fromUtc","RecipientsFilters","targetGroups","accordionCSS","eventPopperEventData","_selectedEvent$start","_selectedEvent$start2","selectedEvent","colorMap","venueListMargin","messageInfo","introPast","introUpcoming","recipientsPerVenue","failedVenues","extendedProps","selectedSCCampaign","getVenueList","eventInPastThresholdErrorMs","EventPopper","handleClosePopper","includeStampCardUrlRaw","includeUnregUrlRaw","eventPopperCSS","commonSX","failed","venueId","selectedVenue","failedVenue","failedVenueNode","venueInfo","recipientCount","ownerCount","sv","handleOpenSMSSummary","needToSelectStampCard","errorTranslationString","errorTrans","missingPosOnCampaign","_el$POSIds","errorBlocker","IOSSwitch","Switch","focusVisibleClassName","boxSizing","duration","EveryoneSection","toggleEveryone","closeFiltersModal","ArrowBack","FilterInfoPopup","infoAnchorEl","infoOpen","closeInfo","titleTrans","textTrans","MenuListProps","StampCardsSection","handleStampCardSelectChange","stampCardCampaignOptions","setInfoAnchorEl","campaignDisabledOrExpired","MultiSelect","ClearSelectedIcon","closeOnChangedValue","ItemRenderer","CustomStampCardRenderer","valueRenderer","customValueRenderer","disableSearch","hasSelectAll","labelledBy","overrideStrings","selectSomeItems","FilterSelectTimeInterval","timeInterval","setTimeInterval","startTimeDayjs","setStartTimeDayJs","dayjs","endTimeDayjs","setEndTimeDayjs","valueOf","toString","minute","onCloseButton","newSelectedTargetFilters","TimePicker","ampm","TargetGroupSection","AdapterDayjs","CustomItemRenderer","VenuesSection","selectAll","notAllowedCombinations","TargetGroupGeneralValues","TARGET_GROUP_REWARDS_ENUM","TARGET_GROUP_STAMPS_ENUM","TargetGroupStampsValues","TargetGroupRewardValues","useFiltersDialog","preSelectedEveryone","applyingBackendFilters","setApplyingBackendFilters","defaulVenueOptions","defaultSCOption","initialTargetOptions","mapFn","stampCard","mostUsedGeneral","mostUsedStampCard","generalBefore","TargetGroupGeneralValuesLastVisitBefore","generalWithin","TargetGroupGeneralValuesLastVisitWithin","generalNoCategory","TargetGroupGeneralValuesNoCategory","rewards","general","isTitle","isSubtitle","timeIntervalPresent","o","notAllowedOptions","option","_notAllowedCombinatio","has","usedPOSIds","_c$POSIds","POSId","newVenueOptions","_option$POS","some","selectedSC","_c$POSIds2","_option$POS2","targetFiltersWithoutDuplicates","targetGroupContainsTimeInterval","generateSMS","messageText","_handleAxiosError","_handleAxiosError$dat","errorSummaryData","everyoneSectionArgs","targetGroupSectionArgs","stampCardsSectionArgs","venuesSectionArgs","actionsSectionArgs","EndSelector","setState","updatingEvent","initialEndRadioState","until","endType","setEndType","RadioGroup","handleEndTypeChange","stateMap","After","Never","Radio","textField","openPickerIcon","disablePast","TEXT_AND_SELECTOR_WIDTH","SELECTOR_WIDTH","SMALL_SELECTOR_WIDTH","RRuleIntervalSelector","interval","RepeatDaily","cleanUpState","useRRuleHelpers","onTheOptsOne","setPosMap","setPosMapReversed","byweekdayOptionsMap","RRule","byweekdayToLongDayMap","onTheOptsTwo","byweekdayOptionsMapReversed","weekday","setPosSelectOptions","byweekdaySelectOptions","byweekdayToShortDayMap","shortDayToByweekdayMap","weekdaysShort","monthDaySelectOptions","day","RepeatMonthly","monthlyType","setMonthlyType","bymonthday","bysetpos","byweekday","handleMonthlyTypeChange","removeTopGapFromMUITextField","StyledToggleButtonGroup","borderLeft","payAttBlue","RepeatWeekly","weekdaysButtons","selectedDays","handleDaySelection","RRuleGenerator","handleEvent","initialRules","initialDate","dtstart","setStartTime","setRules","freq","Frequency","handleDateChange","setDate","utc","TimeField","RRuleSelectorDialog","refetch","getSavedSMSSuggestions","dialogContent","ContentCopy","deleteSMSSuggestion","adjustTimeForTimezoneOffset","numberFormatLeadingZero","RecipientFiltersSection","allCustomers","categories","categoriesList","summaryCSS","GRAY_COLOR_7B","my","venueCount","KeyValueTypography","ConfirmAction","disabledSubmitButton","handleOpenScheduler","handleSendTestCampaign","sendNowOpen","setSendNowOpen","testOpen","setTestOpen","scheduleOpen","setScheduleOpen","ExcessWarning","costPerSms","positiveTotalSmsAvailable","toggleExtraCharges","totalCost","totalSmsAvailable","warningBoxCSS","ReportProblemTwoTone","parts","allowance","costPerMessage","costPerPart","characters","handleCloseSmsSummary","SMSFieldCSS","SummarySkeleton","modalCSS","GRAY_COLOR","Skeleton","sendTime","SummarySection","monthlySms","bonusSmsAfterSending","showBonusSms","freeMonthlySmsAfterSending","noCustomersFound","totalSmsParts","selectedVenuesObjects","smsSenderNames","smsSenderName","multipleEvents","atLeastOneRecurringEvent","rrule","addStars","_summaryData$costPerS","_globalSettings$data","onCampaignScheduledOrSent","handleSendCampaignNow","handleSubmitScheduledCampaigns","useSummaryDialog","positiveSmsRemaining","smsRemaining","bonusSmsPoolCount","costPerSMS","excess","getExcessMessages","calculateCost","smsLimitExcessed","headerSectionArgs","recipientFiltersSectionArgs","excessWarningArgs","summarySectionArgs","TipsAndUpdatesTwoTone","iconLightBulb","smsAvailable","rate","calculatedCost","TimeSelectorDialog","setTime","timeError","validationError","scheduledURL","generateBody","executionTime","_filters$preSelectedV","_filters$preSelectedS","compareFilters","sendSmsCampaignNow","phoneNumber","countryCode","stampCardCampaignId","sendTestSMS","successToastTestSMS","failToastTestSMS","shouldFetchSuggestions","setRefresh","setSuggestionsLoading","menuAnchorEl","setMenuAnchorEl","menuIntelliSmsAnchorEl","setMenuIntelliSmsAnchorEl","menuOpen","menuIntelliSmsOpen","currStateBox","messageWithSuffix","SMSLimitExceeded","SMSRemaining","paidSMSCount","openInfo","openUrlShortenerDialog","openFiltersModal","openSavedSuggestionsDialog","openUrlShortener","openSavedSuggestions","suggestion1","suggestion2","suggestion3","getSMSSuggestion","suggestion","getSuggestions","topSectionArgs","stampCardUrl","toggleIncludeStampCardUrl","unregUrl","toggleIncludeUnregUrl","closeEditTextDialog","infoArgs","menuIntelliSmsArgs","closeIntelliSmsMenu","refreshSuggestions","threeBoxesSectionArgs","ColorIndicator","VenueColorIndicator","body1","showTooltip","venueTitleText","generateKeyValueTypography","getSmsPoolTooltip","bonusSmsPool","bonusSmsPoolOnlyValid","expirationTime","bonusSmsPoolNoExpiry","bonusSmsPoolExpirationData","isValidDate","secs","mins","years","dateStr","smsLeft","sum","bonusSmsHasExpiry","UNREG_URL_PLACEHOLDER","PAYATT_DOMAIN","STAMP_CARD_URL_PLACEHOLDER","_err$response","tooManySuggestionRequests","res1","res2","all","nextExecution","recipientsAfterDateOffsetAdjustment","payingRecipientCount","eventFailedToSendWarningColor","eventFailedToSendErrorColor","eventTextCSS","newEventSchedulingColors","previousCampaigns","previouslyScheduled","newEvent","updatedEvent","newEventCSS","updatedEventCSS","previouslyScheduledEventCSS","previousEventCSS","pastOverviewEvent","py","defaultRenderEventCSS","eventColorPool","MIN_SMS_CHARACTERS","unregUrlSyntax","MAX_SMS_CHARACTERS_WITH_UNREG","removeWelcomeSMSEnding","payAttPink","mostUsed","noItemsText","selectedSet","selectedWithoutDuplicates","calculateGradientPercentage","colorsLength","currentIndex","errorToastOptions","PriorityHigh","failToastBody","msg","toastBody","minLeft","secLeft","timeLeft","trim","getMinSecFromStr","Everyone","userNumber","calendarCustomButtons","handleAccept","handleOpenRecurringSelector","recurring","click","hint","calendarButtonHints","prev","week","month","calendarHeaderToolbar","center","calendarButtonText","listWeek","listMonth","useCalendar","initialDateClicked","databaseEvents","getQueryData","deletedButNotAcceptedEvents","setDeletedButNotAcceptedEvents","localEvents","setLocalEvents","updatedDate","setUpdatedDate","openTimeSelector","setOpenTimeSelector","openRRuleSelector","setOpenRRuleSelector","setInitialRules","eventBeingUpdatedId","setEventBeingUpdatedId","setSelectedEvent","initialEvent","setInitialEvent","addNewLocalEvent","addNewEvent","updateLocalEvent","updateEvents","_ref6","newEventStartDate","now","eventDate","getDate","getHours","getMinutes","emptyInternalState","handleDeleteEvent","timeSelectorArgs","handleSingleEventUpdate","rruleSelectorArgs","newEventRules","handleEventClick","_arg$event$_def","_arg$event$_def$recur","_arg$event$_def$recur2","_arg$event$_def$recur3","eventRules","_def","recurringDef","typeData","rruleSet","_rrule","origOptions","handleOpenTimeSelector","onUpdatePopperEditing","onDeletePopperEditing","renderEventContent","Loop","matches","useMediaQuery","allEvents","eventPopperArgs","WebkitAppearance","FullCalendar","businessHours","contentHeight","eventDisplay","firstDay","unselectAuto","buttonText","customButtons","buttonHints","headerToolbar","plugins","dayGridPlugin","timeGridPlugin","listPlugin","interactionPlugin","rrulePlugin","initialView","eventContent","dateClick","eventClick","eventStartEditable","convertLocale","MenuInfoPopup","IntelliSmsMenu","ContentCut","ContentPaste","MenuItemIncludeStampCardUrl","onClickStampCard","Approval","payAttBlue2","MenuItemIncludeUnregUrl","onClickUnreg","PhonelinkErase","calendarIntroSteps","HeaderBannerContext","setBanners","banner","standbyView","numPadView","newCustomerRegistrationView","returningCustomerRegistrationView","stampCardNewJoinView","stampCardProgressView","stampCardRewardView","NOT_IMPLEMENTED_VIEW","YoutubeEmbed","embedId","allow","allowFullScreen","UnsubsribedStampCardOverlay","sidebarWidthInPx","sidebarWidth","mainBox","transitionInSidebar","transitionAwaySidebar","textOne","textTwo","video","underline","StampCardMenuContext","showForm","setShowForm","activatedCampaign","setActivatedCampaign","cardSelected","setCardSelected","copyCampaign","setCopyCampaign","loadedDraft","setLoadedDraft","subscribedVenues","subscribedVenue","navigateToOverview","isUnsubscribed"],"sourceRoot":""}