{"version":3,"file":"708.64336b0b129e80b16f33.js","mappings":"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","sources":["webpack://polite-mail-reactv2/./entry.tsx","webpack://polite-mail-reactv2/./public/BenchmarkData.ts","webpack://polite-mail-reactv2/./public/images/svg/generated/Help.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/LikeSvg.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/PoliteMail.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/RecipientCount.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Search.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/ShareBlue.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/StarGold.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/StarSolid.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Trash.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/WarningIcon.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/+add.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/CheckGreen.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Content.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/DesktopGray66.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/ProxyGray66.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/DisableOpenTracking.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Email.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/HappyGold.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/SadGold.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/HtmlExport.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/ImageAdd.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Like.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/LinkAdd.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Link.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/MailingList.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/MobileGray66.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/NeutralGold.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/PreviewTestSend.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/RecipientExport.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/RecipientImport.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Reload.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/RequestSupport.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Results.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/SaveBlue.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Save.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/SentAggregate.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/SentAnonymous.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/SentIndividual.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Sent.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Share.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/SimpleSurvey.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Star.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Tag.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/TagEmpty.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/TimeToRead.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/TrashRed.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/UpGray.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/UserAuth.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/XRed.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/SurveyStar.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/SurveyStarGrey.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/YesCheckmarkBlueBox.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/YesCheckmarkGreenBox.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/YesGrey.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/NoCheckmarkBlueBox.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/NoCheckmarkRedBox.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/NoGrey.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/MaybeCheckmarkBlueBox.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/MaybeGrey.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/One.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Two.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Three.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/A.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/B.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/C.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/TimeToWatch.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Sending.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Queued.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Enabled.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Disabled.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/XError.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Processing.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/SettingsBlue.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/Expired.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/ExpiringSoon.tsx","webpack://polite-mail-reactv2/./src/Actions/PageActions/ProfileActions/PreferencesActions.tsx","webpack://polite-mail-reactv2/./src/Cache/PMCache.ts","webpack://polite-mail-reactv2/./src/Cache/UsersCache.ts","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMSearchBox.tsx","webpack://polite-mail-reactv2/./src/Definitions/CommandBarDefinitions.tsx","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/AppSettingsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/BusinessesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/CampaignsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ContactsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/CustomFieldsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/FiltersODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ListFiltersODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ListsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/PreferencesPagesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/RegionsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ServerInfosODataService.tsx","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/StagesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/TagsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/TemplateODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/TemplatePiecesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/TemplateThemesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/TemplatesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/UsersODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/VerificationFromInfosODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/WhiteListFromsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Microsoft/Exchange/WebServices/Data/DayOfTheWeek.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/ODataOperation.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/ODataGetOperation.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/ODataFilterBuilder.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/ODataQuery.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/ODataServiceAbstract.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/NativeOdataServiceBase.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/ODataContext.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/ODataError.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/CategoriesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ContactReadsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ImagesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/LinksODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/OptInsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/OptOutsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ParagraphsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ReadsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ScheduledSendsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/SmartAttachmentsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/SocialMediaLinksODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/SurveysODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/SurveyAllowedAnswersODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/SurveyQuestionsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/GroupLabelsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/SentMessagesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/UserProfilesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/UserTypesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ContactClicksODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ContactRepliesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/RepliesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/SublistStatsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/UsersWithStatsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/FromWithStatsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ContactOptOutsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ContactOutOfOfficesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ContactUndeliverablesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/OutOfOfficesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/UndeliverablesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ColumnOrdersODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/CustomValuesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/UserFromsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/EWSCacheODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/WebConfigsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ContactAttributesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/BulkEditsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/MeetingRecipientsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/AllowedDomainSubscriptionsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/PublicValuesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/PATSODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/TagGroupsODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/OptOutPagesODataService.tsx","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/PasswordRulesODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/Default/ValidateContentODataService.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/PoliteMailEntities/Models/List.ts","webpack://polite-mail-reactv2/./src/Definitions/Generated/PoliteMailEntities/Models/PMPropertyDescriptor.tsx","webpack://polite-mail-reactv2/./src/Definitions/Globals.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/CampaignSharedSvg.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/TemplateShared.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/ParagraphsShared.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/ImagesShared.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/BrandThemeShared.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/LinksShared.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/SmartAttachmentsShared.tsx","webpack://polite-mail-reactv2/./src/Definitions/GridColumnDefinitions.tsx","webpack://polite-mail-reactv2/./src/Definitions/PMMailEditorDefinitions.tsx","webpack://polite-mail-reactv2/./src/Definitions/PMRoles.tsx","webpack://polite-mail-reactv2/./src/Definitions/PanelColumnDefinitions.tsx","webpack://polite-mail-reactv2/./src/Definitions/PreferenceTypes.tsx","webpack://polite-mail-reactv2/./src/Definitions/Styles/StyleDefinitions.tsx","webpack://polite-mail-reactv2/./src/Hooks/getBusinessAndRegionsDropdowns.ts","webpack://polite-mail-reactv2/./src/Styles/Themes/themes.tsx","webpack://polite-mail-reactv2/./src/Utils/BooleanUtil.tsx","webpack://polite-mail-reactv2/./src/Utils/ChromieUtils.ts","webpack://polite-mail-reactv2/./src/Utils/DropDownUtils.tsx","webpack://polite-mail-reactv2/./src/Utils/FileUtils.tsx","webpack://polite-mail-reactv2/./src/Utils/Filtering/QueryBit.tsx","webpack://polite-mail-reactv2/./src/Utils/Filtering/QueryFactory.tsx","webpack://polite-mail-reactv2/./src/Utils/Filtering/QueryType.tsx","webpack://polite-mail-reactv2/./src/store/features/groupLabelsApiSlice.ts","webpack://polite-mail-reactv2/./src/Utils/GlobalProfile.tsx","webpack://polite-mail-reactv2/./src/Utils/HistoryUtils.tsx","webpack://polite-mail-reactv2/./src/Utils/ODataQueryBuilder.ts","webpack://polite-mail-reactv2/./src/Utils/OutlookUtils.ts","webpack://polite-mail-reactv2/./src/components/Images/UnlockIcon.tsx","webpack://polite-mail-reactv2/./src/Utils/PMIconMap.tsx","webpack://polite-mail-reactv2/./src/Utils/PageActions/Nav.tsx","webpack://polite-mail-reactv2/./src/Utils/PageActions/PageActions.tsx","webpack://polite-mail-reactv2/./src/Utils/PageActions/WarningReducer.tsx","webpack://polite-mail-reactv2/./src/Utils/Random.ts","webpack://polite-mail-reactv2/./src/Utils/ReportUtils.ts","webpack://polite-mail-reactv2/./src/Utils/TimeUtils.tsx","webpack://polite-mail-reactv2/./src/components/DataComponents/BrandThemeContext.tsx","webpack://polite-mail-reactv2/./src/components/DataComponents/PMBusinessDropdown.tsx","webpack://polite-mail-reactv2/./src/components/DataComponents/PMPhoneInput.tsx","webpack://polite-mail-reactv2/./src/components/DataComponents/PMPortalContext.tsx","webpack://polite-mail-reactv2/./src/components/DataComponents/PMRegionDropdown.tsx","webpack://polite-mail-reactv2/./src/store/features/publicValuesApiSlice.ts","webpack://polite-mail-reactv2/./src/components/DataComponents/PMRoleContext.tsx","webpack://polite-mail-reactv2/./src/components/DataComponents/PMUserDropdown.tsx","webpack://polite-mail-reactv2/./src/components/DataComponents/PMFromIdComboBox.tsx","webpack://polite-mail-reactv2/./src/components/DataComponents/PMVerificationInfoForm.tsx","webpack://polite-mail-reactv2/./src/components/DataComponents/VerificationInfoContext.tsx","webpack://polite-mail-reactv2/./src/components/GalleryComponents/PMDatePicker.tsx","webpack://polite-mail-reactv2/./src/components/GalleryComponents/PMTimePicker.tsx","webpack://polite-mail-reactv2/./src/components/Grids/PMGridCol.tsx","webpack://polite-mail-reactv2/./src/components/Grids/PMGridRow.tsx","webpack://polite-mail-reactv2/./src/components/Images/LockIcon.tsx","webpack://polite-mail-reactv2/./src/components/Images/TestSendIcon.tsx","webpack://polite-mail-reactv2/./src/components/Pages/ListsPages/FilteredListPage.tsx","webpack://polite-mail-reactv2/./src/components/Pages/Login/Login.tsx","webpack://polite-mail-reactv2/./src/components/Panels/TagsEntityEditControl.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMButton.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMCheckbox.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMComboBox.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMDialog.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMDialogFooter.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMDropDown.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMFilePicker.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMFormGrid.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMImagePicker.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMLabel.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/CheckIcon.tsx","webpack://polite-mail-reactv2/./public/images/svg/generated/HourGlassIcon.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMNotificationPill.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMSpinButton.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMTagPicker.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMTextField.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMThumbnail.tsx","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMToggle.tsx","webpack://polite-mail-reactv2/./src/components/Utility/ColumnMapper.tsx","webpack://polite-mail-reactv2/./src/components/Utility/DateTimePickerUtils.ts","webpack://polite-mail-reactv2/./src/components/SimpleComponents/PMCountriesDropDown.tsx","webpack://polite-mail-reactv2/./src/components/DataComponents/PMCampaignDropDown.tsx","webpack://polite-mail-reactv2/./src/components/GalleryComponents/PMDateTimePickerPanel.tsx","webpack://polite-mail-reactv2/./src/components/Utility/Factories/ModelPropertyFactory.tsx","webpack://polite-mail-reactv2/./src/components/Utility/FilesUtilts.tsx","webpack://polite-mail-reactv2/./src/components/Utility/PropertNameMapper.tsx","webpack://polite-mail-reactv2/./src/components/WebComponents/MailSending/IPMComposedMessage.ts","webpack://polite-mail-reactv2/./src/context wrappers/PMLoadingContext/PMLoadingContext.tsx","webpack://polite-mail-reactv2/./src/context wrappers/PMNavButtonLoadingContext.tsx.tsx","webpack://polite-mail-reactv2/./src/context wrappers/PMNotificationContext/PMNotificationsContext.tsx","webpack://polite-mail-reactv2/./src/context wrappers/PMNotificationContext/PMNotificationsStateReducer.tsx","webpack://polite-mail-reactv2/./src/context wrappers/PMWarningContext.tsx","webpack://polite-mail-reactv2/./src/store/expirationDetailSlice.ts","webpack://polite-mail-reactv2/./src/store/features/ReportStatsApiSlice.ts","webpack://polite-mail-reactv2/./src/store/features/appSettingsApiSlice.ts","webpack://polite-mail-reactv2/./src/store/features/baseApiSlice.ts","webpack://polite-mail-reactv2/./src/store/features/businessesApiSlice.ts","webpack://polite-mail-reactv2/./src/store/features/campaignsApiSlice.ts","webpack://polite-mail-reactv2/./src/store/features/contactsApiSlice.ts","webpack://polite-mail-reactv2/./src/store/features/exportMessageSlice.ts","webpack://polite-mail-reactv2/./src/store/features/featureFlagsSlice.ts","webpack://polite-mail-reactv2/./src/store/features/filteredListSlice.ts","webpack://polite-mail-reactv2/./src/store/features/listFiltersApiSlice.ts","webpack://polite-mail-reactv2/./src/store/features/listsApiSlice.ts","webpack://polite-mail-reactv2/./src/store/features/loadingGridSlice.ts","webpack://polite-mail-reactv2/./src/store/features/multiComparisonSlice.ts","webpack://polite-mail-reactv2/./src/store/features/preferencesSlice.ts","webpack://polite-mail-reactv2/./src/store/features/regionsApiSlice.ts","webpack://polite-mail-reactv2/./src/store/features/sendMessageSlice.ts","webpack://polite-mail-reactv2/./src/store/features/stagesApiSlice.ts","webpack://polite-mail-reactv2/./src/store/features/templateBuilderSlice.ts","webpack://polite-mail-reactv2/./src/store/features/templateThemesApiSlice.ts","webpack://polite-mail-reactv2/./src/store/features/userFromsApiSlice.ts","webpack://polite-mail-reactv2/./src/store/features/usersApiSlice.ts","webpack://polite-mail-reactv2/./src/store/hooks.ts","webpack://polite-mail-reactv2/./src/store/localStorage.ts","webpack://polite-mail-reactv2/./src/store/features/cacheSettingSlice.ts","webpack://polite-mail-reactv2/./src/store/store.ts","webpack://polite-mail-reactv2/./src/components/WebComponents/NotificationPill.css","webpack://polite-mail-reactv2/./node_modules/moment/locale/ sync en","webpack://polite-mail-reactv2/./src/components/WebComponents/NotificationPill.css?85c6"],"sourcesContent":["import React from 'react';\r\nimport { PMNavButtonLoadingContextProvider } from 'context wrappers/PMNavButtonLoadingContext.tsx';\r\nimport { PMNotificationsContextProvider } from 'context wrappers/PMNotificationContext/PMNotificationsContext';\r\nimport { Provider as ReduxContextProvider } from 'react-redux';\r\n\r\nimport { ProfileManager } from 'Utils/GlobalProfile';\r\nimport { PMWarningContextProvider } from 'context wrappers/PMWarningContext';\r\nimport { RoleContext, RoleContextProvider } from './src/components/DataComponents/PMRoleContext';\r\nimport {\r\n PMPortalContext,\r\n PMPortalContextProvider,\r\n PMPortalType\r\n} from './src/components/DataComponents/PMPortalContext';\r\nimport { RouteBase } from './src/Definitions/Globals';\r\nimport { OutlookEvent, OutlookListener, PushOutlookSubscription } from './src/Utils/OutlookUtils';\r\nimport { notify } from './src/Utils/PageActions/Nav';\r\nimport { persistor, store } from \"./src/store/store\";\r\nimport { PMProgressIndicator } from \"./src/components/SimpleComponents/PMProgressIndicator\";\r\nimport { PMLoadingContextProvider } from \"./src/context wrappers/PMLoadingContext/PMLoadingContext\";\r\nimport { BrandThemeContextProvider } from \"components/DataComponents/BrandThemeContext\";\r\nimport { PersistGate } from \"redux-persist/integration/react\";\r\nimport { InitChromie } from \"Utils/ChromieUtils\";\r\n\r\nconst outlookNavigateReact: OutlookEvent = {\r\n Key: 'NavigateReact',\r\n OnTrigger(url: string) {\r\n notify.FireNavigationEvents({ location: url });\r\n PushOutlookSubscription(outlookNavigateReact);\r\n }\r\n};\r\n\r\nconst outlookDpiSetting: OutlookEvent = {\r\n Key: 'OutlookDpiSet',\r\n OnTrigger(dpi: string) {\r\n ProfileManager.SetDpi(Number.parseFloat(dpi));\r\n }\r\n};\r\n\r\nconst AuthContextWrapper: React.FC = ({ children }) => {\r\n return (\r\n <PMLoadingContextProvider>\r\n <PMNavButtonLoadingContextProvider>\r\n <PMNotificationsContextProvider>\r\n <BrandThemeContextProvider>\r\n <PMWarningContextProvider>{children}</PMWarningContextProvider>\r\n </BrandThemeContextProvider>\r\n </PMNotificationsContextProvider>\r\n </PMNavButtonLoadingContextProvider>\r\n </PMLoadingContextProvider>\r\n );\r\n};\r\n\r\nconst UnAuthContextWrapper: React.FC = ({ children }) => {\r\n return (\r\n <ReduxContextProvider store={store}>\r\n <PersistGate loading={null} persistor={persistor}>\r\n {/* <PMThemeContextProvider> */}\r\n <PMPortalContextProvider>\r\n <RoleContextProvider>{children}</RoleContextProvider>\r\n </PMPortalContextProvider>\r\n {/* </PMThemeContextProvider> */}\r\n </PersistGate>\r\n </ReduxContextProvider>\r\n );\r\n};\r\n\r\nconst Entry: React.FC = () => {\r\n const { portal } = React.useContext(PMPortalContext);\r\n const { isAuth } = React.useContext(RoleContext);\r\n const outlookConnectionStyle: React.CSSProperties = {\r\n display: 'none'\r\n };\r\n\r\n React.useEffect(() => {\r\n const url: string = window.location.href;\r\n if (url.startsWith('outlook')) {\r\n window.location.href = '/' + RouteBase + 'manage_profile';\r\n }\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n PushOutlookSubscription(outlookNavigateReact);\r\n PushOutlookSubscription(outlookDpiSetting);\r\n InitChromie();\r\n }, []);\r\n\r\n const render = () => {\r\n if (portal === PMPortalType.unresolved) {\r\n return;\r\n }\r\n\r\n if (portal === PMPortalType.outlook) {\r\n const App = React.lazy(async () => import(/* webpackChunkName: \"app\" */ './src/components/App'));\r\n return <App />;\r\n }\r\n\r\n const WebApp = React.lazy(async () => import(/* webpackChunkName: \"webApp\" */ './src/components/webApp'));\r\n return <WebApp />;\r\n };\r\n\r\n return (\r\n <div style={{ height: '100%' }}>\r\n <form>\r\n <input id=\"outlookConnection\" style={outlookConnectionStyle} onChange={() => {\r\n if(typeof((window as any).FocusOutlook) === \"function\") {\r\n (window as any).FocusOutlook(); \r\n }\r\n }} />\r\n <input type=\"text\" id=\"outlookOutput\" style={outlookConnectionStyle} onChange={(e) => {\r\n OutlookListener(e.currentTarget.value)\r\n }} />\r\n </form>\r\n <React.Suspense fallback={<PMProgressIndicator />}>\r\n {isAuth ? <AuthContextWrapper>{render()}</AuthContextWrapper> : render()}\r\n </React.Suspense>\r\n </div>\r\n );\r\n};\r\n\r\nconst RenderIndex = () => {\r\n return (\r\n <UnAuthContextWrapper>\r\n <Entry />\r\n </UnAuthContextWrapper>\r\n );\r\n};\r\n\r\nexport default RenderIndex;\r\n","import { ContextualMenuItemType, IContextualMenuItem } from \"@fluentui/react\";\r\n\r\nexport interface IBenchmarkData {\r\n SentYear: number,\r\n Industry: string,\r\n OpenRate: number,\r\n IgnoreRate: number,\r\n AudienceAttentionRate: number,\r\n OpenAttentionRate: number,\r\n ReadRate: number,\r\n SkimmedRate: number,\r\n EngagedReadRate: number,\r\n LeftOpenRate: number,\r\n PercentRead: number,\r\n OpenEngagementRate: number,\r\n ClickRate: number,\r\n EffectiveRate: number,\r\n}\r\n\r\nexport const BenchmarkData : IBenchmarkData[] = [\r\n {\r\n SentYear: 2019,\r\n Industry: \"Financials\",\r\n OpenRate: 0.763236871660875,\r\n IgnoreRate: 0.104154050651409,\r\n AudienceAttentionRate: 0.659082821009462,\r\n SkimmedRate: 0.251774399451226,\r\n ReadRate: 0.407308459083244,\r\n EngagedReadRate: 0.354408625813274,\r\n OpenAttentionRate: 0.856954269921565,\r\n LeftOpenRate: 0.00232457792275772,\r\n OpenEngagementRate: 0.773761507746958,\r\n PercentRead: 0.760670460472073,\r\n ClickRate: 0.0963312309520616,\r\n EffectiveRate: 0.123412244686477\r\n },\r\n {\r\n SentYear: 2019,\r\n Industry: \"Real Estate\",\r\n OpenRate: 0.684834262887368,\r\n IgnoreRate: 0.0635485537289189,\r\n AudienceAttentionRate: 0.62128570915845,\r\n SkimmedRate: 0.250414676886323,\r\n ReadRate: 0.370871032272126,\r\n EngagedReadRate: 0.324777233835408,\r\n OpenAttentionRate: 0.905890957087301,\r\n LeftOpenRate: 0.0007970170451748,\r\n OpenEngagementRate: 0.814570064776224,\r\n PercentRead: 0.792484952239591,\r\n ClickRate: 0.109802001056744,\r\n EffectiveRate: 0.160127149754093\r\n },\r\n {\r\n SentYear: 2019,\r\n Industry: \"Materials\",\r\n OpenRate: 0.749366022239128,\r\n IgnoreRate: 0.0896815710445409,\r\n AudienceAttentionRate: 0.659684451194585,\r\n SkimmedRate: 0.0487001074756957,\r\n ReadRate: 0.610984343718888,\r\n EngagedReadRate: 0.601274982783586,\r\n OpenAttentionRate: 0.878440529641558,\r\n LeftOpenRate: 0.00195865591587632,\r\n OpenEngagementRate: 0.963836389103753,\r\n PercentRead: 0.961552462031921,\r\n ClickRate: 0.0751719504609793,\r\n EffectiveRate: 0.0989309389823609\r\n },\r\n {\r\n SentYear: 2019,\r\n Industry: \"Education Non-Profit\",\r\n OpenRate: 0.640248280293312,\r\n IgnoreRate: 0.0585753471601484,\r\n AudienceAttentionRate: 0.581672933133164,\r\n SkimmedRate: 0.200647517384807,\r\n ReadRate: 0.381025415748356,\r\n EngagedReadRate: 0.326059989403337,\r\n OpenAttentionRate: 0.902300217142815,\r\n LeftOpenRate: 0.00118295469666409,\r\n OpenEngagementRate: 0.866332188121277,\r\n PercentRead: 0.854425314512003,\r\n ClickRate: 0.105252666705851,\r\n EffectiveRate: 0.164092651535891\r\n },\r\n {\r\n SentYear: 2019,\r\n Industry: \"Technology\",\r\n OpenRate: 0.666412770343462,\r\n IgnoreRate: 0.106936011054918,\r\n AudienceAttentionRate: 0.559476759288544,\r\n SkimmedRate: 0.207863977336642,\r\n ReadRate: 0.351611109775326,\r\n EngagedReadRate: 0.308622475972847,\r\n OpenAttentionRate: 0.831639305766511,\r\n LeftOpenRate: 0.00207314309497541,\r\n OpenEngagementRate: 0.767014923291287,\r\n PercentRead: 0.757174126705421,\r\n ClickRate: 0.0641577078983799,\r\n EffectiveRate: 0.0985815987293583\r\n },\r\n {\r\n SentYear: 2019,\r\n Industry: \"Energy\",\r\n OpenRate: 0.717855308414572,\r\n IgnoreRate: 0.135332207651501,\r\n AudienceAttentionRate: 0.582523100763071,\r\n SkimmedRate: 0.247334122888666,\r\n ReadRate: 0.337179290319367,\r\n EngagedReadRate: 0.288487423910631,\r\n OpenAttentionRate: 0.811125045029301,\r\n LeftOpenRate: 0.00175305727521328,\r\n OpenEngagementRate: 0.719146468131682,\r\n PercentRead: 0.700489009642973,\r\n ClickRate: 0.0828977340961922,\r\n EffectiveRate: 0.115410507537276\r\n },\r\n {\r\n SentYear: 2019,\r\n Industry: \"Consumer\",\r\n OpenRate: 0.677388776560795,\r\n IgnoreRate: 0.0649099564796541,\r\n AudienceAttentionRate: 0.612478820081147,\r\n SkimmedRate: 0.135588304187926,\r\n ReadRate: 0.476891155338619,\r\n EngagedReadRate: 0.441626172325197,\r\n OpenAttentionRate: 0.89589914318839,\r\n LeftOpenRate: 0.00219234090271788,\r\n OpenEngagementRate: 0.88269678501302,\r\n PercentRead: 0.875141600340738,\r\n ClickRate: 0.0799767986694734,\r\n EffectiveRate: 0.114746432233415\r\n },\r\n {\r\n SentYear: 2019,\r\n Industry: \"Communications\",\r\n OpenRate: 0.64121874675559,\r\n IgnoreRate: 0.119893847063967,\r\n AudienceAttentionRate: 0.521324899691624,\r\n SkimmedRate: 0.216167805482931,\r\n ReadRate: 0.305157094208695,\r\n EngagedReadRate: 0.2627570795625,\r\n OpenAttentionRate: 0.805097455932102,\r\n LeftOpenRate: 0.00246815072871909,\r\n OpenEngagementRate: 0.745264565279816,\r\n PercentRead: 0.731281738176548,\r\n ClickRate: 0.0701817142337803,\r\n EffectiveRate: 0.113632788834493\r\n },\r\n {\r\n SentYear: 2019,\r\n Industry: \"Health Care\",\r\n OpenRate: 0.667246574482474,\r\n IgnoreRate: 0.0847300122737337,\r\n AudienceAttentionRate: 0.582516562208739,\r\n SkimmedRate: 0.223265871570776,\r\n ReadRate: 0.359241192670344,\r\n EngagedReadRate: 0.314081902416457,\r\n OpenAttentionRate: 0.867369984380573,\r\n LeftOpenRate: 0.00175793746132052,\r\n OpenEngagementRate: 0.759359113117393,\r\n PercentRead: 0.747516485944647,\r\n ClickRate: 0.0785844638605291,\r\n EffectiveRate: 0.112373602076713\r\n },\r\n {\r\n SentYear: 2019,\r\n Industry: \"Industrials\",\r\n OpenRate: 0.663615289792084,\r\n IgnoreRate: 0.0804668781713936,\r\n AudienceAttentionRate: 0.583148411620691,\r\n SkimmedRate: 0.228851652411536,\r\n ReadRate: 0.354296899584406,\r\n EngagedReadRate: 0.305481221264684,\r\n OpenAttentionRate: 0.870810230363963,\r\n LeftOpenRate: 0.00186008095652571,\r\n OpenEngagementRate: 0.799024744897137,\r\n PercentRead: 0.784948012718166,\r\n ClickRate: 0.0802949786301423,\r\n EffectiveRate: 0.117028165537448\r\n },\r\n {\r\n SentYear: 2019,\r\n Industry: \"Utilities\",\r\n OpenRate: 0.703300786749056,\r\n IgnoreRate: 0.109065634609734,\r\n AudienceAttentionRate: 0.594235152139323,\r\n SkimmedRate: 0.27280066361438,\r\n ReadRate: 0.321434488524944,\r\n EngagedReadRate: 0.27073563371527,\r\n OpenAttentionRate: 0.841831876244346,\r\n LeftOpenRate: 0.00190864101347001,\r\n OpenEngagementRate: 0.697624108709136,\r\n PercentRead: 0.6772448226754,\r\n ClickRate: 0.0860928599240399,\r\n EffectiveRate: 0.118464043098591\r\n },\r\n {\r\n SentYear: 2020,\r\n Industry: \"Utilities\",\r\n OpenRate: 0.715387532319476,\r\n IgnoreRate: 0.120895413053806,\r\n AudienceAttentionRate: 0.59449211926567,\r\n SkimmedRate: 0.272519036236348,\r\n ReadRate: 0.321973083029322,\r\n EngagedReadRate: 0.268891918156177,\r\n OpenAttentionRate: 0.825259173956224,\r\n LeftOpenRate: 0.00155601020192549,\r\n OpenEngagementRate: 0.656269832306518,\r\n PercentRead: 0.632275571097658,\r\n ClickRate: 0.0795783892729793,\r\n EffectiveRate: 0.111602227144159\r\n },\r\n {\r\n SentYear: 2020,\r\n Industry: \"Financials\",\r\n OpenRate: 0.7373004783101,\r\n IgnoreRate: 0.10382783604931,\r\n AudienceAttentionRate: 0.633472642260792,\r\n SkimmedRate: 0.239446047867785,\r\n ReadRate: 0.39402659439301,\r\n EngagedReadRate: 0.341897424061011,\r\n OpenAttentionRate: 0.851460386339698,\r\n LeftOpenRate: 0.00179750232153948,\r\n OpenEngagementRate: 0.747874300314728,\r\n PercentRead: 0.733433714789221,\r\n ClickRate: 0.0901769036479003,\r\n EffectiveRate: 0.118443983293694\r\n },\r\n {\r\n SentYear: 2020,\r\n Industry: \"Industrials\",\r\n OpenRate: 0.646603776003365,\r\n IgnoreRate: 0.0741440918012514,\r\n AudienceAttentionRate: 0.572459684202115,\r\n SkimmedRate: 0.189126321800417,\r\n ReadRate: 0.383336637723726,\r\n EngagedReadRate: 0.334575974208965,\r\n OpenAttentionRate: 0.878078845371666,\r\n LeftOpenRate: 0.00181820809981164,\r\n OpenEngagementRate: 0.796162609310549,\r\n PercentRead: 0.784198339766402,\r\n ClickRate: 0.0794248177815356,\r\n EffectiveRate: 0.12044029676702\r\n },\r\n {\r\n SentYear: 2020,\r\n Industry: \"Real Estate\",\r\n OpenRate: 0.715107027592411,\r\n IgnoreRate: 0.0646888466798256,\r\n AudienceAttentionRate: 0.650418180912585,\r\n SkimmedRate: 0.279159758951477,\r\n ReadRate: 0.371258421961108,\r\n EngagedReadRate: 0.311212289935049,\r\n OpenAttentionRate: 0.907836481667294,\r\n LeftOpenRate: 0.00183373946191778,\r\n OpenEngagementRate: 0.751366729034356,\r\n PercentRead: 0.735283785396205,\r\n ClickRate: 0.0816643363795827,\r\n EffectiveRate: 0.115247719098738\r\n },\r\n {\r\n SentYear: 2020,\r\n Industry: \"Technology\",\r\n OpenRate: 0.715493488157804,\r\n IgnoreRate: 0.1052372585643,\r\n AudienceAttentionRate: 0.610256229593504,\r\n SkimmedRate: 0.230976046281234,\r\n ReadRate: 0.379279752258971,\r\n EngagedReadRate: 0.332279121082812,\r\n OpenAttentionRate: 0.843381806691859,\r\n LeftOpenRate: 0.00162736275447703,\r\n OpenEngagementRate: 0.75370647045877,\r\n PercentRead: 0.742423085402376,\r\n ClickRate: 0.0722747318476554,\r\n EffectiveRate: 0.0978492863279016\r\n },\r\n {\r\n SentYear: 2020,\r\n Industry: \"Education Non-Profit\",\r\n OpenRate: 0.705619727181566,\r\n IgnoreRate: 0.0737760191129774,\r\n AudienceAttentionRate: 0.631843708068585,\r\n SkimmedRate: 0.21560900654016,\r\n ReadRate: 0.416234701528426,\r\n EngagedReadRate: 0.356619167752438,\r\n OpenAttentionRate: 0.892364152388781,\r\n LeftOpenRate: 0.00168374810301746,\r\n OpenEngagementRate: 0.796721717329149,\r\n PercentRead: 0.787237944521559,\r\n ClickRate: 0.081359472153363,\r\n EffectiveRate: 0.115918272621152\r\n },\r\n {\r\n SentYear: 2020,\r\n Industry: \"Materials\",\r\n OpenRate: 0.722644512008549,\r\n IgnoreRate: 0.0863637907365661,\r\n AudienceAttentionRate: 0.636280721271982,\r\n SkimmedRate: 0.0585171387162285,\r\n ReadRate: 0.577763618650518,\r\n EngagedReadRate: 0.566290856644999,\r\n OpenAttentionRate: 0.881879154686797,\r\n LeftOpenRate: 0.00195154116341161,\r\n OpenEngagementRate: 0.938952605500291,\r\n PercentRead: 0.935693399797215,\r\n ClickRate: 0.0634031168606617,\r\n EffectiveRate: 0.0852959157456417\r\n },\r\n {\r\n SentYear: 2020,\r\n Industry: \"Consumer\",\r\n OpenRate: 0.68229617149724,\r\n IgnoreRate: 0.0701480716078735,\r\n AudienceAttentionRate: 0.612148099889366,\r\n SkimmedRate: 0.14119851983564,\r\n ReadRate: 0.47094960405144,\r\n EngagedReadRate: 0.43738693097091,\r\n OpenAttentionRate: 0.892702765852772,\r\n LeftOpenRate: 0.0020223148153959,\r\n OpenEngagementRate: 0.847816962020362,\r\n PercentRead: 0.837456424820634,\r\n ClickRate: 0.078594179931626,\r\n EffectiveRate: 0.112890279588823\r\n },\r\n {\r\n SentYear: 2020,\r\n Industry: \"Communications\",\r\n OpenRate: 0.683422996171665,\r\n IgnoreRate: 0.119553350860513,\r\n AudienceAttentionRate: 0.563869645311152,\r\n SkimmedRate: 0.227842945281838,\r\n ReadRate: 0.336026696473911,\r\n EngagedReadRate: 0.289514510143417,\r\n OpenAttentionRate: 0.818772043141453,\r\n LeftOpenRate: 0.00248613341573569,\r\n OpenEngagementRate: 0.755961174843035,\r\n PercentRead: 0.741836338270651,\r\n ClickRate: 0.0693305179256688,\r\n EffectiveRate: 0.101100042733194\r\n },\r\n {\r\n SentYear: 2020,\r\n Industry: \"Health Care\",\r\n OpenRate: 0.654877929257517,\r\n IgnoreRate: 0.0863152378112925,\r\n AudienceAttentionRate: 0.568562691446226,\r\n SkimmedRate: 0.217911588684813,\r\n ReadRate: 0.350650446579389,\r\n EngagedReadRate: 0.298998394778852,\r\n OpenAttentionRate: 0.863869365193026,\r\n LeftOpenRate: 0.00161491864950561,\r\n OpenEngagementRate: 0.747708242519201,\r\n PercentRead: 0.734297395725687,\r\n ClickRate: 0.0678139414806616,\r\n EffectiveRate: 0.0986798932798642\r\n },\r\n {\r\n SentYear: 2020,\r\n Industry: \"Energy\",\r\n OpenRate: 0.638121031557922,\r\n IgnoreRate: 0.136138009345083,\r\n AudienceAttentionRate: 0.501983022212841,\r\n SkimmedRate: 0.203255194164061,\r\n ReadRate: 0.298803676423419,\r\n EngagedReadRate: 0.253559580313589,\r\n OpenAttentionRate: 0.778585061567095,\r\n LeftOpenRate: 0.0018162252503369,\r\n OpenEngagementRate: 0.703402797111154,\r\n PercentRead: 0.685140848897161,\r\n ClickRate: 0.0775725167340788,\r\n EffectiveRate: 0.119267560015452\r\n },\r\n {\r\n SentYear: 2021,\r\n Industry: \"Technology\",\r\n OpenRate: 0.69112171081785,\r\n IgnoreRate: 0.113360706078752,\r\n AudienceAttentionRate: 0.577761004739099,\r\n SkimmedRate: 0.228218392374773,\r\n ReadRate: 0.349542615452672,\r\n EngagedReadRate: 0.306942046227386,\r\n OpenAttentionRate: 0.81946771945038,\r\n LeftOpenRate: 0.00184554201200223,\r\n OpenEngagementRate: 0.7000179504941,\r\n PercentRead: 0.686089306142077,\r\n ClickRate: 0.069931955762992,\r\n EffectiveRate: 0.100711243316252\r\n },\r\n {\r\n SentYear: 2021,\r\n Industry: \"Education Non-Profit\",\r\n OpenRate: 0.700890488877186,\r\n IgnoreRate: 0.0736735088098069,\r\n AudienceAttentionRate: 0.627216980067378,\r\n SkimmedRate: 0.217723051187217,\r\n ReadRate: 0.409493928880161,\r\n EngagedReadRate: 0.348922666950557,\r\n OpenAttentionRate: 0.894152006080071,\r\n LeftOpenRate: 0.00164680392746323,\r\n OpenEngagementRate: 0.779465529863822,\r\n PercentRead: 0.766013682731539,\r\n ClickRate: 0.0890528241989615,\r\n EffectiveRate: 0.124744552816049\r\n },\r\n {\r\n SentYear: 2021,\r\n Industry: \"Communications\",\r\n OpenRate: 0.67245450248093,\r\n IgnoreRate: 0.101590287646156,\r\n AudienceAttentionRate: 0.570864214834778,\r\n SkimmedRate: 0.264441987865762,\r\n ReadRate: 0.306422226969011,\r\n EngagedReadRate: 0.26002682239429,\r\n OpenAttentionRate: 0.841916030837,\r\n LeftOpenRate: 0.002427625092079,\r\n OpenEngagementRate: 0.644218813361193,\r\n PercentRead: 0.626664391680004,\r\n ClickRate: 0.0654271037384454,\r\n EffectiveRate: 0.0932019908227517\r\n },\r\n {\r\n SentYear: 2021,\r\n Industry: \"Health Care\",\r\n OpenRate: 0.638188727922136,\r\n IgnoreRate: 0.0907036247437792,\r\n AudienceAttentionRate: 0.547485103178361,\r\n SkimmedRate: 0.205261822356892,\r\n ReadRate: 0.342223280821465,\r\n EngagedReadRate: 0.296448292806471,\r\n OpenAttentionRate: 0.853151337695041,\r\n LeftOpenRate: 0.00152273906105667,\r\n OpenEngagementRate: 0.73300017486327,\r\n PercentRead: 0.719475580931112,\r\n ClickRate: 0.0640463473798763,\r\n EffectiveRate: 0.095221971155459\r\n },\r\n {\r\n SentYear: 2021,\r\n Industry: \"Utilities\",\r\n OpenRate: 0.677623328559386,\r\n IgnoreRate: 0.127908648094607,\r\n AudienceAttentionRate: 0.549714680464777,\r\n SkimmedRate: 0.286079168073815,\r\n ReadRate: 0.263635512390964,\r\n EngagedReadRate: 0.221701867315421,\r\n OpenAttentionRate: 0.805922151832323,\r\n LeftOpenRate: 0.0013252639524894,\r\n OpenEngagementRate: 0.566326170172343,\r\n PercentRead: 0.54269593407073,\r\n ClickRate: 0.0636809487618458,\r\n EffectiveRate: 0.0955344331334296\r\n },\r\n {\r\n SentYear: 2021,\r\n Industry: \"Energy\",\r\n OpenRate: 0.642068951437772,\r\n IgnoreRate: 0.103957903077662,\r\n AudienceAttentionRate: 0.538111048360108,\r\n SkimmedRate: 0.202584228114547,\r\n ReadRate: 0.335526820245563,\r\n EngagedReadRate: 0.285863076249878,\r\n OpenAttentionRate: 0.813484415632052,\r\n LeftOpenRate: 0.00191586483030757,\r\n OpenEngagementRate: 0.698423425608762,\r\n PercentRead: 0.677634457204857,\r\n ClickRate: 0.0888750059850669,\r\n EffectiveRate: 0.142787135080348\r\n },\r\n {\r\n SentYear: 2021,\r\n Industry: \"Financials\",\r\n OpenRate: 0.720537677152693,\r\n IgnoreRate: 0.109823448347553,\r\n AudienceAttentionRate: 0.610714228805144,\r\n SkimmedRate: 0.24510407421437,\r\n ReadRate: 0.365610199717039,\r\n EngagedReadRate: 0.317102096430216,\r\n OpenAttentionRate: 0.838127922614469,\r\n LeftOpenRate: 0.00192106003246752,\r\n OpenEngagementRate: 0.707040767397835,\r\n PercentRead: 0.691455728377464,\r\n ClickRate: 0.0812583354435177,\r\n EffectiveRate: 0.112298425382395\r\n },\r\n {\r\n SentYear: 2021,\r\n Industry: \"Consumer\",\r\n OpenRate: 0.703795806806128,\r\n IgnoreRate: 0.0687323133198776,\r\n AudienceAttentionRate: 0.635063493486245,\r\n SkimmedRate: 0.150994138694537,\r\n ReadRate: 0.484069354791715,\r\n EngagedReadRate: 0.448869760904417,\r\n OpenAttentionRate: 0.895665094130523,\r\n LeftOpenRate: 0.00213730381465731,\r\n OpenEngagementRate: 0.836094295215615,\r\n PercentRead: 0.825877772980279,\r\n ClickRate: 0.0900318226595924,\r\n EffectiveRate: 0.121172267931358\r\n },\r\n {\r\n SentYear: 2021,\r\n Industry: \"Materials\",\r\n OpenRate: 0.674761166357023,\r\n IgnoreRate: 0.0635719034776658,\r\n AudienceAttentionRate: 0.611189262879355,\r\n SkimmedRate: 0.0450908308151658,\r\n ReadRate: 0.566098432064192,\r\n EngagedReadRate: 0.556566429658122,\r\n OpenAttentionRate: 0.910313418370743,\r\n LeftOpenRate: 0.00196897963766401,\r\n OpenEngagementRate: 0.968861778536632,\r\n PercentRead: 0.966852864040303,\r\n ClickRate: 0.0597178063328875,\r\n EffectiveRate: 0.0849221506799235\r\n },\r\n {\r\n SentYear: 2021,\r\n Industry: \"Industrials\",\r\n OpenRate: 0.636697181651774,\r\n IgnoreRate: 0.0832131045584389,\r\n AudienceAttentionRate: 0.553484077093334,\r\n SkimmedRate: 0.190002446169893,\r\n ReadRate: 0.363481959784408,\r\n EngagedReadRate: 0.31651829665617,\r\n OpenAttentionRate: 0.862884753093889,\r\n LeftOpenRate: 0.00188082014149014,\r\n OpenEngagementRate: 0.773030912446873,\r\n PercentRead: 0.759785658201131,\r\n ClickRate: 0.0776466011955838,\r\n EffectiveRate: 0.119681881550622\r\n },\r\n {\r\n SentYear: 2021,\r\n Industry: \"Real Estate\",\r\n OpenRate: 0.728818861128438,\r\n IgnoreRate: 0.0748302649888206,\r\n AudienceAttentionRate: 0.653988596139618,\r\n SkimmedRate: 0.282324674637612,\r\n ReadRate: 0.371663921502006,\r\n EngagedReadRate: 0.313670906527428,\r\n OpenAttentionRate: 0.893423535019101,\r\n LeftOpenRate: 0.0017150134464338,\r\n OpenEngagementRate: 0.719601570115315,\r\n PercentRead: 0.696777314658306,\r\n ClickRate: 0.118224264406655,\r\n EffectiveRate: 0.152667610658911\r\n },\r\n {\r\n SentYear: 2022,\r\n Industry: \"Financials\",\r\n OpenRate: 0.743760223806223,\r\n IgnoreRate: 0.100840939665028,\r\n AudienceAttentionRate: 0.642919284141196,\r\n SkimmedRate: 0.246627123615162,\r\n ReadRate: 0.396292160526033,\r\n EngagedReadRate: 0.345249933898429,\r\n OpenAttentionRate: 0.855000318056601,\r\n LeftOpenRate: 0.00180141796676541,\r\n OpenEngagementRate: 0.734551823873429,\r\n PercentRead: 0.720547217111748,\r\n ClickRate: 0.0859101659724634,\r\n EffectiveRate: 0.114039083653635\r\n },\r\n {\r\n SentYear: 2022,\r\n Industry: \"Consumer\",\r\n OpenRate: 0.708060841074652,\r\n IgnoreRate: 0.0619449417519623,\r\n AudienceAttentionRate: 0.646115899322691,\r\n SkimmedRate: 0.137079756565152,\r\n ReadRate: 0.509036142757538,\r\n EngagedReadRate: 0.475380834214189,\r\n OpenAttentionRate: 0.905181959506458,\r\n LeftOpenRate: 0.00206678393093029,\r\n OpenEngagementRate: 0.86577497916391,\r\n PercentRead: 0.857640314582546,\r\n ClickRate: 0.088593247559687,\r\n EffectiveRate: 0.119713049153548\r\n },\r\n {\r\n SentYear: 2022,\r\n Industry: \"Real Estate\",\r\n OpenRate: 0.747220966371367,\r\n IgnoreRate: 0.0574467021197921,\r\n AudienceAttentionRate: 0.689774264251575,\r\n SkimmedRate: 0.25002851504337,\r\n ReadRate: 0.439745749208206,\r\n EngagedReadRate: 0.369532069516522,\r\n OpenAttentionRate: 0.920627161730427,\r\n LeftOpenRate: 0.00168741662574172,\r\n OpenEngagementRate: 0.734627552697518,\r\n PercentRead: 0.72196645320067,\r\n ClickRate: 0.129220328954512,\r\n EffectiveRate: 0.155742898696792\r\n },\r\n {\r\n SentYear: 2022,\r\n Industry: \"Energy\",\r\n OpenRate: 0.756841332939126,\r\n IgnoreRate: 0.0777510196674781,\r\n AudienceAttentionRate: 0.679090313271648,\r\n SkimmedRate: 0.234067012175245,\r\n ReadRate: 0.445023301096403,\r\n EngagedReadRate: 0.383321831166256,\r\n OpenAttentionRate: 0.886970993515755,\r\n LeftOpenRate: 0.00206587225734037,\r\n OpenEngagementRate: 0.767682191754237,\r\n PercentRead: 0.753616398451703,\r\n ClickRate: 0.0824157052574832,\r\n EffectiveRate: 0.111771080718646\r\n },\r\n {\r\n SentYear: 2022,\r\n Industry: \"Technology\",\r\n OpenRate: 0.690940595229097,\r\n IgnoreRate: 0.111073379947684,\r\n AudienceAttentionRate: 0.579867215281415,\r\n SkimmedRate: 0.214158938102831,\r\n ReadRate: 0.365708277178584,\r\n EngagedReadRate: 0.324319903067108,\r\n OpenAttentionRate: 0.825676262418292,\r\n LeftOpenRate: 0.00186550311718434,\r\n OpenEngagementRate: 0.741727929821958,\r\n PercentRead: 0.730842222402605,\r\n ClickRate: 0.0689498682930663,\r\n EffectiveRate: 0.0969814705804797\r\n },\r\n {\r\n SentYear: 2022,\r\n Industry: \"Education Non-Profit\",\r\n OpenRate: 0.716094417361951,\r\n IgnoreRate: 0.0654487186480178,\r\n AudienceAttentionRate: 0.650645698713934,\r\n SkimmedRate: 0.214024525489803,\r\n ReadRate: 0.43662117322413,\r\n EngagedReadRate: 0.380459556638728,\r\n OpenAttentionRate: 0.909721241663387,\r\n LeftOpenRate: 0.00173393348749811,\r\n OpenEngagementRate: 0.811698608870805,\r\n PercentRead: 0.798302202956963,\r\n ClickRate: 0.106254008129095,\r\n EffectiveRate: 0.146802657225527\r\n },\r\n {\r\n SentYear: 2022,\r\n Industry: \"Materials\",\r\n OpenRate: 0.635499702779388,\r\n IgnoreRate: 0.0337584796584778,\r\n AudienceAttentionRate: 0.60174122312091,\r\n SkimmedRate: 0.0725868355404591,\r\n ReadRate: 0.529154387580451,\r\n EngagedReadRate: 0.511124287820227,\r\n OpenAttentionRate: 0.947127003473924,\r\n LeftOpenRate: 0.00210915370894524,\r\n OpenEngagementRate: 0.95095147496098,\r\n PercentRead: 0.947662664475254,\r\n ClickRate: 0.063234442004185,\r\n EffectiveRate: 0.0931508832859881\r\n },\r\n {\r\n SentYear: 2022,\r\n Industry: \"Communications\",\r\n OpenRate: 0.700412003401778,\r\n IgnoreRate: 0.07956484096175,\r\n AudienceAttentionRate: 0.620847162440028,\r\n SkimmedRate: 0.279877221059612,\r\n ReadRate: 0.340969941380417,\r\n EngagedReadRate: 0.288280136113776,\r\n OpenAttentionRate: 0.878433405075521,\r\n LeftOpenRate: 0.00256404056940108,\r\n OpenEngagementRate: 0.657720702996992,\r\n PercentRead: 0.640583949918141,\r\n ClickRate: 0.0709584620901532,\r\n EffectiveRate: 0.0964539799093956\r\n },\r\n {\r\n SentYear: 2022,\r\n Industry: \"Health Care\",\r\n OpenRate: 0.640467875816292,\r\n IgnoreRate: 0.063514698939764,\r\n AudienceAttentionRate: 0.576953176876528,\r\n SkimmedRate: 0.199594273202636,\r\n ReadRate: 0.377358903673892,\r\n EngagedReadRate: 0.328936851687246,\r\n OpenAttentionRate: 0.893808952122276,\r\n LeftOpenRate: 0.0014780570805275,\r\n OpenEngagementRate: 0.779839261170015,\r\n PercentRead: 0.768607706450765,\r\n ClickRate: 0.0664835482460646,\r\n EffectiveRate: 0.0988980709404787\r\n },\r\n {\r\n SentYear: 2022,\r\n Industry: \"Industrials\",\r\n OpenRate: 0.648655301938908,\r\n IgnoreRate: 0.0759333712769036,\r\n AudienceAttentionRate: 0.572721930662004,\r\n SkimmedRate: 0.159938168131582,\r\n ReadRate: 0.412783762530422,\r\n EngagedReadRate: 0.368319944399018,\r\n OpenAttentionRate: 0.875619880851339,\r\n LeftOpenRate: 0.00171678612758594,\r\n OpenEngagementRate: 0.82648693209911,\r\n PercentRead: 0.818355449787184,\r\n ClickRate: 0.0779849897008088,\r\n EffectiveRate: 0.11751869797284\r\n },\r\n {\r\n SentYear: 2022,\r\n Industry: \"Utilities\",\r\n OpenRate: 0.685947228545497,\r\n IgnoreRate: 0.117380686083384,\r\n AudienceAttentionRate: 0.568566542462114,\r\n SkimmedRate: 0.278250901189598,\r\n ReadRate: 0.290315641272517,\r\n EngagedReadRate: 0.247761343108115,\r\n OpenAttentionRate: 0.820150467771855,\r\n LeftOpenRate: 0.00131745698011393,\r\n OpenEngagementRate: 0.575671274436891,\r\n PercentRead: 0.5596614449257,\r\n ClickRate: 0.0567951898158014,\r\n EffectiveRate: 0.0791609069127036\r\n },\r\n {\r\n SentYear: 2023,\r\n Industry: \"Financials\",\r\n OpenRate: 0.738044282610028,\r\n IgnoreRate: 0.129033023992327,\r\n AudienceAttentionRate: 0.609011258617699,\r\n SkimmedRate: 0.236143595291544,\r\n ReadRate: 0.372806172752769,\r\n EngagedReadRate: 0.327665229468467,\r\n OpenAttentionRate: 0.815110076960578,\r\n LeftOpenRate: 0.00187146942970891,\r\n OpenEngagementRate: 0.71686607129213,\r\n PercentRead: 0.701504442325435,\r\n ClickRate: 0.0830788149560013,\r\n EffectiveRate: 0.113615211829977\r\n },\r\n {\r\n SentYear: 2023,\r\n Industry: \"Consumer\",\r\n OpenRate: 0.657056232122515,\r\n IgnoreRate: 0.0922747125218535,\r\n AudienceAttentionRate: 0.564781519600664,\r\n SkimmedRate: 0.126309599700405,\r\n ReadRate: 0.438174550159744,\r\n EngagedReadRate: 0.402382948682971,\r\n OpenAttentionRate: 0.84969296834104,\r\n LeftOpenRate: 0.00191641721931799,\r\n OpenEngagementRate: 0.839843240086101,\r\n PercentRead: 0.829912359165647,\r\n ClickRate: 0.0681629444959795,\r\n EffectiveRate: 0.0963605831288428\r\n },\r\n {\r\n SentYear: 2023,\r\n Industry: \"Real Estate\",\r\n OpenRate: 0.725575973712005,\r\n IgnoreRate: 0.142552331632605,\r\n AudienceAttentionRate: 0.5830236420794,\r\n SkimmedRate: 0.206893449543409,\r\n ReadRate: 0.376681273922639,\r\n EngagedReadRate: 0.332791983281708,\r\n OpenAttentionRate: 0.799093233255761,\r\n LeftOpenRate: 0.00271975433277211,\r\n OpenEngagementRate: 0.730000718777981,\r\n PercentRead: 0.713772043023014,\r\n ClickRate: 0.077582352828081,\r\n EffectiveRate: 0.104910349468214\r\n },\r\n {\r\n SentYear: 2023,\r\n Industry: \"Energy\",\r\n OpenRate: 0.734375661236325,\r\n IgnoreRate: 0.1241096688083,\r\n AudienceAttentionRate: 0.610265992428025,\r\n SkimmedRate: 0.199094416307693,\r\n ReadRate: 0.410840716388313,\r\n EngagedReadRate: 0.356596853529842,\r\n OpenAttentionRate: 0.821333806320365,\r\n LeftOpenRate: 0.00195976702266158,\r\n OpenEngagementRate: 0.722072916008603,\r\n PercentRead: 0.708424246626589,\r\n ClickRate: 0.0663308689866634,\r\n EffectiveRate: 0.0890727775804827\r\n },\r\n {\r\n SentYear: 2023,\r\n Industry: \"Technology\",\r\n OpenRate: 0.600373799649444,\r\n IgnoreRate: 0.130803986370771,\r\n AudienceAttentionRate: 0.469569813278673,\r\n SkimmedRate: 0.222976690517308,\r\n ReadRate: 0.245765502586061,\r\n EngagedReadRate: 0.211007266893642,\r\n OpenAttentionRate: 0.766450831581639,\r\n LeftOpenRate: 0.00155320466012309,\r\n OpenEngagementRate: 0.543574572099609,\r\n PercentRead: 0.525056219767175,\r\n ClickRate: 0.0543635194204367,\r\n EffectiveRate: 0.0849661564491411\r\n },\r\n {\r\n SentYear: 2023,\r\n Industry: \"Education/Non-Profit\",\r\n OpenRate: 0.663327152681797,\r\n IgnoreRate: 0.11722487112217,\r\n AudienceAttentionRate: 0.546102281559627,\r\n SkimmedRate: 0.150960471403446,\r\n ReadRate: 0.395865405023288,\r\n EngagedReadRate: 0.348855599830198,\r\n OpenAttentionRate: 0.82283597712149,\r\n LeftOpenRate: 0.0014960148992504,\r\n OpenEngagementRate: 0.805952453171387,\r\n PercentRead: 0.796630414072794,\r\n ClickRate: 0.0663410904328954,\r\n EffectiveRate: 0.103018417836148\r\n },\r\n {\r\n SentYear: 2023,\r\n Industry: \"Materials\",\r\n OpenRate: 0.671192759059654,\r\n IgnoreRate: 0.116328188803789,\r\n AudienceAttentionRate: 0.554864570255866,\r\n SkimmedRate: 0.10814182446918,\r\n ReadRate: 0.446963854984541,\r\n EngagedReadRate: 0.421735108498963,\r\n OpenAttentionRate: 0.809522999585621,\r\n LeftOpenRate: 0.0020773824949393,\r\n OpenEngagementRate: 0.865548999784473,\r\n PercentRead: 0.858063395848739,\r\n ClickRate: 0.0630542822136075,\r\n EffectiveRate: 0.0981001120580514\r\n },\r\n {\r\n SentYear: 2023,\r\n Industry: \"Communications\",\r\n OpenRate: 0.628027396389229,\r\n IgnoreRate: 0.143595922966146,\r\n AudienceAttentionRate: 0.484431473423084,\r\n SkimmedRate: 0.16629324485759,\r\n ReadRate: 0.318334513042815,\r\n EngagedReadRate: 0.286993466753558,\r\n OpenAttentionRate: 0.761914795861859,\r\n LeftOpenRate: 0.00209137041275595,\r\n OpenEngagementRate: 0.712745788991192,\r\n PercentRead: 0.701164357592996,\r\n ClickRate: 0.0594465417507692,\r\n EffectiveRate: 0.0912523870226391\r\n },\r\n {\r\n SentYear: 2023,\r\n Industry: \"Health Care\",\r\n OpenRate: 0.660590732666654,\r\n IgnoreRate: 0.0889557338239668,\r\n AudienceAttentionRate: 0.571634998842686,\r\n SkimmedRate: 0.186024226422722,\r\n ReadRate: 0.385282409654014,\r\n EngagedReadRate: 0.337730788292727,\r\n OpenAttentionRate: 0.857862130301481,\r\n LeftOpenRate: 0.00166613844361619,\r\n OpenEngagementRate: 0.759087568440596,\r\n PercentRead: 0.747023435557307,\r\n ClickRate: 0.0599991939372767,\r\n EffectiveRate: 0.0874257576544499\r\n },\r\n {\r\n SentYear: 2023,\r\n Industry: \"Industrials\",\r\n OpenRate: 0.671421776882561,\r\n IgnoreRate: 0.0788106519813635,\r\n AudienceAttentionRate: 0.592611124901196,\r\n SkimmedRate: 0.120602185522323,\r\n ReadRate: 0.472008992685557,\r\n EngagedReadRate: 0.434827778952663,\r\n OpenAttentionRate: 0.870796745164503,\r\n LeftOpenRate: 0.00175400860539372,\r\n OpenEngagementRate: 0.87136757404807,\r\n PercentRead: 0.863889152355931,\r\n ClickRate: 0.0894891656149868,\r\n EffectiveRate: 0.130249793750984\r\n },\r\n {\r\n SentYear: 2023,\r\n Industry: \"Utilities\",\r\n OpenRate: 0.701809118216228,\r\n IgnoreRate: 0.0952507291672328,\r\n AudienceAttentionRate: 0.606558389048995,\r\n SkimmedRate: 0.415983773905852,\r\n ReadRate: 0.190574615143143,\r\n EngagedReadRate: 0.157058880499595,\r\n OpenAttentionRate: 0.832709629861097,\r\n LeftOpenRate: 0.000996551956729441,\r\n OpenEngagementRate: 0.478755102155543,\r\n PercentRead: 0.425115672248583,\r\n ClickRate: 0.0832913938226494,\r\n EffectiveRate: 0.10049319538265\r\n }\r\n\r\n]\r\n\r\nexport const getBenchmarkItems = (onItemClick : {(industry: string, year : string) : void}, primaryIndustry, secondaryIndustry) : IContextualMenuItem[] => {\r\n const uniqueIndustry = [...new Set(BenchmarkData.map(item => item.Industry).filter((i, idx) =>\r\n {\r\n if (idx === 0) return true;\r\n\r\n return i.toUpperCase() === primaryIndustry.toUpperCase() || i.toUpperCase() === secondaryIndustry.toUpperCase()\r\n }))];\r\n let items : IContextualMenuItem[] = []\r\n items.push({\r\n key: 'Industry',\r\n text: 'PoliteMail Industry Benchmarks',\r\n itemType: ContextualMenuItemType.Header,\r\n });\r\n\r\n uniqueIndustry.slice(1).forEach(industry => {\r\n items.push({\r\n key: industry,\r\n text: industry,\r\n subMenuProps: {\r\n items: [\r\n {\r\n key: 'sentYear',\r\n text: 'Year',\r\n itemType: ContextualMenuItemType.Header,\r\n },\r\n {\r\n key: \"2019\",\r\n text: \"2019\",\r\n },\r\n {\r\n key: \"2020\",\r\n text: \"2020\",\r\n },\r\n {\r\n key: \"2021\",\r\n text: \"2021\",\r\n },\r\n {\r\n key: \"2022\",\r\n text: \"2022\",\r\n },\r\n {\r\n key: \"2023\",\r\n text: \"2023\",\r\n },\r\n ],\r\n onItemClick: (ev, it) => {\r\n onItemClick(industry, it.key)\r\n }\r\n }\r\n })\r\n })\r\n return items;\r\n}","import * as React from \"react\";\r\n\r\nconst SvgHelp = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M30.73 9.78a15.75 15.75 0 00-8.51-8.51 15.87 15.87 0 00-12.44 0 15.75 15.75 0 00-8.51 8.51 15.87 15.87 0 000 12.44 15.75 15.75 0 008.51 8.51 15.87 15.87 0 0012.44 0 15.75 15.75 0 008.51-8.51 15.87 15.87 0 000-12.44z\"\r\n fill=\"#808488\"\r\n />\r\n <path\r\n d=\"M26 26a14.07 14.07 0 01-6.24 3.63 14.31 14.31 0 01-7.5 0 14.25 14.25 0 01-8.46-6.5 14.24 14.24 0 01-1.42-10.88A13.91 13.91 0 016 6a14.18 14.18 0 0110.48-4.12 13 13 0 015 1.1 14 14 0 016.23 5.12 13.84 13.84 0 012.42 7.9A13.69 13.69 0 0126 26z\"\r\n fill=\"#fff\"\r\n />\r\n <path\r\n d=\"M10.5 12.28a5.7 5.7 0 01.62-2.55A5.24 5.24 0 0113 7.84 5.15 5.15 0 0115.81 7a5.85 5.85 0 014.08 1.31A5.73 5.73 0 0121.6 11a4.46 4.46 0 01.19 1.24 4.6 4.6 0 01-.79 2.7 5.65 5.65 0 01-.86.88l-.72.64-.91.71a5.6 5.6 0 00-1.21 1.09v1.57a1 1 0 01-.7 1 1.13 1.13 0 01-.47.09 1 1 0 01-.52-.15 1 1 0 01-.56-1v-1.19a2.73 2.73 0 01.49-1.71 7.36 7.36 0 011.41-1.35c.61-.46.95-.72 1-.77l.6-.53a5 5 0 00.61-.59 1.9 1.9 0 00.41-1.13 3.22 3.22 0 00-1.07-2.43 3 3 0 00-2.19-.81 3.75 3.75 0 00-2.91 1.11 3 3 0 00-.62 1.92 2.69 2.69 0 010 .38.93.93 0 01-.33.62 1 1 0 01-.72.32 1.24 1.24 0 01-.64-.15 1 1 0 01-.56-1v-.21zM16.14 22.78a1.35 1.35 0 011.35 1.35 1.37 1.37 0 01-1.35 1.35 1.35 1.35 0 01-1.35-1.35 1.33 1.33 0 011.35-1.35z\"\r\n fill=\"#279cd8\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgHelp;\r\n","import * as React from \"react\";\r\n\r\nconst LikeSvg = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 136.3 25.9\"\r\n enableBackground=\"new 0 0 136.3 25.9\"\r\n xmlSpace=\"preserve\"\r\n {...props}\r\n >\r\n <style type=\"text/css\">\r\n {`.like-0{display:none;}\r\n .like-1{display:inline;fill:none;}\r\n .like-2{display:inline;}\r\n .like-3{fill:#818589;}\r\n .like-4{fill:#82868A;}\r\n .like-5{fill:#808488;}\r\n .like-6{fill:#7FC242;}\r\n .like-7{fill:#279CD8;}`}\r\n </style>\r\n <g id=\"Layer_1\">\r\n <g id=\"Click\" className=\"like-0\">\r\n <rect x=\"2.3\" y=\"-3\" className=\"like-1\" width=\"32\" height=\"32\" />\r\n <g className=\"like-2\">\r\n <path\r\n className=\"like-3\"\r\n d=\"M17.6,23.2 M17.6,25.4 M11.6,21.5 M11.6,23.8 M33.6,12.7 M31.3,12.7 M2.3,22.9V9.2c0,0,0.7,0,1.9,0\r\n\t\t\t\tc1.2,0,2,0,2.2-0.1C6.6,9,7.1,8.6,7.9,8c0.9-0.6,1.7-1.2,2.4-1.9c1.8-1.4,3.4-3.1,5-5c0.7-0.7,1.7-0.9,3-0.6c1.1,0.4,1.8,1.1,2,2\r\n\t\t\t\tc0.4,1.4,0.1,3-0.8,4.7l4.9,0.1c4.4,0,7,0,7.8,0c0.5,0,0.9,0.3,1.3,0.9c0.4,0.6,0.6,1.3,0.6,2c0,0.8-0.2,1.5-0.6,2.2\r\n\t\t\t\ts-0.9,1.1-1.4,1.1l-6.9,0c0.6,0.7,0.4,2-0.5,3.8c-0.1,0.2-0.2,0.5-0.2,0.7s-0.3,0.8-0.8,1.8c-0.5,1-1.1,2-1.7,2.9\r\n\t\t\t\tc-0.6,1-1.2,1.6-1.6,1.9c-0.2,0.1-0.3,0.2-0.1,0.2h-7.3c-1.8,0-3.6-0.4-5.3-1.1c-0.3-0.1-0.8-0.3-1.3-0.4\r\n\t\t\t\tc-0.5-0.2-0.8-0.2-0.9-0.3c-0.5-0.2-1-0.2-1.3-0.2L2.3,22.9L2.3,22.9z M23.4,11.8l2,0c2,0,4,0,5.9,0c0.2,0,0.5-0.2,0.7-0.6\r\n\t\t\t\tc0.2-0.4,0.3-0.7,0.3-1c0-0.6-0.3-0.9-0.8-1.1l-7.5,0l-0.6,0c-3.6,0-5.6,0-6.3,0c-0.4,0-0.3-0.7,0.5-2.2c0.7-1.5,1.1-2.3,1.2-2.5\r\n\t\t\t\tc0.1-0.2,0.1-0.4,0.1-0.7c-0.1-0.7-0.3-1.2-0.6-1.4c-0.8-0.6-1.8-0.1-3.2,1.7c-0.4,0.5-1,1.1-1.6,1.7c-0.6,0.6-1.2,1-1.6,1.4\r\n\t\t\t\tl-0.7,0.5c-0.3,0.2-0.6,0.6-1.1,1c-0.5,0.4-1,0.9-1.5,1.3c-0.5,0.5-1,0.8-1.3,0.9c-0.3,0.1-0.7,0.2-1.1,0.2s-0.8,0-1.2,0\r\n\t\t\t\tc-0.4,0-0.7,0-0.8,0l0,9.8l0.6,0c0.6,0,1,0,1.2,0.1c0.3,0.1,0.6,0.2,1,0.5c1.5,0.9,3.4,1.4,5.7,1.4l6,0c0.1,0,0.3,0,0.5,0\r\n\t\t\t\tc0.2-0.1,0.6-0.4,1.1-1c0.5-0.6,0.9-1.3,1.3-2c0.4-0.7,0.6-1.2,0.6-1.5c0-0.3,0.1-0.6,0.3-0.9c0.2-0.3,0.4-0.7,0.7-1\r\n\t\t\t\tc0.3-0.4,0.4-0.6,0.5-0.9c0.3-0.8,0.3-1.4,0-1.8c-0.4-0.6-1.5-1.1-3.3-1.6c-0.5-0.1-0.7-0.2-0.7-0.3\r\n\t\t\t\tC19.7,11.8,20.9,11.8,23.4,11.8L23.4,11.8z\"\r\n />\r\n </g>\r\n </g>\r\n <g>\r\n <path\r\n className=\"like-4\"\r\n d=\"M60.9,9l-0.4,1.7h-4.1l-1,4.7h4.4L59.4,17h-4.3l-1.4,6.2h-2l1.3-6.2h-3.9l-1.3,6.2h-2l1.3-6.2h-4.1l0.3-1.7\r\n\t\t\th4.1l1-4.7h-4.3L44.6,9h4.3l1.3-6.3h2L50.9,9h3.9l1.3-6.3h1.9L56.8,9H60.9z M54.5,10.7h-3.9l-1,4.7h4L54.5,10.7z\"\r\n />\r\n <path\r\n className=\"like-4\"\r\n d=\"M79.8,9l-0.4,1.7h-4.1l-1,4.7h4.4L78.3,17h-4.3l-1.4,6.2h-2l1.3-6.2h-3.9l-1.3,6.2h-2l1.3-6.2h-4.1l0.3-1.7\r\n\t\t\th4.1l1-4.7h-4.3L63.5,9h4.3l1.3-6.3h2L69.8,9h3.9l1.3-6.3H77L75.7,9H79.8z M73.4,10.7h-3.9l-1,4.7h4L73.4,10.7z\"\r\n />\r\n <path\r\n className=\"like-4\"\r\n d=\"M98.7,9l-0.4,1.7h-4.1l-1,4.7h4.4L97.3,17H93l-1.4,6.2h-2L91,17h-3.9l-1.3,6.2h-2l1.3-6.2H81l0.3-1.7h4.1\r\n\t\t\tl1-4.7h-4.3L82.4,9h4.3l1.3-6.3h2L88.7,9h3.9L94,2.7h1.9L94.6,9H98.7z M92.3,10.7h-3.9l-1,4.7h4L92.3,10.7z\"\r\n />\r\n </g>\r\n <g id=\"Comment\" className=\"like-0\">\r\n <rect x=\"109.7\" y=\"0.5\" className=\"like-1\" width=\"24.4\" height=\"24.4\" />\r\n <g className=\"like-2\">\r\n <path\r\n className=\"like-3\"\r\n d=\"M134.2,0.5v18.3h-15.7l-5.7,6.2v-6.2h-3.1V0.5H134.2L134.2,0.5z M132.6,2.1h-21.4v14.9h3.1v3.8l3.5-3.8h14.8\r\n\t\t\t\tV2.1L132.6,2.1z\"\r\n />\r\n </g>\r\n </g>\r\n </g>\r\n <g id=\"Layer_2\" className=\"like-0\">\r\n <g id=\"EmailOpen_00000085244059627521621460000006506145458320162229_\" className=\"like-2\">\r\n <path\r\n className=\"like-5\"\r\n d=\"M28.3,8.2c-0.3-0.3-0.7-0.6-1.2-0.9c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0-0.1,0-0.1-0.1\r\n\t\t\tc-0.1-0.1-0.2-0.1-0.3-0.2l-0.3-0.2l-2.1,2.1v4.8l-7.7,5.2l-7.6-5.1V6H20l2.1-2.1l-4.9-3.3c-0.2-0.1-0.4-0.2-0.7-0.2\r\n\t\t\tc-0.2,0-0.3,0.1-0.5,0.2l-10,6.6c-0.6,0.4-1,0.7-1.2,1c0,0-0.1,0.1-0.1,0.1c-0.2,0.3-0.4,0.6-0.4,1v14.2c0,0.4,0.1,0.7,0.4,1\r\n\t\t\tc0.3,0.3,0.6,0.4,0.9,0.4h21.8c0.4,0,0.7-0.1,0.9-0.4c0.3-0.3,0.4-0.6,0.4-1l0-13.3V9.2C28.7,8.8,28.6,8.5,28.3,8.2z M5.8,23.3\r\n\t\t\tl0-9.7l10,6.7c0.2,0.1,0.4,0.2,0.7,0.2c0.2,0,0.3-0.1,0.5-0.2l10.1-6.8l0,9.8L5.8,23.3z\"\r\n />\r\n <path\r\n className=\"like-6\"\r\n d=\"M12.5,8l3.9,3.9l8-7.9c0.2-0.1,0.3-0.2,0.6-0.2c0.2,0,0.4,0.1,0.6,0.2c0.2,0.2,0.2,0.3,0.2,0.5\r\n\t\t\tc0,0.2-0.1,0.4-0.2,0.5L17,13.5c0,0,0,0-0.1,0.1c0,0-0.1,0-0.1,0.1c-0.1,0.1-0.2,0.1-0.4,0.1c-0.2,0-0.4-0.1-0.5-0.3l-4.4-4.3\r\n\t\t\tc-0.2-0.1-0.2-0.3-0.2-0.5c0-0.2,0.1-0.4,0.2-0.5c0.2-0.2,0.3-0.2,0.6-0.2C12.2,7.8,12.4,7.9,12.5,8L12.5,8z\"\r\n />\r\n </g>\r\n </g>\r\n <g id=\"Layer_3\" className=\"like-0\">\r\n <g id=\"Time\" className=\"like-2\">\r\n <path\r\n className=\"like-5\"\r\n d=\"M16.5,0.8c1.1,0,2.2,0.1,3.2,0.4c1.1,0.3,2,0.7,2.9,1.2c0.9,0.5,1.7,1.2,2.5,1.9C25.9,5.1,26.5,6,27,6.9\r\n\t\t\tc0.5,0.9,0.9,1.9,1.2,2.9c0.3,1.1,0.4,2.1,0.4,3.2s-0.1,2.2-0.4,3.2c-0.3,1.1-0.7,2-1.2,2.9c-0.5,0.9-1.2,1.7-1.9,2.5\r\n\t\t\tc-0.8,0.8-1.6,1.4-2.5,1.9c-0.9,0.5-1.9,0.9-2.9,1.2c-1.1,0.3-2.1,0.4-3.2,0.4c-1.1,0-2.2-0.1-3.2-0.4c-1.1-0.3-2-0.7-2.9-1.2\r\n\t\t\tc-0.9-0.5-1.7-1.2-2.5-1.9c-0.8-0.8-1.4-1.6-1.9-2.5c-0.5-0.9-0.9-1.9-1.2-2.9c-0.3-1.1-0.4-2.1-0.4-3.2s0.1-2.2,0.4-3.2\r\n\t\t\tc0.3-1.1,0.7-2,1.2-2.9C6.4,6,7.1,5.1,7.8,4.4C8.6,3.6,9.4,3,10.3,2.5c0.9-0.5,1.9-0.9,2.9-1.2C14.3,1,15.4,0.8,16.5,0.8L16.5,0.8\r\n\t\t\tz M16.4,23.5c1.4,0,2.8-0.3,4.1-0.8c1.3-0.6,2.4-1.3,3.3-2.2c0.9-0.9,1.7-2.1,2.2-3.3c0.6-1.3,0.8-2.7,0.8-4.1\r\n\t\t\tc0-1.4-0.3-2.8-0.8-4.1c-0.6-1.3-1.3-2.4-2.2-3.3s-2.1-1.7-3.3-2.2c-1.3-0.6-2.7-0.8-4.1-0.8c-1.4,0-2.8,0.3-4.1,0.8\r\n\t\t\tC11,3.9,9.9,4.6,9,5.5C8.1,6.5,7.3,7.6,6.8,8.9c-0.6,1.3-0.8,2.7-0.8,4.1c0,1.4,0.3,2.8,0.8,4.1s1.3,2.4,2.2,3.3\r\n\t\t\tc0.9,0.9,2.1,1.7,3.3,2.2C13.6,23.2,15,23.5,16.4,23.5L16.4,23.5z M23.7,16.2c0.2,0.1,0.3,0.3,0.4,0.5c0.1,0.2,0,0.4-0.1,0.7\r\n\t\t\tc-0.1,0.2-0.3,0.3-0.5,0.4s-0.4,0-0.7-0.1l-6.9-4c-0.3-0.2-0.5-0.5-0.4-0.9V6.1c0-0.2,0.1-0.4,0.3-0.6c0.2-0.2,0.4-0.3,0.6-0.3\r\n\t\t\tc0.2,0,0.4,0.1,0.6,0.3c0.2,0.2,0.3,0.4,0.3,0.6v6.4L23.7,16.2L23.7,16.2z\"\r\n />\r\n </g>\r\n </g>\r\n <g id=\"Layer_4\">\r\n <path\r\n className=\"like-7\"\r\n d=\"M31.4,11.2c-0.1-0.2-0.2-0.4-0.4-0.6c-0.1-0.2-0.3-0.4-0.5-0.5S30,9.8,29.8,9.8c-0.3-0.1-0.5-0.1-0.8-0.1h-6\r\n\t\tc0-0.5,0.1-0.9,0.3-1.3c0.1-0.4,0.3-0.8,0.5-1.1C24,6.6,24.2,6,24.4,5.4c0.2-0.6,0.3-1.4,0.3-2.2c0-0.3-0.1-0.6-0.2-0.9\r\n\t\tc-0.1-0.3-0.3-0.5-0.5-0.7s-0.4-0.3-0.7-0.5C23.1,1.1,22.8,1,22.5,1c-0.4,0-0.7,0.1-0.9,0.2S21.2,1.5,21,1.7l-8.4,8.4\r\n\t\tc-0.4,0.4-0.8,0.7-1.3,0.9c-0.5,0.2-1.1,0.4-1.8,0.4h-1V9.7H4v1.7h0v12.1h0v1.7h4.6v-1.7H10c0.8,0,1.5,0.1,2.1,0.2\r\n\t\tc0.6,0.1,1.3,0.3,1.8,0.6c1.5,0.6,3,0.9,4.6,0.9h6.9c0.3,0,0.6,0,0.9-0.1c0.3-0.1,0.5-0.2,0.7-0.4c0.2-0.2,0.4-0.3,0.5-0.6\r\n\t\tc0.1-0.2,0.3-0.4,0.3-0.7L31.4,13c0.1-0.3,0.1-0.5,0.1-0.8C31.6,11.9,31.5,11.5,31.4,11.2z M29.7,12.7c-0.5,1.6-1,3.1-1.5,4.7\r\n\t\tc-0.5,1.6-1.1,3.1-1.6,4.7c-0.1,0.2-0.1,0.3-0.1,0.5c0,0.2-0.1,0.3-0.2,0.4c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.1-0.5,0.1\r\n\t\th-6.9c-1.4,0-2.7-0.3-4-0.8c-1.5-0.6-3-0.9-4.6-0.9H8.6v-8.6h1c0.5,0,0.9,0,1.3-0.1c0.4-0.1,0.8-0.2,1.2-0.4c0.4-0.2,0.7-0.3,1-0.6\r\n\t\tc0.3-0.2,0.6-0.4,0.8-0.7l8.4-8.4l0.1-0.1c0,0,0.1-0.1,0.1-0.1c0.1,0,0.2,0,0.3,0.1c0.1,0.1,0.1,0.2,0.1,0.3c0,0.7-0.1,1.2-0.2,1.8\r\n\t\tc-0.1,0.5-0.3,1-0.6,1.5c-0.3,0.7-0.6,1.4-0.7,2.2c-0.2,0.8-0.2,1.7-0.2,2.7H29c0.2,0,0.4,0.1,0.6,0.3c0.2,0.2,0.3,0.4,0.3,0.6\r\n\t\tC29.8,12.3,29.8,12.4,29.7,12.7z\"\r\n />\r\n </g>\r\n </svg>\r\n);\r\n\r\nexport default LikeSvg;\r\n","import * as React from \"react\";\r\nexport interface ISvgPoliteMailProps extends React.SVGProps<SVGSVGElement> {\r\n fillPrimary?: string, \r\n fillSecondary?: string\r\n}\r\n\r\nconst SvgPoliteMail = (props: ISvgPoliteMailProps) => (\r\n <svg viewBox=\"0 0 32 32\" width={props.width} height={props.height}>\r\n <path\r\n d=\"M30.93 1.16c.43-.26.74-.29.92-.09s.2.61 0 1.26l-4.53 17.18c0 .15-.07.24-.08.27s0 .11 0 .21-.07.2-.1.28A4.9 4.9 0 0125 21.69 12.17 12.17 0 0118.73 23a5.88 5.88 0 01-1.8-.37l-1.29-.58-1.12-.5-1.17-.49c-.49-.2-.85-.33-1.1-.41l-1-.25a4.8 4.8 0 00-1-.16h-.88A9.38 9.38 0 007 20.7a12.47 12.47 0 00-3.18 1.49l-1.53 9.63c0 .12-.08.18-.19.18h-2c-.05 0-.1-.09-.1-.19l3.81-29c0-.23.12-.34.27-.34h2.71c.15 0 .2.11.17.34l-.06.38A17.76 17.76 0 0113.28.23a7.71 7.71 0 013.57 0c1 .27 1.93.54 2.68.8s1.37.5 1.83.71.94.39 1.43.58a12.89 12.89 0 001.32.42 7.22 7.22 0 003.27-.17 13.18 13.18 0 003.55-1.37z\"\r\n fill={ props.fillPrimary ? props.fillPrimary : \"#279cd8\"}\r\n />\r\n <path\r\n d=\"M7.12 7.61l-1.49 9.47c0 .1 0 .21-.06.35s0 .18.1.15.24-.19.41-.44l.47-.53a14.57 14.57 0 013.19-2.29 24.42 24.42 0 004-2.6c.38-.34.44-.67.18-1l-.6-.68a9.18 9.18 0 00-4-2.36 5.4 5.4 0 00-1.05-.23c-.38-.05-.62-.08-.73-.11a.31.31 0 00-.41.24zM23.41 19.17a.45.45 0 00.25-.24c.06-.12.05-.2 0-.26a13.36 13.36 0 01-3.9-5.67c-.1-.25-.31-.28-.64-.08s-.75.46-1.27.78a6.08 6.08 0 01-1.06.59c-.5.18-.82.09-1-.25a8.2 8.2 0 00-.68-1.29c-.15-.13-.28-.14-.4 0a23.85 23.85 0 01-4.06 2.64 17.08 17.08 0 00-4.34 3.19c-.13.15-.18.26-.14.34s.29 0 .73-.2a7.55 7.55 0 011.82-.57c.78-.15 1.34-.25 1.69-.29a5.09 5.09 0 011.1 0c.37 0 .7.09 1 .14a7.39 7.39 0 011.08.33c.61.24 1.24.5 1.89.79l1.15.51c1.74.79 4 .64 6.79-.43zM28 8.07c.09-.3.12-.45.09-.46s-.08 0-.15.11l-.13.14c-.07.07-.41.34-1 .83A18.18 18.18 0 0122.73 11c-.5.21-1 .46-1.6.75q-.37.21-.18.75c.13.36.33.81.59 1.35a13.54 13.54 0 001.27 2 13 13 0 001.66 1.87c.52.46.86.39 1-.21l.14-.4 2.39-9zM28.39 5a.5.5 0 00.15-.49c-.05-.16-.18-.2-.39-.13a9.44 9.44 0 01-4.66.62 11.67 11.67 0 01-2.18-.74A16.33 16.33 0 0016 2.65a7.7 7.7 0 00-2.61.35c-.73.24-1.27.44-1.61.57s-.77.35-1.29.62-1.25.68-2 1.12c-.29.17-.3.27 0 .31h.29a8.23 8.23 0 013.52 1.25 10.2 10.2 0 012.21 1.86 11.53 11.53 0 012 2.84 1.53 1.53 0 00.15.27q.22.27.78-.09a30.4 30.4 0 014-2.25c1-.43 1.75-.75 2.15-.95s.91-.47 1.5-.82A12.56 12.56 0 0028.39 5z\"\r\n fill={ props.fillSecondary ? props.fillSecondary : \"#fff\"}\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgPoliteMail;\r\n","import * as React from \"react\";\r\n\r\nconst SvgRecipientCount = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 31.8\" {...props}>\r\n <path\r\n d=\"M22.53 21.84a5.86 5.86 0 01-2.92-.76 5.57 5.57 0 01-2.12-2 5.52 5.52 0 010-5.66 5.72 5.72 0 012.12-2 5.5 5.5 0 012.72-.75 5.93 5.93 0 014.31 1.65 5.3 5.3 0 011.71 4 5.38 5.38 0 01-.78 2.68 5.64 5.64 0 01-2.12 2 5.91 5.91 0 01-2.92.76z\"\r\n fill=\"#808488\"\r\n />\r\n <path\r\n d=\"M32 28.83v.07c0 .48-.57 1-1.71 1.49a18.07 18.07 0 01-7.49 1.41 20.58 20.58 0 01-6.86-.91c-1.66-.61-2.63-1.18-2.9-1.71v-.16a.67.67 0 01-.06-.27 3 3 0 010-.49c0-.21 0-.55.05-1a5.87 5.87 0 01.35-1.73 4.64 4.64 0 011.95-2.66 8.54 8.54 0 013.15-1.11A7.36 7.36 0 0022.61 23a7.43 7.43 0 004.15-1.24 6.14 6.14 0 014.08 2 6.49 6.49 0 011.16 4v1z\"\r\n fill=\"#808488\"\r\n />\r\n <path\r\n fill=\"#7fc242\"\r\n d=\"M8.87 8.13v2H0V8.14l3.5-2.96L0 1.83V0h8.75v1.99H2.93l2.95 2.88-3.7 3.26h6.69z\"\r\n />\r\n <path\r\n d=\"M4.43 16.85a4 4 0 011.31-3 4.39 4.39 0 013.15-1.24A4.39 4.39 0 0112 13.85a4.09 4.09 0 010 6 4.39 4.39 0 01-3.15 1.24 4.55 4.55 0 01-2.24-.57A4.28 4.28 0 015 19a4 4 0 01-.6-2.13zM13.94 21.9q-2.88 1.92-3 6.18v.78c-.68.07-1.57.11-2.67.11a13.85 13.85 0 01-3.27-.4c-1.85-.47-2.94-1-3.28-1.57a1 1 0 01-.09-.56v-.77a4.79 4.79 0 01.16-1.05q.72-2.89 4.42-3.28a5.85 5.85 0 005.38 0 6.92 6.92 0 012.31.55z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgRecipientCount;\r\n","import * as React from \"react\";\r\n\r\nconst SvgSearch = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M31.78 30l-9.94-10.15a11.78 11.78 0 002-3.74 12 12 0 000-7.73 12.19 12.19 0 00-4.37-6A11.63 11.63 0 0012.28 0 11.75 11.75 0 005 2.37a12.25 12.25 0 00-4.37 6A12.28 12.28 0 005 22.12a11.63 11.63 0 007.21 2.37 11.72 11.72 0 007.27-2.37l.52-.42 9.91 10.07a.76.76 0 001.08 0l.76-.75a.76.76 0 00.03-1.02zM19.1 19.18a9.76 9.76 0 01-3.1 2.07 9.42 9.42 0 01-3.75.76 9.46 9.46 0 01-3.76-.76 9.53 9.53 0 01-5.14-5.17 9.61 9.61 0 010-7.54 9.78 9.78 0 012.08-3.09 9.6 9.6 0 013.08-2.07 9.54 9.54 0 017.51 0 9.74 9.74 0 015.91 8.93 9.49 9.49 0 01-.77 3.77 9.66 9.66 0 01-2.06 3.1z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgSearch;\r\n","import * as React from \"react\";\r\n\r\nconst SvgShareBlue = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 31.18\" {...props}>\r\n <path\r\n d=\"M21.12 1.35A4 4 0 0124.2 0a4.11 4.11 0 012.08.56 4 4 0 011.95 2.54 4 4 0 01-.42 3.17 4 4 0 01-2.19 1.84 4.67 4.67 0 01-1.62.25 4 4 0 01-2-.62 3.88 3.88 0 01-1.6-1.82 4.08 4.08 0 01-.31-2.5c0-.06-.05-.13-.08-.21a12.59 12.59 0 00-2.59-.27 12.63 12.63 0 00-9.17 4 1 1 0 01-.73.33 1 1 0 01-1-1 1 1 0 01.27-.74A14.57 14.57 0 0117.36.88a15.13 15.13 0 013.76.47zm-7.67 26a1 1 0 01.59.51.89.89 0 01.1.67 1.73 1.73 0 01-.2.41.8.8 0 01-.23.22.87.87 0 01-.51.19 1.21 1.21 0 01-.41-.05 14.53 14.53 0 01-9.45-10A4.06 4.06 0 011 17.8 4.22 4.22 0 010 15a3.89 3.89 0 011.23-2.8A4 4 0 014.18 11a4 4 0 013 1.23A3.8 3.8 0 018.35 15a4.33 4.33 0 01-.77 2.61 4.07 4.07 0 01-2 1.52l-.1.12a12.44 12.44 0 008 8.13zM32 15.46a14.62 14.62 0 01-4.31 10.34 4.07 4.07 0 01-.12 2.73 3.79 3.79 0 01-1.64 2 4.1 4.1 0 01-2.05.65 4.67 4.67 0 01-1.62-.25A4.21 4.21 0 0120 29a3.91 3.91 0 01-.36-3.08 4 4 0 011.94-2.54 4.56 4.56 0 012.3-.56 3.8 3.8 0 012.5 1l.27.06A12.7 12.7 0 0029.09 20a12.48 12.48 0 00.85-4.53v-.87a1 1 0 01.25-.76 1 1 0 01.7-.36 1 1 0 01.75.25 1 1 0 01.36.76v1z\"\r\n fill=\"#279cd8\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgShareBlue;\r\n","import * as React from \"react\";\r\n\r\nconst SvgStarGold = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M32 12.9a.45.45 0 00-.39-.51l-10.43-2L16.42.25a.5.5 0 00-.87 0l-4.73 10.11-10.43 2a.45.45 0 00-.39.54.52.52 0 00.15.38l7.54 7-2.86 11.21a.5.5 0 00.15.37.46.46 0 00.31.14.54.54 0 00.22 0L16 26.88 26.46 32a.62.62 0 00.24 0 .41.41 0 00.31-.16.54.54 0 00.13-.35v-.16l-2.83-11 7.54-7a.52.52 0 00.15-.43z\"\r\n fill=\"#f9bf16\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgStarGold;\r\n","import * as React from \"react\";\r\n\r\nconst SvgStarSolid = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M32 12.9a.45.45 0 00-.39-.51l-10.43-2L16.42.25a.5.5 0 00-.87 0l-4.73 10.11-10.43 2a.45.45 0 00-.39.54.52.52 0 00.15.38l7.54 7-2.86 11.21a.5.5 0 00.15.37.46.46 0 00.31.14.54.54 0 00.22 0L16 26.88 26.46 32a.62.62 0 00.24 0 .41.41 0 00.31-.16.54.54 0 00.13-.35v-.16l-2.83-11 7.54-7a.52.52 0 00.15-.43z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgStarSolid;\r\n","import * as React from \"react\";\r\n\r\nconst SvgTrash = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32.01\" {...props}>\r\n <path\r\n d=\"M19 0a2 2 0 01.79.15 2.09 2.09 0 01.64.42 1.93 1.93 0 01.42.63A2.07 2.07 0 0121 2v2h8v2h-2v23a2.74 2.74 0 01-.54 1.74 3.26 3.26 0 01-1.29 1A3.09 3.09 0 0124 32H8a2.79 2.79 0 01-1.75-.54 3.15 3.15 0 01-1-1.29A2.84 2.84 0 015 29V6H3V4h8V2a2.07 2.07 0 01.15-.8 1.66 1.66 0 01.42-.63 1.93 1.93 0 01.63-.42A2.07 2.07 0 0113 0zm0 4V2h-6v2zm5 26a1 1 0 00.7-.3.94.94 0 00.3-.7V6H7v23a1 1 0 001 1zm-13-4V10h2v16zm4 0V10h2v16zm4 0V10h2v16z\"\r\n fill=\"#808488\"\r\n />\r\n <path fill=\"none\" d=\"M0 .01h32v32H0z\" />\r\n </svg>\r\n);\r\n\r\nexport default SvgTrash;\r\n","import React from 'react';\r\nimport { ISvgProps } from \"../../../../src/Definitions/ISvgProps\";\r\n\r\nexport const WarningIcon: React.FC<ISvgProps> = (props) => {\r\n return(\r\n \r\n<svg version=\"1.1\" id=\"Layer_1\" x=\"0px\" y=\"0px\"\r\n\t viewBox=\"0 0 32 28\" \r\n style={props.style}\r\n height={props.height}\r\n width={props.width}\r\n fill={props.fill}\r\n >\r\n<g>\r\n\t<path style={{fill: props.fill ? props.fill : \"#FAA719\"}} d=\"M31.6,24.9c0.3,0.5,0.4,0.9,0.4,1.4c0,0.5-0.2,0.9-0.6,1.2c-0.4,0.3-0.9,0.5-1.6,0.5H2.1\r\n\t\tc-0.7,0-1.2-0.2-1.6-0.5C0.2,27.2,0,26.8,0,26.4c0-0.5,0.1-0.9,0.4-1.4L14.2,1.3C14.7,0.4,15.3,0,16,0c0.7,0,1.3,0.4,1.8,1.3\r\n\t\tL31.6,24.9L31.6,24.9z M17.8,24.5l0-3.5h-3.7l0,3.5H17.8L17.8,24.5z M17.8,18.7L18,5.7h-4l0.2,12.9H17.8L17.8,18.7z\"/>\r\n</g>\r\n</svg>\r\n\r\n )\r\n}","import * as React from \"react\";\r\n\r\nconst SvgAdd = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M23.5 14.88a.93.93 0 01.7.29 1 1 0 010 1.41.94.94 0 01-.7.3H17v6.62a1 1 0 01-2 0v-6.62H8.5a.94.94 0 01-.7-.3 1 1 0 010-1.41.93.93 0 01.7-.29H15V8.5a1 1 0 012 0v6.38zM16 0a16.14 16.14 0 018.08 2.19A16.06 16.06 0 0127.3 4.7a15.92 15.92 0 014.12 15.55 15.64 15.64 0 01-4.12 7.05 15.92 15.92 0 01-15.55 4.12 15.64 15.64 0 01-7-4.12A15.92 15.92 0 01.58 11.75a15.64 15.64 0 014.12-7 16.06 16.06 0 013.22-2.56A16.14 16.14 0 0116 0zm0 30.13a14.23 14.23 0 007.13-1.93 14.21 14.21 0 005.07-5.07 14.1 14.1 0 001.42-10.88 14 14 0 00-1.42-3.38 14.21 14.21 0 00-5.07-5.07 14.24 14.24 0 00-10.88-1.42A14 14 0 008.87 3.8 14.21 14.21 0 003.8 8.87a14.24 14.24 0 00-1.42 10.88 14 14 0 001.42 3.38 14.21 14.21 0 005.07 5.07A14.23 14.23 0 0016 30.13z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgAdd;\r\n","import * as React from \"react\";\r\n\r\nconst SvgCheckGreen = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path fill=\"none\" d=\"M0 0h32v32H0z\" />\r\n <path\r\n d=\"M31 8.27a1 1 0 01.29.71 1 1 0 01-.29.7L12.89 27.59a1 1 0 01-.77.39 1 1 0 01-.75-.29l-9.76-9.63a1 1 0 010-1.41 1 1 0 01.72-.29 1 1 0 01.71.29l9 8.92L29.6 8.27a1 1 0 01.71-.27 1 1 0 01.72.29z\"\r\n fill=\"#7fc242\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgCheckGreen;\r\n","import * as React from \"react\";\r\n\r\nconst SvgContent = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32.05 32\" {...props}>\r\n <path fill=\"none\" d=\"M0 0h32v32H0z\" />\r\n <path fill=\"#fff\" d=\"M29.98 14.66l-2.3 2.29-5.62-5.66 2.34-2.33\" />\r\n <path fill=\"#fff\" d=\"M24.61 28.01l-22.58.04.04-25.11 22.53.05.01 25.02z\" />\r\n <path\r\n d=\"M7.2 12.36h10L6.52 23.5a1 1 0 01-.34-.77v-9.32a1 1 0 01.3-.74 1 1 0 01.72-.31zM7.2 8.3c-.68 0-1-.23-1-.68v-.7c0-.47.35-.7 1-.7h12.31c.67 0 1 .24 1 .72v.7a.51.51 0 01-.26.52 1.65 1.65 0 01-.75.13L7.2 8.3zM24.61 27.94v-5.13l2.05-2.13V28a2 2 0 01-.6 1.48 2 2 0 01-1.45.62h-7.16l2.06-2.1h5.1z\"\r\n fill=\"#808488\"\r\n />\r\n <path\r\n d=\"M2.07 2.94L2.09 28h2.32l-.5 2H2.1a2 2 0 01-1.45-.6 1.93 1.93 0 01-.6-1.4V3a2 2 0 01.6-1.44A2 2 0 012.1 1h22.53a2 2 0 011.45.6 1.93 1.93 0 01.6 1.4l-.06 2.15a.84.84 0 00-.63.13l-.31.29c-.23.25-.59.59-1.09 1V3L2.07 2.94z\"\r\n fill=\"#808488\"\r\n />\r\n <path\r\n d=\"M22.46 10.89L10 23.23l-3 7.19a1 1 0 00.21 1.31.89.89 0 00.88.18l7.52-3.09L28.13 16.5zM10.52 29.37l-1.06-1.05 2.66-4.39L15 26.74zM15 23.93l-1.41-1.4 8.92-8.83 1.41 1.4zM31.32 9.83a2.43 2.43 0 01.73 1.71 2.37 2.37 0 01-.67 1.73l-1.84 1.83-5.67-5.62 2-1.95A2.45 2.45 0 0127.56 7a2.49 2.49 0 011.63.74l2.13 2.1zM21.95 21.74l-4.43 2.63\"\r\n fill=\"#279cd8\"\r\n />\r\n <path fill=\"#fff\" d=\"M9.68 27.96l-.22.36 1.06 1.05 2.29-1.36-3.13-.05z\" />\r\n </svg>\r\n);\r\n\r\nexport default SvgContent;\r\n","import { getTheme } from \"@fluentui/react/lib/Styling\";\r\nimport * as React from \"react\";\r\n\r\nconst theme = getTheme();\r\nconst SvgDesktopGray66 = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 28\" {...props}>\r\n <path\r\n d=\"M0 0h32v20H0V0zm30 18V2H2v16zm-9 4v4l3 2H8l3-2v-4z\"\r\n fill=\"#83878b\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgDesktopGray66;\r\n","import * as React from \"react\"\r\n\r\nconst SvgProxyGray66 = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path d=\"M16 0C17.62 0 19.11 0.21 20.45 0.62C21.79 1.03 23 1.55 24.08 2.17C25.83 3.2 27.34 4.52 28.62 6.12C29.9 7.72 30.83 9.6 31.42 11.75C31.81 13.11 32 14.53 32 16C32 17.62 31.79 19.11 31.38 20.45C30.97 21.79 30.45 23 29.81 24.08C28.79 25.83 27.48 27.34 25.88 28.62C24.28 29.9 22.4 30.83 20.25 31.42C18.89 31.81 17.47 32 16 32C14.38 32 12.89 31.79 11.55 31.38C10.21 30.97 9 30.45 7.92 29.81C6.17 28.79 4.66 27.48 3.38 25.88C2.1 24.28 1.17 22.4 0.58 20.25C0.19 18.9 0 17.48 0 16C0 14.38 0.21 12.89 0.62 11.55C1.03 10.21 1.55 9 2.19 7.92C3.21 6.17 4.52 4.66 6.12 3.38C7.72 2.1 9.59 1.17 11.75 0.56C13.1 0.18 14.52 0 16 0ZM20.58 2.77C21.29 3.76 21.87 4.86 22.33 6.07C22.79 7.28 23.16 8.59 23.44 10H28.64C28.03 8.7 27.25 7.54 26.3 6.53C25.35 5.52 24.29 4.65 23.09 3.94C22.29 3.46 21.45 3.07 20.57 2.77H20.58ZM23.75 12C23.83 12.65 23.9 13.3 23.94 13.95C23.98 14.6 24 15.29 24 16C24 16.71 23.98 17.39 23.94 18.05C23.9 18.71 23.84 19.36 23.75 20H29.42C29.81 18.72 30 17.39 30 16C30 14.61 29.81 13.28 29.42 12H23.75ZM16 30C16.3 30 16.58 29.96 16.84 29.87C17.1 29.78 17.33 29.66 17.55 29.52C17.77 29.38 17.97 29.21 18.15 29.03C18.33 28.85 18.5 28.66 18.66 28.48C18.99 28.07 19.3 27.62 19.58 27.12C19.86 26.62 20.12 26.09 20.35 25.53C20.58 24.97 20.78 24.39 20.95 23.8C21.12 23.2 21.27 22.6 21.4 22.01H10.61C10.73 22.6 10.89 23.2 11.06 23.8C11.24 24.4 11.44 24.98 11.66 25.53C11.88 26.08 12.14 26.62 12.42 27.12C12.7 27.62 13.01 28.07 13.34 28.48C13.5 28.67 13.67 28.85 13.85 29.03C14.03 29.21 14.23 29.38 14.45 29.52C14.67 29.66 14.91 29.78 15.16 29.87C15.41 29.96 15.69 30 16 30V30ZM10.27 12C10.19 12.65 10.12 13.3 10.07 13.95C10.02 14.6 10 15.29 10 16C10 16.71 10.02 17.39 10.07 18.05C10.12 18.71 10.18 19.36 10.27 20H21.74C21.82 19.35 21.89 18.7 21.94 18.05C21.99 17.4 22.01 16.71 22.01 16C22.01 15.29 21.99 14.61 21.94 13.95C21.89 13.29 21.83 12.64 21.74 12H10.27ZM8.25 20C8.17 19.35 8.1 18.7 8.06 18.05C8.02 17.4 8 16.71 8 16C8 15.29 8.02 14.61 8.06 13.95C8.1 13.29 8.16 12.64 8.25 12H2.58C2.19 13.28 2 14.61 2 16C2 17.39 2.19 18.72 2.58 20H8.25ZM16 2C15.7 2 15.42 2.04 15.16 2.13C14.9 2.22 14.67 2.34 14.45 2.48C14.23 2.62 14.03 2.79 13.85 2.97C13.67 3.15 13.5 3.34 13.34 3.52C13.01 3.93 12.7 4.38 12.42 4.88C12.14 5.38 11.88 5.91 11.65 6.47C11.42 7.03 11.22 7.61 11.05 8.2C10.88 8.79 10.73 9.4 10.6 9.99H21.38C21.26 9.4 21.1 8.8 20.93 8.2C20.76 7.6 20.55 7.02 20.33 6.47C20.11 5.92 19.85 5.38 19.57 4.88C19.29 4.38 18.98 3.93 18.65 3.52C18.49 3.33 18.32 3.15 18.14 2.97C17.96 2.79 17.76 2.62 17.54 2.48C17.32 2.34 17.08 2.22 16.83 2.13C16.58 2.04 16.3 2 15.99 2H16ZM11.42 2.77C10.02 3.25 8.77 3.91 7.67 4.75C6.57 5.59 5.61 6.54 4.79 7.62C4.23 8.37 3.75 9.17 3.35 10.01H8.55C8.83 8.6 9.2 7.29 9.66 6.08C10.12 4.87 10.7 3.76 11.41 2.78L11.42 2.77ZM11.42 29.24C10.71 28.25 10.13 27.15 9.67 25.94C9.21 24.73 8.84 23.42 8.56 22.01H3.36C3.97 23.31 4.75 24.47 5.7 25.48C6.65 26.49 7.71 27.36 8.91 28.07C9.71 28.55 10.55 28.94 11.43 29.24H11.42ZM20.58 29.24C21.98 28.76 23.23 28.1 24.33 27.26C25.43 26.42 26.39 25.46 27.21 24.38C27.77 23.64 28.25 22.85 28.65 22.01H23.45C23.17 23.42 22.8 24.73 22.34 25.94C21.88 27.15 21.3 28.26 20.59 29.24H20.58Z\" fill=\"#808488\"/>\r\n</svg>\r\n);\r\n\r\nexport default SvgProxyGray66;","import * as React from \"react\";\r\n\r\nconst SvgDisableOpenTracking = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32.46\" {...props}>\r\n <path fill=\"#fff\" d=\"M5.91 7.37h20.46v19.64H5.91z\" />\r\n <path\r\n d=\"M24.72 18.53a8.8 8.8 0 004.6-2.2A8.83 8.83 0 0032 12v18.58a1.85 1.85 0 01-.52 1.34 1.63 1.63 0 01-1.23.54H1.73a1.59 1.59 0 01-1.22-.54A1.88 1.88 0 010 30.58V11.71a1.89 1.89 0 01.48-1.31l.08-.09A10.14 10.14 0 012.14 9l13-8.8a1.36 1.36 0 01.7-.24 1.7 1.7 0 01.94.24L19 1.7a9 9 0 00-2.8 2.39 8.77 8.77 0 00-1.61 3.32H6.07v10.31L16 24.47l8.74-5.94z\"\r\n fill=\"#808488\"\r\n />\r\n <path\r\n d=\"M16.41 9.58a6.63 6.63 0 012-4.87 6.89 6.89 0 019.73 0 6.66 6.66 0 012 4.87 6.64 6.64 0 01-2 4.87 6.89 6.89 0 01-9.73 0 6.61 6.61 0 01-2-4.87z\"\r\n fill=\"#808488\"\r\n />\r\n <path\r\n d=\"M18.41 9.58a4.7 4.7 0 011.43-3.45 4.89 4.89 0 016.91 0 4.69 4.69 0 011.42 3.45 4.87 4.87 0 01-4.88 4.88A4.67 4.67 0 0119.84 13a4.7 4.7 0 01-1.43-3.45zM2 30.43h28v-13l-13.15 9a1.36 1.36 0 01-.7.24 1.73 1.73 0 01-.94-.24L2 17.49v12.94z\"\r\n fill=\"#fff\"\r\n />\r\n <path\r\n d=\"M31 2.57a1 1 0 00.31-.75 1 1 0 00-.31-.74 1.1 1.1 0 00-.76-.31 1 1 0 00-.72.31l-14.6 14.48c-.51.5-.53 1-.07 1.41l.11.11a1.07 1.07 0 00.85.35 1.58 1.58 0 00.59-.43z\"\r\n fill=\"#f15d5f\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgDisableOpenTracking;\r\n","import * as React from \"react\";\r\n\r\nconst SvgEmail = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 23\" {...props}>\r\n <path\r\n d=\"M30.25 0a1.61 1.61 0 011.23.55A1.9 1.9 0 0132 1.91v19.18a1.9 1.9 0 01-.52 1.36 1.61 1.61 0 01-1.23.55H1.73a1.59 1.59 0 01-1.22-.55A1.93 1.93 0 010 21.09V1.91A1.93 1.93 0 01.51.55 1.6 1.6 0 011.73 0zM2 2.27v1l14 9.62 14-9.67V2.05H2v.23zm28 18.67V5.68l-13.19 9.11a1.36 1.36 0 01-.7.24 1.75 1.75 0 01-.94-.24L2 5.78v15.15z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgEmail;\r\n","import * as React from \"react\";\r\n\r\nconst SvgHappyGold = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M29.85 8A15.66 15.66 0 0132 16a15.78 15.78 0 01-2.18 8.08 15.65 15.65 0 01-5.74 5.74 16.06 16.06 0 01-16.16 0 15.65 15.65 0 01-5.74-5.74 16.06 16.06 0 010-16.16 15.65 15.65 0 015.74-5.74 16.06 16.06 0 0116.16 0A15.79 15.79 0 0129.85 8zm-10.73.76a3 3 0 00-.58 1.86 3 3 0 00.58 1.86 1.64 1.64 0 002.79 0 3 3 0 00.58-1.86 3.07 3.07 0 00-.58-1.86 1.65 1.65 0 00-2.79 0zm-9.25 0a3 3 0 00-.58 1.86 3 3 0 00.58 1.86 1.65 1.65 0 002.79 0 3 3 0 00.58-1.86 3 3 0 00-.58-1.86A1.68 1.68 0 0011.27 8a1.71 1.71 0 00-1.4.77zM24.15 21c.75-1.17.73-1.91-.07-2.24a1 1 0 00-.76-.06 3.28 3.28 0 00-.37.19 3.72 3.72 0 00-.66.82 7.64 7.64 0 01-9.86 2.44 7.64 7.64 0 01-2.75-2.43c-.07-.12-.15-.23-.22-.33-.48-.66-1-.87-1.55-.64-.82.33-.85 1.08-.1 2.25A9.89 9.89 0 0016 25.31a10 10 0 004.62-1.14A9.8 9.8 0 0024.15 21z\"\r\n fill=\"#f9bf16\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgHappyGold;\r\n","\r\nimport * as React from \"react\";\r\n\r\nconst SvgSadGold = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M29.85 8A15.66 15.66 0 0132 16a15.78 15.78 0 01-2.18 8.08 15.65 15.65 0 01-5.74 5.74 16.06 16.06 0 01-16.16 0 15.65 15.65 0 01-5.74-5.74 16.06 16.06 0 010-16.16 15.65 15.65 0 015.74-5.74 16.06 16.06 0 0116.16 0A15.79 15.79 0 0129.85 8zm-10.73.76a3 3 0 00-.58 1.86 3 3 0 00.58 1.86 1.64 1.64 0 002.79 0 3 3 0 00.58-1.86 3.07 3.07 0 00-.58-1.86 1.65 1.65 0 00-2.79 0zm-9.25 0a3 3 0 00-.58 1.86 3 3 0 00.58 1.86 1.65 1.65 0 002.79 0 3 3 0 00.58-1.86 3 3 0 00-.58-1.86A1.68 1.68 0 0011.27 8a1.71 1.71 0 00-1.4.77zM24.08 25.2c.8-.33.82-1.08.07-2.24A9.91 9.91 0 007.81 23q-1.12 1.74.09 2.25c.57.23 1.08 0 1.55-.64l.23-.33a7.68 7.68 0 012.75-2.44 7.7 7.7 0 017.11 0 7.65 7.65 0 012.74 2.44 3.44 3.44 0 00.67.82 1.45 1.45 0 00.37.19 1 1 0 00.76-.05z\"\r\n fill=\"#f9bf16\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgSadGold;\r\n","import * as React from \"react\";\r\n\r\nconst SvgHtmlExport = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 33.29\" {...props}>\r\n <path\r\n d=\"M6.84 11.61A1.89 1.89 0 015.43 11a2 2 0 01-.63-1.45V3.16l-3 2.4a1.32 1.32 0 01-.87.3.91.91 0 01-.73-.36.91.91 0 01-.2-.81 1.32 1.32 0 01.52-.79L4.92.42A1.29 1.29 0 015.86 0a1.3 1.3 0 01.9.41l4.4 3.48a1.38 1.38 0 01.5.79 1 1 0 01-.17.82 1 1 0 01-.74.35 1.33 1.33 0 01-.88-.3l-3-2.39v6.39c0 .54.38 1 1.13 1.43a6.31 6.31 0 003 .63z\"\r\n fill=\"#faa719\"\r\n />\r\n <path\r\n d=\"M11.13 12.45a.78.78 0 01.57-.24h13.37a.82.82 0 01.81.81v13.26a.82.82 0 01-.81.81H11.7a.65.65 0 01-.63-.3 1.13 1.13 0 01-.17-.51V13a.81.81 0 01.23-.57z\"\r\n fill=\"#808488\"\r\n />\r\n <path\r\n d=\"M19.49 22.79a.47.47 0 00.4.22.68.68 0 00.4-.11l3.83-2.8a.58.58 0 000-1l-3.74-2.67a.54.54 0 00-.44-.1.59.59 0 00-.25 1.05l3.09 2.2L19.6 22a.53.53 0 00-.11.84zM12.65 19.15a.57.57 0 00-.24.48.55.55 0 00.24.47l3.83 2.8a.67.67 0 00.39.11.48.48 0 00.41-.22.53.53 0 00-.11-.84L14 19.64l3.08-2.21a.59.59 0 00.14-.82.55.55 0 00-.38-.23.53.53 0 00-.44.1l-3.75 2.67z\"\r\n fill=\"#fff\"\r\n />\r\n <path\r\n d=\"M25.84 7.15a1 1 0 01-1 1h-11V6.11h11a1.06 1.06 0 011 1z\"\r\n fill=\"#808488\"\r\n />\r\n <path\r\n d=\"M31.69.31A1 1 0 0132 1v31.25a1 1 0 01-.3.74 1 1 0 01-.74.3H5.86a1 1 0 01-1-1v-18H6.9v16.92h23V2.08H13.8L11.17 0H31a1 1 0 01.73.31z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgHtmlExport;\r\n","import * as React from \"react\";\r\n\r\nconst SvgImageAdd = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path d=\"M25.65 31.87zM25.68 31.87z\" fill=\"#808488\" />\r\n <path\r\n d=\"M23.07 9.94a14.9 14.9 0 00-4.95-3.56A7.93 7.93 0 0015 5.63a10.6 10.6 0 00-6.47 2.7A12.73 12.73 0 006 11a5 5 0 00-1 2.48 5.49 5.49 0 001.83 4 14 14 0 004.29 3.12 9.85 9.85 0 003.94 1.1 8.24 8.24 0 003.34-.79 14.78 14.78 0 004.76-3.46 11 11 0 00.91-1.13 6.88 6.88 0 00.66-1.32 3.67 3.67 0 00.27-1.35 5.79 5.79 0 00-1.93-3.71z\"\r\n fill=\"#279cd8\"\r\n />\r\n <path\r\n d=\"M22.23 15.37a10.6 10.6 0 01-2 2A8.73 8.73 0 0115 19.63a7.67 7.67 0 01-3.22-1 12.31 12.31 0 01-3.41-2.51A3.82 3.82 0 017 13.55a3.24 3.24 0 01.74-1.61A11.46 11.46 0 019.61 10 12.8 12.8 0 0112 8.46a5 5 0 00-1.81 2.35L15 12.75l-.81.28c-1.62.54-3 1-4 1.29A5.09 5.09 0 0012 16.8a4.74 4.74 0 002.85.95 5.23 5.23 0 002.7-.68 5.08 5.08 0 001.87-1.87 5 5 0 00.68-2.57 4.86 4.86 0 00-1.85-3.94 13.29 13.29 0 012 1.33 9.63 9.63 0 012.46 2.71 2.17 2.17 0 01.29 1.08 3.18 3.18 0 01-.77 1.56z\"\r\n fill=\"#fff\"\r\n />\r\n <path\r\n d=\"M2 2.63V24.5h14.67v2H1a1 1 0 01-.71-.29A1 1 0 010 25.5V1.63a1 1 0 011-1h28a1 1 0 01.71.29 1 1 0 01.29.71v17h-2v-16zM25.68 19.06z\"\r\n fill=\"#808488\"\r\n />\r\n <path\r\n d=\"M26.33 19.35a.94.94 0 01.29.69v4.4H31a1 1 0 01.7.29 1 1 0 01.29.7v.07a1 1 0 01-.29.7.94.94 0 01-.7.28h-4.38v4.4a1 1 0 01-1 1 1 1 0 01-.7-.29 1 1 0 01-.28-.69v-4.4h-4.46a1 1 0 01-1-1v-.07a1 1 0 011-1h4.46V20a.94.94 0 01.28-.68 1 1 0 01.71-.29.94.94 0 01.7.28z\"\r\n fill=\"#7fc242\"\r\n />\r\n <path d=\"M25.69 19.06zM25.69 19.06z\" fill=\"#808488\" />\r\n <path fill=\"none\" d=\"M0 0h32v32H0z\" />\r\n </svg>\r\n);\r\n\r\nexport default SvgImageAdd;\r\n","import * as React from \"react\";\r\n\r\nconst SvgLike = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M31.92 16.79a5.28 5.28 0 01-.24 1.21 3.27 3.27 0 01-.3.62 2.22 2.22 0 01-.26.33c-.07.07-.11.14-.1.19a6.33 6.33 0 01-.58 3.32c-.17.32-.33.6-.49.85a2 2 0 00-.27.8 11.63 11.63 0 01-.78 2.12 32.38 32.38 0 01-1.7 3.38 8.9 8.9 0 01-1.61 2.19 2.3 2.3 0 01-1 .19h-7.43A12 12 0 0112 30.86a11.23 11.23 0 00-4.76-1.13H5.37v2H0V12.64h5.37v1.19h1.35a4.09 4.09 0 002-.48 20.43 20.43 0 002.9-3.56l.8-1.1Q17.09 3.56 19 .94c.87-1 2.09-1.21 3.65-.54 1 .43 1.48 1.4 1.48 2.91a10.16 10.16 0 01-.95 4.32q-.25.53-.33.72c-.05.13-.22.45-.49 1a6 6 0 00-.53 2.25l6.81.07a3.2 3.2 0 012.36 1.1 3.5 3.5 0 011 2.14 13.79 13.79 0 01-.08 1.88zm-2-1.21a1.43 1.43 0 00-.48-1.23 1.86 1.86 0 00-1.33-.51h-8.58a10.62 10.62 0 01.56-3.93c.14-.33.31-.7.51-1.09s.36-.71.46-1 .27-.61.49-1.08a9.49 9.49 0 00.53-1.42 7.93 7.93 0 00.22-1.82c0-.74-.3-1.12-1-1.12a1.21 1.21 0 00-.68.14 6.48 6.48 0 00-.9 1.12l-.19.36-5.82 6.81c-.1.12-.61.78-1.53 2s-1.47 1.93-1.65 2.15a2.19 2.19 0 01-.69.53 7.47 7.47 0 01-3.36.68H5.36v11.28h1.56a12.66 12.66 0 015.36 1.39 10.74 10.74 0 004.59.88l6.92.05a1 1 0 00.53-.05c.25-.06.61-.46 1.08-1.19a19.2 19.2 0 001.29-2.33 4.38 4.38 0 00.57-1.7 2 2 0 01.27-1c.2-.38.42-.78.69-1.19a4.52 4.52 0 00.49-.95 3.83 3.83 0 00.13-.64 3.53 3.53 0 000-.55v-.44-.32a.53.53 0 010-.13L29 19c.45-.37.75-1.5.91-3.39z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgLike;\r\n","import * as React from \"react\";\r\n\r\nconst SvgLinkAdd = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M8.24 14.73c0-1.16.55-1.75 1.66-1.75s1.66.59 1.66 1.75v4.61h3.25a3.34 3.34 0 012.35.94 3.87 3.87 0 011.22 2.24v3.83a6.07 6.07 0 01-.57 2.92 3.87 3.87 0 00-.33.87 4.15 4.15 0 00-.1.5V32H9.24a6.11 6.11 0 00-.92-3.42 5.08 5.08 0 00-1.5-1.41c-.49-.27-.81-.46-1-.56-1.15-1-1.73-1.82-1.73-2.58a1.62 1.62 0 01.33-1 1.42 1.42 0 011.25-.55 5.23 5.23 0 012.23.93 2.89 2.89 0 01.3.19v-8.9zM6 6.74L4.59 8.21l-3.5-3.63 1.42-1.46L6 6.74zM13.54 6.74l3.5-3.62 1.41 1.46-3.49 3.63-1.42-1.47zM8.88 6.82V0h2v6.82h-2z\"\r\n fill=\"#808488\"\r\n />\r\n <path\r\n fill=\"#279cd8\"\r\n d=\"M6.62 13.7H0v-2.26h6.62v2.26zM30.01 11.44v2.26H13.62v-2.26h16.39z\"\r\n />\r\n <path\r\n d=\"M26.31 19.4a.94.94 0 01.29.69v4.41H31a1 1 0 011 1v.07a1 1 0 01-.29.7.93.93 0 01-.7.29H26.6V31a1 1 0 01-.29.7.93.93 0 01-.71.28 1 1 0 01-.7-.29.92.92 0 01-.28-.69v-4.45h-4.48a1 1 0 01-1-1v-.07a1 1 0 01.29-.7 1 1 0 01.7-.29h4.48v-4.4a1 1 0 011-1 1 1 0 01.71.28z\"\r\n fill=\"#7fc242\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgLinkAdd;\r\n","import * as React from \"react\";\r\n\r\nconst SvgLink = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 30 32\" {...props}>\r\n <path\r\n d=\"M8.24 14.73c0-1.16.55-1.75 1.66-1.75s1.65.59 1.65 1.75v4.61h3.25a3.34 3.34 0 012.35.94 3.81 3.81 0 011.22 2.24v3.83a6.2 6.2 0 01-.56 2.92 3.48 3.48 0 00-.34.87 4.15 4.15 0 00-.1.5V32H9.24a6.19 6.19 0 00-.92-3.42 5.08 5.08 0 00-1.5-1.41c-.49-.27-.81-.46-1-.56-1.15-1-1.73-1.82-1.73-2.58a1.62 1.62 0 01.33-1 1.42 1.42 0 011.25-.55 5.28 5.28 0 012.23.93 2.89 2.89 0 01.3.19v-8.9zM6 6.74L4.59 8.21l-3.5-3.63 1.42-1.46L6 6.74zM13.54 6.74l3.49-3.62 1.42 1.46-3.5 3.63-1.41-1.47zM8.88 6.82V0h2v6.82h-2z\"\r\n fill=\"#808488\"\r\n />\r\n <path\r\n fill=\"#279cd8\"\r\n d=\"M6.61 13.7H0v-2.26h6.61v2.26zM30 11.44v2.26H13.62v-2.26H30z\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgLink;\r\n","import * as React from \"react\";\r\n\r\nconst SvgMailingList = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 31\" {...props}>\r\n <path fill=\"#fff\" d=\"M1.16 1.12h25.81v17.39H1.16z\" />\r\n <path\r\n d=\"M11.93 14.07a3.89 3.89 0 012 .51A3.84 3.84 0 0115.29 16a3.73 3.73 0 01.52 1.91 3.64 3.64 0 01-1.14 2.69 3.77 3.77 0 01-2.74 1.11 3.78 3.78 0 01-2.74-1.11 3.79 3.79 0 01.8-6 3.83 3.83 0 011.94-.51z\"\r\n fill=\"#808488\"\r\n />\r\n <path\r\n d=\"M21.24 13.06a4.7 4.7 0 012.36-.65 5.13 5.13 0 013.75 1.43 4.79 4.79 0 01.8 5.92 4.92 4.92 0 01-1.84 1.78 5.27 5.27 0 01-5.07 0 4.92 4.92 0 01-1.84-1.78 4.79 4.79 0 010-4.92 4.92 4.92 0 011.84-1.78z\"\r\n fill=\"#279cd8\"\r\n />\r\n <path\r\n d=\"M32 28.42v.06c0 .51-.78 1.06-2.34 1.64a16.81 16.81 0 01-5.89.88 17.05 17.05 0 01-5.69-.78 5 5 0 01-2.55-1.52 1 1 0 01-.1-.65c0-.26 0-.6.05-1a5.2 5.2 0 01.31-1.5 4 4 0 011.69-2.31 7.24 7.24 0 012.74-1 6.54 6.54 0 007.23 0A5.42 5.42 0 0131 24.06a5.64 5.64 0 011 3.48v.88z\"\r\n fill=\"#279cd8\"\r\n />\r\n <path\r\n d=\"M16.31 22.4c-1.78 1.2-2.66 3.21-2.61 6-.59.06-1.09.1-1.53.1a13.8 13.8 0 01-4.56-.6c-1.1-.39-1.74-.77-1.92-1.13a1.16 1.16 0 010-.16 1.28 1.28 0 010-.19v-.22-.57a3.59 3.59 0 01.66-2.07 3.44 3.44 0 011.48-1.2 7.18 7.18 0 011.84-.44 5 5 0 002.34.58 4.93 4.93 0 002.33-.57 6.15 6.15 0 012 .48zM28.33.49A1.47 1.47 0 0027.22 0H1.56A1.47 1.47 0 00.45.49 1.72 1.72 0 000 1.69v16.92a1.72 1.72 0 00.45 1.2 1.5 1.5 0 001.11.49h5a5.62 5.62 0 01-.47-1.83H1.82V4.6l11.7 7.88a1.06 1.06 0 00.33.14 6.13 6.13 0 01.65.26 1 1 0 00.59-.22 2.82 2.82 0 01.35-.29l.38-.25L27 4.51v6.33a7.07 7.07 0 011.83 1.25V1.69a1.66 1.66 0 00-.5-1.2zM14.41 10.88L1.83 2.34v-.6H27v.58z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgMailingList;\r\n","import { getTheme } from \"@fluentui/react/lib/Styling\";\r\nimport * as React from \"react\";\r\n\r\nconst theme = getTheme();\r\nconst SvgMobileGray66 = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 15 24\" {...props}>\r\n <path\r\n d=\"M13.33.08a1.61 1.61 0 011.18.5A1.67 1.67 0 0115 1.79v20.5a1.5 1.5 0 01-.36 1.08 1.83 1.83 0 01-1.31.63l-11.66-.09a1.39 1.39 0 01-1-.37A1.92 1.92 0 010 22.2V1.7A1.46 1.46 0 01.36.63 1.81 1.81 0 011.66 0l11.67.08zm-5.2 22.74a.75.75 0 00.24-.51.83.83 0 00-.5-.85.64.64 0 00-.31-.07.77.77 0 00-.76.51.88.88 0 00-.06.33.77.77 0 00.5.76.66.66 0 00.32.07.64.64 0 00.31-.06l.26-.17zm-6.48-2.35l11.66.06V1.82L1.65 1.7v18.77z\"\r\n fill=\"#83878b\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgMobileGray66;\r\n","import * as React from \"react\";\r\n\r\nconst SvgNeutralGold = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M29.85 8A15.66 15.66 0 0132 16a15.78 15.78 0 01-2.18 8.08 15.65 15.65 0 01-5.74 5.74 16.06 16.06 0 01-16.16 0 15.65 15.65 0 01-5.74-5.74 16.06 16.06 0 010-16.16 15.65 15.65 0 015.74-5.74 16.06 16.06 0 0116.16 0A15.79 15.79 0 0129.85 8zm-20 4.49a1.65 1.65 0 002.79 0 3 3 0 00.58-1.86 3 3 0 00-.58-1.86A1.68 1.68 0 0011.27 8a1.71 1.71 0 00-1.4.77 3 3 0 00-.58 1.86 3 3 0 00.58 1.86zm11.41 9.45a1.09 1.09 0 00-.33-.8 1.11 1.11 0 00-.8-.33h-8.34a1.13 1.13 0 100 2.26h8.36a1.11 1.11 0 00.8-.33 1.09 1.09 0 00.33-.83zm.63-9.46a3 3 0 00.58-1.86 3.07 3.07 0 00-.58-1.86 1.65 1.65 0 00-2.79 0 3 3 0 00-.58 1.86 3 3 0 00.58 1.86 1.64 1.64 0 002.79 0z\"\r\n fill=\"#f9bf16\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgNeutralGold;\r\n","import * as React from \"react\";\r\n\r\nconst SvgPreviewTestSend = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32.19\" {...props}>\r\n <path\r\n d=\"M1.09 21.14l7.39 2.76 2.76 8.29 5.08-4.62 8.29 3.72L32 8.22zm11.12 7.26l-1.54-5.59 15.42-8.48z\"\r\n fill=\"#7fc242\"\r\n />\r\n <path\r\n d=\"M1.82 18.19V4.6l11.7 7.88a1.06 1.06 0 00.33.14 6.13 6.13 0 01.65.26 1 1 0 00.59-.22 2.82 2.82 0 01.35-.29l.38-.25L27 4.51v3.32l1.83-.77V1.69a1.66 1.66 0 00-.47-1.2A1.47 1.47 0 0027.22 0H1.56A1.47 1.47 0 00.45.49 1.72 1.72 0 000 1.69V19m14.41-8.08L1.83 2.34v-.6H27v.58z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgPreviewTestSend;\r\n","import * as React from \"react\";\r\n\r\nconst SvgRecipientExport = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32.95\" {...props}>\r\n <path\r\n d=\"M24.56 22.07a6.57 6.57 0 01-2.54.46 5.66 5.66 0 01-2.81-.78A5.86 5.86 0 0117 19.63a5.52 5.52 0 01-.81-2.92A5.59 5.59 0 0117 13.8a5.94 5.94 0 012.19-2.12 6.22 6.22 0 016 0 5.65 5.65 0 012.19 2.12 5.2 5.2 0 01.81 2.72 5.92 5.92 0 01-.44 2.48 5.82 5.82 0 01-1.28 1.86 6.12 6.12 0 01-1.91 1.24zM11.4 14.41a4.23 4.23 0 010 6.2 4.55 4.55 0 01-3.25 1.28 4.55 4.55 0 01-3.26-1.29 4.22 4.22 0 010-6.19 4.56 4.56 0 013.25-1.28 4.57 4.57 0 013.26 1.28zM13.35 22.72c-2.1 1.41-3.14 3.81-3.11 7.18a16.08 16.08 0 01-1.81.1A16.49 16.49 0 013 29.31c-1.29-.46-2-.9-2.26-1.31l-.07-.12a1 1 0 010-.46v-1A4.88 4.88 0 011 25.05q.92-2.55 4.42-2.91a6 6 0 005.56 0 7.46 7.46 0 012.37.57zM32 28.65V30c0 .49-.59 1-1.76 1.54A18.61 18.61 0 0122.51 33a21.2 21.2 0 01-7-.93c-1.69-.62-2.71-1.23-3.06-1.82a.68.68 0 00-.08-.17 1.49 1.49 0 010-.6q0-.46.06-1.2a6.34 6.34 0 01.36-1.79 5.24 5.24 0 013.64-3.52 12.73 12.73 0 011.57-.42 7.55 7.55 0 004.31 1.32 7.66 7.66 0 004.29-1.28 8.3 8.3 0 013.06 1.09q2.35 1.49 2.35 5z\"\r\n fill=\"#808488\"\r\n />\r\n <path\r\n d=\"M6.72.39l4.36 3.45a1.36 1.36 0 01.49.78 1 1 0 01-.17.8.91.91 0 01-.74.35 1.28 1.28 0 01-.86-.3l-3-2.36v6.32c0 .54.38 1 1.12 1.42a6.31 6.31 0 002.93.62H6.77a1.92 1.92 0 01-1.4-.64 2 2 0 01-.62-1.41V3.1l-3 2.37a1.28 1.28 0 01-.86.3.91.91 0 01-.74-.35 1 1 0 01-.15-.8 1.33 1.33 0 01.5-.78L4.87.39A1.23 1.23 0 015.81 0a1.27 1.27 0 01.91.39z\"\r\n fill=\"#faa719\"\r\n />\r\n <path fill=\"#808488\" d=\"M.75 0H.69h.06z\" />\r\n </svg>\r\n);\r\n\r\nexport default SvgRecipientExport;\r\n","import * as React from \"react\";\r\n\r\nconst SvgRecipientImport = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 34.47\" {...props}>\r\n <path\r\n d=\"M24.56 23.59a6.57 6.57 0 01-2.54.46 5.75 5.75 0 01-2.81-.77A5.94 5.94 0 0117 21.16a5.57 5.57 0 01-.81-2.92 5.62 5.62 0 01.8-2.92 5.94 5.94 0 012.21-2.12 6.22 6.22 0 016 0 5.79 5.79 0 012.19 2.12 5.2 5.2 0 01.84 2.68 6 6 0 01-.48 2.46 5.78 5.78 0 01-1.28 1.85 5.94 5.94 0 01-1.91 1.24zM11.4 15.93a4.23 4.23 0 010 6.2 4.55 4.55 0 01-3.25 1.28 4.59 4.59 0 01-3.26-1.28 4.23 4.23 0 010-6.2 4.56 4.56 0 013.25-1.28 4.57 4.57 0 013.26 1.28zM13.35 24.25q-3.15 2.12-3.11 7.18c-.7.07-1.31.11-1.81.11a16.76 16.76 0 01-5.43-.7c-1.29-.47-2-.91-2.26-1.32l-.07-.11a1 1 0 010-.47v-1A5 5 0 011 26.57q.92-2.57 4.42-2.91a6 6 0 005.56 0 7 7 0 012.37.57zM32 30.18v1.3c0 .49-.59 1-1.76 1.53a18.61 18.61 0 01-7.73 1.46 21.2 21.2 0 01-7-.93c-1.69-.61-2.71-1.22-3.06-1.82a.91.91 0 00-.08-.17 1.46 1.46 0 010-.6c0-.3 0-.7.06-1.19a6.28 6.28 0 01.29-1.76 5.22 5.22 0 013.64-3.52 11.23 11.23 0 011.64-.4 7.79 7.79 0 008.6 0 8.48 8.48 0 013.06 1.09c1.57 1 2.35 2.65 2.35 5zM.75 1.52H.69h.06z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgRecipientImport;\r\n","import * as React from \"react\";\r\n\r\nconst SvgReload = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M32 28.72a1.11 1.11 0 01-.63 1.08 1.1 1.1 0 01-1.37-.14 1 1 0 01-.42-.76l-.14-1.85a16.53 16.53 0 01-5.54 3.64A18 18 0 0117.11 32a18.24 18.24 0 01-4.55-.57 18 18 0 01-4.09-1.61A17.25 17.25 0 015 27.31a16.38 16.38 0 01-2.68-3.23 15.62 15.62 0 01-1.71-3.83 15.11 15.11 0 010-8.5 15.62 15.62 0 011.72-3.83A16.38 16.38 0 015 4.69a17.25 17.25 0 013.47-2.51A18 18 0 0112.56.57 18.24 18.24 0 0117.11 0a17.67 17.67 0 017.2 1.48 17 17 0 015.78 4.1 4.82 4.82 0 011 1.8 1.61 1.61 0 01-.19 1.44 2.25 2.25 0 01-2.25.55A8 8 0 0125.4 8a4 4 0 01-1-1 7.84 7.84 0 01-.7-1.19c-.18-.39-.38-.78-.59-1.17a4.44 4.44 0 00-2.25-2 16 16 0 00-3.79-.46 15.39 15.39 0 00-5.72 1.09 15.1 15.1 0 00-4.71 2.92 13.73 13.73 0 00-3.13 4.39 12.79 12.79 0 000 10.69 13.73 13.73 0 003.13 4.39 14.92 14.92 0 004.69 2.93 15.62 15.62 0 0011.44 0 14.79 14.79 0 004.74-3l-2 .05a1.25 1.25 0 01-.88-.27 1.09 1.09 0 01-.42-.76 1 1 0 01.29-.82 1.15 1.15 0 01.82-.39l5-.28a1.22 1.22 0 01.88.27 1 1 0 01.41.76l.39 4.57z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgReload;\r\n","import * as React from \"react\";\r\n\r\nconst SvgRequestSupport = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 30 32\" {...props}>\r\n <path\r\n d=\"M29.52 10.22a1.92 1.92 0 01.48 1.32v18.61a1.87 1.87 0 01-.48 1.31 1.52 1.52 0 01-1.16.54H1.62a1.45 1.45 0 01-1.14-.54A1.87 1.87 0 010 30.15V11.54a1.91 1.91 0 01.45-1.28l.08-.09A9.41 9.41 0 012 8.91L14.23.24a1.19 1.19 0 01.64-.24 1.53 1.53 0 01.89.24l11.69 8.38.41.29L28 9l.2.14a8 8 0 011.07.81l.24.25z\"\r\n fill=\"#808488\"\r\n />\r\n <path fill=\"#fff\" d=\"M5.69 7.3v10.17l9.29 6.65 9.44-6.74V7.3H5.69z\" />\r\n <path\r\n d=\"M1.9 30h26.2V17.15L15.76 26a1.28 1.28 0 01-.66.23 1.62 1.62 0 01-.88-.23L1.91 17.24V30z\"\r\n fill=\"#fff\"\r\n />\r\n <path\r\n d=\"M14.18 17.19v-.13a2.07 2.07 0 01.33-1.22 5.2 5.2 0 01.94-.94l.72-.58c.06-.07.2-.19.4-.37a3.11 3.11 0 00.47-.54 1.13 1.13 0 00.17-.64 2.37 2.37 0 00-.71-1.71 2 2 0 00-1.5-.58 2.49 2.49 0 00-1.34.29 3.77 3.77 0 00-.61.5 2.16 2.16 0 00-.42 1.35 1.47 1.47 0 010 .27.68.68 0 01-.22.43.64.64 0 01-.48.23.84.84 0 01-.44-.1.75.75 0 01-.37-.69v-.18a3.62 3.62 0 011.6-3.05 3.42 3.42 0 012-.64 4.57 4.57 0 011.67.26 3.6 3.6 0 011.78 1.57 3.75 3.75 0 01.56 1.94 3.19 3.19 0 01-.56 1.83 3.78 3.78 0 01-.53.59c-.24.21-.4.36-.49.45s-.3.26-.65.53a5.17 5.17 0 00-.81.77v1.11a.73.73 0 01-.46.71.83.83 0 01-.32.06.6.6 0 01-.35-.11.75.75 0 01-.38-.68v-.73zM15.83 21a.91.91 0 01-.26.67.87.87 0 01-1.28 0 1 1 0 010-1.34.83.83 0 01.64-.28.84.84 0 01.64.28.91.91 0 01.26.67z\"\r\n fill=\"#279cd8\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgRequestSupport;\r\n","import * as React from \"react\";\r\n\r\nconst SvgResults = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M30.94 0a1 1 0 01.76.35 1.2 1.2 0 01.3.81v29.61a1.2 1.2 0 01-.3.84 1 1 0 01-.76.32H24.3a1.06 1.06 0 01-.75-.32 1.17 1.17 0 01-.32-.84V1.16a1.17 1.17 0 01.32-.81A1 1 0 0124.3 0zM19.29 8.24a1.05 1.05 0 01.8.36 1.19 1.19 0 01.32.86v21.31a1.1 1.1 0 01-1.12 1.16h-6.58a1 1 0 01-.74-.32 1.13 1.13 0 01-.32-.84V9.46A1.27 1.27 0 0112 8.6a.93.93 0 01.76-.36zM7.7 16.34a1 1 0 01.8.36 1.24 1.24 0 01.33.87v13.27a1.13 1.13 0 01-.33.81 1.06 1.06 0 01-.8.35H1.13a1.06 1.06 0 01-.8-.35 1.13 1.13 0 01-.33-.81V17.5a1.13 1.13 0 01.33-.81 1.06 1.06 0 01.8-.35z\"\r\n fill=\"#279cd8\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgResults;\r\n","import * as React from \"react\";\r\n\r\nconst SvgSaveBlue = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M28.8 0a3.18 3.18 0 013.07 2.2 3.41 3.41 0 01.13 1v23.47L26.69 32h-5.36v-8.53h-16V32H3.2a2.84 2.84 0 01-2.75-1.61A4.46 4.46 0 010 28.8V3.2A3.06 3.06 0 012.17.13 3.63 3.63 0 013.2 0zm-2.13 4.27H4.27v16h22.4v-16zM7.47 25.59h5.33V32H7.47v-6.41z\"\r\n fill=\"#279cd8\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgSaveBlue;\r\n","import * as React from \"react\";\r\n\r\nconst SvgSave = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M28.8 0a3.18 3.18 0 013.07 2.2 3.41 3.41 0 01.13 1v23.47L26.69 32h-5.36v-8.53h-16V32H3.2a2.84 2.84 0 01-2.75-1.61A4.46 4.46 0 010 28.8V3.2A3.06 3.06 0 012.17.13 3.63 3.63 0 013.2 0zm-2.13 4.27H4.27v16h22.4v-16zM7.47 25.59h5.33V32H7.47v-6.41z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgSave;\r\n","import * as React from \"react\";\r\n\r\nconst SvgSentAggregate = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M1.89 4.73v14.34h8.66a13.29 13.29 0 00-.38 1.93H1.61a1.51 1.51 0 01-1.14-.5A1.77 1.77 0 010 19.21V1.74A1.77 1.77 0 01.47.5 1.51 1.51 0 011.61 0H28a1.54 1.54 0 011.14.5 1.74 1.74 0 01.48 1.24v11.17a11.78 11.78 0 00-1.89-1.23v-7l-9 6.13a11.89 11.89 0 00-4.35 2.32 1.27 1.27 0 01-.35-.15L1.89 4.73zm0-2.88v.56l12.91 8.8 13-8.81v-.53H1.9zm17.21 11a10.48 10.48 0 013.3-.49 9.28 9.28 0 013.62.77 10 10 0 013.13 2.09 9.87 9.87 0 012.09 3.13 9.7 9.7 0 010 7.62 9.84 9.84 0 01-9 6 10 10 0 01-6.95-2.87 9.81 9.81 0 01-2.15-3.1 9.07 9.07 0 01-.78-3.61 10.42 10.42 0 01.5-3.29 9.35 9.35 0 011.4-2.7 10.65 10.65 0 012.12-2.12 9.48 9.48 0 012.7-1.4zm.66 16.67a8.2 8.2 0 002.6.39 7.15 7.15 0 002.85-.62 7.48 7.48 0 002.48-1.65 7.75 7.75 0 001.65-2.47 7.71 7.71 0 000-6 7.75 7.75 0 00-1.65-2.47 7.93 7.93 0 00-5.49-2.27 7.58 7.58 0 00-3 .62 7.44 7.44 0 00-2.47 1.65A7.62 7.62 0 0015 19.19a7.31 7.31 0 00-.57 2.81 8.29 8.29 0 00.39 2.6 7.2 7.2 0 001.11 2.13 8.52 8.52 0 001.67 1.67 7.38 7.38 0 002.14 1.11zM26.32 21a1 1 0 010 2.07h-3.11v3.22a1 1 0 01-.3.73 1 1 0 01-1.46 0 1 1 0 01-.3-.73V23.1h-3.1a1 1 0 01-.9-.52 1 1 0 010-1 1 1 0 01.9-.52h3.1v-3a1 1 0 01.51-.89 1.2 1.2 0 01.59-.14.89.89 0 01.66.31 1 1 0 01.3.72v3z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgSentAggregate;\r\n","import * as React from \"react\";\r\n\r\nconst SvgSentAnonymous = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M22.74 10.78a5.68 5.68 0 014.93 2.81 5.66 5.66 0 01-4.93 8.46 5.7 5.7 0 01-4.93-2.81 5.63 5.63 0 010-5.65 5.65 5.65 0 014.93-2.81zm0 9.22a3.58 3.58 0 002.6-1 3.5 3.5 0 000-5.07 3.77 3.77 0 00-5.22 0 3.52 3.52 0 000 5.07 3.61 3.61 0 002.62 1zM32 29v.07c0 .28-.23.58-.68.91a8.11 8.11 0 01-1.85.94A18.83 18.83 0 0122.74 32a18.78 18.78 0 01-6.41-.9c-1.61-.61-2.57-1.19-2.87-1.74a1.29 1.29 0 01-.12-.76q0-.45.06-1.17a6.15 6.15 0 01.35-1.73 4.69 4.69 0 011.9-2.7 8.42 8.42 0 013.08-1.1 7.24 7.24 0 008.15 0 6.09 6.09 0 014 2A6.67 6.67 0 0132 28v1zm-2-.57v-.44a4 4 0 00-1-3 4 4 0 00-1.81-.88 9.19 9.19 0 01-4.42 1.12 9 9 0 01-4.46-1.17 4.53 4.53 0 00-1.58.64c-.89.59-1.34 1.7-1.38 3.34v.38a8.83 8.83 0 002.15.87 13 13 0 002.56.5l1.38.11h2.08a15.28 15.28 0 003.7-.48 10.43 10.43 0 002.77-1zm-14.55-9.6a7.69 7.69 0 00.87 1.86H1.55a1.46 1.46 0 01-1.1-.5A1.75 1.75 0 010 19V1.73A1.76 1.76 0 01.45.5a1.46 1.46 0 011.1-.5h25.63a1.44 1.44 0 011.1.5 1.73 1.73 0 01.47 1.23v10.19a7.59 7.59 0 00-1.83-1.79V4.6l-6.56 4.55a7.43 7.43 0 00-3.59 2.54l-.62.44-.72.5-.24.18a1.11 1.11 0 01-1.6 0l-.09-.06-11.67-8v14.1zM26.92 1.79H1.82v.61l12.56 8.72 12.55-8.74v-.59z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgSentAnonymous;\r\n","import * as React from \"react\";\r\n\r\nconst SvgSentIndividual = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M15.46 18.71a7.62 7.62 0 00.87 1.85H1.55a1.46 1.46 0 01-1.1-.5A1.74 1.74 0 010 18.84V1.71A1.75 1.75 0 01.45.49 1.45 1.45 0 011.55 0h25.63a1.43 1.43 0 011.1.49 1.74 1.74 0 01.47 1.22v10.12a7.37 7.37 0 00-1.83-1.78V4.57l-6.56 4.51a7.39 7.39 0 00-3.59 2.52l-.62.43-.72.5-.24.18a1.12 1.12 0 01-1.6 0l-.09-.06-11.67-8V18.7zM26.92 1.77H1.82v.6L14.39 11l12.54-8.64v-.59zm-4.18 8.92a5.72 5.72 0 014.93 2.79 5.56 5.56 0 010 5.61 5.58 5.58 0 01-2.08 2 5.71 5.71 0 01-2.85.74 5.78 5.78 0 01-2.86-.74 5.63 5.63 0 01-2.07-2 5.56 5.56 0 010-5.61 5.63 5.63 0 012.07-2 5.68 5.68 0 012.86-.75zM32 29.05v.08c0 .27-.23.57-.68.9a8.56 8.56 0 01-1.85.93 19.07 19.07 0 01-6.73 1 18.78 18.78 0 01-6.41-.9c-1.61-.59-2.57-1.17-2.87-1.72a1.26 1.26 0 01-.12-.75q0-.45.06-1.17a6.1 6.1 0 01.35-1.71 4.61 4.61 0 011.9-2.64A8.24 8.24 0 0118.73 22a7.29 7.29 0 008.15 0 6 6 0 014 2 6.54 6.54 0 011.13 4v1z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgSentIndividual;\r\n","import * as React from \"react\";\r\n\r\nconst SvgSent = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 18\" {...props}>\r\n <path\r\n d=\"M32 2.41A1.1 1.1 0 0132 3v14a1 1 0 01-1 1H7.63a1 1 0 01-.71-.3 1 1 0 01-.3-.71V1a1 1 0 01.3-.7 1 1 0 01.71-.3H31a1 1 0 01.71.3A1 1 0 0132 1v1.4zm-2-.38H8.64L19.27 9l10.67-7zM8.64 16h21.3V4.59l-10 6.55a.88.88 0 01-.94.08h-.06a.4.4 0 01-.12-.07L8.64 4.5V16zM4.85 4.44a.77.77 0 01.54.22A.76.76 0 014.85 6H2.9a.73.73 0 01-.54-.22.76.76 0 01.54-1.3zm0 3.39a.77.77 0 01.54.22.76.76 0 01-.54 1.3H1.76a.71.71 0 01-.53-.22.77.77 0 010-1.08.75.75 0 01.53-.22zm0 3.41a.76.76 0 110 1.52H.76a.73.73 0 01-.54-.22.77.77 0 010-1.08.73.73 0 01.54-.22z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgSent;\r\n","import * as React from \"react\";\r\n\r\nconst SvgShare = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 31.18\" {...props}>\r\n <path\r\n d=\"M21.12 1.35A4 4 0 0124.2 0a4.11 4.11 0 012.08.56 4 4 0 011.95 2.54 4 4 0 01-.42 3.17 4 4 0 01-2.19 1.84 4.67 4.67 0 01-1.62.25 4 4 0 01-2-.62 3.88 3.88 0 01-1.6-1.82 4.08 4.08 0 01-.31-2.5c0-.06-.05-.13-.08-.21a12.59 12.59 0 00-2.59-.27 12.63 12.63 0 00-9.17 4 1 1 0 01-.73.33 1 1 0 01-1-1 1 1 0 01.27-.74A14.57 14.57 0 0117.36.88a15.13 15.13 0 013.76.47zm-7.67 26a1 1 0 01.59.51.89.89 0 01.1.67 1.73 1.73 0 01-.2.41.8.8 0 01-.23.22.87.87 0 01-.51.19 1.21 1.21 0 01-.41-.05 14.53 14.53 0 01-9.45-10A4.06 4.06 0 011 17.8 4.22 4.22 0 010 15a3.89 3.89 0 011.23-2.8A4 4 0 014.18 11a4 4 0 013 1.23A3.8 3.8 0 018.35 15a4.33 4.33 0 01-.77 2.61 4.07 4.07 0 01-2 1.52l-.1.12a12.44 12.44 0 008 8.13zM32 15.46a14.62 14.62 0 01-4.31 10.34 4.07 4.07 0 01-.12 2.73 3.79 3.79 0 01-1.64 2 4.1 4.1 0 01-2.05.65 4.67 4.67 0 01-1.62-.25A4.21 4.21 0 0120 29a3.91 3.91 0 01-.36-3.08 4 4 0 011.94-2.54 4.56 4.56 0 012.3-.56 3.8 3.8 0 012.5 1l.27.06A12.7 12.7 0 0029.09 20a12.48 12.48 0 00.85-4.53v-.87a1 1 0 01.25-.76 1 1 0 01.7-.36 1 1 0 01.75.25 1 1 0 01.36.76v1z\"\r\n fill={props.fill || \"#808488\"}\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgShare;\r\n","import * as React from \"react\";\r\n\r\nconst SvgSimpleSurvey = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M13.62 16.88a1.54 1.54 0 011.53 1.54v12A1.54 1.54 0 0113.62 32H1.54a1.5 1.5 0 01-1.09-.45A1.47 1.47 0 010 30.47v-12a1.48 1.48 0 01.45-1.09 1.48 1.48 0 011.09-.45zm-1.36 14.25c.15 0 .22-.06.22-.2v-.07l-1.25-4.51 3.31-2.89a.21.21 0 00.07-.16c0-.11-.06-.17-.18-.19l-4.56-.85-2.09-4.13a.2.2 0 00-.19-.13.25.25 0 00-.19.11l-2.07 4.15-4.56.85c-.11 0-.16.07-.16.19a.17.17 0 00.06.16L4 26.34l-1.27 4.52v.07c0 .14.07.2.22.2H3L7.6 29l4.58 2.09zm18.2-14.25a1.5 1.5 0 011.09.45 1.48 1.48 0 01.45 1.09v12A1.54 1.54 0 0130.46 32H18.38a1.54 1.54 0 01-1.53-1.53v-12a1.5 1.5 0 01.45-1.09 1.47 1.47 0 011.08-.45zm-5.81 14.23a6.52 6.52 0 005.67-3.27 6.59 6.59 0 000-6.58 6.5 6.5 0 00-2.39-2.38 6.57 6.57 0 00-6.57 0 6.56 6.56 0 003.29 12.23zm1.85-7.69a.71.71 0 01-.58-.32 1.37 1.37 0 010-1.52.68.68 0 011.15 0 1.2 1.2 0 01.23.76 1.27 1.27 0 01-.23.76.71.71 0 01-.57.32zm-3.79 0a.68.68 0 01-.57-.32 1.32 1.32 0 010-1.52.68.68 0 01.57-.32.71.71 0 01.57.32 1.32 1.32 0 010 1.52.71.71 0 01-.57.32zm5.22 3.24a3.67 3.67 0 01-1.4 1.24 4 4 0 01-3.78 0 3.67 3.67 0 01-1.4-1.24c-.35-.51-.37-.83-.09-.95s.57 0 .84.42a3 3 0 001.08.95 3.09 3.09 0 001.46.36 3 3 0 002.58-1.36c.24-.37.51-.49.79-.37s.26.44-.08.95zM31.55.45A1.5 1.5 0 0132 1.54v12.05a1.54 1.54 0 01-1.54 1.53H18.38a1.54 1.54 0 01-1.53-1.53v-12A1.5 1.5 0 0117.3.45 1.47 1.47 0 0118.38 0h12.08a1.5 1.5 0 011.09.45zM20.27 11.82V6.57h-2.19v6.06h2.19v-.81zm10.34-3.45a1.83 1.83 0 00.23-.24 3.14 3.14 0 00.27-1.27.52.52 0 00-.23-.45 1 1 0 00-.63-.2H27a3 3 0 010-.6q0-.18.06-.27l.32-.34a7 7 0 00.89-1.47 1.82 1.82 0 00.1-.87 1.08 1.08 0 00-.23-.58c-.11-.12-.21-.18-.29-.16L27.7 2h-.16a3.53 3.53 0 00-.51.59l-2.75 2.56c-.07.08-.32.33-.74.74l-.74.75a1.19 1.19 0 01-.35.24 8.51 8.51 0 01-1.77.12v4.84h.41a6 6 0 012.28.47 6.27 6.27 0 002.41.47h2.43c.22 0 .46-.11.71-.45a4.53 4.53 0 00.93-1.61 1.64 1.64 0 01.41-1 1.25 1.25 0 00.36-1l-.08-.34.07-.05zM13.62 0a1.47 1.47 0 011.08.45 1.48 1.48 0 01.45 1.09v12.05a1.54 1.54 0 01-1.53 1.53H1.54a1.5 1.5 0 01-1.09-.45A1.47 1.47 0 010 13.59v-12A1.48 1.48 0 01.45.45 1.48 1.48 0 011.54 0zm.17 4.53a.94.94 0 00.28-.69 1 1 0 00-1.66-.69L5.57 10l-3-3a1 1 0 00-.71-.29 1 1 0 00-.7.29 1 1 0 00-.29.71.91.91 0 00.29.7l3.67 3.68A1 1 0 006.3 12l7.49-7.49z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgSimpleSurvey;\r\n","import * as React from \"react\";\r\n\r\nconst SvgStar = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M4.83 31.49l2.86-11.18-7.54-7A.52.52 0 010 12.9a.45.45 0 01.39-.51l10.43-2L15.55.25a.5.5 0 01.87 0l4.76 10.11 10.43 2a.45.45 0 01.39.51.52.52 0 01-.15.38l-7.54 7 2.83 11v.16a.54.54 0 01-.13.35.41.41 0 01-.31.16.62.62 0 01-.24 0L16 26.88 5.51 32a.54.54 0 01-.22 0 .46.46 0 01-.29-.14.5.5 0 01-.15-.37zm3-3.64a.33.33 0 00.37.38.26.26 0 00.14 0L16 24.47l7.68 3.73a.34.34 0 00.17 0 .28.28 0 00.23-.12.37.37 0 00.1-.26v-.11l-2.08-8.1 5.54-5.15a.36.36 0 00.1-.28c0-.22-.09-.34-.28-.37l-7.66-1.49-3.5-7.39a.36.36 0 00-.64 0l-3.47 7.42-7.66 1.49c-.19 0-.28.15-.28.37a.41.41 0 00.11.28l5.53 5.15-2.08 8.1v.11z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgStar;\r\n","import * as React from \"react\";\r\n\r\nconst SvgTag = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 30\" {...props}>\r\n <path\r\n d=\"M31.24 15a2.25 2.25 0 010 3.37L19.67 29.29a2.73 2.73 0 01-3.67 0L1.33 15.56a2.7 2.7 0 01-.95-2L0 3.61v-.1A3.29 3.29 0 011.09 1a3.62 3.62 0 012.59-1h.11l10.5.41a3.43 3.43 0 012.41 1L31.24 15zM3.17 5.83a2.33 2.33 0 002.42 1.36A2 2 0 007 6.55 2.07 2.07 0 007.62 5 2 2 0 007 3.49a2.31 2.31 0 00-1.62-.62 2.38 2.38 0 00-1.64.61A2 2 0 003 5a2.16 2.16 0 00.17.83z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgTag;\r\n","import * as React from \"react\";\r\n\r\nconst SvgTagEmpty = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32.01 32\" {...props}>\r\n <path\r\n d=\"M31.26 15.83L16.71 2.16a3.4 3.4 0 00-2.4-1L3.81.8H3.7a3.62 3.62 0 00-2.6 1A3.31 3.31 0 000 4.3v.11l.38 9.94a2.7 2.7 0 001 2L16 30.09a2.73 2.73 0 003.67 0L31.26 19.2a2.27 2.27 0 000-3.37zm-2.69 3.37l-9.3 8.2a3.28 3.28 0 01-1.4.74 2.58 2.58 0 01-1.62-.57L3.46 15.5c-.89-.81-1-1-1-2l-.37-7.6v-.12c0-.83-.09-1.69.54-2.29a2.85 2.85 0 012.22-.57H5l9.08.32a4.16 4.16 0 012.34 1.29L28.6 16.15v.06c.45.41 1.18 1 1.16 1.4s-.76 1.18-1.19 1.59z\"\r\n fill=\"#808488\"\r\n />\r\n <path\r\n d=\"M5.51 4.24a2.07 2.07 0 00-1.44.53 1.65 1.65 0 00-.61 1.31 1.79 1.79 0 00.15.72A2 2 0 005.72 8a1.76 1.76 0 001.2-.56 1.76 1.76 0 00.58-1.35 1.72 1.72 0 00-.58-1.32 2 2 0 00-1.41-.53z\"\r\n fill=\"#808488\"\r\n />\r\n <path fill=\"none\" d=\"M0 0h32v32H0z\" />\r\n </svg>\r\n);\r\n\r\nexport default SvgTagEmpty;\r\n","import * as React from \"react\";\r\n\r\nconst SvgTimeToRead = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M16 0a16 16 0 014.25.57 16.14 16.14 0 013.83 1.61 16.43 16.43 0 015.74 5.74 16.14 16.14 0 011.61 3.83 16.13 16.13 0 010 8.5 16.14 16.14 0 01-1.61 3.83 16.43 16.43 0 01-5.74 5.74 16.14 16.14 0 01-3.83 1.61 16.13 16.13 0 01-8.5 0 16.14 16.14 0 01-3.83-1.61 16.43 16.43 0 01-5.74-5.74 16.14 16.14 0 01-1.61-3.83 16.13 16.13 0 010-8.5 16.14 16.14 0 011.61-3.83 16.43 16.43 0 015.74-5.74A16.14 16.14 0 0111.75.57 16 16 0 0116 0zm-.06 29.68a13.4 13.4 0 005.35-1.09 13.84 13.84 0 004.39-2.93 14 14 0 002.93-4.39 13.65 13.65 0 000-10.69 13.49 13.49 0 00-7.32-7.32 13.65 13.65 0 00-10.69 0 14 14 0 00-4.39 2.93 13.84 13.84 0 00-2.93 4.39 13.65 13.65 0 000 10.69 13.49 13.49 0 007.32 7.32 13.39 13.39 0 005.34 1.09zm9.59-9.47a1.07 1.07 0 01.52.69 1.1 1.1 0 01-.11.85 1.13 1.13 0 01-1.54.41l-9-5.2a1 1 0 01-.55-1.17V7A1.13 1.13 0 0116 5.84a1.07 1.07 0 01.79.33 1.09 1.09 0 01.33.8v8.37l8.44 4.87z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgTimeToRead;\r\n","import * as React from \"react\";\r\n\r\nconst SvgTrashRed = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32.01\" {...props}>\r\n <path\r\n d=\"M19 0a2 2 0 01.79.15 2.09 2.09 0 01.64.42 1.93 1.93 0 01.42.63A2.07 2.07 0 0121 2v2h8v2h-2v23a2.74 2.74 0 01-.54 1.74 3.26 3.26 0 01-1.29 1A3.09 3.09 0 0124 32H8a2.79 2.79 0 01-1.75-.54 3.15 3.15 0 01-1-1.29A2.84 2.84 0 015 29V6H3V4h8V2a2.07 2.07 0 01.15-.8 1.66 1.66 0 01.42-.63 1.93 1.93 0 01.63-.42A2.07 2.07 0 0113 0zm0 4V2h-6v2zm5 26a1 1 0 00.7-.3.94.94 0 00.3-.7V6H7v23a1 1 0 001 1zm-13-4V10h2v16zm4 0V10h2v16zm4 0V10h2v16z\"\r\n fill=\"#f15d5f\"\r\n />\r\n <path fill=\"none\" d=\"M0 .01h32v32H0z\" />\r\n </svg>\r\n);\r\n\r\nexport default SvgTrashRed;\r\n","import * as React from \"react\";\r\n\r\nconst SvgUpGray = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M32 16a16.14 16.14 0 01-2.19 8.08 16.06 16.06 0 01-2.51 3.22 15.92 15.92 0 01-15.55 4.12 15.64 15.64 0 01-7-4.12 16.06 16.06 0 01-2.51-3.22A16.14 16.14 0 010 16a16.14 16.14 0 012.19-8.08 16.6 16.6 0 015.73-5.73A16.14 16.14 0 0116 0a16.14 16.14 0 018.08 2.19 16.6 16.6 0 015.73 5.73A16.14 16.14 0 0132 16zM1.88 16A14.05 14.05 0 006 26a13.77 13.77 0 002.87 2.2 14.1 14.1 0 0010.88 1.42 14 14 0 003.38-1.42 14.21 14.21 0 005.07-5.07 14.24 14.24 0 001.42-10.88 14 14 0 00-1.42-3.38 14.21 14.21 0 00-5.07-5.07 14.24 14.24 0 00-10.88-1.42A14 14 0 008.87 3.8 14.21 14.21 0 003.8 8.87 14.09 14.09 0 001.88 16zm15-6.7l4.23 3.34a1.31 1.31 0 01.47.76.9.9 0 01-.87 1.13 1.24 1.24 0 01-.84-.3L17 11.93V22.6a1 1 0 01-1 1 1 1 0 01-1-1V11.93l-2.89 2.3a1.24 1.24 0 01-.84.3.9.9 0 01-.71-.35.87.87 0 01-.16-.78 1.26 1.26 0 01.47-.75L15.1 9.3a1.28 1.28 0 01.9-.41 1.2 1.2 0 01.92.41z\"\r\n fill=\"#808488\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgUpGray;\r\n","import * as React from \"react\";\r\n\r\nconst SvgUserAuth = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32.09 32.02\" {...props}>\r\n <path\r\n d=\"M26.2 26.48l-1.14 1.14H23.3v1.76h-1.76v1.76h-1.76V32h-.88a.94.94 0 01-.34-.07.9.9 0 01-.47-.47.94.94 0 01-.07-.34V28.5l5.35-5.35c0-.13 0-.26-.05-.39s0-.27 0-.42a4.19 4.19 0 01.1-.95 4.35 4.35 0 01.27-.84 4.47 4.47 0 012.23-2.23 4.35 4.35 0 01.84-.27 4.61 4.61 0 011.91 0 4.35 4.35 0 01.84.27 4.55 4.55 0 011.32.91 6.11 6.11 0 01.5.6 5 5 0 01.41.72 5.16 5.16 0 01.27.84 4.61 4.61 0 010 1.91 5.16 5.16 0 01-.27.84 5 5 0 01-.41.72 6.11 6.11 0 01-.5.6 6.11 6.11 0 01-.6.5 5 5 0 01-.72.41 5.16 5.16 0 01-.84.27 4.22 4.22 0 01-1 .1 3.94 3.94 0 01-.79-.07 4.77 4.77 0 01-.68-.19zM30.33 21a1.27 1.27 0 00-.1-.52 1.29 1.29 0 00-.7-.7 1.27 1.27 0 00-.52-.1 1.25 1.25 0 00-.51.1 1.29 1.29 0 00-.7.7 1.26 1.26 0 000 1 1.29 1.29 0 00.7.7 1.25 1.25 0 00.51.1 1.27 1.27 0 00.52-.1 1.29 1.29 0 00.7-.7 1.25 1.25 0 00.1-.48z\"\r\n fill=\"#f9bf16\"\r\n />\r\n <path\r\n d=\"M12.72 15.36a7.47 7.47 0 01-3-.61 7.61 7.61 0 01-2.45-1.63 7.69 7.69 0 01-1.64-2.45 7.47 7.47 0 01-.61-3 7.39 7.39 0 01.61-3A7.5 7.5 0 019.73.61a7.63 7.63 0 016 0 7.63 7.63 0 012.46 1.64 7.8 7.8 0 011.62 2.45 7.56 7.56 0 01.61 3 7.65 7.65 0 01-.61 3 8 8 0 01-1.64 2.45 7.77 7.77 0 01-2.46 1.63 7.47 7.47 0 01-3 .61z\"\r\n fill=\"#279cd8\"\r\n />\r\n <path\r\n d=\"M22 18.8c-.81 1.2-.71 2.23-.58 3.89 0 0-5.88 5.61-6.31 6.25a9.75 9.75 0 01-2.36 0A28.72 28.72 0 017 28.49a24.16 24.16 0 01-3.65-1c-1.74-.67-2.8-1.38-3.18-2.1a1.86 1.86 0 01-.16-1c0-.42.07-.84.08-1.28a8.93 8.93 0 01.7-3.36 6.29 6.29 0 011.65-2.4 9.72 9.72 0 014.87-2.06A9.46 9.46 0 0012.82 17a9.55 9.55 0 005.5-1.69 8.69 8.69 0 015 2.37A2.2 2.2 0 0022 18.8z\"\r\n fill=\"#279cd8\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgUserAuth;\r\n","import * as React from \"react\";\r\n\r\nconst SvgXRed = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M25.73 27.59a1 1 0 01-.71.29.93.93 0 01-.7-.29l-18-18A1 1 0 016 8.88a1 1 0 01.29-.71 1 1 0 011.41 0l18 18a1 1 0 01.29.71 1 1 0 01-.29.7zm0-19.42a1 1 0 01.29.71 1 1 0 01-.29.7l-18 18a1 1 0 01-.71.29 1 1 0 01-1-1 1 1 0 01.29-.71l18-18a1 1 0 01.7-.29 1 1 0 01.71.29z\"\r\n fill=\"#f15d5f\"\r\n />\r\n <path fill=\"none\" d=\"M0 0h32v32H0z\" />\r\n </svg>\r\n);\r\n\r\nexport default SvgXRed;\r\n","import * as React from \"react\";\r\n\r\nconst SvgSurveyStar = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n viewBox=\"0 0 60.81 61.57\"\r\n {...props}\r\n >\r\n <path\r\n fill=\"#2c699e\"\r\n d=\"M22.64 23.66H0l18.06 14.5-6.74 23.41 18.45-13.99 19.08 13.99-6.62-23.15 18.58-14.76H37.65L30.4 0z\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgSurveyStar;\r\n","import * as React from \"react\";\r\n\r\nconst SvgSurveyStarGrey = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n viewBox=\"0 0 60.81 61.57\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M22.64 23.66H0l18.06 14.5-6.74 23.41 18.45-13.99 19.08 13.99-6.62-23.15 18.58-14.76H37.65L30.4 0z\"\r\n fill=\"#cccccb\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgSurveyStarGrey;\r\n","import * as React from \"react\"\r\n\r\nconst SvgYesCheckmarkBlueBox = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n id=\"prefix__Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n x={0}\r\n y={0}\r\n viewBox=\"0 0 57.9 58.81\"\r\n xmlSpace=\"preserve\"\r\n {...props}\r\n >\r\n <style>\r\n {\".prefix__st1{display:none}.prefix__st2{display:inline;fill:#f2f2f3}\"}\r\n </style>\r\n <g id=\"prefix__Layer_1_1_\">\r\n <path fill=\"#2c699e\" d=\"M0 0h57.9v58.81H0z\" />\r\n <g id=\"prefix__Layer_4\" className=\"prefix__st1\">\r\n <path className=\"prefix__st2\" d=\"M0 0h57.9v58.81H0z\" />\r\n </g>\r\n <path\r\n fill=\"#fff\"\r\n d=\"M14.89 26.91l-3.9 3.94 11.88 11.99 24.08-23.01-3.9-3.94-20.04 18.97z\"\r\n />\r\n </g>\r\n <g id=\"prefix__Layer_3\" className=\"prefix__st1\">\r\n <text\r\n transform=\"translate(18.19 43.48)\"\r\n className=\"prefix__st2\"\r\n fontSize={46}\r\n fontFamily=\"FranklinGothic-DemiCond\"\r\n >\r\n {\"?\"}\r\n </text>\r\n </g>\r\n </svg>\r\n);\r\n\r\nexport default SvgYesCheckmarkBlueBox;\r\n","import * as React from \"react\"\r\n\r\nconst SvgYesCheckmarkGreenBox = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n id=\"prefix__Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n x={0}\r\n y={0}\r\n viewBox=\"0 0 57.9 58.81\"\r\n xmlSpace=\"preserve\"\r\n {...props}\r\n >\r\n <style>\r\n {\".prefix__st1{display:none}.prefix__st2{display:inline;fill:#7fc242}\"}\r\n </style>\r\n <g id=\"prefix__Layer_1_1_\">\r\n <path fill=\"#7fc242\" d=\"M0 0h57.9v58.81H0z\" />\r\n <g id=\"prefix__Layer_4\" className=\"prefix__st1\">\r\n <path className=\"prefix__st2\" d=\"M0 0h57.9v58.81H0z\" />\r\n </g>\r\n <path\r\n fill=\"#fff\"\r\n d=\"M14.89 26.91l-3.9 3.94 11.88 11.99 24.08-23.01-3.9-3.94-20.04 18.97z\"\r\n />\r\n </g>\r\n <g id=\"prefix__Layer_3\" className=\"prefix__st1\">\r\n <text\r\n transform=\"translate(18.19 43.48)\"\r\n className=\"prefix__st2\"\r\n fontSize={46}\r\n fontFamily=\"FranklinGothic-DemiCond\"\r\n >\r\n {\"?\"}\r\n </text>\r\n </g>\r\n </svg>\r\n);\r\n\r\nexport default SvgYesCheckmarkGreenBox;\r\n","import * as React from \"react\"\r\n\r\nconst SvgYesGrey = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 35.96 26.95\"\r\n {...props}\r\n >\r\n <path\r\n fill=\"#489f66\"\r\n d=\"M3.9 11.02L0 14.96l11.88 11.99L35.96 3.94 32.06 0 12.02 18.97z\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgYesGrey;\r\n","import * as React from \"react\"\r\n\r\nconst SvgNoCheckmarkBlueBox = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n id=\"prefix__Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n x={0}\r\n y={0}\r\n viewBox=\"0 0 57.9 58.81\"\r\n xmlSpace=\"preserve\"\r\n {...props}\r\n >\r\n <style>\r\n {\".prefix__st1{display:none}.prefix__st2{display:inline;fill:#f2f2f3}\"}\r\n </style>\r\n <g id=\"prefix__Layer_1_1_\">\r\n <path fill=\"#2c699e\" d=\"M0 0h57.9v58.81H0z\" />\r\n <g id=\"prefix__Layer_4\" className=\"prefix__st1\">\r\n <path className=\"prefix__st2\" d=\"M0 0h57.9v58.81H0z\" />\r\n </g>\r\n </g>\r\n <path\r\n fill=\"#fff\"\r\n d=\"M18.72 15.87l-3.51 3.5 10.46 9.56-10.46 10.9 3.51 3.11 10-10.06 10.12 10.06 3.84-3.11-10.8-10.42 10.8-9.85-3.05-3.69-10.68 10.01z\"\r\n id=\"prefix__Layer_2_1_\"\r\n />\r\n <g id=\"prefix__Layer_3\" className=\"prefix__st1\">\r\n <text\r\n transform=\"translate(18.19 43.48)\"\r\n className=\"prefix__st2\"\r\n fontSize={46}\r\n fontFamily=\"FranklinGothic-DemiCond\"\r\n >\r\n {\"?\"}\r\n </text>\r\n </g>\r\n </svg>\r\n);\r\n\r\nexport default SvgNoCheckmarkBlueBox;\r\n","import * as React from \"react\"\r\n\r\nconst SvgNoCheckmarkBlueBox = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n id=\"prefix__Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n x={0}\r\n y={0}\r\n viewBox=\"0 0 57.9 58.81\"\r\n xmlSpace=\"preserve\"\r\n {...props}\r\n >\r\n <style>\r\n {\".prefix__st1{display:none}.prefix__st2{display:inline;fill:#f15d5f}\"}\r\n </style>\r\n <g id=\"prefix__Layer_1_1_\">\r\n <path fill=\"#f15d5f\" d=\"M0 0h57.9v58.81H0z\" />\r\n <g id=\"prefix__Layer_4\" className=\"prefix__st1\">\r\n <path className=\"prefix__st2\" d=\"M0 0h57.9v58.81H0z\" />\r\n </g>\r\n </g>\r\n <path\r\n fill=\"#fff\"\r\n d=\"M18.72 15.87l-3.51 3.5 10.46 9.56-10.46 10.9 3.51 3.11 10-10.06 10.12 10.06 3.84-3.11-10.8-10.42 10.8-9.85-3.05-3.69-10.68 10.01z\"\r\n id=\"prefix__Layer_2_1_\"\r\n />\r\n <g id=\"prefix__Layer_3\" className=\"prefix__st1\">\r\n <text\r\n transform=\"translate(18.19 43.48)\"\r\n className=\"prefix__st2\"\r\n fontSize={46}\r\n fontFamily=\"FranklinGothic-DemiCond\"\r\n >\r\n {\"?\"}\r\n </text>\r\n </g>\r\n </svg>\r\n);\r\n\r\nexport default SvgNoCheckmarkBlueBox;\r\n","import * as React from \"react\"\r\n\r\nconst SvgNoGrey = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 27.47 27.07\"\r\n {...props}\r\n >\r\n <path\r\n fill=\"#ee2a4a\"\r\n d=\"M3.5 0L0 3.5l10.45 9.56L0 23.96l3.5 3.11 10.01-10.06 10.11 10.06 3.85-3.11-10.8-10.42 10.8-9.85L24.41 0 13.73 10.01z\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgNoGrey;\r\n","import * as React from \"react\"\r\n\r\nconst SvgMaybeCheckmarkBlueBox = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n id=\"prefix__Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n x={0}\r\n y={0}\r\n viewBox=\"0 0 57.9 58.81\"\r\n xmlSpace=\"preserve\"\r\n {...props}\r\n >\r\n <style>{\".prefix__st1{display:none}\"}</style>\r\n <g id=\"prefix__Layer_1_1_\">\r\n <path fill=\"#2c699e\" d=\"M0 0h57.9v58.81H0z\" />\r\n </g>\r\n <path\r\n d=\"M25.27 23.36l-5.75-.81c.06-3.04.9-5.5 2.52-7.38s3.92-2.82 6.9-2.82c3.15 0 5.44.86 6.87 2.58s2.16 3.73 2.16 6.02c0 1.78-.34 3.28-1.03 4.48-.69 1.21-1.85 2.53-3.48 3.99-1.15 1.03-1.85 1.82-2.1 2.35s-.37 1.51-.37 2.93H25.6v-1.01c0-1.87.1-3.22.3-4.03.2-.82.98-1.88 2.32-3.2 1.12-1.09 1.9-2.03 2.32-2.82.43-.79.64-1.73.64-2.82 0-1-.26-1.75-.79-2.25a2.61 2.61 0 00-1.84-.74c-2.18 0-3.27 1.84-3.28 5.53zm0 13.58h6.02v6.54h-6.02v-6.54z\"\r\n fill=\"#f2f2f3\"\r\n id=\"prefix__Layer_3\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgMaybeCheckmarkBlueBox\r\n","import * as React from \"react\"\r\n\r\nconst SvgMaybeGrey = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 18.44 31.13\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M5.75 11.01L0 10.2c.06-3.04.9-5.5 2.52-7.38C4.13.94 6.43 0 9.41 0c3.14 0 5.44.86 6.87 2.58 1.44 1.72 2.16 3.73 2.16 6.02 0 1.78-.35 3.28-1.03 4.48-.69 1.21-1.85 2.53-3.48 3.99-1.15 1.03-1.85 1.82-2.1 2.35s-.37 1.51-.37 2.93h-5.4v-1.01c0-1.87.1-3.21.3-4.03.2-.82.98-1.88 2.32-3.2 1.12-1.09 1.9-2.03 2.32-2.82.43-.79.64-1.73.64-2.82 0-1-.26-1.75-.79-2.25a2.61 2.61 0 00-1.84-.74c-2.15 0-3.25 1.84-3.26 5.53zm0 13.58h6.02v6.54H5.75v-6.54z\"\r\n fill=\"#3b3a39\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SvgMaybeGrey;\r\n","import * as React from \"react\";\r\n\r\nconst One = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n viewBox=\"0 0 59.29 58.82\"\r\n {...props}\r\n >\r\n <rect x=\"0.69\" display=\"none\" fill=\"#3B3A39\" width=\"57.9\" height=\"58.81\"/>\r\n <g display=\"none\">\r\n <path display=\"inline\" fill=\"#FFFFFF\" d=\"M39.79,40.11h-3.95l-1.95-5.53h-8.54l-1.88,5.53h-3.94l8.13-21.71h4.06L39.79,40.11z M32.94,31.65l-3.01-8.66\r\n c-0.09-0.28-0.19-0.74-0.29-1.36h-0.06c-0.09,0.58-0.19,1.03-0.3,1.36l-2.98,8.66H32.94z\"/>\r\n </g>\r\n <rect x=\"0.69\" display=\"none\" fill=\"#3B3A39\" width=\"57.9\" height=\"58.81\"/>\r\n <g display=\"none\">\r\n <path display=\"inline\" fill=\"#FFFFFF\" d=\"M22.38,40.11v-21.7h6.89c2.1,0,3.76,0.46,4.99,1.38s1.84,2.11,1.84,3.59c0,1.23-0.35,2.3-1.04,3.21\r\n s-1.66,1.55-2.89,1.94v0.06c1.49,0.17,2.69,0.72,3.58,1.66c0.89,0.93,1.34,2.15,1.34,3.64c0,1.86-0.73,3.36-2.2,4.51\r\n s-3.31,1.73-5.54,1.73h-6.97V40.11z M25.97,21.3v6.18h2.33c1.25,0,2.23-0.3,2.94-0.89c0.71-0.59,1.07-1.43,1.07-2.51\r\n c0-1.86-1.24-2.79-3.72-2.79L25.97,21.3L25.97,21.3z M25.97,30.36v6.87h3.07c1.34,0,2.38-0.31,3.11-0.93\r\n c0.73-0.62,1.1-1.48,1.1-2.57c0-2.25-1.56-3.38-4.68-3.38h-2.6V30.36z\"/>\r\n </g>\r\n <rect x=\"0.69\" display=\"none\" fill=\"#3B3A39\" width=\"57.9\" height=\"58.81\"/>\r\n <g display=\"none\">\r\n <path display=\"inline\" fill=\"#FFFFFF\" d=\"M37.98,39.2c-1.63,0.85-3.67,1.27-6.1,1.27c-3.15,0-5.67-0.99-7.57-2.98c-1.9-1.99-2.85-4.6-2.85-7.83\r\n c0-3.47,1.07-6.28,3.2-8.42s4.83-3.21,8.09-3.21c2.1,0,3.84,0.3,5.22,0.89v3.57c-1.46-0.87-3.08-1.3-4.84-1.3\r\n c-2.35,0-4.26,0.75-5.71,2.26c-1.46,1.5-2.19,3.51-2.19,6.02c0,2.39,0.68,4.3,2.04,5.71s3.15,2.13,5.37,2.13\r\n c2.05,0,3.82-0.48,5.33-1.45v3.34H37.98z\"/>\r\n </g>\r\n <circle fill=\"#2C699E\" cx=\"29.64\" cy=\"29.41\" r=\"29.41\"/>\r\n <g>\r\n <path fill=\"#FFFFFF\" d=\"M31.81,18.08v22.19h-3.52V22.38c-0.64,0.45-1.32,0.84-2.05,1.16s-1.57,0.6-2.5,0.84v-3\r\n c0.58-0.19,1.15-0.39,1.7-0.61s1.08-0.45,1.61-0.71c0.53-0.26,1.06-0.55,1.6-0.88c0.54-0.32,1.1-0.69,1.67-1.1H31.81z\"/>\r\n </g>\r\n </svg>\r\n);\r\n\r\nexport default One;","import * as React from \"react\";\r\n\r\nconst Two = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n viewBox=\"0 0 59.29 58.82\"\r\n {...props}\r\n >\r\n <g id=\"Layer_1\">\r\n <rect x=\"0.69\" display=\"none\" fill=\"#3B3A39\" width=\"57.9\" height=\"58.81\"/>\r\n <g display=\"none\">\r\n <path display=\"inline\" fill=\"#FFFFFF\" d=\"M39.79,40.11h-3.95l-1.95-5.53h-8.54l-1.88,5.53h-3.94l8.13-21.71h4.06L39.79,40.11z M32.94,31.65l-3.01-8.66\r\n c-0.09-0.28-0.19-0.74-0.29-1.36h-0.06c-0.09,0.58-0.19,1.03-0.3,1.36l-2.98,8.66H32.94z\"/>\r\n </g>\r\n <rect x=\"0.69\" display=\"none\" fill=\"#3B3A39\" width=\"57.9\" height=\"58.81\"/>\r\n <g display=\"none\">\r\n <path display=\"inline\" fill=\"#FFFFFF\" d=\"M22.38,40.11v-21.7h6.89c2.1,0,3.76,0.46,4.99,1.38s1.84,2.11,1.84,3.59c0,1.23-0.35,2.3-1.04,3.21\r\n s-1.66,1.55-2.89,1.94v0.06c1.49,0.17,2.69,0.72,3.58,1.66c0.89,0.93,1.34,2.15,1.34,3.64c0,1.86-0.73,3.36-2.2,4.51\r\n s-3.31,1.73-5.54,1.73h-6.97V40.11z M25.97,21.3v6.18h2.33c1.25,0,2.23-0.3,2.94-0.89c0.71-0.59,1.07-1.43,1.07-2.51\r\n c0-1.86-1.24-2.79-3.72-2.79L25.97,21.3L25.97,21.3z M25.97,30.36v6.87h3.07c1.34,0,2.38-0.31,3.11-0.93\r\n c0.73-0.62,1.1-1.48,1.1-2.57c0-2.25-1.56-3.38-4.68-3.38h-2.6V30.36z\"/>\r\n </g>\r\n <rect x=\"0.69\" display=\"none\" fill=\"#3B3A39\" width=\"57.9\" height=\"58.81\"/>\r\n <g display=\"none\">\r\n <path display=\"inline\" fill=\"#FFFFFF\" d=\"M37.98,39.2c-1.63,0.85-3.67,1.27-6.1,1.27c-3.15,0-5.67-0.99-7.57-2.98c-1.9-1.99-2.85-4.6-2.85-7.83\r\n c0-3.47,1.07-6.28,3.2-8.42s4.83-3.21,8.09-3.21c2.1,0,3.84,0.3,5.22,0.89v3.57c-1.46-0.87-3.08-1.3-4.84-1.3\r\n c-2.35,0-4.26,0.75-5.71,2.26c-1.46,1.5-2.19,3.51-2.19,6.02c0,2.39,0.68,4.3,2.04,5.71s3.15,2.13,5.37,2.13\r\n c2.05,0,3.82-0.48,5.33-1.45v3.34H37.98z\"/>\r\n </g>\r\n <circle fill=\"#2C699E\" cx=\"29.64\" cy=\"29.41\" r=\"29.41\"/>\r\n <g display=\"none\">\r\n <path display=\"inline\" fill=\"#FFFFFF\" d=\"M31.81,18.08v22.19h-3.52V22.38c-0.64,0.45-1.32,0.84-2.05,1.16s-1.57,0.6-2.5,0.84v-3\r\n c0.58-0.19,1.15-0.39,1.7-0.61s1.08-0.45,1.61-0.71c0.53-0.26,1.06-0.55,1.6-0.88c0.54-0.32,1.1-0.69,1.67-1.1H31.81z\"/>\r\n </g>\r\n </g>\r\n <g id=\"Layer_2\">\r\n <g>\r\n <path fill=\"#FFFFFF\" d=\"M36.1,39.51H22.48v-1.68c0-0.69,0.1-1.33,0.29-1.93c0.19-0.6,0.45-1.17,0.77-1.7c0.32-0.53,0.7-1.03,1.14-1.5\r\n c0.43-0.47,0.9-0.92,1.39-1.36c0.49-0.44,1-0.86,1.51-1.27c0.51-0.41,1.02-0.82,1.51-1.23c0.46-0.39,0.89-0.78,1.27-1.16\r\n c0.38-0.38,0.71-0.77,0.98-1.17c0.27-0.4,0.48-0.83,0.64-1.28c0.15-0.45,0.23-0.94,0.23-1.46c0-0.58-0.09-1.08-0.27-1.51\r\n c-0.18-0.43-0.42-0.79-0.74-1.08c-0.32-0.29-0.69-0.5-1.13-0.65c-0.43-0.15-0.91-0.22-1.42-0.22c-0.89,0-1.79,0.21-2.71,0.62\r\n c-0.92,0.41-1.8,1.03-2.65,1.86v-3.38c0.44-0.33,0.89-0.62,1.35-0.87c0.45-0.25,0.92-0.45,1.41-0.62\r\n c0.48-0.17,0.99-0.29,1.53-0.37c0.53-0.08,1.1-0.12,1.71-0.12c0.98,0,1.87,0.13,2.66,0.39c0.8,0.26,1.48,0.64,2.04,1.14\r\n c0.56,0.5,1,1.12,1.31,1.87c0.31,0.75,0.46,1.6,0.46,2.57c0,0.88-0.11,1.67-0.33,2.37c-0.22,0.7-0.52,1.35-0.92,1.96\r\n c-0.4,0.61-0.88,1.18-1.45,1.73s-1.2,1.1-1.89,1.68c-0.59,0.47-1.17,0.94-1.75,1.39c-0.58,0.45-1.1,0.89-1.57,1.32\r\n c-0.46,0.43-0.84,0.86-1.13,1.29c-0.29,0.43-0.43,0.86-0.43,1.29v0.08h9.79V39.51z\"/>\r\n </g>\r\n </g>\r\n </svg>\r\n);\r\n\r\nexport default Two;","import * as React from \"react\";\r\n\r\nconst Three = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n viewBox=\"0 0 59.29 58.82\"\r\n {...props}\r\n >\r\n <g id=\"Layer_1\">\r\n <rect x=\"0.69\" display=\"none\" fill=\"#3B3A39\" width=\"57.9\" height=\"58.81\"/>\r\n <g display=\"none\">\r\n <path display=\"inline\" fill=\"#FFFFFF\" d=\"M39.79,40.11h-3.95l-1.95-5.53h-8.54l-1.88,5.53h-3.94l8.13-21.71h4.06L39.79,40.11z M32.94,31.65l-3.01-8.66\r\n c-0.09-0.28-0.19-0.74-0.29-1.36h-0.06c-0.09,0.58-0.19,1.03-0.3,1.36l-2.98,8.66H32.94z\"/>\r\n </g>\r\n <rect x=\"0.69\" display=\"none\" fill=\"#3B3A39\" width=\"57.9\" height=\"58.81\"/>\r\n <g display=\"none\">\r\n <path display=\"inline\" fill=\"#FFFFFF\" d=\"M22.38,40.11v-21.7h6.89c2.1,0,3.76,0.46,4.99,1.38s1.84,2.11,1.84,3.59c0,1.23-0.35,2.3-1.04,3.21\r\n s-1.66,1.55-2.89,1.94v0.06c1.49,0.17,2.69,0.72,3.58,1.66c0.89,0.93,1.34,2.15,1.34,3.64c0,1.86-0.73,3.36-2.2,4.51\r\n s-3.31,1.73-5.54,1.73h-6.97V40.11z M25.97,21.3v6.18h2.33c1.25,0,2.23-0.3,2.94-0.89c0.71-0.59,1.07-1.43,1.07-2.51\r\n c0-1.86-1.24-2.79-3.72-2.79L25.97,21.3L25.97,21.3z M25.97,30.36v6.87h3.07c1.34,0,2.38-0.31,3.11-0.93\r\n c0.73-0.62,1.1-1.48,1.1-2.57c0-2.25-1.56-3.38-4.68-3.38h-2.6V30.36z\"/>\r\n </g>\r\n <rect x=\"0.69\" display=\"none\" fill=\"#3B3A39\" width=\"57.9\" height=\"58.81\"/>\r\n <g display=\"none\">\r\n <path display=\"inline\" fill=\"#FFFFFF\" d=\"M37.98,39.2c-1.63,0.85-3.67,1.27-6.1,1.27c-3.15,0-5.67-0.99-7.57-2.98c-1.9-1.99-2.85-4.6-2.85-7.83\r\n c0-3.47,1.07-6.28,3.2-8.42s4.83-3.21,8.09-3.21c2.1,0,3.84,0.3,5.22,0.89v3.57c-1.46-0.87-3.08-1.3-4.84-1.3\r\n c-2.35,0-4.26,0.75-5.71,2.26c-1.46,1.5-2.19,3.51-2.19,6.02c0,2.39,0.68,4.3,2.04,5.71s3.15,2.13,5.37,2.13\r\n c2.05,0,3.82-0.48,5.33-1.45v3.34H37.98z\"/>\r\n </g>\r\n <circle fill=\"#2C699E\" cx=\"29.64\" cy=\"29.41\" r=\"29.41\"/>\r\n <g display=\"none\">\r\n <path display=\"inline\" fill=\"#FFFFFF\" d=\"M31.81,18.08v22.19h-3.52V22.38c-0.64,0.45-1.32,0.84-2.05,1.16s-1.57,0.6-2.5,0.84v-3\r\n c0.58-0.19,1.15-0.39,1.7-0.61s1.08-0.45,1.61-0.71c0.53-0.26,1.06-0.55,1.6-0.88c0.54-0.32,1.1-0.69,1.67-1.1H31.81z\"/>\r\n </g>\r\n </g>\r\n <g id=\"Layer_2\">\r\n <g>\r\n <path fill=\"#FFFFFF\" d=\"M22.86,38.7v-3.3c1.41,1.12,3.01,1.68,4.78,1.68c1.44,0,2.6-0.33,3.46-0.98c0.86-0.66,1.29-1.54,1.29-2.66\r\n c0-2.46-1.88-3.69-5.65-3.69h-1.68v-2.82h1.6c3.34,0,5.01-1.16,5.01-3.48c0-2.14-1.3-3.21-3.91-3.21c-1.45,0-2.82,0.52-4.1,1.56\r\n v-3.12c1.47-0.83,3.21-1.24,5.22-1.24c1.93,0,3.47,0.48,4.63,1.45s1.74,2.21,1.74,3.72c0,2.86-1.45,4.69-4.36,5.51v0.06\r\n c1.56,0.15,2.8,0.7,3.71,1.64c0.91,0.94,1.36,2.12,1.36,3.53c0,1.95-0.73,3.52-2.19,4.71c-1.46,1.2-3.39,1.79-5.78,1.79\r\n C25.85,39.87,24.14,39.48,22.86,38.7z\"/>\r\n </g>\r\n </g>\r\n </svg>\r\n);\r\n\r\nexport default Three;","import * as React from \"react\";\r\n\r\nconst A = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n viewBox=\"0 0 57.9 58.81\"\r\n {...props}\r\n >\r\n <rect fill=\"#2C699E\" width=\"57.9\" height=\"58.81\"/>\r\n <g>\r\n <path fill=\"#FFFFFF\" d=\"M39.1,40.11h-3.95l-1.95-5.53h-8.54l-1.88,5.53h-3.94l8.13-21.71h4.06L39.1,40.11z M32.25,31.65l-3.01-8.66\r\n c-0.09-0.28-0.19-0.74-0.29-1.36h-0.06c-0.09,0.58-0.19,1.03-0.3,1.36l-2.98,8.66H32.25z\"/>\r\n </g>\r\n </svg>\r\n);\r\n\r\nexport default A;","import * as React from \"react\";\r\n\r\nconst B = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n viewBox=\"0 0 57.9 58.81\"\r\n {...props}\r\n >\r\n <rect fill=\"#2C699E\" width=\"57.9\" height=\"58.81\"/>\r\n <g display=\"none\">\r\n <path display=\"inline\" fill=\"#FFFFFF\" d=\"M39.1,40.11h-3.95l-1.95-5.53h-8.54l-1.88,5.53h-3.94l8.13-21.71h4.06L39.1,40.11z M32.25,31.65l-3.01-8.66\r\n c-0.09-0.28-0.19-0.74-0.29-1.36h-0.06c-0.09,0.58-0.19,1.03-0.3,1.36l-2.98,8.66H32.25z\"/>\r\n </g>\r\n <rect display=\"none\" fill=\"#2C699E\" width=\"57.9\" height=\"58.81\"/>\r\n <g>\r\n <path fill=\"#FFFFFF\" d=\"M21.69,40.11V18.41h6.89c2.1,0,3.76,0.46,4.99,1.38c1.23,0.92,1.84,2.11,1.84,3.59c0,1.23-0.35,2.3-1.04,3.21\r\n s-1.66,1.55-2.89,1.94v0.06c1.49,0.17,2.69,0.72,3.58,1.66c0.89,0.93,1.34,2.15,1.34,3.64c0,1.86-0.73,3.36-2.2,4.51\r\n s-3.31,1.73-5.54,1.73H21.69z M25.28,21.3v6.18h2.33c1.25,0,2.23-0.3,2.94-0.89c0.71-0.59,1.07-1.43,1.07-2.51\r\n c0-1.86-1.24-2.79-3.72-2.79H25.28z M25.28,30.36v6.87h3.07c1.34,0,2.38-0.31,3.11-0.93c0.73-0.62,1.1-1.48,1.1-2.57\r\n c0-2.25-1.56-3.38-4.68-3.38H25.28z\"/>\r\n </g>\r\n </svg>\r\n);\r\n\r\nexport default B;","import * as React from \"react\";\r\n\r\nconst C = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n viewBox=\"0 0 57.9 58.81\"\r\n {...props}\r\n >\r\n <rect fill=\"#2C699E\" width=\"57.9\" height=\"58.81\"/>\r\n <g display=\"none\">\r\n <path display=\"inline\" fill=\"#FFFFFF\" d=\"M39.1,40.11h-3.95l-1.95-5.53h-8.54l-1.88,5.53h-3.94l8.13-21.71h4.06L39.1,40.11z M32.25,31.65l-3.01-8.66\r\n c-0.09-0.28-0.19-0.74-0.29-1.36h-0.06c-0.09,0.58-0.19,1.03-0.3,1.36l-2.98,8.66H32.25z\"/>\r\n </g>\r\n <rect display=\"none\" fill=\"#2C699E\" width=\"57.9\" height=\"58.81\"/>\r\n <g>\r\n <path fill=\"#FFFFFF\" d=\"M21.69,40.11V18.41h6.89c2.1,0,3.76,0.46,4.99,1.38c1.23,0.92,1.84,2.11,1.84,3.59c0,1.23-0.35,2.3-1.04,3.21\r\n s-1.66,1.55-2.89,1.94v0.06c1.49,0.17,2.69,0.72,3.58,1.66c0.89,0.93,1.34,2.15,1.34,3.64c0,1.86-0.73,3.36-2.2,4.51\r\n s-3.31,1.73-5.54,1.73H21.69z M25.28,21.3v6.18h2.33c1.25,0,2.23-0.3,2.94-0.89c0.71-0.59,1.07-1.43,1.07-2.51\r\n c0-1.86-1.24-2.79-3.72-2.79H25.28z M25.28,30.36v6.87h3.07c1.34,0,2.38-0.31,3.11-0.93c0.73-0.62,1.1-1.48,1.1-2.57\r\n c0-2.25-1.56-3.38-4.68-3.38H25.28z\"/>\r\n </g>\r\n <rect fill=\"#2C699E\" width=\"57.9\" height=\"58.81\"/>\r\n <g>\r\n <path fill=\"#FFFFFF\" d=\"M37.29,39.2c-1.63,0.85-3.67,1.27-6.1,1.27c-3.15,0-5.67-0.99-7.57-2.98c-1.9-1.99-2.85-4.6-2.85-7.83\r\n c0-3.47,1.07-6.28,3.2-8.42c2.13-2.14,4.83-3.21,8.09-3.21c2.1,0,3.84,0.3,5.22,0.89v3.57c-1.46-0.87-3.08-1.3-4.84-1.3\r\n c-2.35,0-4.26,0.75-5.71,2.26c-1.46,1.5-2.19,3.51-2.19,6.02c0,2.39,0.68,4.3,2.04,5.71s3.15,2.13,5.37,2.13\r\n c2.05,0,3.82-0.48,5.33-1.45V39.2z\"/>\r\n </g>\r\n </svg>\r\n);\r\n\r\nexport default C;","import * as React from \"react\";\r\n\r\nconst SvgTimeToWatch = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" width=\"32px\" height=\"32px\" viewBox=\"0 0 32 32\" > \r\n <image id=\"image0\" width=\"24\" height=\"24\" x=\"0\" y=\"0\"\r\n href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\r\n AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAMFBMVEX///+BhYmBhYmBhYmB\r\n hYmBhYmBhYmBhYmBhYmBhYmBhYmBhYmBhYmBhYmBhYn///8dBTMvAAAADnRSTlMAMEDggMCgEPBQ\r\n IHDQkIHjocMAAAABYktHRACIBR1IAAAACXBIWXMAAAhNAAAITQEhiCGBAAAAB3RJTUUH5gUMFTsw\r\n jnnc+AAAAGBJREFUGNNjYEAGQkpwoMjwDgkwPHaBAzuGpwgdcZgcJyQO07t0ZM6LCUicd08XIHHe\r\n dSNz3gUgc9qROE8FEJwXG5D0RCEZ3YmwlKutAJdD4Zw3CG+fQ/X21VA4iEUJKQBR21ZRvXtc3wAA\r\n ACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0wNS0xMlQxODo1OTo0OCswMzowMPMelggAAAAldEVYdGRh\r\n dGU6bW9kaWZ5ADIwMjItMDUtMTJUMTg6NTk6NDgrMDM6MDCCQy60AAAAAElFTkSuQmCC\" />\r\n </svg>\r\n);\r\n\r\nexport default SvgTimeToWatch;\r\n","import * as React from \"react\";\r\n\r\nconst SvgSending = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg id=\"sending-send-status-icon\" aria-label=\"sending\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" {...props} >\r\n <path d=\"M5.39,12.54a.76.76,0,0,0-.54-1.3H.76a.73.73,0,0,0-.54.22.77.77,0,0,0,0,1.08.73.73,0,0,0,.54.22H4.85A.73.73,0,0,0,5.39,12.54Z\" fill=\"#808488\"/>\r\n <path d=\"M2.9,6H4.85a.76.76,0,0,0,.54-1.3.77.77,0,0,0-.54-.22H2.9a.76.76,0,0,0-.54,1.3A.73.73,0,0,0,2.9,6Z\" fill=\"#808488\"/>\r\n <path d=\"M1.76,9.35H4.85a.76.76,0,0,0,.54-1.3.77.77,0,0,0-.54-.22H1.76a.75.75,0,0,0-.53.22.77.77,0,0,0,0,1.08A.71.71,0,0,0,1.76,9.35Z\" fill=\"#808488\"/>\r\n <path d=\"M7.43,16H7V4.5l10.16,6.63a.4.4,0,0,0,.12.07l.06,0a.88.88,0,0,0,.94-.08l10-6.55V7.24l2-.84V3a.93.93,0,0,0,0-.57V1A1,1,0,0,0,30,.3a1,1,0,0,0-.71-.3H6a1,1,0,0,0-.71.3A1,1,0,0,0,5,1V17H5ZM7,2H28.3L17.63,9,7,2.06Z\" fill=\"#808488\"/>\r\n <path d=\"M1.1,21l7.39,2.76L11.25,32l5.08-4.62,8.29,3.72L32,8.05Zm11.11,7.26-1.54-5.59,15.42-8.48Z\" fill=\"#7fc242\"/>\r\n <title>Sending</title>\r\n </svg>\r\n);\r\n\r\nexport default SvgSending;\r\n","import * as React from \"react\";\r\n\r\nconst SvgQueued = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg \r\n id=\"queued-send-status-icon\"\r\n aria-label=\"queued\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" {...props}>\r\n <path d=\"M27.84 5.35L26 7.5L19.66 2.12L21.45 0L27.84 5.35ZM8.18 2.12L1.79 7.46L0 5.35L6.39 0L8.18 2.12ZM14.6 8.54V15.84L20.18 19.13L19.13 20.83L12.52 16.88V8.54H14.6ZM13.92 3C14.8276 2.99335 15.7331 3.08726 16.62 3.28C17.4351 3.44113 18.2323 3.6823 19 4C19.728 4.33063 20.4213 4.73259 21.07 5.2C21.6757 5.62824 22.2444 6.10659 22.77 6.63C23.2959 7.15698 23.7744 7.72919 24.2 8.34C24.6576 8.96474 25.0497 9.63494 25.37 10.34C25.7088 11.1087 25.9701 11.9094 26.15 12.73C26.5368 14.5193 26.5368 16.3707 26.15 18.16C25.9717 18.9778 25.7103 19.7753 25.37 20.54C25.0522 21.2621 24.6601 21.9491 24.2 22.59C23.3445 23.8056 22.2856 24.8645 21.07 25.72C19.7268 26.6519 18.2156 27.3141 16.62 27.67C15.7335 27.8662 14.828 27.9634 13.92 27.96C12.1606 27.9649 10.4197 27.6004 8.81 26.89C8.08703 26.5717 7.39705 26.1831 6.75 25.73C6.14246 25.3004 5.57363 24.8186 5.05 24.29C4.53542 23.7591 4.06079 23.1909 3.63 22.59C3.17704 21.9464 2.7885 21.2597 2.47 20.54C2.1297 19.7753 1.86834 18.9778 1.69 18.16C1.11458 15.5365 1.38772 12.7981 2.47 10.34C2.79066 9.63717 3.17917 8.96733 3.63 8.34C4.05831 7.73407 4.53308 7.16235 5.05 6.63C6.13135 5.53006 7.40592 4.63855 8.81 4C10.4229 3.3073 12.165 2.96639 13.92 3ZM13.92 25.26C14.6207 25.2494 15.3182 25.1623 16 25C16.6423 24.8602 17.2688 24.6558 17.87 24.39C18.4258 24.1381 18.9579 23.8369 19.46 23.49C20.4042 22.8263 21.2263 22.0042 21.89 21.06C22.246 20.5548 22.5508 20.0155 22.8 19.45C23.0555 18.8483 23.2595 18.2261 23.41 17.59C23.7033 16.1986 23.7033 14.7614 23.41 13.37C23.2623 12.7331 23.0582 12.1106 22.8 11.51C22.5508 10.9476 22.2459 10.4116 21.89 9.91C21.2263 8.96585 20.4042 8.14371 19.46 7.48C18.9604 7.12364 18.424 6.82192 17.86 6.58C17.2604 6.32659 16.6374 6.13233 16 6C15.3116 5.84014 14.6067 5.76293 13.9 5.77C13.1967 5.76474 12.4953 5.84194 11.81 6C11.1677 6.13984 10.5412 6.34421 9.94 6.61C9.3771 6.85411 8.84092 7.15571 8.34 7.51C7.86824 7.83771 7.42044 8.19862 7 8.59C6.59469 8.99631 6.22656 9.43807 5.9 9.91C5.54752 10.4121 5.24603 10.9481 5 11.51C4.74153 12.114 4.53739 12.7398 4.39 13.38C4.08341 14.7666 4.08341 16.2034 4.39 17.59C4.53443 18.231 4.73866 18.8571 5 19.46C5.2492 20.0224 5.55406 20.5584 5.91 21.06C6.23338 21.5315 6.59816 21.9733 7 22.38C7.41301 22.781 7.85414 23.1519 8.32 23.49C8.82779 23.839 9.36675 24.1402 9.93 24.39C10.5312 24.6558 11.1577 24.8602 11.8 25C12.4957 25.1564 13.2069 25.2336 13.92 25.23V25.26Z\" \r\n fill=\"#FFC700\"/>\r\n <title>Queued</title>\r\n </svg>\r\n);\r\n\r\nexport default SvgQueued;\r\n","import * as React from \"react\";\r\n\r\nconst SvgEnabled = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg aria-label=\"enabled\" id=\"enabled-send-status-icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 47 47\" fill=\"none\">\r\n <circle cx=\"23.5\" cy=\"23.5\" r=\"23.5\" fill=\"#357AD6\"/>\r\n <path d=\"M23 7L23 24\" stroke=\"white\" stroke-width=\"3\" stroke-linecap=\"round\"/>\r\n <path d=\"M23 24.25L28 27.625L33 31\" stroke=\"white\" stroke-width=\"3\" stroke-linecap=\"round\"/>\r\n <title>Enabled</title>\r\n </svg>\r\n);\r\n\r\nexport default SvgEnabled;\r\n\r\n ","import * as React from \"react\";\r\n\r\nconst SvgDisabled= (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg id=\"disabled-send-status-icon\" aria-label=\"disabled\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 47 47\" fill=\"none\">\r\n <circle cx=\"23.5\" cy=\"23.5\" r=\"22\" fill=\"white\" stroke=\"#808488\" stroke-width=\"3\"/>\r\n <path d=\"M11 13L23.5 23.375L36 33.75\" stroke=\"#808488\" stroke-width=\"3\" stroke-linecap=\"round\"/>\r\n <title>Disabled</title>\r\n </svg> \r\n);\r\n\r\nexport default SvgDisabled;\r\n ","import * as React from \"react\";\r\n\r\nconst SvgXError = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg aria-label=\"error\" id=\"error-send-status-icon\" viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M25.73 27.59a1 1 0 01-.71.29.93.93 0 01-.7-.29l-18-18A1 1 0 016 8.88a1 1 0 01.29-.71 1 1 0 011.41 0l18 18a1 1 0 01.29.71 1 1 0 01-.29.7zm0-19.42a1 1 0 01.29.71 1 1 0 01-.29.7l-18 18a1 1 0 01-.71.29 1 1 0 01-1-1 1 1 0 01.29-.71l18-18a1 1 0 01.7-.29 1 1 0 01.71.29z\"\r\n fill=\"#f15d5f\"/>\r\n <path fill=\"none\" d=\"M0 0h32v32H0z\" />\r\n <title>Error</title>\r\n </svg>\r\n);\r\n\r\nexport default SvgXError;","import * as React from \"react\";\r\n\r\nconst SvgProcessing = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg aria-label=\"processing\" id=\"processing-send-status-icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 47 47\" fill=\"none\">\r\n <circle cx=\"23.5\" cy=\"23.5\" r=\"23.5\" fill=\"#357AD6\"/>\r\n <path d=\"M23 7L23 24\" stroke=\"white\" stroke-width=\"3\" stroke-linecap=\"round\"/>\r\n <path d=\"M23 24.25L28 27.625L33 31\" stroke=\"white\" stroke-width=\"3\" stroke-linecap=\"round\"/>\r\n <title>Processing</title>\r\n </svg>\r\n);\r\n\r\nexport default SvgProcessing;\r\n\r\n ","import * as React from 'react'\r\n\r\nconst SvgSettingsBlue = (props:React.SVGProps<SVGSVGElement>) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" {...props}>\r\n <rect width=\"32\" height=\"32\" fill=\"none\"/>\r\n <path d=\"M0,23.89l1.14-.44a2,2,0,0,0,1.27-1.78A2.11,2.11,0,0,0,.89,19.86c-.28-.11-.57-.23-.89-.34A10.16,10.16,0,0,1,1.46,16q.5.2,1.14.51a2.18,2.18,0,0,0,.72.12,1.74,1.74,0,0,0,1.22-.39A1.78,1.78,0,0,0,5.24,15a2.14,2.14,0,0,0-.09-.79c-.05-.12-.23-.57-.53-1.36a10.2,10.2,0,0,1,3.49-1.46c.11.3.23.59.34.88a3.6,3.6,0,0,0,.41.78,1.87,1.87,0,0,0,1.62.75,1.75,1.75,0,0,0,1.62-1.2,1.69,1.69,0,0,1,.15-.46c.1-.24.2-.49.29-.75a12,12,0,0,1,3.55,1.46,5.24,5.24,0,0,0-.68,1.85,2.11,2.11,0,0,0,.49,1.45,2.24,2.24,0,0,0,1.42.5,2.35,2.35,0,0,0,1-.24,8.41,8.41,0,0,1,.89-.39,10.16,10.16,0,0,1,1.46,3.55l-.75.27-.65.24a1.69,1.69,0,0,0-.62.6,2.15,2.15,0,0,0-.39,1.11,2.16,2.16,0,0,0,.36,1,1.4,1.4,0,0,0,.65.59l1.4.52a10.23,10.23,0,0,1-1.46,3.55q-.51-.2-1.14-.51a2.19,2.19,0,0,0-2.15.38,1.7,1.7,0,0,0-.49,1.13,2.23,2.23,0,0,0,.17,1A8.69,8.69,0,0,0,16,30.54,9.89,9.89,0,0,1,12.54,32a7.68,7.68,0,0,0-.73-1.57,2,2,0,0,0-1.49-.84,2,2,0,0,0-1.77,1.27,1.51,1.51,0,0,1-.15.43c-.1.22-.2.46-.29.71a10.16,10.16,0,0,1-3.55-1.46l.45-1a2.22,2.22,0,0,0,.23-.9,1.79,1.79,0,0,0-.55-1.31,2,2,0,0,0-1.27-.54,5,5,0,0,0-2,.67A10.23,10.23,0,0,1,0,23.89Zm7.91-5.12a3.81,3.81,0,0,0-1.37,3A3.6,3.6,0,0,0,7,23.5,3.24,3.24,0,0,0,8,24.75a3.69,3.69,0,0,0,2,.76,4.65,4.65,0,0,0,1.55-.23,4.1,4.1,0,0,0,1.15-.66,3.67,3.67,0,0,0,1.39-2.93,3.45,3.45,0,0,0-1.62-3.12,3.62,3.62,0,0,0-2-.68,4,4,0,0,0-2.66.88Zm9.06-6c.92-.6,1.38-1.17,1.38-1.73a1.19,1.19,0,0,0-.44-1,1.46,1.46,0,0,0-.71-.36l-.52-.07-.59-.08c0-.16,0-.38,0-.67a9,9,0,0,1,.33-2.25l1,.14.34,0a1.12,1.12,0,0,0,.56-.2A1.31,1.31,0,0,0,19,5.39a2.54,2.54,0,0,0-.92-1.65A7,7,0,0,1,20.33,1.9c.57.92,1.16,1.38,1.74,1.38a1.15,1.15,0,0,0,1-.44A1.76,1.76,0,0,0,23.43,2L23.5,1l.77,0a6.62,6.62,0,0,1,2.14.33,11.43,11.43,0,0,0-.16,1.26A1.38,1.38,0,0,0,27.63,3.9,2.54,2.54,0,0,0,29.26,3,9,9,0,0,1,31.1,5.2l-.83.66A1.42,1.42,0,0,0,29.74,7a1.11,1.11,0,0,0,.43.94,1.78,1.78,0,0,0,.86.39l.95.06c0,.22,0,.48,0,.78a6.07,6.07,0,0,1-.33,2.07,10.83,10.83,0,0,0-1.18-.13,1.41,1.41,0,0,0-1.23.7,1.78,1.78,0,0,0-.16.7A2.58,2.58,0,0,0,30,14.2,6.69,6.69,0,0,1,27.8,16c-.12-.16-.24-.31-.35-.47a3.93,3.93,0,0,0-.32-.41,1.54,1.54,0,0,0-1.21-.46c-.69,0-1.1.48-1.24,1.45,0,.24-.06.49-.11.78l-.63,0a6.9,6.9,0,0,1-2.22-.34,8.14,8.14,0,0,0,.15-1.18,1.38,1.38,0,0,0-.72-1.22A1.36,1.36,0,0,0,20.5,14a2.65,2.65,0,0,0-1.69,1A7.1,7.1,0,0,1,17,12.74Zm8.25-6.49A3.62,3.62,0,0,0,23.88,6a2.17,2.17,0,0,0-1.38.44,4.49,4.49,0,0,0-.82.82,2.78,2.78,0,0,0-.52,1.57,3.16,3.16,0,0,0,.26,1.32,2.93,2.93,0,0,0,5.09.42A2.76,2.76,0,0,0,27,9.05a3.1,3.1,0,0,0-.26-1.3,2.78,2.78,0,0,0-.64-.9,2.71,2.71,0,0,0-.92-.6Z\" \r\n fill=\"#279cd8\"/>\r\n </svg>\r\n);\r\n\r\nexport default SvgSettingsBlue;","import * as React from \"react\";\r\n\r\nconst SvgExpired = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n id=\"expired-icon\"\r\n aria-label=\"expired\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" {...props}>\r\n <path d=\"M27.84 5.35L26 7.5L19.66 2.12L21.45 0L27.84 5.35ZM8.18 2.12L1.79 7.46L0 5.35L6.39 0L8.18 2.12ZM14.6 8.54V15.84L20.18 19.13L19.13 20.83L12.52 16.88V8.54H14.6ZM13.92 3C14.8276 2.99335 15.7331 3.08726 16.62 3.28C17.4351 3.44113 18.2323 3.6823 19 4C19.728 4.33063 20.4213 4.73259 21.07 5.2C21.6757 5.62824 22.2444 6.10659 22.77 6.63C23.2959 7.15698 23.7744 7.72919 24.2 8.34C24.6576 8.96474 25.0497 9.63494 25.37 10.34C25.7088 11.1087 25.9701 11.9094 26.15 12.73C26.5368 14.5193 26.5368 16.3707 26.15 18.16C25.9717 18.9778 25.7103 19.7753 25.37 20.54C25.0522 21.2621 24.6601 21.9491 24.2 22.59C23.3445 23.8056 22.2856 24.8645 21.07 25.72C19.7268 26.6519 18.2156 27.3141 16.62 27.67C15.7335 27.8662 14.828 27.9634 13.92 27.96C12.1606 27.9649 10.4197 27.6004 8.81 26.89C8.08703 26.5717 7.39705 26.1831 6.75 25.73C6.14246 25.3004 5.57363 24.8186 5.05 24.29C4.53542 23.7591 4.06079 23.1909 3.63 22.59C3.17704 21.9464 2.7885 21.2597 2.47 20.54C2.1297 19.7753 1.86834 18.9778 1.69 18.16C1.11458 15.5365 1.38772 12.7981 2.47 10.34C2.79066 9.63717 3.17917 8.96733 3.63 8.34C4.05831 7.73407 4.53308 7.16235 5.05 6.63C6.13135 5.53006 7.40592 4.63855 8.81 4C10.4229 3.3073 12.165 2.96639 13.92 3ZM13.92 25.26C14.6207 25.2494 15.3182 25.1623 16 25C16.6423 24.8602 17.2688 24.6558 17.87 24.39C18.4258 24.1381 18.9579 23.8369 19.46 23.49C20.4042 22.8263 21.2263 22.0042 21.89 21.06C22.246 20.5548 22.5508 20.0155 22.8 19.45C23.0555 18.8483 23.2595 18.2261 23.41 17.59C23.7033 16.1986 23.7033 14.7614 23.41 13.37C23.2623 12.7331 23.0582 12.1106 22.8 11.51C22.5508 10.9476 22.2459 10.4116 21.89 9.91C21.2263 8.96585 20.4042 8.14371 19.46 7.48C18.9604 7.12364 18.424 6.82192 17.86 6.58C17.2604 6.32659 16.6374 6.13233 16 6C15.3116 5.84014 14.6067 5.76293 13.9 5.77C13.1967 5.76474 12.4953 5.84194 11.81 6C11.1677 6.13984 10.5412 6.34421 9.94 6.61C9.3771 6.85411 8.84092 7.15571 8.34 7.51C7.86824 7.83771 7.42044 8.19862 7 8.59C6.59469 8.99631 6.22656 9.43807 5.9 9.91C5.54752 10.4121 5.24603 10.9481 5 11.51C4.74153 12.114 4.53739 12.7398 4.39 13.38C4.08341 14.7666 4.08341 16.2034 4.39 17.59C4.53443 18.231 4.73866 18.8571 5 19.46C5.2492 20.0224 5.55406 20.5584 5.91 21.06C6.23338 21.5315 6.59816 21.9733 7 22.38C7.41301 22.781 7.85414 23.1519 8.32 23.49C8.82779 23.839 9.36675 24.1402 9.93 24.39C10.5312 24.6558 11.1577 24.8602 11.8 25C12.4957 25.1564 13.2069 25.2336 13.92 25.23V25.26Z\"\r\n fill=\"#f15d5f\"/>\r\n <title>Expired</title>\r\n </svg>\r\n);\r\n\r\n\r\n\r\nexport default SvgExpired;","import * as React from \"react\";\r\n\r\nconst SvgExpiringSoon = (props: React.SVGProps<SVGSVGElement>) => (\r\n <svg\r\n id=\"expiring-soon-icon\"\r\n aria-label=\"expiring soon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" {...props}>\r\n <path d=\"M27.84 5.35L26 7.5L19.66 2.12L21.45 0L27.84 5.35ZM8.18 2.12L1.79 7.46L0 5.35L6.39 0L8.18 2.12ZM14.6 8.54V15.84L20.18 19.13L19.13 20.83L12.52 16.88V8.54H14.6ZM13.92 3C14.8276 2.99335 15.7331 3.08726 16.62 3.28C17.4351 3.44113 18.2323 3.6823 19 4C19.728 4.33063 20.4213 4.73259 21.07 5.2C21.6757 5.62824 22.2444 6.10659 22.77 6.63C23.2959 7.15698 23.7744 7.72919 24.2 8.34C24.6576 8.96474 25.0497 9.63494 25.37 10.34C25.7088 11.1087 25.9701 11.9094 26.15 12.73C26.5368 14.5193 26.5368 16.3707 26.15 18.16C25.9717 18.9778 25.7103 19.7753 25.37 20.54C25.0522 21.2621 24.6601 21.9491 24.2 22.59C23.3445 23.8056 22.2856 24.8645 21.07 25.72C19.7268 26.6519 18.2156 27.3141 16.62 27.67C15.7335 27.8662 14.828 27.9634 13.92 27.96C12.1606 27.9649 10.4197 27.6004 8.81 26.89C8.08703 26.5717 7.39705 26.1831 6.75 25.73C6.14246 25.3004 5.57363 24.8186 5.05 24.29C4.53542 23.7591 4.06079 23.1909 3.63 22.59C3.17704 21.9464 2.7885 21.2597 2.47 20.54C2.1297 19.7753 1.86834 18.9778 1.69 18.16C1.11458 15.5365 1.38772 12.7981 2.47 10.34C2.79066 9.63717 3.17917 8.96733 3.63 8.34C4.05831 7.73407 4.53308 7.16235 5.05 6.63C6.13135 5.53006 7.40592 4.63855 8.81 4C10.4229 3.3073 12.165 2.96639 13.92 3ZM13.92 25.26C14.6207 25.2494 15.3182 25.1623 16 25C16.6423 24.8602 17.2688 24.6558 17.87 24.39C18.4258 24.1381 18.9579 23.8369 19.46 23.49C20.4042 22.8263 21.2263 22.0042 21.89 21.06C22.246 20.5548 22.5508 20.0155 22.8 19.45C23.0555 18.8483 23.2595 18.2261 23.41 17.59C23.7033 16.1986 23.7033 14.7614 23.41 13.37C23.2623 12.7331 23.0582 12.1106 22.8 11.51C22.5508 10.9476 22.2459 10.4116 21.89 9.91C21.2263 8.96585 20.4042 8.14371 19.46 7.48C18.9604 7.12364 18.424 6.82192 17.86 6.58C17.2604 6.32659 16.6374 6.13233 16 6C15.3116 5.84014 14.6067 5.76293 13.9 5.77C13.1967 5.76474 12.4953 5.84194 11.81 6C11.1677 6.13984 10.5412 6.34421 9.94 6.61C9.3771 6.85411 8.84092 7.15571 8.34 7.51C7.86824 7.83771 7.42044 8.19862 7 8.59C6.59469 8.99631 6.22656 9.43807 5.9 9.91C5.54752 10.4121 5.24603 10.9481 5 11.51C4.74153 12.114 4.53739 12.7398 4.39 13.38C4.08341 14.7666 4.08341 16.2034 4.39 17.59C4.53443 18.231 4.73866 18.8571 5 19.46C5.2492 20.0224 5.55406 20.5584 5.91 21.06C6.23338 21.5315 6.59816 21.9733 7 22.38C7.41301 22.781 7.85414 23.1519 8.32 23.49C8.82779 23.839 9.36675 24.1402 9.93 24.39C10.5312 24.6558 11.1577 24.8602 11.8 25C12.4957 25.1564 13.2069 25.2336 13.92 25.23V25.26Z\"\r\n fill=\"#FFC700\"/>\r\n <title>Expiring Soon</title>\r\n </svg>\r\n);\r\n\r\nexport default SvgExpiringSoon;","import { IDropdownOption } from \"@fluentui/react\";\r\n//Utils\r\nimport { IGlobalProfile, ProfileManager } from \"Utils/GlobalProfile\";\r\nimport { CommunicateToOutlook } from \"Utils/OutlookUtils\";\r\n//Definitions\r\nimport { EWSCacheODataService, CampaignsODataService, TemplatesODataService, ColumnOrdersODataService, AppSettingsODataService } from \"Definitions/Generated/PoliteMailAPI\";\r\nimport { Campaign } from \"Definitions/Generated/PoliteMailEntities/Models/Campaign\";\r\nimport { Template } from \"Definitions/Generated/PoliteMailEntities/Models/Template\";\r\nimport { ServerInfosODataService } from \"Definitions/Generated/Default/ServerInfosODataService\";\r\n//Components\r\nimport { IListItem } from \"components/SimpleComponents/PMList\";\r\nimport { PreferencesPagesODataService } from \"Definitions/Generated/Default/PreferencesPagesODataService\";\r\nimport { PreferencesTypes } from 'Definitions/PreferenceTypes';\r\nimport { PreferencePage } from \"Definitions/Generated/PoliteMailEntities/Models/PreferencePage\";\r\nimport { PMTrackingMode } from \"components/WebComponents/MailSending/IPMComposedMessage\";\r\nimport { WhiteListFromsODataService } from \"Definitions/Generated/Default/WhiteListFromsODataService\";\r\nimport { WhiteListFrom } from \"Definitions/Generated/PoliteMailEntities/Models/WhiteListFrom\";\r\nimport React from \"react\";\r\n\r\nconst preferencesService = new PreferencesPagesODataService();\r\nconst appSettingsService = new AppSettingsODataService();\r\n\r\nexport const GetAllPreferences = (): Promise<PreferencePage[]> => {\r\n return preferencesService.GetAll().Exec();\r\n}\r\n\r\nexport const UpdatePreference = (preference: PreferencePage): Promise<PreferencePage> => {\r\n return preferencesService.Patch(preference.PreferenceId, preference)\r\n}\r\n\r\nexport const UpdatePreferenceByType = (preferenceType: PreferencesTypes, preferenceValue:string):Promise<PreferencePage> => {\r\n return preferencesService.Patch(preferenceType, { PreferenceValue: preferenceValue } as PreferencePage)\r\n}\r\n\r\nexport const SaveAllowedLists = (allowedList: string[], deletedListIds: string[]) => {\r\n const allowedListTasks: Promise<any>[] = []\r\n if (deletedListIds?.length > 0) {\r\n deletedListIds.filter(d => allowedList.indexOf(d) === -1);\r\n }\r\n const WhiteListFromService = new WhiteListFromsODataService();\r\n\r\n allowedList?.forEach((wlAddress) => {\r\n let whiteListFrom: WhiteListFrom = {\r\n Email: wlAddress,\r\n };\r\n allowedListTasks.push(WhiteListFromService.Post(whiteListFrom));\r\n });\r\n deletedListIds?.forEach((df) => {\r\n allowedListTasks.push(WhiteListFromService.Delete(df));\r\n });\r\n return allowedListTasks;\r\n}\r\n\r\nexport const GetAllowedSendModes = (): IDropdownOption[] => {\r\n const AllowedSendModes: IDropdownOption[] = [];\r\n const profile: IGlobalProfile = ProfileManager.GetGlobalProfile();\r\n if (profile.IndividualAvailable) {\r\n AllowedSendModes.push({ key: \"1\", text: 'Individual Measurement' })\r\n }\r\n if (profile.AnonymousAvailable) {\r\n AllowedSendModes.push({ key: \"2\", text: 'Anonymous Measurement' })\r\n }\r\n if (profile.AggregateAvailable) {\r\n AllowedSendModes.push({ key: \"3\", text: 'Aggregate Measurement' })\r\n }\r\n return AllowedSendModes;\r\n}\r\n\r\nexport const GetInboxes = (outlookProfile: string, handle: (items: IListItem[]) => void) => {\r\n //TODO: Get Inboxes\r\n const service = new ServerInfosODataService();\r\n service.GetWatchFolders(outlookProfile).then((inboxes: { Keys: string[], Values: string[] }) => {\r\n const items: IListItem[] = inboxes.Keys.map((key, index) => {\r\n return { key: key, name: inboxes.Values[index], selected: false }\r\n });\r\n handle(items);\r\n });\r\n}\r\n\r\nexport const GetTemplates = (handle: (templates: Template[]) => void) => {\r\n const tempService = new TemplatesODataService();\r\n tempService.GetAll().Exec().then((templates: Template[]) => {\r\n handle(templates);\r\n });\r\n}\r\n\r\nexport const GetCampaigns = (handle: (campaigns: Campaign[]) => void) => {\r\n const campService = new CampaignsODataService();\r\n campService.GetAll().Exec().then((campaigns: Campaign[]) => {\r\n handle(campaigns);\r\n });\r\n}\r\n\r\nexport const InitTemplates = (): IDropdownOption[] => {\r\n const templates: IDropdownOption[] = [\r\n { key: \"-2\", text: 'None' },\r\n { key: \"-1\", text: 'PoliteMail Default' }\r\n ];\r\n return templates;\r\n}\r\n\r\nexport const AddInbox = () => {\r\n //TODO: update Clear EWS Cache\r\n CommunicateToOutlook(\"addfolder.aspx\");\r\n}\r\n\r\nexport const DeleteInbox = (key: number | string) => {\r\n //TODO: update Clear EWS Cache\r\n const service = new ServerInfosODataService();\r\n return service.DeleteWatchFolder(key);\r\n}\r\n\r\nexport const GetDefaultTemplate = () => preferencesService.Get(PreferencesTypes.DefaultTemplateId).Exec();\r\n\r\nexport const GetUseEwsCache = () => preferencesService.Get(PreferencesTypes.UseExpansionCache).Exec();\r\n\r\nexport const GetDefaultCampaign = () => preferencesService.Get(PreferencesTypes.DefaultCampaignId).Exec();\r\n\r\nexport const GetActionableOriginator = () => preferencesService.Get(PreferencesTypes.ActionableOrganizer).Exec();\r\n\r\nexport const GetEnableDarkMode = () => preferencesService.Get(PreferencesTypes.UseDarkMode).Exec();\r\n\r\nexport const GetEmbedImages = () => preferencesService.Get(PreferencesTypes.EmbedImages).Exec();\r\n\r\nexport const GetOverrideWordCount = () => preferencesService.Get(PreferencesTypes.OverrideWordCount).Exec();\r\n\r\nexport const GetOverrideWordCountEnabled = () => appSettingsService.GetAppSetting('AllowOverrideWordCount');\r\n\r\nexport const GetSupportedImageTypes = () => appSettingsService.GetAppSetting('SupportedImageTypes');\r\n\r\nexport const GetSupportedFileTypes = () => appSettingsService.GetAppSetting('SupportedFileTypes');\r\n\r\nexport const GetSubscription = () => preferencesService.Get(PreferencesTypes.EnableSubscription).Exec();\r\n\r\nexport const GetGreeting = () => preferencesService.Get(PreferencesTypes.Greeting).Exec();\r\n\r\nexport const GetHidePanel = () =>\r\n CommunicateToOutlook(\"getHidePanel.aspx\");\r\n\r\nexport function GetDeleteBounce() {\r\n CommunicateToOutlook(\"getDeleteBounce.aspx\");\r\n}\r\n\r\nexport const GetCheckRecipCount = () => preferencesService.Get(PreferencesTypes.CheckRecipientCountSendLimit).Exec();\r\n\r\nexport const GetDefaultTracking = () => preferencesService.Get(PreferencesTypes.MeasurementDefault).Exec();\r\n\r\nexport const NumberToTrackingMode = (mode: string) => {\r\n switch (mode) {\r\n case '1':\r\n return PMTrackingMode.IndividualTracking;\r\n case '2':\r\n return PMTrackingMode.AnonymousTracking;\r\n case '3':\r\n return PMTrackingMode.AggregateTracking;\r\n default:\r\n return PMTrackingMode.Default;\r\n }\r\n}\r\n\r\nexport const SetPreFlightDeleteCycle = (id: string | number) => preferencesService.Patch(PreferencesTypes.OverridePreflightInterval, { PreferenceValue: id.toString() } as PreferencePage)\r\n\r\nexport const SetDefaultCampaign = (id: string | number) => preferencesService.Patch(PreferencesTypes.DefaultCampaignId, { PreferenceValue: id.toString() } as PreferencePage)\r\n\r\nexport const SetOverrideWordCount = (enabled: boolean) => preferencesService.Patch(PreferencesTypes.OverrideWordCount, { PreferenceValue: enabled.toString() } as PreferencePage)\r\n\r\nexport const SetSubscription = (enabled: boolean) => preferencesService.Patch(PreferencesTypes.EnableSubscription, { PreferenceValue: enabled.toString() } as PreferencePage)\r\n\r\nexport const SetShowHidePanel = (show: boolean) =>\r\n CommunicateToOutlook(\"setHidePanel.aspx?id=\" + show);\r\n\r\nexport const SetEmbedImages = (embed: boolean) => preferencesService.Patch(PreferencesTypes.EmbedImages, { PreferenceValue: embed.toString() } as PreferencePage)\r\n\r\nexport const SetEWSType = (type: string) => {\r\n CommunicateToOutlook(\"setEWSType.aspx?id=\" + type);\r\n}\r\n\r\nexport const SetPreventRecipCount = (count: string | number) => preferencesService.Patch(PreferencesTypes.CheckRecipientCountSendLimit, { PreferenceValue: count.toString() } as PreferencePage)\r\n\r\nexport const ClearEWSCredentials = () =>\r\n CommunicateToOutlook(\"forgetEWSCred.aspx\");\r\n\r\nexport const ClearGridSettings = () => {\r\n const service = new ColumnOrdersODataService();\r\n service.ClearAllGridSettingsByUser();\r\n}\r\n\r\nexport const SetDefaultTemplate = (id: string | number) => preferencesService.Patch(PreferencesTypes.DefaultTemplateId, { PreferenceValue: id.toString() } as PreferencePage)\r\n\r\nexport const SetUseEWS = (useEws: boolean) =>\r\n CommunicateToOutlook(\"setUseEWS.aspx?id=\" + useEws);\r\n\r\nexport const SetUseEWSCache = (useCache: boolean) => preferencesService.Patch(PreferencesTypes.UseExpansionCache, { PreferenceValue: useCache.toString() } as PreferencePage)\r\n\r\nexport const SetDefaultTrackingMode = (id: string | number) => preferencesService.Patch(PreferencesTypes.MeasurementDefault, { PreferenceValue: id.toString() } as PreferencePage)\r\n\r\nexport const ClearEWSCache = () => {\r\n const service: EWSCacheODataService = new EWSCacheODataService();\r\n service.ClearEWSCache().then();\r\n}\r\n\r\nexport const GetMapiExpansion = () => {\r\n CommunicateToOutlook(\"getMapiExpansion.aspx\");\r\n}\r\n\r\nexport const SetExpansionModes = () => {\r\n CommunicateToOutlook(\"setExpansionMode.aspx\");\r\n}\r\n\r\nexport const GetPreFlightDeleteCycle = () => preferencesService.Get(PreferencesTypes.OverridePreflightInterval).Exec();\r\n\r\nexport const ForceScanForInboxes = () => {\r\n CommunicateToOutlook(\"forceScanForInbox.htm\");\r\n}\r\n","import { NativeOdataServiceBase } from \"../Definitions/Generated/NativeOdataServiceBase\";\r\n\r\nexport class PMCache<T> {\r\n constructor(lifeTimeInMinutes: number, service: NativeOdataServiceBase<T>) {\r\n this.service = service;\r\n this.lifeTimeInMinutes = lifeTimeInMinutes;\r\n }\r\n\r\n private service: NativeOdataServiceBase<T>;\r\n private CurrentCache: T[];\r\n private DateExpired: Date;\r\n private lifeTimeInMinutes: number;\r\n\r\n public async Get(): Promise<T[]> {\r\n if (Date.now() < this.DateExpired?.getTime()) {\r\n return Promise.resolve(this.CurrentCache);\r\n }\r\n\r\n await this.NetworkGet();\r\n\r\n return Promise.resolve(this.CurrentCache);\r\n }\r\n\r\n private async NetworkGet(): Promise<any> {\r\n const data = await this.service.GetAll().Exec();\r\n this.CurrentCache = data;\r\n\r\n const dateReceived = new Date();\r\n this.DateExpired = new Date(dateReceived);\r\n this.DateExpired.setMinutes(\r\n dateReceived.getMinutes() + this.lifeTimeInMinutes\r\n );\r\n }\r\n}\r\n","import { PMCache } from \"./PMCache\";\r\nimport { User } from \"../Definitions/Generated/PoliteMailEntities/Models/User\";\r\nimport { UsersODataService } from \"../Definitions/Generated/Default/UsersODataService\";\r\n\r\nexport class UsersCache extends PMCache<User> {\r\n private constructor(lifeTimeInMinutes: number) {\r\n super(lifeTimeInMinutes, new UsersODataService());\r\n }\r\n\r\n private static UsersCacheInstance: UsersCache;\r\n\r\n public static GetInstance(lifeTimeInMinutes: number): UsersCache {\r\n if (!UsersCache.UsersCacheInstance) {\r\n UsersCache.UsersCacheInstance = new UsersCache(lifeTimeInMinutes);\r\n }\r\n\r\n return UsersCache.UsersCacheInstance;\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport { getTheme, Icon, IRenderFunction, ITextFieldProps } from \"@fluentui/react\";\r\nimport { PMTextField } from \"./PMTextField\";\r\n\r\nexport interface IRenderSearchBoxProps {\r\n setFilter: React.Dispatch<React.SetStateAction<string>>;\r\n clearAction: () => void;\r\n}\r\n\r\nexport const PMSearchBox: React.FC<IRenderSearchBoxProps> = ({\r\n setFilter,\r\n clearAction\r\n}) => {\r\n const [searchText, setSearchText] = React.useState<string>();\r\n const theme = getTheme();\r\n \r\n const onRenderPrefix: IRenderFunction<ITextFieldProps> = (() => {\r\n return <Icon\r\n aria-label='Search'\r\n iconName='Search'\r\n onClick={() => { setFilter(searchText) }}\r\n />\r\n })\r\n\r\n const onRenderSuffix: IRenderFunction<ITextFieldProps> = (() => {\r\n return <Icon\r\n aria-label='Cancel'\r\n iconName='Cancel'\r\n onClick={() => {\r\n setFilter('');\r\n setSearchText('');\r\n clearAction();\r\n }}\r\n />\r\n })\r\n\r\n const onKeyPress = ((ev: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n // Handle return key to submit the search\r\n if (ev.which == 13) {\r\n setFilter(searchText);\r\n }\r\n });\r\n\r\n return (\r\n <div style={{border:\"1px solid\", font:\"Segoe UI\", padding:\"0px\", display:\"table\", height:\"max-content\", width:\"max-content\"}}>\r\n <PMTextField\r\n placeholder='Search...'\r\n onChange={(_, newValue) => setSearchText(newValue)}\r\n onKeyPress={onKeyPress}\r\n value={searchText || ''}\r\n onRenderPrefix={onRenderPrefix}\r\n onRenderSuffix={onRenderSuffix}\r\n styles={{\r\n prefix: {\r\n backgroundColor: theme.semanticColors.inputBackground,\r\n cursor: 'pointer',\r\n },\r\n suffix: {\r\n backgroundColor: theme.semanticColors.inputBackground,\r\n cursor: 'pointer',\r\n },\r\n wrapper: {\r\n padding:\"0px\",margin:\"0px\"\r\n },\r\n root: {\r\n padding:\"0px\",margin:\"0px\"\r\n },\r\n field: {\r\n padding:\"0px\",margin:\"0px\"\r\n },\r\n fieldGroup: {\r\n padding:\"0px\",margin:\"0px\"\r\n }\r\n }}\r\n borderless={true}\r\n ignoreBase={true}\r\n />\r\n </div>\r\n );\r\n}","import { IObjectWithKey, ISelection, Toggle } from \"@fluentui/react\";\r\nimport * as React from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { gridIsInitiallyLoading } from \"store/features/loadingGridSlice\";\r\nimport { RootState } from \"store/store\";\r\nimport { PMSearchBox } from \"../components/SimpleComponents/PMSearchBox\";\r\n\r\nexport enum ExportFormat {\r\n CSV = \"Export CSV\",\r\n EXCEL = \"Export Excel Doc\",\r\n QR = \"Export QR Code\"\r\n}\r\n\r\nexport interface IGridCommandBarActions {\r\n search?: () => void;\r\n add?: () => void;\r\n delete?: () => void;\r\n update?: () => void;\r\n export?: (type: ExportFormat) => void;\r\n exportSelected?: (type: ExportFormat) => void;\r\n resetColumns?: () => void;\r\n filter?: () => React.ReactNode;\r\n}\r\n\r\nexport const RenderSearchBox = (setFilter: React.Dispatch<React.SetStateAction<string>>, clearAction: () => void, selection?: ISelection<IObjectWithKey>): JSX.Element => {\r\n const loadingGridProgress = useSelector((state: RootState) => state.loadingGridSlice);\r\n const [filterString, setFilterString] = React.useState<string>(\"\");\r\n const dispatchLoading = useDispatch();\r\n React.useEffect(() => {\r\n dispatchLoading(gridIsInitiallyLoading());\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (!loadingGridProgress.IsInitiallyLoading) {\r\n setFilter(filterString);\r\n if (selection) {\r\n selection.setAllSelected(false);\r\n }\r\n }\r\n }, [loadingGridProgress.IsInitiallyLoading, filterString])\r\n\r\n return (\r\n <PMSearchBox\r\n setFilter={setFilterString}\r\n clearAction={clearAction}\r\n />\r\n );\r\n}\r\n\r\nexport const RenderToggleButton = (\r\n labelTitle: string,\r\n onChange: React.Dispatch<React.SetStateAction<boolean>>,\r\n defaultChecked?: boolean,\r\n onText?: string,\r\n offText?: string\r\n) : JSX.Element => {\r\n\r\n const onChangeToggleValue = (event: React.MouseEvent<HTMLElement, MouseEvent>, checked?: boolean) : void => {\r\n onChange(checked);\r\n };\r\n\r\n return (\r\n <Toggle\r\n inlineLabel\r\n label={labelTitle}\r\n onChange={onChangeToggleValue}\r\n onText={onText}\r\n offText={offText}\r\n styles={{ root: { margin: \"0 5px 0 5px\" }}}\r\n defaultChecked={defaultChecked}\r\n />\r\n );\r\n};\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { AppSetting } from './../PoliteMailEntities/Models/AppSetting';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { store } from 'store/store';\r\nimport { baseApi, RTKQueryTags } from 'store/features/baseApiSlice';\r\n\r\nexport class AppSettingsODataService extends NativeOdataServiceBase<AppSetting> {\r\n\r\n /*Custom Actions*/\r\n public async GetAppSetting(key: string): Promise<AppSetting> {\r\n return await this.ExecCustomCollectionAction<AppSetting>('Default.GetAppSetting', { Key: key });\r\n }\r\n\r\n public async GetAppSettingFromCache(key: string): Promise<AppSetting> {\r\n return await this.ExecCustomCollectionAction<AppSetting>('Default.GetAppSettingFromCache', { Key: key });\r\n }\r\n\r\n public async EnableWhiteList(checkWhiteList: boolean): Promise<AppSetting> {\r\n\r\n return await this.ExecCustomCollectionAction<AppSetting>('EnableWhiteList', { Enabled: checkWhiteList });\r\n }\r\n\r\n public async UpdateValuesForAppSettings(settings: AppSetting[]): Promise<AppSetting[]> {\r\n store.dispatch(baseApi.util.invalidateTags([{ type: RTKQueryTags.AppSetting}]));\r\n\r\n return await this.ExecCustomCollectionAction<AppSetting[]>('UpdateValuesForAppSettings', { AppSettings: settings });\r\n }\r\n\r\n public async SetAppSettingValueByAppKey(key: string, value : any): Promise<AppSetting> {\r\n return await this.ExecCustomCollectionAction<AppSetting>('SetAppSettingValueByAppKey', { Key: key, Value: `${value}`});\r\n }\r\n\r\n public async ValidateLicense(settings: AppSetting[]): Promise<boolean> {\r\n return await this.ExecCustomCollectionAction<boolean>('ValidateLicense', { AppSettings: settings });\r\n }\r\n\r\n\r\n public async ValidateSAML(settings: AppSetting[]): Promise<boolean> {\r\n return await this.ExecCustomCollectionAction<boolean>('ValidateSAML', { AppSettings: settings });\r\n }\r\n\r\n constructor() {\r\n super('AppSettings');\r\n }\r\n}","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Business } from './../PoliteMailEntities/Models/Business';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class BusinessesODataService extends NativeOdataServiceBase<Business> {\r\n\r\n constructor() {\r\n super('Businesses');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Campaign } from './../PoliteMailEntities/Models/Campaign';\r\nimport { ODataContext } from './../ODataContext';\r\nimport { Location } from '../PoliteMailEntities/Models/Location';\r\nimport { CustomRequestInit, NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { SentMessage } from '../PoliteMailEntities/Models/SentMessage';\r\nimport { Event } from '../../../Definitions/Generated/PoliteMailEntities/Models/Event';\r\nimport { DeviceCount } from '../PoliteMailEntities/Models/DeviceCount';\r\nimport { HourOfDayRead } from '../PoliteMailEntities/Models/HourOfDayRead';\r\nimport { LinkStat } from '../PoliteMailEntities/Models/LinkStat';\r\nimport { Report } from '../PoliteMailEntities/Models/Report';\r\nimport {MonthlyEngagementMetric} from '../PoliteMailEntities/Models/MonthlyEngagementMetric';\r\nimport axios from 'axios';\r\nimport { ODataServerRoute } from 'Definitions/Globals';\r\nimport { authenticatedAxios } from '../../../..';\r\n\r\nexport class CampaignsODataService extends NativeOdataServiceBase<Campaign> {\r\n\r\n constructor() {\r\n super('Campaigns');\r\n }\r\n\r\n\t/*Custom Actions*/\r\n public async Length(CampaignId: any): Promise<number> {\r\n return await this.ExecCustomAction<number>('Default.Length', CampaignId);\r\n }\r\n\r\n public async AddSentMessages(CampaignId: number, SentMessageIds: number[]): Promise<Boolean> {\r\n if(SentMessageIds.length === 0)\r\n return;\r\n\r\n return await this.ExecCustomAction<Boolean>(\r\n 'AddSentMessages', \r\n CampaignId,\r\n {\r\n 'sentmessages' : SentMessageIds\r\n });\r\n }\r\n\r\n public async RemoveSentMessages(CampaignId: any, SentMessageIds: number[]): Promise<Boolean> {\r\n if(SentMessageIds.length === 0)\r\n return;\r\n\r\n return await this.ExecCustomAction<Boolean>(\r\n 'Default.RemoveSentMessages', \r\n CampaignId,\r\n {\r\n 'sentmessages' : SentMessageIds\r\n });\r\n }\r\n\r\n public async UpdateMetrics(Ids: number[]): Promise<Boolean> {\r\n let idCollection: any = { campaigns: Ids }\r\n return await this.ExecCustomCollectionAction<Boolean>('UpdateMetrics', idCollection);\r\n }\r\n\r\n public async NewCampaign(model:Campaign): Promise<number> {\r\n return await this.ExecCustomCollectionAction<number>('NewCampaign',{\r\n OwnerID: model.OwnerID,\r\n BusinessID: model.BusinessID,\r\n RegionID: model.RegionID,\r\n Shared: model.Shared,\r\n Description: model.Description,\r\n Name: model.Name,\r\n ActiveState: model.ActiveState\r\n } );\r\n }\r\n\r\n public async GetSentMessages(CampaignId: any, query: string, init?: CustomRequestInit): Promise<{Value: SentMessage[], Count:number}> {\r\n return await this.CustomGetWithFilter<SentMessage>(\"SentMessages\", CampaignId, query, init).Exec();\r\n }\r\n\r\n public async GetEvents(CampaignId: any): Promise<Event[]> {\r\n return await this.ExecCustomGet<Event[]>(\"Events\", CampaignId);\r\n }\r\n \r\n public async GetDesktopDevices(CampaignId: any): Promise<DeviceCount[]> {\r\n return await this.ExecCustomGet<DeviceCount[]>(\"DesktopDeviceSummary\", CampaignId);\r\n }\r\n\r\n public async GetMobileDevices(CampaignId: any): Promise<DeviceCount[]> {\r\n return await this.ExecCustomGet<DeviceCount[]>(\"MobileDeviceSummary\", CampaignId);\r\n }\r\n\r\n public async GetHourOfDayReads(CampaignId: any): Promise<HourOfDayRead[]> {\r\n return await this.ExecCustomGet<HourOfDayRead[]>(\"HourOfDayReads\", CampaignId);\r\n }\r\n\r\n public async GetLinkStats(CampaignId: any): Promise<LinkStat[]> {\r\n return await this.ExecCustomGet<LinkStat[]>(\"GetLinkStats\", CampaignId);\r\n }\r\n\r\n public async GetLocations(CampaignId: any): Promise<Location[]> {\r\n return await this.ExecCustomGet<Location[]>(\"Locations\", CampaignId);\r\n }\r\n \r\n public async GetReportStats(key:number): Promise<Report> {\r\n return await this.ExecCustomGet<Report>(\"GetReportStats\", key)\r\n }\r\n\r\n public async CreateCampaignByDateRange(dateRange: object): Promise<string> {\r\n return await this.ExecCustomCollectionAction<string>(\"CreateCampaignByDateRange\", dateRange)\r\n }\r\n\r\n public async GetCampaignReachMetrics(key:number): Promise<MonthlyEngagementMetric[]> {\r\n return await this.ExecCustomCollectionAction<MonthlyEngagementMetric[]>(\"GetCampaignReachMetrics\",{Id: key, filter: \"\"})\r\n }\r\n\r\n public async GetByTagId(ID: number, campaignId: number, dataQuery?:string): Promise<SentMessage[]> {\r\n return await this.ExecCustomCollectionAction<SentMessage[]>('Default.GetByTagId',\r\n {\r\n \"tagId\": ID,\r\n \"campaignId\" : campaignId\r\n },\r\n null,\r\n dataQuery);\r\n }\r\n\r\n public async HasSendsToProcess(campaignId: number): Promise<boolean> {\r\n let request = authenticatedAxios.get(\r\n encodeURI(\r\n `https://${\r\n window.location.hostname + ODataServerRoute\r\n }Campaigns/HasSendsToProcess?key=${campaignId}`\r\n )\r\n );\r\n return (await request).data.value as boolean\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Contact } from './../PoliteMailEntities/Models/Contact';\r\nimport { EmailAddress } from './../PoliteMailEntities/Models/EmailAddress';\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { Country } from '../PoliteMailEntities/Country';\r\nimport { CustomValue } from '../PoliteMailEntities/Models/CustomValue';\r\nimport { Organization } from '../PoliteMailEntities/Models/Organization';\r\nimport { FilterQueryBit } from '../../../Utils/Filtering/QueryBit';\r\n\r\nexport class ContactsODataService extends NativeOdataServiceBase<Contact> {\r\n\r\n\t/*Custom Actions*/\r\n public async GetContactByEmail(Email:String): Promise<Contact> {\r\n return await this.ExecCustomCollectionAction<Contact>('Default.GetContactByEmail',{\r\n email: Email\r\n });\r\n }\r\n public async GetEmailAddressByRefGuid(): Promise<EmailAddress> {\r\n return await this.ExecCustomCollectionAction<EmailAddress>('Default.GetEmailAddressByRefGuid', );\r\n }\r\n public async ImportComplete(): Promise<Boolean> {\r\n return await this.ExecCustomCollectionAction<Boolean>('Default.ImportComplete', );\r\n }\r\n public async CreateContact(contact:Contact): Promise<number> {\r\n return await this.ExecCustomCollectionAction<number>('CreateContact', {\r\n ID: contact.ID,\r\n FirstName: contact.FirstName,\r\n LastName: contact.LastName,\r\n DisplayName: contact.DisplayName,\r\n Email: contact.Email,\r\n OwnerID: contact.OwnerID,\r\n Shared: contact.Shared,\r\n BusinessID: contact.BusinessID,\r\n RegionID: contact.RegionID,\r\n ActiveState: contact.ActiveState,\r\n StageID: contact.StageID,\r\n Company: contact.Company,\r\n WebAddress: contact.WebAddress,\r\n Title: contact.Title,\r\n Notes: contact.Notes,\r\n ListIDs: contact.ListID.join(','),\r\n MobileNumber: contact.MobileNumber,\r\n FaxNumber: contact.FaxNumber,\r\n HomeNumber: contact.HomeNumber,\r\n Address1: contact.Address1,\r\n Address2: contact.Address2,\r\n City: contact.City,\r\n StateOrProvince: contact.StateOrProvince,\r\n PostalCode: contact.PostalCode,\r\n ClientCountry: contact.ClientCountry\r\n });\r\n }\r\n\r\n public async GetCountries(): Promise<Country[]> {\r\n return await this.ExecCustomCollectionAction<Country[]>('GetCountries');\r\n }\r\n\r\n public async AddCustomValueRelationship(contact_id:number, custom_values:CustomValue[]){\r\n return await this.ExecCustomCollectionAction<number>(\"AddCustomValueRelationship\", {\r\n contactId: contact_id,\r\n customValues: custom_values\r\n })\r\n }\r\n\r\n public async GetCustomValuesForContact(contact_id:number) {\r\n return await this.ExecCustomCollectionAction<CustomValue[]>('GetCustomValuesForContact',\r\n {\r\n contactId: contact_id\r\n })\r\n }\r\n\r\n public async GetContactOrgInfo(contact_id:number) {\r\n return await this.ExecCustomCollectionAction<Organization>('GetContactOrgInfo',\r\n {\r\n contactId: contact_id\r\n })\r\n }\r\n\r\n public async GetContactLists(contact_id:number) {\r\n return await this.ExecCustomCollectionAction<number[]>('GetContactLists',\r\n {\r\n contactId: contact_id\r\n })\r\n }\r\n\r\n public async SetListMembership(contact_id: number, listIds: number[]) {\r\n return await this.ExecCustomAction<number[]>(\r\n 'SetListMembership',\r\n contact_id,\r\n {\r\n ListIds: listIds\r\n }\r\n )\r\n }\r\n\r\n public async UpdateOrganization(org: Organization ): Promise<Organization> {\r\n return await this.ExecCustomAction<Organization>('UpdateOrganization',\r\n org.ID,\r\n {\r\n ID: org.ID,\r\n ActiveState: true,\r\n Address1: org.Address1,\r\n Address2: org.Address2,\r\n City: org.City,\r\n ClientCountry: org.ClientCountry.toString(),\r\n StateOrProvince: org.StateOrProvince,\r\n PostalCode: org.PostalCode\r\n }\r\n )\r\n }\r\n\r\n public async UpdateStageID(ContactID: number[], StageID: number): Promise<Boolean> {\r\n if (ContactID.length === 0)\r\n return;\r\n\r\n return await this.ExecCustomAction<Boolean>('UpdateContactStatus',\r\n StageID,\r\n {\r\n ID: ContactID\r\n }\r\n )\r\n }\r\n\r\n public async DoSimpleContactsSearch(searchString: string): Promise<{ Value: Contact[], Count: number }> {\r\n return await this.CustomGetAllWithPostDataAndFilter<Contact, { Search: string }>(\"DoSimpleContactsSearch\", {Search: searchString}, \"?$filter=true\").Exec();\r\n }\r\n\r\n public async DoContactsSearch(queryString: string, filter: FilterQueryBit[]): Promise<{ Value: Contact[], Count: number }>{\r\n return await this.CustomGetAllWithPostDataAndFilter<Contact, { filter: FilterQueryBit[] }>(\"DoContactsSearch\", {\r\n filter\r\n }, queryString).Exec();\r\n }\r\n\r\n public async FilterContacts(queryString: string, filter: FilterQueryBit[]): Promise<{ Value: Contact[], Count: number }>{\r\n\r\n return await this.CustomGetAllWithPostDataAndFilter<Contact, { filter: FilterQueryBit[] }>(\"FilterContacts\", {\r\n filter\r\n }, queryString).Exec();\r\n }\r\n\r\n public async SearchContactPropertiesForValue(fieldName: string, searchText: string): Promise<string[]>{\r\n return (await this.ExecCustomCollectionAction(`GetValuesForContactProperty?$top=10`, {\r\n FieldName: fieldName,\r\n Value: searchText\r\n }))\r\n }\r\n\r\n public GetContactPropertyNamesToValidateAgainst(): Promise<string[]> {\r\n return (this.ExecCustomCollectionAction<string[]>('GetContactPropertyNamesToValidateAgainst'));\r\n }\r\n\r\n constructor() {\r\n super('Contacts');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { CustomField } from './../PoliteMailEntities/Models/CustomField';\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class CustomFieldsODataService extends NativeOdataServiceBase<CustomField> {\r\n\r\n constructor() {\r\n super('CustomFields');\r\n }\r\n\r\n\t/*Custom Actions*/\r\n public async GetMaxCustomValuesPerFieldView(): Promise<number> {\r\n return await this.ExecCustomCollectionAction<number>('Default.GetMaxCustomValuesPerFieldView', );\r\n }\r\n\r\n public async GetSupportedDataTypes(): Promise<string[]> {\r\n return await this.ExecCustomCollectionAction<string[]>('Default.GetSupportedDataTypes', );\r\n }\r\n\r\n public async GetAllShown(): Promise<CustomField[]> {\r\n return (await this.GetAllWithFilter(\"?$filter=(Show eq true)\").Exec()).Value;\r\n }\r\n\r\n public async GetBadConversionCount(fieldID: number, convertToType: string): Promise<Number> {\r\n return (await this.ExecCustomCollectionAction<number>('GetBadConversionCount', { FieldID: fieldID, ConvertToType: convertToType}));\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Filter } from './../PoliteMailEntities/Models/Filter';\r\nimport { ODataContext } from './../ODataContext';\r\nimport { CustomValue } from './../PoliteMailEntities/Models/CustomValue';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class FiltersODataService extends NativeOdataServiceBase<Filter> {\r\n\r\n\t/*Custom Actions*/\r\n public async GetValuesFromFilter(FilterId: any): Promise<CustomValue[]> {\r\n return await this.ExecCustomGet<CustomValue[]>('GetValuesFromFilter', FilterId);\r\n }\r\n public async GetContactIdsFromValues(): Promise<Number[]> {\r\n return await this.ExecCustomCollectionAction<Number[]>('Default.GetContactIdsFromValues', );\r\n }\r\n public async UpdateFilterValues(filter:Filter): Promise<Boolean> {\r\n return await this.ExecCustomCollectionAction<Boolean>('UpdateFilterValues', {\r\n ID: filter.ID,\r\n Name: filter.Name,\r\n Description: filter.Description,\r\n Values: filter.Values.map(v => v.toString()).join(','),\r\n IncludeList: filter.IncludeList,\r\n ExcludeList: filter.ExcludeList,\r\n listId: filter.listId\r\n });\r\n }\r\n public async CountUsers(filter: number[]): Promise<number> {\r\n return await this.ExecCustomCollectionAction<number>('CountUsers', {values: filter});\r\n }\r\n\r\n constructor() {\r\n super('Filters');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { IFilterQueryBit } from 'Utils/Filtering/QueryBit';\r\nimport { ListFilter, IFilterStats, FilterExpressionGroup } from '@politemail/ui-components';\r\nimport QueryFactory from 'Utils/Filtering/QueryFactory';\r\nimport { List } from '../PoliteMailEntities/Models/List';\r\nimport { baseApi, RTKQueryTags } from 'store/features/baseApiSlice';\r\nimport { store } from 'store/store';\r\n\r\nexport class ListFiltersODataService extends NativeOdataServiceBase<ListFilter> {\r\n public HandleBadRequest = async(error) => {\r\n if (error?.Response instanceof Response && error?.Response?.status === 400)\r\n store.dispatch(baseApi.util.invalidateTags([{type: RTKQueryTags.AppSetting, id: 'FeatureFlags'}]));\r\n\r\n throw error;\r\n }\r\n\r\n /*Custom Actions*/\r\n public async GetFilterForListId(listId: any): Promise<ListFilter> {\r\n return await this.ExecCustomGet<ListFilter>('GetFilterForListId', listId).catch(this.HandleBadRequest);\r\n }\r\n\r\n public async GetAllListFilters(): Promise<ListFilter[]> {\r\n return await this.ExecCustomCollectionAction<ListFilter[]>('GetAllListFilters').catch(this.HandleBadRequest);\r\n }\r\n\r\n public async RefreshContactCacheIfNeeded(): Promise<void> {\r\n return await this.ExecCustomCollectionAction<void>('RefreshContactCacheIfNeeded').catch(this.HandleBadRequest);\r\n }\r\n\r\n public async ForceRefreshCache(): Promise<void> {\r\n return await this.ExecCustomCollectionAction<void>('ForceRefreshCache').catch(this.HandleBadRequest);\r\n }\r\n\r\n public async PostWithTypes(filter: ListFilter): Promise<ListFilter | string | number> {\r\n return await this.Post(filter, null, ListFilterSerializer).catch(this.HandleBadRequest);\r\n }\r\n\r\n public async PatchListFilter(filter: ListFilter): Promise<number | string> {\r\n return await this.Patch(filter.ID, filter, null, ListFilterSerializer).catch(this.HandleBadRequest);\r\n }\r\n\r\n public async CreateListFilterExpression(filter: IFilterQueryBit[]): Promise<FilterExpressionGroup>{\r\n return await this.ExecCustomCollectionAction<FilterExpressionGroup>(\"CreateListFilterExpression\", {\"filter\": filter}).catch(this.HandleBadRequest);\r\n }\r\n\r\n public async PreviewListFilter(filter: ListFilter): Promise<IFilterStats>{\r\n return await this.ExecCustomAction<IFilterStats>(\"PreviewListFilter\", '', {\"filter\": filter}, null, ListFilterPreviewSerializer).catch(this.HandleBadRequest);\r\n }\r\n\r\n public async GetFiltersThatUseCustomField(fieldID: number): Promise<{ Value: ListFilter[], Count: number }> {\r\n return await this.CustomGetWithFilter<ListFilter>(\r\n 'GetFiltersThatUseCustomField',\r\n fieldID,\r\n new QueryFactory().select([\"ListID\", \"Name\", \"Description\", \"ListFilterString\"]).count().toQuery()\r\n ).Exec().catch(this.HandleBadRequest);\r\n }\r\n\r\n public async GetCircularDependencyLists(listID: number): Promise<List[]> {\r\n return await this.ExecCustomGetWithParam<List[]>('GetCircularDependencyLists', `listID=${listID}`).catch(this.HandleBadRequest);\r\n }\r\n\r\n public async GetListDependencyCount(listIDs: number[]): Promise<number> {\r\n return await this.ExecCustomCollectionAction<number>('GetListDependencyCount', { ListIDs: listIDs }).catch(this.HandleBadRequest);\r\n }\r\n\r\n public async ValidateFilters(listIds: number[]): Promise<[{ ID: number, Data: string }]>{\r\n return await this.ExecCustomCollectionAction<[{ ID: number, Data: string }]>(\"ValidateFilter\", {\"ListIDs\": listIds}).catch(this.HandleBadRequest);\r\n }\r\n\r\n public async UpdateFilteredListMembership(listIds: number[]): Promise<[{ ID: number, Data: string }]>{\r\n return await this.ExecCustomCollectionAction<[{ ID: number, Data: string }]>(\"UpdateFilteredListMembership\", {\"ListIDs\": listIds}).catch(this.HandleBadRequest);\r\n }\r\n\r\n constructor() {\r\n super('ListFilters');\r\n }\r\n}\r\n\r\nexport function ListFilterSerializer(key: string, value: any) {\r\n if (key === '__type' || key === '@odata.context') {\r\n return undefined;\r\n }\r\n\r\n if (typeof value === \"object\" && '__type' in value) {\r\n value['@odata.type'] = value.__type;\r\n }\r\n\r\n if (typeof value === \"object\" && '@odata.context' in value) {\r\n let tokens = value['@odata.context'].split('#');\r\n if (tokens.length > 0)\r\n value['@odata.type'] = '#' + tokens[tokens.length - 1];\r\n }\r\n\r\n return value;\r\n}\r\n\r\nexport function ListFilterPreviewSerializer(key: string, value: any) {\r\n if (key === '__type' || key === '@odata.context') {\r\n return undefined;\r\n }\r\n\r\n if (typeof value === \"object\" && '__type' in value) {\r\n value['@odata.type'] = value.__type;\r\n }\r\n\r\n return value;\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { List } from './../PoliteMailEntities/Models/List';\r\n\r\nimport { CustomRequestInit, NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { Contact } from '../PoliteMailEntities/Models/Contact';\r\nimport { Location } from '../PoliteMailEntities/Models/Location';\r\nimport { SentMessage } from '../PoliteMailEntities/Models/SentMessage';\r\nimport { DeviceCount } from '../PoliteMailEntities/Models/DeviceCount';\r\nimport { Event } from '../../../Definitions/Generated/PoliteMailEntities/Models/Event';\r\nimport { HourOfDayRead } from '../PoliteMailEntities/Models/HourOfDayRead';\r\nimport { LinkStat } from '../PoliteMailEntities/Models/LinkStat';\r\nimport { FilterQueryBit } from '../../../Utils/Filtering/QueryBit';\r\nimport { MonthlyEngagementMetric } from '../PoliteMailEntities/Models/MonthlyEngagementMetric';\r\n\r\nexport class ListsODataService extends NativeOdataServiceBase<List> {\r\n\r\n\t/*Custom Actions*/\r\n public async SyncContactLists(): Promise<Boolean> {\r\n return await this.ExecCustomCollectionAction<Boolean>('Default.SyncContactLists', );\r\n }\r\n public async SyncSelectedContactLists(ListIds:number[]): Promise<Boolean> {\r\n return await this.ExecCustomCollectionAction<Boolean>('SyncSelectedContactLists', {\r\n \"listIds\": ListIds\r\n });\r\n }\r\n public async CreateHierarchyList(hierarchyEmail:string): Promise<String> {\r\n return await this.ExecCustomCollectionAction<String>('CreateHierarchyList', {email: hierarchyEmail} );\r\n }\r\n public async IsThereHierarchyData(): Promise<Boolean> {\r\n return await this.ExecCustomCollectionAction<Boolean>('Default.IsThereHierarchyData');\r\n }\r\n public async Length(ListId: any): Promise<number> {\r\n return await this.ExecCustomAction<number>('Default.Length', ListId);\r\n }\r\n public async AddContacts(ListId: any, ContactIds:number[]): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('AddContacts', ListId,{\r\n contacts:ContactIds\r\n });\r\n }\r\n public async AddEmails(ListId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.AddEmails', ListId);\r\n }\r\n public async RemoveEmails(ListId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.RemoveEmails', ListId);\r\n }\r\n public async RemoveContacts(ListId: number, ContactIds:number[]): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('RemoveContacts', ListId, {\r\n contacts: ContactIds\r\n });\r\n }\r\n public async AddContactsByFilter(ListId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.AddContactsByFilter', ListId);\r\n }\r\n public async IsReportable(ListId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.IsReportable', ListId);\r\n }\r\n public async DeleteListAndContacts(ListId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.DeleteListAndContacts', ListId);\r\n }\r\n public async NewList(): Promise<number> {\r\n return await this.ExecCustomCollectionAction<number>('Default.NewList', );\r\n }\r\n public async GetContacts(ListId: any, query: string, init?: CustomRequestInit): Promise<{ Value: Contact[], Count: number }> {\r\n return await this.CustomGetWithFilter<Contact>(\"Contacts\", ListId, query, init).Exec();\r\n }\r\n\r\n public async MergeLists(merge_ids: string, list_id: number): Promise<Boolean> {\r\n const body =\r\n {\r\n merge_ids: merge_ids,\r\n destination_list_id: list_id\r\n }\r\n return await this.ExecCustomCollectionAction<Boolean>('MergeLists', body);\r\n }\r\n public async IntersectLists(intersect_ids: string, list_id: number): Promise<Boolean> {\r\n const body =\r\n {\r\n intersect_ids: intersect_ids,\r\n destination_list_id: list_id\r\n }\r\n return await this.ExecCustomCollectionAction<Boolean>('IntersectLists', body);\r\n }\r\n public async UncommonLists(exclude_ids: string, list_id: number): Promise<Boolean> {\r\n const body =\r\n {\r\n uncommon_ids: exclude_ids,\r\n destination_list_id: list_id\r\n }\r\n return await this.ExecCustomCollectionAction<Boolean>('UncommonLists', body);\r\n }\r\n public async SubtractLists(subtract_ids: string, list_id: number, source_list_id: string): Promise<Boolean> {\r\n const body =\r\n {\r\n subtract_ids: subtract_ids,\r\n destination_list_id: list_id,\r\n source_list_id: source_list_id\r\n }\r\n return await this.ExecCustomCollectionAction<Boolean>('SubtractLists', body);\r\n }\r\n public async GetListIdByName(list_name: string): Promise<number> {\r\n const body =\r\n {\r\n list_name: list_name\r\n }\r\n return await this.ExecCustomCollectionAction<number>('GetListIdByName', body);\r\n }\r\n public async SetListMembersFromSplit(listId: number, new_list_id: number, start: number, stop: number, excludedContactsList: string): Promise<boolean> {\r\n const body =\r\n {\r\n listId: listId,\r\n new_list_id: new_list_id,\r\n start: start,\r\n stop: stop,\r\n excludedContactsList: excludedContactsList\r\n }\r\n return await this.ExecCustomCollectionAction<boolean>('SetListMembersFromSplit', body);\r\n }\r\n public async UpdateMetrics(ListIds: number[]): Promise<Boolean> {\r\n const idCollection: { listIds: number[] } = { listIds: ListIds }\r\n return await this.ExecCustomCollectionAction<Boolean>('UpdateMetrics', idCollection);\r\n }\r\n public async GetSentMessages(ListId: any): Promise<SentMessage[]> {\r\n return await this.ExecCustomGet<SentMessage[]>(\"SentMessages\", ListId);\r\n }\r\n public async GetEvents(ListId: any): Promise<Event[]> {\r\n return await this.ExecCustomGet<Event[]>(\"Events\", ListId);\r\n }\r\n public async GetDesktopDevices(ListId: any): Promise<DeviceCount[]> {\r\n return await this.ExecCustomGet<DeviceCount[]>(\"DesktopDeviceSummary\", ListId);\r\n }\r\n public async GetMobileDevices(ListId: any): Promise<DeviceCount[]> {\r\n return await this.ExecCustomGet<DeviceCount[]>(\"MobileDeviceSummary\", ListId);\r\n }\r\n public async GetHourOfDayReads(ListId: any): Promise<HourOfDayRead[]> {\r\n return await this.ExecCustomGet<HourOfDayRead[]>(\"HourOfDayReads\", ListId);\r\n }\r\n public async GetLinkStats(ListId: any): Promise<LinkStat[]> {\r\n return await this.ExecCustomGet<LinkStat[]>(\"GetLinkStats\", ListId);\r\n }\r\n public async GetLocations(ListId: any): Promise<Location[]> {\r\n return await this.ExecCustomGet<Location[]>(\"Locations\", ListId);\r\n }\r\n public async GetListReachMetrics(ListId: any): Promise<MonthlyEngagementMetric[]> {\r\n return await this.ExecCustomCollectionAction<MonthlyEngagementMetric[]>(\"GetListReachMetrics\", {\r\n Id: ListId,\r\n filter: \"\"\r\n });\r\n }\r\n public async GetContactsTemp(cacheId: any): Promise<string> {\r\n return await this.ExecCustomCollectionAction<string>(\r\n \"GetContactsTemp\", \r\n {\r\n \"cacheId\": cacheId\r\n });\r\n }\r\n\r\n public async DoContactsForListSearch(id: string, queryString: string, filter: FilterQueryBit[]): Promise<{ Value: Contact[], Count: number }>{\r\n return await this.CustomGetRelWithFilter<Contact, { filter: FilterQueryBit[] }>(id, \"DoContactsForListSearch\", {\r\n filter\r\n }, queryString).Exec();\r\n }\r\n\r\n constructor() {\r\n super('Lists');\r\n }\r\n}\r\n","\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { PreferencePage } from '../PoliteMailEntities/Models/PreferencePage';\r\n\r\nexport class PreferencesPagesODataService extends NativeOdataServiceBase<PreferencePage> {\r\n\r\n constructor() {\r\n super('PreferencesPages');\r\n }\r\n}","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Region } from './../PoliteMailEntities/Models/Region';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class RegionsODataService extends NativeOdataServiceBase<Region> {\r\n\r\n constructor() {\r\n super('Regions');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { ODataContext } from './../ODataContext';\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { ServerInfo } from '../PoliteMailEntities/Models/ServerInfo';\r\nimport Axios from 'axios';\r\nimport { authenticatedAxios } from '../../../..';\r\n\r\nexport class ServerInfosODataService extends NativeOdataServiceBase<ServerInfo> {\r\n public async ToggleSMTP(): Promise<ServerInfo> {\r\n return await this.ExecCustomCollectionAction<ServerInfo>('ToggleSMTP');\r\n }\r\n\r\n public async GetWatchFolders(outlookProfile:string): Promise<{Keys: string[], Values: string[]}> {\r\n return await this.ExecCustomCollectionAction<{ Keys: string[], Values: string[]}>('GetWatchFolders', {\r\n 'outlookProfile': outlookProfile\r\n });\r\n }\r\n\r\n public async EmptyQueue(): Promise<ServerInfo> {\r\n return await this.ExecCustomCollectionAction<ServerInfo>('EmptyQueue');\r\n }\r\n\r\n public async DeleteWatchFolder(Id: string | number): Promise<ServerInfo> {\r\n return await this.ExecCustomAction<ServerInfo>('DeleteWatchFolder', Id);\r\n }\r\n\r\n public async GetUserAgent(): Promise<string> {\r\n return await this.ExecCustomCollectionAction<string>('GetUserAgent');\r\n }\r\n\r\n public async GetIpAddress(): Promise<string> {\r\n return await this.ExecCustomCollectionAction<string>('GetIpAddress');\r\n }\r\n\r\n public async ExportSendData(startDate: Date, endDate: Date): Promise<any> {\r\n const ax = Axios.create({\r\n withCredentials: true\r\n });\r\n return await authenticatedAxios.post(this.entitySetUrl + `/ExportSendLog`, {\r\n startDate: startDate,\r\n endDate: endDate\r\n });\r\n }\r\n\r\n public async GetSendComplianceInfo(): Promise<string> {\r\n return await this.ExecCustomCollectionAction(\"SendComplianceInfo\");\r\n }\r\n\r\n public async GetClientVersion(): Promise<string> {\r\n return await this.ExecCustomGet<string>(\"GetClientVersion\", \"\")\r\n }\r\n\r\n public async ExportSendDataForScheduledSends(sendId: string | number) {\r\n const ax = Axios.create({\r\n withCredentials: true\r\n });\r\n return await authenticatedAxios.post(this.entitySetUrl + `/ExportSendLogByID`, {\r\n sendId: sendId\r\n });\r\n }\r\n\r\n constructor() {\r\n super('ServerInfos');\r\n }\r\n}","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Stage } from './../PoliteMailEntities/Models/Stage';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class StagesODataService extends NativeOdataServiceBase<Stage> {\r\n\r\n constructor() {\r\n super('Stages');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Tag } from './../PoliteMailEntities/Models/Tag';\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\ninterface IGetTagsForGroupIdProps {\r\n group_id: number\r\n}\r\n\r\nexport class TagsODataService extends NativeOdataServiceBase<Tag> {\r\n\r\n\t/*Custom Actions*/\r\n public async GetTagsForGroupID(groupId: number): Promise<Tag[]> {\r\n return await this.ExecCustomCollectionAction<Tag[]>('GetTagsForGroupID', {group_id: groupId});\r\n }\r\n\r\n constructor() {\r\n super('Tags');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Template } from '../PoliteMailEntities/Models/Template';\r\nimport { Tag } from '../PoliteMailEntities/Models/Tag';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport {ITaggableService} from \"../ITaggableSevice\";\r\n\r\nexport class TemplateODataService extends NativeOdataServiceBase<Template> implements ITaggableService<Template>{\r\n\r\n\t/*Custom Actions*/\r\n public async GetByTag(): Promise<Template[]> {\r\n return await this.ExecCustomCollectionAction<Template[]>('Default.GetByTag', );\r\n }\r\n public async GetByTagId(tagId: string | number, includeBody: boolean = false): Promise<Template[]> {\r\n return await this.ExecCustomCollectionAction<Template[]>('Default.GetByTagId', {tagId: tagId, includeBody: includeBody} );\r\n }\r\n public async GetTags(TemplateId: string | number): Promise<Tag[]> {\r\n return await this.ExecCustomAction<Tag[]>('GetTags', TemplateId);\r\n }\r\n public async GetAllTags(): Promise<Tag[]> {\r\n return await this.ExecCustomCollectionAction<Tag[]>('Default.GetAllTags', );\r\n }\r\n public async AddTag(TemplateId: string | number, tagName: string): Promise<Tag> {\r\n return await this.ExecCustomAction<Tag>('Default.AddTag', TemplateId, {tag: tagName});\r\n }\r\n public async RemoveTag(TemplateId: string | number, tagName: string): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.RemoveTag', TemplateId, {tag: tagName});\r\n }\r\n public async UpdateFrequency(TemplateId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.UpdateFrequency', TemplateId);\r\n }\r\n public async UpdateSharing(TemplateId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.UpdateSharing', TemplateId);\r\n }\r\n public async NewTemplate(): Promise<Number> {\r\n return await this.ExecCustomCollectionAction<Number>('Default.NewTemplate', );\r\n }\r\n public async GetTemplatesWithImage(): Promise<Template> {\r\n return await this.ExecCustomCollectionAction<Template>('Default.GetTemplatesWithImage', );\r\n }\r\n\r\n constructor() {\r\n super('Templates');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { TemplatePiece } from './../PoliteMailEntities/Models/TemplatePiece';\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class TemplatePiecesODataService extends NativeOdataServiceBase<TemplatePiece> {\r\n\r\n /*Custom Actions*/\r\n public async GetTemplatePieceByName(name: string, section: string): Promise<TemplatePiece> {\r\n return await this.ExecCustomCollectionAction<TemplatePiece>('GetTemplatePieceByName', { Name: name, Section: section });\r\n }\r\n public async GetTemplatePiecesForTheme(): Promise<TemplatePiece> {\r\n return await this.ExecCustomCollectionAction<TemplatePiece>('Default.GetTemplatePiecesForTheme',);\r\n }\r\n\r\n constructor() {\r\n super('TemplatePieces');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { TemplateTheme } from './../PoliteMailEntities/Models/TemplateTheme';\r\nimport { CustomRequestInit, NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { store } from 'store/store';\r\nimport { RTKQueryTags, baseApi } from 'store/features/baseApiSlice';\r\n\r\nexport class TemplateThemesODataService extends NativeOdataServiceBase<TemplateTheme> {\r\n public async Put(id: any, entity: TemplateTheme, init?: CustomRequestInit): Promise<TemplateTheme> {\r\n return super.Put(id, entity, init).then((result: TemplateTheme) => {\r\n store.dispatch(baseApi.util.invalidateTags([RTKQueryTags.TemplateTheme]));\r\n return result;\r\n });\r\n }\r\n\r\n constructor() {\r\n super('TemplateThemes');\r\n }\r\n\r\n public async GetThemeCount(): Promise<number> {\r\n return await this.ExecCustomCollectionFunction('$count');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Template } from './../PoliteMailEntities/Models/Template';\r\nimport { ODataContext } from './../ODataContext';\r\nimport { Tag } from './../PoliteMailEntities/Models/Tag';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { TemplateAttachment } from '../PoliteMailEntities/Models/TemplateAttachment';\r\n\r\nexport class TemplatesODataService extends NativeOdataServiceBase<Template> {\r\n\r\n\t/*Custom Actions*/\r\n public async GetByTag(tagName: string, includeBody: boolean = false, dataQuery?:string): Promise<Template[]> {\r\n return await this.ExecCustomCollectionAction<Template[]>('Default.GetByTag', {tag: tagName, includeBody: includeBody},null,dataQuery);\r\n }\r\n public async GetByTagId(): Promise<Template[]> {\r\n return await this.ExecCustomCollectionAction<Template[]>('Default.GetByTagId', );\r\n }\r\n public async GetTags(TemplateId: any): Promise<Tag[]> {\r\n return await this.ExecCustomAction<Tag[]>('Default.GetTags', TemplateId);\r\n }\r\n public async GetAllTags(): Promise<Tag[]> {\r\n return await this.ExecCustomCollectionAction<Tag[]>('Default.GetAllTags', );\r\n }\r\n public async AddTag(TemplateId: any): Promise<Tag> {\r\n return await this.ExecCustomAction<Tag>('Default.AddTag', TemplateId);\r\n }\r\n public async RemoveTag(TemplateId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.RemoveTag', TemplateId);\r\n }\r\n public async UpdateFrequency(TemplateId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.UpdateFrequency', TemplateId);\r\n }\r\n public async UpdateSharing(TemplateId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.UpdateSharing', TemplateId);\r\n }\r\n public async NewTemplate(): Promise<Number> {\r\n return await this.ExecCustomCollectionAction<Number>('Default.NewTemplate', );\r\n }\r\n public async GetTemplatesWithImage(): Promise<Template> {\r\n return await this.ExecCustomCollectionAction<Template>('Default.GetTemplatesWithImage', );\r\n }\r\n\r\n public async GetPortalNavigateParams(id: number): Promise<string> {\r\n return await this.ExecCustomGet<string>('GetPortalNavigateParams', id);\r\n }\r\n\r\n public async GetTemplateAttachments(id: number): Promise<TemplateAttachment[]> {\r\n return await this.ExecCustomGet<TemplateAttachment[]>('GetTemplateAttachments', id);\r\n }\r\n\r\n public async GetDraftTemplate(id: number): Promise<Template> {\r\n return await this.ExecCustomGet<Template>('GetDraftTemplate', id);\r\n }\r\n\r\n constructor() {\r\n super('Templates');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { User } from './../PoliteMailEntities/Models/User';\r\nimport { UserProfile } from './../PoliteMailEntities/Models/UserProfile';\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { ExtendedUser } from '../../../components/Pages/ProfilePages/UsersPage';\r\nimport { ExpansionModes } from '../PoliteMailEntities/Models/ExpandList';\r\n\r\nexport class UsersODataService extends NativeOdataServiceBase<User> {\r\n\r\n /*Custom Actions*/\r\n public async GetLicenseInfo(): Promise<Number[]> {\r\n return await this.ExecCustomCollectionAction<Number[]>('GetLicenseInfo');\r\n }\r\n public async GetCurrentUser(): Promise<UserProfile> {\r\n return await this.ExecCustomCollectionAction<UserProfile>('GetCurrentUser');\r\n }\r\n\r\n public async CheckIfEmailExists(email: string, userId: number): Promise<boolean> {\r\n return await this.ExecCustomCollectionAction<boolean>(\"CheckIfEmailExists\", {\r\n \"Email\": email,\r\n \"UserId\": userId\r\n });\r\n }\r\n\r\n public UpdateOrCreateUser(user: ExtendedUser): Promise<any> {\r\n return this.ExecCustomCollectionAction<User>('UpdateOrCreateUser', {\r\n ID: user.ID,\r\n ActiveState: user.ActiveState,\r\n AuthenticationType: user.AuthenticationType,\r\n FirstName: user.FirstName,\r\n LastName: user.LastName,\r\n Email: user.Email,\r\n UserType: user.UserType,\r\n Phone: user.Phone,\r\n Cell: user.Cell,\r\n Password: user.Password,\r\n BusinessID: user.BusinessID,\r\n RegionID: user.RegionID,\r\n PasswordReset: user.RequirePasswordReset,\r\n SendSetUpEmail: user.SendSetUpEmail,\r\n Name: user.FirstName + \" \" + user.LastName,\r\n LastLogin: user.LastLogin,\r\n Fax: user.Fax,\r\n WindowsAccount: user.WindowsAccount ?? \"\"\r\n });\r\n }\r\n\r\n public DeleteUsersByID(userIDs: string, mode: boolean, search: string): Promise<any> {\r\n let body =\r\n {\r\n Delete: userIDs,\r\n Search: search,\r\n Mode: mode\r\n }\r\n return this.ExecCustomCollectionAction<User>('DeleteUsersByID', body);\r\n }\r\n\r\n public GetUsersExpansionModes(): Promise<string[]> {\r\n return this.ExecCustomCollectionAction(\"GetExpansionModes\");\r\n } \r\n\r\n public SetUsersExpansionModes(activeModes:string): Promise<boolean> {\r\n return this.ExecCustomCollectionAction(\"SetExpansionModes\", {\r\n \"ExpansionModes\":activeModes\r\n });\r\n }\r\n\r\n public async IsAllowedCreateNewUser(): Promise<boolean> {\r\n return await this.ExecCustomCollectionAction<boolean>('IsAllowedCreateNewUser');\r\n }\r\n\r\n public GetReturnPath(): Promise<any> {\r\n return this.ExecCustomCollectionAction('GetReturnPath');\r\n }\r\n\r\n public SaveReturnPath(returnPath: string): Promise<any> {\r\n let body =\r\n {\r\n ReturnPath: returnPath\r\n }\r\n return this.ExecCustomCollectionAction('SaveReturnPath', body);\r\n }\r\n\r\n constructor() {\r\n super('Users');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { VerificationFromInfo } from '../PoliteMailEntities/Models/VerificationFromInfo';\r\n\r\nexport class VerificationFromInfosODataService extends NativeOdataServiceBase<VerificationFromInfo> {\r\n\t\r\n constructor() {\r\n super('VerificationFromInfos');\r\n }\r\n}\r\n","import { WhiteListFrom } from '../PoliteMailEntities/Models/WhiteListFrom';\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class WhiteListFromsODataService extends NativeOdataServiceBase<WhiteListFrom> {\r\n\r\n public async GetUserWhiteLists(id: string): Promise<WhiteListFrom[]> {\r\n return await this.ExecCustomGet<WhiteListFrom[]>(\"\", id);\r\n }\r\n\r\n constructor() {\r\n super('WhiteListFroms');\r\n }\r\n}","// Created by FuryTech.ODataTypeScriptGenerator\r\n\r\nexport enum DayOfTheWeek {\r\n Sunday = 0,\r\n Monday = 1,\r\n Tuesday = 2,\r\n Wednesday = 3,\r\n Thursday = 4,\r\n Friday = 5,\r\n Saturday = 6,\r\n Day = 7,\r\n Weekday = 8,\r\n WeekendDay = 9,\r\n\r\n}","export abstract class ODataOperation<T> {\r\n protected _expand!: string;\r\n protected _select!: string;\r\n\r\n /**\r\n * Sets the OData $expand= property\r\n * @param ...expand The field name(s) to be expanded\r\n */\r\n public Expand<K extends keyof T>(...expand: K[]) {\r\n this._expand = this.parseStringOrStringArray(...expand);\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the OData $select= property\r\n * @param ...select The field name(s) to be included in the OData Select\r\n */\r\n public Select<K extends keyof T>(...select: K[]) {\r\n this._select = this.parseStringOrStringArray(...select);\r\n return this;\r\n }\r\n\r\n /**\r\n * Executes the operation, should return an awaitable Promise\r\n */\r\n public abstract Exec(): Promise<any>;\r\n\r\n protected parseStringOrStringArray(...input: Array<string | number | symbol>): string {\r\n if (input instanceof Array) {\r\n return input.join(\",\");\r\n }\r\n\r\n return input as string;\r\n }\r\n}\r\n","import { ODataOperation } from \"./ODataOperation\";\r\n\r\nexport class ODataGetOperation<T> extends ODataOperation<T> {\r\n\r\n constructor(private evaluate: () => Promise<T>) {\r\n super();\r\n }\r\n\r\n /**\r\n * Executes the Get operation\r\n * @returns An awaitable Promise<T>\r\n */\r\n public async Exec(): Promise<T> {\r\n return await this.evaluate();\r\n }\r\n\r\n}\r\n","\r\ntype FilterArgs<T, K> = [K, string];\r\ntype FilterSegment<T> = ODataFilterExpression<T> | ODataFilterConnection<T>;\r\n\r\nexport class ODataFilterExpression<T>{\r\n\r\n private value: string = \"\";\r\n\r\n private getFilterValueSegment(value: any): string {\r\n let castedValue = value.toString();\r\n if (typeof value == \"string\" && !/^[0-9]*$/.test(castedValue)) {\r\n return `('${castedValue}')`;\r\n }\r\n\r\n return `(${castedValue})`;\r\n }\r\n\r\n constructor(public filterBuilderRef: ODataFilterBuilder<T>) { }\r\n\r\n private Finialize() {\r\n this.filterBuilderRef.filterSegments.push(this);\r\n return new ODataFilterConnection<T>(this.filterBuilderRef);\r\n }\r\n\r\n /**\r\n * Creates an instance of an Equals (~eq) filter segment\r\n * @param field The name of the field to check (String literal)\r\n * @param value The value to check\r\n * @returns The next ODataFilterConnection (Fluent)\r\n */\r\n\r\n public Equals<K extends keyof T>(field: K, value: any) {\r\n this.value = `${field} eq ${this.getFilterValueSegment(value)}`;\r\n return this.Finialize();\r\n }\r\n\r\n /**\r\n * Creates an instance of an Not Equals (~ne) filter segment\r\n * @param field The name of the field to check (String literal)\r\n * @param value The value to check\r\n * @returns The next ODataFilterConnection (Fluent)\r\n */\r\n public NotEquals<K extends keyof T>(field: K, value: any) {\r\n this.value = `${field} ne ${this.getFilterValueSegment(value)}'`;\r\n return this.Finialize();\r\n }\r\n\r\n /**\r\n * Creates an instance of a Greater Than (~gt) filter segment\r\n * @param field The name of the field to check (String literal)\r\n * @param value The value to check\r\n * @returns The next ODataFilterConnection (Fluent)\r\n */\r\n public GreaterThan<K extends keyof T>(field: K, value: any) {\r\n this.value = `${field} gt ${this.getFilterValueSegment(value)}`;\r\n return this.Finialize();\r\n }\r\n\r\n /**\r\n * Creates an instance of a Greater Than or Equals (~ge) filter segment\r\n * @param field The name of the field to check (String literal)\r\n * @param value The value to check\r\n * @returns The next ODataFilterConnection (Fluent)\r\n */\r\n public GreaterThanOrEquals<K extends keyof T>(field: K, value: any) {\r\n this.value = `${field} ge ${this.getFilterValueSegment(value)}`;\r\n return this.Finialize();\r\n }\r\n\r\n /**\r\n * Creates an instance of a Lesser Than (~lt) filter segment\r\n * @param field The name of the field to check (String literal)\r\n * @param value The value to check\r\n * @returns The next ODataFilterConnection (Fluent)\r\n */\r\n public LessThan<K extends keyof T>(field: K, value: any) {\r\n this.value = `${field} lt ${this.getFilterValueSegment(value)}`;\r\n return this.Finialize();\r\n }\r\n\r\n\r\n /**\r\n * Creates an instance of a Lesser Than or equals (~le) filter segment\r\n * @param field The name of the field to check (String literal)\r\n * @param value The value to check\r\n * @returns The next ODataFilterConnection (Fluent)\r\n */\r\n public LessThanOrEquals<K extends keyof T>(field: K, value: any) {\r\n this.value = `${field} le ${this.getFilterValueSegment(value)}`;\r\n return this.Finialize();\r\n }\r\n\r\n /**\r\n * Creates an instance of a HAS (~has) filter segment\r\n * @param field The name of the field to check (String literal)\r\n * @param value The value to check\r\n * @returns The next ODataFilterConnection (Fluent)\r\n */\r\n public Has<K extends keyof T>(field: K, value: any) {\r\n this.value = `${field} has ${this.getFilterValueSegment(value)}`;\r\n return this.Finialize();\r\n }\r\n\r\n /**\r\n * Creates an instance of a nested negated (~not) FilterBuilder object\r\n * @param build The fluent chain for the filter expression\r\n * @returns The next ODataFilterConnection (Fluent)\r\n */\r\n public Not<K extends keyof T>(build: (b: ODataFilterExpression<T>) => void) {\r\n let builder = ODataFilterBuilder.Create<T>();\r\n build(ODataFilterBuilder.Create<T>());\r\n this.value = `not (${builder.toString()})`;\r\n return this.Finialize();\r\n }\r\n\r\n /**\r\n * Creates an instance of a nested FilterBuilder object\r\n * @param build The fluent chain for the filter expression\r\n * @returns The next ODataFilterConnection (Fluent)\r\n */\r\n public BuildFilter(build: (b: ODataFilterExpression<T>) => void) {\r\n let builder = ODataFilterBuilder.Create<T>();\r\n build(ODataFilterBuilder.Create<T>());\r\n this.value = `(${builder.toString()})`;\r\n return this.Finialize();\r\n }\r\n\r\n /**\r\n * Gets the evaluated OData filter segment\r\n * @returns The OData filter segment\r\n */\r\n public toString(): string {\r\n return this.value;\r\n }\r\n\r\n}\r\n\r\nexport class ODataFilterConnection<T>{\r\n\r\n private type: 'and' | 'or' = \"and\";\r\n constructor(public filterBuilderRef: ODataFilterBuilder<T>) { }\r\n\r\n /**\r\n * Sets the connection between OData Filter expression segments to 'AND' type\r\n * @returns The next ODataFilterExpression (Fluent)\r\n */\r\n public get And() {\r\n this.type = \"and\";\r\n this.filterBuilderRef.filterSegments.push(this);\r\n return new ODataFilterExpression<T>(this.filterBuilderRef);\r\n }\r\n\r\n /**\r\n * Sets the connection between OData Filter expression segments to 'OR' type\r\n * @returns The next ODataFilterExpression (Fluent)\r\n */\r\n public get Or() {\r\n this.type = \"or\";\r\n this.filterBuilderRef.filterSegments.push(this);\r\n return new ODataFilterExpression<T>(this.filterBuilderRef);\r\n }\r\n\r\n public toString() {\r\n return this.type;\r\n }\r\n}\r\n\r\nexport class ODataFilterBuilder<T>{\r\n\r\n public filterSegments: FilterSegment<T>[] = [];\r\n\r\n\r\n /**\r\n * Factory method for creating ODataFilterBuilders\r\n * @returns The first ODataFilterExpression value for the ODataFilterBuilder\r\n */\r\n public static Create<T>(): ODataFilterExpression<T> {\r\n let builder = new ODataFilterBuilder<T>();\r\n let firstSegment = new ODataFilterExpression<T>(builder);\r\n return firstSegment;\r\n }\r\n\r\n\r\n /**\r\n * Evaluates the ODataFilterBuilder<T>'s segments into a parsed OData Filter expression\r\n * @returns The Filter query expression\r\n */\r\n public toString(): string {\r\n return this.filterSegments.map(s => s.toString()).join(' ');\r\n }\r\n}","import { ODataFilterBuilder, ODataFilterExpression } from './ODataFilterBuilder';\r\nimport { ODataOperation } from './ODataOperation';\r\nimport { ODataQueryResult } from './ODataQueryResult';\r\n\r\nexport class ODataQuery<T> extends ODataOperation<T> {\r\n private _filter!: string;\r\n private _top!: number;\r\n private _skip!: number;\r\n private _orderBy!: string;\r\n\r\n private evaluate: (queryString: string) => Promise<ODataQueryResult<T>>;\r\n\r\n private buildQueryUrl(): string {\r\n let url = '?';\r\n if (this._filter) { url += `$filter=${this._filter}&`; }\r\n if (this._top) { url += `$top=${this._top}&`; }\r\n if (this._skip) { url += `$skip=${this._skip}&`; }\r\n if (this._orderBy) { url += `$orderby=${this._orderBy}&`; }\r\n if (this._expand) { url += `$expand=${this._expand}&`; }\r\n if (this._select) { url += `$expand=${this._select}&`; }\r\n if (url === '?') url = '';\r\n return url;\r\n }\r\n\r\n constructor(_evaluate: (queryString: string) => Promise<ODataQueryResult<T>>) {\r\n super();\r\n this.evaluate = _evaluate;\r\n }\r\n\r\n /**\r\n * Sets the '$filter=' variable in the OData Query URL.\r\n * @param filter The plain text value for the odata $filter. Overrides the FilterBuilder\r\n * @returns the ODataQuery instance (Fluent)\r\n */\r\n public Filter(filter: string): ODataQuery<T> {\r\n this._filter = filter;\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * Builds a query expression for the OData Query\r\n * @param build The builder expression\r\n * @returns The ODataQuery instance (Fluent)\r\n */\r\n public BuildFilter(build: (b: ODataFilterExpression<T>) => void): ODataQuery<T> {\r\n let builder = ODataFilterBuilder.Create<T>();\r\n build(builder);\r\n this._filter = builder.filterBuilderRef.toString();\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the OData $top= query attribute\r\n * @param top The value to be returned by the query\r\n * @returns The ODataQuery instance (Fluent)\r\n */\r\n public Top(top: number): ODataQuery<T> {\r\n this._top = top;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the OData $skip= query attribute\r\n * @param skip The value to be skipped by the query\r\n * @returns The ODataQuery instance (Fluent)\r\n */\r\n public Skip(skip: number): ODataQuery<T> {\r\n this._skip = skip;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the OData $orderby= query attribute\r\n * @param orderBy The field name(s) in string\r\n * @returns The ODataQuery instance (Fluent)\r\n */\r\n public OrderBy<K extends keyof T>(...orderBy: K[]): ODataQuery<T> {\r\n this._orderBy = this.parseStringOrStringArray(...orderBy);\r\n return this;\r\n }\r\n\r\n /**\r\n * Executes the query. \r\n * @returns An awaitable promise with the query result.\r\n */\r\n public async Exec(): Promise<ODataQueryResult<T>> {\r\n let queryUrl = this.buildQueryUrl();\r\n return await this.evaluate(queryUrl);\r\n }\r\n}\r\n","import { ODataQuery } from './ODataQuery';\r\nimport { ODataGetOperation } from './ODataGetOperation';\r\n\r\nexport abstract class ODataServiceAbstract<T> {\r\n\r\n protected abstract entitySetUrl: string;\r\n\r\n public abstract GetAll(): ODataGetOperation<T[]>;\r\n\r\n /**\r\n * Creates an OData Get Operation object.\r\n * @param id The entity's unique identifier\r\n */\r\n public abstract Get(id: any): ODataGetOperation<T>;\r\n\r\n /**\r\n * Executes an OData Post Operation\r\n * @param entity the entity to be posted\r\n * @returns an awaitable promise with the created content\r\n */\r\n\r\n public abstract Post(entity: T): Promise<T>;\r\n\r\n /**\r\n * Executes an OData Patch Operation\r\n * @param id The entitie's unique identifier\r\n * @param entity's delta to be patched\r\n * @returns an awaitable promise\r\n */\r\n public abstract Patch(id: any, entity: T): Promise<T>;\r\n\r\n /**\r\n * Executes an OData Put Operation\r\n * @param id The entitie's unique identifier\r\n * @param entity the entity to be putted\r\n * @returns an awaitable promise with the putted content\r\n */\r\n public abstract Put(id: any, entity: T): Promise<T>;\r\n\r\n /**\r\n * Executes an OData Delete Operation\r\n * @param id The entity's unique identifier\r\n * @returns an awaitable promise\r\n */\r\n public abstract Delete(id: any): Promise<any>;\r\n\r\n /**\r\n * Executes a custom action on an OData entity\r\n * @param actionName The action's actionName\r\n * @param id The entity's unique identifier\r\n * @param ...args The other optional arguments\r\n * @returns An awaitable promise\r\n */\r\n protected abstract ExecCustomAction(actionName: string, id: any, ...args: any[]): Promise<any>;\r\n /**\r\n * Executes a custom action on an OData entity collection\r\n * @param actionName The action's actionName\r\n * @param ...args The other optional arguments\r\n * @returns An awaitable promise\r\n */\r\n protected abstract ExecCustomCollectionAction(actionName: string, ...args: any[]): Promise<any>;\r\n\r\n /**\r\n * Executes a custom function on an OData entity\r\n * @param actionName The action's actionName\r\n * @param id The entity's unique identifier\r\n * @param ...args The other optional arguments\r\n * @returns An awaitable promise\r\n */\r\n protected abstract ExecCustomFunction(fucntionName: string, id: any, ...args: any[]): Promise<any>;\r\n /**\r\n * Executes a custom function on an OData entity collection\r\n * @param actionName The action's actionName\r\n * @param ...args The other optional arguments\r\n * @returns An awaitable promise\r\n */\r\n protected abstract ExecCustomCollectionFunction(fucntionName: string, ...args: any[]): Promise<any>;\r\n\r\n /**\r\n * Creates an OData Query object\r\n * @param id The entitie's unique identifier\r\n * @param entity the entity to be posted\r\n * @returns an awaitable promise with the created content\r\n */\r\n public abstract Query(): ODataQuery<T>;\r\n\r\n protected getEntityUriSegment(entityKey: any): string {\r\n entityKey = entityKey.toString();\r\n if (!/^[0-9]*$/.test(entityKey)) {\r\n return `('${entityKey}')`;\r\n }\r\n\r\n return `(${entityKey})`;\r\n }\r\n}\r\n","import * as Excel from 'exceljs'\r\nimport { ODataContext } from \"./ODataContext\";\r\nimport { ODataError } from \"./ODataError\";\r\nimport { ODataGetOperation } from \"./ODataGetOperation\";\r\nimport { ODataQuery } from \"./ODataQuery\";\r\nimport { ODataServiceAbstract } from \"./ODataServiceAbstract\";\r\nimport { ODataQueryResult } from \"./ODataQueryResult\";\r\nimport \"isomorphic-fetch\"\r\nimport { GlobalEventManager } from \"../../Utils/GlobalEvents\";\r\nimport { Download } from \"../../Utils/FileUtils\";\r\nimport { ExportFormat } from \"../CommandBarDefinitions\";\r\nimport { ODataQueryBuilder } from \"Utils/ODataQueryBuilder\";\r\nimport { PMHistory } from \"Utils/HistoryUtils\";\r\nimport { IPMColumn } from \"Definitions/GridColumnDefinitions\";\r\n\r\nexport interface CustomRequestInit {\r\n requestInit: RequestInit,\r\n columns: IPMColumn[],\r\n}\r\n\r\nexport abstract class NativeOdataServiceBase<T> extends ODataServiceAbstract<T> {\r\n private contentType = 'application/json; charset=utf-8';\r\n // public customHeaders: HeadersInit[] = [];\r\n\r\n public static defaultInit: RequestInit = {\r\n credentials: 'include',\r\n headers: {\r\n 'Accept': 'application/json',\r\n }\r\n }\r\n\r\n public static excelExportInit: RequestInit = {\r\n credentials: 'include',\r\n headers: {\r\n 'Accept': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n }\r\n }\r\n\r\n public static csvExportInit: RequestInit = {\r\n credentials: 'include',\r\n headers: {\r\n 'Accept': 'text/csv',\r\n }\r\n }\r\n\r\n public static UpdateAuthHeader(token: string) {\r\n\r\n }\r\n\r\n public static GetExportInitFromType(type: ExportFormat, columns: IPMColumn[]): CustomRequestInit {\r\n if(type !== ExportFormat.EXCEL && type !== ExportFormat.CSV) return null;\r\n return {\r\n requestInit: type === ExportFormat.EXCEL ? NativeOdataServiceBase.excelExportInit : NativeOdataServiceBase.csvExportInit,\r\n columns: columns\r\n }\r\n }\r\n\r\n public get entitySetUrl(): string {\r\n return ODataContext.ODataRootPath + this.entitySetUrlSegment;\r\n }\r\n\r\n constructor(public entitySetUrlSegment: string) {\r\n super();\r\n }\r\n\r\n\r\n public GetAll(init?: CustomRequestInit): ODataGetOperation<T[]> {\r\n const entityUri = this.entitySetUrl;\r\n return new ODataGetOperation<T[]>(async () => {\r\n return await this.extractResponse<T[]>(entityUri, init);\r\n });\r\n }\r\n\r\n public GetAllWithFilter(query: string, init?: CustomRequestInit): ODataGetOperation<{ Value: T[], Count: number }> {\r\n const entityUri = this.entitySetUrl + (query ?? \"\");\r\n\r\n return new ODataGetOperation<{ Value: T[], Count: number }>(async () => {\r\n return await this.extractResponseWithCount<T[]>(entityUri, init);\r\n });\r\n }\r\n\r\n public CustomGetWithFilter<T>(actionName: string, entityId: any, query: string, init?: CustomRequestInit): ODataGetOperation<{ Value: T[], Count: number }> {\r\n const entityUri = this.getUriForEntity(entityId) + `/${actionName}${query ?? \"\"}`;\r\n\r\n return new ODataGetOperation<{ Value: T[], Count: number }>(async () => {\r\n return await this.extractResponseWithCount<T[]>(entityUri, init);\r\n });\r\n }\r\n\r\n public getCustomRequest(method: string, data: any, init?: CustomRequestInit, customSerializer?: (key: string, value: any) => any) {\r\n return {\r\n requestInit: {\r\n ...{\r\n method: method,\r\n body: JSON.stringify(data, customSerializer),\r\n headers: {\r\n ...NativeOdataServiceBase.defaultInit.headers,\r\n 'Authorization': ODataQueryBuilder.AuthorizeHeader,\r\n 'Content-Type': this.contentType\r\n },\r\n },\r\n ...init?.requestInit\r\n },\r\n ...init\r\n };\r\n }\r\n\r\n public getCustomRequestSimple(method: string, init?: CustomRequestInit) {\r\n return {\r\n requestInit: {\r\n ...{\r\n method: method,\r\n },\r\n ...init?.requestInit\r\n },\r\n ...init\r\n };\r\n }\r\n\r\n public CustomGetAllWithPostDataAndFilter<T, TData = {}>(actionName: string, postData: TData, query: string, init?: CustomRequestInit): ODataGetOperation<{ Value: T[], Count: number }> {\r\n const reqInit = this.getCustomRequest('POST', postData, init);\r\n\r\n return new ODataGetOperation<{ Value: T[], Count: number }>(async () => {\r\n return await this.extractResponseWithCount<T[]>(this.entitySetUrl + `/${actionName}${query}`, reqInit);\r\n });\r\n }\r\n\r\n public CustomGetRelWithFilter<T, TData = {}>(id: string, actionName: string, postData: TData, query: string, init?: CustomRequestInit): ODataGetOperation<{ Value: T[], Count: number }> {\r\n const reqInit = this.getCustomRequest('POST', postData, init);\r\n\r\n return new ODataGetOperation<{ Value: T[], Count: number }>(async () => {\r\n return await this.extractResponseWithCount<T[]>(this.getUriForEntity(id) + `/${actionName}${query ?? \"\"}`, reqInit);\r\n });\r\n }\r\n\r\n /**\r\n * Creates an OData Get Operation object.\r\n * @param id The entity's unique identifier\r\n */\r\n public Get(id: any, init?: CustomRequestInit): ODataGetOperation<T> {\r\n const entityUri = this.getUriForEntity(id);\r\n return new ODataGetOperation<T>(async () => {\r\n return await this.extractResponse<T>(entityUri, init);\r\n });\r\n }\r\n\r\n\r\n public GetWithFilter(id:any, query: string, init?: CustomRequestInit): ODataGetOperation<T> {\r\n const entityUri = this.getUriForEntity(id) + (query ?? \"\");\r\n return new ODataGetOperation<T>(async () => {\r\n return await this.extractResponse<T>(entityUri, init);\r\n });\r\n }\r\n\r\n /**\r\n * Executes an OData Post Operation\r\n * @param entity the entity to be posted\r\n * @returns an awaitable promise with the created content\r\n */\r\n public async Post(entity: T, init?: CustomRequestInit, customSerializer?: (key: string, value: any) => any): Promise<T> {\r\n const reqInit = this.getCustomRequest('POST', entity, init, customSerializer);\r\n\r\n return await this.extractResponse<T>(this.entitySetUrl, reqInit);\r\n }\r\n\r\n /**\r\n * Executes an OData Patch Operation\r\n * @param id The entitie's unique identifier\r\n * @param entity's delta to be patched\r\n * @returns an awaitable promise\r\n */\r\n public async Patch(id: any, entity: any, init?: CustomRequestInit, customSerializer?: (key: string, value: any) => any): Promise<any> {\r\n const reqInit = this.getCustomRequest('PATCH', entity, init, customSerializer);\r\n\r\n return await this.extractResponse(this.getUriForEntity(id), reqInit);\r\n }\r\n\r\n /**\r\n * Executes an OData Put Operation\r\n * @param id The entitie's unique identifier\r\n * @param entity the entity to be putted\r\n * @returns an awaitable promise with the putted content\r\n */\r\n public async Put(id: any, entity: T, init?: CustomRequestInit): Promise<T> {\r\n const reqInit = this.getCustomRequest('PUT', entity, init);\r\n\r\n return await this.extractResponse<T>(this.getUriForEntity(id), reqInit);\r\n }\r\n\r\n /**\r\n * Executes an OData Delete Operation\r\n * @param id The entity's unique identifier\r\n * @returns an awaitable promise\r\n */\r\n public async Delete(id: any, init?: CustomRequestInit): Promise<any> {\r\n const reqInit = this.getCustomRequestSimple('DELETE', init);\r\n\r\n return await this.extractResponse<T>(this.getUriForEntity(id), reqInit);\r\n }\r\n\r\n /**\r\n * Creates an OData Query object\r\n * @param id The entitie's unique identifier\r\n * @param entity the entity to be posted\r\n * @returns an awaitable promise with the created content\r\n */\r\n public Query(): ODataQuery<T> {\r\n const evaluateQuery = async (queryString: string): Promise<ODataQueryResult<T>> => {\r\n const url = this.entitySetUrl + \"/\" + (queryString ?? \"\");\r\n return this.extractResponse<ODataQueryResult<T>>(url);\r\n };\r\n\r\n return new ODataQuery(evaluateQuery);\r\n }\r\n\r\n protected getUriForEntity(id: any): string {\r\n return this.entitySetUrl + this.getEntityUriSegment(id);\r\n }\r\n\r\n /**\r\n * Executes a custom action on an OData entity\r\n * @param actionName The action's actionName\r\n * @param id The entity's unique identifier\r\n * @param ...args The other optional arguments\r\n * @returns An awaitable promise\r\n */\r\n protected async ExecCustomAction<TReturns, TData = {}>(actionName: string, entityId: any, postData?: TData, init?: CustomRequestInit, customSerializer?: (key: string, value: any) => any): Promise<TReturns> {\r\n const reqInit = this.getCustomRequest('POST', postData, init, customSerializer);\r\n\r\n return await this.extractResponse<TReturns>(this.getUriForEntity(entityId) + `/${actionName}`, reqInit)\r\n }\r\n\r\n protected async ExecCustomGet<TReturns, TData = {}>(actionName: string, entityId: any, init?: CustomRequestInit): Promise<TReturns> {\r\n const reqInit = this.getCustomRequestSimple('GET', init);\r\n\r\n return await this.extractResponse<TReturns>(this.getUriForEntity(entityId) + `/${actionName}`, reqInit);\r\n }\r\n\r\n protected async ExecCustomGetWithData<TReturns, TData = {}>(actionName: string, entityId: any, dataQuery:string, init?: CustomRequestInit): Promise<TReturns> {\r\n const reqInit = this.getCustomRequestSimple('GET', init);\r\n\r\n return await this.extractResponse<TReturns>(this.getUriForEntity(entityId) + `/${actionName}(${dataQuery ?? \"\"})`, reqInit);\r\n }\r\n\r\n /**\r\n * Executes a custom action on an OData entity collection\r\n * @param actionName The action's actionName\r\n * @param ...args The other optional arguments\r\n * @returns An awaitable promise\r\n */\r\n protected async ExecCustomCollectionAction<TReturns, TData = {}>(actionName: string, postData?: TData, init?: CustomRequestInit, dataQuery?:string, customSerializer?: (key: string, value: any) => any): Promise<TReturns> {\r\n const reqInit = this.getCustomRequest('POST', postData, init, customSerializer);\r\n\r\n return await this.extractResponse<TReturns>(this.entitySetUrl + `/${actionName}` + (dataQuery ?? ''), reqInit);\r\n }\r\n\r\n /**\r\n * Executes a custom function on an OData entity\r\n * @param functionName The fucntion's name\r\n * @param query Function arguments\r\n * @param ...args The other optional arguments\r\n * @returns An awaitable promise\r\n */\r\n protected async ExecCustomGetWithParam<TReturns,>(functionName: string, query: string): Promise<TReturns> {\r\n return await this.extractResponse<TReturns>(this.entitySetUrl + `/${functionName}(${query})`);\r\n }\r\n\r\n /**\r\n * Executes a custom function on an OData entity\r\n * @param actionName The action's actionName\r\n * @param id The entity's unique identifier\r\n * @param ...args The other optional arguments\r\n * @returns An awaitable promise\r\n */\r\n protected async ExecCustomFunction<TReturns>(functionName: string, entityId: any): Promise<TReturns> {\r\n return await this.extractResponse<TReturns>(this.getUriForEntity(entityId) + `/${functionName}`)\r\n }\r\n\r\n /**\r\n * Executes a custom function on an OData entity collection\r\n * @param actionName The action's actionName\r\n * @param ...args The other optional arguments\r\n * @returns An awaitable promise\r\n */\r\n protected async ExecCustomCollectionFunction<TReturns>(functionName: string): Promise<TReturns> {\r\n return await this.extractResponse<TReturns>(this.entitySetUrl + `/${functionName}`)\r\n }\r\n\r\n private getExportName(extension: string){\r\n return `PoliteMail ${PMHistory.GetBottom()?.Cell?.Name} Export${extension}`\r\n }\r\n\r\n private async remapCSVResponse(response: Response, columns?: IPMColumn[]) {\r\n if(!columns || columns.length === 0)\r\n return response.blob();\r\n\r\n const csvLines = (await response.text()).split('\\r\\n');\r\n if(columns.length === csvLines[0].split(',').length)\r\n csvLines[0] = columns.map(c => c.name).join(',');\r\n else {\r\n const columnNames = new Map(columns.map(c => [c.fieldName, c.name]));\r\n csvLines[0] = csvLines[0].split(',').map(originalName => columnNames.get(originalName) ?? originalName).join(',');\r\n }\r\n const modifiedCsvText = csvLines.join('\\r\\n');\r\n return new Blob([modifiedCsvText], { type: 'text/csv'});\r\n }\r\n \r\n private async remapExcelResponse(response: Response, columns?: IPMColumn[]) {\r\n if(!columns || columns.length === 0)\r\n return response.blob();\r\n\r\n \r\n let buffer = await response.arrayBuffer();\r\n const workbook = new Excel.Workbook();\r\n await workbook.xlsx.load(buffer);\r\n const worksheet = workbook.worksheets[0];\r\n const header = worksheet.getRow(1);\r\n if(columns.length === header.cellCount) {\r\n const columnNames = columns.map(c => c.name);\r\n header.eachCell((cell, colNumber) => {\r\n cell.value = columnNames[colNumber - 1] ?? cell.value;\r\n });\r\n }\r\n else {\r\n const columnNames = new Map(columns.map(c => [c.fieldName, c.name]));\r\n header.eachCell((cell, _) => {\r\n cell.value = columnNames.get(cell.value.toString()) ?? cell.value; \r\n });\r\n }\r\n \r\n header.commit();\r\n workbook.clearThemes(); //don't know why but without this the workbook is corrupted and excel has to fix it\r\n\r\n buffer = await workbook.xlsx.writeBuffer();\r\n return new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});\r\n }\r\n\r\n private async extractResponseWithCount<T>(input?: Request | string, init?: CustomRequestInit): Promise<{ Value: T, Count: number }> {\r\n var initReq = {\r\n ...NativeOdataServiceBase.defaultInit,\r\n ...init?.requestInit\r\n };\r\n (initReq.headers as any)[\"Authorization\"] = ODataQueryBuilder.AuthorizeHeader;\r\n if ((initReq.headers as any)[\"Accept\"] === \"application/json\") { \r\n const response = await fetch(input, initReq);\r\n\r\n try {\r\n if (response.status == 401) {\r\n GlobalEventManager.SessionExpired();\r\n }\r\n\r\n if (!response.ok) {\r\n throw new ODataError(response);\r\n }\r\n\r\n if (response.status === 204) {\r\n return null;\r\n }\r\n const body = await response.json();\r\n if (body === null) {\r\n return null;\r\n }\r\n\r\n const entity = (body.value || body.value === false) ? body.value as T : body as T;\r\n\r\n if (typeof (entity) === 'undefined') {\r\n return null;\r\n }\r\n\r\n let count = body[\"@odata.count\"] as number;\r\n\r\n\r\n if (typeof (count) === 'undefined')\r\n count = -1;\r\n\r\n return { Value: entity, Count: count };\r\n } catch {\r\n return null;\r\n }\r\n }\r\n else if ((initReq.headers as any)[\"Accept\"] === \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\") {\r\n await fetch(input, initReq).then(\r\n response => this.remapExcelResponse(response, init?.columns)\r\n ).then(\r\n blob => {\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, this.getExportName('.xlsx'));\r\n }\r\n else {\r\n Download(URL.createObjectURL(blob), this.getExportName('.xlsx'));\r\n }\r\n }\r\n );\r\n }\r\n else if ((initReq.headers as any)[\"Accept\"] === \"text/csv\") {\r\n await fetch(input, initReq).then(\r\n response => this.remapCSVResponse(response, init?.columns)\r\n ).then(\r\n blob => {\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, this.getExportName('.csv'));\r\n }\r\n else {\r\n Download(URL.createObjectURL(blob), this.getExportName('.csv'));\r\n }\r\n }\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private async extractResponse<T>(input?: Request | string, init?: CustomRequestInit): Promise<T> {\r\n var initReq = {\r\n ...NativeOdataServiceBase.defaultInit,\r\n ...init?.requestInit\r\n };\r\n (initReq.headers as any)[\"Authorization\"] = ODataQueryBuilder.AuthorizeHeader;\r\n if ((initReq.headers as any)[\"Accept\"] === \"application/json\") {\r\n const response = await fetch(input, {\r\n ...NativeOdataServiceBase.defaultInit,\r\n ...init?.requestInit\r\n });\r\n\r\n try {\r\n if (response?.status === 401) {\r\n GlobalEventManager.SessionExpired();\r\n }\r\n if (!response.ok) {\r\n throw new ODataError(response);\r\n }\r\n if (response.status === 204) {\r\n return null;\r\n }\r\n const body = await response.json();\r\n if (body === null) {\r\n return null;\r\n }\r\n\r\n const entity = (body.value != undefined || body.value === false) ? body.value as T : body as T;\r\n if (typeof (entity) === 'undefined') {\r\n return null;\r\n }\r\n\r\n return entity;\r\n }\r\n catch (e){\r\n return Promise.reject(e);\r\n }\r\n }\r\n else {\r\n if ((initReq.headers as any)[\"Accept\"] === \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\") {\r\n await fetch(input, initReq).then(\r\n response => this.remapExcelResponse(response, init?.columns)\r\n ).then(\r\n blob => {\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, this.getExportName('.xlsx'));\r\n } else {\r\n Download(URL.createObjectURL(blob), this.getExportName('.xlsx'));\r\n }\r\n }\r\n );\r\n } else if ((initReq.headers as any)[\"Accept\"] === \"text/csv\") {\r\n await fetch(input, initReq).then(\r\n response => this.remapCSVResponse(response, init?.columns) \r\n ).then(\r\n blob => {\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, this.getExportName('.csv'));\r\n } else {\r\n Download(URL.createObjectURL(blob), this.getExportName('.csv'));\r\n }\r\n }\r\n );\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","// \r\n\r\nexport class ODataContext {\r\n //public static MetadataPath = `${process.env.API_URL}/Public/$metadata`;\r\n public static MetadataPath = `/Public/$metadata`;\r\n //public static ODataRootPath = `${process.env.API_URL}/api/odata/`;\r\n public static ODataRootPath = `/api/odata/`;\r\n public static CreationDate = '2019-11-04 12:05:25';\r\n public static ODataVersion = '4.0';\r\n}\r\n","export class ODataError implements Error {\r\n public Response: Response;\r\n public name: string;\r\n public message: string;\r\n\r\n constructor(response: Response) {\r\n this.name = \"OData Request Error\";\r\n this.message = response.statusText;\r\n this.Response = response;\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Category } from './../PoliteMailEntities/Models/Category';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class CategoriesODataService extends NativeOdataServiceBase<Category> {\r\n\r\n constructor() {\r\n super('Categories');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { ContactRead } from './../PoliteMailEntities/Models/ContactRead';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class ContactReadsODataService extends NativeOdataServiceBase<ContactRead> {\r\n\r\n constructor() {\r\n super('ContactReads');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Image } from '../PoliteMailEntities/Models/Image';\r\nimport { Tag } from '../PoliteMailEntities/Models/Tag';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport {ITaggableService} from \"../ITaggableSevice\";\r\n\r\nexport class ImagesODataService extends NativeOdataServiceBase<Image> implements ITaggableService<Image>{\r\n\r\n /*Custom Actions*/\r\n public async GetByTag(tagName: string, dataQuery?:string): Promise<Image[]> {\r\n return await this.ExecCustomCollectionAction<Image[]>('Default.GetByTag', {tag: tagName}, null, dataQuery);\r\n }\r\n public async GetByTagId(tagId: string | number): Promise<Image[]> {\r\n return await this.ExecCustomCollectionAction<Image[]>('Default.GetByTagId', {tagId: tagId});\r\n }\r\n public async GetTags(ImageId: string | number): Promise<Tag[]> {\r\n return await this.ExecCustomAction<Tag[]>('Default.GetTags', ImageId);\r\n }\r\n public async GetAllTags(): Promise<Tag[]> {\r\n return await this.ExecCustomCollectionAction<Tag[]>('Default.GetAllTags',);\r\n }\r\n public async AddTag(ImageId: string | number, tagName: string): Promise<Tag> {\r\n return await this.ExecCustomAction<Tag>('Default.AddTag', ImageId, {tag: tagName});\r\n }\r\n public async RemoveTag(ImageId: string | number, tagName: string): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.RemoveTag', ImageId, {tag: tagName});\r\n }\r\n public async UpdateFrequency(ImageId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.UpdateFrequency', ImageId);\r\n }\r\n public async NewImage(image: Image): Promise<Image> {\r\n return await this.ExecCustomCollectionAction<Image>('NewImage', {\r\n Name: image.Name,\r\n ContentType: image.ContentType,\r\n Data: image.Data,\r\n OwnerID: image.OwnerID,\r\n Shared: image.Shared,\r\n BusinessID: image.BusinessID,\r\n RegionID: image.RegionID,\r\n Privacy: image.Privacy,\r\n Dimensions: image.Dimensions || \"\",\r\n });\r\n }\r\n public async ReplaceImage(): Promise<Image> {\r\n return await this.ExecCustomCollectionAction<Image>('Default.ReplaceImage',);\r\n }\r\n\r\n public async ResizeImage(image: Image): Promise<Image> {\r\n return await this.ExecCustomCollectionAction<Image>('ResizeImage', {\r\n Name: image.Name,\r\n ContentType: image.ContentType,\r\n Data: image.Data,\r\n OwnerID: image.OwnerID,\r\n Shared: image.Shared,\r\n BusinessID: image.BusinessID,\r\n RegionID: image.RegionID,\r\n Privacy: image.Privacy\r\n });\r\n }\r\n\r\n public async OverlayImage(image: Image, overlayImage: Image): Promise<string> {\r\n return await this.ExecCustomCollectionAction<string>('OverlayImage', {\r\n baseImage: image,\r\n overlayImage: overlayImage,\r\n });\r\n }\r\n\r\n public async SaveOverlayImage(overlayedImage: Image, name: string): Promise<Image> {\r\n return await this.ExecCustomCollectionAction<Image>('SaveOverlayImage', {\r\n overlayedImage: overlayedImage,\r\n name: name,\r\n });\r\n }\r\n\r\n public async IsImageNameTaken(imageName: string): Promise<boolean> {\r\n const data = await this.ExecCustomCollectionAction<boolean>('IsImageNameTaken', {name: imageName});\r\n return data;\r\n }\r\n\r\n public async GetImageFromUrl(url: string): Promise<string> {\r\n\r\n return await this.ExecCustomCollectionAction<string>('GetImageFromUrl', { url: url });\r\n }\r\n\r\n constructor() {\r\n super('Images');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Link } from './../PoliteMailEntities/Models/Link';\r\nimport { ODataContext } from './../ODataContext';\r\nimport { Tag } from './../PoliteMailEntities/Models/Tag';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport {ITaggableService} from \"../ITaggableSevice\";\r\n\r\nexport class LinksODataService extends NativeOdataServiceBase<Link> implements ITaggableService<Link>{\r\n\r\n\t/*Custom Actions*/\r\n\r\n public async GetByTag(tagName: string, dataQuery?:string): Promise<Link[]> {\r\n return await this.ExecCustomCollectionAction<Link[]>('Default.GetByTag', \r\n {tag: tagName}, null, dataQuery);\r\n }\r\n public async GetByTagId(tagId: string | number): Promise<Link[]> {\r\n return await this.ExecCustomCollectionAction<Link[]>('Default.GetByTagId', {tagId: tagId} );\r\n }\r\n public async GetTags(LinkId: string | number): Promise<Tag[]> {\r\n return await this.ExecCustomAction<Tag[]>('Default.GetTags', LinkId);\r\n }\r\n public async GetAllTags(): Promise<Tag[]> {\r\n return await this.ExecCustomCollectionAction<Tag[]>('Default.GetAllTags', );\r\n }\r\n public async AddTag(LinkId: string | number, tagName: string): Promise<Tag> {\r\n return await this.ExecCustomAction<Tag>('Default.AddTag', LinkId, {tag: tagName});\r\n }\r\n public async RemoveTag(LinkId: string | number, tagName: string): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.RemoveTag', LinkId, {tag: tagName});\r\n }\r\n public async UpdateFrequency(LinkId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.UpdateFrequency', LinkId);\r\n }\r\n public async GetUserLinks(): Promise<Link[]> {\r\n return await this.ExecCustomCollectionAction<Link[]>('Default.GetUserLinks', );\r\n }\r\n public async GetUserLinksWithFilter(dataQuery?:string): Promise<{ Value: Link[], Count: number }> {\r\n return await this.CustomGetAllWithPostDataAndFilter<Link>('Default.GetUserLinks', {}, dataQuery).Exec();\r\n }\r\n public async GetLinkByNameAndUrl(linkName: string, url: string): Promise<Link> {\r\n return await this.ExecCustomCollectionAction<Link>('Default.GetLinkByNameAndUrl', {Name : linkName, Url: url});\r\n }\r\n constructor() {\r\n super('Links');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { OptIn } from './../PoliteMailEntities/Models/OptIn';\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { OptInField } from '../PoliteMailEntities/Models/OptInField';\r\nimport { OptInSettings } from '../PoliteMailEntities/Models/OptInSettings';\r\n\r\nexport class OptInsODataService extends NativeOdataServiceBase<OptIn> {\r\n\r\n public async GetOptInFields(ListId: number): Promise<OptInField[]> {\r\n return await this.ExecCustomCollectionFunction<OptInField[]>(`GetOptInFields(key = ${ListId})`);\r\n }\r\n\r\n public async GetOptInSettings(ListId: number): Promise<OptInSettings> {\r\n return await this.ExecCustomCollectionFunction<OptInSettings>(`GetOptInSettings(key = ${ListId})`);\r\n }\r\n\r\n public async SaveOptInFields(settingsId: number, fields: OptInField[]): Promise<boolean> {\r\n return await this.ExecCustomCollectionAction<boolean>(`SaveOptInFields`, { id: settingsId, fields: fields } );\r\n }\r\n\r\n public async SaveOptInSettings(listId: number, settings: OptInSettings): Promise<boolean> {\r\n return await this.ExecCustomCollectionAction<boolean>(`SaveOptInSettings`, { listId: listId, settings: settings });\r\n }\r\n\r\n constructor() {\r\n super('OptIns');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { OptOut } from './../PoliteMailEntities/Models/OptOut';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class OptOutsODataService extends NativeOdataServiceBase<OptOut> {\r\n\r\n\t/*Custom Actions*/\r\n public async SetSubscriptionFeature(useSubscription: boolean): Promise<boolean> {\r\n return await this.ExecCustomCollectionAction<boolean>('SetSubscriptionFeature', { enabled: useSubscription });\r\n }\r\n public async GetSubscriptionFeature(): Promise<boolean> {\r\n return await this.ExecCustomCollectionAction<boolean>('GetSubscriptionFeature');\r\n }\r\n\r\n constructor() {\r\n super('OptOuts');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Paragraph } from '../PoliteMailEntities/Models/Paragraph';\r\nimport { Tag } from '../PoliteMailEntities/Models/Tag';\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport {ITaggableService} from \"../ITaggableSevice\";\r\n\r\nexport class ParagraphsODataService extends NativeOdataServiceBase<Paragraph> implements ITaggableService<Paragraph>{\r\n\r\n\t/*Custom Actions*/\r\n public async GetByTag(tagName: string, dataQuery?:string): Promise<Paragraph[]> {\r\n return await this.ExecCustomCollectionAction<Paragraph[]>('Default.GetByTag', {tag: tagName}, null, dataQuery);\r\n }\r\n public async GetByTagId(tagId: string | number): Promise<Paragraph[]> {\r\n return await this.ExecCustomCollectionAction<Paragraph[]>('Default.GetByTagId', {tagId: tagId} );\r\n }\r\n public async GetTags(ParagraphId: string | number): Promise<Tag[]> {\r\n return await this.ExecCustomAction<Tag[]>('Default.GetTags', ParagraphId);\r\n }\r\n public async GetAllTags(): Promise<Tag[]> {\r\n return await this.ExecCustomCollectionAction<Tag[]>('Default.GetAllTags', );\r\n }\r\n public async AddTag(ParagraphId: string | number, tagName: string): Promise<Tag> {\r\n return await this.ExecCustomAction<Tag>('Default.AddTag', ParagraphId, {tag: tagName});\r\n }\r\n public async RemoveTag(ParagraphId: string | number, tagName: string): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.RemoveTag', ParagraphId, {tag: tagName});\r\n }\r\n public async UpdateFrequency(ParagraphId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.UpdateFrequency', ParagraphId);\r\n }\r\n public async SaveParagraph(data: Paragraph): Promise<Paragraph> {\r\n return await this.ExecCustomCollectionAction<Paragraph>('Default.SaveParagraph', { newParagraph: data });\r\n }\r\n public async UpdateParagraph(data: Paragraph): Promise<Paragraph> {\r\n return await this.ExecCustomCollectionAction<Paragraph>('Default.UpdateParagraph', { paragraph: data });\r\n }\r\n constructor() {\r\n super('Paragraphs');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Read } from './../PoliteMailEntities/Models/Read';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class ReadsODataService extends NativeOdataServiceBase<Read> {\r\n\r\n constructor() {\r\n super('Reads');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { ScheduledSend } from './../PoliteMailEntities/Models/ScheduledSend';\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport {Recipient} from \"../PoliteMailEntities/Models/Recipient\";\r\nimport { TemplateAttachment } from '../PoliteMailEntities/Models/TemplateAttachment';\r\n\r\nexport class ScheduledSendsODataService extends NativeOdataServiceBase<ScheduledSend> {\r\n\r\n public async GetScheduledSend(id: number):Promise<ScheduledSend>{\r\n return this.Get(id).Exec();\r\n }\r\n\r\n \t/*Custom Actions*/\r\n public async AddContacts(ScheduledSendId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.AddContacts', ScheduledSendId);\r\n }\r\n public async AddEmails(ScheduledSendId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.AddEmails', ScheduledSendId);\r\n }\r\n public async RemoveEmails(ScheduledSendId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.RemoveEmails', ScheduledSendId);\r\n }\r\n public async RemoveContacts(ScheduledSendId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.RemoveContacts', ScheduledSendId);\r\n }\r\n public async GetRecipients(sendId: number): Promise<Recipient[]> {\r\n return await this.ExecCustomGet<Recipient[]>('Recipients', sendId );\r\n }\r\n public async GetAttachments(sendId: number): Promise<TemplateAttachment[]> {\r\n return await this.ExecCustomCollectionAction<TemplateAttachment[]>('GetAttachments', { sendId } );\r\n }\r\n public async DeleteMultipleScheduledSends(scheduledSends: number[]): Promise<any> {\r\n const body =\r\n {\r\n scheduledSends: scheduledSends \r\n }\r\n return await this.ExecCustomCollectionAction('Default.DeleteMultipleScheduledSends', body);\r\n }\r\n\r\n constructor() {\r\n super('ScheduledSends');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { SmartAttachment } from '../PoliteMailEntities/Models/SmartAttachment';\r\nimport { Tag } from '../PoliteMailEntities/Models/Tag';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport {ITaggableService} from \"../ITaggableSevice\";\r\n\r\nexport class SmartAttachmentsODataService extends NativeOdataServiceBase<SmartAttachment> implements ITaggableService<SmartAttachment>{\r\n\r\n\t/*Custom Actions*/\r\n public async GetByTag(tagName: string, dataQuery?:string): Promise<SmartAttachment[]> {\r\n return await this.ExecCustomCollectionAction<SmartAttachment[]>('Default.GetByTag', {tag: tagName}, null, dataQuery);\r\n }\r\n public async GetByTagId(tagId: string | number): Promise<SmartAttachment[]> {\r\n return await this.ExecCustomCollectionAction<SmartAttachment[]>('Default.GetByTagId', {tagId: tagId} );\r\n }\r\n public async GetTags(SmartAttachmentId: string | number): Promise<Tag[]> {\r\n return await this.ExecCustomAction<Tag[]>('Default.GetTags', SmartAttachmentId);\r\n }\r\n public async GetAllTags(): Promise<Tag[]> {\r\n return await this.ExecCustomCollectionAction<Tag[]>('Default.GetAllTags', );\r\n }\r\n public async AddTag(SmartAttachmentId: string | number, tagName: string): Promise<Tag> {\r\n return await this.ExecCustomAction<Tag>('Default.AddTag', SmartAttachmentId, {tag: tagName});\r\n }\r\n public async RemoveTag(SmartAttachmentId: string | number, tagName: string): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.RemoveTag', SmartAttachmentId, {tag: tagName});\r\n }\r\n public async UpdateFrequency(SmartAttachmentId: any): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.UpdateFrequency', SmartAttachmentId);\r\n }\r\n public async NewAttachment(): Promise<number> {\r\n return await this.ExecCustomCollectionAction<number>('Default.NewAttachment', );\r\n }\r\n\r\n constructor() {\r\n super('SmartAttachments');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { SocialMediaLink } from './../PoliteMailEntities/Models/SocialMediaLink';\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { DeviceCount } from '../PoliteMailEntities/Models/DeviceCount';\r\n\r\nimport { HourOfDayRead } from '../PoliteMailEntities/Models/HourOfDayRead';\r\nimport { HourOfDayMetrics } from '../PoliteMailEntities/Models/HourOfDayMetrics';\r\nimport { DateRange } from 'components/Pages/ResultsPages/MetricsViewReportPage';\r\n\r\nexport interface IDateRange{\r\n StartDate: Date;\r\n EndDate: Date;\r\n}\r\n\r\ninterface IRequestBody{\r\n Id: any;\r\n startDate?: Date;\r\n endDate?: Date;\r\n}\r\n\r\nexport interface ExternalLinkDetails {\r\n ClickCount: number;\r\n DesktopClickCount: number;\r\n MobileClickCount: number;\r\n DesktopClickPercent: number;\r\n MobileClickPercent: number;\r\n}\r\n\r\nexport class SocialMediaLinksODataService extends NativeOdataServiceBase<SocialMediaLink> {\r\n\r\n constructor() {\r\n super('SocialMediaLinks');\r\n }\r\n\r\n public async GetTrackingURLHeader(): Promise<string> {\r\n return await this.ExecCustomCollectionAction<string>('GetTrackingURLHeader');\r\n }\r\n public async GetMobileDevices(SocialLinkId: any): Promise<DeviceCount[]> {\r\n return await this.ExecCustomGet<DeviceCount[]>(\"GetTopDevices\", SocialLinkId);\r\n }\r\n public async GetClicksByHour(SocialLinkId: any): Promise<HourOfDayRead[]> {\r\n let requestBody: IRequestBody = {Id: SocialLinkId};\r\n\r\n return await this.ExecCustomCollectionAction<HourOfDayRead[]>(\"GetClicksByHour\", requestBody);\r\n }\r\n public async GetTopDevices(SocialLinkId: any, dateRange: DateRange): Promise<DeviceCount[]> {\r\n let requestBody: IRequestBody = {Id: SocialLinkId};\r\n\r\n if(dateRange){\r\n requestBody.startDate = dateRange.StartDate;\r\n requestBody.endDate = dateRange.EndDate\r\n }\r\n return await this.ExecCustomCollectionAction<DeviceCount[]>(\"GetTopDevices\", requestBody);\r\n }\r\n \r\n public async GetExternalLinkReferrers(SocialLinkId: any, dateRange?: DateRange): Promise<DeviceCount[]> {\r\n let requestBody: IRequestBody = {Id: SocialLinkId};\r\n\r\n if(dateRange){\r\n requestBody.startDate = dateRange.StartDate;\r\n requestBody.endDate = dateRange.EndDate\r\n }\r\n return await this.ExecCustomCollectionAction<DeviceCount[]>(\"GetExternalLinkReferrers\", requestBody);\r\n }\r\n public async GetExternalLinkDetail(SocialLinkId: any, dateRange?: IDateRange): Promise<ExternalLinkDetails> {\r\n let requestBody: IRequestBody = {Id: SocialLinkId};\r\n\r\n if(dateRange){\r\n requestBody.startDate = dateRange.StartDate;\r\n requestBody.endDate = dateRange.EndDate\r\n }\r\n\r\n return await this.ExecCustomCollectionAction<ExternalLinkDetails>(\"GetExternalLinkDetail\", requestBody);\r\n }\r\n\r\n public async GetExternalLinkDates(SocialLinkId: any): Promise<IDateRange> {\r\n return await this.ExecCustomGet(\"GetExternalLinkDates\", SocialLinkId)\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Survey } from './../PoliteMailEntities/Models/Survey';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class SurveysODataService extends NativeOdataServiceBase<Survey> {\r\n\r\n public async GetSurveyGuids(SurveyIds: number[]): Promise<Survey[]> {\r\n if(!Array.isArray(SurveyIds) || !SurveyIds.length)\r\n return [];\r\n \r\n return (await this.GetAllWithFilter(`?$select=ID,GUID&$filter=ID in (${SurveyIds.join(\",\")})`).Exec()).Value;\r\n }\r\n\r\n constructor() {\r\n super('Surveys');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { SurveyAllowedAnswer } from './../PoliteMailEntities/Models/SurveyAllowedAnswer';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class SurveyAllowedAnswersODataService extends NativeOdataServiceBase<SurveyAllowedAnswer> {\r\n\r\n constructor() {\r\n super('SurveyAllowedAnswers');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { SurveyQuestion } from './../PoliteMailEntities/Models/SurveyQuestion';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class SurveyQuestionsODataService extends NativeOdataServiceBase<SurveyQuestion> {\r\n\r\n constructor() {\r\n super('SurveyQuestions');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { GroupLabel } from './../PoliteMailEntities/Models/GroupLabel';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class GroupLabelsODataService extends NativeOdataServiceBase<GroupLabel> {\r\n\r\n constructor() {\r\n super('GroupLabels');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { SentMessage } from './../PoliteMailEntities/Models/SentMessage';\r\nimport { MeetingResult } from './../PoliteMailEntities/Models/MeetingResult';\r\nimport { Tag } from './../PoliteMailEntities/Models/Tag';\r\nimport { CustomRequestInit, NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { ContactRead } from '../PoliteMailEntities/Models/ContactRead';\r\nimport { ContactClick } from '../PoliteMailEntities/Models/ContactClick';\r\nimport { ContactReply } from '../PoliteMailEntities/Models/ContactReply';\r\nimport { ContactUndeliverable } from '../PoliteMailEntities/Models/ContactUndeliverable';\r\nimport { ContactOutOfOffice } from '../PoliteMailEntities/Models/ContactOutOfOffice';\r\nimport { ContactOptOut } from '../PoliteMailEntities/Models/ContactOptOut';\r\nimport { Click } from '../PoliteMailEntities/Models/Click';\r\nimport { Read } from '../PoliteMailEntities/Models/Read';\r\nimport { OptOut } from '../PoliteMailEntities/Models/OptOut';\r\nimport { OutOfOffice } from '../PoliteMailEntities/Models/OutOfOffice';\r\nimport { LinkBI } from '../PoliteMailEntities/Models/LinkBI';\r\nimport { Interaction } from '../../../components/Pages/ResultsPages/RecentInteractionsPage';\r\nimport { Report } from '../PoliteMailEntities/Models/Report';\r\nimport { Reply } from '../PoliteMailEntities/Models/Reply';\r\nimport { ReadabilityStatistics } from '../PoliteMailEntities/Models/ReadabilityStatistics';\r\nimport { FilterQueryBit } from 'Utils/Filtering/QueryBit';\r\nimport { authenticatedAxios } from '../../../..';\r\nimport {AxiosResponse} from \"axios\";\r\nimport {SentItem} from \"../PoliteMailEntities/Models/SentItem\";\r\n\r\nexport class SentMessagesODataService extends NativeOdataServiceBase<SentMessage> {\r\n\r\n\t/*Custom Actions*/\r\n public async AddSubList(SentMessageId: number, SegmentName:string, ContactIds: number[]): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('AddSubList', SentMessageId, {\r\n name: SegmentName,\r\n contacts: ContactIds\r\n });\r\n }\r\n public async CombineSublists(SentMessageId: any, ids:number[], nSublistName: string): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.CombineSublists', SentMessageId, {\r\n \"sublistIds\": ids,\r\n \"name\": nSublistName\r\n });\r\n }\r\n public async IntersectSublists(SentMessageId: any, ids:number[], nSublistName: string): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.IntersectSublists', SentMessageId, {\r\n \"sublistIds\": ids,\r\n \"name\": nSublistName\r\n });\r\n }\r\n public async UncommonSublists(SentMessageId: any, ids:number[], nSublistName: string): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.UncommonSublists', SentMessageId, {\r\n \"sublistIds\": ids,\r\n \"name\": nSublistName\r\n });\r\n }\r\n public async SubtractSublists(SentMessageId: any, ids:number[], nSublistName: string, baseList:number): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.SubtractSublists', SentMessageId, {\r\n \"sublistIds\": ids,\r\n \"name\": nSublistName,\r\n \"baseList\":baseList\r\n });\r\n }\r\n public async UpdateMetrics(Ids: number[]): Promise<Boolean> {\r\n let idCollection : any = { sentmessages: Ids }\r\n return await this.ExecCustomCollectionAction<Boolean>('UpdateMetrics', idCollection);\r\n }\r\n public async ArchiveMessage(Id: number): Promise<Boolean> {\r\n let sentMessageID: any = {sentMessageID: Id}\r\n return await this.ExecCustomCollectionAction<Boolean>('ArchiveMessage', sentMessageID);\r\n }\r\n public async Send(): Promise<Boolean> {\r\n return await this.ExecCustomCollectionAction<Boolean>('Default.Send', );\r\n }\r\n public async GetAppointmentDataForSentMessage(messageId: number): Promise<MeetingResult> {\r\n return await this.ExecCustomCollectionAction<MeetingResult>('Default.GetAppointmentDataForSentMessage', {key: messageId});\r\n }\r\n public async GetByTag(): Promise<SentMessage[]> {\r\n return await this.ExecCustomCollectionAction<SentMessage[]>('Default.GetByTag', );\r\n }\r\n public async GetByTagId(ID: number, Value: string, dataQuery?: string): Promise<SentMessage[]> {\r\n return await this.ExecCustomCollectionAction<SentMessage[]>('Default.GetByTagId',\r\n {\r\n \"tagId\": ID,\r\n \"tagValue\": Value,\r\n },\r\n null,\r\n dataQuery);\r\n }\r\n public async GetTags(SentMessageId: any): Promise<Tag[]> {\r\n return await this.ExecCustomAction<Tag[]>('Default.GetTags', SentMessageId);\r\n }\r\n public async GetTagsByGuid(SentMessageGuid: string): Promise<Tag[]> {\r\n return await this.ExecCustomCollectionAction<Tag[]>('GetTagsByGuid', \r\n {\r\n \"entityGuid\": SentMessageGuid\r\n });\r\n }\r\n public async GetSentMessageByGuid(): Promise<SentMessage> {\r\n return await this.ExecCustomCollectionAction<SentMessage>('Default.GetSentMessageByGuid', );\r\n }\r\n public async AddTag(Tag: string, TagGroupId: number, messageGuid: string): Promise<Boolean> {\r\n return await this.ExecCustomCollectionAction<Boolean>(\r\n 'AddTag',\r\n {\r\n 'tag' : Tag,\r\n 'groupId': TagGroupId,\r\n 'messageGuid': messageGuid\r\n }\r\n );\r\n }\r\n\r\n public async DeleteSegment(Id): Promise<Boolean> {\r\n return await this.ExecCustomCollectionAction<Boolean>(\r\n 'DeleteSegment',\r\n {\r\n 'id': Id\r\n }\r\n );\r\n }\r\n\r\n public async UpdateTag(Tag: string, OldTag: string, TagGroupId: number, messageGuid: string): Promise<Boolean> {\r\n return await this.ExecCustomCollectionAction<Boolean>(\r\n 'UpdateTag',\r\n {\r\n 'tag' : Tag,\r\n 'oldTag': OldTag,\r\n 'groupId': TagGroupId,\r\n 'messageGuid': messageGuid\r\n }\r\n );\r\n }\r\n public async RemoveTag(SentMessageId: number, tagName: string): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.RemoveTag', SentMessageId, {tag: tagName});\r\n }\r\n public async RemoveTagByGuid(messageGuid: string, tagId: number): Promise<Boolean> {\r\n return await this.ExecCustomCollectionAction<Boolean>('Default.RemoveTagByGuid', {tagId: tagId, messageGuid: messageGuid});\r\n }\r\n public async GetContactReads(SentMessageId:number, query:string, init?: CustomRequestInit): Promise<{Value: ContactRead[], Count:number}>{\r\n return await this.CustomGetWithFilter<ContactRead>(\"ContactReads\", SentMessageId, query, init).Exec();\r\n }\r\n public async GetContactsForSend(SentMessageId:number, query:string, init?: CustomRequestInit): Promise<{Value: ContactRead[], Count:number}>{\r\n return await this.CustomGetWithFilter<ContactRead>(\"GetContactsForSend\", SentMessageId, query, init).Exec();\r\n }\r\n public async GetContactDidntOpen(SentMessageId:number, query:string, init?: CustomRequestInit): Promise<{Value: ContactRead[], Count:number}>{\r\n return await this.CustomGetWithFilter<ContactRead>(\"GetContactDidntOpen\", SentMessageId, query, init).Exec();\r\n }\r\n public async GetContactClicks(SentMessageId:number, query:string, init?: CustomRequestInit): Promise<{Value: ContactClick[], Count:number}>{\r\n return await this.CustomGetWithFilter<ContactClick>(\"ContactClicks\", SentMessageId, query, init).Exec();\r\n }\r\n public async GetContactClicksByLink(sentMessageId:number, linkId: number, query: string): Promise<ContactClick[]>{\r\n return await this.ExecCustomCollectionAction<ContactClick[]>(\"GetContactClicksByLink\", { SentMessageId: sentMessageId, ActionId: linkId }, null, query);\r\n }\r\n public async GetContactReplies(SentMessageId: number, query:string, init?: CustomRequestInit): Promise<{Value: ContactReply[], Count:number}>{\r\n return await this.CustomGetWithFilter<ContactReply>(\"ContactReplies\", SentMessageId, query, init).Exec();\r\n }\r\n public async GetReplies(SentMessageId: number, query: string, init?: CustomRequestInit): Promise<{ Value: Reply[], Count: number }> {\r\n return await this.CustomGetWithFilter<Reply>(\"Replies\", SentMessageId, query, init).Exec();\r\n }\r\n public async GetContactUndeliverables(SentMessageId: number, query: string, init?: CustomRequestInit): Promise<{Value: ContactUndeliverable[], Count:number}>{\r\n return await this.CustomGetWithFilter<ContactUndeliverable>(\"ContactUndeliverables\", SentMessageId, query, init).Exec()\r\n }\r\n public async GetContactOutOfOffices(SentMessageId: number, query: string, init?: CustomRequestInit): Promise<{Value: ContactOutOfOffice[], Count:number}>{\r\n return await this.CustomGetWithFilter<ContactOutOfOffice>(\"ContactOutOfOffices\", SentMessageId, query, init).Exec();\r\n }\r\n public async GetContactOptOuts(SentMessageId: number, query:string, init?: CustomRequestInit): Promise<{Value: ContactOptOut[], Count:number}>{\r\n return await this.CustomGetWithFilter<ContactOptOut>(\"ContactOptOuts\", SentMessageId, query, init).Exec();\r\n }\r\n public async GetClicks(SentMessageId: number, query: string, init?: CustomRequestInit): Promise<{ Value: Click[], Count: number }> {\r\n return await this.CustomGetWithFilter<Click>(\"Clicks\", SentMessageId, query, init).Exec();\r\n }\r\n public async GetReads(SentMessageId: number, query: string, init?: CustomRequestInit): Promise<{ Value: Read[], Count: number }> {\r\n return await this.CustomGetWithFilter<Read>(\"Reads\", SentMessageId, query, init).Exec();\r\n }\r\n public async OutOfOffice(SentMessageId: number, query:string): Promise<{Value: OutOfOffice[], Count:number}> {\r\n return await this.CustomGetWithFilter<OutOfOffice>(\"OutOfOffice\", SentMessageId, query).Exec();\r\n }\r\n public async OptOut(SentMessageId: number, query:string): Promise<{Value: OptOut[], Count:number}> {\r\n return await this.CustomGetWithFilter<OptOut>(\"OptOut\", SentMessageId, query).Exec();\r\n }\r\n public async GetSubLists(SentMessageId: number, query:string, init?: CustomRequestInit): Promise<{Value: SentMessage[], Count:number}> {\r\n return await this.CustomGetWithFilter<SentMessage>(\"SubLists\", SentMessageId, query, init).Exec();\r\n }\r\n\r\n public async GetLinkBis(SentMessageId: number, query: string): Promise<{ Value: LinkBI[], Count: number }> {\r\n return await this.CustomGetWithFilter<LinkBI>(\"LinkBis\", SentMessageId, query).Exec();\r\n }\r\n\r\n public async GetArchiveStatus(sentMessageID: number, reportTypeID: number) : Promise<boolean> {\r\n let ids: any = {\r\n sentMessageID: sentMessageID,\r\n reportTypeID: reportTypeID\r\n };\r\n return await this.ExecCustomCollectionAction<boolean>(\"GetArchiveStatus\", ids);\r\n }\r\n\r\n public async GetAllBoundsInfos(messageIds:number[]) : Promise<boolean> {\r\n let data: any = {\r\n messageIds: messageIds.join(',')\r\n };\r\n return await this.ExecCustomCollectionAction<boolean>(\"GetAllBoundsForSentMessages\", data);\r\n }\r\n\r\n public async CheckAllBoundsInfos(): Promise<boolean> {\r\n return await this.ExecCustomCollectionFunction<boolean>(\"CheckAllBoundsForSentMessages\");\r\n }\r\n\r\n public async RestoreSendFromArchive(sentMessageID: number) : Promise<boolean> {\r\n let id: any = {\r\n sentMessageID: sentMessageID,\r\n };\r\n return await this.ExecCustomCollectionAction<boolean>(\"RestoreSendFromArchive\", id);\r\n }\r\n\r\n public async GetRealTimeData(): Promise<Interaction[]> {\r\n return await this.ExecCustomCollectionFunction<Interaction[]>(\"GetRealTimeData\");\r\n }\r\n\r\n public async GetReportStats(sentMessageId: number): Promise<Report> {\r\n return await this.ExecCustomFunction<Report>(\"GetReportStats\", sentMessageId)\r\n }\r\n\r\n public async UpdateAggregateSentMessageCount(sentMessageId: number, newCount: number): Promise<boolean>{\r\n return await this.ExecCustomCollectionAction<boolean>(\"UpdateAggregateSentMessageCount\", {\r\n 'message_id': sentMessageId,\r\n 'new_count': newCount\r\n })\r\n }\r\n\r\n public async CalculateReadabilityStatistics(htmlBody: string, textBody: string): Promise<ReadabilityStatistics>{\r\n return await this.ExecCustomCollectionAction<ReadabilityStatistics>(\"CalculateReadabilityStatistics\", {\r\n 'htmlBody': htmlBody,\r\n 'textBody': textBody, \r\n })\r\n }\r\n\r\n public async DoSentMessageSearch(queryString: string, filter: FilterQueryBit[]): Promise<{ Value: SentMessage[], Count: number }>{\r\n return await this.CustomGetAllWithPostDataAndFilter<SentMessage, { filter: FilterQueryBit[] }>(\"DoSentMessageSearch\", {\r\n filter\r\n }, queryString).Exec();\r\n }\r\n\r\n public async GetGroupLinkStats(sentMessageId: number): Promise<LinkBI[]> {\r\n return await this.ExecCustomCollectionAction<LinkBI[]>('GetGroupLinkStats', {key: sentMessageId} );\r\n }\r\n\r\n public async DownloadSentItem(messageGUID: string): Promise<any> {\r\n return await authenticatedAxios.post(this.entitySetUrl + `/DownloadSentItem`, {\r\n MessageGUID: messageGUID\r\n }, {\r\n responseType: 'arraybuffer'\r\n });\r\n }\r\n\r\n public async GetSentItem(messageGUID: string): Promise<AxiosResponse<SentItem>> {\r\n return await authenticatedAxios.post(this.entitySetUrl + `/GetSentItem`, {\r\n MessageGUID: messageGUID\r\n });\r\n }\r\n\r\n constructor() {\r\n super('SentMessages');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { UserProfile } from './../PoliteMailEntities/Models/UserProfile';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class UserProfilesODataService extends NativeOdataServiceBase<UserProfile> {\r\n\r\n\t/*Custom Actions*/\r\n public async DeleteAndMigrate(migrateId:number, deleteId:number ): Promise<Boolean> {\r\n return await this.ExecCustomCollectionAction<Boolean>('DeleteAndMigrate', {\r\n MigrateId: migrateId,\r\n DeleteId: deleteId\r\n } );\r\n }\r\n\r\n public async GetProposedPassword():Promise<string> {\r\n return await this.ExecCustomCollectionAction<string>(\"GetProposedPassword\")\r\n }\r\n\r\n constructor() {\r\n super('UserProfiles');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { UserType } from './../PoliteMailEntities/Models/UserType';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class UserTypesODataService extends NativeOdataServiceBase<UserType> {\r\n\r\n\t/*Custom Actions*/\r\n public async IsAdmin(): Promise<boolean> {\r\n return await this.ExecCustomCollectionAction<boolean>('Default.IsAdmin');\r\n }\r\n\r\n constructor() {\r\n super('UserTypes');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { ContactClick } from './../PoliteMailEntities/Models/ContactClick';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class ContactClicksODataService extends NativeOdataServiceBase<ContactClick> {\r\n\r\n constructor() {\r\n super('ContactClicks');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { ContactReply } from './../PoliteMailEntities/Models/ContactReply';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class ContactRepliesODataService extends NativeOdataServiceBase<ContactReply> {\r\n\r\n constructor() {\r\n super('ContactReplies');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Reply } from './../PoliteMailEntities/Models/Reply';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class RepliesODataService extends NativeOdataServiceBase<Reply> {\r\n\r\n constructor() {\r\n super('Replies');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { SublistStats } from './../PoliteMailEntities/Models/SublistStats';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { Report } from '../PoliteMailEntities/Models/Report';\r\nimport { LinkStat } from '../PoliteMailEntities/Models/LinkStat';\r\nimport { SentMessage } from '../PoliteMailEntities/Models/SentMessage';\r\nimport { DeviceCount } from '../PoliteMailEntities/Models/DeviceCount';\r\nimport { HourOfDayRead } from '../PoliteMailEntities/Models/HourOfDayRead';\r\nimport { Event } from '../PoliteMailEntities/Models/Event';\r\nimport { Location } from '../PoliteMailEntities/Models/Location';\r\n\r\nexport class SublistStatsODataService extends NativeOdataServiceBase<SublistStats> {\r\n\r\n \r\n public async GetReportStats(key:number): Promise<Report> {\r\n return await this.ExecCustomGet<Report>(\"GetReportStats\", key)\r\n }\r\n\r\n public async GetLinkStats(key:number, sentMessageId: number): Promise<LinkStat[]>{\r\n return await this.ExecCustomGetWithData<LinkStat[]>(\"GetLinkStats\",key, \r\n `sent_message_id=${sentMessageId}`\r\n );\r\n }\r\n\r\n public async GetSentMessages(key:number): Promise<SentMessage[]> {\r\n return await this.ExecCustomGet<SentMessage[]>(\"SentMessages\", key)\r\n }\r\n\r\n public async GetEvents(key:number): Promise<Event[]>{\r\n return await this.ExecCustomGet<Event[]>(\"Events\", key);\r\n }\r\n\r\n public async GetMobileDevices(key:number): Promise<DeviceCount[]> {\r\n return await this.ExecCustomGet<DeviceCount[]>(\"MobileDeviceSummary\", key)\r\n }\r\n\r\n public async GetDesktopDevices(key:number): Promise<DeviceCount[]>{\r\n return await this.ExecCustomGet<DeviceCount[]>(\"DesktopDeviceSummary\", key);\r\n }\r\n\r\n public async GetHourOfDayReads(key:number): Promise<HourOfDayRead[]>{\r\n return await this.ExecCustomGet<HourOfDayRead[]>(\"HourOfDayReads\", key);\r\n }\r\n\r\n public async GetLocations(key:number): Promise<Location[]>{\r\n return await this.ExecCustomGet<Location[]>(\"Locations\", key);\r\n }\r\n\r\n constructor() {\r\n super('SublistStats');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { UsersWithStats } from './../PoliteMailEntities/Models/UsersWithStats';\r\nimport { ODataContext } from './../ODataContext';\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { Event } from '../PoliteMailEntities/Models/Event';\r\nimport { DeviceCount } from '../PoliteMailEntities/Models/DeviceCount';\r\nimport { HourOfDayRead } from '../PoliteMailEntities/Models/HourOfDayRead';\r\nimport { SentMessage } from '../PoliteMailEntities/Models/SentMessage';\r\nimport { Location } from '../PoliteMailEntities/Models/Location';\r\nimport { LinkStat } from '../PoliteMailEntities/Models/LinkStat';\r\nimport { LatLongBoundsInfo } from '../PoliteMailEntities/Models/LatLongBoundsInfo';\r\n\r\nexport class UsersWithStatsODataService extends NativeOdataServiceBase<UsersWithStats> {\r\n\r\n public async GetUserEvents(key: number): Promise<Event[]> {\r\n return await this.ExecCustomFunction<Event[]>(`Events`, key);\r\n }\r\n\r\n public async GetMobileDevices(key: number): Promise<DeviceCount[]> {\r\n return await this.ExecCustomFunction<DeviceCount[]>(`MobileDeviceSummary`, key);\r\n }\r\n\r\n public async GetHourlyReads(key: number): Promise<HourOfDayRead[]> {\r\n return await this.ExecCustomFunction<HourOfDayRead[]>(`HourOfDayReads`, key);\r\n }\r\n \r\n public async GetSentMessages(key: number): Promise<SentMessage[]> {\r\n return await this.ExecCustomFunction<SentMessage[]>(`SentMessages`, key);\r\n }\r\n\r\n public async GetHourOfDayReads(key: number): Promise<HourOfDayRead[]> {\r\n return await this.ExecCustomFunction<HourOfDayRead[]>(`HourOfDayReads`, key);\r\n }\r\n\r\n public async GetLocations(key: number): Promise<Location[]> {\r\n return await this.ExecCustomFunction<Location[]>(`Locations`, key);\r\n }\r\n\r\n public async GetLinkStats(key: number): Promise<LinkStat[]> {\r\n return await this.ExecCustomFunction<LinkStat[]>(`GetLinkStats`, key);\r\n }\r\n\r\n public async GetLatLongBoundsInfo(key: number): Promise<LatLongBoundsInfo> {\r\n return await this.ExecCustomFunction<LatLongBoundsInfo>(`GetLatLongBoundsInfo`, key);\r\n }\r\n\r\n public async UpdateMetrics(senderIds: number[]): Promise<Boolean> {\r\n const idCollection: { senderIds: number[] } = { senderIds: senderIds };\r\n return await this.ExecCustomCollectionAction<Boolean>(\"UpdateMetrics\", idCollection);\r\n }\r\n \r\n constructor() {\r\n super('UsersWithStats');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { FromWithStats } from './../PoliteMailEntities/Models/FromWithStats';\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { MonthlyEngagementMetric } from './../PoliteMailEntities/Models/MonthlyEngagementMetric';\r\nimport { SentMessage } from '../PoliteMailEntities/Models/SentMessage';\r\n\r\nexport class FromWithStatsODataService extends NativeOdataServiceBase<FromWithStats> {\r\n\r\n\t/*Custom Actions*/\r\n public async RemoveFromPermissions(ids: number[]): Promise<Boolean> {\r\n return await this.ExecCustomAction<Boolean>('Default.RemoveFromPermissions', 0, {\"froms\": ids});\r\n }\r\n\r\n public async GetFromReachMetrics(key: number): Promise<MonthlyEngagementMetric[]> {\r\n return await this.ExecCustomCollectionAction<MonthlyEngagementMetric[]>(`GetFromReachMetrics`, { Id: key, filter: \"\"});\r\n }\r\n\r\n public async GetSentMessages(key: number): Promise<SentMessage[]> {\r\n return await this.ExecCustomFunction<SentMessage[]>(`SentMessages`, key);\r\n }\r\n\r\n public async UpdateMetrics(fromIds: number[]): Promise<Boolean> {\r\n const idCollection: { fromIds: number[] } = { fromIds: fromIds };\r\n return await this.ExecCustomCollectionAction<Boolean>(\"UpdateMetrics\", idCollection);\r\n }\r\n\r\n constructor() {\r\n super('FromWithStats');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { ContactOptOut } from './../PoliteMailEntities/Models/ContactOptOut';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class ContactOptOutsODataService extends NativeOdataServiceBase<ContactOptOut> {\r\n\r\n constructor() {\r\n super('ContactOptOuts');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { ContactOutOfOffice } from './../PoliteMailEntities/Models/ContactOutOfOffice';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class ContactOutOfOfficesODataService extends NativeOdataServiceBase<ContactOutOfOffice> {\r\n\r\n constructor() {\r\n super('ContactOutOfOffices');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { ContactUndeliverable } from './../PoliteMailEntities/Models/ContactUndeliverable';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class ContactUndeliverablesODataService extends NativeOdataServiceBase<ContactUndeliverable> {\r\n\r\n constructor() {\r\n super('ContactUndeliverables');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { OutOfOffice } from './../PoliteMailEntities/Models/OutOfOffice';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class OutOfOfficesODataService extends NativeOdataServiceBase<OutOfOffice> {\r\n\r\n constructor() {\r\n super('OutOfOffices');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { Undeliverable } from './../PoliteMailEntities/Models/Undeliverable';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class UndeliverablesODataService extends NativeOdataServiceBase<Undeliverable> {\r\n\r\n constructor() {\r\n super('Undeliverables');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { ColumnOrder } from './../PoliteMailEntities/Models/ColumnOrder';\r\n\r\nexport class ColumnOrdersODataService extends NativeOdataServiceBase<ColumnOrder> {\r\n\r\n\t/*Custom Actions*/\r\n public async UpdateColumnOrderByNameAndUser(name: string, data: any): Promise<Boolean> {\r\n return await this.ExecCustomCollectionAction<Boolean>('Default.UpdateColumnOrderByNameAndUser', { name, data: JSON.stringify(data) });\r\n }\r\n public async GetColumnOrderByNameAndUser(name: string): Promise<any> {\r\n const data = (await this.ExecCustomCollectionAction<any>('Default.GetColumnOrderByNameAndUser', { name }));\r\n return data ? JSON.parse(data) : data; \r\n }\r\n public async ClearColumnOrderByNameAndUser(name: string): Promise<any> {\r\n return await this.ExecCustomCollectionAction<any>('Default.ClearColumnOrderByNameAndUser', { name });\r\n }\r\n public async ClearAllGridSettingsByUser(): Promise<any> {\r\n return await this.ExecCustomCollectionAction<any>('Default.ClearAllColumnOrderByUser');\r\n }\r\n constructor() {\r\n super('ColumnOrders');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { CustomValue } from './../PoliteMailEntities/Models/CustomValue';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class CustomValuesODataService extends NativeOdataServiceBase<CustomValue> {\r\n\r\n constructor() {\r\n super('CustomValues');\r\n }\r\n\r\n public async SearchCustomValuesForField(fieldId: number, searchText: string): Promise<CustomValue[]> { \r\n return (await this.ExecCustomCollectionAction(`GetCustomValuesForFieldContainingValue`, { \r\n FieldID: fieldId,\r\n Value: searchText\r\n }))\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { UserFrom } from './../PoliteMailEntities/Models/UserFrom';\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class UserFromsODataService extends NativeOdataServiceBase<UserFrom> {\r\n\r\n public async GetUserFroms(id: string): Promise<UserFrom[]> {\r\n return await this.ExecCustomGet<UserFrom[]>(\"\", id);\r\n }\r\n\r\n constructor() {\r\n super('UserFroms');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { EWSCache } from './../PoliteMailAPI/DatabaseLayer/EWSCache';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class EWSCacheODataService extends NativeOdataServiceBase<EWSCache> {\r\n\r\n\t/*Custom Actions*/\r\n public async ClearEWSCache(): Promise<Boolean> {\r\n return await this.ExecCustomCollectionAction<Boolean>('ClearEWSCache', );\r\n }\r\n\r\n constructor() {\r\n super('EWSCaches');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { WebConfig } from './../PoliteMailEntities/Models/WebConfig';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class WebConfigsODataService extends NativeOdataServiceBase<WebConfig> {\r\n\r\n\t/*Custom Actions*/\r\n public async GetSubscriptionURL(): Promise<String> {\r\n return await this.ExecCustomCollectionAction<String>('GetSubscriptionURL');\r\n }\r\n\r\n public async GetPrivacySetup(): Promise<boolean> {\r\n return await this.ExecCustomCollectionAction<boolean>('GetPrivacySetup');\r\n }\r\n\r\n constructor() {\r\n super('WebConfigs');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { ContactAttribute } from './../PoliteMailEntities/Models/ContactAttribute';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class ContactAttributesODataService extends NativeOdataServiceBase<ContactAttribute> {\r\n\r\n constructor() {\r\n super('ContactAttributes');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { BulkEdit } from './../PoliteMailEntities/Models/BulkEdit';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class BulkEditsODataService extends NativeOdataServiceBase<BulkEdit> {\r\n\r\n constructor() {\r\n super('BulkEdits');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { MeetingRecipient } from './../PoliteMailEntities/Models/MeetingRecipient';\r\nimport { CustomRequestInit, NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class MeetingRecipientsODataService extends NativeOdataServiceBase<MeetingRecipient> {\r\n\r\n\t/*Custom Actions*/\r\n public async RecipientPendings(MeetingRecipientId: any, query: string, init?: CustomRequestInit): Promise<{Value : MeetingRecipient[], Count: number}> {\r\n return await this.CustomGetWithFilter<MeetingRecipient>('GetRecipientPendings', MeetingRecipientId, query, init).Exec();\r\n }\r\n public async RecipientApprovals(MeetingRecipientId: any, query: string, init?: CustomRequestInit): Promise<{Value : MeetingRecipient[], Count: number}> {\r\n return await this.CustomGetWithFilter<MeetingRecipient>('GetRecipientApprovals', MeetingRecipientId, query, init).Exec();\r\n }\r\n public async RecipientDeclines(MeetingRecipientId: any, query: string, init?: CustomRequestInit): Promise<{Value : MeetingRecipient[], Count: number}> {\r\n return await this.CustomGetWithFilter<MeetingRecipient>('GetRecipientDeclines', MeetingRecipientId, query, init).Exec();\r\n }\r\n public async RecipientTentatives(MeetingRecipientId: any, query: string, init?: CustomRequestInit): Promise<{Value : MeetingRecipient[], Count: number}> {\r\n return await this.CustomGetWithFilter<MeetingRecipient>('GetRecipientTentatives', MeetingRecipientId, query, init).Exec();\r\n }\r\n\r\n constructor() {\r\n super('MeetingRecipients');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { AllowedDomainSubscription } from './../PoliteMailEntities/Models/AllowedDomainSubscription';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class AllowedDomainSubscriptionsODataService extends NativeOdataServiceBase<AllowedDomainSubscription> {\r\n\r\n constructor() {\r\n super('AllowedDomainSubscriptions');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { PublicValue } from './../PoliteMailAPI/Public/PublicValue';\r\nimport { ODataContext } from './../ODataContext';\r\nimport { AppSetting } from './../PoliteMailEntities/Models/AppSetting';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { AuthenticationType } from '../PoliteMailEntities/Models/AuthenticationType';\r\nimport { userInfo } from 'os';\r\n\r\nexport class PublicValuesODataService extends NativeOdataServiceBase<PublicValue> {\r\n\r\n /*Custom Actions*/\r\n public async GetDefaultLoginType(): Promise<AppSetting> {\r\n return await this.ExecCustomCollectionAction<AppSetting>('GetDefaultLoginType');\r\n }\r\n\r\n public async GetAuthModes(): Promise<AuthenticationType[]> {\r\n return await this.ExecCustomCollectionAction<AuthenticationType[]>('GetAuthModes');\r\n }\r\n\r\n public async GetAuthStatus(): Promise<boolean> {\r\n return await this.ExecCustomCollectionAction<boolean>('GetAuthStatus');\r\n }\r\n\r\n public async DoLogin(): Promise<boolean> {\r\n return await this.ExecCustomCollectionAction<boolean>('DoLogin');\r\n }\r\n\r\n public async SetTimeZoneOffset(): Promise<boolean> {\r\n return await this.ExecCustomCollectionAction<boolean>('SetTimeZoneOffset');\r\n }\r\n\r\n constructor() {\r\n super('PublicValues');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { PAT } from './../PoliteMailEntities/Models/PAT';\r\nimport { ODataServerRoute } from \"../../Globals\";\r\nimport axios from 'axios';\r\n\r\nimport { CustomRequestInit, NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { IPATFormModel } from '../../../components/Panels/ProfilePagePanels/PATPanel';\r\n\r\nexport class PATSODataService extends NativeOdataServiceBase<PAT> {\r\n\r\n\t/*Custom Actions*/\r\n public async CreatePAT(PATFormModel: IPATFormModel): Promise<String> { \r\n return await this.ExecCustomCollectionAction<String>('CreatePAT', PATFormModel);\r\n }\r\n public async GetPATSForCurrentUser(query: string, init?: CustomRequestInit): Promise<PAT[]>{\r\n return await this.ExecCustomCollectionAction<PAT[]>('GetPATSForCurrentUser' + query, {}, init);\r\n }\r\n public async RevokePATById(id: any): Promise<Boolean> {\r\n let requestBody = { \"id\": id };\r\n return await this.ExecCustomCollectionAction<boolean>('RevokePATById', requestBody);\r\n }\r\n public async RevokeAllPATSForCurrentUser(): Promise<Number> {\r\n return await this.ExecCustomCollectionAction<Number>('RevokeAllPATSForCurrentUser');\r\n }\r\n constructor() {\r\n super('PATS');\r\n }\r\n}\r\n","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { TagGroup } from './../PoliteMailEntities/Models/TagGroup';\r\nimport { ODataContext } from './../ODataContext';\r\n\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class TagGroupsODataService extends NativeOdataServiceBase<TagGroup> {\r\n\r\n\t/*Custom Actions*/\r\n public async GetTagGroups(): Promise<TagGroup[]> {\r\n return await this.ExecCustomCollectionAction<TagGroup[]>('Default.GetTagGroups');\r\n }\r\n public async ActivateTagGroup(): Promise<Boolean> {\r\n return await this.ExecCustomCollectionAction<Boolean>('Default.ActivateTagGroup', );\r\n }\r\n public async CreateTagGroup(tagGroup: TagGroup): Promise<TagGroup> {\r\n let newTagGroup: any = {\r\n GroupName: tagGroup.GroupName,\r\n Required: tagGroup.Required,\r\n Predefined: tagGroup.Predefined,\r\n Caption: tagGroup.Caption\r\n }; \r\n return await this.ExecCustomCollectionAction<TagGroup>('Default.CreateTagGroup', newTagGroup);\r\n }\r\n public async UpdateTagGroup(TagGroupId: any, tagGroup: TagGroup): Promise<TagGroup> {\r\n let postItem: any = {\r\n name: tagGroup.GroupName,\r\n required: tagGroup.Required,\r\n predefined: tagGroup.Predefined,\r\n caption: tagGroup.Caption\r\n }; \r\n return await this.ExecCustomAction<TagGroup>('Default.UpdateTagGroup', TagGroupId, postItem);\r\n }\r\n public async GetUserTagGroups(): Promise<TagGroup[]> {\r\n return await this.ExecCustomCollectionAction<TagGroup[]>('Default.GetUserTagGroups', );\r\n }\r\n\r\n constructor() {\r\n super('TagGroups');\r\n }\r\n}\r\n","import { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { OptOutPage } from '../PoliteMailEntities/Models/OptOutPage';\r\nimport { OptOut } from '../PoliteMailEntities/Models/OptOut';\r\n\r\nexport class OptOutPagesODataService extends NativeOdataServiceBase<OptOutPage> {\r\n\r\n constructor() {\r\n super('OptOutPages');\r\n }\r\n\r\n public async ResetOptOutPage(): Promise<OptOutPage>{\r\n return await this.ExecCustomCollectionAction(\"ResetOptOutPage\");\r\n }\r\n}","// created by FuryTech.ODataTypeScriptGenerator\r\nimport { PasswordRule } from './../PoliteMailEntities/Models/PasswordRule';\r\n\r\n\r\nimport { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\n\r\nexport class PasswordRulesODataService extends NativeOdataServiceBase<PasswordRule> {\r\n\r\n constructor() {\r\n super('PasswordRules');\r\n }\r\n}\r\n","import { NativeOdataServiceBase } from '../NativeOdataServiceBase';\r\nimport { DataValidationResult } from './../PoliteMailEntities/Models/DataValidationResult';\r\n\r\nexport class DataValidationResultsODataService extends NativeOdataServiceBase<DataValidationResult> {\r\n constructor() {\r\n super('DataValidationResults');\r\n }\r\n\r\n public async ValidateContent(data: DataValidationResult): Promise<DataValidationResult[]> {\r\n return await this.ExecCustomCollectionAction<DataValidationResult[]>('Default.ValidateContent', {Content: data} );\r\n }\r\n}\r\n","// Created by FuryTech.ODataTypeScriptGenerator\r\nimport { DeviceCount } from './DeviceCount';\r\nimport { Contact } from './Contact';\r\nimport { SentMessage } from './SentMessage';\r\nimport { Location } from './Location';\r\nimport { Event } from './Event';\r\nimport { HourOfDayRead } from './HourOfDayRead';\r\nimport { PMEntity } from '../../../PMEntity';\r\nimport {User} from \"./User\";\r\nimport { IDropdownOption } from '@fluentui/react';\r\n\r\nexport enum ListType {\r\n Static = \"Static\",\r\n Filtered = \"Filtered\",\r\n Hierarchy = \"Hierarchy\"\r\n}\r\n\r\nexport const ListTypesDropdown = Object.entries(ListType).map(listType => {\r\n return {\r\n key: listType[0],\r\n text: listType[0]\r\n } as IDropdownOption\r\n});\r\n\r\nexport interface List extends PMEntity{\r\n\r\n /* Navigation properties */\r\n DesktopDeviceSummary: DeviceCount[];\r\n MobileDeviceSummary: DeviceCount[];\r\n Contacts: Contact[];\r\n SentMessages: SentMessage[];\r\n Locations: Location[];\r\n Events: Event[];\r\n HourOfDayReads: HourOfDayRead[];\r\n ModifiedByUser: User\r\n\r\n /* Properties */\r\n ID: number;\r\n Name: string;\r\n Description: string;\r\n OwnerID: number;\r\n MemberCount: number;\r\n IsNewsletter: number;\r\n VerificationFromID: number;\r\n Shared: boolean;\r\n CreationDate: Date;\r\n ActiveState: number;\r\n IsAnonymous: boolean;\r\n GUID: string;\r\n BusinessID: number;\r\n RegionID: number;\r\n SendMode: number;\r\n CharacterCount: number;\r\n ParagraphCount: number;\r\n SentenceCount: number;\r\n SentencesPerParagraph: number;\r\n WordCount: number;\r\n WordsPerSentence: number;\r\n CharactersPerWord: number;\r\n PassiveSentences: number;\r\n ReadingEase: number;\r\n GradeLevel: number;\r\n Importance: number;\r\n Sensitivity: number;\r\n ImageCount: number;\r\n ImageArea: number;\r\n SentVia: boolean;\r\n AggregateSendCount: number;\r\n AvgReadTime: number;\r\n AvgReadTimeDesktop: number;\r\n AvgReadTimeMobile: number;\r\n AvgReadTimeProxy: number;\r\n ClickCount: number;\r\n DesktopClicks: number;\r\n DesktopOpens: number;\r\n Devices: number;\r\n EngagedReads: number;\r\n FirstSentDate: Date;\r\n Forwards: number;\r\n From: string;\r\n Ignored: number;\r\n Interactions: number;\r\n LinksClicked: number;\r\n LinksSent: number;\r\n Messages: number;\r\n MobileOpens: number;\r\n MobileClicks: number;\r\n MobileUnique: number;\r\n MostRecentOpenDate: Date;\r\n MultipleOpens: number;\r\n MultipleResponses: number;\r\n MultipleClicks: number;\r\n MultipleClicksRate: number;\r\n MultipleReads: number;\r\n NewOpens: number;\r\n NonUniqueClicks: number;\r\n NonUniqueOpens: number;\r\n Oof: number;\r\n OpenCount: number;\r\n OptOuts: number;\r\n OptIns: number;\r\n ReadCount: number;\r\n ReadRate: number;\r\n Recipients: number;\r\n Replies: number;\r\n Sent: number;\r\n Skimmed: number;\r\n TimeToRead: number;\r\n To: string;\r\n TotalInteractions: number;\r\n TotalLinksSent: number;\r\n TotalLinksClicked: number;\r\n Undeliverables: number;\r\n UniqueUrls: number;\r\n UniqueUrlsClicked: number;\r\n User: string;\r\n UserProxyOpens: number;\r\n UseDevicesForRates: boolean;\r\n ReportRunDate: Date;\r\n OpenRate: number;\r\n ReadsRate: number;\r\n ClickRate: number;\r\n AttentionRate: number;\r\n EffectiveRate: number;\r\n EngagementRate: number;\r\n UndeliverableRate: number;\r\n OofRate: number;\r\n OptOutRate: number;\r\n MultipleOpenRate: number;\r\n MultipleReadRate: number;\r\n ContentUtilization: number;\r\n EngagedReadRate: number;\r\n DidntOpenRate: number;\r\n IgnoredRate: number;\r\n DidntClickRate: number;\r\n SkimmedRate: number;\r\n ForwardRate: number;\r\n ReplyRate: number;\r\n FilterID: number;\r\n ListCount: number;\r\n ModifiedBy: number;\r\n ModifiedDate: Date;\r\n LeftOpen: number;\r\n LeftOpenRate: number;\r\n UniqueRecipientCount: number;\r\n KeyDescription: {Keys: Array<string>, Values: Array<string>};\r\n IsFilteredList: boolean;\r\n IsNewFeatureFilteredList: boolean;\r\n ListType: ListType;\r\n MembershipUpdate: Date;\r\n}\r\n","import { IPMPropertyValidator } from \"../../../../components/Panels/PMPanel\";\r\n\r\nexport interface IPMPropertyDescriptor {\r\n ID: number;\r\n Name: string;\r\n Type: string;\r\n Required: boolean;\r\n MinLength: number;\r\n MaxLength: number;\r\n IsEmail: boolean;\r\n IsFile: boolean;\r\n}\r\n\r\nexport enum ValidationResult {\r\n Required,\r\n BadEmail,\r\n BadUri,\r\n MinLength,\r\n MaxLength,\r\n Valid,\r\n NaN,\r\n EmailExists,\r\n DuplicateListName,\r\n}\r\n\r\nconst ErrorMessageForValidation = {\r\n [ValidationResult.Required]: \" is required.\",\r\n [ValidationResult.BadEmail]: \"Please enter a valid email address.\",\r\n [ValidationResult.BadUri]: \"Please enter a valid URL (must include http / https).\",\r\n [ValidationResult.MaxLength]: \"The value entered is too long.\",\r\n [ValidationResult.MinLength]: \"The value entered does not meet the minimum length requirement.\",\r\n [ValidationResult.Valid]: \"\",\r\n [ValidationResult.NaN]: \"The value entered is not a valid number.\",\r\n [ValidationResult.EmailExists]: \"This email already exists for another user and cannot be used again.\",\r\n [ValidationResult.DuplicateListName]: \"This list name already exists, please choose another name.\"\r\n}\r\n\r\nexport const GetErrorMessageForValidationResult = (propName: string, result: ValidationResult): string => {\r\n const validationResult = ErrorMessageForValidation[result];\r\n\r\n return result === ValidationResult.Required ? propName + validationResult : validationResult ?? \"\";\r\n}\r\n\r\nexport const ValidateProperties = (properties: IPMPropertyValidator, value: string): ValidationResult =>\r\n{\r\n value = value ?? \"\";\r\n\r\n if (properties.Required && value.length <= 0)\r\n return ValidationResult.Required;\r\n\r\n if (properties.IsEmail && !IsValidEmail(value))\r\n return ValidationResult.BadEmail;\r\n\r\n if (properties.IsLink && !IsValidUri(value))\r\n return ValidationResult.BadUri;\r\n if(properties.IsFile && properties.MaxLength == -1)\r\n return ValidationResult.Valid;\r\n\r\n if (properties.MinLength > -1 && value.length < properties.MinLength)\r\n return ValidationResult.MinLength;\r\n\r\n if ((properties.MaxLength == -1 && value.length > 4000) || (properties.MaxLength > -1 && value.length > properties.MaxLength))\r\n return ValidationResult.MaxLength;\r\n\r\n if(properties.CustomValidationMethod)\r\n return properties.CustomValidationMethod();\r\n\r\n return ValidationResult.Valid;\r\n}\r\n\r\nexport const IsValidEmail = (email: string): boolean => {\r\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(String(email).toLowerCase());\r\n}\r\n\r\n//https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url\r\nexport const IsValidUri = (str: string): boolean => {\r\n let url;\r\n\r\n try {\r\n url = new URL(str);\r\n } catch (_) {\r\n return false;\r\n }\r\n\r\n return url.protocol === \"http:\" || url.protocol === \"https:\";\r\n}","export const RouteBase : string = \"ui/\";\r\nexport const WebPortalRouteBase : string = RouteBase + \"web\"\r\nexport const ODataServerRoute : string = \"/api/odata/\";\r\nexport const ThisHost : string = \"/\" + RouteBase;","import * as React from \"react\";\r\nimport { ISvgProps } from \"../../../../src/Definitions/ISvgProps\";\r\n\r\nconst CampaignSharedSvg: React.FC<ISvgProps> = (props: ISvgProps) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32.1 32.02\" {...props}>\r\n <rect x=\"0.1\" width=\"32\" height=\"32\" style={{ fill: \"none\" }} />\r\n <path\r\n d=\"M31.59.49A1.62,1.62,0,0,0,30.4,0a1.75,1.75,0,0,0-1.19.44l-.88.68c-.52.39-.83.63-.94.69A26.2,26.2,0,0,1,18.5,5.53,51.5,51.5,0,0,1,7.79,6.69,7.79,7.79,0,0,0,7,6.64a7,7,0,0,0-3.47.89A6.78,6.78,0,0,0,1,10a6.45,6.45,0,0,0-.1,6.47,6.69,6.69,0,0,0,2.21,2.37l.24.18a7.5,7.5,0,0,1,8.39,11.8c.21.6.61.94,2,1.16a6.11,6.11,0,0,0,2.33-.09,1.33,1.33,0,0,0,1.08-1.36,5,5,0,0,0-.07-1.09A10.61,10.61,0,0,0,16.71,28q-.27-.88-2-5.31C14.22,21.49,15.9,21,18.46,21h.06a19.9,19.9,0,0,1,5.87,2.06c.86.45,1.63.88,2.29,1.28s1.19.75,1.6,1.05.67.5.8.62a3.61,3.61,0,0,0,.52.34,1.86,1.86,0,0,0,.9.18,1.52,1.52,0,0,0,1.09-.49,1.55,1.55,0,0,0,.51-1.17V1.66A1.55,1.55,0,0,0,31.59.49Zm-21,12.13-.37,0L8,12.38,6.8,12.26l-1-.09A1.29,1.29,0,0,1,5,11.83a2.66,2.66,0,0,1-.33-1.36,1.92,1.92,0,0,1,.6-1.4,1.07,1.07,0,0,1,.49-.17h4.79ZM29.93,15,12.66,12.84V8.68A52.83,52.83,0,0,0,20,7.46a26.15,26.15,0,0,0,5.28-2,22.86,22.86,0,0,0,4.7-3Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M.78,27.75a1.25,1.25,0,0,1-.61-.6A1.42,1.42,0,0,1,0,26.43a1.36,1.36,0,0,1,.45-1,1.39,1.39,0,0,1,1-.38,1.38,1.38,0,0,1,.9.36,1.77,1.77,0,0,1,.34.45,1.37,1.37,0,0,1,.13.7,1.3,1.3,0,0,1-.29.78,1,1,0,0,1-.47.39L2,27.78a3.93,3.93,0,0,0,.32.85,4.08,4.08,0,0,0,1.13,1.31,6.72,6.72,0,0,0,1.28.66.62.62,0,0,1,.33.67.59.59,0,0,1-.3.36.37.37,0,0,1-.3.05A4.67,4.67,0,0,1,2.1,30.29a4.75,4.75,0,0,1-.76-1.09,7.27,7.27,0,0,1-.56-1.44Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M7.07,21.31a1.3,1.3,0,0,1,.83-.26,1.43,1.43,0,0,1,.48,2.77,1.82,1.82,0,0,1-.55.08,1.37,1.37,0,0,1-.68-.21,1.28,1.28,0,0,1-.55-.62,1,1,0,0,1-.12-.6s0-.07,0-.09a3.54,3.54,0,0,0-.9-.12,3.91,3.91,0,0,0-1.69.38,7,7,0,0,0-1.19.82.49.49,0,0,1-.32.1A.51.51,0,0,1,2,23.43.57.57,0,0,1,1.77,23a.37.37,0,0,1,.11-.29,4.58,4.58,0,0,1,2.34-1.44,4.88,4.88,0,0,1,1.31-.15,7.81,7.81,0,0,1,1.54.18Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <rect\r\n x=\"0.07\"\r\n y=\"21.01\"\r\n width=\"10.93\"\r\n height=\"10.93\"\r\n style={{ fill: \"none\" }}\r\n />\r\n <rect\r\n x=\"0.07\"\r\n y=\"21.01\"\r\n width=\"10.93\"\r\n height=\"10.93\"\r\n style={{ fill: \"none\" }}\r\n />\r\n <path\r\n d=\"M9,30.6a1.4,1.4,0,0,1-.27.82,1.53,1.53,0,0,1-.57.47,1.4,1.4,0,0,1-1.1,0,1.45,1.45,0,0,1-.87-1.72,1.6,1.6,0,0,1,.26-.5A1.33,1.33,0,0,1,7,29.27a1.31,1.31,0,0,1,.83-.08,1,1,0,0,1,.56.25.15.15,0,0,0,.08,0,3.52,3.52,0,0,0,.62-.66,3.87,3.87,0,0,0,.67-1.59,6.28,6.28,0,0,0,0-1.44.55.55,0,0,1,.1-.32.53.53,0,0,1,.81-.16.35.35,0,0,1,.18.25,4.68,4.68,0,0,1-.2,2.74A4.84,4.84,0,0,1,10,29.46,7.6,7.6,0,0,1,9,30.6Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n </svg>\r\n);\r\n\r\nexport default CampaignSharedSvg;\r\n","import * as React from \"react\";\r\nimport { ISvgProps } from \"../../../../src/Definitions/ISvgProps\";\r\n\r\nconst TemplateSharedSvg: React.FC<ISvgProps> = (props: ISvgProps) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" {...props}>\r\n <rect width=\"32\" height=\"32\" style={{ fill: \"none\" }} />\r\n <rect width=\"32\" height=\"32\" style={{ fill: \"none\" }} />\r\n <path\r\n d=\"M9.85,7.87a.94.94,0,0,1-.7-.29,1,1,0,0,1,0-1.41,1,1,0,0,1,.7-.3H22.16a1,1,0,0,1,.7.3,1,1,0,0,1,0,1.41.94.94,0,0,1-.7.29Z\"\r\n style={{ fill: \"#808488\" }}\r\n />\r\n <path\r\n d=\"M28.7.3A.94.94,0,0,0,28,0H4a.94.94,0,0,0-.7.3A.94.94,0,0,0,3,1V19.49A7.31,7.31,0,0,1,5,19V2H27V30H12.3a7.56,7.56,0,0,1-1.55,2H28a1,1,0,0,0,1-1V1A.94.94,0,0,0,28.7.3Z\"\r\n style={{ fill: \"#808488\" }}\r\n />\r\n <path\r\n d=\"M.94,27.55A1.4,1.4,0,0,1,.32,27a1.52,1.52,0,0,1-.16-.72,1.36,1.36,0,0,1,.45-1,1.35,1.35,0,0,1,1-.38,1.39,1.39,0,0,1,.91.36,1.66,1.66,0,0,1,.34.45,1.49,1.49,0,0,1,.13.7,1.36,1.36,0,0,1-.29.78,1.09,1.09,0,0,1-.47.39.18.18,0,0,0-.08,0,3.11,3.11,0,0,0,.32.85,4.06,4.06,0,0,0,1.13,1.31,6.72,6.72,0,0,0,1.28.66.54.54,0,0,1,.24.23.52.52,0,0,1,.09.44.59.59,0,0,1-.3.36.39.39,0,0,1-.31,0,4.63,4.63,0,0,1-2.37-1.38A5,5,0,0,1,1.5,29a7.12,7.12,0,0,1-.56-1.45Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M7.23,21.1a1.36,1.36,0,0,1,.82-.25,1.41,1.41,0,0,1,.72.19,1.36,1.36,0,0,1,.66.87A1.41,1.41,0,0,1,9.29,23a1.45,1.45,0,0,1-.75.63A1.82,1.82,0,0,1,8,23.7a1.37,1.37,0,0,1-.68-.21,1.35,1.35,0,0,1-.56-.62,1.18,1.18,0,0,1-.12-.6.14.14,0,0,0,0-.09,3.43,3.43,0,0,0-.9-.13A4.05,4.05,0,0,0,4,22.44a6.17,6.17,0,0,0-1.19.82.49.49,0,0,1-.32.1.51.51,0,0,1-.42-.13.54.54,0,0,1-.18-.44.39.39,0,0,1,.1-.28,4.62,4.62,0,0,1,2.34-1.44,4.59,4.59,0,0,1,1.32-.16,7.21,7.21,0,0,1,1.54.19Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <rect\r\n x=\"0.22\"\r\n y=\"20.81\"\r\n width=\"10.93\"\r\n height=\"10.93\"\r\n style={{ fill: \"none\" }}\r\n />\r\n <rect\r\n x=\"0.22\"\r\n y=\"20.81\"\r\n width=\"10.93\"\r\n height=\"10.93\"\r\n style={{ fill: \"none\" }}\r\n />\r\n <path\r\n d=\"M9.12,30.4a1.28,1.28,0,0,1-.27.82,1.3,1.3,0,0,1-.57.46,1.34,1.34,0,0,1-1.09,0A1.42,1.42,0,0,1,6.32,30a1.8,1.8,0,0,1,.25-.5,1.43,1.43,0,0,1,.57-.43A1.3,1.3,0,0,1,8,29a1,1,0,0,1,.55.25l.09.05a3.52,3.52,0,0,0,.62-.66A4.13,4.13,0,0,0,9.9,27a6.91,6.91,0,0,0,0-1.44.61.61,0,0,1,.1-.33.52.52,0,0,1,.36-.26.53.53,0,0,1,.45.11.38.38,0,0,1,.18.25,4.68,4.68,0,0,1-.2,2.74,5.22,5.22,0,0,1-.64,1.16,7.6,7.6,0,0,1-1,1.14Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M22.86,12.05a1,1,0,0,0-.7-.3H9.84a1,1,0,0,0-.7.3,1,1,0,0,0-.29.7v7a7.5,7.5,0,0,1,4.32,6.79c0,.12,0,.25,0,.38h9a1,1,0,0,0,.7-.3,1,1,0,0,0,.29-.7V12.75A1,1,0,0,0,22.86,12.05Zm-2.77,4.07H17.14v8.49H14.81V16.12H11.87v-1.9h8.22Z\"\r\n style={{ fill: \"#808488\" }}\r\n />\r\n </svg>\r\n);\r\n\r\nexport default TemplateSharedSvg;\r\n","import * as React from \"react\";\r\nimport { ISvgProps } from \"../../../../src/Definitions/ISvgProps\";\r\n\r\nconst ParagraphsSharedSvg: React.FC<ISvgProps> = (props: ISvgProps) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" {...props}>\r\n <rect width=\"32\" height=\"32\" style={{ fill: \"none\" }} />\r\n <path\r\n d=\"M7.23,12H8.5a11.26,11.26,0,0,0,2-.14,2.77,2.77,0,0,0,1-.46,2.54,2.54,0,0,0,.82-.95,3.08,3.08,0,0,0,.33-1.5A3,3,0,0,0,12.12,7a2.56,2.56,0,0,0-1.39-.94,11,11,0,0,0-2.32-.15H5.27V15.6h2Zm0-4.39h.94a9.69,9.69,0,0,1,1.4.07,1.37,1.37,0,0,1,.79.43,1.28,1.28,0,0,1,.31.87,1.28,1.28,0,0,1-.83,1.23,5.16,5.16,0,0,1-1.55.15H7.23Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M26.7,13.92H15.38a.59.59,0,0,0-.49.3,1.18,1.18,0,0,0-.21.7,1.21,1.21,0,0,0,.21.71.6.6,0,0,0,.49.29H26.7a.6.6,0,0,0,.49-.29,1.19,1.19,0,0,0,.21-.71,1.16,1.16,0,0,0-.21-.7A.58.58,0,0,0,26.7,13.92Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M26.7,9.94H15.38a.59.59,0,0,0-.49.3,1.18,1.18,0,0,0-.21.7,1.16,1.16,0,0,0,.21.7.59.59,0,0,0,.49.3H26.7a.6.6,0,0,0,.49-.29,1.19,1.19,0,0,0,.21-.71,1.21,1.21,0,0,0-.21-.71A.59.59,0,0,0,26.7,9.94Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M15.4,8H26.7a.58.58,0,0,0,.49-.29A1.17,1.17,0,0,0,27.4,7a1.16,1.16,0,0,0-.21-.7A.58.58,0,0,0,26.7,6H15.4a.59.59,0,0,0-.49.3,1.29,1.29,0,0,0,0,1.41A.58.58,0,0,0,15.4,8Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <rect width=\"32\" height=\"32\" style={{ fill: \"none\" }} />\r\n <path\r\n d=\"M27.13,18.2a.76.76,0,0,0-.54-.3H6.09a.87.87,0,0,0-.51.3,1.21,1.21,0,0,0-.26.7.41.41,0,0,0,0,.11H5.5a7.46,7.46,0,0,1,3.58.91H26.59a.76.76,0,0,0,.54-.3,1.35,1.35,0,0,0,.26-.71A1.26,1.26,0,0,0,27.13,18.2Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M.79,27.74a1.34,1.34,0,0,1-.62-.61A1.36,1.36,0,0,1,0,26.42a1.43,1.43,0,0,1,.45-1,1.35,1.35,0,0,1,1-.38,1.38,1.38,0,0,1,.9.36,1.48,1.48,0,0,1,.34.45,1.35,1.35,0,0,1,.13.7,1.24,1.24,0,0,1-.29.78.94.94,0,0,1-.47.38L2,27.77a4.13,4.13,0,0,0,.32.85,4.19,4.19,0,0,0,1.13,1.31,6.72,6.72,0,0,0,1.28.66.62.62,0,0,1,.33.67.59.59,0,0,1-.3.36.36.36,0,0,1-.3,0A4.6,4.6,0,0,1,2.1,30.27a4.69,4.69,0,0,1-.76-1.08,7.12,7.12,0,0,1-.56-1.45Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M7.07,21.29a1.46,1.46,0,0,1,1.54-.06,1.43,1.43,0,0,1,.52,1.95,1.32,1.32,0,0,1-.75.62,1.51,1.51,0,0,1-.55.09,1.37,1.37,0,0,1-.68-.21,1.33,1.33,0,0,1-.55-.62,1,1,0,0,1-.12-.6.38.38,0,0,0,0-.1,3.9,3.9,0,0,0-.9-.12,4.1,4.1,0,0,0-1.69.39,6.52,6.52,0,0,0-1.18.81.52.52,0,0,1-.32.11A.53.53,0,0,1,2,23.42.64.64,0,0,1,1.77,23a.4.4,0,0,1,.11-.28,4.58,4.58,0,0,1,2.34-1.44,4.55,4.55,0,0,1,1.32-.16,7,7,0,0,1,1.53.19Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <rect\r\n x=\"0.07\"\r\n y=\"21\"\r\n width=\"10.93\"\r\n height=\"10.93\"\r\n style={{ fill: \"none\" }}\r\n />\r\n <rect\r\n x=\"0.07\"\r\n y=\"21\"\r\n width=\"10.93\"\r\n height=\"10.93\"\r\n style={{ fill: \"none\" }}\r\n />\r\n <path\r\n d=\"M9,30.59a1.34,1.34,0,0,1-.27.82,1.42,1.42,0,0,1-.57.46,1.42,1.42,0,0,1-1.89-.71,1.36,1.36,0,0,1-.07-1,1.31,1.31,0,0,1,.25-.5A1.23,1.23,0,0,1,7,29.26a1.27,1.27,0,0,1,.82-.09,1.13,1.13,0,0,1,.56.25l.08,0a3.94,3.94,0,0,0,.63-.66,4.13,4.13,0,0,0,.67-1.59,6.29,6.29,0,0,0,0-1.44.59.59,0,0,1,.1-.33.53.53,0,0,1,.36-.27.59.59,0,0,1,.46.12.37.37,0,0,1,.17.25,4.68,4.68,0,0,1-.2,2.74A4.52,4.52,0,0,1,10,29.45a7.6,7.6,0,0,1-1,1.14Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M27.13,22.18a.76.76,0,0,0-.54-.3H11.4a7.46,7.46,0,0,1,1.12,2H26.59a.76.76,0,0,0,.54-.3,1.35,1.35,0,0,0,.26-.71A1.26,1.26,0,0,0,27.13,22.18Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n </svg>\r\n);\r\n\r\nexport default ParagraphsSharedSvg;\r\n","import * as React from \"react\";\r\nimport { ISvgProps } from \"../../../../src/Definitions/ISvgProps\";\r\n\r\nconst ImagesSharedSvg: React.FC<ISvgProps> = (props: ISvgProps) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" {...props}>\r\n <path\r\n d=\"M23.92,14.23a3.36,3.36,0,1,0-3.35-3.35A3.35,3.35,0,0,0,23.92,14.23Z\"\r\n style={{ fill: \"#808488\" }}\r\n />\r\n <rect width=\"32\" height=\"32\" style={{ fill: \"none\" }} />\r\n <path\r\n d=\"M31.69,2.32A1.05,1.05,0,0,0,30.93,2H1.07a1,1,0,0,0-.76.32A1,1,0,0,0,0,3.08V21.59A7.5,7.5,0,0,1,13.25,26.4a7.41,7.41,0,0,1-.92,3.6h18.6A1.08,1.08,0,0,0,32,28.92V3.08A1,1,0,0,0,31.69,2.32ZM29.86,25.48l-7.65-7.4-3.45,3.44L8.47,11.15,2.13,17.37V4.16H29.86Z\"\r\n style={{ fill: \"#808488\" }}\r\n />\r\n <path\r\n d=\"M1,27.46a1.33,1.33,0,0,1-.61-.61,1.37,1.37,0,0,1-.17-.72,1.35,1.35,0,0,1,.45-1,1.39,1.39,0,0,1,1-.39,1.45,1.45,0,0,1,.91.37,1.48,1.48,0,0,1,.34.45,1.33,1.33,0,0,1,.13.7,1.3,1.3,0,0,1-.29.78,1.07,1.07,0,0,1-.47.38l-.08.06a4.36,4.36,0,0,0,.32.85,4,4,0,0,0,1.13,1.3A6.75,6.75,0,0,0,5,30.31a.56.56,0,0,1,.25.23.56.56,0,0,1,.08.44.59.59,0,0,1-.3.36.41.41,0,0,1-.3,0A4.63,4.63,0,0,1,2.33,30a5,5,0,0,1-.75-1.09A7,7,0,0,1,1,27.46Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M7.31,21a1.36,1.36,0,0,1,.83-.26,1.48,1.48,0,0,1,.71.19,1.38,1.38,0,0,1,.66.87,1.42,1.42,0,0,1-.89,1.71,1.55,1.55,0,0,1-.55.09,1.37,1.37,0,0,1-.68-.21,1.26,1.26,0,0,1-.55-.63,1,1,0,0,1-.12-.59s0-.07,0-.1a4,4,0,0,0-.9-.12,4.06,4.06,0,0,0-1.69.38,7,7,0,0,0-1.19.82.56.56,0,0,1-.32.11.51.51,0,0,1-.42-.13A.59.59,0,0,1,2,22.7a.37.37,0,0,1,.11-.29A4.71,4.71,0,0,1,4.46,21a4.88,4.88,0,0,1,1.31-.15A7.13,7.13,0,0,1,7.31,21Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <rect\r\n x=\"0.31\"\r\n y=\"20.72\"\r\n width=\"10.93\"\r\n height=\"10.93\"\r\n style={{ fill: \"none\" }}\r\n />\r\n <rect\r\n x=\"0.31\"\r\n y=\"20.72\"\r\n width=\"10.93\"\r\n height=\"10.93\"\r\n style={{ fill: \"none\" }}\r\n />\r\n <path\r\n d=\"M9.21,30.3a1.4,1.4,0,0,1-.27.82,1.44,1.44,0,0,1-.57.47,1.4,1.4,0,0,1-1.1,0,1.31,1.31,0,0,1-.79-.74,1.38,1.38,0,0,1-.08-1,1.6,1.6,0,0,1,.26-.5A1.41,1.41,0,0,1,7.22,29a1.38,1.38,0,0,1,.83-.08,1,1,0,0,1,.56.25.16.16,0,0,0,.08.05,3.86,3.86,0,0,0,.62-.66,4,4,0,0,0,.67-1.6,6.26,6.26,0,0,0,0-1.44.55.55,0,0,1,.1-.32.53.53,0,0,1,.36-.27.57.57,0,0,1,.45.11.41.41,0,0,1,.18.25A4.67,4.67,0,0,1,10.9,28a4.84,4.84,0,0,1-.64,1.16,7.14,7.14,0,0,1-1,1.14Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n </svg>\r\n);\r\n\r\nexport default ImagesSharedSvg;\r\n","import * as React from \"react\";\r\nimport { ISvgProps } from \"../../../../src/Definitions/ISvgProps\";\r\n\r\nconst BrandThemeSharedSvg: React.FC<ISvgProps> = (props: ISvgProps) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" {...props}>\r\n <rect width=\"32\" height=\"32\" style={{ fill: \"none\" }} />\r\n <path\r\n d=\"M13.84,20.3h1.93a3,3,0,0,0,1.95-.57,1.89,1.89,0,0,0,.7-1.53,1.8,1.8,0,0,0-.69-1.5,3.14,3.14,0,0,0-1.93-.53h-2Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M17.79,11.55c0-1.15-.87-1.72-2.61-1.72H13.84v3.71h1.57A2.59,2.59,0,0,0,17.15,13,1.78,1.78,0,0,0,17.79,11.55Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M25.38,5.92a16.7,16.7,0,0,1-5.14-.41,31.5,31.5,0,0,0-4.13-.69H16a31.23,31.23,0,0,0-4.13.69,16.72,16.72,0,0,1-5.14.41c-.08,1.67-.11,3.43-.1,5.28a27.37,27.37,0,0,0,.79,6.09,13.22,13.22,0,0,0,.75,2.2,7.33,7.33,0,0,1,2.12,1.22V7.23H16a7.28,7.28,0,0,1,4.08,1,3.08,3.08,0,0,1,1.43,2.71,3.21,3.21,0,0,1-.87,2.22,4.63,4.63,0,0,1-2.22,1.32v0a4.43,4.43,0,0,1,2.71,1.24,3.44,3.44,0,0,1,1,2.5,4.18,4.18,0,0,1-1.56,3.42,6.59,6.59,0,0,1-4.26,1.26H12.08a7.22,7.22,0,0,1,.68,1.76c.49.3,1,.61,1.6.93s1.22.66,1.68.92l1.76-1c.95-.53,1.6-.9,1.95-1.12a10.69,10.69,0,0,0,3.62-3.75Q26,16.06,25.38,5.92Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M.78,27.74a1.33,1.33,0,0,1-.61-.61A1.37,1.37,0,0,1,0,26.41a1.35,1.35,0,0,1,.45-1,1.41,1.41,0,0,1,1.93,0,1.56,1.56,0,0,1,.34.44,1.37,1.37,0,0,1,.13.7,1.25,1.25,0,0,1-.29.78,1,1,0,0,1-.47.39L2,27.77a4.36,4.36,0,0,0,.32.85,4,4,0,0,0,1.13,1.3,6.75,6.75,0,0,0,1.28.67.51.51,0,0,1,.25.23.56.56,0,0,1,.08.44.59.59,0,0,1-.3.36.41.41,0,0,1-.3,0A4.6,4.6,0,0,1,2.1,30.27a4.75,4.75,0,0,1-.76-1.09,7,7,0,0,1-.56-1.44Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M7.07,21.29A1.36,1.36,0,0,1,7.9,21a1.48,1.48,0,0,1,.71.19,1.38,1.38,0,0,1,.66.87,1.42,1.42,0,0,1-.89,1.71,1.55,1.55,0,0,1-.55.09,1.37,1.37,0,0,1-.68-.21,1.26,1.26,0,0,1-.55-.63,1,1,0,0,1-.12-.59s0-.07,0-.1a4,4,0,0,0-.9-.12,4.06,4.06,0,0,0-1.69.38,7,7,0,0,0-1.19.82.56.56,0,0,1-.32.11A.49.49,0,0,1,2,23.41.56.56,0,0,1,1.77,23a.37.37,0,0,1,.11-.29,4.71,4.71,0,0,1,2.34-1.44,4.88,4.88,0,0,1,1.31-.15,7.13,7.13,0,0,1,1.54.19Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <rect\r\n x=\"0.07\"\r\n y=\"21\"\r\n width=\"10.93\"\r\n height=\"10.93\"\r\n style={{ fill: \"none\" }}\r\n />\r\n <rect\r\n x=\"0.07\"\r\n y=\"21\"\r\n width=\"10.93\"\r\n height=\"10.93\"\r\n style={{ fill: \"none\" }}\r\n />\r\n <path\r\n d=\"M9,30.58a1.4,1.4,0,0,1-.27.82,1.44,1.44,0,0,1-.57.47,1.4,1.4,0,0,1-1.1,0,1.34,1.34,0,0,1-.79-.74,1.38,1.38,0,0,1-.08-1,1.6,1.6,0,0,1,.26-.5A1.41,1.41,0,0,1,7,29.25a1.38,1.38,0,0,1,.83-.08,1,1,0,0,1,.56.25.16.16,0,0,0,.08,0,3.86,3.86,0,0,0,.62-.66,4,4,0,0,0,.67-1.6,6.26,6.26,0,0,0,0-1.44.55.55,0,0,1,.1-.32.53.53,0,0,1,.36-.27.57.57,0,0,1,.45.11.38.38,0,0,1,.18.25,4.67,4.67,0,0,1-.2,2.74A4.84,4.84,0,0,1,10,29.44a7.14,7.14,0,0,1-1,1.14Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M30,1.76H29a33.23,33.23,0,0,1-6.4-.59C22,1.06,21,.83,19.52.5A18.15,18.15,0,0,0,16.11,0a16.48,16.48,0,0,0-3.58.52c-1.58.35-3,.65-4.4.89a38.07,38.07,0,0,1-6.08.35V8.24a42.06,42.06,0,0,0,1.3,10.91,1.42,1.42,0,0,1,0,.16,7.55,7.55,0,0,1,2-.31c-.13-.44-.26-.89-.37-1.36a35.32,35.32,0,0,1-.9-6.78c0-1.08-.07-2.17-.09-3.26S4,5.65,4.06,5s0-1.06,0-1.24a32.7,32.7,0,0,0,5-.45c1.24-.25,2.57-.54,4-.86A13.57,13.57,0,0,1,16,2h0a16.69,16.69,0,0,1,3.06.47c1.34.3,2.64.58,3.88.83a30.12,30.12,0,0,0,5,.45V5c0,.62,0,1.35,0,2.21s0,1.77-.05,2.75-.1,1.94-.18,2.89a28.62,28.62,0,0,1-.37,2.93c-.18,1-.39,1.95-.64,2.86a18.57,18.57,0,0,1-1,2.7,12.48,12.48,0,0,1-1.18,2.15,8.08,8.08,0,0,1-1.32,1.48c-.5.45-1,.85-1.47,1.21s-1.1.77-1.83,1.24l-1.69,1.07-1.26.75-1,.61-1-.56c-.81-.48-1.55-.94-2.23-1.37a7.46,7.46,0,0,1-.67,2l.7.43,1.43.85,1.17.7a1,1,0,0,0,.56.17.9.9,0,0,0,.53-.15c.15-.1.57-.35,1.25-.75a44.57,44.57,0,0,0,7-4.84q2.79-2.57,4.11-8a38.05,38.05,0,0,0,1-7.23C30,10,30,8.39,30,6.18S30.05,2.49,30,1.76Z\"\r\n style={{ fill: \"gray\" }}\r\n />\r\n </svg>\r\n);\r\n\r\nexport default BrandThemeSharedSvg;\r\n","import * as React from \"react\";\r\nimport { ISvgProps } from \"../../../../src/Definitions/ISvgProps\";\r\n\r\nconst LinksSharedSvg: React.FC<ISvgProps> = (props: ISvgProps) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" {...props}>\r\n <rect width=\"32\" height=\"32\" style={{ fill: \"none\" }} />\r\n <polygon\r\n points=\"7 6.74 5.59 8.21 2.1 4.58 3.51 3.12 7 6.74 7 6.74\"\r\n style={{ fill: \"#808488\" }}\r\n />\r\n <polygon\r\n points=\"14.54 6.74 18.03 3.12 19.45 4.58 15.95 8.21 14.54 6.74 14.54 6.74\"\r\n style={{ fill: \"#808488\" }}\r\n />\r\n <polygon\r\n points=\"9.88 6.82 9.88 0 11.88 0 11.88 6.82 9.88 6.82 9.88 6.82\"\r\n style={{ fill: \"#808488\" }}\r\n />\r\n <polygon\r\n points=\"7.61 13.7 1 13.7 1 11.44 7.61 11.44 7.61 13.7 7.61 13.7\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <polygon\r\n points=\"31 11.44 31 13.7 14.62 13.7 14.62 11.44 31 11.44 31 11.44\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M18.15,20.28a3.34,3.34,0,0,0-2.35-.94H12.55V14.73C12.55,13.57,12,13,10.9,13s-1.66.59-1.66,1.75V20a7.49,7.49,0,0,1,1.35,12h7.78V30.64a4.15,4.15,0,0,1,.1-.5,3.48,3.48,0,0,1,.34-.87,6.2,6.2,0,0,0,.56-2.92V22.52A3.81,3.81,0,0,0,18.15,20.28Z\"\r\n style={{ fill: \"#808488\" }}\r\n />\r\n <path\r\n d=\"M.78,27.74a1.33,1.33,0,0,1-.61-.61A1.37,1.37,0,0,1,0,26.41a1.35,1.35,0,0,1,.45-1,1.41,1.41,0,0,1,1.93,0,1.56,1.56,0,0,1,.34.44,1.37,1.37,0,0,1,.13.7,1.25,1.25,0,0,1-.29.78,1,1,0,0,1-.47.39L2,27.77a4.36,4.36,0,0,0,.32.85,4,4,0,0,0,1.13,1.3,6.75,6.75,0,0,0,1.28.67.51.51,0,0,1,.25.23.56.56,0,0,1,.08.44.59.59,0,0,1-.3.36.41.41,0,0,1-.3,0A4.6,4.6,0,0,1,2.1,30.27a4.75,4.75,0,0,1-.76-1.09,7,7,0,0,1-.56-1.44Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M7.07,21.29A1.36,1.36,0,0,1,7.9,21a1.48,1.48,0,0,1,.71.19,1.38,1.38,0,0,1,.66.87,1.42,1.42,0,0,1-.89,1.71,1.55,1.55,0,0,1-.55.09,1.37,1.37,0,0,1-.68-.21,1.26,1.26,0,0,1-.55-.63,1,1,0,0,1-.12-.59s0-.07,0-.1a4,4,0,0,0-.9-.12,4.06,4.06,0,0,0-1.69.38,7,7,0,0,0-1.19.82.56.56,0,0,1-.32.11A.49.49,0,0,1,2,23.41.56.56,0,0,1,1.77,23a.37.37,0,0,1,.11-.29,4.71,4.71,0,0,1,2.34-1.44,4.88,4.88,0,0,1,1.31-.15,7.13,7.13,0,0,1,1.54.19Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <rect\r\n x=\"0.07\"\r\n y=\"21\"\r\n width=\"10.93\"\r\n height=\"10.93\"\r\n style={{ fill: \"none\" }}\r\n />\r\n <rect\r\n x=\"0.07\"\r\n y=\"21\"\r\n width=\"10.93\"\r\n height=\"10.93\"\r\n style={{ fill: \"none\" }}\r\n />\r\n <path\r\n d=\"M9,30.58a1.4,1.4,0,0,1-.27.82,1.44,1.44,0,0,1-.57.47,1.4,1.4,0,0,1-1.1,0,1.34,1.34,0,0,1-.79-.74,1.38,1.38,0,0,1-.08-1,1.6,1.6,0,0,1,.26-.5A1.41,1.41,0,0,1,7,29.25a1.38,1.38,0,0,1,.83-.08,1,1,0,0,1,.56.25.16.16,0,0,0,.08,0,3.86,3.86,0,0,0,.62-.66,4,4,0,0,0,.67-1.6,6.26,6.26,0,0,0,0-1.44.55.55,0,0,1,.1-.32.53.53,0,0,1,.36-.27.57.57,0,0,1,.45.11.38.38,0,0,1,.18.25,4.67,4.67,0,0,1-.2,2.74A4.84,4.84,0,0,1,10,29.44a7.14,7.14,0,0,1-1,1.14Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n </svg>\r\n);\r\n\r\nexport default LinksSharedSvg;\r\n","import * as React from \"react\";\r\nimport { ISvgProps } from \"../../../../src/Definitions/ISvgProps\";\r\n\r\nconst SmartAttachmentsSharedSvg: React.FC<ISvgProps> = (props: ISvgProps) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" {...props}>\r\n <rect width=\"32\" height=\"32\" style={{ fill: \"none\" }} />\r\n <path\r\n d=\"M18.43,21a2.31,2.31,0,0,0,1.19,2.12,2.59,2.59,0,0,0,1.36.33,2.1,2.1,0,0,0,1.52-.72A2.39,2.39,0,0,0,23.2,21V8.39a1,1,0,0,1,.48-.87,1.08,1.08,0,0,1,.56-.13.86.86,0,0,1,.62.29,1,1,0,0,1,.29.71V21a4.37,4.37,0,0,1-1.27,3.14,4.24,4.24,0,0,1-6.13,0A4.33,4.33,0,0,1,16.48,21V13.37H18.4l0,7.59Z\"\r\n style={{ fill: \"#808488\" }}\r\n />\r\n <path\r\n d=\"M19.64.82A6.07,6.07,0,0,1,22.74,0a6,6,0,0,1,3.13.87,6.3,6.3,0,0,1,2.29,2.35A6.47,6.47,0,0,1,29,6.46V23.77a8.44,8.44,0,0,1-2.35,5.82,8,8,0,0,1-2.55,1.76,7.79,7.79,0,0,1-6.23,0,8,8,0,0,1-2.55-1.76A8.44,8.44,0,0,1,13,23.77V20.38a.93.93,0,0,1,.6-.92,1.26,1.26,0,0,1,.48-.08.81.81,0,0,1,.58.3,1,1,0,0,1,.29.7v3.39a6.27,6.27,0,0,0,.81,3.13,6.17,6.17,0,0,0,2.21,2.27,5.54,5.54,0,0,0,2.84.83,6.29,6.29,0,0,0,2.56-.49,6.2,6.2,0,0,0,1.94-1.33,6.11,6.11,0,0,0,1.77-4.41V6.46a4.34,4.34,0,0,0-1.27-3.15,4.09,4.09,0,0,0-3-1.31,4.17,4.17,0,0,0-3,1.2,4.32,4.32,0,0,0-1.37,2.93h-2A6.54,6.54,0,0,1,17.37,3,6.27,6.27,0,0,1,19.64.82Z\"\r\n style={{ fill: \"#808488\" }}\r\n />\r\n <path\r\n d=\"M14.55,14.41a3.38,3.38,0,0,1-.84,2.28,3.32,3.32,0,0,1-2.08,1.15,7.84,7.84,0,0,1-.85,0H8.12a5.27,5.27,0,0,1-2.64-.55,4.43,4.43,0,0,0-1.25-.46H3V9a8,8,0,0,0,1.86-.25,4.06,4.06,0,0,0,1.27-.66A4.7,4.7,0,0,0,7,7.26c.19-.26.39-.56.6-.91,1-1.59,1.86-2.35,2.7-2.27a1.3,1.3,0,0,1,1,.5,1.84,1.84,0,0,1,.16,1.86,12.51,12.51,0,0,1-1,1.69h8.14a1.52,1.52,0,0,1,1.13.48,1.59,1.59,0,0,1,.46,1.16,1.56,1.56,0,0,1-.46,1.14,1.54,1.54,0,0,1-1.13.46H14.55v3Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M.79,27.74a1.34,1.34,0,0,1-.62-.61A1.37,1.37,0,0,1,0,26.41a1.43,1.43,0,0,1,.45-1,1.41,1.41,0,0,1,1.93,0,1.56,1.56,0,0,1,.34.44,1.37,1.37,0,0,1,.13.7,1.2,1.2,0,0,1-.29.78,1,1,0,0,1-.47.39L2,27.77a4.36,4.36,0,0,0,.32.85,4,4,0,0,0,1.13,1.3,6.75,6.75,0,0,0,1.28.67.47.47,0,0,1,.25.23.52.52,0,0,1,.08.44.59.59,0,0,1-.3.36.4.4,0,0,1-.3,0A4.6,4.6,0,0,1,2.1,30.27a4.75,4.75,0,0,1-.76-1.09,7,7,0,0,1-.56-1.44Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <path\r\n d=\"M7.07,21.29A1.36,1.36,0,0,1,7.9,21a1.48,1.48,0,0,1,.71.19,1.38,1.38,0,0,1,.66.87,1.32,1.32,0,0,1-.14,1.08,1.37,1.37,0,0,1-.75.63,1.51,1.51,0,0,1-.55.09,1.37,1.37,0,0,1-.68-.21,1.31,1.31,0,0,1-.55-.63,1,1,0,0,1-.12-.59.34.34,0,0,0,0-.1,3.9,3.9,0,0,0-.9-.12,4.09,4.09,0,0,0-1.69.38,6.58,6.58,0,0,0-1.18.82.59.59,0,0,1-.32.11A.51.51,0,0,1,2,23.41.6.6,0,0,1,1.77,23a.41.41,0,0,1,.11-.29,4.71,4.71,0,0,1,2.34-1.44,4.91,4.91,0,0,1,1.32-.15,7,7,0,0,1,1.53.19Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n <rect\r\n x=\"0.07\"\r\n y=\"21\"\r\n width=\"10.93\"\r\n height=\"10.93\"\r\n style={{ fill: \"none\" }}\r\n />\r\n <rect\r\n x=\"0.07\"\r\n y=\"21\"\r\n width=\"10.93\"\r\n height=\"10.93\"\r\n style={{ fill: \"none\" }}\r\n />\r\n <path\r\n d=\"M9,30.58a1.33,1.33,0,0,1-.27.82,1.44,1.44,0,0,1-.57.47A1.38,1.38,0,0,1,7,31.9a1.36,1.36,0,0,1-.8-.74A1.43,1.43,0,0,1,7,29.25a1.34,1.34,0,0,1,.82-.08,1,1,0,0,1,.56.25l.08,0a4.36,4.36,0,0,0,.63-.66,4.11,4.11,0,0,0,.67-1.6,6.27,6.27,0,0,0,0-1.44.55.55,0,0,1,.1-.32.53.53,0,0,1,.36-.27.59.59,0,0,1,.46.11.4.4,0,0,1,.17.25,4.67,4.67,0,0,1-.2,2.74A4.52,4.52,0,0,1,10,29.44a7.14,7.14,0,0,1-1,1.14Z\"\r\n style={{ fill: \"#279cd8\" }}\r\n />\r\n </svg>\r\n);\r\n\r\nexport default SmartAttachmentsSharedSvg;\r\n","import * as React from \"react\";\r\nimport { IColumn, Icon, IDropdownOption, IDetailsColumnStyles, ITooltipHostProps } from '@fluentui/react';\r\nimport { IPanelModelProperty } from 'components/Panels/PMPanel';\r\nimport { FilterQueryBit, FilterLogic } from 'Utils/Filtering/QueryBit';\r\nimport { AppSettingsODataService, ColumnOrdersODataService } from './Generated/PoliteMailAPI';\r\nimport { IPMColumnWithGridOrder } from './GridColumnOrder';\r\nimport CampaignSharedSvg from \"../../public/images/svg/generated/CampaignSharedSvg\";\r\nimport TemplateSharedSvg from \"../../public/images/svg/generated/TemplateShared\";\r\nimport ParagraphsSharedSvg from \"../../public/images/svg/generated/ParagraphsShared\";\r\nimport ImagesSharedSvg from \"../../public/images/svg/generated/ImagesShared\";\r\nimport BrandThemeSharedSvg from \"../../public/images/svg/generated/BrandThemeShared\";\r\nimport LinksSharedSvg from \"../../public/images/svg/generated/LinksShared\";\r\nimport SmartAttachmentsSharedSvg from \"../../public/images/svg/generated/SmartAttachmentsShared\";\r\nimport MailingListsSharedSvg from \"../../public/images/svg/generated/MailingListsShared\";\r\nimport { GetGridColForParsedBool } from \"../Utils/BooleanUtil\";\r\nimport SvgShareBlue from \"../../public/images/svg/generated/ShareBlue\";\r\nimport { CustomField } from \"./Generated/PoliteMailEntities/Models/CustomField\";\r\n\r\nexport enum GridName {\r\n\tContactsResult = \"ContactsResult\",\r\n\tClicks = \"ClicksResults\",\r\n\tDesktopReads = \"DesktopReadsResults\",\r\n\tDidntClick = \"DidntClickResults\",\r\n\tDidntOpenGrouped = \"DidntOpenResults\",\r\n\tEngagedReads = \"EngagedReadsResults\",\r\n\tFromPermissions = \"FromPermissions\",\r\n\tIgnoredGrouped = \"IgnoredResults\",\r\n\tLikelyForward = \"LikelyForwardResults\",\r\n\tMeetingAccepts = \"MeetingAcceptsResults\",\r\n\tMeetingDeclines = \"MeetingDeclinesResults\",\r\n\tMeetingPending = \"MeetingPendingResults\",\r\n\tMeetingTentatives = \"MeetingTentativesResults\",\r\n\tMobileReadsGrouped = \"MobileReadsResults\",\r\n\tMultipleClicks = \"MultipleClicksResults\",\r\n\tMultipleOpens = \"MultipleOpensResults\",\r\n\tMultipleReads = \"MultipleReadsResults\",\r\n\tOpens = \"OpensResults\",\r\n\tOptOutGrouped = \"OptOutResults\",\r\n\tOutOfOfficeGrouped = \"OutOfOffice\",\r\n\tReadsGrouped = \"ReadsResults\",\r\n\tRepliesGrouped = \"RepliesResults\",\r\n\tSkimmedGrouped = \"SkimmedResults\",\r\n\tUndeliverablesGrouped = \"UndeliverableResults\",\r\n\tSegmentationOpens = \"SegmentationOpensResults\",\r\n\tSegmentationReads = \"SegmentationReadsResults\",\r\n\tSegmentationDesktopReads = \"SegmentationDesktopReadsResults\",\r\n\tSegmentationMobileReads = \"SegmentationMobileReadsResults\",\r\n\tSegmentationMultipleOpens = \"SegmentationMultipleOpensResults\",\r\n\tSegmentationDidntOpen = \"SegmentationDidntOpenResults\",\r\n\tSegmentationMultipleReads = \"SegmentationMultipleReadsResults\",\r\n\tSegmentationEngagedReads = \"SegmentationEngagedReadsResults\",\r\n\tSegmentationIgnored = \"SegmentationIgnoredResults\",\r\n\tSegmentationSkimmed = \"SegmentationSkimmedResults\",\r\n\tSegmentationLikelyForward = \"SegmentationLikelyForwardResults\",\r\n\tSegmentationClicks = \"SegmentationClicksResults\",\r\n\tSegmentationMultipleClicks = \"SegmentationMultipleClicksResults\",\r\n\tSegmentationDidntClick = \"SegmentationDidntClickResults\",\r\n\tSegmentationReplies = \"SegmentationRepliesResults\"\r\n}\r\n\r\nexport enum ColumnDataType {\r\n\tBoolean,\r\n\tBusiness,\r\n\tDate,\r\n\tScheduleSendDate,\r\n\tDatePicker,\r\n\tDatePickerPanel,\r\n\tFile,\r\n\tImage,\r\n\tLink,\r\n\tNumber,\r\n\tQRCode,\r\n\tRegion,\r\n\tString,\r\n\tBigString,\r\n\tSwitch,\r\n\tThumbnail,\r\n\tTrackingURL,\r\n\tUser,\r\n\tModifiedByUser,\r\n\tCustom,\r\n\tHidden,\r\n\tCountry,\r\n\tShared,\r\n\tPMPermission,\r\n\tDateHover,\r\n\tRevoked,\r\n\tMessageType,\r\n\tPercentage,\r\n\tStageID,\r\n\tPrivacy,\r\n\tHeatmap,\r\n\tEmail,\r\n\tNulllableNumber,\r\n\tResponseSvg,\r\n\tPhoneNumber,\r\n\tSendMode,\r\n\tSentVia,\r\n\tCustomField,\r\n\tMillisecondToSecond,\r\n\tCampaign,\r\n\tCampaigns,\r\n\tIsNewsLetter,\r\n\tVerificationInfo,\r\n\tSendModeSubject,\r\n\tTags,\r\n\tSizeKB,\r\n\tDimensions,\r\n\tPreFlight,\r\n\tSendStatus,\r\n\tLongitude,\r\n\tLatitude,\r\n\tEmailRecipient,\r\n\tListType,\r\n\tTimeZone,\r\n\tExpirationDate,\r\n\tPMPersonPillSingle,\r\n\tPMPersonPillMulti\r\n}\r\n\r\nexport enum DefaultColumnWidth {\r\n\tXSmall = 50,\r\n\tSmaller = 75,\r\n\tSmall = 110,\r\n\tSmallish = 130,\r\n\tMedium = 150,\r\n\tLarge = 200,\r\n\tXLarge = 300,\r\n\tXXLarge = 400,\r\n}\r\n\r\nexport interface IPMColumn extends IColumn {\r\n\tdataType: ColumnDataType;\r\n\trender?: (modelProperty: IPanelModelProperty, handler: (val: any) => void) => JSX.Element;\r\n\teditable: boolean;\r\n\tfilter?: FilterQueryBit | FilterLogic;\r\n\twidth?: number;\r\n\tpriority?: number;\r\n\tisHidden?: boolean;\r\n\tisRequired?: boolean;\r\n\tcustomRender?: (item: any, index: number, fieldContent: string) => '' | JSX.Element;\r\n\tdisplayRawValue?: boolean;\r\n\tshowByDefault?: boolean;\r\n\tcanFilter?: boolean;\r\n\tcanSort?: boolean;\r\n\trelatedFieldName?: string;\r\n\tvalidateDuplicate?: boolean;\r\n\texpandPropertyName?: string;\r\n\tmaxDate?: Date;\r\n\ttooltip?: string;\r\n\tdropdownOptions?: any[];\r\n\tselectedDropdownOption?: {item: any, index: number};\r\n\tdropdownOnChange?: (event: React.FormEvent<HTMLDivElement>, option?: IDropdownOption, dropdownRowItem?: any) => void;\r\n}\r\n\r\nexport interface IPMCustomFieldColumn extends IPMColumn {\r\n\tcustomField: CustomField\r\n}\r\n\r\nexport interface IDetailsPMColumnRenderTooltipProps extends ITooltipHostProps {\r\n /**\r\n * Information about the column for which the tooltip is being rendered.\r\n * Use this to format status information about the column, such as its filter or sort state.\r\n */\r\n column?: IPMColumn;\r\n}\r\n\r\n/**\r\n * Merges stored user grid prferences with the base grid column definition for a grid.\r\n *\r\n * @remarks\r\n * Added to support user-specific grid preferences\r\n *\r\n * @param gridName - The name of the grid\r\n * @param defaultGridColumnSettings - The default grid column settings\r\n *\r\n * @returns A combined set of column definitions for a grid.\r\n *\r\n * @comments\r\n *\r\n */\r\nexport const GetUserGridColumnSettings = async (gridName: string, defaultGridColumnSettings: IPMColumn[]) => {\r\n\tconst columnOrdersODataService = new ColumnOrdersODataService();\r\n\tconst userGridPreferences: IPMColumnWithGridOrder[] = await columnOrdersODataService.GetColumnOrderByNameAndUser(\r\n\t\tgridName\r\n\t);\r\n\tconst userGridColumnSettings: IPMColumnWithGridOrder[] = [];\r\n\tdefaultGridColumnSettings.forEach((col, index) => {\r\n\t\tconst userGridPreference = userGridPreferences[+col.key];\r\n\t\tif (col.dataType != ColumnDataType.Hidden || col.isRequired) {\r\n\t\t\tconst useDefault = userGridPreference == undefined ? !col.showByDefault : false;\r\n\t\t\tuserGridColumnSettings.push({\r\n\t\t\t\t...col,\r\n\t\t\t\ti: userGridPreference?.i ?? index,\r\n\t\t\t\tpriority: userGridPreference?.i ?? index,\r\n\t\t\t\tminWidth: col.dataType == ColumnDataType.Hidden || useDefault ? 0 : col.minWidth,\r\n\t\t\t\tcalculatedWidth:\r\n\t\t\t\t\tcol.dataType == ColumnDataType.Hidden || useDefault ? 0 : userGridPreference?.w ?? col.minWidth,\r\n\t\t\t\tcurrentWidth:\r\n\t\t\t\t\tcol.dataType == ColumnDataType.Hidden || useDefault ? 0 : userGridPreference?.w ?? col.minWidth,\r\n\t\t\t\tisHidden:\r\n\t\t\t\t\tcol.dataType == ColumnDataType.Hidden || useDefault\r\n\t\t\t\t\t\t? true\r\n\t\t\t\t\t\t: userGridPreference?.isHidden ?? col.isHidden,\r\n\t\t\t} as IPMColumnWithGridOrder);\r\n\t\t}\r\n\t});\r\n\r\n\treturn userGridColumnSettings;\r\n};\r\n\r\nexport enum GridColumnSharedEntity {\r\n\tCampaign,\r\n\tImage,\r\n\tTemplate,\r\n\tSmartAttachment,\r\n\tParagraph,\r\n\tLink,\r\n\tBrandTheme,\r\n\tContact\r\n}\r\n\r\nexport const defineMinWidth = (name: string, letterSize: number = 10, addMultiplicity: number = 1, denominator: number = 20): number => {\r\n\tconst multiplicity = Math.trunc((name.length * letterSize) / denominator)\r\n\treturn denominator * (multiplicity + addMultiplicity);\r\n}\r\n\r\nexport const getNameColumnContentWithSharedIcon = (item: any, columnEntity: GridColumnSharedEntity, columnName = \"Name\") => {\r\n\treturn (\r\n\t\titem[\"IsLocked\"]\r\n\t\t\t?\r\n\t\t\t<span title=\"Locked\">\r\n\t\t\t\t<Icon iconName=\"Lock\" />\r\n\t\t\t</span>\r\n\t\t\t:\r\n\t\t\t<div style={{ display: 'flex' }}>\r\n\t\t\t\t{item['Shared'] && getSharedIcon(columnEntity)}\r\n\t\t\t\t<span style={{ paddingLeft: '5px' }}>{item[columnName]}</span>\r\n\t\t\t</div>\r\n\t)\r\n};\r\n\r\nconst getMailNameColumnWithSharedAndSubscriptionForMailLists = (item: any) => {\r\n\tconst sharedIcon = GetGridColForParsedBool(item['Shared']?.toString(), ColumnDataType.Shared);\r\n\tconst subscriptionIcon = GetGridColForParsedBool(item['IsNewsletter']?.toString(), ColumnDataType.IsNewsLetter);\r\n\tconst sharedAndSubscriptionIcon = <MailingListsSharedSvg width={'16px'} height={'16px'} />;\r\n\r\n\treturn (\r\n\t\t<div style={{ display: 'flex' }}>\r\n\t\t\t{item['Shared'] && item['IsNewsletter']\r\n\t\t\t\t?\r\n\t\t\t\tsharedAndSubscriptionIcon\r\n\t\t\t\t:\r\n\t\t\t\t<span>\r\n\t\t\t\t\t{sharedIcon}\r\n\t\t\t\t\t{subscriptionIcon}\r\n\t\t\t\t</span>\r\n\t\t\t}\r\n\t\t\t<span style={{ paddingLeft: '5px' }}>{item['Name']}</span>\r\n\t\t</div>\r\n\t)\r\n};\r\n\r\nexport const getSharedIcon = (columnEntity?: GridColumnSharedEntity) => {\r\n\tswitch (columnEntity) {\r\n\t\tcase GridColumnSharedEntity.Campaign:\r\n\t\t\treturn <CampaignSharedSvg width={'16px'} height={'16px'} /> // +\r\n\t\tcase GridColumnSharedEntity.Template:\r\n\t\t\treturn <TemplateSharedSvg width={'16px'} height={'16px'} /> // +\r\n\t\tcase GridColumnSharedEntity.Paragraph:\r\n\t\t\treturn <ParagraphsSharedSvg width={'16px'} height={'16px'} /> // +\r\n\t\tcase GridColumnSharedEntity.Image:\r\n\t\t\treturn <ImagesSharedSvg width={'16px'} height={'16px'} /> // +\r\n\t\tcase GridColumnSharedEntity.BrandTheme:\r\n\t\t\treturn <BrandThemeSharedSvg width={'16px'} height={'16px'} /> // +\r\n\t\tcase GridColumnSharedEntity.Link:\r\n\t\t\treturn <LinksSharedSvg width={'16px'} height={'16px'} /> // +\r\n\t\tcase GridColumnSharedEntity.SmartAttachment:\r\n\t\t\treturn <SmartAttachmentsSharedSvg width={'16px'} height={'16px'} /> // +\r\n\t\tcase GridColumnSharedEntity.Contact:\r\n\t\t\treturn <SvgShareBlue width={'16px'} height={'16px'} />;\r\n\t\tdefault:\r\n\t\t\treturn <SvgShareBlue width={'16px'} height={'16px'} />;\r\n\t}\r\n};\r\n\r\nexport enum MsgExpirationFieldsEnum {\r\n\tEXPIRATION_DATE = 'ExpirationDate',\r\n\tMESSAGE_TEXT = 'MessageText',\r\n\tLINK_ID = 'LinkId',\r\n}\r\n\r\nexport const MailingListsGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Type',\r\n\t\tfieldName: 'ListType',\r\n\t\tminWidth: DefaultColumnWidth.Smaller,\r\n\t\tmaxWidth: DefaultColumnWidth.Smaller,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.ListType,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tisRequired: true\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Mailing List Name',\r\n\t\tfieldName: 'Name',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Members',\r\n\t\tfieldName: 'MemberCount',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Messages Sent',\r\n\t\tfieldName: 'Sent',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Last Sent',\r\n\t\tfieldName: 'SentDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tisSorted: true,\r\n\t\tisSortedDescending: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.XSmall,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tisRequired: true\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Subscription',\r\n\t\tfieldName: 'IsNewsletter',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.IsNewsLetter,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tisRequired: true\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Attention Rate',\r\n\t\tfieldName: 'AttentionRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Valid',\r\n\t\tfieldName: 'IsValid',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tisRequired: true\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Modified By',\r\n\t\tfieldName: 'ModifiedBy',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.ModifiedByUser,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\texpandPropertyName: 'ModifiedByUser'\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Modified Date',\r\n\t\tfieldName: 'ModifiedDate',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Membership Updated',\r\n\t\tfieldName: 'MembershipUpdated',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '17',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Open Rate',\r\n\t\tfieldName: 'OpenRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '18',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Reads Rate',\r\n\t\tfieldName: 'ReadsRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '19',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Avg Read',\r\n\t\tfieldName: 'AvgReadTime',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MillisecondToSecond,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '20',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Click Rate',\r\n\t\tfieldName: 'ClickRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '21',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Description',\r\n\t\tfieldName: 'Description',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const ReportMailingListsGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Type',\r\n\t\tfieldName: 'ListType',\r\n\t\tminWidth: DefaultColumnWidth.Smaller,\r\n\t\tmaxWidth: DefaultColumnWidth.Smaller,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.ListType,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tisRequired: true\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Mailing List Name',\r\n\t\tfieldName: 'Name',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Members',\r\n\t\tfieldName: 'MemberCount',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Messages Sent',\r\n\t\tfieldName: 'Messages',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tisRequired: true,\r\n\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.XSmall,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tisRequired: true\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Attention Rate',\r\n\t\tfieldName: 'AttentionRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Click Rate',\r\n\t\tfieldName: 'ClickRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Subscription',\r\n\t\tfieldName: 'IsNewsletter',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.IsNewsLetter,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Open Rate',\r\n\t\tfieldName: 'OpenRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Reads Rate',\r\n\t\tfieldName: 'ReadsRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Modified By',\r\n\t\tfieldName: 'ModifiedBy',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.ModifiedByUser,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Modified Date',\r\n\t\tfieldName: 'ModifiedDate',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Avg Read',\r\n\t\tfieldName: 'AvgReadTime',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MillisecondToSecond,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Description',\r\n\t\tfieldName: 'Description',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '17',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '18',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const ContactsGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Status',\r\n\t\tfieldName: 'StageID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.StageID,\r\n\t\teditable: false,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Display Name',\r\n\t\tfieldName: 'DisplayName',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'First Name',\r\n\t\tfieldName: 'FirstName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Last Name',\r\n\t\tfieldName: 'LastName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tminWidth: DefaultColumnWidth.XLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tisHidden: true,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.XSmall,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Preferred language',\r\n\t\tfieldName: 'LanguagePreference',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Time zone',\r\n\t\tfieldName: 'ContactTimeZoneInfo',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.TimeZone,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Working Days',\r\n\t\tfieldName: 'WorkDays',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Start hour',\r\n\t\tfieldName: 'DayStart',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'End hour',\r\n\t\tfieldName: 'DayEnd',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Modified Date',\r\n\t\tfieldName: 'LastChangedDate',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t}\t\r\n] as IPMColumn[];\r\n\r\nexport const ContactsOpensGridColumns: IPMColumn[] = [\r\n\t{\r\n\t\tkey: 'ID',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: false,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }},\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'DisplayName',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Display Name',\r\n\t\tfieldName: 'DisplayName',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'FirstName',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'First Name',\r\n\t\tfieldName: 'FirstName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'LastName',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Last Name',\r\n\t\tfieldName: 'LastName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tminWidth: DefaultColumnWidth.XLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'Region',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'Business',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'Owner',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'PrefferedLanguage',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Preferred language',\r\n\t\tfieldName: 'LanguagePreference',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'TimeZone',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Time zone',\r\n\t\tfieldName: 'ContactTimeZoneInfo',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.TimeZone,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'OpenCount',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Open Count',\r\n\t\tfieldName: 'OpenCount',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'DeviceCount',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Device Count',\r\n\t\tfieldName: 'DeviceCount',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'TimeRead',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Time Read',\r\n\t\tfieldName: 'TimeRead',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'IsMobile',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Mobile',\r\n\t\tfieldName: 'IsMobile',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'IsDesktop',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Desktop',\r\n\t\tfieldName: 'IsDesktop',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'IsProxy',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Proxy',\r\n\t\tfieldName: 'IsProxy',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n];\r\n\r\nexport const ContactsReadGridColumns = [...ContactsOpensGridColumns];\r\n\r\nexport const ContactsMainGridColumns = [\r\n\t...ContactsGridColumns,\r\n\t{\r\n\t\tkey: '17',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Validated',\r\n\t\tfieldName: 'Validated',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: false,\r\n\t},\r\n\t{\r\n\t\tkey: '18',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Validation Notes',\r\n\t\tfieldName: 'ValidationNotes',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: false,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const ContactSentGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Status',\r\n\t\tfieldName: 'StageID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.StageID,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Display Name',\r\n\t\tfieldName: 'DisplayName',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'First Name',\r\n\t\tfieldName: 'FirstName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Last Name',\r\n\t\tfieldName: 'LastName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tminWidth: DefaultColumnWidth.XLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.XSmall,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Preferred language',\r\n\t\tfieldName: 'LanguagePreference',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Time zone',\r\n\t\tfieldName: 'ContactTimeZoneInfo',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.TimeZone,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Working Days',\r\n\t\tfieldName: 'WorkDays',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Start hour',\r\n\t\tfieldName: 'DayStart',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '17',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'End hour',\r\n\t\tfieldName: 'DayEnd',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '18',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Modified Date',\r\n\t\tfieldName: 'LastChangedDate',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const OptOutContactsGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Status',\r\n\t\tfieldName: 'StageID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.StageID,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Display Name',\r\n\t\tfieldName: 'DisplayName',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'First Name',\r\n\t\tfieldName: 'FirstName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Last Name',\r\n\t\tfieldName: 'LastName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tminWidth: DefaultColumnWidth.XLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.XSmall,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'OptOut Count',\r\n\t\tfieldName: 'OptOutCount',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Preferred language',\r\n\t\tfieldName: 'LanguagePreference',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Time zone',\r\n\t\tfieldName: 'ContactTimeZoneInfo',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.TimeZone,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Working Days',\r\n\t\tfieldName: 'WorkDays',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Start hour',\r\n\t\tfieldName: 'DayStart',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'End hour',\r\n\t\tfieldName: 'DayEnd',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '17',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Modified Date',\r\n\t\tfieldName: 'LastChangedDate',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const OutOfOfficeContactsGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Status',\r\n\t\tfieldName: 'StageID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.StageID,\r\n\t\teditable: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Display Name',\r\n\t\tfieldName: 'DisplayName',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'First Name',\r\n\t\tfieldName: 'FirstName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Last Name',\r\n\t\tfieldName: 'LastName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tminWidth: DefaultColumnWidth.XLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Out of Office Count',\r\n\t\tfieldName: 'OutOfOfficeCount',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const UndeliverableContactsGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Status',\r\n\t\tfieldName: 'StageID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.StageID,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Display Name',\r\n\t\tfieldName: 'DisplayName',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'First Name',\r\n\t\tfieldName: 'FirstName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Last Name',\r\n\t\tfieldName: 'LastName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tminWidth: DefaultColumnWidth.XLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.XSmall,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Undeliverable Count',\r\n\t\tfieldName: 'UndeliverableCount',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Preferred language',\r\n\t\tfieldName: 'LanguagePreference',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Time zone',\r\n\t\tfieldName: 'ContactTimeZoneInfo',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.TimeZone,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Working Days',\r\n\t\tfieldName: 'WorkDays',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Start hour',\r\n\t\tfieldName: 'DayStart',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'End hour',\r\n\t\tfieldName: 'DayEnd',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '17',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Modified Date',\r\n\t\tfieldName: 'LastChangedDate',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const UndeliverableGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Status',\r\n\t\tfieldName: 'StageID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.StageID,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Display Name',\r\n\t\tfieldName: 'DisplayName',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'First Name',\r\n\t\tfieldName: 'FirstName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Last Name',\r\n\t\tfieldName: 'LastName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tminWidth: DefaultColumnWidth.XLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.XSmall,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Preferred language',\r\n\t\tfieldName: 'LanguagePreference',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Time zone',\r\n\t\tfieldName: 'ContactTimeZoneInfo',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.TimeZone,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Working Days',\r\n\t\tfieldName: 'WorkDays',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Start hour',\r\n\t\tfieldName: 'DayStart',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'End hour',\r\n\t\tfieldName: 'DayEnd',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Modified Date',\r\n\t\tfieldName: 'LastChangedDate',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const OptOutGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Status',\r\n\t\tfieldName: 'StageID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.StageID,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Display Name',\r\n\t\tfieldName: 'DisplayName',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'First Name',\r\n\t\tfieldName: 'FirstName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Last Name',\r\n\t\tfieldName: 'LastName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tminWidth: DefaultColumnWidth.XLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.XSmall,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Preferred language',\r\n\t\tfieldName: 'LanguagePreference',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Time zone',\r\n\t\tfieldName: 'ContactTimeZoneInfo',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.TimeZone,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Working Days',\r\n\t\tfieldName: 'WorkDays',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Start hour',\r\n\t\tfieldName: 'DayStart',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'End hour',\r\n\t\tfieldName: 'DayEnd',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Modified Date',\r\n\t\tfieldName: 'LastChangedDate',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const TemplatesGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Template Name',\r\n\t\tfieldName: 'Name',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tonRender: item => {\r\n\t\t\treturn getNameColumnContentWithSharedIcon(item, GridColumnSharedEntity.Template);\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Subject',\r\n\t\tfieldName: 'Subject',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Description',\r\n\t\tfieldName: 'Description',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'IsLocked',\r\n\t\tfieldName: 'IsLocked',\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Has Tags',\r\n\t\tfieldName: 'HasTags',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Tags,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t}\r\n] as IPMColumn[];\r\n\r\nexport const ParagraphsGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Paragraph Name',\r\n\t\tfieldName: 'Name',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tonRender: item => {\r\n\t\t\treturn getNameColumnContentWithSharedIcon(item, GridColumnSharedEntity.Paragraph);\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Has Tags',\r\n\t\tfieldName: 'HasTags',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Tags,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t}\r\n] as IPMColumn[];\r\n\r\nexport const ImagesGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Image',\r\n\t\tfieldName: 'Thumbnail',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Thumbnail,\r\n\t\teditable: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: false,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Secured',\r\n\t\tfieldName: 'Privacy',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Privacy,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Image Name',\r\n\t\tfieldName: 'Name',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tonRender: item => {\r\n\t\t\treturn getNameColumnContentWithSharedIcon(item, GridColumnSharedEntity.Image);\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Size (KB)',\r\n\t\tfieldName: 'Size',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.SizeKB,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Has Tags',\r\n\t\tfieldName: 'HasTags',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Tags,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Dimensions (px)',\r\n\t\tfieldName: 'Dimensions',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Dimensions,\r\n\t\teditable: false,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const LinksGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Link Text',\r\n\t\tfieldName: 'Name',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tonRender: item => {\r\n\t\t\treturn getNameColumnContentWithSharedIcon(item, GridColumnSharedEntity.Link);\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tkey: 'description',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Description',\r\n\t\tfieldName: 'Description',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'URL',\r\n\t\tfieldName: 'Url',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Link,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'User Link',\r\n\t\tfieldName: 'UserLink',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'GUID',\r\n\t\tfieldName: 'GUID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: false,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Has Tags',\r\n\t\tfieldName: 'HasTags',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Tags,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t}\r\n] as IPMColumn[];\r\n\r\nexport const SmartAttachmentGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Link Text',\r\n\t\tfieldName: 'Name',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tonRender: item => {\r\n\t\t\treturn getNameColumnContentWithSharedIcon(item, GridColumnSharedEntity.SmartAttachment);\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Secured',\r\n\t\tfieldName: 'Privacy',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Privacy,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tisRequired: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'URL',\r\n\t\tfieldName: 'Url',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tisRequired: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Has Tags',\r\n\t\tfieldName: 'HasTags',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Tags,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t}\r\n] as IPMColumn[];\r\n\r\nexport const CampaignResultsGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.Smaller,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Campaign Name',\r\n\t\tfieldName: 'Name',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: false,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tvalidateDuplicate: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Messages',\r\n\t\tfieldName: 'Messages',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Last Sent',\r\n\t\tfieldName: 'LastSentDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tisSorted: true,\r\n\t\tisSortedDescending: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Audience',\r\n\t\tfieldName: 'Audience',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Sent',\r\n\t\tfieldName: 'Sent',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tisRequired: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Open Rate',\r\n\t\tfieldName: 'OpenRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Read Rate',\r\n\t\tfieldName: 'ReadsRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Click Rate',\r\n\t\tfieldName: 'ClickRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Attention Rate',\r\n\t\tfieldName: 'AttentionRate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Description',\r\n\t\tfieldName: 'Description',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Avg Read',\r\n\t\tfieldName: 'AvgReadTime',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MillisecondToSecond,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const CampaignsGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.Smaller,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Campaign Name',\r\n\t\tfieldName: 'Name',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: false,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Audience',\r\n\t\tfieldName: 'Audience',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Last Sent',\r\n\t\tfieldName: 'LastSentDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tisSorted: true,\r\n\t\tisSortedDescending: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Messages',\r\n\t\tfieldName: 'Messages',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Sent',\r\n\t\tfieldName: 'Sent',\r\n\t\tminWidth: DefaultColumnWidth.Smaller,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tisRequired: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Open Rate',\r\n\t\tfieldName: 'OpenRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Attention Rate',\r\n\t\tfieldName: 'AttentionRate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Read Rate',\r\n\t\tfieldName: 'ReadsRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Click Rate',\r\n\t\tfieldName: 'ClickRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Description',\r\n\t\tfieldName: 'Description',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Avg Read',\r\n\t\tfieldName: 'AvgReadTime',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MillisecondToSecond,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const DraftsGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tcalculatedWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\tmaxDate: null,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tisSortedDescending: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Subject',\r\n\t\tfieldName: 'Subject',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'From Name',\r\n\t\tfieldName: 'FromName',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'From Email',\r\n\t\tfieldName: 'FromEmail',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'CampaignID',\r\n\t\tfieldName: 'CampaignID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tisKey: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Campaign',\r\n\t\tfieldName: 'CampaignID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Campaign,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'To',\r\n\t\tfieldName: 'ToDisplay',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.EmailRecipient,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const ClicksGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'URL',\r\n\t\tfieldName: 'ActionUrl',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Click Date',\r\n\t\tfieldName: 'ClickDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'IP Address',\r\n\t\tfieldName: 'IPAddress',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Latitude',\r\n\t\tfieldName: 'Latitude',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Latitude,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Longitude',\r\n\t\tfieldName: 'Longitude',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Longitude,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const CustomFieldsGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'Name',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Show',\r\n\t\tfieldName: 'Show',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Segment',\r\n\t\tfieldName: 'Segment',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Editable',\r\n\t\tfieldName: 'AllowEdit',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Data Type',\r\n\t\tfieldName: 'DataType',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: false,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const ScheduledSendsGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Send Status',\r\n\t\tfieldName: 'SendStatus',\r\n\t\tminWidth: DefaultColumnWidth.XSmall,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.SendStatus,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Subject',\r\n\t\tfieldName: 'Subject',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Send Date',\r\n\t\tfieldName: 'SendDate',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.ScheduleSendDate,\r\n\t\tmaxDate: null,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'From Email',\r\n\t\tfieldName: 'FromEmail',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Recipients',\r\n\t\tfieldName: 'RecipientCount',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Campaign',\r\n\t\tfieldName: 'CampaignName',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'CampaignID',\r\n\t\tfieldName: 'CampaignID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tisKey: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'To',\r\n\t\tfieldName: 'To',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Expiration Date',\r\n\t\tfieldName: MsgExpirationFieldsEnum.EXPIRATION_DATE,\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: false,\r\n\t\tdataType: ColumnDataType.ExpirationDate,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: false,\r\n\t},\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'AdaptiveCardIncluded',\r\n\t\tfieldName: 'AdaptiveCardIncluded',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const MessagesGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Subject',\r\n\t\tfieldName: 'Subject',\r\n\t\trelatedFieldName: 'SendMode',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.SendModeSubject,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'To',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'To',\r\n\t\tfieldName: 'ToDisplay',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.EmailRecipient,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'Cc',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Cc',\r\n\t\tfieldName: 'CcDisplay',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.EmailRecipient,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'Bcc',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Bcc',\r\n\t\tfieldName: 'BccDisplay',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.EmailRecipient,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Sent',\r\n\t\tfieldName: 'Sent',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Open Rate',\r\n\t\tfieldName: 'OpenRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Read Rate',\r\n\t\tfieldName: 'ReadsRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Click Rate',\r\n\t\tfieldName: 'ClickRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name, 9) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Sent Date',\r\n\t\tfieldName: 'SentDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tisSortedDescending: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'From',\r\n\t\tfieldName: 'From',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Last Updated',\r\n\t\tfieldName: 'ReportRunDate',\r\n\t\tminWidth: DefaultColumnWidth.Smallish,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Sender',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Skimmed Rate',\r\n\t\tfieldName: 'SkimmedRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Didnt Click Rate',\r\n\t\tfieldName: 'DidntClickRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Didnt Open Rate',\r\n\t\tfieldName: 'DidntOpenRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Engaged Read Rate',\r\n\t\tfieldName: 'EngagedReadRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '17',\r\n\t\tshowByDefault: false,\r\n\t\tname: '% Effective',\r\n\t\tfieldName: 'EffectiveRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '18',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Avg Read Time',\r\n\t\tfieldName: 'AvgReadTime',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MillisecondToSecond,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '19',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Mobile Opens',\r\n\t\tfieldName: 'MobileOpens',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '20',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Open Count',\r\n\t\tfieldName: 'OpenCount',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '21',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Forwards',\r\n\t\tfieldName: 'Forwards',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '22',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Sent Via',\r\n\t\tfieldName: 'SentVia',\r\n\t\tminWidth: DefaultColumnWidth.Smaller,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.SentVia,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '23',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Campaigns',\r\n\t\tfieldName: 'CampaignNames',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Campaigns,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { overflow: 'hidden' } },\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '25',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Engagement Rate',\r\n\t\tfieldName: 'EngagementRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '26',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Attention Rate',\r\n\t\tfieldName: 'AttentionRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '27',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Desktop Opens',\r\n\t\tfieldName: 'DesktopOpens',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'ProxyOpens',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Proxy Opens',\r\n\t\tfieldName: 'UserProxyOpens',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '28',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Multiple Read Rate',\r\n\t\tfieldName: 'MultipleReadRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '29',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Multiple Open Rate',\r\n\t\tfieldName: 'MultipleOpenRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '30',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Content Utilization',\r\n\t\tfieldName: 'ContentUtilization',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '31',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Replies',\r\n\t\tfieldName: 'ReplyCount',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '32',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Ignored',\r\n\t\tfieldName: 'Ignored',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '33',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Undeliverables Rate',\r\n\t\tfieldName: 'UndeliverableRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '34',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Out-Of-Office Rate',\r\n\t\tfieldName: 'OofRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '35',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Opt-Out Rate',\r\n\t\tfieldName: 'OptOutRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '36',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Multiple Click Rate',\r\n\t\tfieldName: 'MultipleClicksRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '37',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Type',\r\n\t\tfieldName: 'MailItemType',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MessageType,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '38',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'PreFlight',\r\n\t\tfieldName: 'IsPreflight',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.PreFlight,\r\n\t\tisRequired: true,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '39',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Measurement',\r\n\t\tfieldName: 'SendMode',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.SendMode,\r\n\t\teditable: false,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '40',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Return Path',\r\n\t\tfieldName: 'ReturnPath',\r\n\t\tminWidth: DefaultColumnWidth.Smaller,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Email,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '41',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Expiration',\r\n\t\tfieldName: 'MessageExpirationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.ExpirationDate,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t}\r\n] as IPMColumn[];\r\n\r\nexport const EmailFromGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'Name',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\tisRequired: true,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'From',\r\n\t\tfieldName: 'Email',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tonRender: (item) => `${item.Name} <${item.Email}>`\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Messages',\r\n\t\tfieldName: 'Messages',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tisSorted: true,\r\n\t\tisSortedDescending: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Audience',\r\n\t\tfieldName: 'Audience',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Last Sent',\r\n\t\tfieldName: 'SentDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Sent',\r\n\t\tfieldName: 'Sent',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Open Rate',\r\n\t\tfieldName: 'OpenRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Attention Rate',\r\n\t\tfieldName: 'AttentionRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Read Rate',\r\n\t\tfieldName: 'ReadsRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Click Rate',\r\n\t\tfieldName: 'ClickRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const SenderGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'User Name',\r\n\t\tfieldName: 'Name',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Froms',\r\n\t\tfieldName: 'FromCount',\r\n\t\tget minWidth() { return defineMinWidth(this.name, 10, 2) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Messages',\r\n\t\tfieldName: 'Messages',\r\n\t\tget minWidth() { return defineMinWidth(this.name, 10, 2) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tisSortedDescending: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Audience',\r\n\t\tfieldName: 'Audience',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Total Sent',\r\n\t\tfieldName: 'Sent',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Open Rate',\r\n\t\tfieldName: 'OpenRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Read Rate',\r\n\t\tfieldName: 'ReadsRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Click Rate',\r\n\t\tfieldName: 'ClickRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Last Sent',\r\n\t\tfieldName: 'SentDate',\r\n\t\tminWidth: DefaultColumnWidth.Smallish,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\r\n\t{\r\n\t\tkey: '12',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Avg Read',\r\n\t\tfieldName: 'AvgReadTime',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MillisecondToSecond,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const SocialLinkGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tisRequired: true\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'Name',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tonRender: item => {\r\n\t\t\treturn getNameColumnContentWithSharedIcon(item, GridColumnSharedEntity.Link);\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'URL',\r\n\t\tfieldName: 'Url',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Link,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'QR Code',\r\n\t\tfieldName: 'QRCode',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.QRCode,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Description',\r\n\t\tfieldName: 'Description',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const UsersGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tminWidth: DefaultColumnWidth.XLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'First Name',\r\n\t\tfieldName: 'FirstName',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Last Name',\r\n\t\tfieldName: 'LastName',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Role',\r\n\t\tfieldName: 'UserType',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.PMPermission,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Last Login',\r\n\t\tfieldName: 'LastLogin',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Active',\r\n\t\tfieldName: 'ActiveState',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Require Password Reset',\r\n\t\tfieldName: 'RequirePasswordReset',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\n\r\nexport const FromPermissionsGridColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'From Email',\r\n\t\tfieldName: 'FromEmail',\r\n\t\tminWidth: DefaultColumnWidth.XLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.PMPersonPillSingle,\r\n\t\tisSorted: true,\r\n\t\tisSortedDescending:false,\r\n\t\tisRequired: true,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t },\r\n\t {\r\n\t\t key: '2',\r\n\t\t showByDefault: true,\r\n\t\t name: 'Approved Users',\r\n\t\t fieldName: 'ApprovedUsers',\r\n\t\t minWidth: DefaultColumnWidth.Large,\r\n\t\t isResizable: true,\r\n\t\t dataType: ColumnDataType.PMPersonPillMulti,\r\n\t\t editable: false,\r\n\t\t isSorted: false,\r\n\t\t canFilter: true,\r\n\t\t canSort: false,\r\n\t },\r\n\t {\r\n\t\t key: '3',\r\n\t\t showByDefault: true,\r\n\t\t name: 'Pending Users',\r\n\t\t fieldName: 'PendingUsers',\r\n\t\t minWidth: DefaultColumnWidth.Large,\r\n\t\t isResizable: true,\r\n\t\t dataType: ColumnDataType.PMPersonPillMulti,\r\n\t\t editable: false,\r\n\t\t isSorted: false,\r\n\t\t canFilter: true,\r\n\t\t canSort: false,\r\n\t },\r\n\t {\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Is Active',\r\n\t\tfieldName: 'IsActive',\r\n\t\tminWidth: DefaultColumnWidth.Smaller,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t}\r\n] as IPMColumn[];\r\n\r\n\r\nexport const PATGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'Name',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreatedDate',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tdisplayRawValue: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Modified Date',\r\n\t\tfieldName: 'ModifiedDate',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tdisplayRawValue: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Expiration Date',\r\n\t\tfieldName: 'ExpirationDate',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tdisplayRawValue: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Active',\r\n\t\tfieldName: 'Revoked',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Revoked,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const BrandThemesGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tisHidden: true,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'Name',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tonRender: item => {\r\n\t\t\treturn getNameColumnContentWithSharedIcon(item, GridColumnSharedEntity.BrandTheme);\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const LastSentGridColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Count',\r\n\t\tfieldName: 'count',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tget maxWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'Subject',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Subject',\r\n\t\tfieldName: 'subject',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tget maxWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Send Date',\r\n\t\tfieldName: 'sendDate',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tmaxWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Creation Rate',\r\n\t\tfieldName: 'creationRate',\r\n\t\tminWidth: DefaultColumnWidth.XLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const RecentInteractionsGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Response Date',\r\n\t\tfieldName: 'ResponseDate',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Display Name',\r\n\t\tfieldName: 'DisplayName',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'IP Address',\r\n\t\tfieldName: 'IPAddress',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Response',\r\n\t\tfieldName: 'Response',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Response Type',\r\n\t\tfieldName: 'ResponseType',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.ResponseSvg,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Color',\r\n\t\tfieldName: 'Color',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'Opens',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Opens',\r\n\t\tfieldName: 'Opens',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Action Name',\r\n\t\tfieldName: 'ActionName',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Profile ID',\r\n\t\tfieldName: 'ProfileId',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Delivery List ID',\r\n\t\tfieldName: 'DeliveryListId',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tisRequired: true,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const LicenseComplianceGridColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: '',\r\n\t\tfieldName: 'name',\r\n\t\tminWidth: 200,\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Licensed',\r\n\t\tfieldName: 'licensed',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tget maxWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Actual',\r\n\t\tfieldName: 'actual',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tget maxWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Compliance Status',\r\n\t\tfieldName: 'status',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const ReportLinksColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'ActionName',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'URL',\r\n\t\tfieldName: 'ActionURL',\r\n\t\tminWidth: 400,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Total Clicks',\r\n\t\tfieldName: 'TotalClicks',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Unique Clicks',\r\n\t\tfieldName: 'UniqueClicks',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Click Rate',\r\n\t\tfieldName: 'ClickRate',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nconst comparisonColStyle: IDetailsColumnStyles = {\r\n\troot: {\r\n\t\toverflow: 'hidden',\r\n\t},\r\n\tgripperBarVerticalStyle: \"\",\r\n\tcellTooltip: \"\",\r\n\tcellTitle: \"\",\r\n\tcellName: \"\",\r\n\ticonClassName: \"\",\r\n\tnearIcon: \"\",\r\n\taccessibleLabel: \"\",\r\n\tsortIcon: \"\",\r\n\tfilterChevron: \"\",\r\n\tborderAfterDropping: \"\",\r\n\tnoBorderAfterDropping: \"\",\r\n\tborderWhileDragging: \"\",\r\n\tnoBorderWhileDragging: \"\"\r\n}\r\n\r\nexport const ComparisonColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Comparison Details',\r\n\t\tfieldName: 'Details',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tmaxWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tstyles: comparisonColStyle,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Message One',\r\n\t\tfieldName: 'CompareOne',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tmaxWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tstyles: comparisonColStyle,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Comparison',\r\n\t\tfieldName: 'Comparison',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tmaxWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tstyles: comparisonColStyle,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Message Two',\r\n\t\tfieldName: 'CompareTwo',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tmaxWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tstyles: comparisonColStyle,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const LinkStatsColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'Name',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Link (URL)',\r\n\t\tfieldName: 'URL',\r\n\t\tminWidth: DefaultColumnWidth.XXLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Clicks',\r\n\t\tfieldName: 'Clicks',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\ttooltip: \"Measures the total number of times this link was clicked across all messages.\"\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: '% of Clicks',\r\n\t\tfieldName: 'PercentClicked',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\ttooltip: \"Shows what percentage of clicks this link has compared to all links in this report.\"\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const IndividualLinkStatsColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'Name',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Link (URL)',\r\n\t\tfieldName: 'URL',\r\n\t\tminWidth: DefaultColumnWidth.XXLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Unique Individual Clicks',\r\n\t\tfieldName: 'Individual',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\ttooltip: \"Measures how many unique individuals clicked this link across all messages. For example, if someone clicks the same link multiple times across multiple messages it will only count as 1 unique click.\"\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: \"Didn't Click\",\r\n\t\tshowByDefault: true,\r\n\t\tfieldName: 'DidNotClick',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanSort: true,\r\n\t\tcanFilter: true,\r\n\t\ttooltip: \"Percentage of individuals sent this link and didn't click it in any messages they were sent.\"\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Total Individual Clicks',\r\n\t\tfieldName: 'NonuniqueIndividualClicks',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\ttooltip: \"Measures the total number of times this link was clicked across all messages.\"\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tname: '% of Clicks',\r\n\t\tfieldName: 'IndividualPercentClicked',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\ttooltip: \"Shows what percentage of clicks this link has compared to all links in this report.\"\r\n\t},\r\n] as IPMColumn[];\r\n\r\n\r\nexport const SegmentationLinkStatsColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'Name',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'URL',\r\n\t\tfieldName: 'URL',\r\n\t\tminWidth: DefaultColumnWidth.XXLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Total Clicks',\r\n\t\tfieldName: 'NonuniqueIndividualClicks',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Unique Clicks',\r\n\t\tfieldName: 'Individual',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: \"Click Rate\",\r\n\t\tshowByDefault: true,\r\n\t\tfieldName: 'PercentClicked',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t\tcanSort: true,\r\n\t\tcanFilter: true,\r\n\t}\r\n] as IPMColumn[];\r\n\r\nexport const TagGroupsGridColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'GroupName',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Required',\r\n\t\tfieldName: 'Required',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Predefined',\r\n\t\tfieldName: 'Predefined',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Caption',\r\n\t\tfieldName: 'Caption',\r\n\t\tminWidth: DefaultColumnWidth.XLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'TagGroupID',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const OpensGridColumns = [\r\n\t{\r\n\t\tkey: 'ID',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'Email',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: false,\r\n\t\tisHidden: true\r\n\t},\r\n\t{\r\n\t\tkey: 'TimeRead',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Time Read',\r\n\t\tfieldName: 'TimeRead',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MillisecondToSecond,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'ReadRate',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Read Date',\r\n\t\tfieldName: 'ReadDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'IPAddress',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'IP Address',\r\n\t\tfieldName: 'IPAddress',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'Lattitude',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Latitude',\r\n\t\tfieldName: 'Latitude',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Latitude,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'Longitude',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Longitude',\r\n\t\tfieldName: 'Longitude',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Longitude,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'Browser',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Browser',\r\n\t\tfieldName: 'Browser',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\r\n] as IPMColumn[];\r\n\r\nexport const ReadsGridColumns = [\r\n\t{\r\n\t\tkey: 'ID',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'Email',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: false,\r\n\t\tisHidden: true\r\n\t},\r\n\t{\r\n\t\tkey: 'IPAddress',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'IP Address',\r\n\t\tfieldName: 'IPAddress',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'Browser',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Browser',\r\n\t\tfieldName: 'Browser',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'TimeRead',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Time Read',\r\n\t\tfieldName: 'TimeRead',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MillisecondToSecond,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'ReadRate',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Read Date',\r\n\t\tfieldName: 'ReadDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'Lattitude',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Latitude',\r\n\t\tfieldName: 'Latitude',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Latitude,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'Longitude',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Longitude',\r\n\t\tfieldName: 'Longitude',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Longitude,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const RepliesGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Reply Date',\r\n\t\tfieldName: 'ReplyDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Ref Id',\r\n\t\tfieldName: 'RefID',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Reply Address',\r\n\t\tfieldName: 'ReplyAddress',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Reply Subject',\r\n\t\tfieldName: 'ReplySubject',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const OutOfOfficeGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Action Name',\r\n\t\tfieldName: 'ActionName',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'IP Address',\r\n\t\tfieldName: 'IPAddress',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'User Agent',\r\n\t\tfieldName: 'UserAgent',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Browser',\r\n\t\tfieldName: 'Browser',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Version',\r\n\t\tfieldName: 'Version',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Is Mobile',\r\n\t\tfieldName: 'IsMobile',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Mobile Device Manufacturer',\r\n\t\tfieldName: 'MobileDeviceManufacturer',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Mobile Device Model',\r\n\t\tfieldName: 'MobileDeviceModel',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Latitude',\r\n\t\tfieldName: 'Latitude',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Latitude,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Longitude',\r\n\t\tfieldName: 'Longitude',\r\n\t\tget minWidth() { return defineMinWidth(this.name) },\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Longitude,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Browser Language',\r\n\t\tfieldName: 'BrowserLanguage',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Full User Agent',\r\n\t\tfieldName: 'FullUserAgent',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Referrer',\r\n\t\tfieldName: 'Referrer',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Read Date',\r\n\t\tfieldName: 'ReadDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const SegmentationGridColumns = [\r\n ...MessagesGridColumns.filter((col) => col.key !== \"Cc\" && col.key !== \"Bcc\").map((col) => {\r\n if (col.key === \"To\") {\r\n return { ...col, fieldName: \"To\" };\r\n } else if (col.key === \"Sent\") {\r\n return {\r\n ...col,\r\n name: \"Size\",\r\n tooltip:\r\n \"Represents the number of contacts included in each segment. Note that the sum of all segment sizes often exceeds the total number of messages sent, as contacts can belong to multiple segments.\",\r\n };\r\n }\r\n return { ...col };\r\n }),\r\n] as IPMColumn[];\r\n\r\nexport const ContactClicksGridColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' }, canSort: true },\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Status',\r\n\t\tfieldName: 'StageID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.StageID,\r\n\t\teditable: false,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Display Name',\r\n\t\tfieldName: 'DisplayName',\r\n\t\tminWidth: DefaultColumnWidth.Large,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t\tonRender: item => {\r\n\t\t\treturn getNameColumnContentWithSharedIcon(item, GridColumnSharedEntity.Contact,\"DisplayName\");\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'First Name',\r\n\t\tfieldName: 'FirstName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Last Name',\r\n\t\tfieldName: 'LastName',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tminWidth: DefaultColumnWidth.XLarge,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: true,\r\n\t\tisHidden: true,\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tminWidth: DefaultColumnWidth.XSmall,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Clicks',\r\n\t\tfieldName: 'ClickCount',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.NulllableNumber,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tshowByDefault: true,\r\n\t\tname: 'Time Read',\r\n\t\tfieldName: 'TimeRead',\r\n\t\tminWidth: DefaultColumnWidth.Small,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MillisecondToSecond,\r\n\t\teditable: false,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Preferred Language',\r\n\t\tfieldName: 'LanguagePreference',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Time Zone',\r\n\t\tfieldName: 'ContactTimeZoneInfo',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.TimeZone,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Working Days',\r\n\t\tfieldName: 'WorkDays',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Start Hour',\r\n\t\tfieldName: 'DayStart',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '17',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'End Hour',\r\n\t\tfieldName: 'DayEnd',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n\t{\r\n\t\tkey: '18',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Modified Date',\r\n\t\tfieldName: 'LastChangedDate',\r\n\t\tminWidth: DefaultColumnWidth.Medium,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t\tcanSort: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const BenchmarkGridColumnDefinitions: IColumn[] = [\r\n\t{ key: 'name', name: 'Measures', fieldName: 'Name', minWidth: 150, maxWidth: 200, isResizable: true },\r\n\t{ key: 'messageStat', name: 'Message', fieldName: 'MessageStat', minWidth: 50, maxWidth: 300, isResizable: false },\r\n\t{\r\n\t\tkey: 'BenchMarkComparison',\r\n\t\tname: 'Differential',\r\n\t\tfieldName: 'BenchMarkComparison',\r\n\t\tminWidth: 75,\r\n\t\tmaxWidth: 75,\r\n\t\tisResizable: false,\r\n\r\n\t},\r\n\t{\r\n\t\tkey: 'overallAverage',\r\n\t\tname: 'Overall Average',\r\n\t\tfieldName: 'OverallAverage',\r\n\t\tminWidth: 175,\r\n\t\tmaxWidth: 175,\r\n\t\tisResizable: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'blank',\r\n\t\tname: '',\r\n\t\tminWidth: 150\r\n\t}\r\n];\r\n","export enum PageNames {\r\n Main = \"main\",\r\n Templates = \"templates\",\r\n Tags = \"tags\",\r\n Paragraphs = \"paragraphs\",\r\n Images = \"images\",\r\n Links = \"links\",\r\n SmartAttachments = \"smartAttachments\",\r\n MailingLists = \"mailingLists\",\r\n NavigateToPortal = \"portal\",\r\n ContentSections = \"buttons\",\r\n TemplatePieces = \"Template Sections\",\r\n Brand = \"Brand Themes\",\r\n AiB = \"AiB Testing\"\r\n}\r\n\r\nexport enum TemplatePageNames {\r\n Home = \"HomePanel\",\r\n SavedLayouts = \"SavedLayouts\",\r\n Templates = \"templates\",\r\n ComposePanel = \"ComposeLayout\",\r\n BrandPanel = \"BrandThemes\",\r\n Folders = \"Folders\",\r\n Paragraphs = \"paragraphs\",\r\n Images = \"images\",\r\n Links = \"links\",\r\n SmartAttachments = \"smartAttachments\",\r\n MailingLists = \"mailingLists\",\r\n NavigateToPortal = \"portal\",\r\n ContentSections = \"buttons\",\r\n TemplatePieces = \"Template Sections\",\r\n AiB = \"AiB Testing\"\r\n}","export enum PMPermissions {\r\n User = 3,\r\n Manager = 2,\r\n Administrator = 1,\r\n Unauthenticated = 0,\r\n SystemAdministrator = -1\r\n}\r\n\r\nexport const GetPermissionFriendlyName = (permission: PMPermissions): string => {\r\n switch (permission) {\r\n case PMPermissions.SystemAdministrator:\r\n return \"System Administrator\";\r\n case PMPermissions.Administrator:\r\n return \"Administrator\";\r\n case PMPermissions.Manager:\r\n return \"Manager\";\r\n case PMPermissions.User:\r\n return \"User\";\r\n case PMPermissions.Unauthenticated:\r\n default:\r\n return \"None\";\r\n }\r\n}\r\n\r\nexport interface IPMRole {\r\n Default: PMPermissions[];\r\n User: PMPermissions[];\r\n Manager: PMPermissions[];\r\n Administrator: PMPermissions[];\r\n SystemAdministrator: PMPermissions[];\r\n Unauthenticated: PMPermissions[];\r\n}\r\n\r\nexport const PMRole: IPMRole = {\r\n Default: [],\r\n User: [PMPermissions.User],\r\n Manager: [PMPermissions.User, PMPermissions.Manager],\r\n Administrator: [PMPermissions.User, PMPermissions.Manager, PMPermissions.Administrator],\r\n SystemAdministrator: [PMPermissions.User, PMPermissions.Manager, PMPermissions.Administrator, PMPermissions.SystemAdministrator],\r\n Unauthenticated: [PMPermissions.Unauthenticated]\r\n}","import { IColumn } from '@fluentui/react';\r\nimport { IPanelModelProperty } from 'components/Panels/PMPanel';\r\nimport { ColumnDataType, MsgExpirationFieldsEnum } from './GridColumnDefinitions';\r\nimport { SubscriptionDisabledTooltip } from 'components/Pages/ListsPages/FilteredListPage';\r\n\r\nexport interface IPMColumn extends IColumn {\r\n\tdataType: ColumnDataType;\r\n\trender?: (modelProperty: IPanelModelProperty, handler: (val: any) => void) => JSX.Element;\r\n\teditable: boolean;\r\n\tvalidateDuplicate?: boolean;\r\n\tdisableEditableTooltip?: (entityType: any) => string;\r\n\tisRequired?: boolean;\r\n}\r\n\r\nexport const CampaignsPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Campaign Name',\r\n\t\tfieldName: 'Name',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tvalidateDuplicate: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Description',\r\n\t\tfieldName: 'Description',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Active',\r\n\t\tfieldName: 'ActiveState',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tname: 'Owner ID',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const ImagesPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Image',\r\n\t\tfieldName: 'Data',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Thumbnail,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Image Name',\r\n\t\tfieldName: 'Name',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Tags',\r\n\t\tfieldName: 'HasTags',\r\n\t\tdataType: ColumnDataType.Tags,\r\n\t\teditable: false\r\n\t}\r\n] as IPMColumn[];\r\n\r\nexport const LinksPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Link Text',\r\n\t\tfieldName: 'Name',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'URL',\r\n\t\tfieldName: 'Url',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Link,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'description',\r\n\t\tname: 'Description',\r\n\t\tfieldName: 'Description',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.BigString,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'User Link',\r\n\t\tfieldName: 'UserLink',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Business ID',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tname: 'Region ID',\r\n\t\tfieldName: 'RegionID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tname: 'Description',\r\n\t\tfieldName: 'Description',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tname: 'GUID',\r\n\t\tfieldName: 'GUID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tname: 'LastUsed',\r\n\t\tfieldName: 'LastUsed',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tname: 'RecencyFrequencyVal',\r\n\t\tfieldName: 'RecencyFrequencyVal',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tname: 'EntityGUID',\r\n\t\tfieldName: 'EntityGUID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tname: 'Owner ID',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Tags',\r\n\t\tfieldName: 'HasTags',\r\n\t\tdataType: ColumnDataType.Tags,\r\n\t\teditable: false\r\n\t}\r\n] as IPMColumn[];\r\n\r\nexport const MailingListsPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Mailing List Name',\r\n\t\tfieldName: 'Name',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Subscription',\r\n\t\tfieldName: 'IsNewsletter',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t\tdisableEditableTooltip: (entityType: any) => {\r\n\t\t\tif('IsNewFeatureFilteredList' in entityType && entityType.IsNewFeatureFilteredList){\r\n\t\t\t\treturn SubscriptionDisabledTooltip;\r\n\t\t\t}\r\n\r\n\t\t\treturn '';\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Business ID',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Region ID',\r\n\t\tfieldName: 'RegionID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Description',\r\n\t\tfieldName: 'Description',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tname: 'VerificationFromInfo',\r\n\t\tfieldName: 'ID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.VerificationInfo,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tname: 'IsNewFeatureFilteredList',\r\n\t\tfieldName: 'IsNewFeatureFilteredList',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const MailingListsContactPanelColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tminWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' } },\r\n\t\tisRequired: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Mailing List Name',\r\n\t\tfieldName: 'Name',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Members',\r\n\t\tfieldName: 'MemberCount',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Subscription',\r\n\t\tfieldName: 'IsNewsletter',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tname: 'Description',\r\n\t\tfieldName: 'Description',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{ key: '12', name: 'Sent', fieldName: 'Sent', isResizable: true, dataType: ColumnDataType.Number, editable: false },\r\n\t{\r\n\t\tkey: '13',\r\n\t\tname: '% Open',\r\n\t\tfieldName: 'OpenRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tname: '% Read',\r\n\t\tfieldName: 'ReadRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tname: 'Avg Read',\r\n\t\tfieldName: 'AvgReadTime',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tname: '% Click',\r\n\t\tfieldName: 'ClickRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '17',\r\n\t\tname: 'VerificationFromInfo',\r\n\t\tfieldName: 'ID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.VerificationInfo,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const SmartAttachmentsPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Link Text',\r\n\t\tfieldName: 'Name',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisRequired: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Business ID',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Region ID',\r\n\t\tfieldName: 'RegionID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'Secured',\r\n\t\tfieldName: 'Privacy',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Tags',\r\n\t\tfieldName: 'HasTags',\r\n\t\tdataType: ColumnDataType.Tags,\r\n\t\teditable: false\r\n\t},\r\n\t{ \r\n\t\tkey: '7', \r\n\t\tname: 'Owner', \r\n\t\tfieldName: 'OwnerID', \r\n\t\tisResizable: true, \r\n\t\tdataType: ColumnDataType.User, \r\n\t\teditable: true \r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const SocialLinkPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'Name',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Description',\r\n\t\tfieldName: 'Description',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'URL',\r\n\t\tfieldName: 'Url',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Link,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'Business ID',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Region ID',\r\n\t\tfieldName: 'RegionID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t\tcanFilter: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const ScheduledSendsPanelColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tmaxWidth: 0,\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' } },\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Subject',\r\n\t\tfieldName: 'Subject',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Send Date',\r\n\t\tfieldName: 'SendDate',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.DatePicker,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'fromName',\r\n\t\tname: 'From Name',\r\n\t\tfieldName: 'FromName',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'From Email',\r\n\t\tfieldName: 'FromEmail',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Custom,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tname: 'Campaign',\r\n\t\tfieldName: 'CampaignID',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Campaign,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tname: 'Has Adaptive Card',\r\n\t\tfieldName: 'AdaptiveCardIncluded',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\t// The abilit to enable message expiration is dependent on two factors: having an adaptive card (key 9 above) and the expiration date being valid (i.e. current date, not null).\r\n\t\tkey: '10',\r\n\t\tname: 'Message Expiration',\r\n\t\tfieldName: MsgExpirationFieldsEnum.EXPIRATION_DATE,\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Switch,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tname: 'Expiration Date',\r\n\t\tfieldName: MsgExpirationFieldsEnum.EXPIRATION_DATE,\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.DatePicker,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tname: 'Expiration Message',\r\n\t\tfieldName: MsgExpirationFieldsEnum.MESSAGE_TEXT,\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.BigString,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tname: 'Link Name',\r\n\t\tfieldName: MsgExpirationFieldsEnum.LINK_ID,\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Custom,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tname: 'Send Status',\r\n\t\tfieldName: 'SendStatus',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.SendStatus,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const ContactsPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'First Name',\r\n\t\tfieldName: 'FirstName',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Last Name',\r\n\t\tfieldName: 'LastName',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Display Name',\r\n\t\tfieldName: 'DisplayName',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Job Title',\r\n\t\tfieldName: 'Title',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tname: 'Company',\r\n\t\tfieldName: 'Company',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tname: 'Website',\r\n\t\tfieldName: 'WebAddress',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tname: 'Mobile',\r\n\t\tfieldName: 'MobileNumber',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.PhoneNumber,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tname: 'Fax',\r\n\t\tfieldName: 'FaxNumber',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.PhoneNumber,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tname: 'Home',\r\n\t\tfieldName: 'HomeNumber',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.PhoneNumber,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tname: 'Address 1',\r\n\t\tfieldName: 'Address1',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tname: 'Address 2',\r\n\t\tfieldName: 'Address2',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tname: 'City',\r\n\t\tfieldName: 'City',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tname: 'State/Prov',\r\n\t\tfieldName: 'StateOrProvince',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tname: 'Zip/Postal',\r\n\t\tfieldName: 'PostalCode',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '17',\r\n\t\tname: 'Country',\r\n\t\tfieldName: 'ClientCountry',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Country,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '18',\r\n\t\tname: 'Notes',\r\n\t\tfieldName: 'Notes',\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.BigString,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const TemplatesPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Template Name',\r\n\t\tfieldName: 'Name',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Subject',\r\n\t\tfieldName: 'Subject',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'Description',\r\n\t\tfieldName: 'Description',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t},\r\n\t{ key: '8', name: 'Owner', fieldName: 'OwnerID', isResizable: true, dataType: ColumnDataType.User, editable: true },\r\n\t{ key: '9', name: 'IsLocked', fieldName: 'IsLocked', dataType: ColumnDataType.Hidden, editable: false },\r\n\t{\r\n\t\tkey: '9',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Tags',\r\n\t\tfieldName: 'HasTags',\r\n\t\tdataType: ColumnDataType.Tags,\r\n\t\teditable: false\r\n\t}\r\n] as IPMColumn[];\r\n\r\nexport const ParagraphsPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Paragraph Name',\r\n\t\tfieldName: 'Name',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Created',\r\n\t\tfieldName: 'CreationDate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t},\r\n\t{ key: '6', name: 'Owner', fieldName: 'OwnerID', isResizable: true, dataType: ColumnDataType.User, editable: true },\r\n\t{\r\n\t\tkey: '7',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Tags',\r\n\t\tfieldName: 'HasTags',\r\n\t\tdataType: ColumnDataType.Tags,\r\n\t\teditable: false\r\n\t}\r\n] as IPMColumn[];\r\n\r\nexport const ClicksPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'URL',\r\n\t\tfieldName: 'ActionUrl',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tisSorted: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Click Date',\r\n\t\tfieldName: 'ClickDate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Browser',\r\n\t\tfieldName: 'Browser',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Longitude',\r\n\t\tfieldName: 'Longitude',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'Latitude',\r\n\t\tfieldName: 'Latitude',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t},\r\n\t{ key: '6', name: 'Owner', fieldName: 'OwnerID', isResizable: true, dataType: ColumnDataType.User, editable: true },\r\n] as IPMColumn[];\r\n\r\nexport const CustomFieldsPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'Name',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tisRequired: true,\r\n\t\tvalidateDuplicate: true,\r\n\t},\r\n\t{ key: '2', name: 'Show', fieldName: 'Show', isResizable: true, dataType: ColumnDataType.Boolean, editable: true },\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Segment',\r\n\t\tfieldName: 'Segment',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'Editable',\r\n\t\tfieldName: 'AllowEdit',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const MessagesPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Subject',\r\n\t\tfieldName: 'Subject',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Thumbnail',\r\n\t\tfieldName: 'Heatmap',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Heatmap,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Type',\r\n\t\tfieldName: 'MailItemType',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MessageType,\r\n\t\teditable: false,\r\n\t},\r\n\t{ key: '4', name: 'From', fieldName: 'From', isResizable: true, dataType: ColumnDataType.String, editable: true },\r\n\t{ key: '5', name: 'To', fieldName: 'To', isResizable: true, dataType: ColumnDataType.String, editable: true },\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Sent Date',\r\n\t\tfieldName: 'SentDate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tisSortedDescending: true,\r\n\t},\r\n\t{ key: '7', name: 'Sent', fieldName: 'Sent', isResizable: true, dataType: ColumnDataType.Number, editable: false },\r\n\t{\r\n\t\tkey: '8',\r\n\t\tname: 'Last Updated',\r\n\t\tfieldName: 'MostRecentOpenDate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tname: '% Open',\r\n\t\tfieldName: 'OpenRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tname: '% Skimmed',\r\n\t\tfieldName: 'SkimmedRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tname: '% Didnt Click',\r\n\t\tfieldName: 'DidntClickRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tname: '% Didnt Open',\r\n\t\tfieldName: 'DidntOpenRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tname: '% Engaged Read',\r\n\t\tfieldName: 'EngagedReadRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '17',\r\n\t\tname: '% Effective',\r\n\t\tfieldName: 'EffectiveRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '18',\r\n\t\tname: 'Avg Read Time',\r\n\t\tfieldName: 'AvgReadTime',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MillisecondToSecond,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '19',\r\n\t\tname: 'Mobile Opens',\r\n\t\tfieldName: 'MobileOpens',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '20',\r\n\t\tname: 'Open Count',\r\n\t\tfieldName: 'OpenCount',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '21',\r\n\t\tname: 'Forwards',\r\n\t\tfieldName: 'Forwards',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '22',\r\n\t\tname: 'Measurement',\r\n\t\tfieldName: 'SendMode',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.SendMode,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '23',\r\n\t\tname: 'Sent Via',\r\n\t\tfieldName: 'SentVia',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.SentVia,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '24',\r\n\t\tname: 'EntityGUID',\r\n\t\tfieldName: 'EntityGUID',\r\n\t\tisResizable: false,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' } },\r\n\t},\r\n\t{\r\n\t\tkey: '25',\r\n\t\tname: 'Campaigns',\r\n\t\tfieldName: 'CampaignNames',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { overflow: 'hidden' } },\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const EmailFromPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'Name',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t},\r\n\t{ key: '2', name: 'From', fieldName: 'Email', isResizable: true, dataType: ColumnDataType.String, editable: true },\r\n\t{ key: '3', name: 'Sent', fieldName: 'Sent', isResizable: true, dataType: ColumnDataType.Number, editable: true },\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: '% Open',\r\n\t\tfieldName: 'OpenRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: '% Read',\r\n\t\tfieldName: 'ReadRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Avg Read',\r\n\t\tfieldName: 'AvgReadTime',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MillisecondToSecond,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tname: '% Click',\r\n\t\tfieldName: 'ClickRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const SenderPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'Name',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tcanFilter: true,\r\n\t},\r\n\t{ key: '2', name: 'Email', fieldName: 'Email', isResizable: true, dataType: ColumnDataType.String, editable: true },\r\n\t{ key: '3', name: 'Sent', fieldName: 'Sent', isResizable: true, dataType: ColumnDataType.Number, editable: true },\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: '% Open',\r\n\t\tfieldName: 'OpenRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: '% Read',\r\n\t\tfieldName: 'ReadRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Avg Read',\r\n\t\tfieldName: 'AvgReadTime',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MillisecondToSecond,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tname: '% Click',\r\n\t\tfieldName: 'ClickRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const PATPanelColumns = [\r\n\t{ key: '2', name: 'Name', fieldName: 'Name', isResizable: true, dataType: ColumnDataType.String, editable: false },\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Created Date',\r\n\t\tfieldName: 'CreatedDate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.DateHover,\r\n\t\teditable: false,\r\n\t\tisSorted: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'Modified Date',\r\n\t\tfieldName: 'ModifiedDate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: false,\r\n\t\tdisplayRawValue: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Expiration Date',\r\n\t\tfieldName: 'ExpirationDate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.DateHover,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tname: 'Active',\r\n\t\tfieldName: 'Revoked',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Revoked,\r\n\t\teditable: false,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const BrandThemesPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Shared,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'Name',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t\tvalidateDuplicate: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Business',\r\n\t\tfieldName: 'BusinessID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Business,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Region',\r\n\t\tfieldName: 'RegionID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Region,\r\n\t\teditable: true,\r\n\t},\r\n\t{ key: '5', name: 'Owner', fieldName: 'OwnerID', isResizable: true, dataType: ColumnDataType.User, editable: true },\r\n] as IPMColumn[];\r\n\r\nexport const LastSentPanelColumns = [\r\n\t{ key: '1', name: 'Count', fieldName: 'count', isResizable: true, dataType: ColumnDataType.Number, editable: true },\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Send Date',\r\n\t\tfieldName: 'sendDate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Creation Rate',\r\n\t\tfieldName: 'creationRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const RecentInteractionsPanelColumns = [\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Response Date',\r\n\t\tfieldName: 'ResponseDate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t},\r\n\t{ key: '3', name: 'Email', fieldName: 'Email', isResizable: true, dataType: ColumnDataType.String, editable: true },\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Display Name',\r\n\t\tfieldName: 'DisplayName',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'IP Address',\r\n\t\tfieldName: 'IPAddress',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Response Type',\r\n\t\tfieldName: 'ResponseType',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.ResponseSvg,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tname: 'Response',\r\n\t\tfieldName: 'Response',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tname: 'Shared',\r\n\t\tfieldName: 'Shared',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tname: 'Color',\r\n\t\tfieldName: 'Color',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' } },\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tname: 'Category',\r\n\t\tfieldName: 'CategoryName',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tname: 'Action Name',\r\n\t\tfieldName: 'ActionName',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tname: 'Profile ID',\r\n\t\tfieldName: 'ProfileId',\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' } },\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tname: 'Opens',\r\n\t\tfieldName: 'Opens',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.NulllableNumber,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tname: 'Clicks',\r\n\t\tfieldName: 'Clicks',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.NulllableNumber,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tname: 'Reads',\r\n\t\tfieldName: 'Reads',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.NulllableNumber,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '17',\r\n\t\tname: 'Replies',\r\n\t\tfieldName: 'Replies',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.NulllableNumber,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const ReportLinksColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'URL',\r\n\t\tfieldName: 'ActionURL',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Total Clicks',\r\n\t\tfieldName: 'TotalClicks',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Unique Clicks',\r\n\t\tfieldName: 'UniqueClicks',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Click Rate',\r\n\t\tfieldName: 'ClickRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: \"Didn't Click Rate\",\r\n\t\tfieldName: 'DidntclickRate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const ComparisonColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Comparison Details',\r\n\t\tfieldName: 'Details',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Message One',\r\n\t\tfieldName: 'CompareOne',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Comparison',\r\n\t\tfieldName: 'Comparison',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Message Two',\r\n\t\tfieldName: 'CompareTwo',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const LinkStatsColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Link (URL)',\r\n\t\tfieldName: 'URL',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Individuals',\r\n\t\tfieldName: 'Individual',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Clicks',\r\n\t\tfieldName: 'Clicks',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: \"Didn't Click\",\r\n\t\tfieldName: 'DidNotClick',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: '% of Clicks',\r\n\t\tfieldName: 'PercentClicked',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Percentage,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const FromLinkStatsColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Link (URL)',\r\n\t\tfieldName: 'URL',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Individuals',\r\n\t\tfieldName: 'Individual',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Clicks',\r\n\t\tfieldName: 'Clicks',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const TagGroupsPanelColumns = [\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Name',\r\n\t\tfieldName: 'GroupName',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Required',\r\n\t\tfieldName: 'Required',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Predefined',\r\n\t\tfieldName: 'Predefined',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Caption',\r\n\t\tfieldName: 'Caption',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'TagGroupID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' } },\r\n\t\tisRequired: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const ReadsPanelColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' } },\r\n\t\tisRequired: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Time Read',\r\n\t\tfieldName: 'TimeRead',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'ReadDate',\r\n\t\tfieldName: 'ReadDate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'IP Address',\r\n\t\tfieldName: 'IPAddress',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Browser',\r\n\t\tfieldName: 'Browser',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'Is Mobile',\r\n\t\tfieldName: 'IsMobile',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Boolean,\r\n\t\teditable: false,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tshowByDefault: false,\r\n\t\tname: 'Email',\r\n\t\tfieldName: 'Email',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: false,\r\n\t\tisRequired: true,\r\n\t\tcanFilter: false,\r\n\t\tcanSort: false,\r\n\t\tisHidden: true\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const RepliesPanelColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' } },\r\n\t\tisRequired: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Reply Date',\r\n\t\tfieldName: 'ReplyDate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t},\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Ref Id',\r\n\t\tfieldName: 'RefID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Reply Address',\r\n\t\tfieldName: 'ReplyAddress',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Reply Subject',\r\n\t\tfieldName: 'ReplySubject',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const OutOfOfficePanelColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' } },\r\n\t\tisRequired: true,\r\n\t},\r\n\t{\r\n\t\tkey: '1',\r\n\t\tname: 'Action Name',\r\n\t\tfieldName: 'ActionName',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t},\r\n\t{ key: '3', name: 'Owner', fieldName: 'OwnerID', isResizable: true, dataType: ColumnDataType.User, editable: true },\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'IP Address',\r\n\t\tfieldName: 'IPAddress',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'User Agent',\r\n\t\tfieldName: 'UserAgent',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Browser',\r\n\t\tfieldName: 'Browser',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tname: 'Version',\r\n\t\tfieldName: 'Version',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tname: 'Is Mobile',\r\n\t\tfieldName: 'IsMobile',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tname: 'Mobile Device Manufacturer',\r\n\t\tfieldName: 'MobileDeviceManufacturer',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tname: 'Mobile Device Model',\r\n\t\tfieldName: 'MobileDeviceModel',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tname: 'Latitude',\r\n\t\tfieldName: 'Latitude',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tname: 'Longitude',\r\n\t\tfieldName: 'Longitude',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tname: 'Browser Language',\r\n\t\tfieldName: 'BrowserLanguage',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tname: 'Full User Agent',\r\n\t\tfieldName: 'FullUserAgent',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tname: 'Referrer',\r\n\t\tfieldName: 'Referrer',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tname: 'Read Date',\r\n\t\tfieldName: 'ReadDate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Date,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const SegmentationPanelColumns = [\r\n\t{\r\n\t\tkey: '0',\r\n\t\tname: 'ID',\r\n\t\tfieldName: 'ID',\r\n\t\tisResizable: 0,\r\n\t\tdataType: ColumnDataType.Hidden,\r\n\t\teditable: false,\r\n\t\tstyles: { root: { display: 'none' } },\r\n\t\tisRequired: true,\r\n\t},\r\n\t{ key: '1', name: 'To', fieldName: 'To', isResizable: true, dataType: ColumnDataType.String, editable: true },\r\n\t{\r\n\t\tkey: '2',\r\n\t\tname: 'Sent Count',\r\n\t\tfieldName: 'Sent',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '3',\r\n\t\tname: 'Opens',\r\n\t\tfieldName: 'OpenCount',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '4',\r\n\t\tname: 'Subject',\r\n\t\tfieldName: 'Subject',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t\tisSorted: true,\r\n\t},\r\n\t{\r\n\t\tkey: '5',\r\n\t\tname: 'Sent Date',\r\n\t\tfieldName: 'SentDate',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '6',\r\n\t\tname: 'Time to Read',\r\n\t\tfieldName: 'TimeToRead',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '7',\r\n\t\tname: 'Measurement',\r\n\t\tfieldName: 'SendMode',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '8',\r\n\t\tname: 'Character Count',\r\n\t\tfieldName: 'CharacterCount',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '9',\r\n\t\tname: 'Paragraph Count',\r\n\t\tfieldName: 'ParagraphCount',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '10',\r\n\t\tname: 'Sentence Count',\r\n\t\tfieldName: 'SentenceCount',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '11',\r\n\t\tname: 'Sentences Per Page',\r\n\t\tfieldName: 'SentencesPerParagraph',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '12',\r\n\t\tname: 'Word Count',\r\n\t\tfieldName: 'WordCount',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.Number,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '13',\r\n\t\tname: 'Words Per Minute',\r\n\t\tfieldName: 'WordsPerMinute',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '14',\r\n\t\tname: 'Words Per Sentence',\r\n\t\tfieldName: 'WordsPerSentence',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '15',\r\n\t\tname: 'Characters Per Word',\r\n\t\tfieldName: 'CharactersPerWord',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '16',\r\n\t\tname: 'Passive Sentences',\r\n\t\tfieldName: 'PassiveSentences',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '17',\r\n\t\tname: 'Reading Ease',\r\n\t\tfieldName: 'ReadingEase',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '18',\r\n\t\tname: 'Grade Level',\r\n\t\tfieldName: 'GradeLevel',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '19',\r\n\t\tname: 'Importance',\r\n\t\tfieldName: 'Importance',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '20',\r\n\t\tname: 'Sensitivity',\r\n\t\tfieldName: 'Sensitivity',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '21',\r\n\t\tname: 'Image Count',\r\n\t\tfieldName: 'ImageCount',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '22',\r\n\t\tname: 'Image Area',\r\n\t\tfieldName: 'Image Area',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '23',\r\n\t\tname: 'Image Area Per Minute',\r\n\t\tfieldName: 'ImageAreaPerMinute',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '24',\r\n\t\tname: 'Sent Via',\r\n\t\tfieldName: 'SentVia',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.SentVia,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '25',\r\n\t\tname: 'Owner',\r\n\t\tfieldName: 'OwnerID',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.User,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '26',\r\n\t\tname: 'Aggregate Send Count',\r\n\t\tfieldName: 'AggregateSendCount',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.String,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '27',\r\n\t\tname: 'Avg Read Time',\r\n\t\tfieldName: 'AvgReadTime',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MillisecondToSecond,\r\n\t\teditable: true,\r\n\t},\r\n\t{\r\n\t\tkey: '28',\r\n\t\tname: 'Avg Read Time Desktop',\r\n\t\tfieldName: 'AvgReadTimeDesktop',\r\n\t\tisResizable: true,\r\n\t\tdataType: ColumnDataType.MillisecondToSecond,\r\n\t\teditable: true,\r\n\t},\r\n] as IPMColumn[];\r\n\r\nexport const BenchmarkPanelColumnDefinitions: IColumn[] = [\r\n\t{ key: 'name', name: 'Details', fieldName: 'Name', minWidth: 150, maxWidth: 200, isResizable: true },\r\n\t{ key: 'messageStat', name: 'Message', fieldName: 'MessageStat', minWidth: 150, maxWidth: 200, isResizable: true },\r\n\t{\r\n\t\tkey: 'BenchMarkComparison',\r\n\t\tname: 'Comparison',\r\n\t\tfieldName: 'BenchMarkComparison',\r\n\t\tminWidth: 150,\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t},\r\n\t{\r\n\t\tkey: 'overallAverage',\r\n\t\tname: 'Overall Average',\r\n\t\tfieldName: 'OverallAverage',\r\n\t\tminWidth: 150,\r\n\t\tmaxWidth: 200,\r\n\t\tisResizable: true,\r\n\t},\r\n];\r\n\r\n\r\nexport enum MessageExpirationFieldNamesEnum {\r\n\tEXPIRATION_DATE = 'ExpirationDate',\r\n\tMESSAGE_TEXT = 'MessageText',\r\n\tLINK_ID = 'LinkId',\r\n}","export enum PreferencesTypes {\r\n\tMeasurementDefault = 1,\r\n\tEnableSubscription = 2,\r\n\tUserExpansionModes = 3,\r\n\tUseExpansionCache = 4,\r\n\tEmbedImages = 6,\r\n\tOverrideWordCount = 7,\r\n\tSendbackLoopInterval = 8,\r\n\tDefaultTemplateId = 9,\r\n\tDefaultCampaignId = 10,\r\n\tCheckRecipientCountSendLimit = 11,\r\n\tWhitelistFromAddress = 12,\r\n\tOverridePreflightInterval = 13,\r\n\tActionableOrganizer = 14,\r\n\tUseDarkMode = 15,\r\n\tGreeting = 16,\r\n\tReportMaximumComparison = 17,\r\n\tShowPanel = 18,\r\n\tClearEWSCache = 19,\r\n\tForgetCredentials = 20,\r\n\tReestablishWarnings = 21,\r\n\tResetTableViews = 22,\r\n\tMonitorInbox = 23,\r\n\tOutlookBrowserMode = 24,\r\n\tRecipientsLoadLimit = 25,\r\n\tSuppressBadCredsWarning = 26,\r\n\tHideInteractionsByGeoLocation = 27,\r\n\tSuppressEmptyListWarning = 28,\r\n\tSuppressMultiTenantWarning = 29,\r\n\tToolbarPosition = 30\r\n}","import { CSSProperties } from 'react';\r\nimport {\r\n\tgetTheme,\r\n\tIImageStyles,\r\n\tILabelStyles,\r\n\tILinkStyles,\r\n\tIDetailsListStyles,\r\n\tIShimmeredDetailsListStyles,\r\n\tITagItemStyles,\r\n\tIToggleStyles,\r\n\tIStyle,\r\n\tIDropdownStyles,\r\n\tIStyleFunctionOrObject,\r\n\tIStyleSet,\r\n\tclassNamesFunction,\r\n\tICheckboxStyles,\r\n\tICommandBarStyles,\r\n\tISpinButtonStyles,\r\n\tIDatePickerStyles,\r\n\tIStackProps,\r\n\tIButtonStyles,\r\n\tITextFieldStyles,\r\n\tIChoiceGroupStyles,\r\n\tICalloutContentStyles,\r\n\tIComboBoxStyles,\r\n\tIDialogStyles,\r\n\tFontSizes,\r\n\tIButtonGridStyles,\r\n} from '@fluentui/react';\r\n\r\nexport declare type IComponentStyles<TSlots> = {\r\n\t[key in keyof TSlots]?: IStyle;\r\n};\r\n\r\nexport const PMBaseStyle: IComponentStyles<any> = {\r\n\troot: [\r\n\t\t{\r\n\t\t\tmargin: '4px 4px 4px 4px',\r\n\t\t\tpadding: '4px 4px 4px 4px',\r\n\t\t\tuserSelect: 'none',\r\n\t\t},\r\n\t],\r\n};\r\n\r\nexport const PMCompactBaseStyle: IComponentStyles<any> = {\r\n\troot: [\r\n\t\t{\r\n\t\t\tmargin: '0px 4px 0px 4px',\r\n\t\t\tpadding: '4px 4px 4px 4px',\r\n\t\t\tuserSelect: 'none',\r\n\t\t},\r\n\t],\r\n};\r\n\r\nexport interface IStylesInterface {\r\n\troot: IStyle;\r\n}\r\n\r\nexport function MergeStyles<T extends IStylesInterface>(\r\n\tbaseStyle: IComponentStyles<any> | (() => IComponentStyles<any>),\r\n\tspecificStyle: IComponentStyles<T> | (() => IComponentStyles<T>)\r\n) {\r\n\tconst isBaseFunction = typeof baseStyle === 'function';\r\n\tconst isSpecificFunction = typeof specificStyle === 'function';\r\n\tlet baseRoot: IStyle = {\r\n\t\troot: [],\r\n\t};\r\n\tlet specificRoot: IStyle = {\r\n\t\troot: [],\r\n\t};\r\n\tif (baseStyle)\r\n\t\tbaseRoot = isBaseFunction\r\n\t\t\t? (baseStyle as () => IComponentStyles<any>)().root\r\n\t\t\t: (baseStyle as IComponentStyles<any>).root;\r\n\tif (specificStyle)\r\n\t\tspecificRoot = isSpecificFunction\r\n\t\t\t? (specificStyle as () => IComponentStyles<T>)().root\r\n\t\t\t: (specificStyle as IComponentStyles<T>).root;\r\n\tif ((!baseStyle && !specificStyle) || ((baseRoot as []).length === 0 && (specificRoot as []).length === 0)) {\r\n\t\treturn {\r\n\t\t\troot: [],\r\n\t\t};\r\n\t} else if (!baseStyle) {\r\n\t\treturn {\r\n\t\t\troot: [...(specificRoot as [])],\r\n\t\t};\r\n\t} else if (!specificStyle) {\r\n\t\treturn {\r\n\t\t\troot: [...(baseRoot as [])],\r\n\t\t};\r\n\t}\r\n\tlet nRoot: any = {};\r\n\t(baseRoot as []).map((value: any) => {\r\n\t\tlet propValues = Object.values(value);\r\n\t\tlet idx: number = 0;\r\n\t\tObject.keys(value).forEach((key) => {\r\n\t\t\tnRoot[key] = propValues[idx];\r\n\t\t\tidx++;\r\n\t\t});\r\n\t});\r\n\t(specificRoot as []).map((val: IStyle) => {\r\n\t\tlet idx: number = 0;\r\n\t\tlet propKeys = Object.keys(val);\r\n\t\tlet propVals = Object.values(val);\r\n\t\tpropKeys.forEach((key) => {\r\n\t\t\tnRoot[key] = propVals[idx];\r\n\t\t\tidx++;\r\n\t\t});\r\n\t});\r\n\tlet nStyle: IComponentStyles<any> = {\r\n\t\troot: [nRoot],\r\n\t};\r\n\treturn nStyle;\r\n}\r\n\r\nexport const ConvertToCSSProperties = (root: IStyle): CSSProperties => {\r\n\tlet props: any = {};\r\n\r\n\tlet baseStyle = root.valueOf() as IStyle[];\r\n\tif (baseStyle === undefined || baseStyle.length === 0) return props;\r\n\r\n\tbaseStyle.map((style: any) => {\r\n\t\tObject.keys(style).map((key) => {\r\n\t\t\tprops[key] = style[key];\r\n\t\t});\r\n\t});\r\n\r\n\treturn props as CSSProperties;\r\n};\r\n\r\nexport function MergeWithStyleOrFunction<TStyleProps extends {}, TStyleSet extends IStyleSet<TStyleSet>>(\r\n\tbaseStyle: IComponentStyles<any>,\r\n\tstyleOrFunction: IStyleFunctionOrObject<TStyleProps, TStyleSet>\r\n) {\r\n\tlet classNames = classNamesFunction({ disableCaching: false });\r\n\tlet result = classNames(styleOrFunction);\r\n\r\n\tresult.subComponentStyles;\r\n}\r\n\r\nexport const VerticalSubListStyles: Partial<IStackProps> = {\r\n\tstyles: { root: { width: 300 } },\r\n\ttokens: {\r\n\t\tchildrenGap: 10,\r\n\t},\r\n};\r\n\r\nexport const VerticalSubListTightStyles: Partial<IStackProps> = {\r\n\tstyles: { root: { width: 300 } },\r\n\ttokens: {\r\n\t\tchildrenGap: 0,\r\n\t},\r\n};\r\n\r\nexport const VerticalSectionStyles: Partial<IStackProps> = {\r\n\ttokens: {\r\n\t\tchildrenGap: 10,\r\n\t},\r\n\tstyles: {\r\n\t\troot: {\r\n\t\t\twidth: 800,\r\n\t\t\tmarginLeft: 20,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nexport const SaveButtonStyles: IComponentStyles<IButtonStyles> = {\r\n\troot: [\r\n\t\t{\r\n\t\t\tmaxWidth: 200,\r\n\t\t\twidth: '100%',\r\n\t\t\theight: '100%',\r\n\t\t},\r\n\t],\r\n};\r\n\r\nexport const VerticalSpacing: IComponentStyles<IStackProps> = {\r\n\troot: [\r\n\t\t{\r\n\t\t\tpadding: '4px',\r\n\t\t\tmargin: '4px',\r\n\t\t\tmarginTop: 10,\r\n\t\t},\r\n\t],\r\n};\r\n\r\nexport const HeaderTextStyles = (): IComponentStyles<IStackProps> => {\r\n\tconst theme = getTheme();\r\n\treturn {\r\n\t\troot: [\r\n\t\t\t{\r\n\t\t\t\tcolor: theme.palette.themePrimary,\r\n\t\t\t\tfontSize: FontSizes.size20,\r\n\t\t\t},\r\n\t\t],\r\n\t};\r\n};\r\n\r\nexport const BlueTextStyles = (): IComponentStyles<IStackProps> => {\r\n\tconst theme = getTheme();\r\n\treturn {\r\n\t\troot: [\r\n\t\t\t{\r\n\t\t\t\tcolor: theme.palette.themePrimary,\r\n\t\t\t},\r\n\t\t],\r\n\t};\r\n};\r\n\r\nexport const BoldBlueTextStyles = (): IComponentStyles<IStackProps> => {\r\n\tconst theme = getTheme();\r\n\treturn {\r\n\t\troot: [\r\n\t\t\t{\r\n\t\t\t\tcolor: theme.palette.themePrimary,\r\n\t\t\t\tfontWeight: 'bold',\r\n\t\t\t},\r\n\t\t],\r\n\t};\r\n};\r\n\r\nexport const PanelHeaderTextStyles = (): IComponentStyles<IStackProps> => {\r\n\tconst theme = getTheme();\r\n\treturn {\r\n\t\troot: [\r\n\t\t\t{\r\n\t\t\t\tcolor: theme.semanticColors.bodyText,\r\n\t\t\t\tfontSize: FontSizes.size20,\r\n\t\t\t},\r\n\t\t],\r\n\t};\r\n};\r\n\r\nexport const HorizontalListStyles: Partial<IStackProps> = {\r\n\ttokens: {\r\n\t\tchildrenGap: 30,\r\n\t},\r\n};\r\n\r\n// Individual component specific styles\r\nexport const _PMTextFieldBaseStyles = (): IComponentStyles<ITextFieldStyles> => {\r\n\tconst theme = getTheme();\r\n\r\n\treturn {\r\n\t\troot: [\r\n\t\t\t{\r\n\t\t\t\tcolor: theme.palette.neutralSecondary,\r\n\t\t\t},\r\n\t\t],\r\n\t\tfield: [\r\n\t\t\t{\r\n\t\t\t\tlineHeight: \"normal\",\r\n\t\t\t}\r\n\t\t]\r\n\t};\r\n};\r\nexport const _PMButtonBaseStyles: IComponentStyles<IButtonStyles> = {\r\n\troot: [\r\n\t\t{\r\n\t\t\tmaxWidth: 300,\r\n\t\t\tmargin: 2,\r\n\t\t\tpadding: '3 10 3 10',\r\n\t\t},\r\n\t],\r\n};\r\n\r\nexport const _PMPageBottomPaddingBaseStyles: React.CSSProperties = {\r\n\tpaddingBottom: '30px',\r\n};\r\n\r\nexport const _PMMailButtonBaseStyles = (): IComponentStyles<IButtonStyles> => {\r\n\tconst theme = getTheme();\r\n\treturn {\r\n\t\troot: [\r\n\t\t\t{\r\n\t\t\t\tmaxWidth: 200,\r\n\t\t\t\twidth: '100%',\r\n\t\t\t\theight: '100%',\r\n\t\t\t\tmargin: 2,\r\n\t\t\t\tbackgroundColor: theme.palette.neutralLighter,\r\n\t\t\t\tborder: 0,\r\n\t\t\t},\r\n\t\t],\r\n\t};\r\n};\r\n\r\nexport const _PMCheckboxBaseStyles = (): IComponentStyles<ICheckboxStyles> => {\r\n\tconst theme = getTheme();\r\n\treturn {\r\n\t\troot: [\r\n\t\t\t{\r\n\t\t\t\tmargin: '4px 4px 4px 4px',\r\n\t\t\t\tpadding: '4px 4px 4px 4px',\r\n\t\t\t\tuserSelect: 'none',\r\n\t\t\t\tcolor: theme.palette.neutralPrimary,\r\n\t\t\t},\r\n\t\t],\r\n\t};\r\n};\r\n\r\nexport const _PMCompactCheckboxBaseStyles: IComponentStyles<ICheckboxStyles> = {\r\n\troot: [\r\n\t\t{\r\n\t\t\tmargin: '0px 4px 0px 4px',\r\n\t\t\tpadding: '0px 4px 0px 4px',\r\n\t\t},\r\n\t],\r\n};\r\n\r\nexport const _PMSemiCompactCheckboxBaseStyle: IComponentStyles<ICheckboxStyles> = {\r\n\troot: [\r\n\t\t{\r\n\t\t\tmargin: '10px 4px 0px 4px',\r\n\t\t\tpadding: '0px 4px 0px 4px',\r\n\t\t},\r\n\t],\r\n};\r\n\r\nexport const _PMBalanceCompactCheckboxBaseStyle: IComponentStyles<ICheckboxStyles> = {\r\n\troot: [\r\n\t\t{\r\n\t\t\tmargin: '5px 4px 5px 4px',\r\n\t\t\tpadding: '0px 4px 0px 4px',\r\n\t\t},\r\n\t],\r\n};\r\n\r\nexport const _PMCalloutBaseStyles: IComponentStyles<ICalloutContentStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMChoiceGroupBaseStyles: IComponentStyles<IChoiceGroupStyles> = {\r\n\troot: [{\r\n\t\tmargin: '4px',\r\n\t\tpadding: '4px',\r\n\t}],\r\n};\r\nexport const _PMComboBoxBaseStyels: IComponentStyles<IComboBoxStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMDialogBaseStyles: IComponentStyles<IDialogStyles> = {\r\n\troot: [\r\n\t\t{\r\n\t\t\tmargin: '4px',\r\n\t\t\tpadding: '4px',\r\n\t\t\twhiteSpace: 'pre-line'\r\n\t\t},\r\n\t],\r\n};\r\nexport const _PMDropDownBaseStyles = (): IComponentStyles<IDropdownStyles> => {\r\n\tconst theme = getTheme();\r\n\treturn {\r\n\t\troot: [\r\n\t\t\t{\r\n\t\t\t\tmargin: '4px 4px 4px 4px',\r\n\t\t\t\tpadding: '4px 4px 4px 4px',\r\n\t\t\t\tuserSelect: 'none',\r\n\t\t\t},\r\n\t\t],\r\n\t\tcallout: [\r\n\t\t\t{\r\n\t\t\t\tmaxHeight: '0',\r\n\t\t\t\toverflowY: 'auto'\r\n\t\t\t}\r\n\t\t]\r\n\t};\r\n};\r\nexport const _PMFilePickerBaseStyles: IComponentStyles<ITextFieldStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMFileSelectorBaseStyles: IComponentStyles<ITextFieldStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMFormGridBaseStyles: IComponentStyles<IButtonGridStyles> = {\r\n\troot: [\r\n\t\t{\r\n\t\t\tmargin: '0px 0px 0px 0px',\r\n\t\t\tpadding: '0px 0px 0px 0px',\r\n\t\t},\r\n\t],\r\n};\r\nexport const _PMFormGridRowBaseStyles: IComponentStyles<IButtonGridStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMFormGridColumnBaseStyles: IComponentStyles<IButtonGridStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMIFrameBaseStyles: IComponentStyles<IDialogStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMImagePickerBaseStyles: IComponentStyles<IImageStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMLabelBaseStyles = (): IComponentStyles<ILabelStyles> => {\r\n\tconst theme = getTheme();\r\n\treturn {\r\n\t\troot: [\r\n\t\t\t{\r\n\t\t\t\tfontSize: FontSizes.size14,\r\n\t\t\t\tfontWeight: 'normal',\r\n\t\t\t\tcolor: theme.palette.neutralSecondary,\r\n\t\t\t},\r\n\t\t],\r\n\t};\r\n};\r\nexport const _PMCheckboxLabelBaseStyles = (): IComponentStyles<ILabelStyles> => {\r\n\tconst theme = getTheme();\r\n\treturn {\r\n\t\troot: [\r\n\t\t\t{\r\n\t\t\t\tcolor: theme.palette.neutralPrimary,\r\n\t\t\t},\r\n\t\t],\r\n\t};\r\n};\r\nexport const _PMLabelDescription = (): IComponentStyles<ILabelStyles> => {\r\n\tconst theme = getTheme();\r\n\treturn {\r\n\t\troot: [\r\n\t\t\t{\r\n\t\t\t\tcolor: theme.palette.neutralSecondary,\r\n\t\t\t},\r\n\t\t],\r\n\t};\r\n};\r\n\r\nexport const _PMCompactLabelDescription = (): IComponentStyles<ILabelStyles> => {\r\n\tconst theme = getTheme();\r\n\treturn {\r\n\t\troot: [\r\n\t\t\t{\r\n\t\t\t\tcolor: theme.palette.neutralSecondary,\r\n\t\t\t},\r\n\t\t],\r\n\t};\r\n};\r\nexport const _PMCompactLabelBaseStyles: IComponentStyles<ILabelStyles> = {\r\n\troot: [\r\n\t\t{\r\n\t\t\tfontSize: FontSizes.size14,\r\n\t\t\tfontWeight: 'normal',\r\n\t\t\tmargin: '0px 4px 0px 4px',\r\n\t\t},\r\n\t],\r\n};\r\nexport const _PMLabelBoldBaseStyles: IComponentStyles<ILabelStyles> = {\r\n\troot: [\r\n\t\t{\r\n\t\t\tfontSize: FontSizes.size14,\r\n\t\t\tfontWeight: '600',\r\n\t\t},\r\n\t],\r\n};\r\n\r\nexport const _PMLabelInlineBaseStyle = (): React.CSSProperties => {\r\n\tconst theme = getTheme();\r\n\treturn {\r\n\t\tpaddingTop: '8px',\r\n\t\tverticalAlign: 'middle',\r\n\t\tmargin: '0',\r\n\t\tcolor: theme.palette.neutralSecondary,\r\n\t};\r\n};\r\n\r\nexport const _PMLinkBaseStyles: IComponentStyles<ILinkStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMListBaseStyles: IComponentStyles<IDetailsListStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMMaskedTextFieldBaseStyles: IComponentStyles<ITextFieldStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMShimmeredDetailsListBaseStyles: IComponentStyles<IShimmeredDetailsListStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMSpinButtonBaseStyles: IComponentStyles<ISpinButtonStyles> = {\r\n\troot: [\r\n\t\t{\r\n\t\t\twidth: 'auto',\r\n\t\t},\r\n\t],\r\n};\r\nexport const _PMDatePickerStyles: IComponentStyles<IDatePickerStyles> = {\r\n\troot: [\r\n\t\t{\r\n\t\t\twidth: 'auto',\r\n\t\t},\r\n\t],\r\n};\r\nexport const _PMTagAndLabelPickerBaseStyles: IComponentStyles<ITagItemStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMTagPickerBaseStyles: IComponentStyles<ITagItemStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMThumbnailBaseStyles: IComponentStyles<IImageStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMToggleBaseStyles: IComponentStyles<IToggleStyles> = {\r\n\troot: [{}],\r\n};\r\nexport const _PMCommandBarBaseStyle = {\r\n\troot: [{}],\r\n} as ICommandBarStyles;\r\n\r\nexport const _PMBreadCrumbBannerStyles: React.CSSProperties = {\r\n\tdisplay: 'flex',\r\n\tflexDirection: 'row',\r\n\tpadding: '8px',\r\n};\r\n\r\n//Merger of PoliteMail Base Styles and the component specific styles\r\nexport const PMCheckboxBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMCheckboxBaseStyles);\r\nexport const PMBalanceCompactCheckboxBaseStyles: IComponentStyles<any> = MergeStyles(\r\n\tPMCompactBaseStyle,\r\n\t_PMBalanceCompactCheckboxBaseStyle\r\n);\r\nexport const PMCompactCheckboxBaseStyles: IComponentStyles<any> = MergeStyles(\r\n\tPMCompactBaseStyle,\r\n\t_PMCompactCheckboxBaseStyles\r\n);\r\nexport const PMSemiCompactCheckboxBaseStyle: IComponentStyles<any> = MergeStyles(\r\n\tPMCompactBaseStyle,\r\n\t_PMSemiCompactCheckboxBaseStyle\r\n);\r\nexport const PMButtonBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMButtonBaseStyles);\r\nexport const PMMailButtonBaseStyles = (): IComponentStyles<any> => MergeStyles(PMBaseStyle, _PMMailButtonBaseStyles);\r\nexport const PMTextFieldBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMTextFieldBaseStyles);\r\nexport const PMCalloutBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMCalloutBaseStyles);\r\nexport const PMChoiceGroupBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMChoiceGroupBaseStyles);\r\nexport const PMComboBoxBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMComboBoxBaseStyels);\r\nexport const PMDialogBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMDialogBaseStyles);\r\nexport const PMDropDownBaseStyles: IComponentStyles<any> = _PMDropDownBaseStyles();\r\nexport const PMFilePickerBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMFilePickerBaseStyles);\r\nexport const PMFileSelectorBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMFileSelectorBaseStyles);\r\nexport const PMFormGridBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMFormGridBaseStyles);\r\nexport const PMFormGridRowBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMFormGridRowBaseStyles);\r\nexport const PMFormGridColumnBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMFormGridColumnBaseStyles);\r\nexport const PMIFrameBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMIFrameBaseStyles);\r\nexport const PMImagePickerBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMImagePickerBaseStyles);\r\nexport const PMLabelBaseStyles = (): IComponentStyles<any> => MergeStyles(PMBaseStyle, _PMLabelBaseStyles);\r\nexport const PMLabelDescription = (): IComponentStyles<any> => MergeStyles(PMLabelBaseStyles, _PMLabelDescription);\r\nexport const PMCheckboxLabelDescription = (): IComponentStyles<any> =>\r\n\tMergeStyles(PMLabelBaseStyles, _PMCheckboxBaseStyles);\r\nexport const PMCompactLabelBaseStyles: IComponentStyles<any> = MergeStyles(\r\n\tPMCompactBaseStyle,\r\n\t_PMCompactLabelBaseStyles\r\n);\r\nexport const PMCompactLabelDescription = (): IComponentStyles<any> =>\r\n\tMergeStyles(PMCompactLabelBaseStyles, _PMCompactLabelDescription);\r\nexport const PMLabelBoldBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMLabelBoldBaseStyles);\r\nexport const PMLinkBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMLinkBaseStyles);\r\nexport const PMListBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMListBaseStyles);\r\nexport const PMMaskedTextFieldBaseStyles: IComponentStyles<any> = MergeStyles(\r\n\tPMBaseStyle,\r\n\t_PMMaskedTextFieldBaseStyles\r\n);\r\nexport const PMShimmeredDetailsListBaseStyles: IComponentStyles<any> = MergeStyles(\r\n\tPMBaseStyle,\r\n\t_PMShimmeredDetailsListBaseStyles\r\n);\r\nexport const PMSpinButtonBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMSpinButtonBaseStyles);\r\nexport const PMTagAndLabelPickerBaseStyles: IComponentStyles<any> = MergeStyles(\r\n\tPMBaseStyle,\r\n\t_PMTagAndLabelPickerBaseStyles\r\n);\r\nexport const PMTagPickerBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMTagPickerBaseStyles);\r\nexport const PMThumbnailBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMThumbnailBaseStyles);\r\nexport const PMToggleBaseStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMToggleBaseStyles);\r\nexport const PMCommandBarStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMCommandBarBaseStyle);\r\nexport const PMDatePickerStyles: IComponentStyles<any> = MergeStyles(PMBaseStyle, _PMDatePickerStyles);\r\n","import { IDropdownOption } from \"@fluentui/react\";\r\nimport * as React from \"react\";\r\nimport { businessesApiHooks } from \"store/features/businessesApiSlice\";\r\nimport { regionsApiHooks } from \"store/features/regionsApiSlice\";\r\n\r\nexport function useGetBusinessAndRegionDropdowns(): {\r\n dropDownBusinesses: IDropdownOption<any>[];\r\n dropDownRegions: IDropdownOption<any>[];\r\n} {\r\n const { data: regions } = regionsApiHooks.useGetRegionsQuery();\r\n const dropDownRegions = React.useMemo(() => {\r\n if (!regions || regions.length === 0) return [];\r\n const sortedRegions = [...regions].sort((a, b) => a.Name.localeCompare(b.Name));\r\n return sortedRegions.map((region) => {\r\n return {\r\n key: region.ID,\r\n text: region.Name,\r\n } as IDropdownOption;\r\n });\r\n }, [regions]);\r\n\r\n const { data: businesses } = businessesApiHooks.useGetBusinessesQuery();\r\n const dropDownBusinesses = React.useMemo(() => {\r\n if (!businesses || businesses.length === 0) return [];\r\n const sortedBusinesses = [...businesses].sort((a, b) => a.Name.localeCompare(b.Name));\r\n return sortedBusinesses.map((business) => {\r\n return {\r\n key: business.ID,\r\n text: business.Name,\r\n } as IDropdownOption;\r\n });\r\n }, [businesses]);\r\n\r\n const data = React.useMemo(() => {\r\n return {\r\n dropDownBusinesses,\r\n dropDownRegions,\r\n };\r\n }, [dropDownBusinesses, dropDownRegions]);\r\n\r\n return data;\r\n}\r\n","import { createTheme } from \"@fluentui/react\";\r\nimport { TemplateThemePreview } from \"Definitions/Generated/PoliteMailEntities/Models/TemplateThemePreview\";\r\nimport { TemplateTheme } from \"../../Definitions/Generated/PoliteMailEntities/Models/TemplateTheme\";\r\n\r\nexport const darkTheme = createTheme({\r\n palette: {\r\n themePrimary: \"#7dcbff\" /* Primary color */,\r\n themeLighterAlt: \"#05080a\",\r\n themeLighter: \"#142029\",\r\n themeLight: \"#253d4d\",\r\n themeTertiary: \"#4b7a99\",\r\n themeSecondary: \"#6eb3e0\",\r\n themeDarkAlt: \"#8ad0ff\",\r\n themeDark: \"#9cd7ff\",\r\n themeDarker: \"#b6e2ff\",\r\n neutralLighterAlt: \"#282828\",\r\n neutralLighter: \"#313131\",\r\n neutralLight: \"#3f3f3f\",\r\n neutralQuaternaryAlt: \"#red\",\r\n neutralQuaternary: \"#4f4f4f\",\r\n neutralTertiaryAlt: \"#6d6d6d\",\r\n neutralTertiary: \"#f0f0f0\",\r\n neutralSecondary: \"#919191\",\r\n neutralPrimaryAlt: \"#f5f5f5\",\r\n neutralPrimary: \"#e8e8e8\" /* Text color */,\r\n neutralDark: \"#fafafa\",\r\n black: \"#fcfcfc\",\r\n white: \"#1e1e1e\" /* Background color */,\r\n },\r\n});\r\nexport const lightTheme = createTheme({\r\n palette: {\r\n themePrimary: \"#2c699e\",\r\n themeLighterAlt: \"#f4f8fb\",\r\n themeLighter: \"#d4e3ef\",\r\n themeLight: \"#b1cbe2\",\r\n themeTertiary: \"#709dc5\",\r\n themeSecondary: \"#3e78aa\",\r\n themeDarkAlt: \"#285e8e\",\r\n themeDark: \"#225078\",\r\n themeDarker: \"#193b59\",\r\n neutralLighterAlt: \"#faf9f8\",\r\n neutralLighter: \"#f3f2f1\",\r\n neutralLight: \"#edebe9\",\r\n neutralQuaternaryAlt: \"#e1dfdd\",\r\n neutralQuaternary: \"#d0d0d0\",\r\n neutralTertiaryAlt: \"#c8c6c4\",\r\n neutralTertiary: \"#a19f9d\",\r\n neutralSecondary: \"#605e5c\",\r\n neutralPrimaryAlt: \"#3b3a39\",\r\n neutralPrimary: \"#323130\",\r\n neutralDark: \"#201f1e\",\r\n black: \"#000000\",\r\n white: \"#ffffff\",\r\n },\r\n semanticColors: {\r\n inputBorder: \"#323130\",\r\n buttonBorder: \"#323130\",\r\n smallInputBorder: \"#323130\",\r\n },\r\n});\r\n\r\nexport const defaultBrandTheme: TemplateThemePreview = {\r\n Background: -1,\r\n BodyBackground: -1,\r\n BodyColor: -12237499,\r\n BodyFont: \"Segoe UI\",\r\n BodyFontSize: 13,\r\n BodyFontStyle: 0,\r\n BusinessID: 0,\r\n BusinessName: \"Unassigned\",\r\n ButtonBackground: -16747834,\r\n ButtonColor: -854794,\r\n ButtonFont: \"Segoe UI\",\r\n ButtonFontSize: 13,\r\n ButtonFontStyle: 0,\r\n Centering: true,\r\n ColumnBackground: -1643793,\r\n ColumnColor: -14796453,\r\n ColumnFont: \"Segoe UI\",\r\n ColumnFontSize: 13,\r\n ColumnFontStyle: 0,\r\n CreationDate: new Date(\"2021-10-07T12:37:03.76Z\"),\r\n FooterBackground: -657672,\r\n FooterColor: -13421773,\r\n FooterFont: \"Segoe UI\",\r\n FooterFontSize: 11,\r\n FooterFontStyle: 0,\r\n LinkUnclickedColor: 0,\r\n LinkVisitedColor: 0,\r\n LinkActiveColor: 0,\r\n HeaderBackground: -16747834,\r\n HeaderColor: -1,\r\n HeaderFont: \"Segoe UI Light\",\r\n HeaderFontSize: 30,\r\n HeaderFontStyle: 0,\r\n ID: -1,\r\n IsDefault: false,\r\n Name: \"\",\r\n OwnerID: 1,\r\n RegionID: 0,\r\n RegionName: \"Unassigned\",\r\n Shared: true,\r\n SubheaderBackground: -16757829,\r\n SubheaderColor: -1,\r\n SubheaderFont: \"Segoe UI\",\r\n SubheaderFontSize: 16,\r\n SubheaderFontStyle: 0,\r\n ThemeColors: [],\r\n SocialStyleID: 1,\r\n SocialStyleName: \"Round\",\r\n SocialStyleHtml: `<table id=\"ctaButton\">\r\n <tr>\r\n <td style=\"width: 32px; text-align: left; padding-right: 12px\">\r\n <a href=\"https://www.facebook.com/politemailsoftware/\"><img src=\"https://{url_part_replace_me}/Social-Circle-FaceBook-Gray-18pxh.png\" width=\"18\" height=\"18\" alt=\"facebookicon\" /></a>\r\n </td>\r\n <td style=\"width: 32px; text-align: left; padding-right: 12px\">\r\n <a href=\"https://twitter.com/PoliteMail\"> <img src=\"https://{url_part_replace_me}/Social-Circle-Twitter-Gray-18pxh.png\" width=\"18\" height=\"18\" alt=\"twittericon\" /></a>\r\n </td>\r\n <td style=\"width: 32px; text-align: left; padding-right: 12px\">\r\n <a href=\"https://www.instagram.com/politemailsoftware/\"> <img src=\"https://{url_part_replace_me}/Social-Circle-Instagram-Gray-18pxh.png\" width=\"18\" height=\"18\" alt=\"instagramicon\" /></a>\r\n </td>\r\n <td style=\"width: 32px; text-align: left; padding-right: 12px\">\r\n <a href=\"https://www.youtube.com/channel/UCxFpRiJvrpru9Xj_C1PTOEQ\"> <img src=\"https://{url_part_replace_me}/Social-Circle-YouTube-Gray-18pxh.png\" width=\"18\" height=\"18\" alt=\"youtubeicon\" /></a>\r\n </td>\r\n <td style=\"width: 32px; text-align: left; padding-right: 12px\">\r\n <a href=\"https://www.linkedin.com/company/4865833/\"> <img src=\"https://{url_part_replace_me}/Social-Circle-LinkedIn-Gray-18pxh.png\" width=\"18\" height=\"18\" alt=\"linkedInicon\" /></a>\r\n </td>\r\n </tr>\r\n </table>`,\r\n TitleTextColor: 0,\r\n TitleTextFont: \"Segoe UI\",\r\n TitleTextFontSize: 30,\r\n TitleTextFontStyle: 0,\r\n SubtitleTextColor: 0,\r\n SubtitleTextFont: \"Segoe UI\",\r\n SubtitleTextFontSize: 13,\r\n SubtitleTextFontStyle: 0,\r\n ParagraphTextColor: 0,\r\n ParagraphTextFont: \"Segoe UI\",\r\n ParagraphTextFontSize: 13,\r\n ParagraphTextFontStyle: 0,\r\n FooterTextColor: 0,\r\n FooterTextFont: \"Segoe UI\",\r\n FooterTextFontSize: 11,\r\n FooterTextFontStyle: 0\r\n};\r\n","import * as React from \"react\";\r\nimport { ColumnDataType } from \"../Definitions/GridColumnDefinitions\";\r\nimport { GetPMIcon, PMIconTypes } from \"./PMIconMap\";\r\nimport { TestSendIcon } from 'components/Images/TestSendIcon';\r\nimport { FilteredListIcon } from \"@politemail/ui-components\";\r\n\r\nexport function GetParsedBool(inputVal: any) {\r\n let inputType = typeof (inputVal);\r\n inputVal = inputVal?.toLowerCase();\r\n\r\n if (inputType === \"string\") {\r\n switch (inputVal) {\r\n case \"1\":\r\n case \"true\":\r\n return true;\r\n case \"0\":\r\n case \"false\":\r\n return false;\r\n default:\r\n return null;\r\n }\r\n }\r\n else if (inputType === \"number\") {\r\n return !!inputVal;\r\n }\r\n else if (inputType === \"boolean\") {\r\n return inputVal;\r\n }\r\n return null;\r\n}\r\n\r\nexport function GetGridColForParsedBool(inputVal: any, colDataType: ColumnDataType) {\r\n let parsedVal = GetParsedBool(inputVal);\r\n if (parsedVal !== undefined && parsedVal !== null) {\r\n switch (colDataType) {\r\n case ColumnDataType.Boolean:\r\n return parsedVal ?\r\n GetPMIcon(PMIconTypes.Check, { width: \"16px\", height: \"16px\" }) :\r\n GetPMIcon(PMIconTypes.X, { width: \"16px\", height: \"16px\" });\r\n case ColumnDataType.Shared:\r\n return parsedVal ? \r\n <span title=\"Shared\">\r\n {GetPMIcon(PMIconTypes.Shared, { width: \"16px\", height: \"16px\" })}\r\n </span> \r\n : \r\n <span title=\"Private\">\r\n <React.Fragment/>\r\n </span>\r\n case ColumnDataType.Privacy:\r\n return parsedVal ?\r\n GetPMIcon(PMIconTypes.Check, { width: \"16px\", height: \"16px\" }) :\r\n GetPMIcon(PMIconTypes.X, { width: \"16px\", height: \"16px\" })\r\n case ColumnDataType.Revoked:\r\n return parsedVal ? //Column name is 'active', if revoked === true display the x\r\n GetPMIcon(PMIconTypes.X, { width: \"16px\", height: \"16px\" }) :\r\n GetPMIcon(PMIconTypes.Check, { width: \"16px\", height: \"16px\" });\r\n case ColumnDataType.IsNewsLetter:\r\n return parsedVal ? //Column name is 'active', if revoked === true display the x\r\n GetPMIcon(PMIconTypes.Check, { width: \"16px\", height: \"16px\" }):\r\n <React.Fragment/>\r\n case ColumnDataType.SentVia:\r\n return parsedVal ?\r\n <span>Outbox</span> :\r\n <span>Server</span>\r\n case ColumnDataType.PreFlight:\r\n return parsedVal ?\r\n <span title=\"PreFlight\">\r\n <TestSendIcon width={\"16\"} height={\"16\"} style={{ margin: \"0 4px 0 4px\" }} />\r\n </span>\r\n :\r\n <React.Fragment />;\r\n }\r\n }\r\n return \"\";\r\n}","import { AppSettingsODataService } from \"Definitions/Generated/PoliteMailAPI\";\r\nimport { OutlookListener } from \"./OutlookUtils\";\r\n\r\nconst NONCE_SEPARATOR: string = \"-::-\";\r\nlet serverStoredNonce: string = null;\r\n\r\n\r\nexport {};\r\ndeclare global {\r\n interface Window {\r\n chrome: any;\r\n }\r\n}\r\n\r\nexport default async function PostWebViewMsg(msg: string) {\r\n await window.chrome.webview.postMessage(msg);\r\n}\r\n\r\nexport const GetHostDispatch = async () => {\r\n try {\r\n const dispatcher = await window.chrome.webview.hostObjects.HostDispatch;\r\n return dispatcher;\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n};\r\n\r\nfunction verifiyNonceFromClient(message: string) : boolean { \r\n const nonceFromClient: string = doesMessageContainNonce(message) ? message.split(NONCE_SEPARATOR)[0] : null;\r\n return doesClientNonceMatchServerNonce(nonceFromClient);\r\n}\r\n\r\n\r\nfunction doesClientNonceMatchServerNonce(clientNonce: string): boolean {\r\n if(!clientNonce)\r\n return;\r\n\r\n if(!serverStoredNonce) \r\n serverStoredNonce = clientNonce;\r\n\r\n return serverStoredNonce === clientNonce\r\n}\r\n\r\nfunction doesMessageContainNonce(message: string) : boolean {\r\n return message.includes(NONCE_SEPARATOR);\r\n}\r\n\r\nfunction cleanseInputMessage(input: string) : string {\r\n return doesMessageContainNonce(input) ? input.split(NONCE_SEPARATOR)[1] : input;\r\n}\r\n\r\nexport const InitChromie = async () => {\r\n\r\n const appSettingService = new AppSettingsODataService();\r\n const enforceOriginValidation = (String((await appSettingService.GetAppSetting('EnforceOriginValidation'))?.Value)?.toLowerCase() === \"true\");\r\n\r\n if (window.chrome?.webview) {\r\n window.chrome.webview.addEventListener('message', (ev: MessageEvent) => { \r\n if (ev?.data) {\r\n if(typeof ev.data != \"string\")\r\n return;\r\n let eventData: string = ev.data;\r\n if(enforceOriginValidation) {\r\n const proceedWithExecution: boolean = verifiyNonceFromClient(eventData);\r\n if(!proceedWithExecution)\r\n return;\r\n }\r\n eventData = cleanseInputMessage(eventData)\r\n OutlookListener(eventData)\r\n }\r\n })\r\n }\r\n}\r\n","import { IDropdownOption } from \"@fluentui/react\";\r\n\r\nexport const MapToIDropDownProps = (map: Map<number | string, string>): IDropdownOption[] => {\r\n const ddOptions: IDropdownOption[] = [];\r\n map.forEach((item, key) => {\r\n ddOptions.push({\r\n key: key.toString(),\r\n text: item\r\n });\r\n })\r\n return ddOptions;\r\n}","import { IPMColumn, ColumnDataType } from \"../Definitions/GridColumnDefinitions\";\r\nimport * as Excel from 'exceljs'\r\nimport { ReportExport } from \"../Definitions/Generated/PoliteMailEntities/Models/ReportExport\";\r\nimport * as QRCode from 'qrcode';\r\nimport { DISPLAY_NAME_FOR_PROPERTY } from \"components/Utility/PropertNameMapper\";\r\nimport moment from \"moment\";\r\n\r\nexport const MAX_OFFICE_FILENAME_LENGTH: number = 200;\r\nexport const EXCEL_CELL_MAX_LENGTH: number = 32767;\r\ninterface CSVRow {\r\n fieldName: string;\r\n [key: string]: string;\r\n}\r\nexport const DownloadFile = (response: any): void => {\r\n var contentTypeStr = response.headers[\"content-type\"];\r\n var tokens = contentTypeStr.split('/');\r\n var subtype = tokens[1].split(';')[0];\r\n var contentType = {\r\n type: tokens[0],\r\n subtype: subtype\r\n };\r\n\r\n var contentDispStr = response.headers[\"content-disposition\"];\r\n var proposedFileName = contentDispStr ? contentDispStr.split('filename=')[1] : 'data.' + contentType.subtype;\r\n\r\n var blob = new Blob([response.data], { type: contentTypeStr });\r\n\r\n if (typeof window.navigator.msSaveBlob !== 'undefined') {\r\n window.navigator.msSaveBlob(blob, proposedFileName);\r\n } else {\r\n Download(URL.createObjectURL(blob), proposedFileName)\r\n }\r\n}\r\n\r\nexport function prop<T, K extends keyof T>(obj: T, key: K) {\r\n return key === \"description\" ? DISPLAY_NAME_FOR_PROPERTY[obj[key] as any] ?? obj[key] : obj[key];\r\n}\r\n\r\nexport function JSONToCsv<T>(data: any) {\r\n let rows = Object.values(data);\r\n let csv = \"\";\r\n let keys = (rows[0] && Object.keys(rows[0])) || [];\r\n csv += keys.join(',') + '\\n';\r\n for (let row of rows) {\r\n csv += keys.map(k => (row as any)[k]).join(',') + '\\n';\r\n }\r\n}\r\n\r\nexport function ExportToCsv<T>(filename: string, rows: T[], columnDefinitions: IPMColumn[]) {\r\n\r\n if (!rows || !rows.length)\r\n return;\r\n const colsToExport = columnDefinitions.filter(col => col.dataType != ColumnDataType.Thumbnail);\r\n const cols = colsToExport.map(c => c.name);\r\n\r\n const colKeys = colsToExport.map(c => c.fieldName);\r\n const separator = ',';\r\n const csvContent = cols.join(separator) +\r\n '\\n' +\r\n rows.map(row => {\r\n return colKeys.map(k => {\r\n let cell = prop(row, k as keyof T) === null || prop(row, k as keyof T) === undefined ? '' : prop(row, k as keyof T);\r\n cell = cell instanceof Date ? cell.toLocaleDateString() : cell.toString().replace(/\"/g, '\"\"');\r\n if (cell.search(/(\"|,|\\n)/g) >= 0) {\r\n cell = '\"${cell}\"';\r\n }\r\n return cell;\r\n }).join(separator)\r\n }).join('\\n');\r\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, filename);\r\n }\r\n else {\r\n Download(URL.createObjectURL(blob), filename);\r\n }\r\n}\r\n\r\nexport function ExportToWord(html: string, fileName: string, orientation: 'landscape' | 'portrait' = 'portrait') {\r\n const orientationStyle = orientation === 'landscape'\r\n ? `<head><meta charset='utf-8'><style>\r\n @page landscape_A4_page {\r\n size:841.9pt 595.3pt;\r\n margin:72.0pt 72.0pt 72.0pt 72.0pt;\r\n mso-header-margin:35.4pt;\r\n mso-footer-margin:35.4pt;\r\n mso-paper-source:0;\r\n mso-wrap-style:top-and-bottom;\r\n }\r\n div.landscape_A4_page { page:landscape_A4_page; }\r\n img {\r\n mso-wrap-style:top-and-bottom;\r\n mso-scale-to-fit: false;\r\n }\r\n </style>\r\n </head>\r\n <div class=\"landscape_A4_page\" style=\"background: white\">\r\n `\r\n : `<head><meta charset='utf-8'><style>\r\n @page portrait_A4_page {\r\n size:595.3pt 841.9pt;\r\n margin:72.0pt 72.0pt 72.0pt 72.0pt;\r\n mso-header-margin:35.4pt;\r\n mso-footer-margin:35.4pt;\r\n mso-paper-source:0;\r\n mso-wrap-style:top-bottom;\r\n }\r\n div.portrait_A4_page { page:portrait_A4_page; }\r\n </style>\r\n </head>\r\n <div class=\"portrait_A4_page\" style=\"background: white\">`\r\n const header = \"<html xmlns:o='urn:schemas-microsoft-com:office:office' \"\r\n + \"xmlns:w='urn:schemas-microsoft-com:office:word' \"\r\n + \"xmlns='http://www.w3.org/TR/REC-html40'>\"\r\n + orientationStyle;\r\n\r\n const footer = \"</div></html>\";\r\n let sourceHTML = header + html + footer;\r\n let blob = new Blob(['\\ufeff', sourceHTML], {\r\n type: 'application/msword;charset=utf-8'\r\n });\r\n\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, fileName);\r\n }\r\n else {\r\n Download(URL.createObjectURL(blob), fileName);\r\n }\r\n}\r\n\r\n\r\nexport async function CreateCanvasFromWord(elements: Element[], nextLine = false, setPercentage?: React.Dispatch<React.SetStateAction<number>>, defaultSize = false) {\r\n let divElement = document.createElement(\"div\");\r\n window.scrollTo(0, document.body.scrollHeight || document.documentElement.scrollHeight);\r\n const html2image = await import('html-to-image');\r\n const cssEmbedStyles = await html2image.getFontEmbedCSS((elements[0] ?? '') as HTMLElement);\r\n var regex = new RegExp(/(box-shadow: rgba)([a-zA-Z0-9:\\.\\s\\(\\)\\-\\,]*)(;)/);\r\n for (let i = 0; i < elements.length; i++) {\r\n let el = elements[i] as HTMLElement;\r\n\r\n if (setPercentage)\r\n setPercentage((i * 100) / elements.length);\r\n\r\n const canvas = await html2image.toCanvas(el, {\r\n backgroundColor: 'white',\r\n fontEmbedCSS: cssEmbedStyles\r\n });\r\n const img = new Image();\r\n if (!defaultSize && el.scrollWidth > 634) {\r\n let ratio = 634 / el.scrollWidth;\r\n img.width = 634\r\n img.height = el.scrollHeight * ratio;\r\n }\r\n img.src = canvas.toDataURL();\r\n\r\n if (nextLine)\r\n img.style.cssText = 'display: table;'\r\n\r\n divElement.appendChild(img);\r\n }\r\n\r\n return divElement;\r\n}\r\n\r\nexport function ExportReportToCsv<T>(filename: string, rows: ReportExport[], excludedKeys: Array<string> = []) {\r\n const columnKeys = Object.keys(rows[0]).filter(key => !excludedKeys.includes(key));\r\n const rowValues: CSVRow[] = columnKeys.map(key => {\r\n const row = rows.map((row, index) => {\r\n if (typeof(row[key]) === \"string\" && moment.utc(row[key], moment.ISO_8601, true).isValid()){\r\n return { [index]: moment(row[key]).toDate().toLocaleDateString() };\r\n }\r\n if (key === \"SendViaOutbox\")\r\n return { [index]: row[key] ? \"Outbox\" : \"Server\" };\r\n\r\n return { [index]: row[key] };\r\n });\r\n\r\n return { fieldName: DISPLAY_NAME_FOR_PROPERTY[key] || key, ...Object.assign({}, ...row) };\r\n });\r\n\r\n const headersRow = [\"Description\", ...rows.map(row => {\r\n //Adding replace on headers for title(string) beginning with math symbols when .csv file viewed from Excel\r\n if (row.Subject[0].search(/(^[\\/*+=-])/g) >= 0){\r\n const replace = row.Subject[0].replace(row.Subject[0], `(${row.Subject})` + row.Subject.substring(1));\r\n return replace;\r\n }\r\n return row.Subject;\r\n })].join(',');\r\n\r\n const csvContent = rowValues.map(row => {\r\n const reportValues = Object.keys(row)\r\n .filter(key => key !== 'fieldName')\r\n .map(key => {\r\n const value = row[key];\r\n if (value === null || value === undefined) {\r\n return '';\r\n }\r\n return value.toString().replace(/,/g, '').replace(/\\n/g, '').replace(/\"/g, '');\r\n });\r\n return [row.fieldName, ...reportValues].join(',');\r\n }).join('\\n');\r\n\r\n const csv = headersRow + '\\n' + csvContent;\r\n\r\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, filename);\r\n }\r\n else {\r\n Download(URL.createObjectURL(blob), filename);\r\n }\r\n}\r\n\r\nexport function ExportToExcel<T>(filename: string, reportData: ReportExport | ReportExport [],\r\n keyDescriptions?: { Keys: Array<string>, Values: Array<string> }, excludedKeys: Array<string> = []) {\r\n\r\n const workbook = new Excel.Workbook();\r\n const sheet = workbook.addWorksheet(\"PoliteMail\");\r\n\r\n // map titles for excel descriptions (instead of using keys, we already have a readable descriptions)\r\n const findKeyByIndex = (key) => keyDescriptions?.Keys?.findIndex((data) => data === key);\r\n const findValueByKey = (key) => keyDescriptions?.Values[findKeyByIndex(key)];\r\n\r\n if (Array.isArray(reportData)) {\r\n const sheetColumns = [\r\n { key: \"fieldName\" },\r\n ];\r\n\r\n // add columns base on length of report data\r\n const columnKeys = {}\r\n reportData.map((data, index) => {\r\n sheetColumns.push({key: `value${index}`})\r\n columnKeys[`value${index}`];\r\n columnKeys[`value${index}`]= data.Subject;\r\n });\r\n sheet.columns = sheetColumns;\r\n\r\n sheet.addRow({fieldName: \"Description\", ...columnKeys});\r\n\r\n Object.entries(reportData[0]).forEach(([key, value]) => {\r\n if (!excludedKeys.includes(key)) {\r\n reportData.map((data, index) => {\r\n columnKeys[`value${index}`] = key === \"SendViaOutbox\" ? (data[key] ? \"Outbox\" : \"Server\") : data[key];\r\n });\r\n const row = { fieldName: DISPLAY_NAME_FOR_PROPERTY[key] ?? key, ...columnKeys}\r\n sheet.addRow(row).commit()\r\n }\r\n });\r\n }\r\n\r\n else {\r\n sheet.columns = [\r\n { key: \"fieldName\" },\r\n { key: \"value\"}\r\n ];\r\n\r\n Object.entries(reportData).forEach(([key, value]) => {\r\n if (!excludedKeys.includes(key)) {\r\n if (value?.length > EXCEL_CELL_MAX_LENGTH) {\r\n value = value.toString().substring(0, EXCEL_CELL_MAX_LENGTH - 3) + '...';\r\n }\r\n\r\n if (value !== undefined && !Number.isNaN(value) && value !== \"\")\r\n sheet.addRow({ fieldName: findValueByKey(key) ?? key, value }).commit();\r\n }\r\n });\r\n\r\n if (reportData.LinkStats && reportData.LinkStats.length > 0)\r\n CreateExcelSheet(reportData.LinkStats, workbook, \"Links\");\r\n }\r\n\r\n sheet.columns.forEach(function (column, i) {\r\n let maxLength = 0;\r\n sheet.getColumn(i)?.eachCell({ includeEmpty: true }, function (cell) {\r\n let columnLength = cell.value ? cell.value.toString().length : 10;\r\n\r\n if (column.key !== \"fieldName\") {\r\n cell.alignment = { horizontal: 'right' };\r\n }\r\n if (typeof(cell.value) === \"string\" && moment.utc(cell.value.toString(), moment.ISO_8601, true).isValid())\r\n cell.value = moment(cell.value.toString()).toDate().toLocaleDateString();\r\n\r\n if (columnLength > maxLength ) {\r\n maxLength = columnLength;\r\n }\r\n });\r\n column.width = maxLength < 10 ? 10 : maxLength;\r\n });\r\n\r\n workbook.xlsx.writeBuffer().then((data) => {\r\n const blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8;' });\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, filename);\r\n }\r\n else {\r\n Download(URL.createObjectURL(blob), filename);\r\n }\r\n });\r\n}\r\n\r\n\r\nexport function CreateExcelExport<T>(data: T[], filename: string) {\r\n const workbook = new Excel.Workbook();\r\n\r\n CreateExcelSheet(data, workbook, \"\");\r\n\r\n workbook.xlsx.writeBuffer().then((d) => {\r\n const blob = new Blob([d], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8;' });\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, filename);\r\n }\r\n else {\r\n Download(URL.createObjectURL(blob), filename);\r\n }\r\n });\r\n}\r\n\r\nexport function CreateExcelSheet<T>(data: T[], workbook: Excel.Workbook, sheetName: string) {\r\n const nSheet = workbook.addWorksheet(sheetName);\r\n let columns = [] as Partial<Excel.Column>[];\r\n const propNames = Object.getOwnPropertyNames(data[0]);\r\n propNames.map(p => columns.push({ key: p, header: p }));\r\n\r\n nSheet.columns = columns;\r\n\r\n data.forEach(d => {\r\n let rowData = [] as any[];\r\n Object.entries(d).forEach(([key, value]) =>\r\n rowData.push(value)\r\n )\r\n nSheet.addRow(rowData).commit();\r\n })\r\n\r\n}\r\n\r\nexport function ExportCompareToExcel<T>(filename: string, reportData1: ReportExport, reportData2: ReportExport) {\r\n const workbook = new Excel.Workbook();\r\n const sheet = workbook.addWorksheet(\"PoliteMail\");\r\n\r\n sheet.columns = [\r\n { key: \"fieldName\" },\r\n { key: \"value1\" },\r\n { key: \"value2\" }\r\n ]\r\n\r\n Object.keys(reportData1).forEach(key => {\r\n let rData1: any = reportData1;\r\n let rData2: any = reportData2;\r\n sheet.addRow({ fieldName: key, value1: rData1[key], value2: rData2[key] }).commit()\r\n })\r\n\r\n workbook.xlsx.writeBuffer().then((data) => {\r\n const blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8;' });\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, filename);\r\n }\r\n else {\r\n Download(URL.createObjectURL(blob), filename);\r\n }\r\n });\r\n}\r\n\r\nexport function ExportQR(filename: string, data: any) {\r\n let blob: Blob;\r\n\r\n const options: QRCode.QRCodeToStringOptions = {\r\n type: \"svg\"\r\n };\r\n\r\n QRCode.toString(data, options, (err: any, svgString: string) => {\r\n blob = new Blob([svgString], { type: \"image/svg+xml;charset=utf-8\" });\r\n })\r\n\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(blob, filename);\r\n }\r\n else {\r\n Download(URL.createObjectURL(blob), filename);\r\n }\r\n}\r\n\r\nexport function Download(url: string, filename: string) {\r\n const link = document.createElement('a');\r\n if (typeof link.download === 'undefined') {\r\n window.open(url);\r\n }\r\n else {\r\n link.href = url\r\n link.download = filename;\r\n link.style.visibility = 'hidden';\r\n link.click()\r\n }\r\n}\r\n\r\nexport const ReadCSVFile = (csvFile) => {\r\n const file = csvFile;\r\n\r\n return new Promise((resolve, reject) => {\r\n let reader = new FileReader();\r\n\r\n reader.onload = () => {\r\n resolve(reader.result);\r\n };\r\n\r\n reader.onerror = reject;\r\n\r\n reader.readAsText(file);\r\n });\r\n\r\n\r\n}\r\n\r\nexport const ProcessCSV = (str, delim = ',') => {\r\n const headers = str.slice(0, str.indexOf('\\n')).split(delim);\r\n const rows = str.slice(str.indexOf('\\n') + 1).split('\\n');\r\n\r\n const csvArray = rows.map(row => {\r\n const values = row.split(delim);\r\n const eachObject = headers.reduce((obj, header, i) => {\r\n obj[header.trim()] = values[i];\r\n return obj;\r\n }, {})\r\n return eachObject;\r\n })\r\n\r\n return csvArray;\r\n}\r\nexport function isMSOfficeFilenameValid(filename: string) {\r\n return filename.length < MAX_OFFICE_FILENAME_LENGTH ? isFilenameValid(filename) : false;\r\n}\r\n\r\nexport function isFilenameValid(filename: string) {\r\n var rg1 = /^[^\\\\/:\\*\\?\"<>\\|]+$/; // forbidden characters \\ / : * ? \" < > |\r\n var rg2 = /^\\./; // cannot start with dot (.)\r\n var rg3 = /^(nul|prn|con|lpt[0-9]|com[0-9])(\\.|$)/i; // forbidden file names\r\n return rg1.test(filename) && !rg2.test(filename) && !rg3.test(filename);\r\n}\r\n","import { ColumnDataType } from 'Definitions/GridColumnDefinitions';\r\nimport QueryType, { FilterType } from './QueryType';\r\n\r\nexport default class QueryBit {\r\n\r\n public queryType: QueryType;\r\n public value: string;\r\n public field: string;\r\n\r\n constructor(queryType: QueryType, value: string, field?: string) {\r\n this.queryType = queryType;\r\n this.value = value;\r\n this.field = field ?? \"\";\r\n }\r\n}\r\n\r\nexport class OrderByQueryBit extends QueryBit {\r\n constructor(_field: string, _direction: 'asc' | 'desc') {\r\n super(QueryType.OrderBy, _direction, _field);\r\n }\r\n}\r\n\r\nexport class SelectQueryBit extends QueryBit {\r\n constructor(_field: string) {\r\n super(QueryType.Select, \"\", _field);\r\n }\r\n}\r\n\r\nexport interface IFilterQueryBit {\r\n filterType: FilterType;\r\n value: string;\r\n field: string;\r\n columnDataType?: ColumnDataType;\r\n}\r\n\r\nexport class FilterQueryBit implements IFilterQueryBit {\r\n public filterType: FilterType;\r\n public value: string;\r\n public field: string;\r\n public columnDataType?: ColumnDataType;\r\n\r\n constructor(_value: string, _field: string, _operator: FilterType, _columnDataType? : ColumnDataType) {\r\n this.value = _value;\r\n this.field = _field;\r\n this.filterType = _operator;\r\n this.columnDataType = _columnDataType\r\n }\r\n}\r\n\r\nexport class FilterLogic {\r\n public conditions: (FilterQueryBit | FilterLogic)[];\r\n public operator: \"and\" | \"or\" | \"in\";\r\n\r\n constructor(_conditions: (FilterQueryBit | FilterLogic)[], _operator: \"and\" | \"or\" | \"in\") {\r\n this.conditions = _conditions;\r\n this.operator = _operator;\r\n }\r\n}","import QueryBit, { FilterQueryBit, FilterLogic, OrderByQueryBit, SelectQueryBit } from './QueryBit';\r\nimport QueryType, { FilterType, unSupportedSQLSearchFilterTypes as unsupportedSQLSearchFilterTypes } from './QueryType';\r\nimport { default as moment } from 'moment';\r\nimport { GetDistinctElementCounts } from '../ArrayUtils';\r\nimport { SecondsToMilliseconds } from 'Utils/TimeUtils';\r\nimport { ColumnDataType } from 'Definitions/GridColumnDefinitions';\r\n\r\nexport default class QueryFactory {\r\n private queryBits: QueryBit[] = [];\r\n private filterObject: FilterQueryBit | FilterLogic;\r\n private sqlFilterObject: FilterQueryBit[] = [];\r\n\r\n orderBy = (fields: string[], direction: 'asc' | 'desc') => {\r\n this.removeQueryBitsWithType(QueryType.OrderBy);\r\n fields.forEach((field) => {\r\n this.queryBits.push(new OrderByQueryBit(field, direction));\r\n })\r\n return this;\r\n };\r\n\r\n select = (fields: string[]) => {\r\n this.removeQueryBitsWithType(QueryType.Select);\r\n this.appendSelect(fields);\r\n return this;\r\n };\r\n\r\n clone = () => {\r\n const clonedQueryFactory = new QueryFactory();\r\n clonedQueryFactory.queryBits = this.queryBits.map(queryBit => ({ ...queryBit }));\r\n clonedQueryFactory.filterObject = { ...this.filterObject };\r\n clonedQueryFactory.sqlFilterObject = this.sqlFilterObject.map(filterQueryBit => ({ ...filterQueryBit }));\r\n\r\n return clonedQueryFactory;\r\n };\r\n\r\n removeSelectValues = (fields: string[]) => {\r\n fields.forEach(field => {\r\n const index = this.queryBits.findIndex(bit => bit.queryType === QueryType.Select && bit.field === field);\r\n if (index !== -1) {\r\n this.queryBits.splice(index, 1);\r\n }\r\n });\r\n return this;\r\n };\r\n\r\n appendSelect = (fields: string[]) => {\r\n fields.forEach((field) => {\r\n this.queryBits.push(new SelectQueryBit(field));\r\n })\r\n return this;\r\n };\r\n\r\n clearSelect = () => {\r\n this.removeQueryBitsWithType(QueryType.Select);\r\n return this;\r\n };\r\n\r\n top = (top: number) => {\r\n this.removeQueryBitsWithType(QueryType.Top);\r\n this.queryBits.push(new QueryBit(QueryType.Top, `$top=${top}`));\r\n return this;\r\n };\r\n\r\n clearTop = () => {\r\n this.removeQueryBitsWithType(QueryType.Top);\r\n return this;\r\n };\r\n\r\n getNext = (startIndex: number, count: number) => {\r\n this.skip(startIndex);\r\n this.top(count);\r\n }\r\n\r\n count = () => {\r\n this.removeQueryBitsWithType(QueryType.Count);\r\n this.queryBits.push(new QueryBit(QueryType.Count, `$count=true`));\r\n return this;\r\n };\r\n\r\n skip = (amount: number) => {\r\n this.removeQueryBitsWithType(QueryType.Skip);\r\n if(amount > 0)\r\n this.queryBits.push(new QueryBit(QueryType.Skip, `$skip=${amount}`));\r\n return this;\r\n };\r\n\r\n getSkip = () => {\r\n const skipValue = 'skip='\r\n let skipQB = this.queryBits.find(qb => qb.queryType === QueryType.Skip)\r\n if(skipQB)\r\n {\r\n const match = skipQB.value.substr(skipValue.length + 1)\r\n if(match){\r\n return parseInt(match);\r\n }\r\n }\r\n\r\n return 0\r\n }\r\n\r\n clearSkip = () => {\r\n this.removeQueryBitsWithType(QueryType.Skip);\r\n return this;\r\n };\r\n\r\n expand = (fields: string[]) => {\r\n this.removeQueryBitsWithType(QueryType.Expand);\r\n fields.forEach(field => {\r\n this.queryBits.push(new QueryBit(QueryType.Expand, field));\r\n })\r\n return this;\r\n };\r\n\r\n filterContains = (field: string, value: string) => {\r\n this.filterObject = new FilterQueryBit(value, field, FilterType.Contains);\r\n return this;\r\n };\r\n\r\n searchFilter = (searchFilter: FilterQueryBit[]) => {\r\n this.removeFilterBitByType(FilterType.Search);\r\n let searchFilterLogic = new FilterLogic(searchFilter,\"or\")\r\n this.filterObject = new FilterLogic([this.filterObject,\r\n searchFilterLogic], 'and');\r\n return this;\r\n }\r\n\r\n clearSearch = () => {\r\n this.removeFilterBitByType(FilterType.Search);\r\n return this.forceFilter();\r\n }\r\n\r\n forceFilter = () => {\r\n if (!this.filterObject)\r\n this.filterObject = new FilterQueryBit(\"true\", \"true\", FilterType.IsTrue,);\r\n\r\n return this;\r\n };\r\n\r\n filterEqualsNumber = (field: string, value: number) => {\r\n this.filterObject = new FilterQueryBit(value.toString(), field, FilterType.EqualsNumber);\r\n return this;\r\n };\r\n\r\n filterEqualsBoolean = (field: string, value: boolean) => {\r\n this.filterObject = new FilterQueryBit(value.toString(), field, FilterType.EqualsBoolean);\r\n return this;\r\n };\r\n\r\n filterEqualsString = (field: string, value: string) => {\r\n this.filterObject = new FilterQueryBit(value.toString().toLowerCase(), field, FilterType.EqualsString);\r\n return this;\r\n }\r\n\r\n filterGreaterThan = (field: string, value: number) => {\r\n this.filterObject = new FilterQueryBit(value.toString(), field, FilterType.GreaterThan)\r\n return this;\r\n }\r\n\r\n filterLessThan = (field: string, value: number) => {\r\n this.filterObject = new FilterQueryBit(value.toString(), field, FilterType.LessThan);\r\n return this;\r\n }\r\n\r\n filterGreaterThanOrEqual = (field: string, value: number) => {\r\n this.filterObject = new FilterQueryBit(value.toString(), field, FilterType.GreaterThanOrEqual)\r\n return this;\r\n }\r\n\r\n filterLessThanOrEqual = (field: string, value: number) => {\r\n this.filterObject = new FilterQueryBit(value.toString(), field, FilterType.LessThanOrEqual)\r\n return this;\r\n }\r\n\r\n filter = (logic: FilterQueryBit | FilterLogic) => {\r\n this.filterObject = logic;\r\n return this;\r\n };\r\n\r\n removeConditionByField = (field: string) => {\r\n if((this.filterObject as FilterLogic)?.operator)\r\n {\r\n this.filterObject = this.removeConditionLoop(field, this.filterObject as FilterLogic);\r\n }\r\n else{\r\n if((this.filterObject as FilterQueryBit)?.field === field)\r\n {\r\n this.filterObject = null;\r\n }\r\n }\r\n }\r\n\r\n private removeConditionLoop = (field: string, logic: FilterLogic): FilterLogic =>\r\n {\r\n const _conditions: (FilterLogic | FilterQueryBit)[] = [];\r\n\r\n logic.conditions.forEach(condition => {\r\n if(this.isEmpty(condition)){\r\n return;\r\n }\r\n\r\n if((condition as FilterLogic)?.conditions) {\r\n const _logic = this.removeConditionLoop(field, condition as FilterLogic);\r\n if(_logic.conditions.length > 1)\r\n {\r\n _conditions.push(_logic);\r\n }\r\n if(_logic.conditions.length > 0)\r\n {\r\n _conditions.push(_logic.conditions[0]);\r\n }\r\n }\r\n else if(field !== (condition as FilterQueryBit).field){\r\n _conditions.push(condition);\r\n }\r\n });\r\n logic.conditions = _conditions;\r\n return logic;\r\n }\r\n\r\n removeConditionByFieldAndValue = (field: string, value: string) => {\r\n if((this.filterObject as FilterLogic)?.operator)\r\n {\r\n this.filterObject = this.removeConditionByValueLoop(field, this.filterObject as FilterLogic, value);\r\n }\r\n else{\r\n if((this.filterObject as FilterQueryBit)?.field === field)\r\n {\r\n this.filterObject = null;\r\n }\r\n }\r\n }\r\n \r\n private removeFilterBitByType(filterType:FilterType): void { \r\n if((this.filterObject as FilterLogic)?.operator)\r\n {\r\n this.filterObject = this.removeFilterBitLoop(filterType, this.filterObject as FilterLogic);\r\n }\r\n else{\r\n if((this.filterObject as FilterQueryBit)?.filterType === filterType)\r\n {\r\n this.filterObject = null;\r\n }\r\n }\r\n }\r\n\r\n private removeFilterBitLoop (filterType: FilterType, filterObj: FilterLogic){\r\n const _conditions: (FilterLogic | FilterQueryBit)[] = [];\r\n\r\n filterObj.conditions.forEach(condition => {\r\n if(this.isEmpty(condition)){\r\n return;\r\n }\r\n \r\n if((condition as FilterLogic)?.conditions) {\r\n const _logic = this.removeFilterBitLoop(filterType, condition as FilterLogic);\r\n if(_logic.conditions.length > 1)\r\n {\r\n _conditions.push(_logic);\r\n }\r\n if(_logic.conditions.length > 0)\r\n {\r\n _conditions.push(_logic.conditions[0]);\r\n }\r\n }\r\n else if(filterType !== (condition as FilterQueryBit).filterType){\r\n _conditions.push(condition);\r\n }\r\n });\r\n filterObj.conditions = _conditions;\r\n return filterObj;\r\n }\r\n\r\n getExportQueryString = (): string => {\r\n const exportQuery = new QueryFactory();\r\n exportQuery.SetQueryBits([...this.GetQueryBits()]);\r\n exportQuery.SetFilter({ ...this.GetFilter() });\r\n exportQuery.clearTop();\r\n exportQuery.clearSkip();\r\n return exportQuery.toQuery() ?? \"\";\r\n }\r\n\r\n private removeConditionByValueLoop = (field: string, logic: FilterLogic, value: string): FilterLogic =>\r\n {\r\n const _conditions: (FilterLogic | FilterQueryBit)[] = [];\r\n\r\n logic.conditions.forEach(condition => {\r\n if(this.isEmpty(condition)){\r\n return;\r\n }\r\n \r\n if((condition as FilterLogic)?.conditions) {\r\n const _logic = this.removeConditionByValueLoop(field, condition as FilterLogic, value);\r\n if(_logic.conditions.length > 1)\r\n {\r\n _conditions.push(_logic);\r\n }\r\n if(_logic.conditions.length > 0)\r\n {\r\n _conditions.push(_logic.conditions[0]);\r\n }\r\n }\r\n else if(field !== (condition as FilterQueryBit).field\r\n && value !== (condition as FilterQueryBit).value){\r\n _conditions.push(condition);\r\n }\r\n });\r\n logic.conditions = _conditions;\r\n return logic;\r\n }\r\n\r\n toQuery = () => {\r\n if (this.queryBits.length < 1 && this.filterObject === null) return '';\r\n\r\n const orderByBits = this.queryBits.filter((qb: QueryBit) => qb.queryType === QueryType.OrderBy);\r\n const expandBits = this.queryBits.filter((qb: QueryBit) => qb.queryType === QueryType.Expand);\r\n const selectBits = this.queryBits.filter((qb: QueryBit) => qb.queryType === QueryType.Select);\r\n\r\n let query =\r\n '?' +\r\n this.queryBits\r\n .filter((qb: QueryBit) => qb.queryType !== QueryType.Filter\r\n && qb.queryType !== QueryType.OrderBy\r\n && qb.queryType !== QueryType.Select\r\n && qb.queryType !== QueryType.Expand)\r\n .map((sf: QueryBit) => sf.value)\r\n .join('&');\r\n\r\n if (orderByBits.length > 0) {\r\n if (query !== '?')\r\n query += '&';\r\n query += this.parseOrderBy(orderByBits).trim();\r\n }\r\n\r\n if (expandBits.length > 0) {\r\n if (query !== '?')\r\n query += '&';\r\n query += this.parseExpand(expandBits).trim();\r\n }\r\n\r\n if (selectBits.length > 0) {\r\n if (query !== '?')\r\n query += '&';\r\n query += this.parseSelect(selectBits).trim();\r\n }\r\n\r\n if (this.filterObject) {\r\n //check if filterobject has existing search on the same keys\r\n const initialConditions = (this.filterObject as FilterLogic).conditions?.map(c => ({...c}));\r\n this.modifyDecimalValue((this.filterObject as FilterLogic).conditions as FilterQueryBit[]);\r\n let filterString = this.parseFilters(this.filterObject).trim();\r\n (this.filterObject as FilterLogic).conditions = initialConditions;\r\n if(filterString === \"\"){\r\n return;\r\n }\r\n\r\n if (query !== '?')\r\n query += '&';\r\n query += '$filter=' + filterString;\r\n }\r\n return query;\r\n }\r\n\r\n modifyDecimalValue = (conditions) => {\r\n const normalEqValue = conditions?.find((data) => data.columnDataType === ColumnDataType.MillisecondToSecond && data.filterType === FilterType.EqualsNumber);\r\n const normalGeValue = conditions?.find((data) => data.columnDataType === ColumnDataType.MillisecondToSecond && data.filterType === FilterType.GreaterThan);\r\n const normalGeEValue = conditions?.find((data) => data.columnDataType === ColumnDataType.MillisecondToSecond && data.filterType === FilterType.GreaterThanOrEqual);\r\n const normalleValue = conditions?.find((data) => data.columnDataType === ColumnDataType.MillisecondToSecond && data.filterType === FilterType.LessThan);\r\n const normalleEValue = conditions?.find((data) => data.columnDataType === ColumnDataType.MillisecondToSecond && data.filterType === FilterType.LessThanOrEqual);\r\n if(normalEqValue) {\r\n const newCriteria = new FilterQueryBit((SecondsToMilliseconds(parseFloat(normalEqValue.value) + 0.49)).toString(), \"AvgReadTime\", FilterType.LessThanOrEqual, ColumnDataType.MillisecondToSecond);\r\n conditions.push(newCriteria)\r\n normalEqValue.value = (SecondsToMilliseconds(parseFloat(normalEqValue.value)) - 0.5).toString();\r\n normalEqValue.filterType = FilterType.GreaterThanOrEqual;\r\n }\r\n else if(normalGeValue) {\r\n normalGeValue.value = (SecondsToMilliseconds(parseFloat(normalGeValue.value))).toString();\r\n }\r\n else if(normalGeEValue) {\r\n normalGeEValue.value = (SecondsToMilliseconds(parseFloat(normalGeEValue.value))).toString();\r\n }\r\n else if(normalleValue) {\r\n normalleValue.value = (SecondsToMilliseconds(parseFloat(normalleValue.value))).toString();\r\n }\r\n else if(normalleEValue) {\r\n normalleEValue.value = (SecondsToMilliseconds(parseFloat(normalleEValue.value))).toString();\r\n }\r\n }\r\n\r\n private removeQueryBitsWithType(type: QueryType): void {\r\n this.queryBits = this.queryBits.filter(bit => bit.queryType != type);\r\n }\r\n\r\n private parseFilters(filter: FilterQueryBit | FilterLogic): string {\r\n\r\n if ((filter as FilterQueryBit).field) {\r\n let bitFilter = filter as FilterQueryBit;\r\n if (bitFilter.filterType === FilterType.Contains) {\r\n return `contains(tolower(${bitFilter.field}), \\'${bitFilter.value.toLowerCase().replaceAll(\"'\", \"''\")}\\')`;\r\n }\r\n else if (bitFilter.filterType === FilterType.CustomField) {\r\n return `contains(${bitFilter.field}, \\'${bitFilter.value}\\')`;\r\n }\r\n else if (bitFilter.filterType === FilterType.IsTrue) {\r\n return `true`;\r\n }\r\n else if (bitFilter.filterType === FilterType.EqualsNumber) {\r\n return `${bitFilter.field} eq ${bitFilter.value}`;\r\n }\r\n else if (bitFilter.filterType === FilterType.NotEqualsNumber) {\r\n return `${bitFilter.field} ne ${bitFilter.value}`;\r\n }\r\n else if (bitFilter.filterType === FilterType.EqualsString) {\r\n return `contains(tolower(${bitFilter.field}), \\'${bitFilter.value.toLowerCase().replaceAll(\"'\", \"''\")}\\')`;\r\n }\r\n else if (bitFilter.filterType === FilterType.MatchWholeString) {\r\n return `${bitFilter.field} eq '${bitFilter.value}'`;\r\n }\r\n else if (bitFilter.filterType === FilterType.EqualsBoolean) {\r\n return `${bitFilter.field} eq ${bitFilter.value}`;\r\n }\r\n else if (bitFilter.filterType === FilterType.EqualsDate) {\r\n return `${bitFilter.field} eq cast(${moment(new Date(bitFilter.value)).toISOString()}, Edm.DateTimeOffset)`;\r\n }\r\n else if (bitFilter.filterType === FilterType.GreaterThanDate) {\r\n return `${bitFilter.field} gt cast(${moment(new Date(bitFilter.value)).add(1,\"days\").toISOString()}, Edm.DateTimeOffset)`;\r\n }\r\n else if (bitFilter.filterType === FilterType.GreaterThanOrEqualDate) {\r\n return `${bitFilter.field} ge cast(${moment(new Date(bitFilter.value)).toISOString()}, Edm.DateTimeOffset)`;\r\n }\r\n else if (bitFilter.filterType === FilterType.LessThanDate) {\r\n return `${bitFilter.field} lt cast(${moment(new Date(bitFilter.value)).toISOString()}, Edm.DateTimeOffset)`;\r\n }\r\n else if (bitFilter.filterType === FilterType.LessThanOrEqualDate) {\r\n return `${bitFilter.field} le cast(${moment(new Date(bitFilter.value)).toISOString()}, Edm.DateTimeOffset)`;\r\n }\r\n else if (bitFilter.filterType === FilterType.GreaterThan){\r\n return `${bitFilter.field} gt ${bitFilter.value}`;\r\n }\r\n else if (bitFilter.filterType === FilterType.GreaterThanOrEqual){\r\n return `${bitFilter.field} ge ${bitFilter.value}`;\r\n }\r\n else if (bitFilter.filterType === FilterType.LessThan){\r\n return `${bitFilter.field} lt ${bitFilter.value}`;\r\n }\r\n else if (bitFilter.filterType === FilterType.LessThanOrEqual){\r\n return `${bitFilter.field} le ${bitFilter.value}`;\r\n }\r\n else if(bitFilter.filterType == FilterType.Search){\r\n return `contains(tolower(${bitFilter.field}), \\'${bitFilter.value.toLowerCase().replaceAll(\"'\", \"''\")}\\')`;\r\n }\r\n else if(bitFilter.filterType == FilterType.In){\r\n return `${bitFilter.value}`;\r\n }\r\n else if(bitFilter.filterType === FilterType.HasInvalidData){\r\n if(bitFilter.value.toLowerCase() === 'false')\r\n return `not(contains(ValidationNotes, \\'${bitFilter.field} (\\'))`;\r\n return `contains(ValidationNotes, \\'${bitFilter.field} (\\')`;\r\n }\r\n }\r\n else{\r\n let logic: FilterLogic = filter as FilterLogic;\r\n let parts: string[] = [];\r\n\r\n logic.conditions.forEach((condition) => {\r\n if(!this.isEmpty(condition)){\r\n let filter = this.parseFilters(condition);\r\n if(filter !== \"\"){\r\n parts.push(this.parseFilters(condition));\r\n }\r\n }\r\n })\r\n let joined: string = \"\";\r\n if(logic.operator === \"in\"){\r\n let filterBit = logic.conditions[0] as FilterQueryBit;\r\n joined = parts.join(`,`);\r\n return joined.length > 0 ? `${filterBit.field} in (${joined})` : \"\";\r\n }\r\n else{\r\n joined = parts.join(` ${logic.operator} `);\r\n return joined.length > 0 ? `(${joined})` : \"\";\r\n }\r\n }\r\n }\r\n\r\n private parseOrderBy(bits: QueryBit[]): string {\r\n if (!bits === null || bits.length < 1) return '';\r\n return '$orderby=' + bits.map(bit => `${bit.field} ${bit.value}` ).join(',');\r\n }\r\n\r\n private parseExpand(bits: QueryBit[]): string {\r\n if (!bits === null || bits.length < 1) return '';\r\n return '$expand=' + bits.map(bit => bit.value).join(',');\r\n }\r\n\r\n private parseSelect(bits: QueryBit[]): string {\r\n if (!bits === null || bits.length < 1) return '';\r\n return '$select=' + bits.map(bit => bit.field).join(',');\r\n }\r\n\r\n public GetQueryBits(): QueryBit[]{\r\n return this.queryBits;\r\n }\r\n\r\n public SetQueryBits(bits: QueryBit[]): void {\r\n this.queryBits = bits;\r\n }\r\n\r\n public GetFilter(): FilterQueryBit | FilterLogic {\r\n return this.filterObject;\r\n }\r\n\r\n public SetFilter(filter: FilterQueryBit | FilterLogic): void {\r\n this.filterObject = filter;\r\n }\r\n\r\n public ClearQuery(): void {\r\n this.queryBits = [];\r\n }\r\n\r\n public FilterIsLogic() {\r\n return !(this.filterObject as FilterQueryBit).field;\r\n }\r\n\r\n isEmpty(obj: Object) {\r\n return Object.keys(obj).length === 0;\r\n }\r\n\r\n public SetSQLSearchFilter(searchFilter: FilterQueryBit) {\r\n this.removeFilterBitByType(FilterType.Search);\r\n this.forceFilter();\r\n let logic = (this.GetFilter() as FilterLogic);\r\n if (logic && logic.conditions && logic.conditions.length > 0) {\r\n this.filterObject = new FilterLogic([...logic.conditions, searchFilter], \"and\")\r\n } else {\r\n this.filterObject = new FilterLogic([this.GetFilter(), searchFilter], \"and\")\r\n } \r\n }\r\n\r\n public GetSQLSearchFilter(): { query: string, filter: FilterQueryBit[] } {\r\n let search = this.sqlFilterObject.find(bit => bit.filterType === FilterType.Search)\r\n let rest = this.sqlFilterObject.filter(bit => bit.filterType !== FilterType.Search)\r\n \r\n if (search) {\r\n rest.push({field: \"Search\", value: search.value, filterType: FilterType.Search})\r\n }\r\n\r\n this.sqlFilterObject = rest;\r\n\r\n const overrideQuery = new QueryFactory();\r\n overrideQuery.SetQueryBits(this.GetQueryBits());\r\n overrideQuery.forceFilter();\r\n this.modifyDecimalValue(this.sqlFilterObject);\r\n this.sqlFilterObject.map((data) => delete data.columnDataType);\r\n return { query: overrideQuery.toQuery(), filter: this.sqlFilterObject }\r\n }\r\n\r\n private formatFilterBit(bit: FilterQueryBit): FilterQueryBit {\r\n if (bit.filterType === FilterType.GreaterThanDate \r\n || bit.filterType === FilterType.LessThanDate) {\r\n return {\r\n field: bit.field,\r\n value: moment(new Date(bit.value)).format(),\r\n filterType: bit.filterType\r\n };\r\n }\r\n \r\n return bit;\r\n }\r\n\r\n private checkFieldCountCompatibility(arr: FilterQueryBit[]): boolean {\r\n let fields = arr.map(el => el.field)\r\n const elCounts = Array.from(GetDistinctElementCounts(fields).values());\r\n return !elCounts.some(el => el > 2)\r\n }\r\n\r\n public SetSQLFilterObject() {\r\n this.sqlFilterObject = this.doSQLFilterParse(this.filterObject, []);\r\n }\r\n\r\n public CheckSQLSearchCompatibility(): boolean {\r\n let sql = this.doSQLFilterParse(this.filterObject, []);\r\n if (sql.some(filter => unsupportedSQLSearchFilterTypes.includes(filter.filterType))) {\r\n return false;\r\n } else if (!this.checkFieldCountCompatibility(sql)) {\r\n return false;\r\n } else {\r\n this.sqlFilterObject = sql;\r\n return true;\r\n }\r\n }\r\n\r\n private doSQLFilterParse(filter: FilterQueryBit | FilterLogic, set: FilterQueryBit[]): FilterQueryBit[] {\r\n if ((filter as FilterQueryBit).field && (filter as FilterQueryBit).filterType !== FilterType.IsTrue) {\r\n set.push(this.formatFilterBit(filter as FilterQueryBit))\r\n }\r\n\r\n let logic: FilterLogic = filter as FilterLogic;\r\n if (logic && logic.conditions) {\r\n logic.conditions.forEach((condition) => {\r\n if (!this.isEmpty(condition)) {\r\n return this.doSQLFilterParse(condition, set)\r\n } \r\n }) \r\n }\r\n return set;\r\n }\r\n\r\n public FilterTypeHelper(filterTypeEnum: FilterType)\r\n {\r\n switch(filterTypeEnum)\r\n {\r\n case 0: return \"contains\";\r\n case 1: \r\n case 2:\r\n case 3: \r\n case 4:\r\n case 13: //FilterType.IsTrue\r\n case 17: //MatchWholeString\r\n case 19:\r\n return \"equals\";\r\n case 5: \r\n case 9:\r\n return \"is greater than\";\r\n case 6: \r\n case 10:\r\n return \"is greater than or equal to\";\r\n case 7: \r\n case 11: \r\n return \"is less than or equal to\";\r\n case 8:\r\n case 12:\r\n return \"is less than or equal to\";\r\n case 14: //FilterType.Search;\r\n case 15: //FilterType.CustomField;\r\n case 16: //FilterType.SQLOverride;\r\n case 18: //FilterType.In;\r\n return \"(Translation not currently available)\"\r\n }\r\n }\r\n}","enum QueryType {\r\n OrderBy = 1,\r\n Top = 2,\r\n Skip = 3,\r\n Count = 4,\r\n Expand = 5,\r\n Filter = 6,\r\n Select = 7,\r\n Search = 8\r\n}\r\n\r\nexport enum FilterType {\r\n Contains = 0,\r\n EqualsNumber = 1,\r\n EqualsString = 2,\r\n EqualsBoolean = 3,\r\n EqualsDate = 4,\r\n GreaterThanDate = 5,\r\n GreaterThanOrEqualDate = 6,\r\n LessThanDate = 7,\r\n LessThanOrEqualDate = 8,\r\n GreaterThan = 9,\r\n GreaterThanOrEqual = 10,\r\n LessThan = 11,\r\n LessThanOrEqual = 12,\r\n IsTrue = 13,\r\n Search = 14,\r\n CustomField = 15,\r\n SQLOverride = 16,\r\n MatchWholeString = 17,\r\n In = 18,\r\n HasInvalidData = 19,\r\n NotEqualsNumber = 20,\r\n}\r\n\r\nexport const unSupportedSQLSearchFilterTypes: FilterType[] = [\r\n FilterType.EqualsDate,\r\n FilterType.GreaterThanOrEqualDate,\r\n FilterType.LessThanOrEqualDate,\r\n FilterType.GreaterThan,\r\n FilterType.GreaterThanOrEqual,\r\n FilterType.LessThan,\r\n FilterType.LessThanOrEqual,\r\n FilterType.HasInvalidData\r\n]\r\n\r\nexport default QueryType;","import { GroupLabel } from 'Definitions/Generated/PoliteMailEntities/Models/GroupLabel';\r\nimport { RTKQueryTags, baseApi } from './baseApiSlice';\r\n\r\nexport const groupLabelsApiSlice = baseApi\r\n .enhanceEndpoints({\r\n addTagTypes: []\r\n })\r\n .injectEndpoints({\r\n endpoints: builder => ({\r\n getGroupLabels: builder.query<GroupLabel[], void>({\r\n query: () => ({\r\n url: `GroupLabels`,\r\n method: 'GET'\r\n }),\r\n transformResponse(response) {\r\n return (response as { value: GroupLabel[] }).value;\r\n },\r\n providesTags: (_result, _error, _args) => [{ type: RTKQueryTags.GroupLabel, id: 'LIST' }]\r\n })\r\n })\r\n });\r\n\r\nconst { useGetGroupLabelsQuery } = groupLabelsApiSlice;\r\n\r\nexport const groupLabelsApiHooks = {\r\n useGetGroupLabelsQuery\r\n};\r\n","import {IMyProfileModel} from 'components/Pages/ProfilePages/MyProfilePage';\r\nimport {baseApi} from 'store/features/baseApiSlice';\r\nimport {groupLabelsApiSlice} from 'store/features/groupLabelsApiSlice';\r\nimport {store} from 'store/store';\r\nimport { usersApiSlice } from 'store/features/usersApiSlice';\r\nimport { PMTrackingMode } from \"../components/WebComponents/MailSending/IPMComposedMessage\";\r\nimport { Contact } from 'Definitions/Generated/PoliteMailEntities/Models/Contact';\r\nimport { List } from 'Definitions/Generated/PoliteMailEntities/Models/List';\r\nimport { DayOfTheWeek } from 'Definitions/Generated/Microsoft/Exchange/WebServices/Data/DayOfTheWeek';\r\n\r\nexport interface IGlobalProfile {\r\n\t// My Profile\r\n\tUserID: number;\r\n\tEmail: string;\r\n\tFirstName: string;\r\n\tLastName: string;\r\n\tTitle: string;\r\n\tPhone: string;\r\n\tMobile: string;\r\n\tFax: string;\r\n\tCompany: string;\r\n\tAddress1: string;\r\n\tAddress2: string;\r\n\tCity: string;\r\n\tState: string;\r\n\tZip: string;\r\n\tCountry: string;\r\n\tAccountType: number;\r\n\tPreventSendingOptOut: boolean;\r\n\tBusinessID: number;\r\n\tRegionID: number;\r\n\tLanguage: string;\r\n\t// Preferences\r\n\tTrackingDefault: number;\r\n\tEnableSubscription: boolean;\r\n\tUseEwsExpansion: boolean;\r\n\tUseEwsCache: boolean;\r\n\tEwsServer: boolean;\r\n\tEwsClient: boolean;\r\n\tEmbedImages: boolean;\r\n\tHidePanel: boolean;\r\n\tOverrideWordCount: boolean;\r\n\tDefaultTemplate: number;\r\n\tDefaultCampaign: number;\r\n\tCheckRecipCount: boolean;\r\n\tRecipCount: number;\r\n\tDeleteAfterBounces: boolean;\r\n\tBounceCount: number;\r\n\tInboxes: string[];\r\n\t// Reporting Admin\r\n\tAggregateAvailable: boolean;\r\n\tAnonymousAvailable: boolean;\r\n\tIndividualAvailable: boolean;\r\n\tRegionAlias: string;\r\n\tBusinessAlias: string;\r\n\tRequirePasswordReset: boolean;\r\n}\r\n\r\nexport const ProfileManager = new (class ProfileManager {\r\n\tprotected GlobalProfile: IGlobalProfile;\r\n\tprotected dpi = 1;\r\n\r\n\tpublic AssignGlobalProfile = (handler?: () => void): void => {\r\n\r\n\t\tconst globalProfilePromise = store.dispatch(baseApi.endpoints.getGlobalProfile.initiate(undefined));\r\n\r\n\t\tglobalProfilePromise\r\n\t\t\t.then(response => {\r\n\t\t\t\tthis.GlobalProfile = {...response.data, Language: navigator.language};\r\n\t\t\t\tconst curUserPromise = store.dispatch(usersApiSlice.endpoints.getCurrentUser.initiate(undefined));\r\n\r\n\t\t\t\tcurUserPromise.then(curUser => {\r\n\t\t\t\t\tthis.GlobalProfile.UserID = curUser.data.ID;\r\n\t\t\t\t\tthis.GlobalProfile.BusinessID = curUser.data.BusinessID;\r\n\t\t\t\t\tthis.GlobalProfile.AccountType = curUser.data.UserType;\r\n\t\t\t\t\tthis.GlobalProfile.RegionID = curUser.data.RegionID;\r\n\t\t\t\t\tthis.GlobalProfile.RequirePasswordReset = curUser.data.RequirePasswordReset;\r\n\t\t\t\t\tconst groupLabelsPromise = store.dispatch(\r\n\t\t\t\t\t\tgroupLabelsApiSlice.endpoints.getGroupLabels.initiate(undefined),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tgroupLabelsPromise.then(response => {\r\n\t\t\t\t\t\tconst aliases = response.data;\r\n\t\t\t\t\t\tthis.GlobalProfile.RegionAlias = aliases?.find((r: {ID: string}) => r.ID === 'Region')?.Label;\r\n\t\t\t\t\t\tthis.GlobalProfile.BusinessAlias = aliases?.find((r: {ID: string}) => r.ID === 'Business')?.Label;\r\n\r\n\t\t\t\t\t\tif (handler) {\r\n\t\t\t\t\t\t\thandler();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tglobalProfilePromise.unsubscribe();\r\n\t\t\t});\r\n\t};\r\n\r\n\tGetGlobalProfile = (): IGlobalProfile => this.GlobalProfile;\r\n\r\n\tSaveGlobalProfile = (globalProfileModel: IMyProfileModel, handler?: () => void) => {\r\n\t\tconst setGlobalProfilePromise = store.dispatch(\r\n\t\t\tbaseApi.endpoints.setGlobalProfile.initiate({\r\n\t\t\t\tFirstName: globalProfileModel.fName,\r\n\t\t\t\tLastName: globalProfileModel.lName,\r\n\t\t\t\tPhone: globalProfileModel.phone,\r\n\t\t\t\tMobile: globalProfileModel.mobile,\r\n\t\t\t\tFax: globalProfileModel.fax,\r\n\t\t\t\tCompany: globalProfileModel.company,\r\n\t\t\t\tAddress1: globalProfileModel.address1,\r\n\t\t\t\tAddress2: globalProfileModel.address2,\r\n\t\t\t\tCity: globalProfileModel.city,\r\n\t\t\t\tState: globalProfileModel.state,\r\n\t\t\t\tZip: globalProfileModel.zip,\r\n\t\t\t\tCountry: globalProfileModel.country,\r\n\t\t\t\tTitle: globalProfileModel.title,\r\n\t\t\t}),\r\n\t\t);\r\n\t\tsetGlobalProfilePromise\r\n\t\t\t.then(_response => {\r\n\t\t\t\tthis.AssignGlobalProfile(handler);\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t})\r\n\t\t\t.finally(() => this);\r\n\t};\r\n\r\n\tpublic SetRegionAlias(region: string) {\r\n\t\tthis.GlobalProfile.RegionAlias = region;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tpublic SetBusinessAlias(business: string) {\r\n\t\tthis.GlobalProfile.BusinessAlias = business;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tpublic CreateDefaultBaseContact = (): Contact => {\r\n\t\treturn {\r\n\t\t\tList: {} as List,\r\n\t\t\tID: -1,\r\n\t\t\tDisplayName: '',\r\n\t\t\tFirstName: '',\r\n\t\t\tLastName: '',\r\n\t\t\tEmail: '',\r\n\t\t\tActiveState: true,\r\n\t\t\tCreationDate: new Date(),\r\n\t\t\tShared: false,\r\n\t\t\tOwnerID: -1,\r\n\t\t\tCategoryID: -1,\r\n\t\t\tStageID: -1,\r\n\t\t\tCompany: '',\r\n\t\t\tWebAddress: '',\r\n\t\t\tTitle: '',\r\n\t\t\tNotes: '',\r\n\t\t\tBusinessID: this.GlobalProfile.BusinessID,\r\n\t\t\tRegionID: this.GlobalProfile.RegionID,\r\n\t\t\tLastChangedDate: new Date(),\r\n\t\t\tLanguagePreference: '',\r\n\t\t\tContactTimeZoneInfo: '',\r\n\t\t\tDays: DayOfTheWeek.Weekday,\r\n\t\t\tWorkDays: '',\r\n\t\t\tDayStart: '',\r\n\t\t\tDayEnd: '',\r\n\t\t\tListID: [],\r\n\t\t\tMobileNumber: '',\r\n\t\t\tFaxNumber: '',\r\n\t\t\tHomeNumber: '',\r\n\t\t\tAddress1: '',\r\n\t\t\tAddress2: '',\r\n\t\t\tCity: '',\r\n\t\t\tStateOrProvince: '',\r\n\t\t\tPostalCode: '',\r\n\t\t\tClientCountry: '',\r\n\t\t};\r\n\t};\r\n\r\n\tpublic SetTrackingModeAvailable(trackingMode: PMTrackingMode, isAvailable: boolean) {\r\n\t\tswitch (trackingMode) {\r\n\t\t\tcase PMTrackingMode.IndividualTracking:\r\n\t\t\t\tthis.GlobalProfile.IndividualAvailable = isAvailable;\r\n\t\t\t\tbreak;\r\n\t\t\tcase PMTrackingMode.AggregateTracking:\r\n\t\t\t\tthis.GlobalProfile.AggregateAvailable = isAvailable;\r\n\t\t\t\tbreak;\r\n\t\t\tcase PMTrackingMode.AnonymousTracking:\r\n\t\t\t\tthis.GlobalProfile.AnonymousAvailable = isAvailable;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic SetDpi(dpi: number) {\r\n\t\tthis.dpi = dpi;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tpublic GetDpi() {\r\n\t\treturn this.dpi;\r\n\t}\r\n})();\r\n","import { useHistory } from \"react-router-dom\";\r\nimport * as React from \"react\";\r\nimport { NavigationTab } from \"../components/WebComponents/TabLogic\";\r\n\r\nexport interface IHistoryCell {\r\n Name?: string;\r\n Location: string;\r\n State?: JSX.Element;\r\n Tier?: number;\r\n timestamp?: number;\r\n onRouteChange?: (tab: NavigationTab) => void;\r\n navigationTab?: NavigationTab;\r\n informationComponent?: JSX.Element;\r\n listId?: number;\r\n onModifyFilteredList?: (listId: number) => void;\r\n newFilteredFeatureEnabled?: boolean;\r\n}\r\n\r\nexport interface IHistoryListNode {\r\n Cell: IHistoryCell;\r\n NextNode?: IHistoryListNode;\r\n}\r\n\r\nconst HomeCell: IHistoryCell = {\r\n Name: \"\",\r\n Location: \"/\"\r\n};\r\nlet ParentNode: IHistoryListNode = {\r\n Cell: HomeCell,\r\n};\r\n\r\nlet ChangeEvents: (() => void)[] = [];\r\n\r\nexport const PMHistory = new (class HistoryClass {\r\n Push = (cell: IHistoryCell): void => {\r\n this.GetBottom().NextNode = {\r\n Cell: cell,\r\n };\r\n ChangeEvents.map(function (event) {\r\n event();\r\n });\r\n };\r\n\r\n GetTop = (): IHistoryListNode => {\r\n return ParentNode;\r\n };\r\n\r\n GetBottom = (): IHistoryListNode => {\r\n let node: IHistoryListNode = ParentNode;\r\n while (node.NextNode) {\r\n node = node.NextNode;\r\n }\r\n return node;\r\n };\r\n\r\n GetByLink = (link: string): IHistoryListNode => {\r\n let node: IHistoryListNode = ParentNode;\r\n while (node.NextNode && node.Cell.Location !== link) {\r\n node = node.NextNode;\r\n }\r\n return node;\r\n };\r\n\r\n GetNodeWithLocation = (location: string): IHistoryListNode => {\r\n let node: IHistoryListNode = ParentNode;\r\n while (node.NextNode && node.Cell.Location != location) {\r\n node = node.NextNode;\r\n }\r\n return node;\r\n };\r\n\r\n DeleteLocation = (location: string): void => {\r\n let node = this.GetNodeWithLocation(location);\r\n node.NextNode = undefined;\r\n ChangeEvents.map(function (event) {\r\n event();\r\n });\r\n };\r\n\r\n Reset = (): void => {\r\n ParentNode.NextNode = undefined;\r\n };\r\n\r\n DeleteTier(tier: number) {\r\n let currentTier = -1;\r\n let node = ParentNode;\r\n while (currentTier < tier - 1 && node.NextNode) {\r\n node = node.NextNode;\r\n currentTier++;\r\n }\r\n node.NextNode = undefined;\r\n }\r\n\r\n AddListener = (event: () => void): void => {\r\n ChangeEvents.push(event);\r\n };\r\n})();\r\n","import { LocalStorageEnabled, LocalStorageGet, StorageKeys } from \"store/localStorage\";\r\n\r\nexport interface IFilterItem {\r\n filterType: FilterType,\r\n property: string,\r\n value: string,\r\n modelName: string\r\n}\r\nexport interface IOrderItem {\r\n property: string,\r\n order: Order\r\n}\r\nexport enum FilterType {\r\n substringof,\r\n startsWith\r\n}\r\n\r\nexport enum Order {\r\n Ascending,\r\n Descending\r\n}\r\n\r\n\r\nexport class ODataQueryBuilder {\r\n\r\n public static AuthorizeHeader: string = LocalStorageEnabled() ? LocalStorageGet(StorageKeys.PMToken) : undefined; \r\n\r\n baseURL?: string;\r\n\r\n filters?: IFilterItem[];\r\n orderBy?: IOrderItem[];\r\n\r\n constructor(baseURL?: string) {\r\n this.baseURL = baseURL;\r\n }\r\n\r\n addFilter(filterType: FilterType, property: string, value: string, modelName: string) {\r\n if (!this.filters) {\r\n this.filters = [];\r\n }\r\n this.filters.push({filterType, property, value, modelName} as IFilterItem)\r\n }\r\n\r\n addOrderBy(property: string, order: Order) {\r\n if (!this.orderBy) {\r\n this.orderBy = [];\r\n }\r\n this.orderBy.push({property, order})\r\n }\r\n\r\n buildQuery() {\r\n return (this.baseURL ? this.baseURL : \"\") + this.buildQueryString();\r\n }\r\n\r\n private buildQueryString(): string {\r\n let queryString = \"?\"\r\n\r\n if (this.filters) {\r\n queryString += \"$filter=\" + this.buildFilterString();\r\n }\r\n\r\n if (this.orderBy) {\r\n queryString += \"$orderBy=\" + this.buildOrderByString();\r\n }\r\n return queryString;\r\n }\r\n\r\n private buildFilterString(): string {\r\n let filterString = \"\";\r\n this.filters.forEach(filter => {\r\n if (this.filters.indexOf(filter) === 0) {\r\n filterString += this.buildFilter(filter.filterType, filter.property, filter.value, filter.modelName);\r\n } else {\r\n filterString += ' or ' + this.buildFilter(filter.filterType, filter.property, filter.value, filter.modelName);\r\n }\r\n })\r\n return filterString;\r\n }\r\n\r\n private buildOrderByString(): string {\r\n let orderByString = \"\";\r\n this.orderBy.forEach(order => {\r\n orderByString += this.buildOrderBy( order.property, order.order); \r\n })\r\n return orderByString;\r\n }\r\n\r\n private buildFilter(filter: FilterType, property: string, value: string, modelName: string): string {\r\n if (value) {\r\n switch (filter) {\r\n case FilterType.substringof:\r\n return `contains(${property},'${value}')`;\r\n }\r\n } \r\n }\r\n\r\n private buildOrderBy(property: string, order: Order): string {\r\n switch (order) {\r\n case Order.Ascending:\r\n return `${property} asc`\r\n case Order.Descending:\r\n return `${property} desc`\r\n } \r\n }\r\n}","import { GetHostDispatch } from \"./ChromieUtils\";\r\n\r\nexport async function CommunicateToOutlook(action: string, data: string = null) {\r\n \r\n // add switch to fire chromie logic if setting is turned on\r\n if (window.chrome?.webview /*check chromie appSetting*/ ) {\r\n const dispatch = await GetHostDispatch();\r\n if (dispatch) {\r\n let message = data ? `${action}-?-${data}` : action;\r\n dispatch.CommunicateToAddin(message);\r\n }\r\n } else {\r\n const outlookConnection = document.getElementById(\"outlookConnection\") as HTMLInputElement;\r\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, \"value\").set;\r\n \r\n let val = outlookConnection.value;\r\n if (val.length > 0) {\r\n nativeInputValueSetter.call(outlookConnection, val + '-|-' + action);\r\n } else {\r\n nativeInputValueSetter.call(outlookConnection, action);\r\n }\r\n var ev2 = new Event('input', { bubbles: true });\r\n outlookConnection.dispatchEvent(ev2);\r\n }\r\n //Cheese to get outlook windows to appear\r\n if(typeof((window as any).FocusOutlook) === \"function\")\r\n (window as any).FocusOutlook();\r\n else\r\n window.focus();\r\n}\r\n\r\n\r\nexport interface OutlookEvent {\r\n Key: string,\r\n OnTrigger: (val: string) => void \r\n}\r\n\r\nconst OutlookSubscription: OutlookEvent[] = [];\r\n\r\nexport function OutlookListener(input?: string) {\r\n //Expect input = key:value\r\n let key: string;\r\n let value: string;\r\n\r\n // add switch to fire chromie logic if setting is turned on\r\n if (window.chrome?.webview && input ) \r\n {\r\n key = input.substring(0, input.indexOf(':'));\r\n value = input.substring(input.indexOf(':') + 1);\r\n }\r\n else \r\n {\r\n let inputInfo: string = (<HTMLInputElement>document.getElementById(\"outlookOutput\")).value;\r\n key = inputInfo.substring(0, inputInfo.indexOf(':'));\r\n value = inputInfo.substring(inputInfo.indexOf(':') + 1);\r\n (<HTMLInputElement>document.getElementById(\"outlookOutput\")).value = `${key}:`;\r\n }\r\n\r\n\r\n if(value === null || value === undefined){\r\n return;\r\n }\r\n\r\n let copyEvents: OutlookEvent[] = [...OutlookSubscription];\r\n\r\n copyEvents.map((event) => {\r\n if (event.Key === key) {\r\n RemoveOutlookSubscription(event.Key);\r\n event.OnTrigger(value);\r\n }\r\n });\r\n}\r\n\r\nexport function PushOutlookSubscription(event: OutlookEvent) {\r\n RemoveOutlookSubscription(event.Key);\r\n OutlookSubscription.push(event);\r\n}\r\n\r\nexport function RemoveOutlookSubscription(key: string) {\r\n let index: number = OutlookSubscription.findIndex((event) => event.Key === key);\r\n if (index > -1) {\r\n OutlookSubscription.splice(index, 1);\r\n }\r\n}","import * as React from \"react\";\r\n\r\nexport const UnlockLockIcon: React.FC<React.SVGProps<SVGSVGElement>> = (properties) => {\r\n return (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 32 32\"\r\n width={properties.width}\r\n height={properties.height}\r\n style={properties.style}>\r\n <rect\r\n width={properties.width}\r\n height={properties.height}\r\n style={{ fill: \"none\" }} />\r\n <path d=\"M28,32H4V14H22V8a6.27,6.27,0,0,0-.29-1.94A5.6,5.6,0,0,0,21,4.49a5.7,5.7,0,0,0-1.15-1.2,7.07,7.07,0,0,0-1.42-.84,6.64,6.64,0,0,0-4.31-.17,6,6,0,0,0-1.57.77,5.3,5.3,0,0,0-1.2,1.16,6.29,6.29,0,0,0-.83,1.41A6,6,0,0,0,10,8H8A8.42,8.42,0,0,1,8.4,5.42a7.61,7.61,0,0,1,1-2.1A7.37,7.37,0,0,1,11,1.71a8.39,8.39,0,0,1,1.9-1.1A8,8,0,0,1,16,0,8.1,8.1,0,0,1,18.6.38a7.27,7.27,0,0,1,2.11,1A7.36,7.36,0,0,1,22.32,3,8,8,0,0,1,24,8v6h4ZM6,16V30H26V16Z\"\r\n fill={properties.fill || \"#808488\"} />\r\n </svg>\r\n );\r\n}","import { LockIcon } from \"components/Images/LockIcon\";\r\nimport { UnlockLockIcon } from \"components/Images/UnlockIcon\";\r\nimport * as React from \"react\";\r\nimport {\r\n TimeToRead,\r\n TimeToWatch,\r\n SentAggregate,\r\n SentAnonymous,\r\n SentIndividual,\r\n MobileGray66,\r\n DesktopGray66,\r\n add,\r\n Content,\r\n Reload,\r\n TrashRed,\r\n Share,\r\n RecipientImport,\r\n MailingList,\r\n ImageAdd,\r\n Email,\r\n UserAuth,\r\n Sent,\r\n Results,\r\n Tag,\r\n TagEmpty,\r\n Search,\r\n Link,\r\n LinkAdd,\r\n PreviewTestSend,\r\n Save,\r\n ShareBlue,\r\n CheckGreen,\r\n XRed,\r\n SimpleSurvey,\r\n SurveyStar,\r\n SurveyStarGrey,\r\n YesCheckmarkBlueBox,\r\n YesGrey,\r\n NoCheckmarkBlueBox,\r\n NoGrey,\r\n MaybeCheckmarkBlueBox,\r\n MaybeGrey,\r\n One,\r\n Two,\r\n Three,\r\n A,\r\n B,\r\n C,\r\n RequestSupport,\r\n ProxyGray66,\r\n Sending,\r\n Queued,\r\n Enabled,\r\n Disabled,\r\n Error,\r\n Processing,\r\n Expired,\r\n ExpiringSoon\r\n} from \"../../public/images/svg/generated\";\r\n\r\nexport enum PMIconTypes{\r\n None = \"@@PMIconTypes/None\",\r\n New = \"@@PMIconTypes/New\",\r\n Compare = \"@@PMIconTypes/Compare\",\r\n Content = \"@@PMIconTypes/Content\",\r\n Delete = \"@@PMIconTypes/Delete\",\r\n Email = \"@@PMIconTypes/Email\",\r\n MailingList = \"@@PMIconTypes/MailingList\",\r\n Metrics = \"@@PMIconTypees/Metrics\",\r\n ImageAdd = \"@@PMIconTypes/IconAdd\",\r\n Reload = \"@@PMIconTypes/Reload\",\r\n Recipient = \"@@PMIconTypes/Recipient\",\r\n Sharing = \"@@PMIconTypes/Sharing\",\r\n Sent = \"@@PMIconTypes/Sent\",\r\n UserAuth= \"@@PMIconTypes/UserAuth\",\r\n Tags = \"@@PMIconTypes/Tags\",\r\n TagEmpty= \"@@PMIconTypes/TagEmpty\",\r\n Search = \"@@PMIconTypes/Search\",\r\n Link = \"@@PMIconTypes/Link\",\r\n AddLink = \"@@PMIconTypes/AddLink\",\r\n PreviewSend = \"@@PMIconTypes/PreviewSend\",\r\n Save = \"@@PMIconTypes/Save\",\r\n Shared = \"@@PMIconTypes/Shared\",\r\n NotShared = \"@@PMIconTypes/NotShared\",\r\n Check = \"@@PMIconTypes/Check\",\r\n X = \"@@PMIconTypes/X\",\r\n DesktopGray66 = \"@@PMIconTypes/DesktopGray66\",\r\n MobileGray66 = \"@@PMIconTypes/MobileGray66\",\r\n ProxyGray66 = \"@@PMICONTypes/ProxyGray66\",\r\n RequestSupport = \"@@PMIconTypes/RequestSupport\",\r\n SentAggregate = \"@@PMIconTypes/SentAggregate\",\r\n SentAnonymous = \"@@PMIconTypes/SentAnonymous\",\r\n SentIndividual = \"@@PMIconTypes/SentIndividual\",\r\n Stars = \"@@PMIconTypes/Star\",\r\n SurveyStar = \"@@PMIconTypes/SurveyStar\",\r\n SurveyStarGrey = \"@@PMIconTypes/SurveyStarGrey\",\r\n YesCheckmarkBlueBox = \"@@PMIconTypes/YesCheckmarkBlueBox\",\r\n YesGrey = \"@@PMIconTypes/YesGrey\",\r\n NoCheckmarkBlueBox = \"@@PMIconTypes/NoCheckmarkBlueBox\",\r\n NoGrey = \"@@PMIconTypes/NoGrey\",\r\n MaybeCheckmarkBlueBox = \"@@PMIconTypes/MaybeCheckmarkBlueBox\",\r\n MaybeGrey = \"@@PMIconTypes/MaybeGrey\",\r\n One = \"@@PMIconTypes/One\",\r\n Two = \"@@PMIconTypes/Two\",\r\n Three = \"@@PMIconTypes/Three\",\r\n A = \"@@PMIconTypes/A\",\r\n B = \"@@PMIconTypes/B\",\r\n C = \"@@PMIconTypes/C\",\r\n Lock = \"@@PMIconTypes/Lock\",\r\n Unlock = \"@@PMIconTypes/Unlock\",\r\n TimeToRead = \"@@PMIconTypes/TimeToRead\",\r\n TimeToWatch = \"@@PMIconTypes/TimeToWatch\",\r\n Queued = \"@@PMIconTypes/Queued\",\r\n Sending = \"@@PMIconTypes/Sending\",\r\n Enabled = \"@@PMIconTypes/Enabled\",\r\n Disabled = \"@@PMIconTypes/Disabled\",\r\n Error = \"@@PMIconTypes/XError\",\r\n Processing = \"@@PMIconTypes/Processing\",\r\n Expired = \"@@PMIconTypes/Expired\",\r\n ExpiringSoon = \"@@PMIconTypes/ExpiringSoon\",\r\n}\r\n\r\n\r\n\r\nexport function GetPMIcon(iconType: PMIconTypes, props: React.SVGProps<SVGSVGElement>): JSX.Element{\r\n\r\n switch(iconType){\r\n case PMIconTypes.New:\r\n return add(props)\r\n case PMIconTypes.Compare:\r\n return add(props);\r\n case PMIconTypes.Content:\r\n return Content(props);\r\n case PMIconTypes.Delete:\r\n return TrashRed(props)\r\n case PMIconTypes.Email:\r\n return Email(props)\r\n case PMIconTypes.MailingList:\r\n return MailingList(props)\r\n case PMIconTypes.ImageAdd:\r\n return ImageAdd(props)\r\n case PMIconTypes.Reload:\r\n return Reload(props);\r\n case PMIconTypes.Sharing:\r\n return Share(props);\r\n case PMIconTypes.Recipient:\r\n return RecipientImport(props)\r\n case PMIconTypes.UserAuth:\r\n return UserAuth(props)\r\n case PMIconTypes.Sent:\r\n return Sent(props)\r\n case PMIconTypes.Metrics:\r\n return Results(props)\r\n case PMIconTypes.Tags:\r\n return Tag(props);\r\n case PMIconTypes.TagEmpty:\r\n return TagEmpty(props);\r\n case PMIconTypes.Search:\r\n return Search(props)\r\n case PMIconTypes.Link:\r\n return Link(props)\r\n case PMIconTypes.AddLink:\r\n return LinkAdd(props)\r\n case PMIconTypes.PreviewSend:\r\n return PreviewTestSend(props)\r\n case PMIconTypes.Save:\r\n return Save(props);\r\n case PMIconTypes.Shared:\r\n return ShareBlue(props);\r\n case PMIconTypes.NotShared:\r\n return Share(props);\r\n case PMIconTypes.Check:\r\n return CheckGreen(props);\r\n case PMIconTypes.X:\r\n return XRed(props);\r\n case PMIconTypes.DesktopGray66:\r\n return DesktopGray66(props);\r\n case PMIconTypes.MobileGray66:\r\n return MobileGray66(props);\r\n case PMIconTypes.ProxyGray66:\r\n return ProxyGray66(props);\r\n case PMIconTypes.SentAggregate:\r\n return SentAggregate(props);\r\n case PMIconTypes.SentAnonymous:\r\n return SentAnonymous(props);\r\n case PMIconTypes.SentIndividual:\r\n return SentIndividual(props);\r\n case PMIconTypes.Stars:\r\n return SimpleSurvey(props);\r\n case PMIconTypes.SurveyStar:\r\n return SurveyStar(props);\r\n case PMIconTypes.SurveyStarGrey:\r\n return SurveyStarGrey(props);\r\n case PMIconTypes.YesCheckmarkBlueBox:\r\n return YesCheckmarkBlueBox(props);\r\n case PMIconTypes.YesGrey:\r\n return YesGrey(props);\r\n case PMIconTypes.NoCheckmarkBlueBox:\r\n return NoCheckmarkBlueBox(props);\r\n case PMIconTypes.NoGrey:\r\n return NoGrey(props);\r\n case PMIconTypes.MaybeCheckmarkBlueBox:\r\n return MaybeCheckmarkBlueBox(props);\r\n case PMIconTypes.MaybeGrey:\r\n return MaybeGrey(props);\r\n case PMIconTypes.One:\r\n return One(props);\r\n case PMIconTypes.Two:\r\n return Two(props);\r\n case PMIconTypes.Three:\r\n return Three(props);\r\n case PMIconTypes.A:\r\n return A(props);\r\n case PMIconTypes.B:\r\n return B(props);\r\n case PMIconTypes.C:\r\n return C(props);\r\n case PMIconTypes.TimeToRead:\r\n return TimeToRead(props);\r\n case PMIconTypes.RequestSupport:\r\n return RequestSupport(props);\r\n case PMIconTypes.Lock:\r\n return LockIcon(props);\r\n case PMIconTypes.Unlock:\r\n return UnlockLockIcon(props);\r\n case PMIconTypes.TimeToWatch:\r\n return TimeToWatch(props);\r\n case PMIconTypes.Queued:\r\n return Queued(props);\r\n case PMIconTypes.Sending:\r\n return Sending(props);\r\n case PMIconTypes.Enabled:\r\n return Enabled(props);\r\n case PMIconTypes.Disabled:\r\n return Disabled(props);\r\n case PMIconTypes.Error:\r\n return Error(props);\r\n case PMIconTypes.Processing:\r\n return Processing(props)\r\n case PMIconTypes.Expired:\r\n return Expired(props)\r\n case PMIconTypes.ExpiringSoon:\r\n return ExpiringSoon(props)\r\n default:\r\n return <div style={{width:\"20px\", height:\"20px\"}}></div>\r\n }\r\n\r\n}\r\n","\r\nexport interface IPMNav {\r\n location: string,\r\n}\r\n\r\nexport const notify = new class NotifyUser\r\n{\r\n protected _isDirty = false;\r\n protected _isDirtyPanel = false;\r\n protected _onDirtySet: (() => void)[]\r\n protected _dirtyNavigation: { key: string, value:(nav:IPMNav) => void }[]\r\n protected _dirtyPanels: { key: string, value: ( setIsPanelOpen: React.Dispatch<React.SetStateAction<boolean>>) => void }[]\r\n protected _isExport = false;\r\n protected _gridEvents: {key: string, value: () => void}[]\r\n protected _pageEvents: {key: string, value: (message:string) => void}[]\r\n protected _isDoingAction = false;\r\n constructor(){\r\n this._isDirty = false;\r\n this._onDirtySet = [];\r\n this._dirtyNavigation = [];\r\n this._isDirtyPanel = false;\r\n this._dirtyPanels = [];\r\n this._isExport = false;\r\n this._gridEvents = []\r\n this._isDoingAction = false;\r\n this._pageEvents = []\r\n }\r\n\r\n\r\n SetIsDirty = (isDirty:boolean) => \r\n {\r\n this._isDirty = isDirty;\r\n }\r\n\r\n SetPanelDirty = (isDirty:boolean) => {\r\n this._isDirtyPanel = isDirty;\r\n }\r\n\r\n GetDirty = () => this._isDirty\r\n\r\n GetDirtyPanel = () => this._isDirtyPanel;\r\n\r\n SubscribeNavigationEvent = (key:string, event: (navOk:IPMNav) =>void) => {\r\n this.RemoveDirtyNavEvent(key);\r\n this._dirtyNavigation.push({key: key, value: event});\r\n }\r\n\r\n SubscribePanelEvents = (key: string, event: (setIsPanelOpen: React.Dispatch<React.SetStateAction<boolean>>) => void) => {\r\n this.RemoveDirtyPanelEvent(key);\r\n this._dirtyPanels.push({key: key, value: event})\r\n }\r\n\r\n FireNavigationEvents = (navOk:IPMNav) => {\r\n this._dirtyNavigation.map(de => de.value(navOk));\r\n }\r\n\r\n FirePanelEvents = (setIsPanelOpen:React.Dispatch<React.SetStateAction<boolean>>) => {\r\n this._dirtyPanels.map(dp => dp.value(setIsPanelOpen))\r\n }\r\n\r\n RemoveDirtyNavEvent = (key:string) => {\r\n if(this._dirtyNavigation.findIndex(de => de.key === key) != -1)\r\n this._dirtyNavigation.splice(this._dirtyNavigation.findIndex(de => de.key === key), 1);\r\n }\r\n\r\n RemoveDirtyPanelEvent = (key: string) => {\r\n if(this._dirtyPanels.findIndex(de => de.key === key) != -1)\r\n this._dirtyPanels.splice(this._dirtyNavigation.findIndex(de => de.key === key), 1);\r\n }\r\n\r\n SetIsExporting = (exporting: boolean) => \r\n {\r\n this._isExport = exporting;\r\n }\r\n\r\n SubscribeGridEvents = (_key: string, _value: () => void) => {\r\n this.RemoveGridEvents(_key);\r\n this._gridEvents.push({key: _key, value: _value});\r\n }\r\n\r\n SubscribeEventWithMessage = (_key: string, _value: (message:string) => void) => {\r\n this.RemoveGridEvents(_key);\r\n this._pageEvents.push({key: _key, value: _value})\r\n }\r\n\r\n ExecuteEventWithMessage = (_key: string, message:string) => {\r\n if(this._pageEvents.findIndex(k => k.key === _key) != -1)\r\n this._pageEvents.find(ge => ge.key === _key).value(message);\r\n }\r\n\r\n RemoveGridEvents = (key:string) => {\r\n if(this._gridEvents.findIndex(k => k.key === key) != -1)\r\n this._gridEvents.splice(this._gridEvents.findIndex(de => de.key === key), 1);\r\n }\r\n\r\n FireGridEvent = (key:string) => {\r\n if(this._gridEvents.findIndex(k => k.key === key) != -1)\r\n this._gridEvents.find(ge => ge.key === key).value();\r\n } \r\n\r\n GetExporting = () => this._isExport;\r\n\r\n IsDoingAction = () => this._isDoingAction;\r\n\r\n SetIsDoingAction = (actioning: boolean) => this._isDoingAction = actioning;\r\n}","import * as React from 'react';\r\nimport { ISelection } from '@fluentui/react';\r\nimport { IGridActions } from 'Definitions/GridActionDefinitions';\r\nimport { PMEntity } from 'Definitions/PMEntity';\r\nimport { BulkRelationalActions } from 'components/Panels/PMBulkRelationalPanel';\r\nimport { PMConfirmationDialog, PMOkDialog, PMYesNoDialog } from 'components/SimpleComponents/PMDialog';\r\nimport { notify } from './Nav';\r\nimport { WarningFactory } from './WarningFactory';\r\nimport { WarningState, WarningAction, PMNotificationType } from './WarningReducer';\r\n\r\nexport function ManageRelPanel(\r\n\taction: BulkRelationalActions,\r\n\tsetRelAction: React.Dispatch<React.SetStateAction<BulkRelationalActions>>,\r\n\tsetPanelOpen: React.Dispatch<React.SetStateAction<boolean>>\r\n) {\r\n\tsetRelAction(action);\r\n\tsetPanelOpen(true);\r\n}\r\n\r\nexport function okDeleteEntity(selection: ISelection, actions: IGridActions<PMEntity>) {\r\n\tlet IDList = selection\r\n\t\t.getSelection()\r\n\t\t.filter(function (entity) {\r\n\t\t\treturn entity != null;\r\n\t\t})\r\n\t\t.map((entity: any) => entity['ID']);\r\n\tif (IDList.length > 1) {\r\n\t\tactions.bulkDelete(IDList);\r\n\t\tselection.setAllSelected(false);\r\n\t} else {\r\n\t\tactions.delete(IDList[0]);\r\n\t}\r\n}\r\n\r\nexport function canDoAction(selection: ISelection, onFalseWarning: WarningFactory) {\r\n\tif (selection.getSelection().length === 0) {\r\n\t\tonFalseWarning.Show();\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nexport const emptyAction = () => { };\r\n\r\nexport function ShowWarning(\r\n\tsetShowWarning: React.Dispatch<React.SetStateAction<boolean>>,\r\n\tsetWarningText?: React.Dispatch<React.SetStateAction<string>>,\r\n\twarningText?: string\r\n) {\r\n\tif (setShowWarning) {\r\n\t\tsetShowWarning(true);\r\n\t\tif (warningText && setWarningText) {\r\n\t\t\tsetWarningText(warningText);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport interface IPMWarningDisplay {\r\n\twarningState: WarningState;\r\n\tdispatch: React.Dispatch<WarningAction>;\r\n\tokText?: string;\r\n\tcancelText?: string;\r\n}\r\n\r\nexport const WarningDisplay: React.FC<IPMWarningDisplay> = (props) => {\r\n\tswitch (props.warningState.dialogType) {\r\n\t\tcase PMNotificationType.Ok: {\r\n\t\t\treturn (\r\n\t\t\t\t<PMOkDialog\r\n\t\t\t\t\thidden={false}\r\n\t\t\t\t\ttitle={props.warningState.warningTitle}\r\n\t\t\t\t\ttext={props.warningState.warningText}\r\n\t\t\t\t\tonDismiss={() => props.dispatch({ type: 'cancel' })}\r\n\t\t\t\t\tonButtonClick={() => props.dispatch({ type: 'ok' })}\r\n\t\t\t\t\tbuttonText={props.warningState.okText}\r\n\t\t\t\t\tmodalProps={{ isBlocking: true }}\r\n\t\t\t\t>\r\n\t\t\t\t\t{props.warningState?.onRender}\r\n\t\t\t\t</PMOkDialog>\r\n\t\t\t);\r\n\t\t}\r\n\t\tcase PMNotificationType.OkCancel: {\r\n\t\t\treturn (\r\n\t\t\t\t<PMConfirmationDialog\r\n\t\t\t\t\thidden={false}\r\n\t\t\t\t\ttitle={props.warningState.warningTitle}\r\n\t\t\t\t\ttext={props.warningState.warningText}\r\n\t\t\t\t\tonButtonClick={() => props.dispatch({ type: 'ok' })}\r\n\t\t\t\t\tcancelClick={() => props.dispatch({ type: 'cancel' })}\r\n\t\t\t\t\tonDismiss={() => props.dispatch({ type: 'cancel' })}\r\n\t\t\t\t\tbuttonText={props.warningState.okText}\r\n\t\t\t\t\tcancelText={props.warningState.cancelText}\r\n\t\t\t\t\tmodalProps={{ isBlocking: true }}\r\n\t\t\t\t>\r\n\t\t\t\t\t{props.warningState?.onRender}\r\n\t\t\t\t</PMConfirmationDialog>\r\n\t\t\t);\r\n\t\t}\r\n\t\tcase PMNotificationType.YesNo: {\r\n\t\t\treturn (\r\n\t\t\t\t<PMYesNoDialog\r\n\t\t\t\t\thidden={false}\r\n\t\t\t\t\ttitle={props.warningState.warningTitle}\r\n\t\t\t\t\ttext={props.warningState.warningText}\r\n\t\t\t\t\tonButtonClick={() => props.dispatch({ type: 'yes' })}\r\n\t\t\t\t\tcancelClick={() => props.dispatch({ type: 'no' })}\r\n\t\t\t\t\tonDismiss={() => props.dispatch({ type: 'no' })}\r\n\t\t\t\t\tbuttonText={props.warningState.okText}\r\n\t\t\t\t\tcancelText={props.warningState.cancelText}\r\n\t\t\t\t\tmodalProps={{ isBlocking: true }}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{props.warningState?.onRender}\r\n\t\t\t\t</PMYesNoDialog>\r\n\t\t\t)\r\n\t\t}\r\n\t\tdefault:\r\n\t\t\treturn <React.Fragment></React.Fragment>;\r\n\t}\r\n};\r\n\r\nexport function MarkPageAsDirty(setSaved: React.Dispatch<React.SetStateAction<boolean>>) {\r\n\tnotify.SetIsDirty(true);\r\n\tsetSaved(false);\r\n}\r\n\r\nexport function MarkPanelAsDirty(setSaved: React.Dispatch<React.SetStateAction<boolean>>) {\r\n\tnotify.SetPanelDirty(true);\r\n\tsetSaved(false);\r\n}\r\n\r\nexport const initialWarningState = {\r\n\tshowWarning: false,\r\n\tdialogType: PMNotificationType.Ok,\r\n\twarningTitle: 'Invalid Selection',\r\n\twarningText: 'Please select one or more rows for this action.',\r\n\tonOkAction: emptyAction,\r\n\tonCancelAction: emptyAction,\r\n};\r\n","import { Reducer } from 'react';\r\n\r\nexport enum PMNotificationType {\r\n Ok = '@@PMNotificationType/Ok',\r\n OkCancel = '@@PMNotificationType/OkCancel',\r\n YesNo = '@@PMNotificationType/YesNo'\r\n}\r\n\r\nexport type WarningState = {\r\n showWarning: boolean;\r\n warningText: string;\r\n warningTitle: string;\r\n dialogType: PMNotificationType;\r\n onOkAction: () => void;\r\n onCancelAction: () => void;\r\n okText?: string;\r\n cancelText?: string;\r\n onRender?: React.ReactNode;\r\n};\r\n\r\nexport type WarningAction =\r\n | { type: 'setState'; payload: Partial<WarningState> }\r\n | { type: 'show' }\r\n | { type: 'hide' }\r\n | { type: 'ok' }\r\n | { type: 'cancel' }\r\n | { type: 'yes' }\r\n | { type: 'no' }\r\n | { type: 'setText'; payload: string }\r\n | { type: 'setTitle'; payload: string }\r\n | { type: 'setDialogType'; payload: PMNotificationType }\r\n | { type: 'setOkAction'; payload: () => void }\r\n | { type: 'setCancelAction'; payload: () => void }\r\n | { type: 'setOkText'; payload: string }\r\n | { type: 'setCancelText'; payload: string }\r\n | { type: 'setOnRender'; payload: React.ReactNode };\r\n\r\nexport const warningReducer: Reducer<WarningState, WarningAction> = (previousState, action) => {\r\n switch (action.type) {\r\n case 'setState': {\r\n return {\r\n ...previousState,\r\n ...action.payload\r\n };\r\n }\r\n\r\n case 'setTitle': {\r\n return {\r\n ...previousState,\r\n warningTitle: action.payload,\r\n };\r\n }\r\n\r\n case 'setDialogType': {\r\n return {\r\n ...previousState,\r\n dialogType: action.payload,\r\n };\r\n }\r\n\r\n case 'setText': {\r\n return {\r\n ...previousState,\r\n warningText: action.payload,\r\n };\r\n }\r\n\r\n case 'setOkText': {\r\n return {\r\n ...previousState,\r\n okText: action.payload,\r\n };\r\n }\r\n\r\n case 'setCancelText': {\r\n return {\r\n ...previousState,\r\n cancelText: action.payload,\r\n };\r\n }\r\n\r\n case 'setOkAction': {\r\n return {\r\n ...previousState,\r\n onOkAction: action.payload,\r\n };\r\n }\r\n\r\n case 'setCancelAction': {\r\n return {\r\n ...previousState,\r\n onCancelAction: action.payload,\r\n };\r\n }\r\n\r\n case 'show': {\r\n return {\r\n ...previousState,\r\n showWarning: true,\r\n };\r\n }\r\n\r\n case 'hide': {\r\n return {\r\n ...previousState,\r\n showWarning: false,\r\n };\r\n }\r\n\r\n case 'ok': {\r\n previousState.onOkAction();\r\n return {\r\n ...previousState,\r\n showWarning: false,\r\n };\r\n }\r\n\r\n case 'cancel': {\r\n previousState.onCancelAction();\r\n return {\r\n ...previousState,\r\n showWarning: false,\r\n };\r\n }\r\n\r\n case 'yes': {\r\n previousState.onOkAction();\r\n return {\r\n ...previousState,\r\n showWarning: false,\r\n };\r\n }\r\n\r\n case 'no': {\r\n previousState.onCancelAction();\r\n return {\r\n ...previousState,\r\n showWarning: false,\r\n };\r\n }\r\n\r\n case 'setOnRender': {\r\n return {\r\n ...previousState,\r\n onRender: action.payload,\r\n };\r\n }\r\n\r\n default:\r\n return previousState;\r\n }\r\n};\r\n","import { escapeRegExp } from 'lodash';\r\nimport { v4 as uuidv4} from 'uuid'\r\n\r\nexport function uuid4() {\r\n /* function hex(s: any, b: any) {\r\n return s +\r\n (b >>> 4).toString(16) + // high nibble\r\n (b & 0b1111).toString(16); // low nibble\r\n }\r\n //var crypto = window.crypto || window.msCrypto;\r\n\r\n let r = window.crypto.getRandomValues(new Uint8Array(16));\r\n\r\n r[6] = r[6] >>> 4 | 0b01000000; // Set type 4: 0100\r\n r[8] = r[8] >>> 3 | 0b10000000; // Set variant: 100\r\n\r\n return r.slice(0, 4).reduce(hex, '') +\r\n r.slice(4, 6).reduce(hex, '-') +\r\n r.slice(6, 8).reduce(hex, '-') +\r\n r.slice(8, 10).reduce(hex, '-') +\r\n r.slice(10, 16).reduce(hex, '-'); */\r\n return uuidv4()\r\n }\r\n\r\n export const uuidToBase64 = (uuid : string) => {\r\n let str = btoa(uuid);\r\n return str.replace(new RegExp(escapeRegExp('+'), 'g'), '-')\r\n .replace(new RegExp(escapeRegExp('/'), 'g'), '_')\r\n .substring(0,22)\r\n }","import { default as moment } from 'moment';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { MonthlyEngagementMetric, MonthlyEngagementMetricSeries } from '../Definitions/Generated/PoliteMailEntities/Models/MonthlyEngagementMetric';\r\nimport { HourOfDayRead } from '../Definitions/Generated/PoliteMailEntities/Models/HourOfDayRead';\r\nimport { HourOfDayMetrics } from '../Definitions/Generated/PoliteMailEntities/Models/HourOfDayMetrics';\r\n\r\nexport function getEngagedReadTime(timeToRead: number) {\r\n if (timeToRead < moment.duration(20, \"seconds\").asMilliseconds())\r\n return moment.duration(10.0, \"seconds\").asMilliseconds();\r\n else {\r\n let timeToReadSec = moment.duration(timeToRead, \"milliseconds\").asMilliseconds();\r\n return timeToReadSec * 0.5\r\n }\r\n}\r\n\r\n\r\nexport function getSkimmedTime(timeToRead: number) {\r\n if (timeToRead < moment.duration(20, \"seconds\").asMilliseconds())\r\n return moment.duration(7.0, \"seconds\").asMilliseconds();\r\n else {\r\n\r\n let timeToReadtoSec = moment.duration(timeToRead, \"milliseconds\").asMilliseconds();\r\n return timeToReadtoSec * 0.3\r\n }\r\n}\r\n\r\nexport function getIgnoredTime() {\r\n return 3000.0\r\n}\r\n\r\nexport function getDidntOpenTime() {\r\n return 0.001;\r\n}\r\n\r\nexport function hexToRGB(hex: string, alpha: number) {\r\n const r = parseInt(hex.slice(1, 3), 16);\r\n const g = parseInt(hex.slice(3, 5), 16);\r\n const b = parseInt(hex.slice(5, 7), 16);\r\n\r\n if (alpha) {\r\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\r\n }\r\n\r\n return `rgb(${r}, ${g}, ${b})`;\r\n}\r\nexport function formatDuration(milliseconds: number) {\r\n const durationMoment = moment.utc(moment.duration(milliseconds).asMilliseconds());\r\n const rounded = durationMoment.add(500, 'milliseconds').startOf('seconds');\r\n return rounded.format(\"HH:mm:ss\");\r\n}\r\n\r\nexport function formatMinutesDuration(minutes: number) {\r\n return moment.utc(moment.duration(minutes).asMinutes()).format(\"mm:ss\")\r\n}\r\n\r\nexport function formatFullDuration(milliseconds: number) {\r\n return moment.utc(moment.duration(milliseconds).asMilliseconds()).format(\"HH:mm:ss.SSS\")\r\n}\r\n\r\nexport enum SendMode {\r\n IndividualTracking = 1,\r\n AnonymousTracking,\r\n AggregateTracking,\r\n}\r\n\r\nexport const SendModeToString = (sendmode: SendMode): string => {\r\n switch (sendmode) {\r\n case SendMode.IndividualTracking:\r\n return \"Individual Measurement\";\r\n case SendMode.AnonymousTracking:\r\n return \"Anonymous Measurement\";\r\n case SendMode.AggregateTracking:\r\n return \"Aggregate Measurement\";\r\n }\r\n}\r\n\r\nexport enum SimpleQuestionTypes {\r\n FiveStar,\r\n Smiles,\r\n Thumbs,\r\n ThumbsOk,\r\n YesNo,\r\n YesNoMaybe,\r\n YesNoBlock,\r\n YesNoMaybeBlock,\r\n ABC,\r\n OneTwoThree,\r\n Views,\r\n Clicks,\r\n None,\r\n OpenVisibility,\r\n SocialAdvocacy,\r\n MultiAnswers,\r\n}\r\n\r\nfunction getFactors(n: number) {\r\n let nRounded = Math.round(n);\r\n return Array\r\n .from(Array(nRounded + 1), (_, i) => i)\r\n .filter(i => nRounded % i === 0)\r\n}\r\n\r\nexport function imageAreaString(area: number) {\r\n const factors = getFactors(area);\r\n var dim1 = factors[Math.floor(factors.length / 2)];\r\n var dim2 = dim1 > 0 ? area / dim1 : 0;\r\n\r\n if (isNullOrUndefined(dim1) || isNullOrUndefined(dim2))\r\n return \"\";\r\n\r\n return `Total image dimensions - ${Math.round(dim1).toLocaleString()} x ${Math.round(dim2).toLocaleString()}px`;\r\n}\r\n\r\nexport function convertReachObjectsToSeries(metrics: MonthlyEngagementMetric[]): MonthlyEngagementMetricSeries {\r\n let returnObj: MonthlyEngagementMetricSeries = {\r\n Date: [],\r\n OpenCount: [],\r\n IgnoreCount: [],\r\n SentCount: [],\r\n MinutesSent: [],\r\n MinutesRead: [],\r\n EngagedReadCount: [],\r\n ClickCount: [],\r\n DesktopClickCount: [],\r\n MobileClickCount: [],\r\n DesktopOpenCount: [],\r\n MobileOpenCount: [],\r\n UserProxyOpenCount: [],\r\n SkimmedCount: [],\r\n LeftOpenCount: [],\r\n ReadCount: [],\r\n UndeliverableCount: []\r\n }\r\n\r\n for (var metric of metrics) {\r\n returnObj.Date.push(metric.Date);\r\n returnObj.OpenCount.push(metric.OpenCount);\r\n returnObj.IgnoreCount.push(metric.IgnoreCount);\r\n returnObj.SentCount.push(metric.SentCount);\r\n returnObj.MinutesRead.push(metric.MinutesRead);\r\n returnObj.MinutesSent.push(metric.MinutesSent);\r\n returnObj.EngagedReadCount.push(metric.EngagedReadCount);\r\n returnObj.ClickCount.push(metric.ClickCount);\r\n returnObj.DesktopClickCount.push(metric.DesktopClickCount);\r\n returnObj.MobileClickCount.push(metric.MobileClickCount);\r\n returnObj.DesktopOpenCount.push(metric.DesktopOpenCount);\r\n returnObj.MobileOpenCount.push(metric.MobileOpenCount);\r\n returnObj.UserProxyOpenCount.push(metric.UserProxyOpenCount);\r\n returnObj.ReadCount.push(metric.ReadCount);\r\n returnObj.LeftOpenCount.push(metric.LeftOpenCount);\r\n returnObj.SkimmedCount.push(metric.SkimmedCount);\r\n returnObj.UndeliverableCount.push(metric.UndeliverableCount);\r\n }\r\n return returnObj\r\n}\r\n\r\nexport function addDummyHourOfDay(hourOfDayReadsResult: HourOfDayRead[]): HourOfDayMetrics[] {\r\n var withValue = false;\r\n var minHour = 0;\r\n var maxHour = 0;\r\n var minUTCHour = 0;\r\n let hourOfDayReadsFinal: HourOfDayMetrics[] = [];\r\n var currentDate;\r\n \r\n hourOfDayReadsResult.forEach((item: HourOfDayRead) => {\r\n let date = new Date(item.Hour);\r\n let localHour = date.getHours();\r\n let utcHour = date.getUTCHours();\r\n\r\n withValue = true;\r\n if (minHour == 0) {\r\n minHour = localHour;\r\n maxHour = localHour;\r\n minUTCHour = utcHour;\r\n return;\r\n }\r\n\r\n if (localHour > maxHour) {\r\n maxHour = localHour;\r\n }\r\n\r\n if (localHour < minHour) {\r\n minHour = localHour;\r\n minUTCHour = utcHour;\r\n }\r\n\r\n });\r\n\r\n if (withValue) {\r\n for (var i = minHour; i <= maxHour; i++) {\r\n let saved: boolean = false;\r\n\r\n hourOfDayReadsResult.forEach((item: HourOfDayRead) => {\r\n let date = new Date(item.Hour);\r\n let localHour = date.getHours();\r\n let utcHour = date.getUTCHours();\r\n\r\n currentDate = date.getUTCFullYear() + \"-\" + (date.getUTCMonth() + 1).toLocaleString(undefined, { minimumIntegerDigits: 2 }) + \"-\" + date.getUTCDate().toLocaleString(undefined, { minimumIntegerDigits: 2 }) + \"T\";\r\n\r\n if (localHour == i) {\r\n hourOfDayReadsFinal.push(\r\n {\r\n ID: item.ID,\r\n Hour: currentDate + utcHour.toString().padStart(2, '0') + \":00:00Z\",\r\n TimeRead: item.TimeRead\r\n } as HourOfDayMetrics\r\n )\r\n saved = true;\r\n }\r\n });\r\n\r\n if (!saved) {\r\n hourOfDayReadsFinal.push(\r\n {\r\n ID: i,\r\n Hour: currentDate + minUTCHour.toString().padStart(2, '0') + \":00:00Z\",\r\n TimeRead: 0\r\n } as HourOfDayMetrics\r\n )\r\n }\r\n\r\n\r\n minUTCHour += 1;\r\n if (minUTCHour == 24)\r\n minUTCHour = 0;\r\n }\r\n }\r\n\r\n return hourOfDayReadsFinal;\r\n}\r\n\r\nexport const getGreaterCount = (count1: number, count2: number) => count1 > count2 ? count1 : count2;\r\n","import { IDropdownOption } from \"@fluentui/react\";\r\nimport moment from \"moment\";\r\n\r\nexport const MillisecondsToSeconds = (milliseconds: number): number => { return milliseconds / 1000 };\r\nexport const MillesecondsToMinutes = (milliseconds: number): number => {\r\n return SecondsToMinutes(\r\n MillisecondsToSeconds(milliseconds)\r\n );\r\n};\r\nexport const MillesecondsToHours = (milliseconds: number): number => {\r\n return SecondsToHours(\r\n MillisecondsToSeconds(milliseconds)\r\n );\r\n};\r\nexport const MillesecondsToDays = (milliseconds: number): number => {\r\n return SecondsToDays(\r\n MillisecondsToSeconds(milliseconds)\r\n );\r\n};\r\n\r\nexport const SecondsToMilliseconds = (seconds: number): number => { return seconds * 1000 };\r\nexport const SecondsToMinutes = (seconds: number): number => { return seconds / 60 };\r\nexport const SecondsToHours = (seconds: number): number => {\r\n return MinutesToHours(\r\n SecondsToMinutes(seconds)\r\n );\r\n};\r\nexport const SecondsToDays = (seconds: number): number => {\r\n return MinutesToDays(\r\n SecondsToMinutes(seconds)\r\n );\r\n};\r\n\r\nexport const MinutesToMilliseconds = (minutes: number): number => {\r\n return SecondsToMilliseconds(\r\n MinutesToSeconds(minutes)\r\n )\r\n};\r\nexport const MinutesToSeconds = (minutes: number): number => { return minutes * 60 };\r\nexport const MinutesToHours = (minutes: number): number => { return minutes / 60 };\r\nexport const MinutesToDays = (minutes: number): number => {\r\n return HoursToDays(\r\n MinutesToHours(minutes)\r\n );\r\n};\r\n\r\n\r\nexport const HoursToMilliseconds = (hours: number): number => {\r\n return MinutesToMilliseconds(\r\n HoursToMinutes(hours)\r\n );\r\n};\r\nexport const HoursToSeconds = (hours: number): number => {\r\n return MinutesToSeconds(\r\n HoursToMinutes(hours)\r\n );\r\n};\r\nexport const HoursToMinutes = (hours: number): number => { return hours * 60 };\r\nexport const HoursToDays = (hours: number): number => { return hours / 24 };\r\n\r\nexport const DaysToHours = (days: number): number => { return days * 24 };\r\nexport const DaysToMinutes = (days: number): number => {\r\n return HoursToMinutes(\r\n DaysToHours(days)\r\n )\r\n};\r\nexport const DaysToSeconds = (days: number): number => {\r\n return HoursToSeconds(\r\n DaysToHours(days)\r\n )\r\n};\r\nexport const DaysToMilliseconds = (days: number): number => {\r\n return HoursToMilliseconds(\r\n DaysToHours(days)\r\n )\r\n};\r\n\r\n\r\nexport interface ITimeCell {\r\n PreviousTime?: ITimeCell,\r\n ThisTime: PMTime,\r\n NextTime?: ITimeCell\r\n}\r\n\r\nexport enum TimeType {\r\n Day,\r\n Hour,\r\n Minute,\r\n Second\r\n}\r\n\r\nexport const GetHoursInDay = (): ITimeCell[] => {\r\n const Hours: ITimeCell[] = [];\r\n for (let i: number = 0; i < 24; i++) {\r\n Hours.push({\r\n ThisTime: new PMTime(TimeType.Hour, i)\r\n })\r\n }\r\n for (let i: number = 1; i < 24; i++) {\r\n Hours[i].PreviousTime = Hours[i - 1];\r\n }\r\n for (let i: number = 0; i < 23; i++) {\r\n Hours[i].NextTime = Hours[i + 1];\r\n }\r\n return Hours;\r\n}\r\n\r\n\r\nexport class PMTimeSpan {\r\n public Unit: TimeType;\r\n public Duration: number;\r\n\r\n constructor(unit: TimeType, duration: number) {\r\n this.Unit = unit;\r\n this.Duration = duration;\r\n }\r\n}\r\n\r\nexport class PMTime {\r\n public Unit: TimeType;\r\n public Value: number;\r\n\r\n constructor(unit: TimeType, value: number) {\r\n this.Unit = unit;\r\n this.Value = value;\r\n }\r\n\r\n protected ConvertToTicks = (): number => {\r\n switch (this.Unit) {\r\n case TimeType.Day:\r\n return DaysToMilliseconds(this.Value);\r\n case TimeType.Hour:\r\n return HoursToMilliseconds(this.Value);\r\n case TimeType.Minute:\r\n return MinutesToMilliseconds(this.Value);\r\n case TimeType.Second:\r\n return SecondsToMilliseconds(this.Value)\r\n default:\r\n return -1;\r\n }\r\n }\r\n\r\n protected OutputAs = (unit?: TimeType): string => {\r\n let val: number = 0;\r\n switch (unit) {\r\n case TimeType.Day:\r\n switch (this.Unit) {\r\n case TimeType.Day:\r\n val = this.Value;\r\n case TimeType.Hour:\r\n val = HoursToDays(this.Value);\r\n case TimeType.Minute:\r\n val = MinutesToDays(this.Value);\r\n case TimeType.Second:\r\n val = SecondsToDays(this.Value);\r\n default:\r\n val = MillesecondsToDays(this.Value);\r\n }\r\n return val + \" Days\"\r\n case TimeType.Hour:\r\n switch (this.Unit) {\r\n case TimeType.Day:\r\n val = DaysToHours(this.Value)\r\n case TimeType.Hour:\r\n val = this.Value;\r\n case TimeType.Minute:\r\n val = MinutesToHours(this.Value);\r\n case TimeType.Second:\r\n val = SecondsToHours(this.Value);\r\n default:\r\n val = MillesecondsToHours(this.Value);\r\n }\r\n return val + \" Hours\"\r\n case TimeType.Minute:\r\n switch (this.Unit) {\r\n case TimeType.Day:\r\n val = DaysToMinutes(this.Value);\r\n case TimeType.Hour:\r\n val = HoursToMinutes(this.Value);\r\n case TimeType.Minute:\r\n val = this.Value;\r\n case TimeType.Second:\r\n val = SecondsToMinutes(this.Value);\r\n default:\r\n val = MillesecondsToMinutes(this.Value);\r\n }\r\n return val + \" Minutes\"\r\n case TimeType.Second:\r\n switch (this.Unit) {\r\n case TimeType.Day:\r\n val = DaysToSeconds(this.Value);\r\n case TimeType.Hour:\r\n val = HoursToSeconds(this.Value);\r\n case TimeType.Minute:\r\n val = MinutesToSeconds(this.Value);\r\n case TimeType.Second:\r\n val = this.Value;\r\n default:\r\n val = MillisecondsToSeconds(this.Value);\r\n }\r\n return val + \" Seconds\"\r\n default:\r\n switch (this.Unit) {\r\n case TimeType.Day:\r\n val = DaysToMilliseconds(this.Value);\r\n case TimeType.Hour:\r\n val = HoursToMilliseconds(this.Value);\r\n case TimeType.Minute:\r\n val = MinutesToMilliseconds(this.Value);\r\n case TimeType.Second:\r\n val = SecondsToMilliseconds(this.Value);\r\n default:\r\n val = this.Value;\r\n }\r\n return val + \" Milliseconds\"\r\n }\r\n }\r\n}\r\n\r\nexport const GetTimes = (): IDropdownOption[] => {\r\n let times: IDropdownOption[] = [];\r\n times.push({ key: \"0000\", text: \"12:00 AM\" });\r\n times.push({ key: \"0030\", text: \"12:30 AM\" });\r\n times.push({ key: \"0100\", text: \"1:00 AM\" });\r\n times.push({ key: \"0130\", text: \"1:30 AM\" });\r\n times.push({ key: \"0200\", text: \"2:00 AM\" });\r\n times.push({ key: \"0230\", text: \"2:30 AM\" });\r\n times.push({ key: \"0300\", text: \"3:00 AM\" });\r\n times.push({ key: \"0330\", text: \"3:30 AM\" });\r\n times.push({ key: \"0400\", text: \"4:00 AM\" });\r\n times.push({ key: \"0430\", text: \"4:30 AM\" });\r\n times.push({ key: \"0500\", text: \"5:00 AM\" });\r\n times.push({ key: \"0530\", text: \"5:30 AM\" });\r\n times.push({ key: \"0600\", text: \"6:00 AM\" });\r\n times.push({ key: \"0630\", text: \"6:30 AM\" });\r\n times.push({ key: \"0700\", text: \"7:00 AM\" });\r\n times.push({ key: \"0730\", text: \"7:30 AM\" });\r\n times.push({ key: \"0800\", text: \"8:00 AM\" });\r\n times.push({ key: \"0830\", text: \"8:30 AM\" });\r\n times.push({ key: \"0900\", text: \"9:00 AM\" });\r\n times.push({ key: \"0930\", text: \"9:30 AM\" });\r\n times.push({ key: \"1000\", text: \"10:00 AM\" });\r\n times.push({ key: \"1030\", text: \"10:30 AM\" });\r\n times.push({ key: \"1100\", text: \"11:00 AM\" });\r\n times.push({ key: \"1130\", text: \"11:30 AM\" });\r\n times.push({ key: \"1200\", text: \"12:00 PM\" });\r\n times.push({ key: \"1230\", text: \"12:30 PM\" });\r\n times.push({ key: \"1300\", text: \"1:00 PM\" });\r\n times.push({ key: \"1330\", text: \"1:30 PM\" });\r\n times.push({ key: \"1400\", text: \"2:00 PM\" });\r\n times.push({ key: \"1430\", text: \"2:30 PM\" });\r\n times.push({ key: \"1500\", text: \"3:00 PM\" });\r\n times.push({ key: \"1530\", text: \"3:30 PM\" });\r\n times.push({ key: \"1600\", text: \"4:00 PM\" });\r\n times.push({ key: \"1630\", text: \"4:30 PM\" });\r\n times.push({ key: \"1700\", text: \"5:00 PM\" });\r\n times.push({ key: \"1730\", text: \"5:30 PM\" });\r\n times.push({ key: \"1800\", text: \"6:00 PM\" });\r\n times.push({ key: \"1830\", text: \"6:30 PM\" });\r\n times.push({ key: \"1900\", text: \"7:00 PM\" });\r\n times.push({ key: \"1930\", text: \"7:30 PM\" });\r\n times.push({ key: \"2000\", text: \"8:00 PM\" });\r\n times.push({ key: \"2030\", text: \"8:30 PM\" });\r\n times.push({ key: \"2100\", text: \"9:00 PM\" });\r\n times.push({ key: \"2130\", text: \"9:30 PM\" });\r\n times.push({ key: \"2200\", text: \"10:00 PM\" });\r\n times.push({ key: \"2230\", text: \"10:30 PM\" });\r\n times.push({ key: \"2300\", text: \"11:00 PM\" });\r\n times.push({ key: \"2330\", text: \"11:30 PM\" });\r\n return times;\r\n}\r\n\r\nexport const MinimumYear: number = 1900;\r\n\r\nexport const FormatTimeToRead = (ttr: number) => {\r\n let time = moment.duration(ttr, 'ms')\r\n let formatArg = 'dd:hh:mm:ss'\r\n\r\n if (time.asSeconds() < 1) {\r\n formatArg = 's[.]SS'\r\n return moment(time.asMilliseconds()).format(formatArg) + ' seconds to read.'\r\n }\r\n else if (time.asSeconds() >= 1 && time.asSeconds() <=9) {\r\n formatArg = \"s[.]S\";\r\n return moment(time.asMilliseconds()).format(formatArg) + \" seconds to read.\";\r\n }\r\n else if (time.asSeconds() < 60) {\r\n formatArg = 'ss[.]S'\r\n return moment(time.asMilliseconds()).format(formatArg) + ' seconds to read.'\r\n } else if (time.asMinutes() < 60) {\r\n formatArg = 'mm[:]ss'\r\n return moment(time.asMilliseconds()).format(formatArg) + ' minutes to read'\r\n } else if (time.asHours() < 24) {\r\n formatArg = 'hh:mm:ss'\r\n return moment(time.asMilliseconds()).format(formatArg) + ' hours to read.'\r\n } \r\n\r\n return moment(time.asMilliseconds()).format(formatArg) + ' days to read.'\r\n}\r\n\r\nexport const FormatMinutesYAxsisVega = (seconds: string): string => {\r\n //if(readTime has data with minutes) {\r\n // display minutes on Y axis\r\n //} else {\r\n // display seconds on Y axis\r\n //}\r\n return \"(format(\" + seconds + \"/60,',.2f') - format(\" + seconds + \"/60,',.2f')%1) + 'm ' + format(((\" + seconds + \"/60)%1)*60,',.0f') + 's'\";\r\n};\r\n\r\nexport const FormatMinutesVega = (seconds: string): string => {\r\n //if(minutes has extra seconds) {\r\n // display minutes with seconds\r\n //} else {\r\n // display minutes only\r\n //}\r\n return \"format(tooltip.TimeRead / 60, ',.2f') % 1 > 0 ? \" +\r\n \"format((\" + seconds + \" / 60) - ((\" + seconds + \" / 60) % 1), ',.0f') + ' minutes ' +\" +\r\n \"(\" +\r\n \"format(((\" + seconds + \" / 60) % 1) * 60, ',.2f') % 1 == 0 ? \" +\r\n \"format(((\" + seconds + \" / 60) % 1) * 60, ',.0f' \" +\r\n \") : \" +\r\n \"format(((\" + seconds + \" / 60) % 1) * 60, ',.2f') \" +\r\n \") + ' seconds' : \" +\r\n \"format((\" + seconds + \" / 60) - ((\" + seconds + \" / 60) % 1), ',.0f') + ' minutes ' \"\r\n};\r\n\r\nexport const FormatSecondsVega = (seconds: string): string => {\r\n //if(seconds has extra miliseconds) {\r\n // display seconds only\r\n //} else {\r\n // display seconds with miliseconds\r\n //}\r\n return \"(format((\" + seconds + \"), ',.2f') - format((\" + seconds + \"), ',.0f')) == 0 ? \" +\r\n \"format((\" + seconds + \"), ',.0f') + ' seconds' \" +\r\n \": \" +\r\n \"format((\" + seconds + \"), ',.2f') + ' seconds' \"\r\n};\r\n\r\nexport const convertMsToTime = (milliseconds) => {\r\n const totalSeconds = milliseconds / 1000;\r\n const hours = Math.floor(totalSeconds / 3600);\r\n const remainingSeconds = totalSeconds % 3600;\r\n const minutes = Math.floor(remainingSeconds / 60); \r\n const seconds = Math.round(remainingSeconds % 60); \r\n \r\n if (totalSeconds === 0) {\r\n return '0';\r\n } else if (totalSeconds > 0 && totalSeconds < 60) {\r\n return `${seconds}s`;\r\n } else if (totalSeconds >= 60 && totalSeconds < 3600) {\r\n return `${minutes}m ${seconds < 10 ? '0' : ''}${seconds}s`;\r\n } else {\r\n return `${hours}h ${minutes < 10 ? '0' : ''}${minutes}m ${seconds < 10 ? '0' : ''}${seconds}s`;\r\n }\r\n };\r\n\r\n\r\nexport const IsDate = (value: string): boolean => {\r\n try{\r\n const attemptConvert = Date.parse(value);\r\n return attemptConvert !== null;\r\n }\r\n catch{\r\n return false;\r\n }\r\n}","import * as React from \"react\";\r\nimport { TemplateTheme } from \"Definitions/Generated/PoliteMailEntities/Models/TemplateTheme\";\r\nimport { useContext } from \"react\";\r\nimport { defaultBrandTheme } from \"Styles/Themes/themes\";\r\nimport { templateThemesApiHooks } from \"store/features/templateThemesApiSlice\";\r\n\r\ninterface IBrandThemeContext {\r\n brandTheme: TemplateTheme,\r\n setBrandTheme: (brandTheme: TemplateTheme) => void,\r\n}\r\n\r\nexport const BrandThemeContext = React.createContext<IBrandThemeContext>(null);\r\n\r\nexport const BrandThemeContextProvider: React.FC = ({ children }) => {\r\n const { data: templateThemes, isLoading: isLoadingTemplateThemes } = templateThemesApiHooks.useGetTemplateThemesQuery();\r\n const [brandTheme, setBrandTheme] = React.useState<TemplateTheme>(defaultBrandTheme);\r\n const selectedBrandTheme = React.useRef<number>();\r\n\r\n const handleSetBrandTheme = React.useCallback((brandTheme: TemplateTheme) => {\r\n setBrandTheme(brandTheme);\r\n selectedBrandTheme.current = brandTheme.ID;\r\n }, []);\r\n\r\n\r\n const value: IBrandThemeContext = { brandTheme, setBrandTheme: handleSetBrandTheme };\r\n\r\n React.useEffect(() => {\r\n if (isLoadingTemplateThemes) return;\r\n if (selectedBrandTheme.current) {\r\n const selectedTheme = templateThemes?.find(thm => thm.ID === selectedBrandTheme.current);\r\n if (selectedTheme)\r\n setBrandTheme(selectedTheme);\r\n return;\r\n }\r\n if (templateThemes?.length > 0) {\r\n const defaultTheme = templateThemes.find(thm => thm.IsDefault) ?? templateThemes[0];\r\n if (defaultTheme)\r\n setBrandTheme(defaultTheme);\r\n }\r\n }, [isLoadingTemplateThemes, templateThemes]);\r\n\r\n return (\r\n <BrandThemeContext.Provider value={value}>\r\n {children}\r\n </BrandThemeContext.Provider>\r\n )\r\n}\r\n\r\nexport const useBrandTheme = () => useContext(BrandThemeContext);\r\n","import * as React from 'react';\r\n//Components\r\nimport { PMDropDown } from 'components/SimpleComponents/PMDropDown';\r\nimport { useGetBusinessAndRegionDropdowns } from 'Hooks/getBusinessAndRegionsDropdowns';\r\n\r\ninterface IPMBusinessDropdownProps {\r\n DefaultSelectedKey: number;\r\n Handler?: (businessID: number) => void;\r\n showLabel?: boolean;\r\n label: string;\r\n disabled?: boolean;\r\n}\r\n\r\nexport const PMBusinessDropdown: React.FC<IPMBusinessDropdownProps> = ({ DefaultSelectedKey, ...props }) => {\r\n const { dropDownBusinesses } = useGetBusinessAndRegionDropdowns();\r\n\r\n const handleChange = (businessID: number) => {\r\n if (props.Handler) {\r\n props.Handler(businessID);\r\n }\r\n }\r\n\r\n return (\r\n <PMDropDown\r\n disabled={props.disabled ?? false}\r\n label={props.showLabel === false ? \"\" : props.label}\r\n defaultSelectedKey={DefaultSelectedKey}\r\n options={dropDownBusinesses}\r\n onChange={(e, selectedID) => { handleChange(parseInt(selectedID.key.toString())) }} />\r\n )\r\n}","import * as React from 'react';\r\n// No type definition exist, the following comment \r\n// tells TS to ignore the implicit any import\r\n//@ts-ignore\r\nimport { Label } from '@fluentui/react';\r\nimport { getTheme } from '@fluentui/style-utilities';\r\n\r\n\r\nexport interface IPMPhoneInputProps {\r\n onChange: (newPhone: string) => void,\r\n value: string,\r\n label: string\r\n}\r\n\r\n\r\n\r\nconst phoneBoxStyles: React.CSSProperties = {\r\n padding: 4,\r\n margin: 4\r\n}\r\n\r\nconst inputBoxStyles: React.CSSProperties = {\r\n display: \"flex\",\r\n position: \"relative\"\r\n}\r\n\r\n\r\nexport const PMPhoneInput: React.FC<IPMPhoneInputProps> = (props) => {\r\n const [inputValue, setInputValue] = React.useState('');\r\n const theme = getTheme();\r\n\r\n const style: React.CSSProperties = {\r\n height: 32,\r\n width: \"100%\",\r\n fontFamily: \"Segoe UI\",\r\n border: \"solid 1px\",\r\n borderRadius: \"2px\",\r\n padding: \"0px 8px\",\r\n backgroundColor: theme.palette.white,\r\n borderColor: theme.palette.neutralSecondary,\r\n color: theme.palette.neutralPrimary,\r\n };\r\n\r\n React.useEffect(() => {\r\n formatPhoneNumber(props.value,false);\r\n }, [props.value]);\r\n\r\n const formatPhoneNumber = (value, fromInput: boolean) => {\r\n if (!value)\r\n return;\r\n const phoneNumber = fromInput ? value?.target?.value?.replace(/[^\\d]/g, '') ?? '' : value?.replace(/[^\\d]/g, '') ?? '';\r\n const phoneNumberLength = phoneNumber.length;\r\n const isUSACountryCode = phoneNumberLength > 0 ? phoneNumber.substring(0, 1) === '1' : false;\r\n\r\n let FormattedNumber = '';\r\n\r\n if (isUSACountryCode)\r\n if (phoneNumberLength < 4) {\r\n FormattedNumber = `${phoneNumber.slice(0, 1)} ${phoneNumber.slice(1, 4)}`;\r\n }\r\n else if (phoneNumberLength < 5) {\r\n FormattedNumber = `${phoneNumber.slice(0, 1)} (${phoneNumber.slice(1, 4)})`;\r\n }\r\n else if (phoneNumberLength < 8) {\r\n FormattedNumber = `${phoneNumber.slice(0, 1)} (${phoneNumber.slice(1, 4)}) ${phoneNumber.slice(4)}`;\r\n }\r\n else if (phoneNumberLength < 12) {\r\n FormattedNumber = `${phoneNumber.slice(0, 1)} (${phoneNumber.slice(1, 4)}) ${phoneNumber.slice(\r\n 4,\r\n 7\r\n )}-${phoneNumber.slice(7, 11)}`;\r\n } else {\r\n FormattedNumber = phoneNumber;\r\n }\r\n else\r\n if (phoneNumberLength < 4) {\r\n FormattedNumber = phoneNumber;\r\n }\r\n else if (phoneNumberLength < 7) {\r\n FormattedNumber = `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3)}`;\r\n }\r\n else if (phoneNumberLength < 11) {\r\n FormattedNumber = `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(\r\n 3,\r\n 6\r\n )}-${phoneNumber.slice(6, 10)}`;\r\n } else {\r\n FormattedNumber = phoneNumber;\r\n }\r\n\r\n if (fromInput)\r\n props.onChange(FormattedNumber.replace(/[^\\d]/g, ''));\r\n \r\n setInputValue(FormattedNumber);\r\n }\r\n\r\n return (\r\n <div className=\"ms-Grid\" dir=\"ltr\" style={phoneBoxStyles}>\r\n <div className=\"ms-Grid-row\" >\r\n <div className=\"ms-Grid-col ms-sm12\">\r\n <Label>{props.label}</Label>\r\n </div>\r\n <div className=\"ms-Grid-col ms-sm12\" style={inputBoxStyles}>\r\n <input\r\n onChange={(e) => formatPhoneNumber(e, true)}\r\n value={inputValue ?? props.value}\r\n style={style}\r\n title=\"Phone\"\r\n className={\"ms-fontWeight-regular ms-fontSize-14\"}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n","import * as React from \"react\";\r\nimport { RouteBase, WebPortalRouteBase } from \"../../Definitions/Globals\";\r\n\r\nexport enum PMPortalType {\r\n web,\r\n outlook,\r\n unresolved,\r\n}\r\n\r\ninterface IPMPortalContext {\r\n portal: PMPortalType;\r\n portalRouteBaseName: string;\r\n}\r\n\r\nexport const PMPortalContext = React.createContext<IPMPortalContext>({\r\n portal: PMPortalType.unresolved,\r\n portalRouteBaseName: RouteBase,\r\n});\r\n\r\nexport const PMPortalContextProvider: React.FC = ({ children }) => {\r\n const [portal, setPortal] = React.useState<PMPortalType>(\r\n PMPortalType.unresolved\r\n );\r\n const [portalRouteBaseName, setPortalRouteBaseName] =\r\n React.useState<string>(RouteBase);\r\n\r\n const getPortalContext = React.useCallback(() => {\r\n const url: string = window.location.href;\r\n const routeStub = url.split(RouteBase);\r\n const isWeb = routeStub.length > 1 && routeStub[1]?.startsWith(\"web\");\r\n setPortal(isWeb ? PMPortalType.web : PMPortalType.outlook);\r\n setPortalRouteBaseName(isWeb ? WebPortalRouteBase : RouteBase);\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n getPortalContext();\r\n }, []);\r\n\r\n const value = React.useMemo(\r\n () => ({ portal, portalRouteBaseName }),\r\n [portal, portalRouteBaseName]\r\n );\r\n \r\n return (\r\n <PMPortalContext.Provider value={value}>\r\n {children}\r\n </PMPortalContext.Provider>\r\n );\r\n};\r\n\r\nexport const usePMPortalContext = () => React.useContext(PMPortalContext);\r\n","import * as React from 'react';\r\nimport { PMDropDown } from 'components/SimpleComponents/PMDropDown';\r\nimport { useGetBusinessAndRegionDropdowns } from 'Hooks/getBusinessAndRegionsDropdowns';\r\n\r\ninterface IPMRegionDropdownProps {\r\n\tDefaultSelectedKey: number;\r\n\tHandler?: (businessID: number) => void;\r\n\tshowLabel?: boolean;\r\n\tlabel: string;\r\n\tdisabled?: boolean;\r\n}\r\n\r\nexport const PMRegionDropdown: React.FC<IPMRegionDropdownProps> = ({ DefaultSelectedKey, ...props }) => {\r\n\tconst { dropDownRegions } = useGetBusinessAndRegionDropdowns();\r\n\r\n\tconst handleChange = (regionID: number) => {\r\n\t\tif (props.Handler) {\r\n\t\t\tprops.Handler(regionID);\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t<PMDropDown\r\n\t\t\tdisabled={props.disabled ?? false}\r\n\t\t\tlabel={props.showLabel === false ? '' : props.label}\r\n\t\t\tdefaultSelectedKey={DefaultSelectedKey}\r\n\t\t\toptions={dropDownRegions}\r\n\t\t\tonChange={(e, selectedID) => {\r\n\t\t\t\thandleChange(parseInt(selectedID.key.toString()));\r\n\t\t\t}}\r\n\t\t/>\r\n\t);\r\n};\r\n","import axios from 'axios';\r\nimport { AppSetting } from 'Definitions/Generated/PoliteMailEntities/Models/AppSetting';\r\nimport { LocalStorageEnabled, LocalStorageRemove, LocalStorageSet, StorageKeys } from 'store/localStorage';\r\nimport { ODataQueryBuilder } from 'Utils/ODataQueryBuilder';\r\nimport { RTKQueryTags, baseApi } from './baseApiSlice';\r\n\r\nconst publicValuesApiSlice = baseApi\r\n .enhanceEndpoints({\r\n addTagTypes: []\r\n })\r\n .injectEndpoints({\r\n endpoints: builder => ({\r\n getDefaultLoginType: builder.query<AppSetting, void>({\r\n query: () => ({\r\n url: 'PublicValues/GetDefaultLoginType',\r\n method: 'POST'\r\n }),\r\n transformResponse(response) {\r\n return response as AppSetting;\r\n },\r\n providesTags: (result, _error, _args) => [{ type: RTKQueryTags.AppSetting, id: result?.ID ?? 0 }]\r\n }),\r\n doBasicLogin: builder.mutation<boolean, { username: string; password: string, kmsi: boolean }>({\r\n query: args => ({\r\n url: 'PublicValues/DoBasicLogin',\r\n method: 'POST',\r\n body: args\r\n }),\r\n transformResponse(value, { request, response }, args) {\r\n let bearerToken = undefined;\r\n response.headers.forEach((value, key, parent) => {\r\n if (key === \"authentication\") {\r\n bearerToken = value;\r\n }\r\n })\r\n if (bearerToken) {\r\n LocalStorageSet(StorageKeys.PMToken, bearerToken);\r\n axios.defaults.headers.common[\"Authorization\"] = `Bearer ${bearerToken}`;\r\n ODataQueryBuilder.AuthorizeHeader = `Bearer ${bearerToken}`;\r\n }\r\n return (value as { value: boolean }).value;\r\n }\r\n }),\r\n doLogout: builder.mutation<void, void>({\r\n query: () => ({\r\n url: 'PublicValues/Logout',\r\n method: 'POST'\r\n }),\r\n transformResponse(response) {\r\n if (response && LocalStorageEnabled()) {\r\n LocalStorageRemove(StorageKeys?.PMToken);\r\n axios.defaults.headers.common[\"Authorization\"] = '';\r\n ODataQueryBuilder.AuthorizeHeader = '';\r\n }\r\n }\r\n }),\r\n })\r\n });\r\n\r\nconst { useGetDefaultLoginTypeQuery, useDoBasicLoginMutation, useDoLogoutMutation } = publicValuesApiSlice;\r\n\r\nexport const publicValuesApiHooks = {\r\n useGetDefaultLoginTypeQuery,\r\n useDoBasicLoginMutation,\r\n useDoLogoutMutation\r\n};\r\n","import { Dispatch, SetStateAction } from 'react';\r\nimport * as React from 'react';\r\nimport { usersApiHooks } from 'store/features/usersApiSlice';\r\nimport { publicValuesApiHooks } from 'store/features/publicValuesApiSlice';\r\nimport { store } from 'store/store';\r\nimport { baseApi } from 'store/features/baseApiSlice';\r\nimport { PMPermissions, PMRole } from '../../Definitions/PMRoles';\r\nimport { AuthModes } from '../Pages/Login/Login';\r\nimport { PMProgressIndicator } from '../SimpleComponents/PMProgressIndicator';\r\nimport { PMPortalContext, PMPortalType } from './PMPortalContext';\r\nimport { GlobalEventManager } from 'Utils/GlobalEvents';\r\n\r\nexport interface ILoginFormData {\r\n username: string;\r\n password: string;\r\n kmsi: boolean;\r\n}\r\n\r\ninterface IRoleContext {\r\n role: PMPermissions[];\r\n isAuth: boolean;\r\n loginMode: AuthModes;\r\n setIsAuth: Dispatch<SetStateAction<boolean>>;\r\n handlePasswordLogin: (formData: ILoginFormData) => Promise<boolean | number>;\r\n handleLogout: () => Promise<void>;\r\n handleLogoutAftPassReset: () => Promise<void>;\r\n}\r\n\r\nexport const RoleContext = React.createContext<IRoleContext>({\r\n role: PMRole.Default,\r\n isAuth: false,\r\n loginMode: AuthModes.NotSet,\r\n setIsAuth: () => null,\r\n handlePasswordLogin: async () => false,\r\n handleLogout: async () => null,\r\n handleLogoutAftPassReset: async () => null\r\n});\r\n\r\nexport const RoleContextProvider: React.FC = ({ children }) => {\r\n const { portal } = React.useContext(PMPortalContext);\r\n\r\n const {\r\n data: defaultLoginType,\r\n isLoading: isLoadingDefaultLoginType,\r\n isError: isErrorDefaultLoginType,\r\n error: defaultLoginTypeError\r\n } = publicValuesApiHooks.useGetDefaultLoginTypeQuery();\r\n const {\r\n data: currentUser,\r\n isLoading: isLoadingCurrentUser,\r\n isError: isErrorCurrentUser,\r\n isUninitialized: isUninitializedCurrentUser,\r\n refetch: refetchCurrentUser,\r\n } = usersApiHooks.useGetCurrentUserQuery(undefined, {\r\n skip: isLoadingDefaultLoginType\r\n });\r\n const [doBasicLogin, { data: basicLogin, isLoading: _isLoadingBasicLogin, isError: _isErrorBasicLogin }] =\r\n publicValuesApiHooks.useDoBasicLoginMutation();\r\n const [doLogout] = publicValuesApiHooks.useDoLogoutMutation();\r\n const [role, setRole] = React.useState<PMPermissions[]>(PMRole.Default);\r\n const [isAuth, setIsAuth] = React.useState<boolean>(false);\r\n const [loginMode, setLoginMode] = React.useState<AuthModes>(AuthModes.NotSet);\r\n const [redirect, setRedirect] = React.useState<boolean>(false);\r\n\r\n React.useEffect(() => {\r\n if (isLoadingCurrentUser || isUninitializedCurrentUser) return;\r\n if (isErrorCurrentUser) {\r\n setRole(PMRole.Unauthenticated);\r\n setIsAuth(false);\r\n return;\r\n }\r\n\r\n\r\n switch (currentUser.UserType) {\r\n case -1:\r\n setRole(PMRole.SystemAdministrator);\r\n setIsAuth(true);\r\n break;\r\n case 1:\r\n setRole(PMRole.Administrator);\r\n setIsAuth(true);\r\n break;\r\n case 2:\r\n setRole(PMRole.Manager);\r\n setIsAuth(true);\r\n break;\r\n case 3:\r\n setRole(PMRole.User);\r\n setIsAuth(true);\r\n break;\r\n default:\r\n setRole(PMRole.Unauthenticated);\r\n setIsAuth(false);\r\n }\r\n }, [isLoadingCurrentUser, isErrorCurrentUser, currentUser, currentUser?.UserType, isUninitializedCurrentUser, basicLogin]);\r\n\r\n React.useEffect(() => {\r\n refetchCurrentUser();\r\n }, [basicLogin, refetchCurrentUser]);\r\n\r\n\r\n React.useEffect(() => {\r\n if (isLoadingDefaultLoginType) return;\r\n if (isErrorDefaultLoginType) {\r\n setLoginMode(AuthModes.Password);\r\n return;\r\n }\r\n\r\n setLoginMode(defaultLoginType.Value.toUpperCase() as AuthModes);\r\n }, [isLoadingDefaultLoginType, isErrorDefaultLoginType, defaultLoginType?.Value, defaultLoginTypeError]);\r\n\r\n const handlePasswordLogin = React.useCallback(\r\n async ({ username, password, kmsi }: ILoginFormData) => {\r\n return doBasicLogin({ username, password, kmsi })\r\n .unwrap()\r\n .then((res: boolean) => res)\r\n .catch((error) => {\r\n const errorText = error?.data || '';\r\n if (errorText.includes('expired') || errorText.includes('invalid')) {\r\n alert('Your PoliteMail server license is expired or invalid. Please contact your system administrator or call sales @ 1-866-488-9768 to purchase.');\r\n }\r\n return error?.originalStatus;\r\n });\r\n },\r\n [doBasicLogin]\r\n );\r\n\r\n\r\n const handleLogout = React.useCallback(async () => {\r\n setRedirect(true);\r\n await doLogout().unwrap();\r\n setRole(PMRole.Unauthenticated);\r\n setIsAuth(false);\r\n window.location.replace(`https://${window.location.hostname}/signout_landing.html`);\r\n }, [doLogout]);\r\n\r\n const handleLogoutAftPassReset = React.useCallback(async () => {\r\n setRedirect(true);\r\n await doLogout().unwrap();\r\n setRole(PMRole.Unauthenticated);\r\n setIsAuth(false);\r\n window.location.replace(`https://${window.location.hostname}/ui/web/manage_profile`);\r\n }, [doLogout]);\r\n\r\n React.useEffect(() => {\r\n if (isAuth && portal === PMPortalType.web) {\r\n const offset = new Date().getTimezoneOffset().toString();\r\n const timezone = /\\(([^)]+)\\)$/.exec(new Date().toString())[1];\r\n store.dispatch(\r\n baseApi.endpoints.setTimeZone.initiate({\r\n offset,\r\n timezone\r\n })\r\n );\r\n }\r\n }, [isAuth, portal]);\r\n\r\n const value = React.useMemo(\r\n () => ({\r\n role,\r\n isAuth,\r\n loginMode,\r\n setIsAuth,\r\n handlePasswordLogin,\r\n handleLogout,\r\n handleLogoutAftPassReset\r\n }),\r\n [role, isAuth, loginMode, setIsAuth, handlePasswordLogin, handleLogout, handleLogoutAftPassReset]\r\n );\r\n\r\n return (\r\n role !== PMRole.Default && (\r\n <RoleContext.Provider value={value}>\r\n {(redirect && <PMProgressIndicator />) || children}\r\n </RoleContext.Provider>\r\n )\r\n );\r\n};\r\n\r\nexport const useRoleContext = () => React.useContext(RoleContext);","import * as React from 'react';\r\nimport { useState, useEffect, useRef } from 'react';\r\nimport { IDropdownOption } from '@fluentui/react';\r\nimport { UsersODataService } from 'Definitions/Generated/PoliteMailAPI';\r\nimport { PMDropDown } from 'components/SimpleComponents/PMDropDown';\r\n\r\ninterface IPMUsersDropdownProps {\r\n DefaultSelectedKey: number;\r\n Handler?: (userID: number) => void;\r\n showLabel?:boolean;\r\n disabled?: boolean;\r\n}\r\n\r\nexport const PMUserDropdown: React.FC<IPMUsersDropdownProps> = ({ DefaultSelectedKey, ...props }) => {\r\n const usersODataService = useRef(new UsersODataService());\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n const [dropDownUsers, setDropDownUsers] = useState<IDropdownOption[]>([]);\r\n\r\n useEffect(() => {\r\n doUseEffect();\r\n }, []);\r\n\r\n const doUseEffect = async () => {\r\n setIsLoaded(false);\r\n await getUserIDs();\r\n setIsLoaded(true);\r\n }\r\n\r\n const getUserIDs = async () => {\r\n const users = await usersODataService.current.GetAll().Exec();\r\n setDropDownUsers(users.map(user => {\r\n return {\r\n key: user.ID,\r\n text: user.Name && user.Name.trim() ? user.Name: user.Email\r\n } as IDropdownOption\r\n }));\r\n }\r\n\r\n const handleChange = (userID: number) => {\r\n if (props.Handler) {\r\n props.Handler(userID);\r\n }\r\n }\r\n\r\n return (\r\n <PMDropDown\r\n disabled={props.disabled ?? true}\r\n label={props.showLabel === false ? \"\" : \"Owner\"}\r\n defaultSelectedKey={DefaultSelectedKey}\r\n options={dropDownUsers}\r\n onChange={(e, selectedID) => { handleChange(parseInt(selectedID.key.toString())) }} />\r\n )\r\n}","import * as React from 'react';\r\nimport { IComboBox, IComboBoxOption, IDropdownOption } from '@fluentui/react';\r\nimport { PMComboBox } from 'components/SimpleComponents/PMComboBox';\r\n\r\nexport enum FromIdComboSelectMode {\r\n\tAny,\r\n\tRestricted,\r\n}\r\n\r\nexport interface IFromIdComboBoxProps {\r\n\tfromIdOptions: IDropdownOption[];\r\n\tcurrentSelectedFromId: number;\r\n\tselectionMode: FromIdComboSelectMode;\r\n\tonChange?: (event: React.FormEvent<IComboBox>, option?: IComboBoxOption, index?: number, value?: string) => void;\r\n\tonPendingValueChanged?: (option?: IComboBoxOption, index?: number, value?: string) => void;\r\n\terrorMessage: string;\r\n}\r\n\r\nexport const PMFromIdComboBox: React.FC<IFromIdComboBoxProps> = ({\r\n\tfromIdOptions,\r\n\tcurrentSelectedFromId,\r\n\tselectionMode,\r\n\tonChange,\r\n\tonPendingValueChanged,\r\n\terrorMessage,\r\n}) => {\r\n\tconst handleInputChange = (\r\n\t\tevent: React.FormEvent<IComboBox>,\r\n\t\toption?: IComboBoxOption,\r\n\t\tindex?: number,\r\n\t\tvalue?: string\r\n\t) => {\r\n\t\tif (onChange) onChange(event, option, index, value);\r\n\t};\r\n\r\n\tconst handlePendingValueChanged = (option?: IComboBoxOption, index?: number, value?: string) => {\r\n\t\tif (onPendingValueChanged) onPendingValueChanged(option, index, value);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<PMComboBox\r\n\t\t\tlabel={'From Address'}\r\n\t\t\tautoComplete=\"on\"\r\n\t\t\tdisabled={false}\r\n\t\t\tallowFreeform={selectionMode === FromIdComboSelectMode.Any}\r\n\t\t\toptions={fromIdOptions}\r\n\t\t\tselectedKey={currentSelectedFromId}\r\n\t\t\tonChange={handleInputChange}\r\n\t\t\tonPendingValueChanged={handlePendingValueChanged}\r\n\t\t\terrorMessage={errorMessage}\r\n\t\t/>\r\n\t);\r\n};\r\n","import * as React from 'react';\r\nimport { useState, useRef, useCallback } from 'react';\r\nimport { IComboBox, IComboBoxOption, IDropdownOption } from '@fluentui/react';\r\n//Definitions\r\nimport { VerificationFromInfosODataService } from 'Definitions/Generated/Default/VerificationFromInfosODataService';\r\nimport { PMPermissions } from 'Definitions/PMRoles';\r\nimport { UserFrom } from 'Definitions/Generated/PoliteMailEntities/Models/UserFrom';\r\n//Utils\r\nimport { IGlobalProfile, ProfileManager } from 'Utils/GlobalProfile';\r\nimport { UsersCache } from 'Cache/UsersCache';\r\n//Components\r\nimport { PMDropDown } from 'components/SimpleComponents/PMDropDown';\r\nimport { RoleContext } from './PMRoleContext';\r\nimport { FromIdComboSelectMode, PMFromIdComboBox } from './PMFromIdComboBox';\r\nimport { IVerificationObject, Types, VerificationInfoContext } from './VerificationInfoContext';\r\nimport { appSettingsApiHooks, useGetAppSettingByKeyQuery } from 'store/features/appSettingsApiSlice';\r\nimport { userFromsApiHooks } from 'store/features/userFromsApiSlice';\r\n\r\ninterface IPMVerificationInfoProps {\r\n\tHandler?: (listId: number, markDirty?: boolean) => void;\r\n\tListId: number;\r\n}\r\n\r\nexport enum FromValidationMode {\r\n\tManaged = 'MANAGED',\r\n\tStrict = 'STRICT',\r\n\tNone = 'NONE',\r\n}\r\n\r\nconst intitialFormData: IVerificationObject = {\r\n\tUserId: 0,\r\n\tEmail: '',\r\n\tFromId: 0,\r\n\tListId: 0,\r\n};\r\n\r\nexport const PMVerificationInfoForm: React.FC<IPMVerificationInfoProps> = (props) => {\r\n\tconst { verInfoState, verInfoDispatch } = React.useContext(VerificationInfoContext);\r\n\tconst { role } = React.useContext(RoleContext);\r\n\r\n\tconst verificationInfoService = useRef(new VerificationFromInfosODataService());\r\n\r\n\tconst userProfile = useRef<IGlobalProfile>(ProfileManager.GetGlobalProfile());\r\n\r\n\tconst [fromValidationMode, setFromValidationMode] = React.useState<FromValidationMode>(FromValidationMode.Strict);\r\n\tconst [fromAddressOptions, setFromAddressOptions] = React.useState<IDropdownOption[]>([]);\r\n\tconst [hideFroms, setHideFroms] = React.useState<boolean>(true);\r\n\tconst [fromKey, setFromKey] = React.useState<number>(0);\r\n\r\n\tconst [dropDownUsers, setDropDownUsers] = useState<IDropdownOption[]>([]);\r\n\r\n\tconst { data: lifeTimeInMinutesData } = useGetAppSettingByKeyQuery(process.env.CACHE_LIFETIME_KEY);\r\n\tconst { data: validateFrom, isLoading: validateFromAreLoading } = appSettingsApiHooks.GetAppSettingByKey(\"ValidateFrom\");\r\n\tconst { data: userFroms, isLoading: userFromsAreLoading } = userFromsApiHooks.useGetGetUserFromsQuery({ userID: userProfile.current.UserID });\r\n\tconst { data: allUserFroms, isLoading: allUserFromsAreLoading } = userFromsApiHooks.useGetAllUserFromsQuery();\r\n\tconst { data: theirFroms, isLoading: theirFromsAreLoading } = userFromsApiHooks.useGetGetUserFromsQuery({ userID: fromKey }, { skip: fromKey === 0 });\r\n\r\n\tlet typeTimeout: any = null;\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif (!lifeTimeInMinutesData) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tUsersCache.GetInstance(Number.parseInt(lifeTimeInMinutesData.Value))\r\n\t\t\t.Get()\r\n\t\t\t.then((users) =>\r\n\t\t\t\tsetDropDownUsers(\r\n\t\t\t\t\tusers\r\n\t\t\t\t\t\t.filter((u) => u.ID > 0)\r\n\t\t\t\t\t\t.map((user) => {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tkey: user.ID,\r\n\t\t\t\t\t\t\t\ttext: user.Name,\r\n\t\t\t\t\t\t\t} as IDropdownOption;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t}, [lifeTimeInMinutesData]);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif (validateFromAreLoading || allUserFromsAreLoading)\r\n\t\t\treturn;\r\n\t\tgetInitialVerificationInfo();\r\n\t\tsetFromValidationMode(validateFrom?.Value?.toUpperCase() as FromValidationMode);\r\n\t\tif (\r\n\t\t\t(validateFrom?.Value?.toUpperCase() == FromValidationMode.Managed && role.includes(PMPermissions.Administrator)) ||\r\n\t\t\tvalidateFrom?.Value?.toUpperCase() == FromValidationMode.None ||\r\n\t\t\tprops.ListId > 1\r\n\t\t) {\r\n\r\n\t\t\tconst uniqueFroms: UserFrom[] = [];\r\n\t\t\tallUserFroms.forEach((f) => {\r\n\t\t\t\tif (!uniqueFroms.some((u) => u.Email == f.Email)) uniqueFroms.push(f);\r\n\t\t\t});\r\n\t\t\tsetFromAddressOptions(\r\n\t\t\t\tuniqueFroms.map((userFrom) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tkey: userFrom.FromId,\r\n\t\t\t\t\t\tdata: userFrom,\r\n\t\t\t\t\t\ttext: userFrom.Email,\r\n\t\t\t\t\t} as IDropdownOption;\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t\tsetHideFroms(false);\r\n\t\t}\r\n\t}, [props.ListId, validateFromAreLoading, allUserFromsAreLoading]);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif (fromAddressOptions && verInfoState.info.FromId){\r\n\t\t\tverInfoDispatch({ type: Types.UpdateFormData, payload: { key: \"Email\", info: fromAddressOptions.find(op => op.key === verInfoState.info.FromId)?.text }})\r\n\t\t}\r\n\t}, [fromAddressOptions, verInfoState.info.FromId]);\r\n\r\n\tconst getInitialVerificationInfo = useCallback(() => {\r\n\t\tverificationInfoService.current\r\n\t\t\t.Get(props.ListId)\r\n\t\t\t.Exec()\r\n\t\t\t.then((info) => {\r\n\t\t\t\tconst infoObj: IVerificationObject = !info\r\n\t\t\t\t\t? intitialFormData\r\n\t\t\t\t\t: {\r\n\t\t\t\t\t\tFromId: info.FromId,\r\n\t\t\t\t\t\tEmail: '',\r\n\t\t\t\t\t\tUserId: info.ProfileId,\r\n\t\t\t\t\t\tListId: props.ListId,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tverInfoDispatch({\r\n\t\t\t\t\ttype: Types.SetFormData,\r\n\t\t\t\t\tpayload: { info: infoObj },\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t}, [props.ListId]);\r\n\r\n\tconst GetFromAddressesWithPermission = (profile: IDropdownOption) => {\r\n\t\tif (!profile || Number.parseInt(profile.key.toString()) < 1) {\r\n\t\t\tsetHideFroms(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetHideFroms(false);\r\n\t\tif (\r\n\t\t\tfromValidationMode == FromValidationMode.Strict ||\r\n\t\t\t(!role.includes(PMPermissions.Administrator) && fromValidationMode == FromValidationMode.Managed)\r\n\t\t) {\r\n\t\t\tsetFromKey(Number.parseInt(profile.key.toString()))\r\n\t\t}\r\n\t};\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif (theirFromsAreLoading || fromKey === 0)\r\n\t\t\treturn;\r\n\r\n\t\t\tconst selectedOption = fromAddressOptions.find((o) => o.selected);\r\n\t\t\t\tconst dbOptions = userFroms.filter((m) =>\r\n\t\t\t\t\ttheirFroms.find((t) => (t.FromId == m.FromId || t.Email == m.Email) && m.FromId > 0)\r\n\t\t\t\t).map((from) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tkey: from.FromId,\r\n\t\t\t\t\t\ttext: from.Email,\r\n\t\t\t\t\t\tdata: from,\r\n\t\t\t\t\t\tselected: selectedOption?.key === from.ID ? true : false,\r\n\t\t\t\t\t} as IComboBoxOption;\r\n\t\t\t\t});\r\n\t\t\t\tsetFromAddressOptions(dbOptions);\r\n\t}, [theirFromsAreLoading])\r\n\r\n\tconst handleProfileChange = (profile: IDropdownOption) => {\r\n\t\tif (props.Handler) props.Handler(props.ListId, true);\r\n\t\tverInfoDispatch({\r\n\t\t\ttype: Types.UpdateFormData,\r\n\t\t\tpayload: { key: 'UserId', info: Number.parseInt(profile.key.toString()) },\r\n\t\t});\r\n\r\n\t\tGetFromAddressesWithPermission(profile);\r\n\t};\r\n\r\n\tconst GetFromAddressesWithEmail = (email: string) => {\r\n\t\tif (email && email.length > 0)\r\n\t\t\tsetFromAddressOptions((addresses) => addresses.filter((a) => (a.data as UserFrom).Email.includes(email)));\r\n\t};\r\n\r\n\tconst handleFromAddressValueChange = (option?: IComboBoxOption, index?: number, value?: string) => {\r\n\t\tif (typeTimeout) clearTimeout(typeTimeout);\r\n\r\n\t\ttypeTimeout = setTimeout(() => {\r\n\t\t\tGetFromAddressesWithEmail(value);\r\n\t\t}, 200);\r\n\t};\r\n\r\n\tconst handleFromAddressChange = (\r\n\t\tevent: React.FormEvent<IComboBox>,\r\n\t\toption?: IComboBoxOption,\r\n\t\tindex?: number,\r\n\t\tvalue?: string\r\n\t) => {\r\n\t\tif (props.Handler) props.Handler(props.ListId, true);\r\n\t\tverInfoDispatch({\r\n\t\t\ttype: Types.SetFormData,\r\n\t\t\tpayload: {\r\n\t\t\t\tinfo: {\r\n\t\t\t\t\tEmail: option?.data?.Email ?? value,\r\n\t\t\t\t\tUserId: verInfoState.info.UserId,\r\n\t\t\t\t\tFromId: option?.data?.FromId ?? -1,\r\n\t\t\t\t\tListId: props.ListId,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\t};\r\n\r\n\tconst useDropDown =\r\n\t\tfromValidationMode == FromValidationMode.Strict ||\r\n\t\t(!role.includes(PMPermissions.Administrator) && fromValidationMode == FromValidationMode.Managed);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{(verInfoState && verInfoState.isVisible && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t<PMDropDown\r\n\t\t\t\t\t\tlabel={'From Profile'}\r\n\t\t\t\t\t\tselectedKey={verInfoState.info.UserId}\r\n\t\t\t\t\t\toptions={dropDownUsers}\r\n\t\t\t\t\t\tonChange={(e, profile) => {\r\n\t\t\t\t\t\t\thandleProfileChange(profile);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\terrorMessage={\r\n\t\t\t\t\t\t\tverInfoState.info.UserId > 0 ? undefined : 'A From Profile is required for Subscriptions'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t{!hideFroms && (\r\n\t\t\t\t\t\t<PMFromIdComboBox\r\n\t\t\t\t\t\t\tfromIdOptions={fromAddressOptions}\r\n\t\t\t\t\t\t\tcurrentSelectedFromId={verInfoState.info.FromId}\r\n\t\t\t\t\t\t\tselectionMode={useDropDown ? FromIdComboSelectMode.Restricted : FromIdComboSelectMode.Any}\r\n\t\t\t\t\t\t\tonChange={handleFromAddressChange}\r\n\t\t\t\t\t\t\tonPendingValueChanged={useDropDown ? undefined : handleFromAddressValueChange}\r\n\t\t\t\t\t\t\terrorMessage={\r\n\t\t\t\t\t\t\t\tverInfoState.info.Email || verInfoState.info.FromId > 0\r\n\t\t\t\t\t\t\t\t\t? undefined\r\n\t\t\t\t\t\t\t\t\t: 'A Send Address is Required'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</>\r\n\t\t\t)) || <div />}\r\n\t\t</>\r\n\t);\r\n};\r\n","import * as React from 'react';\r\nimport { VerificationFromInfosODataService } from '../../Definitions/Generated/Default/VerificationFromInfosODataService';\r\nimport { UserFromsODataService } from '../../Definitions/Generated/PoliteMailAPI';\r\nimport { UserFrom } from '../../Definitions/Generated/PoliteMailEntities/Models/UserFrom';\r\nimport { VerificationFromInfo } from '../../Definitions/Generated/PoliteMailEntities/Models/VerificationFromInfo';\r\n\r\nexport interface IVerificationObject {\r\n UserId: number,\r\n Email: string,\r\n FromId: number,\r\n ListId: number\r\n}\r\n\r\nexport interface IVerificationInfoContext {\r\n isVisible: boolean;\r\n info: IVerificationObject;\r\n}\r\n\r\nexport enum Types {\r\n UpdateProfile = \"UPDATE_PROFILE\",\r\n SetVisibility = \"SET_VISIBILITY\",\r\n PanelUpdateCallback = \"PANEL_CALLBACK\",\r\n UpdateFormData = \"UPDATE_FORM_DATA\",\r\n SetFormData = \"SET_FORM_DATA\",\r\n ClearFormData = \"CLEAR_FORM_DATA\"\r\n}\r\n\r\ntype ActionMap<M extends { [index: string]: any }> = {\r\n [Key in keyof M]: M[Key] extends undefined\r\n ? {\r\n type: Key;\r\n }\r\n : {\r\n type: Key;\r\n payload: M[Key];\r\n }\r\n};\r\n\r\ntype verificationInfoPayload = {\r\n [Types.UpdateProfile]: {\r\n ProfileId: number;\r\n };\r\n [Types.SetVisibility]: {\r\n isVisible: boolean;\r\n };\r\n [Types.PanelUpdateCallback]: {\r\n IsNewsletter: boolean;\r\n };\r\n [Types.UpdateFormData]: {\r\n info: any;\r\n key: keyof (IVerificationObject);\r\n };\r\n [Types.SetFormData]: {\r\n info: IVerificationObject\r\n };\r\n [Types.ClearFormData] : null\r\n}\r\n\r\nconst initialInfo: IVerificationObject = {\r\n UserId: 0,\r\n Email: \"\",\r\n FromId: 0,\r\n ListId: 0\r\n}\r\n\r\nexport type verificationInfoActions = ActionMap<verificationInfoPayload>[keyof ActionMap<verificationInfoPayload>];\r\n\r\nconst initialState: IVerificationInfoContext = {\r\n isVisible: false,\r\n info: initialInfo\r\n}\r\n\r\nconst VerificationInfoContext = React.createContext<{\r\n verInfoState: IVerificationInfoContext;\r\n verInfoDispatch: React.Dispatch<verificationInfoActions>;\r\n saveCallback: (listId?: number) => Promise<VerificationFromInfo>;\r\n}>({\r\n verInfoState: initialState,\r\n verInfoDispatch: () => null,\r\n saveCallback: (listId?: number) => null\r\n});\r\n\r\nconst verificationInfoReducer = (state: IVerificationInfoContext, action: verificationInfoActions) => {\r\n switch (action.type) {\r\n case Types.UpdateProfile:\r\n return { ...state, info: {...state.info, ProfileId: action.payload.ProfileId }}\r\n case Types.PanelUpdateCallback:\r\n return { ...state, isVisible: action.payload.IsNewsletter }\r\n case Types.UpdateFormData:\r\n return !action.payload ? state : { ...state, info: { ...state.info, [action.payload.key]: action.payload.info } };\r\n case Types.SetFormData:\r\n return { ...state, info: action.payload.info }\r\n case Types.ClearFormData:\r\n return { ...initialState }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst VerificationInfoProvider: React.FC = ({ children }) => {\r\n const [verInfoState, verInfoDispatch] = React.useReducer(verificationInfoReducer, initialState);\r\n const verificationInfoService = React.useRef <VerificationFromInfosODataService>(new VerificationFromInfosODataService());\r\n const userFromService = React.useRef<UserFromsODataService>(new UserFromsODataService());\r\n\r\n const saveCallback = React.useCallback((listID?: number ) => {\r\n if (verInfoState.info.FromId === -1) {\r\n const userFrom: UserFrom = {\r\n Email: verInfoState.info.Email,\r\n UserId: verInfoState.info.UserId\r\n }\r\n\r\n userFromService.current.Post(userFrom).then(createdFrom => {\r\n verificationInfoService.current.Post({\r\n ID: verInfoState.info.ListId,\r\n FromId: createdFrom.ID,\r\n ProfileId: verInfoState.info.UserId\r\n })\r\n })\r\n }\r\n else {\r\n return verificationInfoService.current.Post({ ID: listID ?? verInfoState.info.ListId, ProfileId: verInfoState.info.UserId, FromId: verInfoState.info.FromId})\r\n }\r\n return new Promise<VerificationFromInfo>(a => {});\r\n }, [verInfoState.info])\r\n \r\n return (\r\n <VerificationInfoContext.Provider value={{verInfoState, verInfoDispatch, saveCallback}}>\r\n { children }\r\n </VerificationInfoContext.Provider>\r\n )\r\n}\r\n\r\nexport { VerificationInfoContext, VerificationInfoProvider };\r\n","import * as React from 'react';\r\nimport { DatePicker, IDatePickerProps } from \"@fluentui/react\";\r\nimport { PMDatePickerStyles } from \"Definitions/Styles/StyleDefinitions\";\r\n\r\nexport interface IPMDatePickerProps extends IDatePickerProps {\r\n}\r\n\r\nexport const PMDatePicker: React.FC<IPMDatePickerProps> = (props) => {\r\n return (\r\n <DatePicker {...props} title=\"datePicker\" styles={PMDatePickerStyles}/>\r\n );\r\n}","import * as React from 'react';\r\nimport { IComboBoxProps } from '@fluentui/react';\r\nimport { GetTimes } from 'Utils/TimeUtils';\r\nimport { PMComboBox } from 'components/SimpleComponents/PMComboBox';\r\n\r\ninterface ITimePickerProps extends IComboBoxProps {}\r\n\r\nexport const PMTimePicker: React.FC<ITimePickerProps> = (props) => {\r\n\treturn <PMComboBox {...props} title=\"timePicker\" options={props.options ?? GetTimes()} />;\r\n};\r\n","import * as React from \"react\"\r\n\r\ninterface IPMGridCol extends JSX.IntrinsicAttributes{\r\n columnResizing: string,\r\n style?: React.CSSProperties,\r\n uniqueKey?: React.ReactText\r\n}\r\n\r\nconst PMColStyle: React.CSSProperties = {\r\n padding: 0,\r\n margin: 0\r\n}\r\n\r\nexport const PMGridCol: React.FC<IPMGridCol> = props => {\r\n return (\r\n <div className={\"ms-Grid-col \" + props.columnResizing} style={{...PMColStyle, ...props.style}} key={props.uniqueKey}>\r\n {props.children}\r\n </div>\r\n )\r\n}","import * as React from \"react\"\r\n\r\nconst PMRowStyle: React.CSSProperties = {\r\n padding: 0,\r\n margin: 0\r\n}\r\n\r\nexport interface IPMGridRow extends JSX.IntrinsicAttributes {\r\n id?: string,\r\n ref?: React.Ref<HTMLDivElement>,\r\n uniqueKey?: React.ReactText,\r\n style?: React.CSSProperties\r\n}\r\n\r\nexport const PMGridRow: React.FC<IPMGridRow> = props => {\r\n return (\r\n <div ref={props.ref} className=\"ms-Grid-row\" style={{...PMRowStyle, ...props.style}} key={props.uniqueKey} id={props.id}>\r\n {props.children}\r\n </div>\r\n )\r\n}","import * as React from \"react\";\r\n\r\nexport const LockIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\r\n return (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" width={props.width} height={props.height} style={props.style}>\r\n <rect width={props.width} height={props.height} style={{fill:\"none\"}}/>\r\n <path\r\n fill={props.fill || \"#808488\"}\r\n d=\"M28,32H4V14H8V8.16A9.06,9.06,0,0,1,8.19,6.4a8.9,8.9,0,0,1,.49-1.56,6.84,6.84,0,0,1,.73-1.33,8.48,8.48,0,0,1,.9-1.12,8.38,8.38,0,0,1,1.09-.94A7.06,7.06,0,0,1,12.72.7,8,8,0,0,1,16,0a8,8,0,0,1,3.29.7,7.06,7.06,0,0,1,1.32.75,8.38,8.38,0,0,1,1.09.94,8.48,8.48,0,0,1,.9,1.12,6.84,6.84,0,0,1,.73,1.33,8.9,8.9,0,0,1,.49,1.56A8.33,8.33,0,0,1,24,8.16V14h4ZM22,14V8.16a6.45,6.45,0,0,0-.29-2A5.84,5.84,0,0,0,21,4.59a6,6,0,0,0-1.15-1.25,6.26,6.26,0,0,0-1.42-.86A5.84,5.84,0,0,0,16,2a6,6,0,0,0-1.95.3,5.62,5.62,0,0,0-1.58.81,5.69,5.69,0,0,0-1.2,1.2,6.81,6.81,0,0,0-.82,1.46A6.35,6.35,0,0,0,10,8.16V14ZM6,16V30H26V16Z\" />\r\n </svg>\r\n );\r\n}","import * as React from \"react\";\r\nimport { ISvgProps } from \"../../Definitions/ISvgProps\";\r\n\r\n\r\nexport const TestSendIcon: React.FC<ISvgProps> = (props) => {\r\n return (\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32.16 32.24\"\r\n width={props.width}\r\n height={props.height}\r\n style={props.style}\r\n >\r\n <rect y=\"0.08\" width=\"32\" height=\"32\" style={{ fill: \"none\" }} />\r\n <path d=\"M2.83,18.86l16.09-6.77L14.64,5.32V1.23h.67a.65.65,0,0,0,.46-.18A.57.57,0,0,0,16,.61a.55.55,0,0,0-.2-.43A.65.65,0,0,0,15.31,0H8.63a.67.67,0,0,0-.47.18A.58.58,0,0,0,8,.61a.6.6,0,0,0,.2.44.67.67,0,0,0,.47.18H9.3V5.32L2.71,15.44A3.52,3.52,0,0,0,2,17.35a2,2,0,0,0,.3,1.07C2.54,18.78,2.44,18.78,2.83,18.86Zm7.8-13.2V1.23H13.3V5.66l3.45,5.41L7.21,11Z\"\r\n style={{ fill: \"#808488\" }} />\r\n <path d=\"M.94,21.08l7.47,2.79,2.79,8.37,5.12-4.67,8.38,3.76L32.16,8Zm11.23,7.33-1.56-5.64L26.19,14.2Z\"\r\n style={{ fill: \"#808488\" }} />\r\n </svg>\r\n )\r\n}","import * as React from 'react'\r\nimport { FilterExpressionGroup, ListFilter, IFilterStats, IFilterableField, PMFilteredListDisplay, ContactFilterFieldType } from '@politemail/ui-components';\r\nimport { listFiltersApiHooks } from 'store/features/listFiltersApiSlice';\r\nimport { ContactsODataService, CustomValuesODataService } from 'Definitions/Generated/PoliteMailAPI';\r\nimport { IDropdownOption, Spinner, SpinnerSize } from '@fluentui/react';\r\nimport { notify } from 'Utils/PageActions/Nav';\r\nimport { listApiHooks } from 'store/features/listsApiSlice';\r\nimport QueryFactory from 'Utils/Filtering/QueryFactory';\r\nimport { PMNotificationPill } from 'components/SimpleComponents/PMNotificationPill';\r\nimport { Store } from 'react-notifications-component';\r\nimport 'components/WebComponents/NotificationPill.css';\r\nimport { baseApi, RTKQueryTags } from 'store/features/baseApiSlice';\r\nimport { ListFiltersODataService } from 'Definitions/Generated/Default/ListFiltersODataService';\r\nimport { useAppDispatch, useAppSelector } from 'store/hooks';\r\nimport { PMConfirmationDialog, PMEditListNameDialog } from 'components/SimpleComponents/PMDialog';\r\nimport { regionsApiHooks } from 'store/features/regionsApiSlice';\r\nimport { businessesApiHooks } from 'store/features/businessesApiSlice';\r\nimport { usersApiHooks } from 'store/features/usersApiSlice';\r\nimport { MapToIDropDownProps } from 'Utils/DropDownUtils';\r\nimport { stagesApiHooks } from 'store/features/stagesApiSlice';\r\nimport { Prompt } from 'react-router-dom';\r\nimport * as H from 'history';\r\nimport { ContactsApiHooks } from 'store/features/contactsApiSlice';\r\nimport { appSettingsApiHooks } from 'store/features/appSettingsApiSlice';\r\nimport { setGridBitsToConvert } from 'store/features/filteredListSlice';\r\n\r\nexport interface IFilteredListPageProps{\r\n listId?: number;\r\n setShowPage?: () => void;\r\n}\r\n\r\nexport const DisabledFilteredListTooltip = \"Filtered List membership cannot be edited except by modifying the list's filters.\"\r\nexport const SubscriptionDisabledTooltip = \"Filtered lists cannot be subscription lists.\"\r\n\r\nconst defaultStats = {\r\n ContactsAdded: [],\r\n ContactsUnchanged: [],\r\n ContactsRemoved: []\r\n} as IFilterStats\r\n\r\nexport function isListFilter(object: any): object is ListFilter {\r\n return (!object) || (object as ListFilter).ListFilterExpression !== undefined;\r\n}\r\n\r\nexport const FilteredListPage: React.FC<IFilteredListPageProps> = (props) => {\r\n\r\n const { data: allLists } = listApiHooks.useGetListsQuery({ query: new QueryFactory().select(['ID', 'Name', 'IsNewFeatureFilteredList']).toQuery() });\r\n const { data: filterFields, isLoading: isFilterFieldsLoading } = listFiltersApiHooks.useGetFilterableFieldsQuery();\r\n const { data: listFilter, isFetching: listFilterFetching } = listFiltersApiHooks.useGetListFilterForListQuery({ id: props.listId }, { skip: !props.listId });\r\n const { data: regions, isLoading: isRegionsLoading } = regionsApiHooks.useGetRegionsQuery();\r\n const { data: businesses, isLoading: isBusinessesLoading } = businessesApiHooks.useGetBusinessesQuery();\r\n const { data: users, isLoading: isUsersLoading } = usersApiHooks.useGetUsersQuery();\r\n const { data: stages, isLoading: isStagesLoading } = stagesApiHooks.useGetStagesQuery();\r\n const { data: timezones, isLoading: isTimezonesLoading } = ContactsApiHooks.useGetTimezonesQuery();\r\n const { data: circularDependencyLists } = listFiltersApiHooks.useGetCircularDependencyListsQuery(props.listId, { skip: !props.listId });\r\n const { data: filterLimit } = appSettingsApiHooks.GetAppSettingByKey('ListFilterLimit');\r\n\r\n const [isPreviewLoading, setIsPreviewLoading] = React.useState<boolean>(false);\r\n const [listFilterPreview, setListFilterPreview] = React.useState<IFilterStats>();\r\n const [warningMessage, setWarningMessage] = React.useState<string>(null);\r\n const [isSaving, setIsSaving] = React.useState<boolean>(false);\r\n const listFilterService = React.useRef<ListFiltersODataService>(new ListFiltersODataService());\r\n const customValuesOdataService = React.useRef<CustomValuesODataService>(new CustomValuesODataService());\r\n const contactsService = React.useRef<ContactsODataService>(new ContactsODataService());\r\n const [mappedIdDropdowns, setMappedIdDropdowns] = React.useState<Map<ContactFilterFieldType, IDropdownOption[]>>(new Map<ContactFilterFieldType, IDropdownOption[]>());\r\n const [searchedDropdownFields, setSearchedDropdownFields] = React.useState<IFilterableField[]>();\r\n\r\n const [hiddenNameDialog, setHiddenNameDialog] = React.useState<boolean>(true);\r\n const [navLocation, setNavLocation] = React.useState<string>('');\r\n const [isConfirmed, setIsConfirmed] = React.useState<boolean>(false);\r\n const [isDirty, setIsDirty] = React.useState<boolean>(false);\r\n const [unsavedChangesConfirmationOpen, setUnsavedChangesConfirmationOpen] = React.useState<boolean>(false);\r\n const currFilter = React.useRef<FilterExpressionGroup>(undefined);\r\n const filteredListSliceState = useAppSelector((state) => state.filteredListSlice);\r\n const dispatch = useAppDispatch();\r\n\r\n React.useEffect(() => {\r\n listFilterService.current.RefreshContactCacheIfNeeded();\r\n }, []);\r\n\r\n const listOptions = React.useMemo(() => {\r\n if (allLists) {\r\n if (circularDependencyLists) {\r\n const excludeCurrentList = circularDependencyLists?.filter((list) => list.ID != props.listId);\r\n const allListWOCurrent = allLists?.filter((list) => list.ID != props.listId).map((list) => {\r\n return {\r\n key: list.ID,\r\n text: list.Name,\r\n disabled: excludeCurrentList.some(circularList => circularList.ID === list.ID)\r\n } as IDropdownOption\r\n });\r\n return allListWOCurrent;\r\n }\r\n else {\r\n return allLists?.filter((list) => list.ID != props.listId)?.map((list) => {\r\n return {\r\n key: list.ID,\r\n text: list.Name,\r\n } as IDropdownOption\r\n });\r\n }\r\n }\r\n return [];\r\n }, [allLists, circularDependencyLists, props.listId]);\r\n\r\n React.useEffect(() => {\r\n if(!filterFields)\r\n return;\r\n setSearchedDropdownFields(filterFields);\r\n }, [filterFields]);\r\n\r\n React.useEffect(() => {\r\n if (filteredListSliceState.gridBitsToConvert?.length > 0) {\r\n listFilterService.current.CreateListFilterExpression(filteredListSliceState.gridBitsToConvert).then(listFilterExpression => {\r\n currFilter.current = listFilterExpression;\r\n dispatch(setGridBitsToConvert([]));\r\n }).catch(() => {\r\n dispatch(setGridBitsToConvert([]));\r\n setWarningMessage(\"An error occurred when creating filters from the contact grid.\");\r\n });\r\n }\r\n }, [filteredListSliceState.gridBitsToConvert]);\r\n\r\n React.useEffect(() => {\r\n if (isRegionsLoading || isBusinessesLoading || isUsersLoading || isStagesLoading || isTimezonesLoading)\r\n return;\r\n\r\n setMappedIdDropdowns(prev => {\r\n const allRegions = new Map<number, string>();\r\n allRegions.set(-1,\"\");\r\n regions.forEach((region) => {\r\n allRegions.set(region.ID, region.Name);\r\n });\r\n prev.set(ContactFilterFieldType.RegionID, MapToIDropDownProps(allRegions));\r\n\r\n const allBusinesses = new Map<number, string>();\r\n allBusinesses.set(-1,\"\");\r\n businesses.forEach((business) => {\r\n allBusinesses.set(business.ID, business.Name);\r\n });\r\n prev.set(ContactFilterFieldType.BusinessID, MapToIDropDownProps(allBusinesses));\r\n\r\n const allUsers = new Map<number, string>();\r\n allUsers.set(-1,\"\");\r\n users.forEach((user) => {\r\n allUsers.set(user.ID, user.Name && user.Name.trim() ? user.Name : user.Email);\r\n });\r\n prev.set(ContactFilterFieldType.OwnerID, MapToIDropDownProps(allUsers));\r\n\r\n const allStages = new Map<number, string>();\r\n allStages.set(-1,\"\");\r\n stages.forEach((stage) => {\r\n allStages.set(stage.ID, stage.Name);\r\n });\r\n prev.set(ContactFilterFieldType.StageID, MapToIDropDownProps(allStages));\r\n\r\n const allTimezones = new Map<string, string>();\r\n allTimezones.set(\"-1\",\"\");\r\n timezones.forEach(dbTZ => {\r\n allTimezones.set(dbTZ.Key.toLocaleLowerCase(), dbTZ.Value)\r\n });\r\n prev.set(ContactFilterFieldType.TimeZone, MapToIDropDownProps(allTimezones));\r\n\r\n return new Map(prev);\r\n });\r\n }, [regions, businesses, users, stages, timezones, isRegionsLoading, isBusinessesLoading, isUsersLoading, isStagesLoading, isTimezonesLoading]);\r\n\r\n const getCircularListWarning = React.useCallback((listId: number, isPreview: boolean) => {\r\n let listName = allLists?.find(list => list.ID === listId)?.Name\r\n if (listName)\r\n return `Couldn't ${isPreview ? 'preview' : 'save'} filtered list because the filter's reference to list (or to a different list referencing) \\'${listName}\\' will create a circular dependency.`\r\n else\r\n return `Couldn't ${isPreview ? 'preview' : 'save'} filtered list because the filter contains a list reference that will create a circular dependency.`\r\n }, [allLists]);\r\n\r\n const _onSetDirty = React.useCallback((dirty: boolean) => {\r\n setIsDirty(dirty);\r\n notify.SetPanelDirty(dirty);\r\n }, [notify, setIsDirty]);\r\n\r\n const handleNavigateAnotherPage = React.useCallback((location: H.Location) => {\r\n if(isConfirmed){\r\n setIsConfirmed(false);\r\n return true;\r\n }\r\n\r\n if (isDirty && !isSaving) {\r\n setUnsavedChangesConfirmationOpen(true);\r\n setNavLocation(location.pathname);\r\n return false;\r\n }\r\n\r\n return true;\r\n }, [setIsConfirmed, setUnsavedChangesConfirmationOpen, setNavLocation, isConfirmed, isDirty, isSaving]);\r\n\r\n const _handleLoadFilterStats = React.useCallback((filterExpression: FilterExpressionGroup) => {\r\n setIsPreviewLoading(true);\r\n setWarningMessage(null);\r\n const currentListFilter = { ...listFilter, ListFilterExpression: filterExpression };\r\n listFilterService.current.PreviewListFilter(currentListFilter).then((preview) => {\r\n if (preview.CircularDependencyListID) {\r\n setWarningMessage(getCircularListWarning(preview.CircularDependencyListID, true));\r\n }\r\n else if (preview.RegexTimeout){\r\n setWarningMessage(\"Couldn't preview filtered list because the filter's regex evaluation exceeded the maximum time limit.\");\r\n }\r\n else {\r\n setListFilterPreview(preview);\r\n }\r\n setIsPreviewLoading(false);\r\n });\r\n }, [getCircularListWarning, listFilter]);\r\n\r\n const _goBack = React.useCallback(() => {\r\n props.setShowPage();\r\n }, [props]);\r\n\r\n const _searchForValue = React.useCallback((filterField: IFilterableField, searchText: string) => {\r\n // this is used for the freeform typing in for a filter field, not a filter specifically\r\n if (filterField.IsCustomValue && filterField.CustomFieldId) {\r\n customValuesOdataService.current.SearchCustomValuesForField(filterField.CustomFieldId, searchText).then(values => {\r\n setSearchedDropdownFields(currentSearchedDropdownFields => {\r\n let newDropdownFields = [...currentSearchedDropdownFields];\r\n\r\n let fieldIndex = newDropdownFields.findIndex(f => f.CustomFieldId === filterField.CustomFieldId);\r\n let searchOptions = [...newDropdownFields[fieldIndex].TopXValues];\r\n values.forEach(cv => {\r\n if(!searchOptions.some(option => option === cv.Value))\r\n searchOptions.push(cv.Value);\r\n });\r\n newDropdownFields[fieldIndex] = {...newDropdownFields[fieldIndex], TopXValues: searchOptions};\r\n return newDropdownFields;\r\n });\r\n })\r\n }\r\n else {\r\n contactsService.current.SearchContactPropertiesForValue(filterField.FieldName, searchText).then(values => {\r\n setSearchedDropdownFields(currentSearchedDropdownFields => {\r\n let newDropdownFields = [...currentSearchedDropdownFields];\r\n\r\n let fieldIndex = newDropdownFields.findIndex(f => f.ContactFilterFieldType === filterField.ContactFilterFieldType);\r\n let searchOptions = [...newDropdownFields[fieldIndex].TopXValues];\r\n values.forEach(property => {\r\n if(!searchOptions.some(option => option === property))\r\n searchOptions.push(property);\r\n });\r\n newDropdownFields[fieldIndex] = {...newDropdownFields[fieldIndex], TopXValues: searchOptions};\r\n return newDropdownFields;\r\n });\r\n })\r\n }\r\n }, []);\r\n\r\n const _onSavePreviewValidationFailed = React.useCallback((filter: FilterExpressionGroup) => {\r\n Store.addNotification({\r\n title:\"Fix list validation errors before saving or previewing\",\r\n type: \"danger\",\r\n insert: \"top\",\r\n container: \"top-right\",\r\n animationIn: [\"fadeIn\"],\r\n animationOut: [\"fadeOut\"],\r\n dismiss: {\r\n duration: 5000,\r\n onScreen: false\r\n },\r\n content: <PMNotificationPill alertType=\"failure\" text=\"Fix list validation errors before saving or previewing\"></PMNotificationPill>\r\n });\r\n }, []);\r\n\r\n const _onSave = React.useCallback((filter: FilterExpressionGroup) => {\r\n\r\n setIsSaving(true);\r\n setWarningMessage(null);\r\n\r\n if (props.listId){\r\n if (!listFilter)\r\n return;\r\n\r\n const modifiedListFilter = { ...listFilter, ListFilterExpression: filter } as ListFilter;\r\n listFilterService.current.PatchListFilter(modifiedListFilter).then(response => {\r\n if (response) {\r\n setIsSaving(false);\r\n const responseAsNumber = Number.parseFloat(response.toString());\r\n if (isNaN(responseAsNumber))\r\n setWarningMessage(response.toString());\r\n else\r\n setWarningMessage(getCircularListWarning(responseAsNumber, false));\r\n }\r\n else {\r\n dispatch(baseApi.util.invalidateTags([{type: RTKQueryTags.ListFilter, id: modifiedListFilter.ListID}]));\r\n dispatch(baseApi.util.invalidateTags([{type: RTKQueryTags.List, id: modifiedListFilter.ListID}]));\r\n dispatch(baseApi.util.invalidateTags([{type: RTKQueryTags.List, id: 'LIST'}]));\r\n\r\n Store.addNotification({\r\n title:\"List Updated\",\r\n message:\"List Updated\",\r\n type: \"success\",\r\n insert: \"top\",\r\n container: \"top-right\",\r\n animationIn: [\"fadeIn\"],\r\n animationOut: [\"fadeOut\"],\r\n dismiss: {\r\n duration: 5000,\r\n onScreen: false\r\n },\r\n content: <PMNotificationPill alertType=\"success\" text=\"List Updated\"></PMNotificationPill>\r\n })\r\n notify.FireNavigationEvents({\r\n location: \"/manage_contacts/lists/\" + modifiedListFilter.ListID + \"/contacts\"\r\n });\r\n }\r\n }).catch((error) => {\r\n setIsSaving(false);\r\n Store.addNotification({\r\n title:\"List did not update succesfully\",\r\n message:error,\r\n type: \"danger\",\r\n insert: \"top\",\r\n container: \"top-right\",\r\n animationIn: [\"fadeIn\"],\r\n animationOut: [\"fadeOut\"],\r\n dismiss: {\r\n duration: 5000,\r\n onScreen: false\r\n },\r\n content: <PMNotificationPill alertType=\"failure\" text=\"List did not update succesfully\"></PMNotificationPill>\r\n });\r\n });\r\n }\r\n else {\r\n currFilter.current = filter;\r\n setHiddenNameDialog(false);\r\n }\r\n\r\n }, [props.listId, listFilter, getCircularListWarning, dispatch]);\r\n\r\n const nameEnteredClick = React.useCallback((updatedFilteredList: ListFilter) => {\r\n if (!currFilter.current)\r\n return;\r\n\r\n setHiddenNameDialog(true);\r\n const newListFilter = {\r\n ...updatedFilteredList,\r\n ListFilterExpression: currFilter.current,\r\n } as ListFilter;\r\n\r\n Store.addNotification({\r\n title: \"Saving List\",\r\n message: \"List Saving\",\r\n type: \"success\",\r\n insert: \"top\",\r\n container: \"top-right\",\r\n animationIn: [\"fadeIn\"],\r\n animationOut: [\"fadeOut\"],\r\n dismiss: {\r\n duration: 5000,\r\n onScreen: false,\r\n },\r\n content: (\r\n <PMNotificationPill\r\n alertType=\"progress\"\r\n text=\"List Saving\"\r\n ></PMNotificationPill>\r\n ),\r\n });\r\n\r\n listFilterService.current\r\n .PostWithTypes(newListFilter)\r\n .then((response) => {\r\n if (!isListFilter(response)) {\r\n setIsSaving(false);\r\n const responseAsNumber = Number.parseFloat((response as any).toString());\r\n if (isNaN(responseAsNumber))\r\n setWarningMessage((response as any).toString());\r\n else\r\n setWarningMessage(getCircularListWarning(responseAsNumber, false));\r\n }\r\n else {\r\n dispatch(baseApi.util.invalidateTags([{type: RTKQueryTags.ListFilter, id: response.ListID}]));\r\n dispatch(baseApi.util.invalidateTags([{type: RTKQueryTags.List, id: response.ListID}]));\r\n dispatch(baseApi.util.invalidateTags([{type: RTKQueryTags.List, id: 'LIST'}]));\r\n\r\n Store.addNotification({\r\n title: \"List Saved\",\r\n message: \"List Saved\",\r\n type: \"success\",\r\n insert: \"top\",\r\n container: \"top-right\",\r\n animationIn: [\"fadeIn\"],\r\n animationOut: [\"fadeOut\"],\r\n dismiss: {\r\n duration: 5000,\r\n onScreen: false,\r\n },\r\n content: (\r\n <PMNotificationPill\r\n alertType=\"success\"\r\n text=\"List Saved\"\r\n ></PMNotificationPill>\r\n ),\r\n });\r\n notify.FireNavigationEvents({\r\n location:\r\n \"/manage_contacts/lists/\" + response.ListID + \"/contacts\",\r\n });\r\n }\r\n })\r\n .catch((error) => {\r\n setIsSaving(false);\r\n Store.addNotification({\r\n title: \"List did not save successfully\",\r\n message: error,\r\n type: \"danger\",\r\n insert: \"top\",\r\n container: \"top-right\",\r\n animationIn: [\"fadeIn\"],\r\n animationOut: [\"fadeOut\"],\r\n dismiss: {\r\n duration: 5000,\r\n onScreen: false,\r\n },\r\n content: (\r\n <PMNotificationPill\r\n alertType=\"failure\"\r\n text=\"List did not save successfully\"\r\n ></PMNotificationPill>\r\n ),\r\n });\r\n });\r\n },[dispatch, getCircularListWarning]);\r\n\r\n const nameCancelClick = React.useCallback(() => {\r\n setHiddenNameDialog(true);\r\n setIsSaving(false);\r\n },[])\r\n\r\n const closeUnsavedChangesConfirmation = React.useCallback(() =>\r\n setUnsavedChangesConfirmationOpen(false),\r\n [setUnsavedChangesConfirmationOpen]);\r\n\r\n const continueUnsavedChangesConfirmation = React.useCallback(() =>\r\n setIsConfirmed(true),\r\n [setUnsavedChangesConfirmationOpen]);\r\n\r\n React.useEffect(() => {\r\n if (navLocation && isConfirmed) {\r\n notify.FireNavigationEvents({ location: navLocation });\r\n }\r\n }, [isConfirmed, navLocation]);\r\n\r\n return (\r\n <>\r\n <Prompt\r\n when={isDirty}\r\n message={handleNavigateAnotherPage}\r\n />\r\n <PMConfirmationDialog\r\n title=\"Unsaved Changes\"\r\n text=\"You have made changes to this filtered list. Are you sure you want to discard these changes and continue?\"\r\n hidden={!unsavedChangesConfirmationOpen}\r\n onButtonClick={continueUnsavedChangesConfirmation}\r\n cancelClick={closeUnsavedChangesConfirmation}\r\n />\r\n <PMEditListNameDialog\r\n handleCloseDialog={nameCancelClick}\r\n onSaveListNameOverride={nameEnteredClick}\r\n hidden={hiddenNameDialog}\r\n text={\"New List Name\"}\r\n filteredList={listFilter}\r\n />\r\n {listFilterFetching\r\n ? <Spinner style={{ padding: 10 }} className=\"loadingSpinner\" label=\"Loading filtered list...\" size={SpinnerSize.large} />\r\n : <PMFilteredListDisplay\r\n loadedFromAPI={true}\r\n incomingExpression={listFilter?.ListFilterExpression ?? currFilter.current}\r\n filteredListStats={listFilterPreview ?? defaultStats}\r\n filterableFields={isFilterFieldsLoading ? [] : searchedDropdownFields}\r\n listOptions={listOptions}\r\n mappedIdOptions={mappedIdDropdowns}\r\n warningMessage={warningMessage}\r\n onSetDirty={_onSetDirty}\r\n searchForProperties={_searchForValue}\r\n onBackArrowClicked={_goBack}\r\n onSaveFilteredList={_onSave}\r\n onSavePreviewFilteredListInvalid={_onSavePreviewValidationFailed}\r\n onPreviewFilteredListClicked={_handleLoadFilterStats}\r\n areFilterFieldsLoading={isFilterFieldsLoading || !listOptions || isRegionsLoading || isBusinessesLoading || isUsersLoading || isStagesLoading || isTimezonesLoading || filteredListSliceState.gridBitsToConvert?.length > 0}\r\n isPreviewLoading={isPreviewLoading}\r\n isSaving={isSaving}\r\n filterLimit={parseInt(filterLimit?.Value ?? '100')}\r\n />}\r\n </>\r\n )\r\n}\r\n","import axios from 'axios';\r\nimport * as React from 'react';\r\nimport { TextField, Dialog, DialogFooter, PrimaryButton, DialogType, IDialogStyles } from '@fluentui/react';\r\nimport { PublicValuesODataService } from 'Definitions/Generated/PoliteMailAPI';\r\nimport { PMProgressIndicator } from 'components/SimpleComponents/PMProgressIndicator';\r\n\r\ninterface IUserLogin {\r\n\tUsername: string;\r\n\tPassword: string;\r\n}\r\n\r\nexport enum AuthModes {\r\n\tPassword = 'PASSWORD',\r\n\tSAML = 'SAML',\r\n\tOpenID = 'WSFED',\r\n\tWindows = 'WINDOWS',\r\n\tAzureAD = 'AZUREAD',\r\n\tNotSet = 'N/A'\r\n}\r\n\r\nconst dialogContentProps = {\r\n\ttype: DialogType.normal,\r\n\ttitle: 'Log Into Politemail',\r\n};\r\n\r\nexport const Login: React.FC = () => {\r\n\tconst baseURL = `https://${window.location.hostname}/ssv3`;\r\n\tconst service = React.useRef<PublicValuesODataService>(new PublicValuesODataService());\r\n\tconst [isLoading, setIsLoading] = React.useState<boolean>(true);\r\n\tconst [user, setUser] = React.useState<IUserLogin>({ Username: '', Password: '' });\r\n\r\n\tconst loginFormStyles: IDialogStyles = {\r\n\t\troot: [\r\n\t\t\t{\r\n\t\t\t\talignContent: 'center',\r\n\t\t\t},\r\n ],\r\n main:[]\r\n\t};\r\n\r\n\tReact.useEffect(() => {\r\n\t\tservice.current.GetDefaultLoginType().then((result) => {\r\n\t\t\tswitch (result.Value.toUpperCase()) {\r\n\t\t\t\tcase AuthModes.SAML: {\r\n\t\t\t\t\twindow.location.replace(`${baseURL}/Saml2.aspx`);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase AuthModes.OpenID: {\r\n\t\t\t\t\twindow.location.replace(`${baseURL}/OpenIDLogin.aspx`);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase AuthModes.Windows: {\r\n\t\t\t\t\twindow.location.replace(`${baseURL}/default.aspx`);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tsetIsLoading(false);\r\n\t\t});\r\n\t}, []);\r\n\r\n\tconst onFormSubmit = () => {\r\n\t\tconst body = `username=${user.Username}&password=${user.Password}`;\r\n\r\n\t\taxios.post(`https://${window.location.hostname}/ssv3/process_login.aspx`, body, {\r\n\t\t\theaders: { 'Content-Type': 'application/x-www-form-urlencoded' },\r\n\t\t}).then((resp) => {\r\n\t\t\tif (resp.status == 200) window.location.replace(`https://${window.location.hostname}/ui/manage_reports`);\r\n\t\t});\r\n\t};\r\n\r\n\treturn isLoading ? (\r\n\t\t<PMProgressIndicator />\r\n\t) : (\r\n\t\t<Dialog styles={loginFormStyles} dialogContentProps={dialogContentProps} hidden={false}>\r\n\t\t\t<TextField label=\"Username\" required onChange={(ev, val) => setUser({ ...user, Username: val })} />\r\n\t\t\t<TextField\r\n\t\t\t\tlabel=\"Password\"\r\n\t\t\t\ttype=\"password\"\r\n\t\t\t\tonChange={(ev, val) => setUser({ ...user, Password: val })}\r\n\t\t\t\tcanRevealPassword\r\n\t\t\t\trequired\r\n\t\t\t/>\r\n\t\t\t<DialogFooter>\r\n\t\t\t\t<PrimaryButton onClick={onFormSubmit} text=\"Login\" />\r\n\t\t\t</DialogFooter>\r\n\t\t</Dialog>\r\n\t);\r\n};\r\n","import * as React from \"react\";\r\nimport { ITag, Label } from \"@fluentui/react\";\r\nimport { TemplateODataService } from \"../../Definitions/Generated/Default/TemplateODataService\";\r\nimport { Tag } from \"../../Definitions/Generated/PoliteMailEntities/Models/Tag\";\r\nimport { IPMPanelProps } from \"./PMPanel\";\r\nimport { PMTagPicker } from \"../SimpleComponents/PMTagPicker\";\r\nimport { TagsODataService } from \"../../Definitions/Generated/Default/TagsODataService\";\r\nimport {\r\n ImagesODataService,\r\n LinksODataService,\r\n ParagraphsODataService,\r\n SmartAttachmentsODataService,\r\n} from \"../../Definitions/Generated/PoliteMailAPI\";\r\nimport { ITaggableService, ITagGroup } from \"../../Definitions/Generated/ITaggableSevice\";\r\n\r\nexport interface ITagsEntityPanelProps extends IPMPanelProps {\r\n EntityId: string;\r\n EntityName: string;\r\n Handler?: (tags: ITagGroup , markDirty?: boolean) => void;\r\n HasTagsHandler?: (entityID: number, hasTag: boolean) => void;\r\n}\r\n\r\nexport const TagsEntityEditControl: React.FC<ITagsEntityPanelProps> = (\r\n props: ITagsEntityPanelProps\r\n) => {\r\n const [selectedTags, setSelectedTags] = React.useState<ITag[]>([]);\r\n const [originalTags, setOriginalTags] = React.useState<ITag[]>([]);\r\n const [tagOptions, setTagOptions] = React.useState<ITag[]>([]);\r\n\r\n const tagsService = React.useRef<TagsODataService>(new TagsODataService());\r\n const entityService = React.useRef<ITaggableService<any>>();\r\n\r\n React.useEffect(() => {\r\n setAllTagOptions();\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n setEntityService();\r\n setExistingTagsForEntity();\r\n }, [props.EntityName]);\r\n\r\n React.useEffect(() => {\r\n setExistingTagsForEntity();\r\n }, [props.EntityId]);\r\n\r\n const setAllTagOptions = () => {\r\n tagsService.current\r\n .GetAll()\r\n .Exec()\r\n .then((tags: Tag[]) => {\r\n setTagOptions(\r\n tags.map((t) => {\r\n return { key: t.ID.toString(), name: t.Value };\r\n })\r\n );\r\n });\r\n };\r\n\r\n const setExistingTagsForEntity = () => {\r\n if (props.EntityId !== null && entityService.current) {\r\n entityService.current.GetTags(props.EntityId).then((tags) => {\r\n const selectedTags = tags.map((tag) => ({\r\n key: tag.ID,\r\n name: tag.Value,\r\n }));\r\n setSelectedTags(selectedTags);\r\n setOriginalTags(selectedTags);\r\n });\r\n }\r\n };\r\n\r\n const setEntityService = () => {\r\n switch (props.EntityName) {\r\n case \"Template\":\r\n entityService.current = new TemplateODataService();\r\n break;\r\n case \"Paragraph\":\r\n entityService.current = new ParagraphsODataService();\r\n break;\r\n case \"Image\":\r\n entityService.current = new ImagesODataService();\r\n break;\r\n case \"Link\":\r\n entityService.current = new LinksODataService();\r\n break;\r\n case \"SmartAttachment\":\r\n entityService.current = new SmartAttachmentsODataService();\r\n break;\r\n default:\r\n entityService.current = null;\r\n }\r\n };\r\n\r\n const onTagRemoved = (tag: ITag) => {\r\n const tags = selectedTags.filter((t) => t !== tag);\r\n setSelectedTags(tags);\r\n const group : ITagGroup = {originalTags: originalTags, selectedTags: tags};\r\n props.Handler ? props.Handler(group, true) : entityService.current.RemoveTag(props.EntityId, tag.name);\r\n props.HasTagsHandler?.(Number(props.EntityId), tags.length > 0)\r\n };\r\n\r\n const onFilterChanged = (filterText: string, tagList: ITag[]): ITag[] => {\r\n if (filterText) {\r\n const filteredSuggestions = tagOptions.filter(\r\n (tag) =>\r\n tag.name\r\n .toLocaleUpperCase()\r\n .includes(filterText.toLocaleUpperCase())\r\n );\r\n\r\n return filteredSuggestions.length > 0\r\n ? filteredSuggestions\r\n : [{ key: filterText, name: filterText }];\r\n }\r\n\r\n return [];\r\n };\r\n\r\n const onSaveTag = async (tag?: ITag): Promise<ITag> => {\r\n try {\r\n setSelectedTags([\r\n ...selectedTags,\r\n { key: 0, name: tag.name },\r\n ]);\r\n const group : ITagGroup = {originalTags: originalTags, selectedTags: [...selectedTags,{ key: 0, name: tag.name }]};\r\n props.Handler ? props.Handler(group, true) : entityService.current.AddTag(props.EntityId, tag.name);\r\n props.HasTagsHandler?.(Number(props.EntityId), true);\r\n return Promise.resolve(tag);\r\n } catch {\r\n return Promise.reject(tag);\r\n }\r\n };\r\n\r\n return (\r\n <div style={{ margin: \"4px\", padding: \"4px\" }}>\r\n <Label>Tags</Label>\r\n <PMTagPicker\r\n onResolveSuggestions={onFilterChanged}\r\n selectedItems={selectedTags}\r\n onItemSelected={onSaveTag}\r\n onRemoveItem={onTagRemoved}\r\n />\r\n </div>\r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { IButtonProps, DefaultButton, PrimaryButton, Spinner, SpinnerSize, getTheme, IButtonStyles } from \"@fluentui/react\";\r\nimport { SaveButtonStyles, PMButtonBaseStyles, MergeStyles, _PMMailButtonBaseStyles } from \"Definitions/Styles/StyleDefinitions\";\r\n\r\n\r\nexport const PMDefaultButton: React.FC<IButtonProps> = (props) => {\r\n return (\r\n <div style={{ margin: '3px', padding: '3px', display: \"block\" }}><DefaultButton {...props} styles={MergeStyles(PMButtonBaseStyles, props.styles)} /></div>\r\n );\r\n}\r\n\r\nexport const PMMailButton: React.FC<IButtonProps> = (props) => {\r\n const theme = getTheme();\r\n const PMMailButtonStyles: IButtonStyles = {\r\n root: [{\r\n color: theme.palette.themeDarker,\r\n backgroundColor: theme.palette.themeLighterAlt,\r\n minWidth: '60px',\r\n height: '35px',\r\n border: 0\r\n }],\r\n rootHovered: [{\r\n backgroundColor: theme.palette.themeLighter,\r\n }]\r\n }\r\n\r\n return (\r\n <div style={props.style ?? { padding: '0 6px' }}>\r\n <DefaultButton {...props} styles={PMMailButtonStyles} />\r\n </div>\r\n );\r\n}\r\n\r\nexport const PMPrimaryButton: React.FC<IButtonProps> = (props) => {\r\n return (\r\n <div style={{ margin: '3px', padding: '3px' }}><PrimaryButton {...props} styles={MergeStyles(PMButtonBaseStyles, props.styles)} /></div>\r\n );\r\n}\r\n\r\nexport interface IPMSaveButton extends IButtonProps {\r\n IsSaving?: boolean,\r\n Saved?: boolean\r\n}\r\n\r\nexport const PMSaveButton: React.FC<IPMSaveButton> = (props) => {\r\n const theme = getTheme();\r\n const buttonProps = { ...props };\r\n buttonProps.styles = MergeStyles(PMButtonBaseStyles, props.styles);\r\n buttonProps.disabled = props.Saved || props.IsSaving || props.disabled;\r\n buttonProps.text = props.text ?? \"Save\";\r\n\r\n return (\r\n <PMPrimaryButton {...buttonProps} >\r\n {props.IsSaving && (\r\n <Spinner size={SpinnerSize.small} />\r\n )}\r\n </PMPrimaryButton>\r\n );\r\n}","import { ICheckboxProps, Checkbox } from \"@fluentui/react\";\r\nimport * as React from \"react\";\r\nimport { PMCheckboxBaseStyles, PMCheckboxLabelDescription } from \"../../Definitions/Styles/StyleDefinitions\";\r\nimport { PMLabel } from \"./PMLabel\";\r\n\r\n\r\nexport interface IPMCheckboxProps extends ICheckboxProps {\r\n PMLabelProps?: React.CSSProperties\r\n}\r\n\r\n//TODO: Investigate - props.styles typeof IStyleFunctionOrObject\r\nexport const PMCheckbox: React.FC<IPMCheckboxProps> = (props) => {\r\n\r\n const onCustomRenderLabel = (text: string) => {\r\n if(props.onRenderLabel)\r\n return props.onRenderLabel();\r\n \r\n return <PMLabel style={props.PMLabelProps ?? {}} styles={PMCheckboxLabelDescription()} > {text}</ PMLabel>\r\n }\r\n\r\n return (\r\n <Checkbox {...props} boxSide={props.boxSide ?? \"start\"} onRenderLabel={() => onCustomRenderLabel(props.label)}\r\n styles={props.styles ? props.styles : PMCheckboxBaseStyles} />\r\n );\r\n}","import * as React from 'react';\r\nimport { IComboBoxProps, ComboBox, IComboBoxOption, IComboBox, mergeStyleSets, TooltipHost, IconButton } from \"@fluentui/react\";\r\nimport { NativeOdataServiceBase } from \"Definitions/Generated/NativeOdataServiceBase\";\r\nimport { PMEntity } from \"Definitions/PMEntity\";\r\nimport QueryFactory from \"Utils/Filtering/QueryFactory\";\r\nimport { FilterQueryBit } from \"Utils/Filtering/QueryBit\";\r\nimport { FilterType } from \"Utils/Filtering/QueryType\";\r\nimport { useId } from '@fluentui/react-hooks';\r\nimport { CustomField } from 'Definitions/Generated/PoliteMailEntities/Models/CustomField';\r\n\r\nexport interface IPMComboBoxProps extends IComboBoxProps {\r\n isHidden?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface IPMLargeComboBox<T extends PMEntity> extends IComboBoxProps{\r\n dataSource: NativeOdataServiceBase<T>\r\n filter: QueryFactory\r\n displayProperty: string\r\n selectedValue?:number\r\n onSelectionChange?: (option:IComboBoxOption)=>void\r\n}\r\n\r\nexport interface IPMComboBoxWithTooltipProps extends IPMComboBoxProps {\r\n}\r\n\r\nexport const PMComboBox: React.FC<IPMComboBoxProps> = (props) => {\r\n const options = props.options;\r\n \r\n if (props.isHidden) {\r\n return (<React.Fragment />)\r\n } else {\r\n return (\r\n <ComboBox \r\n id={props.id ?? \"combo\"}\r\n disabled={props.disabled}\r\n styles={mergeStyleSets(props.styles, {container: {margin: 4, padding: 4}, optionsContainer: {maxHeight: 200}})}\r\n {...props} \r\n />\r\n );\r\n }\r\n}\r\n\r\nexport const PMLargeComboBox: React.FC<IPMLargeComboBox<PMEntity>> = (props) => {\r\n const [dropDownOptions, setDropDownOptions] = React.useState<IComboBoxOption[]>([])\r\n const [searchForMoreString, setSearchForMoreString] = React.useState<string>(\"\")\r\n let typeTimeout:any = null;\r\n\r\n const clickComboBox = (event: React.MouseEvent<IComboBox, MouseEvent>) => {\r\n \r\n props.dataSource.GetAllWithFilter(props.filter.toQuery()).Exec().then(options => {\r\n const selectedOption = dropDownOptions.find(o => o.selected)\r\n const dbOptions = options.Value.map(cv => {\r\n if(Object.keys(cv).find(k => k === props.displayProperty.toString())){\r\n const obj:any = cv\r\n return {\r\n key: obj[\"ID\"],\r\n text: obj[props.displayProperty],\r\n selected: selectedOption?.key === obj[\"ID\"] ? true : false\r\n } as IComboBoxOption\r\n }\r\n })\r\n if(selectedOption != undefined && !dbOptions.find(o => o.key === selectedOption.key))\r\n dbOptions.push(selectedOption)\r\n\r\n setDropDownOptions(dbOptions)\r\n })\r\n }\r\n\r\n React.useEffect(() => {\r\n if(props.selectedValue && props.selectedValue !== -1){\r\n const queryFilter = new QueryFactory();\r\n let queryConditions:FilterQueryBit[] = []\r\n queryConditions.push(props.filter.GetFilter() as FilterQueryBit)\r\n queryConditions.push({ field: \"ID\", value: props.selectedValue.toString(), filterType: FilterType.EqualsNumber });\r\n queryFilter.filter({\r\n operator: \"and\",\r\n conditions: queryConditions\r\n })\r\n\r\n props.dataSource.GetAllWithFilter(queryFilter.toQuery()).Exec().then(options => {\r\n setDropDownOptions(options.Value.map(cv => {\r\n if(Object.keys(cv).find(k => k === props.displayProperty.toString())){\r\n const obj:any = cv\r\n return {\r\n key: obj[\"ID\"],\r\n text: obj[props.displayProperty],\r\n selected: true\r\n }\r\n }\r\n }))\r\n \r\n })\r\n }\r\n else if(props.selectedValue){\r\n setDropDownOptions(props.options)\r\n }\r\n }, [])\r\n\r\n const changeComboBox = (event: React.FormEvent<IComboBox>, option?: IComboBoxOption, index?: number, value?: string) => {\r\n if(option){\r\n dropDownOptions.forEach(o => o.selected = false)\r\n option.selected = true;\r\n \r\n if(props.onSelectionChange)\r\n props.onSelectionChange(option)\r\n\r\n }\r\n else{\r\n const nOption = {key: -1, text:value} as IComboBoxOption\r\n nOption.selected = true;\r\n setDropDownOptions([...dropDownOptions, nOption])\r\n \r\n if(props.onSelectionChange)\r\n props.onSelectionChange(nOption)\r\n }\r\n }\r\n\r\n const loadMoreContacts = (event: React.KeyboardEvent<IComboBox>) => {\r\n setSearchForMoreString(searchForMoreString + event.key);\r\n if(typeTimeout) clearTimeout(typeTimeout)\r\n typeTimeout = setTimeout(() => {\r\n if(searchForMoreString != \"\"){ \r\n const queryFilter = new QueryFactory();\r\n let queryConditions:FilterQueryBit[] = []\r\n queryConditions.push(props.filter.GetFilter() as FilterQueryBit)\r\n queryConditions.push({ field: props.displayProperty, value: searchForMoreString, filterType: FilterType.Contains });\r\n queryFilter.filter({\r\n operator: \"and\",\r\n conditions: queryConditions\r\n })\r\n \r\n\r\n props.dataSource.GetAllWithFilter(queryFilter.toQuery()).Exec().then(options => {\r\n const selectedOption = dropDownOptions.find(o => o.selected)\r\n const dbOptions = options.Value.map(cv => {\r\n if(Object.keys(cv).find(k => k === props.displayProperty.toString())){\r\n const obj:any = cv\r\n return {\r\n key: obj[\"ID\"],\r\n text: obj[props.displayProperty],\r\n selected: selectedOption?.key === obj[\"ID\"] ? true : false\r\n } as IComboBoxOption\r\n }\r\n })\r\n if(selectedOption != undefined && !dbOptions.find(o => o.key === selectedOption.key))\r\n dbOptions.push(selectedOption)\r\n \r\n setDropDownOptions(dbOptions)\r\n })\r\n }\r\n }, 200)\r\n\r\n }\r\n\r\n return <ComboBox \r\n {...props}\r\n text={props.text}\r\n autoComplete={\"on\"}\r\n onClick={clickComboBox}\r\n options={dropDownOptions}\r\n onChange={changeComboBox}\r\n onKeyPress={loadMoreContacts}\r\n disabled={props.disabled}\r\n ></ComboBox>\r\n}\r\n\r\n\r\nexport const PMComboBoxWithDeleteButton: React.FC<IPMComboBoxProps> = (props) => {\r\n const thisProps = { ...props };\r\n const tooltipId = useId('tooltip');\r\n\r\n if (props.isHidden) {\r\n return (<React.Fragment />)\r\n } else {\r\n return (\r\n <div className=\"ms-Grid\" dir=\"ltr\">\r\n <div className=\"ms-Grid-row\" >\r\n <div className=\"ms-Grid-col ms-sm12\" style={{ display: \"flex\"}}>\r\n <PMComboBox\r\n {...thisProps}\r\n disabled={props.disabled}\r\n styles={{\r\n root: {\r\n flex: \"1\"\r\n }\r\n }}\r\n />\r\n <TooltipHost\r\n content=\"Delete\"\r\n id={tooltipId}\r\n calloutProps={{ gapSpace: 0 }}\r\n >\r\n <IconButton\r\n iconProps={{ iconName: 'Cancel' }}\r\n title=\"DeleteField\"\r\n ariaLabel=\"Delete\"\r\n />\r\n </TooltipHost>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport const PMComboBoxWithTooltip: React.FC<IPMComboBoxWithTooltipProps> = (props) => {\r\n const [currTooltip, setCurrTooltip] = React.useState<string>(\"\");\r\n\r\n const selectedItemChanged = React.useCallback((event: React.FormEvent<IComboBox>, option?: IComboBoxOption, index?: number) => {\r\n if(option && \"DataType\" in option.data)\r\n {// CustomField\r\n const dataType = (option.data as CustomField).DataType\r\n switch(dataType.toLocaleLowerCase()){\r\n case \"number\":\r\n setCurrTooltip(`Custom Field Type ${dataType}: Ex. 90, -155, 2,000`);\r\n break;\r\n case \"datetime\":\r\n setCurrTooltip(`Custom Field Type ${dataType}: Format: MM DD YY HH:MM:SS`);\r\n break;\r\n case \"boolean\":\r\n setCurrTooltip(`Custom Field Type ${dataType}: Ex. True/False/true/false`)\r\n break;\r\n default:\r\n setCurrTooltip(``);\r\n break;\r\n }\r\n }\r\n else\r\n setCurrTooltip(\"\")\r\n },[])\r\n\r\n return (\r\n <TooltipHost \r\n content={currTooltip}\r\n >\r\n <PMComboBox \r\n onItemClick={selectedItemChanged}\r\n {...props}>\r\n\r\n </PMComboBox>\r\n </TooltipHost>\r\n )\r\n\r\n}","import * as React from 'react';\r\nimport { Dialog, IDialogProps, DialogType, TextField, TooltipHost } from '@fluentui/react';\r\n\r\nimport { PMPrimaryButton, PMDefaultButton } from './PMButton';\r\nimport { PMDialogBaseStyles } from 'Definitions/Styles/StyleDefinitions';\r\nimport { PMFormGrid } from './PMFormGrid';\r\nimport { PMDialogFooter } from './PMDialogFooter';\r\nimport { GetErrorMessageForValidationResult, ValidationResult } from 'Definitions/Generated/PoliteMailEntities/Models/PMPropertyDescriptor';\r\nimport { List } from 'Definitions/Generated/PoliteMailEntities/Models/List';\r\nimport { ListsODataService } from 'Definitions/Generated/Default/ListsODataService';\r\nimport { listApiHooks } from 'store/features/listsApiSlice';\r\nimport QueryFactory from 'Utils/Filtering/QueryFactory';\r\nimport { baseApi, RTKQueryTags } from 'store/features/baseApiSlice';\r\nimport { useAppDispatch, useAppSelector } from 'store/hooks';\r\nimport { PMCheckbox } from './PMCheckbox';\r\nimport { ColumnAsInput } from 'components/Utility/Factories/ModelPropertyFactory';\r\nimport { MailingListsPanelColumns } from 'Definitions/PanelColumnDefinitions';\r\nimport { ColumnDataType } from 'Definitions/GridColumnDefinitions';\r\nimport { IPMPropertyValidator } from 'components/Panels/PMPanel';\r\nimport { ListFilter } from '@politemail/ui-components';\r\nimport { ProfileManager } from 'Utils/GlobalProfile';\r\nimport { SubscriptionDisabledTooltip } from 'components/Pages/ListsPages/FilteredListPage';\r\nimport { MapColumns } from 'components/Utility/ColumnMapper';\r\nimport { RootState } from 'store/store';\r\n\r\n//TODO: Investigate - props.styles typeof IStyleFunctionOrObject\r\nexport const PMDialog: React.FC<IDialogProps> = (props) => {\r\n\treturn <Dialog {...props} styles={PMDialogBaseStyles} />;\r\n};\r\n\r\nexport interface IPMConfirmationDialogProps extends IPMOkDialogProps {\r\n\tcancelClick?: () => void;\r\n\tcancelText?: string;\r\n}\r\n\r\nexport interface IPMOkDialogProps extends IDialogProps {\r\n\ttext: string;\r\n\ttitle?: string;\r\n\tbuttonText?: string;\r\n\tbuttonDisabled?: boolean;\r\n\tonButtonClick?: () => void;\r\n}\r\n\r\nexport interface IPMTextFieldDialogProps extends IPMConfirmationDialogProps {\r\n\tvalue: string;\r\n\tonChange: (changedValue: string) => void;\r\n}\r\n\r\nexport interface IPMTickboxDialogProps extends IDialogProps {\r\n\ttext: string;\r\n\ttitle?: string;\r\n\tokButtonText: string;\r\n\tisSending: boolean;\r\n\tonOkClicked: (tickboxValue: boolean) => void;\r\n\tonCancelClicked: () => void\r\n}\r\n\r\nexport const PMOkDialog: React.FC<IPMOkDialogProps> = (props) => {\r\n\treturn (\r\n\t\t<PMDialog\r\n\t\t\tdialogContentProps={{\r\n\t\t\t\ttype: DialogType.normal,\r\n\t\t\t\ttitle: props.title ?? '',\r\n\t\t\t\tcloseButtonAriaLabel: 'Close',\r\n\t\t\t\tsubText: props.text,\r\n\t\t\t}}\r\n\t\t\t{...props}>\r\n\t\t\t{props.children}\r\n\t\t\t<PMDialogFooter>\r\n\t\t\t\t<PMPrimaryButton onClick={props.onButtonClick ?? props.onDismiss} text={props.buttonText ?? 'OK'} />,\r\n\t\t\t</PMDialogFooter>\r\n\t\t</PMDialog>\r\n\t);\r\n};\r\n\r\nexport const PMCancelDialog: React.FC<IPMOkDialogProps> = (props) => {\r\n\treturn (\r\n\t\t<PMDialog\r\n\t\t\tdialogContentProps={{\r\n\t\t\t\ttype: DialogType.normal,\r\n\t\t\t\ttitle: props.title ?? '',\r\n\t\t\t\tcloseButtonAriaLabel: 'Close',\r\n\t\t\t\tsubText: props.text,\r\n\t\t\t}}\r\n\t\t\t{...props}>\r\n\t\t\t{props.children}\r\n\t\t\t<PMDialogFooter>\r\n\t\t\t\t<PMFormGrid\r\n\t\t\t\t\tComponents={[\r\n\t\t\t\t\t\t<PMPrimaryButton\r\n\t\t\t\t\t\t\tonClick={props.onButtonClick ?? props.onDismiss}\r\n\t\t\t\t\t\t\ttext={props.buttonText ?? 'Cancel'}\r\n\t\t\t\t\t\t\tdisabled={props.buttonDisabled ?? false}\r\n\t\t\t\t\t\t/>,\r\n\t\t\t\t\t]}\r\n\t\t\t\t\tColumnClassName=\"ms-Grid-col\"></PMFormGrid>\r\n\t\t\t</PMDialogFooter>\r\n\t\t</PMDialog>\r\n\t);\r\n};\r\n\r\nexport const PMConfirmationDialog: React.FC<IPMConfirmationDialogProps> = (props) => {\r\n\treturn (\r\n\t\t<PMDialog\r\n\t\t\tdialogContentProps={{\r\n\t\t\t\ttype: DialogType.normal,\r\n\t\t\t\ttitle: props.title ?? '',\r\n\t\t\t\tcloseButtonAriaLabel: 'Close',\r\n\t\t\t\tsubText: props.text,\r\n\t\t\t\tstyles: ({subText:{maxHeight: \"500px\", overflowY: \"auto\"}}),\r\n\t\t\t}}\r\n\t\t\t{...props}>\r\n\t\t\t{props.children}\r\n\t\t\t<PMDialogFooter>\r\n\t\t\t\t<PMPrimaryButton onClick={props.onButtonClick}>{props.buttonText ?? 'OK'}</PMPrimaryButton>\r\n\t\t\t\t<PMDefaultButton onClick={props.cancelClick}>{props.cancelText ?? 'Cancel'}</PMDefaultButton>\r\n\t\t\t</PMDialogFooter>\r\n\t\t</PMDialog>\r\n\t);\r\n};\r\n\r\nexport const PMYesNoDialog: React.FC<IPMConfirmationDialogProps> = (props) => {\r\n\tconst onRenderFooterContent = () => {\r\n\t\treturn (\r\n\t\t\t<PMFormGrid\r\n\t\t\t\tComponents={[\r\n\t\t\t\t\t<PMPrimaryButton onClick={props.onButtonClick}>{'Yes'}</PMPrimaryButton>,\r\n\t\t\t\t\t<PMDefaultButton onClick={props.cancelClick}>{'No'}</PMDefaultButton>,\r\n\t\t\t\t]}\r\n\t\t\t\tColumnClassName=\"ms-Grid-col\"></PMFormGrid>\r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<PMDialog\r\n\t\t\tdialogContentProps={{\r\n\t\t\t\ttype: DialogType.normal,\r\n\t\t\t\ttitle: props.title ?? '',\r\n\t\t\t\tcloseButtonAriaLabel: 'Close',\r\n\t\t\t\tsubText: props.text,\r\n\t\t\t}}\r\n\t\t\t{...props}>\r\n\t\t\t<PMDialogFooter>{onRenderFooterContent()}</PMDialogFooter>\r\n\t\t</PMDialog>\r\n\t);\r\n};\r\n\r\nexport const PMTextFieldDialog: React.FC<IPMTextFieldDialogProps> = (props) => {\r\n\tconst onRenderFooterContent = () => {\r\n\t\treturn (\r\n\t\t\t<PMFormGrid\r\n\t\t\t\tComponents={[\r\n\t\t\t\t\t<PMPrimaryButton onClick={props.onButtonClick}>{'OK'}</PMPrimaryButton>,\r\n\t\t\t\t\t<PMDefaultButton onClick={props.cancelClick}>{'Cancel'}</PMDefaultButton>,\r\n\t\t\t\t]}\r\n\t\t\t\tColumnClassName=\"ms-Grid-col\"></PMFormGrid>\r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<PMDialog\r\n\t\t\tdialogContentProps={{\r\n\t\t\t\ttype: DialogType.normal,\r\n\t\t\t\ttitle: props.title ?? '',\r\n\t\t\t\tcloseButtonAriaLabel: 'Close',\r\n\t\t\t\tsubText: props.text,\r\n\t\t\t}}\r\n\t\t\tmaxWidth=\"none\"\r\n\t\t\t{...props}>\r\n\t\t\t<TextField\r\n\t\t\t\tmultiline\r\n\t\t\t\tautoAdjustHeight\r\n\t\t\t\tvalue={props.value}\r\n\t\t\t\tonChange={(event, changedValue) => props.onChange(changedValue)}\r\n\t\t\t/>\r\n\t\t\t<PMDialogFooter>{onRenderFooterContent()}</PMDialogFooter>\r\n\t\t</PMDialog>\r\n\t);\r\n};\r\n\r\nexport interface IPMEditListNameDialogProps extends IPMConfirmationDialogProps {\r\n\tfilteredList: ListFilter;\r\n\thandleCloseDialog?: () => void;\r\n\tonSaveListNameOverride?:(updatedFilteredList: ListFilter) => void;\r\n}\r\n\r\nconst propertyValidator : IPMPropertyValidator = {\r\n\tRequired: false,\r\n\tMinLength: -1,\r\n\tMaxLength: -1,\r\n\tIsEmail: false\r\n}\r\n\r\nexport const PMEditListNameDialog: React.FC<IPMEditListNameDialogProps> = (props) => {\r\n\r\n\tconst [validationResult, setValidationResult] = React.useState<ValidationResult>(undefined);\r\n\tconst [filteredList, setFilteredList] = React.useState<ListFilter>(props.filteredList);\r\n\tconst featureFlags = useAppSelector((state: RootState) => state.featureFlagsSlice);\r\n\tconst newFilteredListFlag = featureFlags.find((flag) => flag.name.indexOf(\"New Filtered List Editor\") !== -1);\r\n\tconst dispatch = useAppDispatch();\r\n\r\n\tconst { data: allLists } = listApiHooks.useGetListsQuery({ query: new QueryFactory().select(['ID', 'Name', 'IsNewFeatureFilteredList']).toQuery() });\r\n\r\n\tconst setFilteredListDefaults = React.useCallback(() => {\r\n\t\tsetFilteredList({\r\n\t\t\tBusinessID: ProfileManager.GetGlobalProfile().BusinessID,\r\n\t\t\tRegionID: ProfileManager.GetGlobalProfile().RegionID,\r\n\t\t\tOwnerID: ProfileManager.GetGlobalProfile().UserID,\r\n\t\t\tShared: false,\r\n\t\t\tIsNewsletter: 0,\r\n\t\t} as ListFilter);\r\n\t}, [setFilteredList]);\r\n\r\n\tconst requiredPropertyValidator : IPMPropertyValidator = {\r\n\t\tRequired: true,\r\n\t\tMinLength: -1,\r\n\t\tMaxLength: -1,\r\n\t\tIsEmail: false,\r\n\t\tCustomValidationMethod: () => validationResult\r\n\t}\r\n\r\n\tconst handleOnCancel = React.useCallback(() => {\r\n\t\tif(props.handleCloseDialog)\r\n\t\t\tprops.handleCloseDialog();\r\n\t\tsetValidationResult(undefined);\r\n\t}, [props.handleCloseDialog, setValidationResult, setFilteredListDefaults, filteredList]);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif(!props.filteredList)\r\n\t\t\tsetFilteredListDefaults();\r\n\t\telse\r\n\t\t\tsetFilteredList(props.filteredList);\r\n\t}, [props.filteredList, setFilteredList]);\r\n\r\n\tconst IsValidListName = (lists: List[], currentListName: string, currentListId: number) => {\r\n\t\tlet validResult = ValidationResult.Valid\r\n\r\n\t\tif (!currentListName || currentListName.length <= 0)\r\n\t\t\tvalidResult = ValidationResult.Required;\r\n\r\n\t\tlists.forEach(l => {\r\n\t\t\tif(l.Name === currentListName && l.ID != currentListId)\r\n\t\t\t\tvalidResult = ValidationResult.DuplicateListName;\r\n\t\t});\r\n\r\n\t\treturn validResult;\r\n\t};\r\n\r\n\tconst handleOnSave = () => {\r\n\t\tif (props.filteredList && filteredList.Name === props.filteredList.Name && filteredList.Description === props.filteredList.Description &&\r\n\t\t\tfilteredList.BusinessID === props.filteredList.BusinessID && filteredList.RegionID === props.filteredList.RegionID\r\n\t\t\t&& filteredList.OwnerID === props.filteredList.OwnerID && filteredList.IsNewsletter === props.filteredList.IsNewsletter && filteredList.Shared === props.filteredList.Shared)\r\n\t\t{\r\n\t\t\thandleOnCancel();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst validResult = IsValidListName(allLists, filteredList?.Name, props.filteredList?.ListID);\r\n\t\tif(validResult === ValidationResult.Valid && props.onSaveListNameOverride)\r\n\t\t{\r\n\t\t\tprops.onSaveListNameOverride(filteredList);\r\n\t\t}\r\n\t\telse if (validResult === ValidationResult.Valid && props.filteredList?.ListID) {\r\n\t\t\tsetValidationResult(undefined);\r\n\t\t\tconst listService = new ListsODataService();\r\n\t\t\tconst listModel = {\r\n\t\t\t\tID: filteredList.ListID,\r\n\t\t\t\tBusinessID: filteredList.BusinessID,\r\n\t\t\t\tRegionID: filteredList.RegionID,\r\n\t\t\t\tOwnerID: filteredList.OwnerID,\r\n\t\t\t\tShared: filteredList.Shared,\r\n\t\t\t\tIsNewsletter: filteredList.IsNewsletter,\r\n\t\t\t\tDescription: filteredList.Description,\r\n\t\t\t\tName: filteredList.Name\r\n\t\t\t} as List\r\n\r\n\t\t\tlistService.Patch(props.filteredList.ListID, listModel).then(() => {\r\n\t\t\t\tif(newFilteredListFlag?.isFeatureEnabled)\r\n\t\t\t\t\tdispatch(baseApi.util.invalidateTags([{type: RTKQueryTags.ListFilter, id: filteredList.ID}]));\r\n\t\t\t\tdispatch(baseApi.util.invalidateTags([{type: RTKQueryTags.List, id: filteredList.ListID}]));\r\n\t\t\t\thandleOnCancel();\r\n\t\t\t});\r\n\t\t}\r\n\t\telse {\r\n\t\t\tsetValidationResult(validResult);\r\n\t\t}\r\n\t}\r\n\r\n\tconst getInputHandler = React.useCallback((fieldName: string) => {\r\n\t\treturn (changedValue : any) => {\r\n\t\t\tlet updatedFilteredList = {...filteredList} as ListFilter\r\n\t\t\tupdatedFilteredList[fieldName] = changedValue;\r\n\t\t\tsetFilteredList(updatedFilteredList);\r\n\t\t}\r\n\t}, [filteredList, setFilteredList]);\r\n\r\n\treturn (\r\n\t\t<PMDialog\r\n\t\t\thidden={props.hidden}\r\n\t\t\tminWidth={\"340px\"}\r\n\t\t\tdialogContentProps={{\r\n\t\t\t\ttype: DialogType.normal,\r\n\t\t\t\ttitle: props.title ?? '',\r\n\t\t\t\tcloseButtonAriaLabel: 'Close',\r\n\t\t\t}}\r\n\t\t\t{...props}>\r\n\t\t\t<PMFormGrid\r\n\t\t\t\tComponents={MapColumns(MailingListsPanelColumns)\r\n\t\t\t\t\t.filter(column => column.dataType !== ColumnDataType.VerificationInfo)\r\n\t\t\t\t\t.map((column) => {\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t<TooltipHost key={column.key} content={column.name === \"Subscription\" ? SubscriptionDisabledTooltip : ''}>\r\n\t\t\t\t\t\t\t\t<ColumnAsInput\r\n\t\t\t\t\t\t\t\t\tid={column.key}\r\n\t\t\t\t\t\t\t\t\tkey={column.key}\r\n\t\t\t\t\t\t\t\t\tfield={column.name}\r\n\t\t\t\t\t\t\t\t\teditable={column.editable && column.name !== \"Subscription\"}\r\n\t\t\t\t\t\t\t\t\tValidator={column.name === \"Mailing List Name\" ? requiredPropertyValidator : propertyValidator}\r\n\t\t\t\t\t\t\t\t\tvalue={filteredList ? filteredList[column.fieldName] : undefined}\r\n\t\t\t\t\t\t\t\t\ttype={column.dataType}\r\n\t\t\t\t\t\t\t\t\tlabel={column.name}\r\n\t\t\t\t\t\t\t\t\thandler={getInputHandler(column.fieldName)}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</TooltipHost>\r\n\t\t\t\t\t\t);\r\n\t\t\t\t})}\r\n\t\t\t/>\r\n\r\n\t\t\t<PMDialogFooter>\r\n\t\t\t\t<PMPrimaryButton onClick={handleOnSave}>{'Save'}</PMPrimaryButton>\r\n\t\t\t\t<PMDefaultButton onClick={handleOnCancel}>{'Cancel'}</PMDefaultButton>\r\n\t\t\t</PMDialogFooter>\r\n\t\t</PMDialog>\r\n\t);\r\n};\r\n\r\nexport const PMTickboxDialog: React.FC<IPMTickboxDialogProps> = (props) => {\r\n const [tickBoxValue, setTickBoxValue] = React.useState<boolean>(false);\r\n\r\n\tconst onOkButtonClick = React.useCallback(() => {\r\n\t\tprops.onOkClicked(tickBoxValue)\r\n\t}, [props, tickBoxValue]);\r\n\r\n\tconst updateTickboxValue = React.useCallback((ev: React.FormEvent<HTMLElement | HTMLInputElement>, checked: boolean) => {\r\n\t\tsetTickBoxValue(checked)\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t<PMDialog\r\n\t\t\tminWidth={400}\r\n\t\t\tdialogContentProps={{\r\n\t\t\t\tshowCloseButton: false,\r\n\t\t\t\ttype: DialogType.normal,\r\n\t\t\t\ttitle: props.title ?? '',\r\n\t\t\t\tsubText: props.text,\r\n\t\t\t}}\r\n\t\t\t{...props}>\r\n\t\t\t{props.children}\r\n\t\t\t<PMCheckbox onChange={updateTickboxValue} label={\"Don't show me this again.\"} />\r\n\t\t\t<PMDialogFooter>\r\n\t\t\t\t<PMPrimaryButton onClick={onOkButtonClick} text={props.okButtonText}/>\r\n\t\t\t\t{props.isSending &&\r\n\t\t\t\t<PMDefaultButton onClick={props.onCancelClicked} text={'Cancel'}/>}\r\n\t\t\t</PMDialogFooter>\r\n\t\t</PMDialog>\r\n\t);\r\n};\r\n\r\n","import * as React from 'react';\r\nimport { IDialogFooterProps, DialogFooter, IDialogFooterStyles } from '@fluentui/react';\r\n\r\nexport interface IPMDialogFooterProps extends IDialogFooterProps {\r\n\tstyle?: IDialogFooterStyles;\r\n}\r\n\r\nexport const PMDialogFooter: React.FC<IDialogFooterProps> = (props) => {\r\n\treturn (\r\n\t\t<DialogFooter\r\n\t\t\t{...props}\r\n\t\t\tstyles={\r\n\t\t\t\tprops.styles ?? {\r\n\t\t\t\t\tactionsRight: {\r\n\t\t\t\t\t\tmargin: '0px',\r\n\t\t\t\t\t\tpadding: '0px',\r\n\t\t\t\t\t\tlineHeight: '0px',\r\n\t\t\t\t\t},\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t/>\r\n\t);\r\n};\r\n","import * as React from \"react\";\r\nimport { PMDropDownBaseStyles } from \"../../Definitions/Styles/StyleDefinitions\";\r\nimport { useId } from '@fluentui/react-hooks';\r\nimport { Dropdown, IconButton, IDropdownProps, IDropdownStyleProps, IDropdownStyles, IStyleFunctionOrObject, mergeStyleSets, Stack, TooltipHost, getTheme } from \"@fluentui/react\";\r\nimport { PMLabel } from \"./PMLabel\";\r\n\r\nconst theme = getTheme();\r\nexport interface IPMDropDownProps extends IDropdownProps {\r\n isHidden?: boolean;\r\n}\r\n//TODO: Investigate - props.styles typeof IStyleFunctionOrObject\r\nexport const PMDropDown: React.FC<IPMDropDownProps> = (props) => {\r\n if (props.isHidden) {\r\n return (<React.Fragment />)\r\n } else {\r\n return (\r\n <Dropdown {...props} styles={mergeStyleSets(PMDropDownBaseStyles, props.styles) as IStyleFunctionOrObject<IDropdownStyleProps, IDropdownStyles>} />\r\n );\r\n }\r\n}\r\n\r\nexport interface IPMDropDownWithDeleteButtonProps extends IPMDropDownProps {\r\n onDeleteClick?: () => void\r\n}\r\n\r\nexport const PMDropDownWithDeleteButton: React.FC<IPMDropDownWithDeleteButtonProps> = (props) => {\r\n const tooltipId = useId('tooltip');\r\n const dropdownStyles = {\r\n root: {\r\n flex: \"1\",\r\n marginRight: \"0\",\r\n paddingRight: \"0\"\r\n }\r\n } as IDropdownStyles;\r\n\r\n if (props.isHidden) {\r\n return (<React.Fragment />)\r\n } else {\r\n return (\r\n <div className=\"ms-Grid\" dir=\"ltr\">\r\n <div className=\"ms-Grid-row\" >\r\n <div className=\"ms-Grid-col ms-sm12\" style={{ display: \"flex\" }}>\r\n <PMDropDown {...props} styles={dropdownStyles} />\r\n <div style={{ paddingTop: \"36px\", paddingRight: \"6px\" }}>\r\n <TooltipHost\r\n content=\"Delete\"\r\n id={tooltipId}\r\n calloutProps={{ gapSpace: 0 }}\r\n >\r\n <IconButton\r\n iconProps={{ iconName: 'Cancel' }}\r\n title=\"DeleteField\"\r\n ariaLabel=\"Delete\"\r\n onClick={props.onDeleteClick}\r\n />\r\n </TooltipHost>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport interface IPMDescriptionDropDownProps extends IPMDropDownProps {\r\n summary: string,\r\n subtext?: string,\r\n useOptionsForSize?: boolean,\r\n baseSize?: number,\r\n sizePerCharacter?: number\r\n}\r\n\r\nexport const PMDescriptionDropDown: React.FC<IPMDescriptionDropDownProps> = (props) => {\r\n\r\n const getTextFieldStyles = (): Partial<IDropdownStyles> => {\r\n const largestOption = props.options.reduce((a, b) => a.text.length > b.text.length ? a : b)\r\n const base: number = props.baseSize ? props.baseSize : 25;\r\n const interval: number = props.sizePerCharacter ? props.sizePerCharacter : 15;\r\n return ({ dropdown: { width: base + interval * largestOption.text.length } })\r\n };\r\n\r\n const _renderLabel = (props?: IPMDescriptionDropDownProps, defaultRender?: (props?: IPMDescriptionDropDownProps) => JSX.Element | null): JSX.Element => {\r\n const PMLabelStyle: React.CSSProperties = {\r\n paddingLeft: \"0px\",\r\n marginLeft: \"0px\",\r\n paddingBottom: \"6px\",\r\n paddingTop: \"0px\",\r\n color: theme.palette.neutralSecondary\r\n }\r\n return (\r\n <Stack\r\n verticalAlign=\"center\"\r\n >\r\n <span>{defaultRender(props)}</span>\r\n <PMLabel style={PMLabelStyle}>{props.summary}</PMLabel>\r\n {props.subtext && (\r\n <PMLabel style={PMLabelStyle}>{props.subtext}</PMLabel>\r\n )}\r\n </Stack>\r\n );\r\n }\r\n\r\n\r\n if (props.isHidden) {\r\n return (<React.Fragment />)\r\n } else {\r\n return (\r\n <PMDropDown {...props} onRenderLabel={_renderLabel} styles={props.useOptionsForSize ? getTextFieldStyles() : null} />\r\n );\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport { PMTextFieldBaseStyles, ConvertToCSSProperties, PMFilePickerBaseStyles } from \"../../Definitions/Styles/StyleDefinitions\";\r\nimport { PMFormGrid } from \"./PMFormGrid\";\r\nimport { PMDefaultButton } from \"./PMButton\";\r\nimport { PMLabel } from \"./PMLabel\";\r\nimport { PMOkDialog } from \"./PMDialog\";\r\n\r\ninterface IPMFilePicker {\r\n Content: string;\r\n Handler?: (selectorFiles: string) => void;\r\n FileSelectHandler?: (selectorFiles: FileList) => void;\r\n AllowedFileTypes?: string;\r\n}\r\n\r\n//TODO: Convert styles object to style\r\nexport const PMFilePicker: React.FC<IPMFilePicker> = (props) => {\r\n const [fileName, setFileName] = React.useState<string>(\"\")\r\n\r\n const handleChange = (selectorFiles: FileList) => {\r\n if (!selectorFiles?.length)\r\n return;\r\n\r\n setFileName(selectorFiles[0].name)\r\n\r\n if (props.FileSelectHandler)\r\n props.FileSelectHandler(selectorFiles);\r\n\r\n if (props.Handler) {\r\n let reader = new FileReader();\r\n \r\n reader.readAsDataURL(selectorFiles[0]);\r\n reader.onload = (event) => {\r\n let data: string = event.target.result.toString();\r\n var regex = new RegExp('data:[^;]*;base64,');\r\n var results = regex.exec(data);\r\n if (results)\r\n data = data.replace(results[0], \"\");\r\n\r\n props.Handler(data);\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <div>\r\n <PMFormGrid\r\n Components={[\r\n <PMFormGrid\r\n Components={[\r\n <PMDefaultButton onClick={() => document.getElementById(\"filePicker\").click()} >{props.Content.length > 0 ? props.Content : \"Browse\"}</PMDefaultButton> \r\n ]}\r\n ColumnClassName=\"ms-Grid-col ms-sm4 ms-md4 ms-lg4\"></PMFormGrid>,\r\n <PMLabel style={{height:\"100%\", width:\"100%\"}}>{fileName}</PMLabel>,\r\n <input id={\"filePicker\"} multiple={false} type=\"file\" onChange={(e) => handleChange(e.target.files)} accept={props.AllowedFileTypes ?? \"*.*\"} style={{ padding: \"4px 4px 4px 4px\", display:\"none\" }}/>\r\n ]}\r\n ColumnClassName=\"ms-Grid-col ms-sm6 ms-md6 ms-lg6\">\r\n </PMFormGrid>\r\n </div>\r\n )\r\n}","import * as React from 'react';\r\nimport {\r\n\tMergeStyles,\r\n\tPMFormGridBaseStyles,\r\n\tConvertToCSSProperties,\r\n\tIComponentStyles,\r\n} from 'Definitions/Styles/StyleDefinitions';\r\n\r\nexport interface IPMFormGridProps {\r\n\tComponents: React.ReactNode[];\r\n\tColumnClassName?: string;\r\n\tstyle?: IComponentStyles<any>;\r\n}\r\n\r\nexport const PMRowsGrid: React.FC<IPMFormGridProps> = (props) => {\r\n\tconst columnClassName: string = 'ms-Grid-col ms-sm12 ms-md12 ms-lg12';\r\n\r\n\treturn (\r\n\t\t<div className=\"ms-Grid\" style={ConvertToCSSProperties(MergeStyles(PMFormGridBaseStyles, props.style).root)}>\r\n\t\t\t{props.Components.map((element, index) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<div key={element.toLocaleString() + index} className=\"ms-Grid-row\" style={{ padding: 0, margin: 0 }}>\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclassName={props.ColumnClassName ?? columnClassName}\r\n\t\t\t\t\t\t\tkey={index}\r\n\t\t\t\t\t\t\tstyle={{ padding: 0, margin: 0 }}>\r\n\t\t\t\t\t\t\t{element}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t);\r\n\t\t\t})}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\n//TODO: Convert styles object to style\r\nexport const PMFormGrid: React.FC<IPMFormGridProps> = (props) => {\r\n\tconst columnClassName: string = 'ms-Grid-col ms-sm12 ms-md12 ms-lg12';\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName=\"ms-Grid\"\r\n\t\t\tstyle={ConvertToCSSProperties(MergeStyles(PMFormGridBaseStyles, props.style).root)}\r\n\t\t\tdir=\"ltr\">\r\n\t\t\t<div className=\"ms-Grid-row\" style={{ padding: 0, margin: 0 }}>\r\n\t\t\t\t{props.Components.map((element, index) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclassName={props.ColumnClassName ?? columnClassName}\r\n\t\t\t\t\t\t\tkey={index}\r\n\t\t\t\t\t\t\tstyle={{ padding: 0, margin: 0 }}>\r\n\t\t\t\t\t\t\t{element}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t);\r\n\t\t\t\t})}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t);\r\n};\r\n","import * as React from \"react\";\r\nimport { PMFormGrid } from \"./PMFormGrid\";\r\nimport { PMDefaultButton } from \"./PMButton\";\r\nimport { PMLabel } from \"./PMLabel\";\r\nimport { PMOkDialog } from \"./PMDialog\";\r\nimport SvgPoliteMail from \"../../../public/images/svg/generated/PoliteMail\";\r\nimport { isAllowedFile, MimeTypes } from \"../Utility/FilesUtilts\";\r\nimport { PMGridRow } from \"../Grids/PMGridRow\";\r\nimport { PMGridCol } from \"../Grids/PMGridCol\";\r\n\r\nexport interface IPMImagePicker {\r\n Content: string;\r\n Label?: string;\r\n Handler?: (selectorFiles: string, fileName: string) => void;\r\n ImageName?: string;\r\n Style?: React.CSSProperties;\r\n}\r\n\r\n//TODO: Convert styles object to style\r\nexport const PMFileSelector: React.FC<IPMImagePicker> = (props) => {\r\n const [showWarning, setShowWarning] = React.useState<boolean>(false)\r\n const [showExtWarning, setShowExtWarning] = React.useState<boolean>(false)\r\n const [showFileSizeWarning, setShowFileSizeWarning] = React.useState<boolean>(false)\r\n const baseImg = \"data:image/png;base64,\";\r\n const allowedExtensions = [\"gif\", \"jpg\", \"jpeg\", \"png\"]\r\n\r\n const handleChange = (selectorFiles: FileList) => {\r\n if (props.Handler) {\r\n let reader = new FileReader();\r\n if (selectorFiles[0].size <= 4000000) { // 4mb\r\n if (!isAllowedFile(selectorFiles[0], MimeTypes.Image, allowedExtensions)) {\r\n setShowExtWarning(true);\r\n return;\r\n }\r\n reader.readAsDataURL(selectorFiles[0]);\r\n reader.onload = (event) => {\r\n let data: string = event.target.result.toString();\r\n var regex = new RegExp('data:image/[^;]+;base64,',);\r\n var results = regex.exec(data);\r\n if (results)\r\n data = data.replace(results[0], \"\");\r\n\r\n props.Handler(data, selectorFiles[0].name);\r\n }\r\n\r\n setShowFileSizeWarning(true);\r\n }\r\n else {\r\n setShowWarning(true);\r\n }\r\n }\r\n }\r\n\r\n const imageComponent = () => {\r\n if (props.Content.length > baseImg.length)\r\n return <img src={props.Content} style={{ maxHeight: 50, maxWidth: 50, margin: '3px', padding: '3px' }} />;\r\n\r\n return <div style={{ margin: '3px', padding: '3px', display: \"block\" }}><SvgPoliteMail height={32} width={32}></SvgPoliteMail></div>\r\n }\r\n\r\n const getButtonLabel = () => {\r\n return props.Content.length > baseImg.length ? 'Replace' : 'Browse'\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <PMFormGrid\r\n Components={[\r\n <PMFormGrid\r\n Components={[\r\n imageComponent(),\r\n\r\n <PMDefaultButton onClick={() => document.getElementById(\"filePicker\").click()} >{getButtonLabel()}</PMDefaultButton>\r\n ]}\r\n ColumnClassName=\"ms-Grid-col ms-sm12 ms-md12 ms-lg12\"></PMFormGrid>,\r\n <PMLabel style={{ height: \"100%\", width: \"100%\" }}>{props.ImageName ?? \"\"}</PMLabel>,\r\n <input id={\"filePicker\"} multiple={false} type=\"file\" onChange={(e) => handleChange(e.target.files)} accept=\".gif,.jpg,.jpeg,.png\" style={{ padding: \"4px 4px 4px 4px\", display: \"none\" }} />\r\n ]}\r\n ColumnClassName=\"ms-Grid-col ms-sm12 ms-md12 ms-lg12\">\r\n </PMFormGrid>\r\n <PMOkDialog hidden={!showWarning} title=\"File error\" text={\"The file you selected is too big, the max image size is 4MB.\"} onDismiss={() => setShowWarning(false)} />\r\n <PMOkDialog hidden={!showExtWarning} title=\"File error\" text={\"The selected file has an invalid extension. Allowed extensions: \" + allowedExtensions.join()} onDismiss={() => setShowExtWarning(false)} />\r\n <PMOkDialog hidden={!showFileSizeWarning} title=\"File size\" text={\"The selected file size will be calculated after the changes are saved.\"} onDismiss={() => setShowFileSizeWarning(false)} />\r\n \r\n \r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport interface IPMOptOutImagePicker extends IPMImagePicker {\r\n handleClearImage: () => void;\r\n clearIsDisabled: boolean\r\n}\r\nexport const PMOptOutLogoSelector: React.FC<IPMOptOutImagePicker> = (props) => {\r\n const [showWarning, setShowWarning] = React.useState<boolean>(false)\r\n const baseImg = \"data:image/png;base64,\";\r\n const [showExtWarning, setShowExtWarning] = React.useState<boolean>(false)\r\n const allowedExtensions = [\"gif\", \"jpg\", \"jpeg\", \"png\"]\r\n\r\n const handleChange = (selectorFiles: FileList) => {\r\n if (props.Handler) {\r\n let reader = new FileReader();\r\n if (selectorFiles[0].size <= 4000000) { // 4mb\r\n if (!isAllowedFile(selectorFiles[0], MimeTypes.Image, allowedExtensions)) {\r\n setShowExtWarning(true);\r\n return;\r\n }\r\n reader.readAsDataURL(selectorFiles[0]);\r\n reader.onload = (event) => {\r\n let data: string = event.target.result.toString();\r\n var regex = new RegExp('data:image/[^;]+;base64,',);\r\n var results = regex.exec(data);\r\n if (results)\r\n data = data.replace(results[0], \"\");\r\n\r\n props.Handler(data, selectorFiles[0].name);\r\n }\r\n }\r\n else {\r\n setShowWarning(true)\r\n }\r\n }\r\n }\r\n\r\n const imageComponent = () => {\r\n if (props.Content.length > baseImg.length)\r\n return <img src={props.Content} style={{ maxHeight: 80, maxWidth: 80, margin: '3px', padding: '3px' }} />;\r\n\r\n return <div style={{ height: 80, width: 80, margin: '3px auto 3px auto', padding: '3px', fontSize: 9, border: '1px solid black', verticalAlign: \"middle\", textAlign: \"center\" }}><p>No Image Selected</p></div>\r\n }\r\n\r\n const getButtonLabel = () => {\r\n return props.Content.length > baseImg.length ? 'Replace' : 'Browse'\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <PMGridRow>\r\n <div style={{ display: \"flex\", alignItems: \"center\", flexWrap: \"nowrap\" }}>\r\n <PMGridCol columnResizing={\"ms-Grid-col\"} style={{ padding: 10 }}>\r\n {imageComponent()}\r\n </PMGridCol>\r\n </div>\r\n <div style={{ display: \"flex\", alignItems: \"center\", flexWrap: \"nowrap\", marginBottom: \"10px\"}} >\r\n <PMGridCol columnResizing={\"ms-Grid-col ms-sm1.5\"}>\r\n <PMDefaultButton onClick={() => document.getElementById(\"filePicker\").click()} >{getButtonLabel()}</PMDefaultButton>\r\n </PMGridCol>\r\n <PMGridCol columnResizing={\"ms-Grid-col ms-sm1.5\"}>\r\n <PMDefaultButton disabled={props.clearIsDisabled} onClick={() => props.handleClearImage()}>Clear</PMDefaultButton>\r\n </PMGridCol>\r\n </div>\r\n </PMGridRow>\r\n <input id={\"filePicker\"} multiple={false} type=\"file\" onChange={(e) => handleChange(e.target.files)} accept=\".gif,.jpg,.jpeg,.png\" style={{ padding: \"4px 4px 4px 4px\", display: \"none\" }} />\r\n <PMOkDialog hidden={!showWarning} title=\"File error\" text={\"The file you selected is too big, the max image size is 4MB.\"} onDismiss={() => setShowWarning(false)} />\r\n <PMOkDialog hidden={!showExtWarning} title=\"File error\" text={\"The selected file has an invalid extension. Allowed extensions: \" + allowedExtensions.join()} onDismiss={() => setShowExtWarning(false)} />\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from \"react\";\r\nimport { ILabelProps, Label, Link, Stack } from \"@fluentui/react\";\r\nimport { HeaderTextStyles, PanelHeaderTextStyles, MergeStyles, PMLabelBaseStyles, PMLabelBoldBaseStyles, BoldBlueTextStyles } from \"../../Definitions/Styles/StyleDefinitions\";\r\nimport { PMFormGrid } from \"./PMFormGrid\";\r\nimport { PMTextField } from \"./PMTextField\";\r\nimport { PMDefaultButton, PMSaveButton } from \"./PMButton\";\r\nimport { GetErrorMessageForValidationResult, ValidationResult } from \"../../Definitions/Generated/PoliteMailEntities/Models/PMPropertyDescriptor\";\r\nimport { notify } from \"../../Utils/PageActions/Nav\";\r\nimport { TooltipHost } from '@fluentui/react';\r\n//TODO: Investigate - props.styles typeof IStyleFunctionOrObject\r\nexport const PMLabel: React.FC<ILabelProps> = (props) => {\r\n\r\n return (\r\n <Label {...props} styles={props.styles ? props.styles : PMLabelBaseStyles()} />\r\n );\r\n}\r\n\r\nexport const PMBoldLabel: React.FC<ILabelProps> = (props) => {\r\n\r\n return (\r\n <Label {...props} styles={PMLabelBoldBaseStyles} />\r\n );\r\n}\r\n\r\nexport const PMBoldBlueLabel: React.FC<ILabelProps> = (props) => {\r\n\r\n return (\r\n <Label {...props} styles={MergeStyles(PMLabelBaseStyles, BoldBlueTextStyles)} />\r\n );\r\n}\r\n\r\nexport const PMHeader: React.FC<ILabelProps> = (props) => {\r\n\r\n const labelProps = { ...props };\r\n labelProps.styles = MergeStyles(PMLabelBaseStyles, HeaderTextStyles());\r\n return (\r\n <PMLabel {...labelProps} />\r\n );\r\n}\r\n\r\nexport const PMPanelHeader: React.FC<ILabelProps> = (props) => {\r\n const labelProps = { ...props };\r\n labelProps.styles = MergeStyles(PMLabelBaseStyles, PanelHeaderTextStyles);\r\n return (\r\n <PMLabel {...labelProps} />\r\n );\r\n}\r\n\r\ninterface IPMNameValueLabel extends ILabelProps {\r\n Name: string;\r\n Value: string;\r\n}\r\n\r\ninterface IPMNameLinkLabel extends ILabelProps {\r\n Name: string;\r\n Value: string;\r\n href: string;\r\n}\r\n\r\nexport const PMNameValueLabel: React.FC<IPMNameValueLabel> = (props) => {\r\n const name = props.Name.trim() + \":\";\r\n return (\r\n <PMFormGrid\r\n Components={[\r\n <PMLabel {...props} styles={PMLabelBaseStyles()} >{name}</PMLabel>,\r\n <PMLabel {...props} styles={PMLabelBaseStyles()} >{props.Value}</PMLabel>\r\n ]}\r\n ColumnClassName=\"ms-Grid-col ms-sm6 ms-md6 ms-lg6\">\r\n </PMFormGrid>\r\n );\r\n}\r\nexport const PMNameLinkLabel: React.FC<IPMNameLinkLabel> = (props) => {\r\n const name = props.Name.trim() + \":\";\r\n return (\r\n <PMFormGrid\r\n Components={[\r\n <PMLabel {...props} styles={PMLabelBaseStyles()} >{name}</PMLabel>,\r\n <Link styles={PMLabelBaseStyles()} onClick={(e: React.MouseEvent<unknown>) => notify.FireNavigationEvents({ location: `${props.href}` })} underline>\r\n {props.Value}\r\n </Link>\r\n ]}\r\n ColumnClassName=\"ms-Grid-col ms-sm6 ms-md6 ms-lg6\">\r\n </PMFormGrid>\r\n );\r\n}\r\n\r\ninterface IPMTooltipLabel extends ILabelProps {\r\n tooltipText: string,\r\n}\r\n\r\nexport const PMToolTipLabel: React.FC<IPMTooltipLabel> = (props) => {\r\n return (\r\n <TooltipHost content={props.tooltipText}>\r\n <PMLabel {...props} />\r\n </TooltipHost>\r\n );\r\n}\r\n\r\nexport const EditableLabel: React.FC<{\r\n displayValue: string,\r\n onUpdate: (nValue: string) => void,\r\n validateValue?: (nVAlue: string) => ValidationResult,\r\n className?: string,\r\n style?: React.CSSProperties,\r\n}> = (props) => {\r\n const [isEdit, setIsEdit] = React.useState<boolean>(false);\r\n const [editValue, setEditValue] = React.useState<string>(props.displayValue)\r\n const [invalidText, setInvalidText] = React.useState<string>(undefined)\r\n\r\n return isEdit ?\r\n <Stack\r\n horizontal\r\n verticalAlign=\"center\"\r\n tokens={{\r\n childrenGap: 4\r\n }}\r\n wrap={false}\r\n >\r\n <PMTextField value={editValue} onChange={(e, nValue) => setEditValue(nValue)} errorMessage={invalidText} style={{ width: \"100px\" }} ></PMTextField>\r\n <PMSaveButton onClick={() => {\r\n let validResult = props.validateValue ? props.validateValue(editValue) : ValidationResult.Valid;\r\n if (validResult === ValidationResult.Valid) {\r\n props.onUpdate(editValue)\r\n setIsEdit(false);\r\n setInvalidText(undefined)\r\n }\r\n else {\r\n setInvalidText(GetErrorMessageForValidationResult(editValue, validResult));\r\n }\r\n }}></PMSaveButton>\r\n <PMDefaultButton text=\"Cancel\" onClick={() => {\r\n setEditValue(props.displayValue)\r\n setIsEdit(false);\r\n setInvalidText(undefined)\r\n }}></PMDefaultButton>\r\n </Stack>\r\n :\r\n <PMLabel onClick={() => setIsEdit(true)} style={props.style} className={props.className}>{editValue}</PMLabel>\r\n}","import React from 'react';\r\nimport { ISvgProps } from \"../../../../src/Definitions/ISvgProps\";\r\n\r\nexport const CheckIcon: React.FC<ISvgProps> = (props) => {\r\n return (\r\n <svg version=\"1.1\" id=\"Layer_1\" x=\"0px\" y=\"0px\"\r\n viewBox=\"0 0 30 20\"\r\n height={props.height}\r\n width={props.width}\r\n fill={props.fill}\r\n style={props.style}\r\n >\r\n <g>\r\n <path style={{ fill: props.fill ? props.fill : '#7FC242' }} d=\"M29.7,0.3C29.9,0.5,30,0.7,30,1c0,0.3-0.1,0.5-0.3,0.7L11.6,19.6c-0.2,0.3-0.5,0.4-0.8,0.4\r\n\t\tc-0.3,0-0.6-0.1-0.8-0.3l-9.8-9.6C0.1,9.9,0,9.6,0,9.4c0-0.3,0.1-0.5,0.3-0.7S0.7,8.4,1,8.4c0.3,0,0.5,0.1,0.7,0.3l9,8.9L28.3,0.3\r\n\t\tC28.5,0.1,28.7,0,29,0C29.3,0,29.5,0.1,29.7,0.3L29.7,0.3z\"/>\r\n </g>\r\n </svg>\r\n\r\n )\r\n}","import React from 'react';\r\nimport { ISvgProps } from \"../../../../src/Definitions/ISvgProps\";\r\n\r\nexport const HourGlassIcon: React.FC<ISvgProps> = (props) => {\r\n return(\r\n<svg version=\"1.1\" id=\"Layer_1\" x=\"0px\" y=\"0px\"\r\n\t viewBox=\"0 0 28 32\" \r\n style={props.style}\r\n height={props.height}\r\n width={props.width}\r\n fill={props.fill}\r\n >\r\n<g id=\"Hourglass\">\r\n\t<rect x=\"-2.1\" style={{fill:'none'}} width=\"32\" height=\"32\"/>\r\n\t<g transform=\"matrix(1 0 0 -1 0 1920)\">\r\n\t\t<path style={{fill: props.fill? props.fill : '#808488'}} d=\"M20.8,1904c1.1-0.7,2.1-1.5,3-2.5c0.6-0.7,1.2-1.4,1.7-2.2s1-1.7,1.4-2.6s0.7-2,0.9-3.1s0.3-2.3,0.3-3.5\r\n\t\t\tc0-0.3,0-0.7,0-1l-0.1-1H0.1l-0.1,1c0,0.3,0,0.7,0,1c0,1.5,0.2,2.9,0.5,4.3c0.5,2.1,1.4,4,2.5,5.6s2.5,3,4.2,4\r\n\t\t\tc-1.1,0.7-2.1,1.5-3,2.5c-0.6,0.7-1.2,1.4-1.7,2.2s-1,1.7-1.4,2.6s-0.7,2-0.9,3.1S0,1916.8,0,1918c0,0.3,0,0.7,0,1l0.1,1h27.8\r\n\t\t\tl0.1-1c0-0.3,0-0.7,0-1c0-1.5-0.2-2.9-0.5-4.3c-0.5-2.1-1.4-4-2.5-5.6S22.4,1905,20.8,1904z M3,1890h22c0,1.5-0.2,2.8-0.5,4.2\r\n\t\t\tc-0.2,1-0.5,1.9-0.9,2.7s-0.8,1.6-1.4,2.4s-1.2,1.3-1.9,1.9s-1.5,1-2.4,1.3v3.1c1.1,0.4,2.1,1,3,1.8c1.2,1.1,2.2,2.6,2.9,4.4\r\n\t\t\ts1.1,3.9,1.1,6.2H3c0-1.5,0.2-2.8,0.5-4.2c0.2-1,0.5-1.9,0.9-2.7s0.8-1.6,1.4-2.4s1.2-1.3,1.9-1.9s1.5-1,2.4-1.3v-3.1\r\n\t\t\tc-1.1-0.4-2.1-1-3-1.8c-1.2-1.1-2.2-2.6-2.9-4.4S3,1892.3,3,1890z M21.8,1892H6.2c0.1,0.8,0.3,1.5,0.6,2.2s0.6,1.4,1,2\r\n\t\t\ts0.8,1.2,1.3,1.6s1,0.9,1.6,1.2c1.1,0.6,1.8,1.3,2,2.1s0.3,1.4,0.3,1.9v2c0,0.5-0.1,1.1-0.3,1.9s-0.9,1.4-2,2.1\r\n\t\t\tc-0.6,0.4-1.2,0.8-1.7,1.3s-0.9,1.1-1.3,1.7h12.8c-0.4-0.6-0.8-1.2-1.3-1.7s-1.1-1-1.7-1.3c-1.1-0.6-1.8-1.3-2-2.1\r\n\t\t\ts-0.3-1.4-0.3-1.9v-2c0-0.5,0.1-1.1,0.3-1.9s0.9-1.4,2-2.1c0.6-0.3,1.1-0.7,1.6-1.2s0.9-1,1.3-1.6s0.7-1.3,1-2\r\n\t\t\tS21.7,1892.8,21.8,1892z\"/>\r\n\t</g>\r\n</g>\r\n</svg>\r\n\r\n )\r\n}","import { Stack } from '@fluentui/react';\r\nimport React from 'react';\r\nimport { CheckIcon } from '../../../public/images/svg/generated/CheckIcon'\r\nimport { HourGlassIcon } from '../../../public/images/svg/generated/HourGlassIcon'\r\nimport { WarningIcon } from '../../../public/images/svg/generated/WarningIcon'\r\nexport interface IPMNotificationPillProps {\r\n text: string;\r\n alertType: string;\r\n}\r\n\r\nexport const PMNotificationPill: React.FC<IPMNotificationPillProps> = (props) => {\r\n\r\n let bgColor: string = '';\r\n let icon: JSX.Element;\r\n\r\n const returnIcon = () => {\r\n switch (props.alertType) {\r\n case 'success':\r\n return <CheckIcon fill={'#ffffff'} style={{margin: 'auto 0'}} width='15' height='15' />\r\n case 'progress':\r\n return <HourGlassIcon fill={'#ffffff'} style={{margin: 'auto 0'}} width='15' height='15' />\r\n case 'failure':\r\n return <WarningIcon fill={'#ffffff'} style={{margin: 'auto 0'}} width='15' height='15' />\r\n }\r\n }\r\n\r\n switch (props.alertType) {\r\n case 'success':\r\n bgColor = \"#75C529\";\r\n icon = returnIcon();\r\n break;\r\n case 'progress':\r\n bgColor = \"#376a9c\";\r\n icon = returnIcon();\r\n break;\r\n case 'failure':\r\n bgColor = \"#FFA700\";\r\n icon = returnIcon();\r\n break;\r\n }\r\n\r\n if(props.alertType === 'success'){\r\n return (\r\n <div style={{ width: '100%', borderRadius: '20px', backgroundColor: bgColor, color: '#ffffff', padding: '5px 15px', display: 'flex', textAlign: 'center'}}>\r\n <Stack horizontal tokens={{childrenGap: 10}} style={{margin: 'auto'}}>\r\n {returnIcon()}\r\n <div>\r\n <a style={{color: '#ffffff' }} href=\"/ui/web/manage_campaigns/scheduledsends\">\r\n {props.text}\r\n </a>\r\n </div>\r\n </Stack>\r\n </div>)\r\n }\r\n else{\r\n return (\r\n <div style={{ width: '100%', borderRadius: '20px', backgroundColor: bgColor, color: '#ffffff', padding: '5px 15px', display: 'flex'}}>\r\n <Stack horizontal tokens={{childrenGap: 10}} style={{margin: 'auto'}}>\r\n {returnIcon()}\r\n <div>\r\n {props.text}\r\n </div>\r\n </Stack>\r\n </div>\r\n )\r\n }\r\n}","import * as React from 'react';\r\nimport { getTheme, ISpinButtonProps, SpinButton, Stack } from '@fluentui/react';\r\nimport { PMLabel } from './PMLabel';\r\nimport { PMTextFieldBaseStyles } from 'Definitions/Styles/StyleDefinitions';\r\nconst theme = getTheme();\r\nexport const PMSpinButton: React.FC<ISpinButtonProps> = (props) => {\r\n\treturn <SpinButton {...props} styles={props.styles} />;\r\n};\r\n\r\nconst _removeSuffix = (value: string): string => {\r\n\treturn value.split(' ')[0];\r\n};\r\n\r\nconst removeSpecCharacters = (value: string): number => {\r\n\treturn Number(value.replaceAll(removeSpecChars, '').replace(',', '.'));\r\n}\r\n\r\ninterface IPMUsefulSpinButtonProps extends ISpinButtonProps {\r\n\tlistener?: (value: string) => void;\r\n\tisHidden?: boolean;\r\n\tupdateStateHandler?: (value: number) => void;\r\n\tisPercentage?: boolean\r\n}\r\n\r\nconst removeSpecChars = /[^0-9.,]/gm\r\n\r\nexport const PMUsefulSpinButton: React.FC<IPMUsefulSpinButtonProps> = (props) => {\r\n\tconst { isPercentage, max, min, updateStateHandler } = props;\r\n\tconst [value, SetValue] = React.useState<string>(\"0\");\r\n\tconst [step, setStep] = React.useState<number>(1);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif (isPercentage) {\r\n\t\t\tSetValue(props?.value\r\n\t\t\t\t? `${(removeSpecCharacters(props.value) * 100).toLocaleString(undefined,{\r\n\t\t\t\t\tminimumFractionDigits:0,\r\n\t\t\t\t\tmaximumFractionDigits:2\r\n\t\t\t\t})}%`\r\n\t\t\t\t: props?.min >= 0\r\n\t\t\t\t\t? `${props.min.toString()}%`\r\n\t\t\t\t\t: \"0%\")\r\n\t\t} else {\r\n\t\t\tSetValue(props?.value\r\n\t\t\t\t? props.value\r\n\t\t\t\t: props?.min >= 0\r\n\t\t\t\t\t? props.min.toString()\r\n\t\t\t\t\t: \"0\")\r\n\t\t}\r\n\t}, [isPercentage, props?.min, props?.max, props?.value])\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif (!props.step) return;\r\n\t\tsetStep(props.step);\r\n\t}, [props?.step])\r\n\r\n\tconst handleOnValidate = React.useCallback((value: string) => {\r\n\t\tlet numberValue = Number(value.replaceAll(removeSpecChars, '').replace(',', '.'))\r\n\r\n\t\tif (max && max < numberValue) {\r\n\t\t\tnumberValue = max;\r\n\t\t} else if (min && min > numberValue) {\r\n\t\t\tnumberValue = min;\r\n\t\t}\r\n\t\treturn String(numberValue);\r\n\t}, [max, min]);\r\n\r\n\tconst handleOnIncrement = React.useCallback((value?: string, event?: React.MouseEvent<HTMLElement, MouseEvent> | React.KeyboardEvent<HTMLElement>) => {\r\n\t\tlet newNumber = 0;\r\n\t\tlet numberValue = removeSpecCharacters(value);\r\n\r\n\t\tif (!max || (numberValue + step) <= max) {\r\n\t\t\tnewNumber = numberValue + step;\r\n\t\t}\r\n\r\n\t\treturn String(newNumber);\r\n\t}, [max, step]);\r\n\r\n\tconst handleOnChange = React.useCallback((_event: React.SyntheticEvent<HTMLElement, Event>, value?: string) => {\r\n\t\tupdateStateHandler(isPercentage ? Number(value) / 100 : Number(value))\r\n\t}, [isPercentage, updateStateHandler]);\r\n\r\n\tconst handleOnDecrement = React.useCallback((value: string) => {\r\n\t\tlet newNumber = 0;\r\n\t\tlet numberValue = removeSpecCharacters(value);\r\n\r\n\t\tif (!min || numberValue - step >= min) {\r\n\t\t\tnewNumber = numberValue - step;\r\n\t\t}\r\n\r\n\t\treturn String(newNumber >= 0 ? newNumber : 0);\r\n\t}, [min, step]);\r\n\r\n\treturn <PMSpinButton onChange={handleOnChange} label={props.label}\r\n\t\tonValidate={handleOnValidate} value={value} onIncrement={handleOnIncrement} onDecrement={handleOnDecrement} disabled={props.disabled} />;\r\n};\r\n\r\ninterface IPMSuffixSpinButtonProps extends IPMUsefulSpinButtonProps {\r\n\tsuffix: string;\r\n}\r\n\r\nexport const PMUnitSpinButton: React.FC<IPMSuffixSpinButtonProps> = (props) => {\r\n\tconst pmProps = { ...props };\r\n\tlet priorValue = Number(pmProps.value);\r\n\tpmProps.suffix = ' ' + pmProps.suffix.trim();\r\n\r\n\tif (!pmProps.value) {\r\n\t\tif (0 > pmProps.min) {\r\n\t\t\tpmProps.value = '0';\r\n\t\t} else {\r\n\t\t\tpmProps.value = pmProps.min.toString();\r\n\t\t}\r\n\t}\r\n\r\n\tif (!pmProps.value.includes(pmProps.suffix)) {\r\n\t\tpmProps.value += pmProps.suffix;\r\n\t}\r\n\r\n\tpmProps.onValidate = (value: string) => {\r\n\t\tvalue = _removeSuffix(value);\r\n\t\tlet numberValue = Number(value);\r\n\r\n\t\tif (value.trim().length === 0 || isNaN(+value)) {\r\n\t\t\tnumberValue = priorValue;\r\n\t\t} else if (numberValue > pmProps.max) {\r\n\t\t\tpriorValue = numberValue = pmProps.max;\r\n\t\t} else if (numberValue < pmProps.min) {\r\n\t\t\tpriorValue = numberValue = pmProps.min;\r\n\t\t}\r\n\r\n\t\tif (pmProps.onValidate) {\r\n\t\t\tpmProps.updateStateHandler(numberValue);\r\n\t\t}\r\n\r\n\t\treturn numberValue + pmProps.suffix;\r\n\t};\r\n\r\n\tpmProps.onIncrement = (value?: string) => {\r\n\t\tlet newNumber = 0;\r\n\t\tvalue = _removeSuffix(value);\r\n\t\tlet numberValue = Number(value);\r\n\r\n\t\tif (numberValue + pmProps.step <= pmProps.max) {\r\n\t\t\tnewNumber = numberValue + pmProps.step;\r\n\t\t}\r\n\r\n\t\tif (!pmProps.updateStateHandler) {\r\n\t\t\treturn String(newNumber) + pmProps.suffix;\r\n\t\t}\r\n\r\n\t\tpmProps.updateStateHandler(newNumber);\r\n\t};\r\n\r\n\tpmProps.onDecrement = (value: string) => {\r\n\t\tlet newNumber = 0;\r\n\t\tvalue = _removeSuffix(value);\r\n\t\tlet numberValue = Number(value);\r\n\r\n\t\tif (numberValue - pmProps.step >= pmProps.min) {\r\n\t\t\tnewNumber = numberValue - pmProps.step;\r\n\t\t}\r\n\r\n\t\tif (!pmProps.updateStateHandler) {\r\n\t\t\treturn String(newNumber) + pmProps.suffix;\r\n\t\t}\r\n\r\n\t\tpmProps.updateStateHandler(newNumber);\r\n\t};\r\n\r\n\treturn <PMSpinButton {...pmProps} />;\r\n};\r\n\r\nexport interface IPMDescriptionSpinButtonProps extends IPMUsefulSpinButtonProps {\r\n summary: string,\r\n subtext?: string,\r\n useOptionsForSize?: boolean,\r\n\r\n}\r\n\r\n\r\nexport const PMDescriptionSpinButton: React.FC<IPMDescriptionSpinButtonProps> = (props) => {\r\n\r\n\tconst thisProps = { ...props }\r\n\tif (props.listener) {\r\n\t\tthisProps.onChange = (ev: React.FormEvent, val: string): void => {\r\n\t\t\tprops.listener(val);\r\n\t\t};\r\n\t}\r\n\r\n\tconst PMLabelStyle: React.CSSProperties = {\r\n\t\tpaddingLeft: \"3px\",\r\n\t\tmarginLeft: \"5px\",\r\n\t\tpaddingBottom: \"6px\",\r\n\t\tpaddingTop: \"0px\",\r\n\t\tcolor: theme.palette.neutralSecondary\r\n\t}\r\n\r\n\tconst SummaryStyle: React.CSSProperties = {\r\n\t\tpaddingTop: \"50px\"\r\n\t}\r\n\r\n\r\n\r\n if (props.isHidden) {\r\n return (<React.Fragment />)\r\n } else {\r\n return (\r\n\t\t\t<>\r\n\t\t\t<Stack\r\n verticalAlign=\"center\">\r\n <PMLabel style={PMLabelStyle}>{props.summary}</PMLabel>\r\n {props.subtext && (\r\n <PMLabel style={SummaryStyle}>{props.subtext}</PMLabel>\r\n )}\r\n </Stack>\r\n\r\n\t\t\t<SpinButton\r\n\r\n\t\t\t{...thisProps}\r\n\t\t\tstyles={PMTextFieldBaseStyles}>\r\n\t\t\t</SpinButton>\r\n\t\t\t</>\r\n );\r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { TagPicker, ITag, ITagPickerProps } from \"@fluentui/react\"\r\nimport { PMTagPickerBaseStyles } from \"../../Definitions/Styles/StyleDefinitions\"\r\n\r\ninterface ITagPickerExtendedProps extends ITagPickerProps {\r\n onRemoveItem?: (items: ITag) => void\r\n}\r\n\r\nexport const PMTagPicker: React.FC<ITagPickerExtendedProps> = (props) => {\r\n\r\n const props2 = { ...props };\r\n\r\n const itemRemoved = (items?: ITag[]) =>\r\n items.length < props.selectedItems.length;\r\n\r\n const removeItemFromItems = (items: ITag[]): ITag =>\r\n props.selectedItems.find(x => !items.includes(x));\r\n\r\n props2.onChange = (items?: ITag[]) => {\r\n if (itemRemoved(items)) {\r\n props.onRemoveItem(removeItemFromItems(items));\r\n }\r\n if (props.onChange)\r\n props.onChange(items);\r\n }\r\n\r\n return (\r\n <TagPicker {...props2} />\r\n )\r\n}\r\n\r\nexport interface IPMNoHelperPickerProps extends ITagPickerProps {\r\n}\r\n//TODO: Investigate - props.styles typeof IStyleFunctionOrObject\r\nexport const PMNoHelperTagPicker: React.FC<IPMNoHelperPickerProps> = (props) => {\r\n const _onFilterChangedNoFilter = (filterText: string, tagList: ITag[]): ITag[] => {\r\n return props.selectedItems ? (props.selectedItems.some(i => i.key == filterText) ? [] : [{ key: filterText, name: filterText }]) : [{ key: filterText, name: filterText }];\r\n };\r\n\r\n const modProps = { ...props };\r\n modProps.onResolveSuggestions = _onFilterChangedNoFilter;\r\n\r\n return (\r\n <TagPicker\r\n {...modProps}\r\n styles={PMTagPickerBaseStyles}\r\n />\r\n )\r\n}\r\n","import * as React from \"react\";\r\nimport {\r\n TextField,\r\n ITextFieldProps,\r\n ITextFieldStyles,\r\n Stack, IconButton,\r\n IIconProps,\r\n TooltipHost,\r\n mergeStyleSets,\r\n IStyleFunctionOrObject,\r\n ITextFieldStyleProps,\r\n MaskedTextField,\r\n getTheme,\r\n Icon\r\n} from \"@fluentui/react\";\r\nimport { PMTextFieldBaseStyles } from \"../../Definitions/Styles/StyleDefinitions\";\r\nimport { useId } from '@fluentui/react-hooks';\r\nimport { PMLabel } from \"./PMLabel\";\r\n\r\nconst theme = getTheme();\r\nexport interface IPMTextField extends ITextFieldProps {\r\n listener?: (value: string) => void;\r\n isHidden?: boolean;\r\n ignoreBase?: boolean;\r\n}\r\n\r\nexport const PMTextField: React.FC<IPMTextField> = (props) => {\r\n const thisProps = { ...props }\r\n if (props.listener) {\r\n thisProps.onChange = (ev: React.FormEvent, val: string): void => {\r\n props.listener(val);\r\n };\r\n }\r\n\r\n const styles = mergeStyleSets({\r\n textField: {\r\n selectors: {\r\n '.ms-TextField-field': {\r\n lineHeight: 'normal',\r\n }\r\n }\r\n }\r\n })\r\n\r\n //TODO: Investigate - props.styles typeof IStyleFunctionOrObject\r\n if (props.isHidden) {\r\n return (<React.Fragment />)\r\n } else {\r\n return (\r\n <TextField \r\n className={styles.textField} \r\n validateOnFocusOut={false}\r\n disabled={thisProps.readOnly} {...thisProps} styles={props.ignoreBase ? props.styles :\r\n mergeStyleSets(props.styles, PMTextFieldBaseStyles as IStyleFunctionOrObject<ITextFieldStyleProps, ITextFieldStyles>)} />\r\n );\r\n }\r\n}\r\n\r\ninterface IPMTooltipTextField extends IPMTextField {\r\n tooltipText: string;\r\n}\r\n\r\nexport const ToolTipTextField: React.FC<IPMTooltipTextField> = (props) => {\r\n\r\n const tooltipId = useId('tooltip');\r\n const calloutProps = { gapSpace: 0 };\r\n\r\n return (\r\n <TooltipHost content={props.tooltipText} id={tooltipId} calloutProps={calloutProps}>\r\n <PMTextField {...props} />\r\n </TooltipHost>\r\n )\r\n}\r\n\r\nexport const PMTextFieldWithDeleteButton: React.FC<IPMTextField> = (props) => {\r\n const thisProps = { ...props };\r\n const tooltipId = useId('tooltip');\r\n\r\n if (props.listener) {\r\n thisProps.onChange = (ev: React.FormEvent, val: string): void => {\r\n props.listener(val);\r\n };\r\n }\r\n\r\n if (props.isHidden) {\r\n return (<React.Fragment />)\r\n } else {\r\n return (\r\n <div className=\"ms-Grid\" dir=\"ltr\">\r\n <div className=\"ms-Grid-row\" >\r\n <div className=\"ms-Grid-col ms-sm12\" style={{ display: \"flex\", padding: 0 }}>\r\n <TextField\r\n {...thisProps}\r\n styles={{\r\n root: {\r\n paddingRight: \"0\",\r\n marginRight: \"0\",\r\n flex: \"1\"\r\n }\r\n }}\r\n />\r\n <div style={{ paddingTop: \"8px\" }}>\r\n <TooltipHost\r\n content=\"Delete\"\r\n id={tooltipId}\r\n calloutProps={{ gapSpace: 0 }}\r\n >\r\n <IconButton\r\n iconProps={{ iconName: 'Cancel' }}\r\n title=\"DeleteField\"\r\n ariaLabel=\"Delete\"\r\n />\r\n </TooltipHost>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport interface IPMIconTextFieldProps extends IPMTextField {\r\n labelIconProps: IIconProps;\r\n onIconClick: () => void;\r\n buttonTitle: string;\r\n buttonAriaLabel: string;\r\n}\r\n\r\nexport const PMIconTextField: React.FC<IPMIconTextFieldProps> = (props) => {\r\n const thisProps = { ...props }\r\n if (props.listener) {\r\n thisProps.onChange = (ev: React.FormEvent, val: string): void => {\r\n props.listener(val);\r\n };\r\n }\r\n\r\n const _renderLabel = (props?: IPMIconTextFieldProps, defaultRender?: (props?: ITextFieldProps) => JSX.Element | null): JSX.Element => {\r\n return (\r\n <Stack\r\n horizontal\r\n verticalAlign=\"center\"\r\n tokens={{\r\n childrenGap: 4\r\n }}\r\n >\r\n <span>{defaultRender(props)}</span>\r\n <IconButton iconProps={props.labelIconProps} title={props.buttonTitle} ariaLabel={props.buttonAriaLabel} onClick={props.onIconClick} />\r\n </Stack>\r\n );\r\n }\r\n\r\n if (props.isHidden) {\r\n return (<React.Fragment />)\r\n } else {\r\n return (\r\n <TextField\r\n disabled={thisProps.readOnly}\r\n onRenderLabel={_renderLabel}\r\n {...thisProps}\r\n styles={PMTextFieldBaseStyles}\r\n />\r\n );\r\n }\r\n}\r\n\r\nexport interface IPMDescriptionTextFieldProps extends IPMTextField {\r\n summary: string,\r\n subtext?: string,\r\n mask?: string\r\n}\r\n\r\nexport const PMDescriptionTextField: React.FC<IPMDescriptionTextFieldProps> = (props) => {\r\n\r\n const thisProps = { ...props }\r\n if (props.listener) {\r\n thisProps.onChange = (ev: React.FormEvent, val: string): void => {\r\n props.listener(val);\r\n };\r\n }\r\n\r\n const _renderLabel = (props?: IPMDescriptionTextFieldProps, defaultRender?: (props?: ITextFieldProps) => JSX.Element | null): JSX.Element => {\r\n const PMLabelStyle: React.CSSProperties = {\r\n paddingLeft: \"0px\",\r\n marginLeft: \"0px\",\r\n paddingBottom: \"6px\",\r\n paddingTop: \"0px\",\r\n color: theme.palette.neutralSecondary\r\n }\r\n\r\n const SummaryStyle: React.CSSProperties = {\r\n paddingTop: \"50px\"\r\n }\r\n\r\n return (\r\n <Stack\r\n verticalAlign=\"center\"\r\n >\r\n <span>{defaultRender(props)}</span>\r\n <PMLabel style={PMLabelStyle}>{props.summary}</PMLabel>\r\n {props.subtext && (\r\n <PMLabel style={SummaryStyle}>{props.subtext}</PMLabel>\r\n )}\r\n </Stack>\r\n );\r\n }\r\n\r\n const getMaskChar = (() => {\r\n return props.mask.includes(\"9\") ? \"0\" : null;\r\n })\r\n\r\n if (props.isHidden) {\r\n return (<React.Fragment />)\r\n } else {\r\n return (\r\n <>\r\n {\r\n (props.mask.length > 0) && (\r\n < MaskedTextField\r\n maskChar={getMaskChar()}\r\n disabled={thisProps.readOnly}\r\n onRenderLabel={_renderLabel}\r\n {...thisProps}\r\n styles={PMTextFieldBaseStyles}\r\n />\r\n ) || (props.type == 'password') &&\r\n (<PMPasswordField\r\n {...thisProps}\r\n onRenderLabel={_renderLabel}\r\n disabled={thisProps.readOnly}\r\n styles={PMTextFieldBaseStyles}\r\n />)\r\n ||\r\n <TextField\r\n disabled={thisProps.readOnly}\r\n onRenderLabel={_renderLabel}\r\n {...thisProps}\r\n styles={PMTextFieldBaseStyles}\r\n />\r\n }\r\n </>\r\n );\r\n }\r\n}\r\n\r\nexport const PMPasswordField: React.FC<ITextFieldProps> = (props) => {\r\n const [showPassword, setShowPassword] = React.useState<boolean>(false);\r\n\r\n const styles = mergeStyleSets({\r\n icon: {\r\n margin: 'auto'\r\n },\r\n button: {\r\n cursor: 'pointer',\r\n display: 'flex',\r\n width: '30px',\r\n selectors: {\r\n ':hover': {\r\n backgroundColor: '#f3f2f1'\r\n }\r\n }\r\n },\r\n })\r\n const handleButtonClick = () => {\r\n setShowPassword(!showPassword);\r\n }\r\n\r\n const renderToggleButton = () => {\r\n return <div className={styles.button} onClick={handleButtonClick}>\r\n <Icon iconName={showPassword ? 'Hide' : 'RedEye'} className={styles.icon} styles={{ root: { color: '#2770bc', userSelect: 'none' } }} />\r\n </div>\r\n }\r\n\r\n return (\r\n <TextField\r\n {...props}\r\n type={showPassword ? 'text' : 'password'}\r\n styles={{\r\n ...props.styles,\r\n fieldGroup: {\r\n selectors: {\r\n 'input::-ms-reveal, input::-ms-clear ': {\r\n display: 'none',\r\n }\r\n }\r\n },\r\n suffix: {\r\n padding: 0,\r\n userSelect: 'none',\r\n backgroundColor: '#ffffff',\r\n selectors: {\r\n ':hover': {\r\n backgroundColor: '#f3f2f1'\r\n }\r\n }\r\n }\r\n }}\r\n onRenderSuffix={renderToggleButton}\r\n />\r\n )\r\n} ","import * as React from 'react';\r\nimport { IImageProps } from '@fluentui/react';\r\n\r\ninterface IPMThumbnail extends IImageProps {\r\n\tContent: string;\r\n\tEditable: boolean;\r\n}\r\n\r\nexport const PMThumbnail: React.FC<IPMThumbnail> = (props) => {\r\n\treturn (\r\n\t\t<div>\r\n\t\t\t<img src={props.Content}\r\n\t\t\t\tstyle={{ \r\n\t\t\t\t\twidth: 75, \r\n\t\t\t\t\tbackgroundImage: \r\n\t\t\t\t\t\t`linear-gradient(45deg, #cccccc 25%, transparent 25%),\r\n\t\t\t\t\t\t linear-gradient(-45deg, #cccccc 25%, transparent 25%),\r\n\t\t\t\t\t\t linear-gradient(45deg, transparent 75%, #cccccc 75%),\r\n\t\t\t\t\t\t linear-gradient(-45deg, transparent 75%, #cccccc 75%)`,\r\n\t\t\t\t\tbackgroundSize: '5px 5px',\r\n\t\t\t\t\tbackgroundPosition: '0 0, 0 2.5px, 2.5px -2.5px, -2.5px 0px'\r\n\t\t\t\t}} \r\n\t\t\t/>\r\n\t\t</div>\r\n\t);\r\n};\r\n","import * as React from \"react\";\r\nimport { Toggle, IToggleProps } from \"@fluentui/react\";\r\nimport { MergeStyles, PMToggleBaseStyles } from \"../../Definitions/Styles/StyleDefinitions\";\r\n//TODO: Investigate - props.styles typeof IStyleFunctionOrObject\r\nexport const PMToggle: React.FC<IToggleProps> = (props) => {\r\n return (\r\n <Toggle {...props} styles={PMToggleBaseStyles} />\r\n );\r\n}","import { ColumnDataType } from 'Definitions/GridColumnDefinitions';\r\nimport { IPMColumn } from 'Definitions/PanelColumnDefinitions';\r\nimport { ProfileManager } from \"../../Utils/GlobalProfile\";\r\n\r\nexport const MapColumns = (columns: IPMColumn[]) => {\r\n let cols:IPMColumn[] = []\r\n columns.forEach((col) => {\r\n if(col.dataType === ColumnDataType.Hidden){\r\n return;\r\n }\r\n else if (col.dataType === ColumnDataType.Region) {\r\n col.name = ProfileManager.GetGlobalProfile().RegionAlias;\r\n }\r\n else if (col.dataType === ColumnDataType.Business) {\r\n col.name = ProfileManager.GetGlobalProfile().BusinessAlias;\r\n }\r\n\r\n cols.push(col);\r\n })\r\n\r\n return cols;\r\n}","import { IComboBox, IComboBoxOption } from \"@fluentui/react\";\r\nimport moment from \"moment\";\r\n\r\nexport const parseTime = (value: any) => {\r\n return /(\\d{1,2}):(\\d{2})\\s*?([AP]M)/.exec(value);\r\n};\r\n\r\nexport const parseForTime = (initialDateTime: moment.Moment) => {\r\n return initialDateTime.format(\"hh:mm a\");\r\n};\r\n\r\nexport const onTimeChange = (\r\n event: React.FormEvent<IComboBox>,\r\n initialDateTime: moment.Moment,\r\n onChange: (date: any) => void,\r\n option?: IComboBoxOption,\r\n index?: number,\r\n value?: string,\r\n) => {\r\n let timeParts;\r\n if (value) {\r\n timeParts = parseTime(value.toLocaleUpperCase());\r\n if (!timeParts || timeParts.length < 3) {\r\n return;\r\n }\r\n }\r\n else\r\n {\r\n return;\r\n }\r\n const newTime = moment(\r\n option ? option.text : `${timeParts[1]}:${timeParts[2]} ${timeParts[3]}`,\r\n \"hh:mm a\"\r\n );\r\n\r\n if(!newTime.isValid()){\r\n return;\r\n }\r\n\r\n const date = moment(initialDateTime);\r\n\r\n date.hours(newTime.hours());\r\n date.minutes(newTime.minutes());\r\n date.seconds(0);\r\n date.milliseconds(0);\r\n date.utcOffset(initialDateTime.utcOffset());\r\n onChange(date);\r\n};\r\n\r\nexport const onDateChange = (\r\n value: Date,\r\n initialDateTime: moment.Moment,\r\n onChange: (date: any) => void\r\n) => {\r\n const mom = moment(initialDateTime);\r\n const date = moment(value);\r\n\r\n date.hours(mom.hours());\r\n date.minutes(mom.minutes());\r\n date.seconds(0);\r\n date.milliseconds(0);\r\n date.utcOffset(initialDateTime.utcOffset());\r\n onChange(date);\r\n};\r\n","import * as React from 'react';\r\nimport { IDropdownOption } from '@fluentui/react';\r\nimport { PMDropDown } from './PMDropDown';\r\nimport { ContactsApiHooks } from 'store/features/contactsApiSlice';\r\n\r\ninterface IPMCountryDropdownProps {\r\n\tdefaultKey: string;\r\n\thandler?: (countryName: string) => void;\r\n\tshowLabel?: boolean;\r\n}\r\n\r\nexport const PMCountriesDropDown: React.FC<IPMCountryDropdownProps> = (props) => {\r\n\tconst { handler, defaultKey } = props;\r\n\tconst [dropDownCountries, setDropDownCountries] = React.useState<IDropdownOption[]>([]);\r\n\tconst [selectedKey, setSelectedKey] = React.useState<number>(0);\r\n\tconst { data: countries, isLoading: _isCountriesLoading } = ContactsApiHooks.useGetCountriesQuery();\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif (!countries) return;\r\n\t\tconst dropDownValues = countries.map((c, index) => {\r\n\t\t\treturn {\r\n\t\t\t\tkey: index,\r\n\t\t\t\ttext: c.CountryName,\r\n\t\t\t} as IDropdownOption;\r\n\t\t});\r\n\t\tconst updatedKey = dropDownValues.findIndex((d) => d.text === defaultKey);\r\n\r\n\t\tsetSelectedKey(updatedKey);\r\n\t\tsetDropDownCountries(dropDownValues);\r\n\t}, [countries, defaultKey]);\r\n\r\n\tconst handleChange = React.useCallback((countryName: string) => {\r\n\t\tif (handler) {\r\n\t\t\thandler(countryName);\r\n\t\t}\r\n\t}, [handler]);\r\n\r\n\treturn (\r\n\t\t<PMDropDown\r\n\t\t\tlabel={props.showLabel === false ? '' : 'Country'}\r\n\t\t\tselectedKey={selectedKey ?? 0}\r\n\t\t\toptions={dropDownCountries}\r\n\t\t\tonChange={(e, selectedCountry) => {\r\n\t\t\t\thandleChange(selectedCountry.text);\r\n\t\t\t}}\r\n\t\t/>\r\n\t);\r\n};\r\n","import * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\nimport { IDropdownOption } from '@fluentui/react';\r\n//Components\r\nimport { PMDropDown } from 'components/SimpleComponents/PMDropDown';\r\n//Definitions\r\nimport { Campaign } from 'Definitions/Generated/PoliteMailEntities/Models/Campaign';\r\nimport QueryFactory from 'Utils/Filtering/QueryFactory';\r\nimport { campaignApiHooks } from 'store/features/campaignsApiSlice';\r\n\r\ninterface IPMCampaignsDropDownProps {\r\n\tDefaultSelectedKey: number;\r\n\tHandler?: (businessID: number) => void;\r\n\tshowLabel?: boolean;\r\n\tlabel: string;\r\n\tdisabled?: boolean;\r\n}\r\n\r\nexport const PMCampaignsDropDown: React.FC<IPMCampaignsDropDownProps> = (props) => {\r\n\tconst { Handler } = props;\r\n\tconst [dropDownCampaigns, setDropDownCampaigns] = useState<IDropdownOption[]>([]);\r\n\tconst { data: campaigns, isSuccess: isSuccessCampaigns } = campaignApiHooks.useGetCampaignsQuery({\r\n\t\tquery: new QueryFactory()\r\n\t\t\t.appendSelect(['ID', 'Name'])\r\n\t\t\t.toQuery()\r\n\t});\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!isSuccessCampaigns) return;\r\n\r\n\t\tsetDropDownCampaigns(\r\n\t\t\tcampaigns.map((campaign: Campaign) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tkey: campaign.ID,\r\n\t\t\t\t\ttext: campaign.Name,\r\n\t\t\t\t} as IDropdownOption;\r\n\t\t\t})\r\n\t\t);\r\n\t}, [campaigns, isSuccessCampaigns]);\r\n\r\n\tconst handleChange = React.useCallback((businessID: number) => {\r\n\t\tif (Handler) {\r\n\t\t\tHandler(businessID);\r\n\t\t}\r\n\t}, [Handler]);\r\n\r\n\treturn (\r\n\t\t<PMDropDown\r\n\t\t\tdisabled={props.disabled ?? true}\r\n\t\t\tlabel={props.showLabel === false ? '' : props.label}\r\n\t\t\tselectedKey={props.DefaultSelectedKey}\r\n\t\t\toptions={dropDownCampaigns}\r\n\t\t\tonChange={(e, selectedID) => {\r\n\t\t\t\thandleChange(parseInt(selectedID.key.toString()));\r\n\t\t\t}}\r\n\t\t/>\r\n\t);\r\n};\r\n","import React from \"react\";\r\nimport { IDropdownOption, Stack } from \"@fluentui/react\";\r\nimport { PMTimePicker } from \"./PMTimePicker\";\r\nimport { PMDatePicker } from \"./PMDatePicker\";\r\nimport {\r\n onDateChange,\r\n onTimeChange,\r\n parseForTime,\r\n} from \"../Utility/DateTimePickerUtils\";\r\n\r\nexport interface IPMDateTimePickerPanel {\r\n initialDateTime?: moment.Moment;\r\n label?: string;\r\n onChange?: (value: any) => void;\r\n timeOptions?: IDropdownOption[];\r\n useComboBoxAsMenuWidth?: boolean;\r\n timeLabel?: string;\r\n dateLabel?: string;\r\n style?: React.CSSProperties;\r\n disabled?: boolean; \r\n}\r\n\r\nexport const PMDateTimePickerPanel: React.FC<IPMDateTimePickerPanel> = (\r\n props\r\n) => {\r\n return (\r\n <Stack tokens={{ childrenGap: 5 }}>\r\n <div className=\"ms-Grid-row\">\r\n <div className=\"ms-Grid-col ms-sm7\">\r\n <PMDatePicker\r\n disabled={props.disabled ?? true}\r\n label={props.label ?? props.dateLabel}\r\n onSelectDate={(date) =>\r\n onDateChange(date, props.initialDateTime, props.onChange)\r\n }\r\n value={props.initialDateTime.toDate()}\r\n style={{ ...props.style, paddingRight: \"0px\" }}\r\n />\r\n </div>\r\n <div className=\"ms-Grid-col ms-sm5\">\r\n <PMTimePicker\r\n {...props}\r\n label={props.timeLabel}\r\n options={props.timeOptions}\r\n onChange={(event, option, index, value) =>\r\n onTimeChange(\r\n event,\r\n props.initialDateTime,\r\n props.onChange,\r\n option,\r\n index,\r\n value\r\n )\r\n }\r\n text={parseForTime(props.initialDateTime)}\r\n allowFreeform\r\n style={{ ...props.style, paddingLeft: \"0px\" }}\r\n useComboBoxAsMenuWidth\r\n />\r\n </div>\r\n </div>\r\n </Stack>\r\n );\r\n};\r\n","import * as React from 'react';\r\nimport * as QRCode from 'qrcode';\r\nimport moment from 'moment';\r\nimport { Icon } from '@fluentui/react';\r\n//Definitions\r\nimport { ColumnDataType } from 'Definitions/GridColumnDefinitions';\r\nimport { IPMColumn } from 'Definitions/PanelColumnDefinitions';\r\nimport {\r\n\tValidateProperties,\r\n\tValidationResult,\r\n\tGetErrorMessageForValidationResult,\r\n} from 'Definitions/Generated/PoliteMailEntities/Models/PMPropertyDescriptor';\r\n//Components\r\nimport { IPanelModelProperty } from 'components/Panels/PMPanel';\r\nimport { PMTextField } from 'components/SimpleComponents/PMTextField';\r\nimport { PMCheckbox } from 'components/SimpleComponents/PMCheckbox';\r\nimport { PMUsefulSpinButton } from 'components/SimpleComponents/PMSpinButton';\r\nimport { PMToggle } from 'components/SimpleComponents/PMToggle';\r\nimport { PMThumbnail } from 'components/SimpleComponents/PMThumbnail';\r\nimport { PMFileSelector } from 'components/SimpleComponents/PMImagePicker';\r\nimport { PMFilePicker } from 'components/SimpleComponents/PMFilePicker';\r\nimport { PMBusinessDropdown } from 'components/DataComponents/PMBusinessDropdown';\r\nimport { PMRegionDropdown } from 'components/DataComponents/PMRegionDropdown';\r\nimport { PMUserDropdown } from 'components/DataComponents/PMUserDropdown';\r\nimport { PMCountriesDropDown } from 'components/SimpleComponents/PMCountriesDropDown';\r\nimport { PMDateTimePicker } from 'components/GalleryComponents/PMDateTimePicker';\r\nimport { PMPhoneInput } from 'components/DataComponents/PMPhoneInput';\r\nimport { PMCampaignsDropDown } from 'components/DataComponents/PMCampaignDropDown';\r\nimport { PMVerificationInfoForm } from 'components/DataComponents/PMVerificationInfoForm';\r\n//Utils\r\nimport { GetTimes } from 'Utils/TimeUtils';\r\nimport { ProfileManager } from 'Utils/GlobalProfile';\r\nimport { PMDateTimePickerPanel } from 'components/GalleryComponents/PMDateTimePickerPanel';\r\nimport { TagsEntityEditControl } from 'components/Panels/TagsEntityEditControl';\r\nimport { ListTypesDropdown } from 'Definitions/Generated/PoliteMailEntities/Models/List';\r\nimport { PMDropDown } from 'components/SimpleComponents/PMDropDown';\r\n \r\nexport interface IModelProperty extends IPanelModelProperty {\r\n\tfield: string;\r\n\thandler: (val: any) => void;\r\n\trender?: (modelProperty: IModelProperty, handler: (val: any) => void) => JSX.Element;\r\n\tlabel?: string;\r\n\tisVisible?: boolean;\r\n\tisDirty?: boolean;\r\n\tEntityName?: string;\r\n}\r\n\r\nexport const ColumnAsInput: React.FC<IModelProperty> = (props) => {\r\n\tconst validationResult = props.isDirty === false ? true : ValidateProperties(props.Validator, props.value);\r\n\tswitch (props.type) {\r\n\t\tcase ColumnDataType.SendStatus:\r\n\t\t\tlet checkedStatus = props.value;\r\n\t\t\tlet label = 'Unknown Status';\r\n\t\t\tswitch (props.value) {\r\n\t\t\tcase 0:\r\n\t\t\tcase 4:\r\n\t\t\t\tcheckedStatus = false;\r\n\t\t\t\tlabel = 'Disabled'\r\n\t\t\t\tbreak;\r\n\t\t\tcase 1:\r\n\t\t\tcase 2:\r\n\t\t\t\tcheckedStatus = true;\r\n\t\t\t\tlabel = 'Enabled'\r\n\t\t\t\tbreak;\r\n\t\t\tcase 3:\r\n\t\t\t\tcheckedStatus = true;\r\n\t\t\t\tlabel = 'Enabled'\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\treturn (\r\n\t\t\t\t<PMToggle\r\n\t\t\t\t\tdisabled={!props.editable}\r\n\t\t\t\t\tkey={props.field}\r\n\t\t\t\t\tlabel={label}\r\n\t\t\t\t\tchecked={checkedStatus}\r\n\t\t\t\t\tonChange={(ev?: React.FormEvent<HTMLElement | HTMLInputElement>, checked?: boolean) => {\r\n\t\t\t\t\t\tvar sendStatus = checked ? 1 : 0;\t\t\t\t\t\t\r\n\t\t\t\t\t\tprops.handler(sendStatus);\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.Revoked:\r\n\t\t\treturn (\r\n\t\t\t\t<PMCheckbox\r\n\t\t\t\t\tdisabled={!props.editable}\r\n\t\t\t\t\tkey={props.field}\r\n\t\t\t\t\tlabel={props.field}\r\n\t\t\t\t\tchecked={!props.value}\r\n\t\t\t\t\tonChange={(ev?: React.FormEvent<HTMLElement | HTMLInputElement>, checked?: boolean) => {\r\n\t\t\t\t\t\tprops.handler(checked);\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.Shared:\r\n\t\tcase ColumnDataType.Boolean:\r\n\t\t\treturn (\r\n\t\t\t\t<PMCheckbox\r\n\t\t\t\t\tdisabled={!props.editable}\r\n\t\t\t\t\tkey={props.field}\r\n\t\t\t\t\tlabel={props.field}\r\n\t\t\t\t\tchecked={props.value}\r\n\t\t\t\t\tonChange={(ev?: React.FormEvent<HTMLElement | HTMLInputElement>, checked?: boolean) => {\r\n\t\t\t\t\t\tprops.handler(checked);\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.Business:\t\r\n\t\t\treturn (\r\n\t\t\t\t<PMBusinessDropdown\r\n\t\t\t\t\tdisabled={!props.editable}\r\n\t\t\t\t\tlabel={props.field}\r\n\t\t\t\t\tkey={props.field}\r\n\t\t\t\t\tHandler={props.handler}\r\n\t\t\t\t\tDefaultSelectedKey={props.value}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.ListType:\r\n\t\t\treturn (\r\n\t\t\t\t<PMDropDown\r\n\t\t\t\t\tdisabled={!props.editable}\r\n\t\t\t\t\tlabel={props.field}\r\n\t\t\t\t\tselectedKey={props.value}\r\n\t\t\t\t\toptions={ListTypesDropdown}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.DateHover:\r\n\t\tcase ColumnDataType.Date:\r\n\t\tcase ColumnDataType.ExpirationDate:\r\n\t\t\treturn (\r\n\t\t\t\t<PMTextField\r\n\t\t\t\t\tkey={props.field}\r\n\t\t\t\t\tdisabled={!props.editable}\r\n\t\t\t\t\terrorMessage={\r\n\t\t\t\t\t\tvalidationResult == ValidationResult.Valid\r\n\t\t\t\t\t\t\t? undefined\r\n\t\t\t\t\t\t\t: GetErrorMessageForValidationResult(props.field, validationResult as ValidationResult)\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlabel={props.field}\r\n\t\t\t\t\tvalue={props.value}\r\n\t\t\t\t\tlistener={props.handler}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.Thumbnail:\r\n\t\t\treturn (\r\n\t\t\t\t<PMFileSelector\r\n\t\t\t\t\tkey={props.field}\r\n\t\t\t\t\tLabel={props.value ? '' : 'Unavailable'}\r\n\t\t\t\t\tHandler={props.handler}\r\n\t\t\t\t\tContent={props.value ? 'data:image/png;base64,' + props.value : ''}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.File:\r\n\t\t\treturn <PMFilePicker key={props.field} Handler={props.handler} Content={props.value} />;\r\n\t\tcase ColumnDataType.DatePicker: {\r\n\t\t\tconst initialDate = moment(props.value, 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\r\n\t\t\treturn (\r\n\t\t\t\t<PMDateTimePickerPanel\r\n\t\t\t\t\tdisabled={!props.editable}\r\n\t\t\t\t\tlabel={props.field}\r\n\t\t\t\t\ttimeLabel='‍'\r\n\t\t\t\t\ttimeOptions={GetTimes()}\r\n\t\t\t\t\tinitialDateTime={initialDate}\r\n\t\t\t\t\tonChange={(date: string) => props.handler(date)}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\t}\r\n\t\tcase ColumnDataType.Percentage:\r\n\t\tcase ColumnDataType.Number:\r\n\t\t\treturn (\r\n\t\t\t\t<PMUsefulSpinButton\r\n\t\t\t\t\tdisabled={!props.editable}\r\n\t\t\t\t\tupdateStateHandler={props.handler}\r\n\t\t\t\t\tkey={props.field}\r\n\t\t\t\t\tlabel={props.field}\r\n\t\t\t\t\tvalue={props.value}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.QRCode:\r\n\t\t\tlet imageurl: string;\r\n\t\t\tQRCode.toDataURL(props.value, function (err, url) {\r\n\t\t\t\timageurl = url;\r\n\t\t\t});\r\n\t\t\treturn <PMThumbnail key={props.field} Content={imageurl} Editable={false} />;\r\n\t\tcase ColumnDataType.Region:\r\n\t\t\treturn (\r\n\t\t\t\t<PMRegionDropdown\r\n\t\t\t\t\tdisabled={!props.editable}\r\n\t\t\t\t\tlabel={props.field}\r\n\t\t\t\t\tkey={props.field}\r\n\t\t\t\t\tHandler={props.handler}\r\n\t\t\t\t\tDefaultSelectedKey={props.value}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.Link:\r\n\t\tcase ColumnDataType.String:\r\n\t\t\treturn (\r\n\t\t\t\t<PMTextField\r\n\t\t\t\t\tkey={props.field}\r\n\t\t\t\t\tdisabled={!props.editable}\r\n\t\t\t\t\terrorMessage={\r\n\t\t\t\t\t\tvalidationResult == ValidationResult.Valid\r\n\t\t\t\t\t\t\t? undefined\r\n\t\t\t\t\t\t\t: GetErrorMessageForValidationResult(props.field, validationResult as ValidationResult)\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlabel={props.label}\r\n\t\t\t\t\tvalue={props.value}\r\n\t\t\t\t\tlistener={props.handler}\r\n\t\t\t\t\tdeferredValidationTime={500}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.BigString:\r\n\t\t\treturn (\r\n\t\t\t\t<PMTextField\r\n\t\t\t\t\tkey={props.field}\r\n\t\t\t\t\tmultiline\r\n\t\t\t\t\tdisabled={!props.editable}\r\n\t\t\t\t\terrorMessage={\r\n\t\t\t\t\t\tvalidationResult == ValidationResult.Valid\r\n\t\t\t\t\t\t\t? undefined\r\n\t\t\t\t\t\t\t: GetErrorMessageForValidationResult(props.field, validationResult as ValidationResult)\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlabel={props.field}\r\n\t\t\t\t\tvalue={props.value}\r\n\t\t\t\t\tlistener={props.handler}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.Switch:\r\n\t\t\treturn (\r\n\t\t\t\t<PMToggle\r\n\t\t\t\t\tkey={props.field}\r\n\t\t\t\t\tdisabled={!props.editable}\r\n\t\t\t\t\tlabel={props.field}\r\n\t\t\t\t\tchecked={props.value}\r\n\t\t\t\t\tonChange={(ev?: React.FormEvent<HTMLElement | HTMLInputElement>, checked?: boolean) => {\r\n\t\t\t\t\t\tprops.handler(checked);\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.PMPersonPillMulti:\r\n\t\tcase ColumnDataType.User:\r\n\t\t\treturn <PMUserDropdown disabled= {!props.editable} key={props.field} Handler={props.handler} DefaultSelectedKey={props.value} />;\r\n\t\tcase ColumnDataType.Custom:\r\n\t\t\tif (props.render) return props.render(props, props.handler);\r\n\t\t\treturn <></>;\r\n\t\tcase ColumnDataType.Hidden:\r\n\t\t\treturn (\r\n\t\t\t\t<div>\r\n\t\t\t\t\t<input type=\"hidden\"></input>\r\n\t\t\t\t</div>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.StageID: {\r\n\t\t\tif (props.value == '1') {\r\n\t\t\t\treturn <Icon title=\"None\" styles={{ root: { fontSize: 15 } }} iconName=\"Contact\" />;\r\n\t\t\t} else if (props.value === '8') {\r\n\t\t\t\treturn <Icon title=\"OptOut\" styles={{ root: { fontSize: 15 } }} iconName=\"UserRemove\" />;\r\n\t\t\t} else return <Icon title=\"Undeliverable\" styles={{ root: { fontSize: 15 } }} iconName=\"BlockContact\" />;\r\n\t\t}\r\n\t\tcase ColumnDataType.Country:\r\n\t\t\treturn (\r\n\t\t\t\t<PMCountriesDropDown\r\n\t\t\t\t\tkey={props.field}\r\n\t\t\t\t\thandler={props.handler}\r\n\t\t\t\t\tdefaultKey={props.value}></PMCountriesDropDown>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.Privacy:\r\n\t\t\treturn (\r\n\t\t\t\t<PMCheckbox\r\n\t\t\t\t\tdisabled={!props.editable}\r\n\t\t\t\t\tkey={props.field}\r\n\t\t\t\t\tlabel={props.field}\r\n\t\t\t\t\tchecked={props.value}\r\n\t\t\t\t\tonChange={(ev?: React.FormEvent<HTMLElement | HTMLInputElement>, checked?: boolean) => {\r\n\t\t\t\t\t\tprops.handler(checked);\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.Campaign:\r\n\t\t\treturn <PMCampaignsDropDown disabled={!props.editable} DefaultSelectedKey={props.value} label={props.field} Handler={props.handler} />;\r\n\t\tcase ColumnDataType.VerificationInfo:\r\n\t\t\treturn <PMVerificationInfoForm ListId={props.value} Handler={props.handler} />;\r\n\t\tcase ColumnDataType.PhoneNumber:\r\n\t\t\treturn <PMPhoneInput key={props.field} label={props.label} value={props.value} onChange={props.handler} />;\r\n\t\tcase ColumnDataType.Tags:\r\n\t\t\treturn <TagsEntityEditControl EntityId={props.value} EntityName={props.EntityName} Handler={props.handler} />;\r\n\t\tdefault:\r\n\t\t\treturn <div></div>;\r\n\t}\r\n};\r\nexport const ColumnToInput = (\r\n\tmodelProperty: IPanelModelProperty,\r\n\tkey: string,\r\n\thandler: (val: any) => void,\r\n\trender?: (modelProperty: IPanelModelProperty, handler: (val: any) => void) => JSX.Element\r\n): JSX.Element => {\r\n\tswitch (modelProperty.type) {\r\n\t\tcase ColumnDataType.Boolean:\r\n\t\t\treturn (\r\n\t\t\t\t<PMCheckbox\r\n\t\t\t\t\tkey={key}\r\n\t\t\t\t\tdisabled={!modelProperty.editable}\r\n\t\t\t\t\tlabel={modelProperty.key}\r\n\t\t\t\t\tchecked={modelProperty.value}\r\n\t\t\t\t\tonChange={(ev?: React.FormEvent<HTMLElement | HTMLInputElement>, checked?: boolean) => {\r\n\t\t\t\t\t\thandler(checked);\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.Business:\r\n\t\t\treturn (\r\n\t\t\t\t<PMBusinessDropdown label={key} key={key} Handler={handler} DefaultSelectedKey={modelProperty.value} />\r\n\t\t\t);\r\n\t\tcase ColumnDataType.ExpirationDate:\r\n\t\tcase ColumnDataType.Date:\r\n\t\t\treturn (\r\n\t\t\t\t<PMTextField\r\n\t\t\t\t\tkey={key}\r\n\t\t\t\t\tdisabled={!modelProperty.editable}\r\n\t\t\t\t\tlabel={modelProperty.key}\r\n\t\t\t\t\tvalue={modelProperty.value}\r\n\t\t\t\t\tlistener={handler}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.Thumbnail:\r\n\t\t\treturn (\r\n\t\t\t\t<PMFileSelector\r\n\t\t\t\t\tkey={key}\r\n\t\t\t\t\tLabel={modelProperty.value ? '' : 'Unavailable'}\r\n\t\t\t\t\tHandler={handler}\r\n\t\t\t\t\tContent={modelProperty.value ? 'data:image/png;base64,' + modelProperty.value : ''}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.File:\r\n\t\t\treturn <PMFilePicker key={key} Handler={handler} Content={modelProperty.value} />;\r\n\t\t// case ColumnDataType.Link:\r\n\t\t// return <div>{modelProperty.value}</div>\r\n\t\t// return <PMLink key={modelProperty.key} label={modelProperty.key} value={modelProperty.value}/>\r\n\t\tcase ColumnDataType.Percentage:\r\n\t\tcase ColumnDataType.Number:\r\n\t\t\treturn (\r\n\t\t\t\t<PMUsefulSpinButton\r\n\t\t\t\t\tkey={key}\r\n\t\t\t\t\tdisabled={!modelProperty.editable}\r\n\t\t\t\t\tupdateStateHandler={handler}\r\n\t\t\t\t\tlabel={modelProperty.key}\r\n\t\t\t\t\tvalue={modelProperty.value}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.QRCode:\r\n\t\t\tlet imageurl: string;\r\n\t\t\tQRCode.toDataURL(modelProperty.value, function (err, url) {\r\n\t\t\t\timageurl = url;\r\n\t\t\t});\r\n\t\t\treturn <PMThumbnail key={key} Content={imageurl} Editable={false} />;\r\n\t\tcase ColumnDataType.Region:\r\n\t\t\treturn (\r\n\t\t\t\t<PMRegionDropdown label={key} key={key} Handler={handler} DefaultSelectedKey={modelProperty.value} />\r\n\t\t\t);\r\n\t\tcase ColumnDataType.Link:\r\n\t\tcase ColumnDataType.String:\r\n\t\t\treturn (\r\n\t\t\t\t<PMTextField\r\n\t\t\t\t\tkey={key}\r\n\t\t\t\t\tdisabled={!modelProperty.editable}\r\n\t\t\t\t\tlabel={modelProperty.key}\r\n\t\t\t\t\tvalue={modelProperty.value}\r\n\t\t\t\t\tlistener={handler}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.BigString:\r\n\t\t\treturn (\r\n\t\t\t\t<PMTextField\r\n\t\t\t\t\tmultiline\r\n\t\t\t\t\tkey={key}\r\n\t\t\t\t\tdisabled={!modelProperty.editable}\r\n\t\t\t\t\tlabel={modelProperty.key}\r\n\t\t\t\t\tvalue={modelProperty.value}\r\n\t\t\t\t\tlistener={handler}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.Switch:\r\n\t\t\treturn (\r\n\t\t\t\t<PMToggle\r\n\t\t\t\t\tkey={key}\r\n\t\t\t\t\tdisabled={!modelProperty.editable}\r\n\t\t\t\t\tlabel={modelProperty.key}\r\n\t\t\t\t\tchecked={modelProperty.value}\r\n\t\t\t\t\tonChange={(ev?: React.FormEvent<HTMLElement | HTMLInputElement>, checked?: boolean) => {\r\n\t\t\t\t\t\thandler(checked);\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.PMPersonPillMulti:\r\n\t\tcase ColumnDataType.User:\r\n\t\t\treturn <PMUserDropdown key={key} Handler={handler} DefaultSelectedKey={modelProperty.value} />;\r\n\t\tcase ColumnDataType.Custom:\r\n\t\t\tif (render) return render(modelProperty, handler);\r\n\t\t\treturn <div></div>;\r\n\t\tcase ColumnDataType.StageID: {\r\n\t\t\tif (modelProperty.value == '1') {\r\n\t\t\t\treturn <Icon title=\"None\" styles={{ root: { fontSize: 15 } }} iconName=\"Contact\" />;\r\n\t\t\t} else if (modelProperty.value === '8') {\r\n\t\t\t\treturn <Icon title=\"OptOut\" styles={{ root: { fontSize: 15 } }} iconName=\"UserRemove\" />;\r\n\t\t\t} else return <Icon title=\"Undeliverable\" styles={{ root: { fontSize: 15 } }} iconName=\"BlockContact\" />;\r\n\t\t}\r\n\t\tcase ColumnDataType.Hidden:\r\n\t\t\treturn (\r\n\t\t\t\t<div>\r\n\t\t\t\t\t<input key={key} type=\"hidden\"></input>\r\n\t\t\t\t</div>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.Country:\r\n\t\t\treturn (\r\n\t\t\t\t<PMCountriesDropDown key={key} handler={handler} defaultKey={modelProperty.value}></PMCountriesDropDown>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.Revoked:\r\n\t\t\treturn (\r\n\t\t\t\t<PMCheckbox\r\n\t\t\t\t\tdisabled={!modelProperty.editable}\r\n\t\t\t\t\tkey={modelProperty.field}\r\n\t\t\t\t\tlabel={modelProperty.field}\r\n\t\t\t\t\tchecked={!modelProperty.value}\r\n\t\t\t\t\tonChange={(ev?: React.FormEvent<HTMLElement | HTMLInputElement>, checked?: boolean) => {\r\n\t\t\t\t\t\thandler(checked);\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tcase ColumnDataType.PhoneNumber:\r\n\t\t\treturn (\r\n\t\t\t\t<PMPhoneInput\r\n\t\t\t\t\tkey={modelProperty.field}\r\n\t\t\t\t\tlabel={modelProperty.field}\r\n\t\t\t\t\tvalue={modelProperty.value}\r\n\t\t\t\t\tonChange={handler}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\tdefault:\r\n\t\t\treturn <div></div>;\r\n\t}\r\n};\r\n\r\nexport const GetDefaultValuesForColumn = (columnDefinition: IPMColumn, defaultProperties: IPanelModelProperty[]) => {\r\n\tif (defaultProperties === undefined || defaultProperties === null) {\r\n\t\tvar defaultValue = undefined;\r\n\r\n\t\tif (columnDefinition.fieldName == 'RegionID') {\r\n\t\t\tdefaultValue = ProfileManager.GetGlobalProfile().RegionID;\r\n\t\t} else if (columnDefinition.fieldName == 'BusinessID') {\r\n\t\t\tdefaultValue = ProfileManager.GetGlobalProfile().BusinessID;\r\n\t\t} else if (columnDefinition.fieldName == 'OwnerID') {\r\n\t\t\tdefaultValue = ProfileManager.GetGlobalProfile().UserID;\r\n\t\t}\r\n\r\n\t\treturn GetDefaultValue({\r\n\t\t\tvalue: defaultValue,\r\n\t\t\tfield: columnDefinition.fieldName,\r\n\t\t\ttype: columnDefinition.dataType,\r\n\t\t\tkey: columnDefinition.key,\r\n\t\t\teditable: columnDefinition.editable,\r\n\t\t\tValidator: { Required: false, MinLength: -1, MaxLength: -1, IsEmail: false },\r\n\t\t});\r\n\t}\r\n\r\n\tlet defaultProp = defaultProperties.find((prop) => {\r\n\t\tif (prop.key.toLowerCase() == columnDefinition.fieldName.toLowerCase()) return prop;\r\n\t});\r\n\r\n\tif (defaultProp === undefined || defaultProp === null)\r\n\t\treturn GetDefaultValue({\r\n\t\t\tvalue: undefined,\r\n\t\t\tfield: columnDefinition.fieldName,\r\n\t\t\ttype: columnDefinition.dataType,\r\n\t\t\tkey: columnDefinition.key,\r\n\t\t\teditable: columnDefinition.editable,\r\n\t\t\tValidator: { Required: false, MinLength: -1, MaxLength: -1, IsEmail: false },\r\n\t\t});\r\n\r\n\treturn defaultProp.value;\r\n};\r\n\r\nexport const SetDefaultValues = (columnDefinition: IPanelModelProperty, defaultProperties: IPanelModelProperty[]) => {\r\n\tif (defaultProperties === undefined || defaultProperties === null) return GetDefaultValue(columnDefinition);\r\n\r\n\tlet defaultProp = defaultProperties.find((prop) => prop.key.toLowerCase() == columnDefinition.key.toLowerCase());\r\n\r\n\tif (defaultProp === undefined || defaultProp === null) return GetDefaultValue(columnDefinition);\r\n\r\n\treturn defaultProp.value;\r\n};\r\n\r\nexport const GetDefaultValue = (modelProperty: IPanelModelProperty): any => {\r\n\tif (modelProperty.value) return modelProperty.value;\r\n\r\n\tswitch (modelProperty.type) {\r\n\t\tcase ColumnDataType.Shared:\r\n\t\tcase ColumnDataType.Boolean:\r\n\t\t\treturn false;\r\n\t\tcase ColumnDataType.Business:\r\n\t\t\treturn 0;\r\n\t\tcase ColumnDataType.ExpirationDate:\r\n\t\tcase ColumnDataType.Date:\r\n\t\t\treturn new Date();\r\n\t\tcase ColumnDataType.Thumbnail:\r\n\t\t\treturn '';\r\n\t\tcase ColumnDataType.File:\r\n\t\t\treturn '';\r\n\t\tcase ColumnDataType.Percentage:\r\n\t\tcase ColumnDataType.Number:\r\n\t\t\treturn 0;\r\n\t\tcase ColumnDataType.QRCode:\r\n\t\t\treturn '';\r\n\t\tcase ColumnDataType.Region:\r\n\t\t\treturn 0;\r\n\t\tcase ColumnDataType.Link:\r\n\t\tcase ColumnDataType.String:\r\n\t\tcase ColumnDataType.BigString:\r\n\t\tcase ColumnDataType.PMPersonPillSingle:\r\n\t\t\treturn '';\r\n\t\tcase ColumnDataType.Switch:\r\n\t\t\treturn false;\r\n\t\tcase ColumnDataType.PMPersonPillMulti:\r\n\t\tcase ColumnDataType.User:\r\n\t\t\treturn 0;\r\n\t\tcase ColumnDataType.Custom:\r\n\t\t\treturn '';\r\n\t\tdefault:\r\n\t\t\treturn '';\r\n\t}\r\n};\r\n","// import * as mime from \"mime\";\r\n\r\nexport enum MimeTypes {\r\n Application = 'application',\r\n Audio = 'audio',\r\n Example = 'example',\r\n Font = 'font',\r\n Image = 'image'\r\n}\r\n\r\nexport const isAllowedFile = (file: File, type: MimeTypes, allowedExtensions?: string[], prohibitedExtensions?: string[]) => {\r\n // if (file && file.type.includes(type)) {\r\n // const fileExtension = mime.getExtension(file.type);\r\n // if (allowedExtensions){\r\n // return allowedExtensions.indexOf(fileExtension) != -1;\r\n // } else if(prohibitedExtensions){\r\n // return prohibitedExtensions.indexOf(fileExtension) === -1;\r\n // }\r\n // return true;\r\n // }\r\n // return false;\r\n return true;\r\n}","\r\nexport const DISPLAY_NAME_FOR_PROPERTY = {\r\n\r\n 'Sent':\"Sent\",\r\n 'SentDate': \"Sent Date\",\r\n 'Devices': \"Device\",\r\n 'NonUniqueOpen': \"Page Views\",\r\n 'Undeliverable': \"Undeliverables\",\r\n 'OutOfOffice': \"Out of Office\",\r\n 'Optin': \"Opt-in\",\r\n 'Optout': \"Opt-out\",\r\n 'WordCount': \"Words\",\r\n 'ImageCount': \"Images\",\r\n 'MultipleResponses':\"Multiple Responses\",\r\n 'NewOpens': \"New Opens\",\r\n 'TotalInteractions':\"Total Interactions\",\r\n 'MobileUnique':\"Mobile Unique\",\r\n 'FirstSentDate':\"First Sent Date\",\r\n 'AvgReadTime':\"Average Read Time\",\r\n 'AvgReadTimeDesktop':\"Average Read Time (Desktop)\",\r\n 'AvgReadTimeMobile':\"Average Read Time (Mobile)\",\r\n 'AvgReadTimeProxy':\"Average Read Time (Proxy)\",\r\n 'UserProxyOpens':\"User Proxy Opens\",\r\n 'EngagementRate':\"Engagement Rate\",\r\n 'MostRecentOpenDate': \"Most Recent Open Date\",\r\n 'MultipleReads':\"Multiple Reads\",\r\n 'TotalLinksSent':\"Total Links Sent\",\r\n 'TotalLinksClicked':\"Total Links Clicked\",\r\n 'LinksClicked':\"Links Clicked\",\r\n 'ImageArea':\"Image Area\",\r\n 'TimeToRead':\"Time to Read\",\r\n 'SendMode': \"Send Mode\",\r\n 'CharacterCount':\"Character Count\",\r\n 'ParagraphCount': \"Paragraph Count\",\r\n 'SentenceCount': \"Sentence Count\",\r\n 'SentencesPerParagraph':\"Sentences Per Paragraph\",\r\n 'WordsPerSentence':\"Words Per Sentence\",\r\n 'CharactersPerWord':'Characters Per Word',\r\n 'PassiveSentences':'Passive Sentences',\r\n 'ReadingEase':'Reading Ease',\r\n 'GradeLevel':'Grade Level',\r\n 'SendViaOutbox':'Sent Via',\r\n 'AggregateSendCount':'Aggregate Send Count',\r\n 'MaxTimeToRead':'Max Time To Read',\r\n 'UniqueRecipientCount':'Unique Recipient Count',\r\n 'LikelyOpen':'Likely Open',\r\n 'MobileRate':'Mobile Rate',\r\n 'DesktopRate':'Desktop Rate',\r\n 'LikelyOpenRate':'Likely Open Rate',\r\n 'NonUniqueOpenRate':'Non Unique Open Rate',\r\n 'OpenRate':'Open Rate',\r\n 'DidntOpenRate':\"Didn't Open Rate\",\r\n 'ReadsRate':\"Reads Rate\",\r\n 'SkimmedRate':\"Skimmed Rate\",\r\n 'EngagedReadRate':\"Engaged Read Rate\",\r\n 'IgnoredRate':'Ignored Rate',\r\n 'LeftOpen':'Left Open',\r\n 'LeftOpenRate':\"Left Open Rate\",\r\n 'NewOpenRate':'New Open Rate',\r\n 'MultipleOpenRate':'Multiple Open Rate',\r\n 'NonUniqueClickRate':'Non Unique Click Rate',\r\n 'ClickRate':'Click Rate',\r\n 'MobileClickRate':'Mobile Click Rate',\r\n 'DesktopClickRate':'Desktop Click Rate',\r\n 'ReplyRate':'Reply Rate',\r\n 'ForwardRate':'Forward Rate',\r\n 'DeliveredRate':'Delivered Rate',\r\n 'UndeliverableRate':'Undeliverable Rate',\r\n 'DropOff':'Drop off',\r\n 'DropOffRate':'Drop off Rate',\r\n 'MultipleResponseRate':'Multiple Response Rate',\r\n 'OptOutRate':'Opt-out Rate',\r\n 'OofRate':'Out of Office Rate',\r\n 'InteractionsRate':'Interactions Rate',\r\n 'TotalInteractionsRate':'Total Interactions Rate',\r\n 'AttentionRate':'Attention Rate',\r\n 'AudienceAttentionRate':'Audience Attention Rate',\r\n 'EffectiveRate':'Effective Rate',\r\n 'ContentConsumptionRate':'Content Consumption Rate',\r\n 'ContentUtilization':'Content Utilization',\r\n 'MultipleReadRate':'Multiple Read Rate',\r\n // 'Duration':\r\n // \"Time to Read (HH:mm:ss)\", Math.round(statsOne.TimeToRead), Math.round(statsTwo.\r\n 'DesktopOpens':\"Desktop Access\",\r\n 'MobileOpens':\"Mobile Access\",\r\n // 'Duration':\r\n // \"Desktop Avg Read (HH:mm:ss)\", Math.round(statsOne.AvgReadTimeDesktop), Math.round(statsTwo.\r\n // 'Duration':\r\n // \"Mobile Avg Read (HH:mm:ss)\", Math.round(statsOne.AvgReadTimeMobile), Math.round(statsTwo.\r\n 'UniqueClickThroughDesktop':\"Desktop Click Through\",\r\n 'UniqueClickThroughMobile':\"Mobile Click Through\",\r\n 'ConfirmedOpen':\"Opens (individuals)\",\r\n 'MultipleOpens':\"Multiple Opens\",\r\n 'Reads':\"Total Reads\",\r\n 'Ignored':\"Ignored (<3 sec)\",\r\n 'Skimmed':\"Skimmed (<30%)\",\r\n 'EngagedRead':\"Engaged Reads (>50%)\",\r\n 'Duration':\"Avg Read Time\",\r\n 'Rate':\"Effective Rate\",\r\n 'UniqueClickThrough':\"Clicks (individuals)\",\r\n 'MultipleClicks':\"Multiple Clicks (individuals)\",\r\n 'MultipleClicksRate':\"Multiple Clicks Rate\",\r\n 'DidntClickRate':\"Didn't Click\",\r\n 'NonUniqueClickThrough':\"Clicks (total)\",\r\n 'UniqueURLS':\"Total URLs (message)\",\r\n 'LinksSent':\"Total Links (message)\",\r\n 'UniqueURLSClicked':\"URL Utilization (message)\",\r\n 'Forward':\"Forwards\",\r\n 'Reply':\"Replies\",\r\n 'Engagment':\"Engagement\",\r\n\r\n}","import { IPMPersona } from \"@politemail/ui-components\";\r\nimport { AuthModes } from \"components/Pages/Login/Login\";\r\nimport { ContentImage } from \"Definitions/Generated/PoliteMailEntities/Models/ContentImage\";\r\nimport { ContentRectangle } from \"Definitions/Generated/PoliteMailEntities/Models/ContentRectangle\";\r\nimport { Link } from \"Definitions/Generated/PoliteMailEntities/Models/Link\";\r\nimport { ReadabilityStatistics } from \"Definitions/Generated/PoliteMailEntities/Models/ReadabilityStatistics\";\r\nimport { Moment } from \"moment\";\r\nimport { EmailImportance, EmailSensitivity } from \"Utils/MailEditorUtilities\";\r\nimport { ExpirationDetailInfo } from \"Definitions/Generated/PoliteMailEntities/Models/ExpirationDetail\";\r\n\r\nexport interface IPMComposedMessage {\r\n toDisplay: string;\r\n from: string;\r\n ccDisplay?: string;\r\n bccDisplay?: string;\r\n subject: string;\r\n htmlBody: string;\r\n id?: number;\r\n plaintext?: string;\r\n trackingMode?: PMTrackingMode;\r\n campaignId?: number;\r\n importance?: EmailImportance;\r\n sensitivity?: EmailSensitivity;\r\n greeting?: string;\r\n messageGuid?: string;\r\n DeferredDeliveryTime?: Moment;\r\n WorkingHoursOnly?: boolean;\r\n ScheduledSendType?: number\r\n suppressAutoReplies?: boolean;\r\n returnPath?: string;\r\n heatmapImage?: ContentImage;\r\n contentRectangles?: ContentRectangle[];\r\n links?: Link[];\r\n disabledIOsMeasurement?: boolean;\r\n disabledO365Measurement?: boolean;\r\n disabledOpenMeasurement?: boolean;\r\n videoDetails?: IMessageVideoDetails;\r\n replyTo?: string;\r\n usedSurveyIds?: number[];\r\n forceListExpand?: boolean;\r\n readabilityStats: ReadabilityStatistics;\r\n sendID?: number;\r\n goodToGo?: boolean;\r\n toRecipients?: IPMRemoteRecipient[];\r\n ccRecipients?: IPMRemoteRecipient[];\r\n bccRecipients?: IPMRemoteRecipient[];\r\n isPreview?: boolean;\r\n isRequestSupport?: boolean;\r\n authenticateLinks?: boolean;\r\n ListsIncludeOptOut?: number[]\r\n usedListIds?: number[]\r\n emptyListIds?: number[]\r\n isListExpansionDisabled? : boolean;\r\n isDirty?: boolean;\r\n hyphenationEnabled?: boolean;\r\n ExpirationDetailInfo?: ExpirationDetailInfo;\r\n emptyListDetected?: boolean;\r\n ContactsIncludeOptout?: string[];\r\n optOutCount?: number;\r\n}\r\n\r\nexport enum PMTrackingMode {\r\n IndividualTracking = \"Individual\",\r\n AggregateTracking = \"Aggregate\",\r\n AnonymousTracking = \"Anonymous\",\r\n Default = IndividualTracking,\r\n}\r\n\r\nexport enum WelcomeEmailType {\r\n NewUser_WelcomeTemplate = \"NewUser_WelcomeTemplate\",\r\n NewUser_WelcomeTemplateAzAD = \"NewUser_WelcomeTemplateAzAD\",\r\n\r\n}\r\n\r\nexport const WelcomeEmailVersion = (version: number, authMode: AuthModes) => {\r\n if (authMode === AuthModes.Password) {\r\n switch (version) {\r\n case 1:\r\n return WelcomeEmailType.NewUser_WelcomeTemplate;\r\n case 2:\r\n return \"NewUser With Download Link\";\r\n case 3:\r\n return \"NewUser\";\r\n case 4:\r\n return \"Password_ResetTemplate\";\r\n case 5:\r\n return \"Password Reset\";\r\n }\r\n }\r\n else {\r\n switch (version) {\r\n case 1:\r\n return WelcomeEmailType.NewUser_WelcomeTemplateAzAD;\r\n case 2:\r\n return \"NewUser With Download Link azuread\";\r\n case 3:\r\n return \"NewUser azuread\";\r\n case 4:\r\n return \"WindowsAuth_ResetTemplate\";\r\n case 5:\r\n return \"New User Win Auth\";\r\n }\r\n }\r\n}\r\n\r\n\r\nexport enum MailLocation {\r\n To = 1,\r\n CC = 2,\r\n BCC = 3\r\n}\r\n\r\nexport interface IMessageVideoDetails {\r\n videoUrl: string;\r\n mimeType: string;\r\n thumbnailData: string;\r\n duration: number;\r\n hideMessageBody: boolean;\r\n // new properties\r\n headerText?: string;\r\n content?: string[];\r\n}\r\n\r\nexport interface IPMRecipient extends IPMPersona {\r\n ID: string;\r\n Smtp: string;\r\n DisplayName: string;\r\n MailboxType?: AddressListTypes;\r\n MemberOfLists?: IPMRecipient[];\r\n Type?: MailLocation;\r\n}\r\n\r\nexport enum AddressListTypes {\r\n DynamicExchangeGroup = 0,\r\n Office365Group = 1,\r\n Office365DynamicGroup = 2,\r\n MailboxContactGroup = 3,\r\n LocalContactGroup = 4,\r\n SecurityGroup = 5,\r\n Contact = 6,\r\n NULL = 7,\r\n PoliteMailList = 8\r\n}\r\n\r\nexport interface ILink {\r\n ID?: string;\r\n Link: string;\r\n LinkName: string;\r\n}\r\n\r\nexport interface IPMEmailAddress {\r\n Name: string;\r\n Email: string;\r\n}\r\n\r\nexport interface ISimpleRecipient {\r\n ID?: string;\r\n Email: string;\r\n DisplayName: string;\r\n}\r\n\r\n\r\n\r\nexport interface IPMRemoteRecipient {\r\n Email: string;\r\n Name: string;\r\n MemberOf: ISimpleRecipient[];\r\n Type: MailLocation;\r\n}\r\n","import * as React from \"react\";\r\nimport {useContext} from \"react\";\r\n\r\ninterface IPMLoadingContext {\r\n isLoading: boolean;\r\n setIsLoading: (isLoading: boolean) => void;\r\n clearLoading: () => void;\r\n text?: string;\r\n setText?: (text: string) => void;\r\n}\r\n\r\nexport const PMLoadingContext = React.createContext<IPMLoadingContext>({\r\n isLoading: false,\r\n setIsLoading: null,\r\n clearLoading: null,\r\n});\r\n\r\nexport const PMLoadingContextProvider: React.FC = ({ children }) => {\r\n const [isLoading, setIsLoading] = React.useState<boolean>(false);\r\n const [text, setText] = React.useState<string>();\r\n\r\n const clearLoading = (): void => {\r\n setIsLoading(false);\r\n setText(\"\");\r\n };\r\n\r\n return (\r\n <PMLoadingContext.Provider\r\n value={{ isLoading, setIsLoading, text, setText, clearLoading }}\r\n >\r\n {children}\r\n </PMLoadingContext.Provider>\r\n );\r\n};\r\n\r\nexport const useLoading = () => useContext(PMLoadingContext);\r\n","import * as React from 'react';\r\n\r\ninterface IPMProgressIndicatorContext {\r\n message: string;\r\n setMessage: (msg: string) => void;\r\n isBusy: boolean;\r\n setIsBusy: (isBusy: boolean) => void;\r\n}\r\n\r\nexport const PMNavButtonLoadingContext = React.createContext<IPMProgressIndicatorContext>({\r\n message: '',\r\n setMessage: null,\r\n isBusy: false,\r\n setIsBusy: null,\r\n});\r\n\r\nexport const PMNavButtonLoadingContextProvider: React.FC = ({ children }) => {\r\n const [message, setMessage] = React.useState<string>('');\r\n const [isBusy, setIsBusy] = React.useState<boolean>(false);\r\n\r\n return (\r\n <PMNavButtonLoadingContext.Provider value={{ message, setMessage, isBusy, setIsBusy }}>\r\n { children }\r\n </PMNavButtonLoadingContext.Provider>\r\n )\r\n}","import * as React from 'react';\r\nimport { initialNotificationState, IPMNotification, PMNotificationManagerAction, NotificationManagerReducer } from './PMNotificationsStateReducer';\r\n\r\nexport interface IPMNotificationManagerState {\r\n notification: IPMNotification;\r\n NotificationDispatch: React.Dispatch<PMNotificationManagerAction>\r\n}\r\n\r\nconst initialNotificationManagerState: IPMNotificationManagerState = {\r\n notification: null,\r\n NotificationDispatch: null,\r\n}\r\n\r\nexport const PMNotificationsContext = React.createContext<IPMNotificationManagerState>(initialNotificationManagerState);\r\n\r\nexport const PMNotificationsContextProvider: React.FC = ({ children }) => {\r\n const [notification, NotificationDispatch] = React.useReducer(NotificationManagerReducer, initialNotificationState)\r\n\r\n return (\r\n <PMNotificationsContext.Provider value={{notification, NotificationDispatch}}>\r\n {children}\r\n </PMNotificationsContext.Provider>\r\n )\r\n}","import { MessageBarType, IMessageBarProps } from '@fluentui/react';\r\nimport * as React from 'react';\r\n\r\nexport interface IPMNotification extends IMessageBarProps {\r\n message: string;\r\n}\r\n\r\nconst initialNotificationState: IPMNotification = {\r\n messageBarType: MessageBarType.info,\r\n message: '',\r\n hidden: true,\r\n}\r\n\r\nexport enum PMNotificationManagerActionType {\r\n SET_TYPE,\r\n SET_MESSAGE,\r\n INIT_NOTIFICATION,\r\n UNINIT_NOTIFICATION,\r\n SET_HIDDEN\r\n}\r\n\r\nexport type PMNotificationManagerAction =\r\n | { type: PMNotificationManagerActionType.INIT_NOTIFICATION, payload: IPMNotification }\r\n | { type: PMNotificationManagerActionType.UNINIT_NOTIFICATION }\r\n | { type: PMNotificationManagerActionType.SET_MESSAGE, payload: string }\r\n | { type: PMNotificationManagerActionType.SET_TYPE, payload: MessageBarType }\r\n | { type: PMNotificationManagerActionType.SET_HIDDEN, payload: boolean };\r\n\r\nconst NotificationManagerReducer: React.Reducer<IPMNotification, PMNotificationManagerAction> = (state, action) => {\r\n switch (action.type) {\r\n case PMNotificationManagerActionType.INIT_NOTIFICATION:\r\n return action.payload\r\n case PMNotificationManagerActionType.UNINIT_NOTIFICATION:\r\n return initialNotificationState\r\n case PMNotificationManagerActionType.SET_MESSAGE:\r\n return { ...state, message: action.payload }\r\n case PMNotificationManagerActionType.SET_TYPE:\r\n return { ...state, type: action.payload }\r\n case PMNotificationManagerActionType.SET_HIDDEN:\r\n return { ...state, hidden: action.payload }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport { initialNotificationState, NotificationManagerReducer }\r\n","import React from 'react';\r\nimport { emptyAction, WarningDisplay } from 'Utils/PageActions/PageActions';\r\nimport { warningReducer, PMNotificationType, WarningAction, WarningState } from 'Utils/PageActions/WarningReducer';\r\n\r\nexport interface IPMWarningContextState {\r\n warningState: WarningState;\r\n dispatch: React.Dispatch<WarningAction>;\r\n}\r\n\r\nconst initialNotificationManagerState: IPMWarningContextState = {\r\n warningState: {\r\n showWarning: false,\r\n dialogType: PMNotificationType.OkCancel,\r\n warningTitle: 'Warning',\r\n warningText: 'Warning Description',\r\n onOkAction: emptyAction,\r\n onCancelAction: emptyAction\r\n },\r\n dispatch: emptyAction\r\n};\r\n\r\nexport const PMWarningContext = React.createContext<IPMWarningContextState>(initialNotificationManagerState);\r\nexport const PMWarningContextProvider: React.FC = ({ children }) => {\r\n const [warningState, dispatch] = React.useReducer(warningReducer, {\r\n showWarning: false,\r\n dialogType: PMNotificationType.Ok,\r\n warningTitle: 'Invalid Selection',\r\n warningText: 'Please select one or more rows for this action.',\r\n onOkAction: emptyAction,\r\n onCancelAction: emptyAction\r\n });\r\n const value = React.useMemo(() => ({ warningState, dispatch }), [warningState, dispatch]);\r\n\r\n return (\r\n <PMWarningContext.Provider value={value}>\r\n {children}\r\n {warningState.showWarning && <WarningDisplay warningState={warningState} dispatch={dispatch} />}\r\n </PMWarningContext.Provider>\r\n );\r\n};\r\n\r\nexport const usePMWarningContext = () => React.useContext(PMWarningContext);\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { default as moment } from \"moment\";\r\nimport { ExpirationDetailInfo } from \"Definitions/Generated/PoliteMailEntities/Models/ExpirationDetail\";\r\n\r\nexport interface ExpirationDetailsState {\r\n isExpirationModalHidden: boolean;\r\n deliveryListIds: number[];\r\n expirationDate: string;\r\n expirationMessage: string;\r\n expirationInfoLink: string;\r\n expirationInfoLinkText: string;\r\n expirationEnabledOnMessage: boolean;\r\n linkId: number;\r\n stateIsReset: boolean;\r\n}\r\n\r\nconst initialState: ExpirationDetailsState = {\r\n isExpirationModalHidden: true,\r\n deliveryListIds: [],\r\n expirationMessage: \"\",\r\n expirationInfoLink: \"\",\r\n expirationInfoLinkText: \"\",\r\n expirationDate: moment().add(1, 'days').format(\"YYYY-MM-DDTHH:mm:ssZ\"),\r\n expirationEnabledOnMessage: false,\r\n linkId: 0,\r\n stateIsReset: false,\r\n};\r\n\r\nexport const expirationDetailsSlice = createSlice({\r\n name: \"expirationDetails\",\r\n initialState,\r\n reducers: {\r\n setIsExpirationModalHidden: (state, action: PayloadAction<boolean>) => {\r\n state.isExpirationModalHidden = action.payload;\r\n },\r\n setDeliveryListIds: (state, action: PayloadAction<number[]>) => {\r\n state.deliveryListIds = [...action.payload];\r\n },\r\n setExpirationEnabledOnMessage: (state, action: PayloadAction<boolean>) => {\r\n state.expirationEnabledOnMessage = action.payload;\r\n },\r\n setExpireDetailsInfoState: (state, action: PayloadAction<ExpirationDetailInfo>) => {\r\n state.expirationMessage = action.payload.MessageText;\r\n state.expirationInfoLink = action.payload.InfoLink;\r\n state.expirationInfoLinkText = action.payload.InfoLinkText;\r\n state.expirationDate = moment(action.payload.ExpirationDate).format(\"YYYY-MM-DDTHH:mm:ssZ\");\r\n state.linkId = action.payload.LinkId;\r\n },\r\n resetExpireDetailsState: (state, action?: PayloadAction<boolean>) => {\r\n // action? is for if the stateIsReset flag needs to be set to true in order to reset expiration details modal local state if needed.\r\n return {\r\n ...initialState,\r\n stateIsReset: Boolean(action),\r\n expirationDate: moment().add(1, 'days').format(\"YYYY-MM-DDTHH:mm:ssZ\"),\r\n };\r\n },\r\n setResetToFalse: (state) => {\r\n state.stateIsReset = false;\r\n }\r\n },\r\n});\r\n\r\nexport const {\r\n setIsExpirationModalHidden,\r\n setDeliveryListIds,\r\n setExpirationEnabledOnMessage,\r\n setExpireDetailsInfoState,\r\n resetExpireDetailsState,\r\n setResetToFalse,\r\n} = expirationDetailsSlice.actions;\r\n\r\nexport default expirationDetailsSlice.reducer;\r\n","import { Report } from \"Definitions/Generated/PoliteMailEntities/Models/Report\";\r\nimport { baseApi } from \"./baseApiSlice\";\r\nimport { PMComparableReports } from \"./multiComparisonSlice\";\r\n\r\nexport interface IMultiComparisonQueryArgs {\r\n ids: number[];\r\n reportType: PMComparableReports;\r\n}\r\n\r\nexport interface IReportStatQueryArgs {\r\n id: number;\r\n reportType: PMComparableReports;\r\n}\r\n\r\nexport const reportStatsApi = baseApi.injectEndpoints({\r\n endpoints: (builder) => ({\r\n getReportStats: builder.query<Report, IReportStatQueryArgs>({\r\n query: (args) => ({\r\n url: `${args.reportType}(${args.id})/GetReportStats`\r\n })\r\n }),\r\n getReportBenchmarkStats: builder.query({\r\n query: (args) => ({\r\n url: `Reports(0)/GetBenchmarkStats`\r\n })\r\n })\r\n }),\r\n});\r\n\r\nexport const { useGetReportStatsQuery } = reportStatsApi;\r\n\r\nexport default reportStatsApi.reducer;","import { AppSetting } from \"Definitions/Generated/PoliteMailEntities/Models/AppSetting\";\r\nimport { RTKQueryTags, baseApi } from \"./baseApiSlice\";\r\n\r\nexport const appSettingsApiSlice = baseApi.injectEndpoints({\r\n endpoints: (builder) => ({\r\n getAppSettingByKey: builder.query<AppSetting, string>({\r\n query: (key) => ({\r\n url: \"AppSettings/Default.GetAppSetting\",\r\n method: \"POST\",\r\n body: {\r\n Key: key,\r\n },\r\n }),\r\n providesTags: (_result, _error, key) => [{ type: RTKQueryTags.AppSetting, id: key }],\r\n }),\r\n getFeatureFlagSettings: builder.query<AppSetting[], {query?:string}>({\r\n query: () => ({\r\n url: \"AppSettings/GetFeatureToggleAppSettings\",\r\n method: \"GET\",\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: AppSetting[] }).value;\r\n },\r\n providesTags: (_result, _error, _args) => [{ type: RTKQueryTags.AppSetting, id: 'FeatureFlags' }],\r\n }),\r\n })\r\n});\r\n\r\nexport const { useGetAppSettingByKeyQuery, useGetFeatureFlagSettingsQuery } = appSettingsApiSlice;\r\n\r\nexport const appSettingsApiHooks = {\r\n GetAppSettingByKey: useGetAppSettingByKeyQuery,\r\n GetFeatureFlags: useGetFeatureFlagSettingsQuery\r\n};\r\n\r\nexport default appSettingsApiSlice.reducer;\r\n","import {createApi, fetchBaseQuery} from '@reduxjs/toolkit/query/react';\r\nimport {REHYDRATE} from 'redux-persist';\r\nimport {IGlobalProfile} from 'Utils/GlobalProfile';\r\nimport { ODataQueryBuilder } from 'Utils/ODataQueryBuilder';\r\n\r\nexport type ApiResponse<T> = {\r\n\tvalue: T[];\r\n};\r\n\r\nexport enum RTKQueryTags {\r\n AccountWithStats = 'AccountWithStats',\r\n AppSetting = 'AppSetting',\r\n Business = 'Business',\r\n Campaign = 'Campaign',\r\n Contact = 'Contact',\r\n ContentImage = 'ContentImage',\r\n ContentRectangle = 'ContentRectangle',\r\n CustomField = 'CustomField',\r\n CustomTemplatePiece = 'CustomTemplatePiece',\r\n DeviceCount = 'DeviceCount',\r\n Event = 'Event',\r\n ExpireDetails = 'ExpireDetails',\r\n Folder = 'Folder',\r\n FolderItem = 'FolderItem',\r\n From = 'From',\r\n FromWithStats = 'FromWithStats',\r\n GlobalProfile = 'GlobalProfile',\r\n GroupLabel = 'GroupLabel',\r\n HourOfDayRead = 'HourOfDayRead',\r\n Image = \"Image\",\r\n LatLongBoundsInfo = 'LatLongBoundsInfo',\r\n Link = \"Link\",\r\n LinkBI = 'LinkBI',\r\n LinkStat = 'LinkStat',\r\n List = 'List',\r\n Location = 'Location',\r\n Logo = 'Logo',\r\n LogoType = 'LogoType',\r\n PasswordRule = \"PasswordRule\",\r\n Paragraph = \"Paragraph\",\r\n Report = 'Report',\r\n Regions = 'Regions',\r\n SavedLayout = 'SavedLayout',\r\n Sender = 'Sender',\r\n SentMessage = 'SentMessage',\r\n SentSurvey = 'SentSurvey',\r\n SmartAttachment = \"SmartAttachment\",\r\n SocialAdvocacy = 'SocialAdvocacy',\r\n SocialMediaClick = 'SocialMediaClick',\r\n SocialMediaLinks = 'SocialMediaLinks',\r\n SocialStyle = \"SocialStyle\",\r\n SublistStats = 'SublistStats',\r\n Tag = 'Tag',\r\n TagGroup = \"TagGroup\",\r\n TemplatePiece = 'TemplatePiece',\r\n TemplateTheme = 'TemplateTheme',\r\n Template = \"Template\",\r\n User = 'User',\r\n UserFrom = 'UserFrom',\r\n UserWithStats = 'UserWithStats',\r\n ListFilter = 'ListFilter',\r\n Stages = 'Stages'\r\n}\r\n\r\nexport type ApiResponseWithCount<T> = ApiResponse<T> & {\r\n\t\"@odata.count\": number;\r\n};\r\n\r\nexport const baseApi = createApi({\r\n\tbaseQuery: fetchBaseQuery({baseUrl: '/api/odata/', prepareHeaders:(headers, {getState}) => {\r\n\t\tif(ODataQueryBuilder.AuthorizeHeader)\r\n\t\t{\r\n\t\t\theaders.set(\"Authorization\", ODataQueryBuilder.AuthorizeHeader);\r\n\t\t}\t\t\r\n\t\treturn headers;\r\n\t}}),\r\n\tkeepUnusedDataFor: 300,\r\n\textractRehydrationInfo(action, {reducerPath}) {\r\n\t\tif (action.type === REHYDRATE && action.payload) {\r\n\t\t\treturn action.payload[reducerPath];\r\n\t\t}\r\n\t},\r\n\tendpoints: builder => ({\r\n\t\tsetTimeZone: builder.query<{ID: number; Data: string}, {offset: string; timezone: string}>({\r\n\t\t\tquery: parameters => ({\r\n\t\t\t\turl: 'GetDataObjects(1)/SetTimeZone',\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\tparams: parameters,\r\n\t\t\t}),\r\n\t\t}),\r\n\t\tgetGlobalProfile: builder.query<IGlobalProfile, void>({\r\n\t\t\tquery: () => ({\r\n\t\t\t\turl: 'GlobalProfiles(0)',\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t}),\r\n\t\t\ttransformResponse(response) {\r\n\t\t\t\treturn response as IGlobalProfile;\r\n\t\t\t},\r\n\t\t\tprovidesTags: (_result, _error, _args) => [RTKQueryTags.GlobalProfile],\r\n\t\t}),\r\n\t\tsetGlobalProfile: builder.mutation<IGlobalProfile, Partial<IGlobalProfile>>({\r\n\t\t\tquery: profile => ({\r\n\t\t\t\turl: 'GlobalProfiles',\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tbody: profile,\r\n\t\t\t}),\r\n\t\t\ttransformResponse(response) {\r\n\t\t\t\treturn response as IGlobalProfile;\r\n\t\t\t},\r\n\t\t\tinvalidatesTags: [RTKQueryTags.GlobalProfile],\r\n\t\t}),\r\n\t}),\r\n\ttagTypes: Object.values(RTKQueryTags)\r\n});\r\n\r\nconst {useSetTimeZoneQuery, useGetGlobalProfileQuery, useSetGlobalProfileMutation} = baseApi;\r\n\r\nexport const baseApiHooks = {\r\n\tuseSetTimeZoneQuery,\r\n\tuseGetGlobalProfileQuery,\r\n\tuseSetGlobalProfileMutation,\r\n};\r\n\r\nexport default baseApi.reducer;\r\n","import { Business } from \"Definitions/Generated/PoliteMailEntities/Models/Business\";\r\nimport { RTKQueryTags, baseApi } from \"./baseApiSlice\";\r\nconst businessesApiSlice = baseApi.injectEndpoints({\r\n endpoints: (builder) => ({\r\n getBusinesses: builder.query<Business[], void>({\r\n query: () => ({\r\n url: \"Businesses\",\r\n }),\r\n transformResponse: (response) => {\r\n return (response as { value: Business[] }).value;\r\n },\r\n providesTags: (result, _error, _args) => {\r\n return result\r\n ? [\r\n { type: RTKQueryTags.Business, id: \"LIST\" },\r\n ...result.map((business) => ({\r\n type: RTKQueryTags.Business,\r\n id: business?.ID ?? 0,\r\n })),\r\n ]\r\n : [];\r\n },\r\n }),\r\n }),\r\n});\r\nconst { useGetBusinessesQuery } = businessesApiSlice;\r\n\r\nexport const businessesApiHooks = {\r\n useGetBusinessesQuery,\r\n};\r\n","import { Campaign } from 'Definitions/Generated/PoliteMailEntities/Models/Campaign';\r\nimport { SentMessage } from 'Definitions/Generated/PoliteMailEntities/Models/SentMessage';\r\nimport { RTKQueryTags, baseApi } from './baseApiSlice';\r\nimport { Event } from 'Definitions/Generated/PoliteMailEntities/Models/Event';\r\nimport { DeviceCount } from 'Definitions/Generated/PoliteMailEntities/Models/DeviceCount';\r\nimport { HourOfDayRead } from 'Definitions/Generated/PoliteMailEntities/Models/HourOfDayRead';\r\nimport { LinkStat } from 'Definitions/Generated/PoliteMailEntities/Models/LinkStat';\r\nimport { Location } from 'Definitions/Generated/PoliteMailEntities/Models/Location';\r\nimport { Report } from 'Definitions/Generated/PoliteMailEntities/Models/Report';\r\nimport { MonthlyEngagementMetric, MonthlyEngagementMetricSeries } from 'Definitions/Generated/PoliteMailEntities/Models/MonthlyEngagementMetric';\r\nimport { addDummyHourOfDay, convertReachObjectsToSeries } from 'Utils/ReportUtils';\r\nimport { HourOfDayMetrics } from 'Definitions/Generated/PoliteMailEntities/Models/HourOfDayMetrics';\r\n\r\nconst campaignsApiSlice = baseApi\r\n .enhanceEndpoints({\r\n addTagTypes: [\r\n 'CampaignLength',\r\n 'CampaignSentMessages',\r\n 'CampaignEvents',\r\n 'CampaignDesktopDevicesSummary',\r\n 'CampaignMobileDevicesSummary',\r\n 'CampaignProxyDevicesSummary',\r\n 'CampaignHourOfDayReads',\r\n 'CampaignLinkStats',\r\n 'CampaignLocations',\r\n 'CampaignReportStats',\r\n 'CampaignReachMetrics',\r\n 'CampaignHasSendsToProcess',\r\n ],\r\n })\r\n .injectEndpoints({\r\n endpoints: (builder) => ({\r\n /**\r\n * Returns the campaigns for the given account\r\n * @param args - Arguments for the endpoint\r\n * @param args.query - Query parameters (optional)\r\n */\r\n getCampaigns: builder.query<Campaign[], { query?: string }>({\r\n query: (args: { query: any; }) => ({\r\n url: `Campaigns${args?.query || ''}`,\r\n method: 'GET',\r\n }),\r\n transformResponse: (responseData: { value: Campaign[]; }) => {\r\n return (responseData as { value: Campaign[] }).value;\r\n },\r\n providesTags: (result, error, args) => [\r\n { type: RTKQueryTags.Campaign, id: 'LIST' },\r\n ...result?.map((campaign: { ID: any; }) => ({ type: RTKQueryTags.Campaign, id: campaign?.ID ?? 0 })),\r\n ],\r\n }),\r\n /**\r\n * Returns campaign by ID\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n * @param args.query - Query parameters (optional, NOT IMPLEMENTED YET)\r\n */\r\n getCampaignById: builder.query<Campaign, { id: number; query?: string }>({\r\n query: (args: { id: number; query?: string }) => ({\r\n url: `Campaigns(${args.id})${args?.query || ''}`,\r\n method: 'GET',\r\n }),\r\n transformResponse: (responseData) => {\r\n return responseData as Campaign;\r\n },\r\n providesTags: (result) => [{ type: RTKQueryTags.Campaign, id: result?.ID ?? 0 }],\r\n }),\r\n /**\r\n * Create a new campaign\r\n * @param args - Campaign to create\r\n */\r\n //@ts-ignore\r\n addCampaign: builder.mutation<Campaign, Partial<Campaign>>({\r\n query: (campaign) => ({\r\n url: 'Campaigns',\r\n method: 'POST',\r\n body: campaign,\r\n }),\r\n transformResponse: (responseData) => {\r\n return responseData as Campaign;\r\n },\r\n invalidatesTags: [{ type: RTKQueryTags.Campaign, id: 'LIST' }],\r\n }),\r\n /**\r\n * Update a campaign\r\n * @param args - Campaign to update\r\n */\r\n //@ts-ignore\r\n updateCampaign: builder.mutation<Campaign, Partial<Campaign>>({\r\n query: (campaign) => ({\r\n url: `Campaigns(${campaign.ID})`,\r\n method: 'PATCH',\r\n body: campaign,\r\n }),\r\n transformResponse: (responseData) => {\r\n return responseData as Campaign;\r\n },\r\n invalidatesTags: (result) => [\r\n { type: RTKQueryTags.Campaign, id: result.ID },\r\n { type: RTKQueryTags.Campaign, id: 'LIST' },\r\n ],\r\n }),\r\n /**\r\n * Put a campaign\r\n * @param args - Campaign to put\r\n */\r\n //@ts-ignore\r\n putCampaign: builder.mutation<Campaign, Partial<Campaign>>({\r\n query: (campaign) => ({\r\n url: `Campaigns(${campaign.ID})`,\r\n method: 'PUT',\r\n body: campaign,\r\n }),\r\n transformResponse: (responseData) => {\r\n return responseData as Campaign;\r\n },\r\n invalidatesTags: (result) => [\r\n { type: RTKQueryTags.Campaign, id: result.ID },\r\n { type: RTKQueryTags.Campaign, id: 'LIST' },\r\n ],\r\n }),\r\n /**\r\n * Delete a campaign\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n */\r\n //@ts-ignore\r\n deleteCampaign: builder.mutation<{ id: number }>({\r\n query: ({ id }) => ({\r\n url: `Campaigns(${id})`,\r\n method: 'DELETE',\r\n }),\r\n invalidatesTags: (_result, _error, { id }) => [\r\n { type: RTKQueryTags.Campaign, id },\r\n { type: RTKQueryTags.Campaign, id: 'LIST' },\r\n ],\r\n }),\r\n /**\r\n * Returns the campaign length\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n */\r\n //@ts-ignore\r\n getLengthByCampaign: builder.query<number, { id: number }>({\r\n query: ({ id }) => ({\r\n url: `Campaigns(${id})/Length`,\r\n method: 'POST',\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: number }).value;\r\n },\r\n providesTags: (_result, _error, { id }) => [\r\n { type: 'CampaignLength', id },\r\n { type: RTKQueryTags.Campaign, id },\r\n ],\r\n }),\r\n /**\r\n * Add sent messages to a campaign\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n * @param args.sentMessageIds - Message Ids to add\r\n */\r\n //@ts-ignore\r\n addSentMessagesToCampaign: builder.mutation<boolean, { id: number; sentMessageIds: number[] }>({\r\n query: ({ id, sentMessageIds }) => ({\r\n url: `Campaigns(${id})/AddSentMessages`,\r\n method: 'POST',\r\n body: {\r\n sentmessages: sentMessageIds,\r\n },\r\n }),\r\n invalidatesTags: (_result, _error, { id, sentMessageIds }) => [\r\n { type: 'CampaignSentMessages', id },\r\n { type: RTKQueryTags.Campaign, id },\r\n ...sentMessageIds.map((sentMessageId) => ({ type: RTKQueryTags.SentMessage, id: sentMessageId })),\r\n ],\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n }),\r\n /**\r\n * Remove sent messages from a campaign\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n * @param args.sentMessageIds - Message Ids to remove\r\n */\r\n //@ts-ignore\r\n removeSentMessagesFromCampaign: builder.mutation<boolean, { id: number; sentMessageIds: number[] }>({\r\n query: ({ id, sentMessageIds }) => ({\r\n url: `Campaigns(${id})/RemoveSentMessages`,\r\n method: 'POST',\r\n body: {\r\n sentmessages: sentMessageIds,\r\n },\r\n }),\r\n invalidatesTags: (_result, _error, { id, sentMessageIds }) => [\r\n { type: 'CampaignSentMessages', id: id },\r\n { type: RTKQueryTags.Campaign, id },\r\n ...sentMessageIds.map((sentMessageId) => ({ type: RTKQueryTags.SentMessage, id: sentMessageId })),\r\n ],\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n }),\r\n /**\r\n * Returns the campaign sent messages\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n * @param args.query - Query parameters (optional)\r\n */\r\n getSentMessagesByCampaign: builder.query<SentMessage[], { id: number; query?: string }>({\r\n query: (args) => ({\r\n url: `Campaigns(${args.id})/SentMessages${args?.query || ''}`,\r\n method: 'GET',\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: SentMessage[] }).value;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: 'CampaignSentMessages', id: id },\r\n { type: RTKQueryTags.Campaign, id },\r\n ...result?.map(({ ID }) => ({ type: RTKQueryTags.SentMessage, id: ID })),\r\n ],\r\n }),\r\n /**\r\n * Returns events by campaign\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n * @param args.query - Query parameters (optional)\r\n */\r\n getEventsByCampaign: builder.query<Event[], { id: number; query?: string }>({\r\n query: (args) => ({\r\n url: `Campaigns(${args.id})/Events${args?.query || ''}`,\r\n method: 'GET',\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: Event[] }).value;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: 'CampaignEvents', id: id },\r\n { type: RTKQueryTags.Campaign, id },\r\n ...result?.map(({ ID }) => ({ type: RTKQueryTags.Event, id: ID })),\r\n ],\r\n }),\r\n /**\r\n * Returns proxy device counts by campaign\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n * @param args.query - Query parameters (optional)\r\n */\r\n getProxyDevicesSummaryByCampaign: builder.query<DeviceCount[], { id: number; query?: string }>({\r\n query: (args) => ({\r\n url: `Campaigns(${args.id})/ProxyDeviceSummary${args?.query || ''}`,\r\n method: 'GET',\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: DeviceCount[] }).value;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.Campaign, id },\r\n { type: 'CampaignProxyDevicesSummary', id: id },\r\n ...result?.map(({ ID }) => ({ type: RTKQueryTags.DeviceCount, id: ID })),\r\n ],\r\n }),\r\n /**\r\n * Returns desktop device counts by campaign\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n * @param args.query - Query parameters (optional)\r\n */\r\n getDesktopDevicesSummaryByCampaign: builder.query<DeviceCount[], { id: number; query?: string }>({\r\n query: (args) => ({\r\n url: `Campaigns(${args.id})/DesktopDeviceSummary${args?.query || ''}`,\r\n method: 'GET',\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: DeviceCount[] }).value;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.Campaign, id },\r\n { type: 'CampaignDesktopDevicesSummary', id: id },\r\n ...result?.map(({ ID }) => ({ type: RTKQueryTags.DeviceCount, id: ID })),\r\n ],\r\n }),\r\n /**\r\n * Returns mobile device counts by campaign\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n * @param args.query - Query parameters (optional)\r\n */\r\n getMobileDevicesSummaryByCampaign: builder.query<DeviceCount[], { id: number; query?: string }>({\r\n query: (args) => ({\r\n url: `Campaigns(${args.id})/MobileDeviceSummary${args?.query || ''}`,\r\n method: 'GET',\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: DeviceCount[] }).value;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.Campaign, id },\r\n { type: 'CampaignMobileDevicesSummary', id: id },\r\n ...result?.map(({ ID }) => ({ type: RTKQueryTags.DeviceCount, id: ID })),\r\n ],\r\n }),\r\n /**\r\n * Returns the campaign Hour of Day Reads by campaign\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n * @param args.query - Query parameters (optional)\r\n */\r\n getHourOfDayReadsByCampaign: builder.query<HourOfDayMetrics[], { id: number; query?: string }>({\r\n query: (args) => ({\r\n url: `Campaigns(${args.id})/HourOfDayReads${args?.query || ''}`,\r\n method: 'GET',\r\n }),\r\n transformResponse: (responseData) => {\r\n return addDummyHourOfDay((responseData as { value: HourOfDayRead[] }).value);\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.Campaign, id: id },\r\n { type: 'CampaignHourOfDayReads', id: id },\r\n ...result?.map(({ ID }) => ({ type: RTKQueryTags.HourOfDayRead, id: ID })),\r\n ],\r\n }),\r\n /**\r\n * Returns the link stats by campaign\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n * @param args.query - Query parameters (optional)\r\n */\r\n getLinkStatsByCampaign: builder.query<LinkStat[], { id: number }>({\r\n query: ({ id }) => ({\r\n url: `Campaigns(${id})/GetLinkStats`,\r\n method: 'GET',\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: LinkStat[] }).value;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.Campaign, id: id },\r\n { type: 'CampaignLinkStats', id: id },\r\n ...result?.map(({ ID }) => ({ type: RTKQueryTags.LinkStat, id: ID })),\r\n ],\r\n }),\r\n /**\r\n * Returns the locations by campaign\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n * @param args.query - Query parameters (optional)\r\n */\r\n getLocationsByCampaign: builder.query<Location[], { id: number; query?: string }>({\r\n query: ({ id }) => ({\r\n url: `Campaigns(${id})/Locations`,\r\n method: 'GET',\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: Location[] }).value;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.Campaign, id: id },\r\n { type: 'CampaignLocations', id: id },\r\n ...result?.map(({ ID }) => ({ type: RTKQueryTags.Location, id: ID })),\r\n ],\r\n }),\r\n /**\r\n * Returns the report stats by campaign\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n */\r\n getReportStatsByCampaign: builder.query<Report, { id: number }>({\r\n query: ({ id }) => ({\r\n url: `Campaigns(${id})/GetReportStats`,\r\n method: 'GET',\r\n }),\r\n transformResponse: (responseData) => {\r\n return responseData as Report;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.Campaign, id: id },\r\n { type: 'CampaignReportStats', id: id },\r\n { type: RTKQueryTags.Report, id: result?.ID ?? 0 },\r\n ],\r\n }),\r\n /**\r\n * Create new campaign by date range\r\n * @param args - Arguments for the endpoint\r\n * @param args.startDate - Start date of the campaign \"2022-05-31T21:00:00.000Z\"\r\n * @param args.endDate - End date of the campaign \"2022-05-31T21:00:00.000Z\"\r\n * @returns New campaign ID\r\n */\r\n createCampaignByDateRange: builder.mutation<number, { startDate: string; endDate: string }>({\r\n query: ({ startDate, endDate }) => ({\r\n url: 'Campaigns/CreateCampaignByDateRange',\r\n method: 'POST',\r\n body: {\r\n StartDate: startDate,\r\n EndDate: endDate\r\n },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: number }).value;\r\n },\r\n invalidatesTags: [{ type: RTKQueryTags.Campaign, id: 'LIST' }],\r\n }),\r\n /**\r\n * Returns the campaign reach metrics converted to a MonthlyEngagementMetricSeries\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n */\r\n getReachMetricsByCampaign: builder.query<MonthlyEngagementMetricSeries, { id: number }>({\r\n query: ({ id }) => ({\r\n url: `Campaigns/GetCampaignReachMetrics`,\r\n method: 'POST',\r\n body: {\r\n Id: id,\r\n filter: '',\r\n },\r\n }),\r\n transformResponse: (responseData) => {\r\n return convertReachObjectsToSeries((responseData as { value: MonthlyEngagementMetric[] }).value);\r\n },\r\n providesTags: (_result, _error, { id }) => [\r\n { type: RTKQueryTags.Campaign, id: id },\r\n { type: 'CampaignReachMetrics', id: id },\r\n ],\r\n }),\r\n /**\r\n * Returns the sent messages by campaign and tag ID\r\n * @param args - Arguments for the endpoint\r\n * @param args.campaignId - ID of the campaign\r\n * @param args.tagId - ID of the tag\r\n */\r\n getSentMessagesByTagAndCampaign: builder.query<SentMessage[], { tagId: number; campaignId: number }>({\r\n query: ({ tagId, campaignId }) => ({\r\n url: `Campaigns/Default.GetByTagId`,\r\n method: 'POST',\r\n body: { tagId, campaignId },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: SentMessage[] }).value;\r\n },\r\n providesTags: (result, _error, { tagId, campaignId }) => [\r\n { type: RTKQueryTags.Campaign, id: campaignId },\r\n { type: 'CampaignSentMessages', id: campaignId },\r\n { type: RTKQueryTags.Tag, id: tagId },\r\n ...result?.map(({ ID }) => ({ type: RTKQueryTags.SentMessage, id: ID })),\r\n ],\r\n }),\r\n /**\r\n * Returns has campaign sends to process\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the campaign\r\n */\r\n hasSendsToProcessByCampaign: builder.query<boolean, { id: number }>({\r\n query: ({ id }) => ({\r\n url: `Campaigns/HasSendsToProcess?key=${id}`,\r\n method: 'GET',\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n providesTags: (_result, _error, { id }) => [\r\n { type: RTKQueryTags.Campaign, id: id },\r\n { type: 'CampaignHasSendsToProcess', id: id },\r\n ],\r\n }),\r\n /**\r\n * Update metrics for selected campaigns\r\n * @param args - Arguments for the endpoint\r\n * @param args.campaignIds - IDs of the campaigns\r\n */\r\n updateMetricsByCampaign: builder.mutation<boolean, { campaignsId: number[] }>({\r\n query: ({ campaignsId }) => ({\r\n url: `Campaigns/UpdateMetrics`,\r\n method: 'POST',\r\n body: {\r\n campaigns: campaignsId,\r\n },\r\n }),\r\n invalidatesTags: (response, _error, { campaignsId }) =>\r\n response ? [...campaignsId.map((id) => ({ type: RTKQueryTags.Campaign, id }))] : [],\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n }),\r\n }),\r\n });\r\n\r\nconst {\r\n useGetCampaignsQuery,\r\n useGetCampaignByIdQuery,\r\n useAddCampaignMutation,\r\n useUpdateCampaignMutation,\r\n usePutCampaignMutation,\r\n useDeleteCampaignMutation,\r\n useGetLocationsByCampaignQuery,\r\n useGetEventsByCampaignQuery,\r\n useGetHourOfDayReadsByCampaignQuery,\r\n useGetLengthByCampaignQuery,\r\n useGetLinkStatsByCampaignQuery,\r\n useGetReportStatsByCampaignQuery,\r\n useAddSentMessagesToCampaignMutation,\r\n useGetSentMessagesByCampaignQuery,\r\n useGetReachMetricsByCampaignQuery,\r\n useRemoveSentMessagesFromCampaignMutation,\r\n useGetDesktopDevicesSummaryByCampaignQuery,\r\n useGetMobileDevicesSummaryByCampaignQuery,\r\n useGetProxyDevicesSummaryByCampaignQuery,\r\n useCreateCampaignByDateRangeMutation,\r\n useHasSendsToProcessByCampaignQuery,\r\n useUpdateMetricsByCampaignMutation,\r\n useGetSentMessagesByTagAndCampaignQuery\r\n} = campaignsApiSlice;\r\n\r\nexport const campaignApiHooks = {\r\n useGetCampaignsQuery,\r\n useGetCampaignByIdQuery,\r\n useAddCampaignMutation,\r\n useUpdateCampaignMutation,\r\n usePutCampaignMutation,\r\n useDeleteCampaignMutation,\r\n useGetLocationsByCampaignQuery,\r\n useGetEventsByCampaignQuery,\r\n useGetHourOfDayReadsByCampaignQuery,\r\n useGetLengthByCampaignQuery,\r\n useGetLinkStatsByCampaignQuery,\r\n useGetReportStatsByCampaignQuery,\r\n useAddSentMessagesToCampaignMutation,\r\n useGetSentMessagesByCampaignQuery,\r\n useGetReachMetricsByCampaignQuery,\r\n useRemoveSentMessagesFromCampaignMutation,\r\n useGetDesktopDevicesSummaryByCampaignQuery,\r\n useGetMobileDevicesSummaryByCampaignQuery,\r\n useGetProxyDevicesSummaryByCampaignQuery,\r\n useCreateCampaignByDateRangeMutation,\r\n useHasSendsToProcessByCampaignQuery,\r\n useUpdateMetricsByCampaignMutation,\r\n useGetSentMessagesByTagAndCampaignQuery\r\n}\r\n","import { NameValue } from \"Definitions/Generated/PoliteMailEntities/Models/NameValue\";\r\nimport { baseApi } from \"./baseApiSlice\";\r\n\r\nexport interface ICountry {\r\n CountryAbreviation: string;\r\n CountryName: string;\r\n}\r\n\r\nconst contactsApiSlice = baseApi.enhanceEndpoints({\r\n addTagTypes: [\"Contacts\",\r\n \"Countries\",\r\n \"Timezones\"],\r\n}).injectEndpoints({\r\n endpoints: (builder) => ({\r\n getCountries: builder.query<ICountry[], void>({\r\n query: () => ({\r\n url: `Contacts/GetCountries`,\r\n method: 'POST',\r\n }),\r\n transformResponse: (response: { value: ICountry[] }) => {\r\n return response.value;\r\n },\r\n providesTags: (result) => [\r\n ...result.map(({ CountryAbreviation }) => ({ type: \"Countries\" as const, id: CountryAbreviation })),\r\n ]\r\n }),\r\n getTimezones: builder.query<NameValue<string,string>[], void>({\r\n query: () => ({\r\n url: `Contacts/GetAssignedTimeZones`,\r\n method: 'GET',\r\n }),\r\n transformResponse:(response: {value: NameValue<string,string>[] }) =>{\r\n return response.value\r\n },\r\n providesTags:(result) => [\r\n ...result.map((dbTimeZone) => ({type: \"Timezones\" as const, dbTimeZone}))\r\n ]\r\n }),\r\n getContactOptOutCountByEmail: builder.query<number, {email: string}>({\r\n query: ({ email }) => ({\r\n method: 'GET',\r\n url: `Contacts/GetContactOptOutByEmail(key='${decodeURI(email)}')`,\r\n }),\r\n transformResponse: (res: { value: number }) => {\r\n return res.value;\r\n },\r\n })\r\n }),\r\n});\r\n\r\nconst { useGetCountriesQuery, useGetTimezonesQuery, useLazyGetContactOptOutCountByEmailQuery } = contactsApiSlice;\r\n\r\nexport const ContactsApiHooks = {\r\n useGetCountriesQuery,\r\n useGetTimezonesQuery,\r\n useLazyGetContactOptOutCountByEmailQuery\r\n}\r\n\r\nexport default contactsApiSlice;","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\n\r\nexport enum ExportingStage {\r\n Initializing = \"Initializing\",\r\n Validation = \"Validation\",\r\n ExportStarting = \"ExportStarting\",\r\n ExportContinuing = \"ExportContinuing\",\r\n ExportFinishing = \"ExportFinishing\",\r\n SuccessfullyCompleted = \"Successfully complete\",\r\n Failed = \"Failed\",\r\n Cancelled = \"Cancelled\"\r\n}\r\n\r\nexport const getPercentageOfExportingMessage = (stage: ExportingStage) => {\r\n switch (stage) {\r\n case ExportingStage.Initializing:\r\n return 0;\r\n case ExportingStage.Validation:\r\n return 0.2;\r\n case ExportingStage.ExportStarting:\r\n return 0.4;\r\n case ExportingStage.ExportContinuing:\r\n return 0.6;\r\n case ExportingStage.ExportFinishing:\r\n return 0.8;\r\n case ExportingStage.SuccessfullyCompleted:\r\n return 1;\r\n case ExportingStage.Failed:\r\n case ExportingStage.Cancelled:\r\n default:\r\n return 0;\r\n }\r\n};\r\n\r\nexport interface ExportingMessageState {\r\n stage: ExportingStage;\r\n isLoading: boolean;\r\n isSuccessfullyCompleted: boolean;\r\n isFailed: boolean;\r\n isCancelled: boolean;\r\n loadingStatePercentages: number;\r\n}\r\n\r\nconst initialState: ExportingMessageState = {\r\n isLoading: false,\r\n isFailed: false,\r\n isSuccessfullyCompleted: false,\r\n isCancelled: false,\r\n stage: null,\r\n loadingStatePercentages: 0.2,\r\n};\r\n\r\nexport const exportMessageSlice = createSlice({\r\n name: \"exportMessages\",\r\n initialState,\r\n reducers: {\r\n startOperation: (\r\n state,\r\n payloadAction: PayloadAction<ExportingStage>\r\n ) => {\r\n state.stage = payloadAction.payload;\r\n state.isLoading = true;\r\n state.isFailed = false;\r\n state.isSuccessfullyCompleted = false;\r\n state.isCancelled = false;\r\n state.loadingStatePercentages = getPercentageOfExportingMessage(\r\n payloadAction.payload\r\n );\r\n },\r\n failedExporting: (state) => {\r\n state.stage = ExportingStage.Failed;\r\n state.isLoading = false;\r\n state.isFailed = true;\r\n state.isSuccessfullyCompleted = false;\r\n state.isCancelled = false;\r\n },\r\n successExporting: (state) => {\r\n state.stage = ExportingStage.SuccessfullyCompleted;\r\n state.isLoading = false;\r\n state.isFailed = false;\r\n state.isSuccessfullyCompleted = true;\r\n state.isCancelled = false;\r\n state.loadingStatePercentages = 1;\r\n },\r\n cancelExporting: (state) => {\r\n state.stage = ExportingStage.Cancelled;\r\n state.isLoading = false;\r\n state.isFailed = false;\r\n state.isSuccessfullyCompleted = false;\r\n state.isCancelled = true;\r\n }\r\n },\r\n});\r\n\r\nexport const {\r\n startOperation,\r\n failedExporting,\r\n successExporting,\r\n cancelExporting\r\n} = exportMessageSlice.actions;\r\n\r\nexport default exportMessageSlice.reducer;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { NavigationTab } from \"components/WebComponents/TabLogic\";\r\n\r\nexport interface FeatureFlag {\r\n name: string;\r\n isFeatureEnabled: boolean;\r\n isOnlyForAdmin: boolean;\r\n displayContext: NavigationTab[];\r\n isVisible: boolean;\r\n}\r\n\r\nconst initialState: FeatureFlag[] = [];\r\n\r\nexport const featureFlagsSlice = createSlice({\r\n name: \"featureFlags\",\r\n initialState,\r\n reducers: {\r\n initiateFeatureFlags: (\r\n _state,\r\n action: PayloadAction<FeatureFlag[]>\r\n ) => {\r\n return action.payload;\r\n },\r\n addFeatureFlag: (state, action: PayloadAction<FeatureFlag>) => {\r\n state.push(action.payload);\r\n },\r\n enableFeatureFlag: (state, action: PayloadAction<string>) => {\r\n const featureFlag = state.find(\r\n (featureFlag) => featureFlag.name === action.payload\r\n );\r\n if (featureFlag) {\r\n featureFlag.isFeatureEnabled = true;\r\n }\r\n },\r\n disableFeatureFlag: (state, action: PayloadAction<string>) => {\r\n const featureFlag = state.find(\r\n (featureFlag) => featureFlag.name === action.payload\r\n );\r\n if (featureFlag) {\r\n featureFlag.isFeatureEnabled = false;\r\n }\r\n },\r\n updateFeatureFlag: (state, action: PayloadAction<FeatureFlag>) => {\r\n const featureFlag = state.find(\r\n (featureFlag) => featureFlag.name === action.payload.name\r\n );\r\n if (featureFlag) {\r\n featureFlag.isFeatureEnabled = action.payload.isFeatureEnabled;\r\n featureFlag.isOnlyForAdmin = action.payload.isOnlyForAdmin;\r\n featureFlag.displayContext = action.payload.displayContext;\r\n featureFlag.isVisible = action.payload.isVisible;\r\n } else {\r\n state.push(action.payload);\r\n }\r\n },\r\n removeFeatureFlag: (state, action: PayloadAction<string>) => {\r\n const index = state.findIndex(\r\n (featureFlag) => featureFlag.name === action.payload\r\n );\r\n if (index !== -1) {\r\n state.splice(index, 1);\r\n }\r\n }\r\n },\r\n});\r\n\r\nexport const {\r\n enableFeatureFlag,\r\n disableFeatureFlag,\r\n initiateFeatureFlags,\r\n addFeatureFlag,\r\n updateFeatureFlag,\r\n removeFeatureFlag,\r\n} = featureFlagsSlice.actions;\r\nexport default featureFlagsSlice.reducer;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { FilteredListState, IFilteredListStatus } from \"@politemail/ui-components\";\r\nimport { uuid4 } from \"Utils/Random\";\r\nimport { IFilterQueryBit } from \"Utils/Filtering/QueryBit\";\r\n\r\nexport interface IFilteredListSliceState {\r\n unvalidatedFilteredLists: IFilteredListStatus[],\r\n // guid allows previously cancelled or discarded validation to be ignored\r\n validationGuid: string,\r\n gridBitsToConvert: IFilterQueryBit[],\r\n}\r\n\r\nconst initialState: IFilteredListSliceState = {\r\n unvalidatedFilteredLists: [],\r\n validationGuid: uuid4(),\r\n gridBitsToConvert: []\r\n};\r\n\r\nexport const FILTERED_LIST_OPERATION_ABANDONED = 'FILTERED_LIST_OPERATION_ABANDONED';\r\n\r\nexport const filteredListSlice = createSlice({\r\n name: \"filteredList\",\r\n initialState,\r\n reducers: {\r\n initState(state, action: PayloadAction<IFilteredListSliceState>) {\r\n return initialState;\r\n },\r\n addUnvalidatedFilteredLists(state, action: PayloadAction<IFilteredListStatus[]>) {\r\n return { ...state, unvalidatedFilteredLists: [ ...state.unvalidatedFilteredLists, ...action.payload ] };\r\n },\r\n removeUnvalidatedFilteredLists(state, action: PayloadAction<number[]>) {\r\n return { ...state, unvalidatedFilteredLists: [ ...state.unvalidatedFilteredLists.filter(ufl => !action.payload?.some(id => id === ufl.ID)) ] }\r\n },\r\n updateUnvalidatedFilteredLists(state, action: PayloadAction<IFilteredListStatus[]>) {\r\n return { ...state, unvalidatedFilteredLists: [ ...state.unvalidatedFilteredLists.map(ufl => {\r\n const index = action.payload?.findIndex(updatedObj => updatedObj.ID === ufl.ID)\r\n return index > -1 ? (action.payload[index]) : ufl\r\n })]}\r\n },\r\n unvalidateAllFilteredLists(state) {\r\n return {\r\n ...state,\r\n unvalidatedFilteredLists: [ ...state.unvalidatedFilteredLists.map(ufl => { return { ...ufl, Status: FilteredListState.Unvalidated } }) ],\r\n validationGuid: uuid4()\r\n }\r\n },\r\n emptyFilteredLists(state) {\r\n return { ...state, unvalidatedFilteredLists: [], validationGuid: uuid4() };\r\n },\r\n setGridBitsToConvert(state, action: PayloadAction<IFilterQueryBit[]>){\r\n return {...state, gridBitsToConvert: [...action.payload]}\r\n },\r\n },\r\n});\r\n\r\nexport default filteredListSlice.reducer;\r\n\r\nexport const {\r\n initState,\r\n addUnvalidatedFilteredLists,\r\n removeUnvalidatedFilteredLists,\r\n updateUnvalidatedFilteredLists,\r\n unvalidateAllFilteredLists,\r\n emptyFilteredLists,\r\n setGridBitsToConvert\r\n } = filteredListSlice.actions;\r\n","import { baseApi, RTKQueryTags } from \"./baseApiSlice\";\r\nimport { ListFilter, FilterExpression, GroupableLogicBit, IFilterStats, IFilterableField } from '@politemail/ui-components';\r\nimport { FilterQueryBit } from \"Utils/Filtering/QueryBit\";\r\nimport { Contact } from \"Definitions/Generated/PoliteMailEntities/Models/Contact\";\r\nimport { List } from \"Definitions/Generated/PoliteMailEntities/Models/List\";\r\n\r\nconst onQueryStartedErrorInvalidate = async (id: any, { dispatch, queryFulfilled } ) : Promise<void> => {\r\n try {\r\n await queryFulfilled;\r\n } catch (error) {\r\n if(error?.error?.originalStatus === 400){\r\n dispatch(baseApi.util.invalidateTags([{type: RTKQueryTags.AppSetting, id: 'FeatureFlags'}]));\r\n }\r\n }\r\n}\r\n \r\nconst listFiltersApiSlice = baseApi\r\n .enhanceEndpoints({\r\n addTagTypes:[\r\n 'ListFilters'\r\n ]\r\n })\r\n .injectEndpoints({\r\n endpoints: builder => ({\r\n getListFilterForList: builder.query<ListFilter, { id: number }>({\r\n query: (args) => ({\r\n url:`ListFilters(${args.id})/GetFilterForListId`,\r\n method:'GET',\r\n headers: {\r\n 'Accept': 'application/json; odata.metadata=none'\r\n }\r\n }),\r\n providesTags: (result, error, { id }) => [{ type: RTKQueryTags.ListFilter, id: id }],\r\n async onQueryStarted(id, { dispatch, queryFulfilled }) { \r\n onQueryStartedErrorInvalidate(id, {dispatch, queryFulfilled}); \r\n }\r\n }),\r\n getAllListFilters: builder.query<ListFilter[], void>({\r\n query: () => ({\r\n url:'ListFilters/GetAllListFilters',\r\n method:'POST',\r\n }),\r\n async onQueryStarted(id, { dispatch, queryFulfilled }) { \r\n onQueryStartedErrorInvalidate(id, {dispatch, queryFulfilled}); \r\n }\r\n }),\r\n\r\n // non-functional until we can figure out how to use a custom serializer\r\n createListFilter: builder.mutation<ListFilter | string | number, ListFilter>({\r\n query: (listFilter) => ({\r\n url:'ListFilters',\r\n method:'POST',\r\n body: listFilter,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json; charset=utf-8'\r\n },\r\n }),\r\n async onQueryStarted(id, { dispatch, queryFulfilled }) { \r\n onQueryStartedErrorInvalidate(id, {dispatch, queryFulfilled}); \r\n }\r\n }),\r\n\r\n // non-functional until we can figure out how to use a custom serializer\r\n updateListFilter: builder.mutation<number | string, ListFilter>({\r\n query: (listFilter) => ({\r\n url:`ListFilters(${listFilter.ID})`,\r\n method: 'PATCH',\r\n body: listFilter,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json; charset=utf-8'\r\n },\r\n }),\r\n async onQueryStarted(id, { dispatch, queryFulfilled }) { \r\n onQueryStartedErrorInvalidate(id, {dispatch, queryFulfilled}); \r\n }\r\n }),\r\n createListFilterExpression: builder.query<FilterExpression, FilterQueryBit[]>({\r\n query: (filterBits: FilterQueryBit[]) => ({\r\n url:'ListFilters/CreateListFilterExpression',\r\n method:'POST',\r\n body:{\r\n filter : filterBits\r\n }\r\n }),\r\n async onQueryStarted(id, { dispatch, queryFulfilled }) { \r\n onQueryStartedErrorInvalidate(id, {dispatch, queryFulfilled}); \r\n }\r\n }),\r\n getContactsForFilter: builder.query<Contact[], GroupableLogicBit>({\r\n query: (expression) => ({\r\n url:`ListFilters/GetContactsForFilter`,\r\n method: 'POST',\r\n body: {\r\n filter: expression\r\n }\r\n }),\r\n async onQueryStarted(id, { dispatch, queryFulfilled }) { \r\n onQueryStartedErrorInvalidate(id, {dispatch, queryFulfilled}); \r\n }\r\n }),\r\n previewFilter: builder.query<IFilterStats, ListFilter>({\r\n query: (expression) => ({\r\n url:`ListFilters/PreviewListFilter`,\r\n method: 'POST',\r\n body: {\r\n filter: expression\r\n }\r\n }),\r\n async onQueryStarted(id, { dispatch, queryFulfilled }) { \r\n onQueryStartedErrorInvalidate(id, {dispatch, queryFulfilled}); \r\n }\r\n }),\r\n getFilterableFields: builder.query<IFilterableField[], void>({\r\n query: () => ({\r\n url:`ListFilters/GetFilterableFields`,\r\n method: 'GET',\r\n }),\r\n transformResponse: (responseData: { value: IFilterableField[]; }) => {\r\n return (responseData as { value: IFilterableField[] }).value\r\n },\r\n providesTags: (result, error, args) => [{ type: RTKQueryTags.ListFilter, id: 'FILTERABLE_FIELDS' }],\r\n async onQueryStarted(id, { dispatch, queryFulfilled }) { \r\n onQueryStartedErrorInvalidate(id, {dispatch, queryFulfilled}); \r\n }\r\n }),\r\n getCircularDependencyLists: builder.query<List[], number>({\r\n query: (listID) => ({\r\n url:`ListFilters/GetCircularDependencyLists(listID = ${listID})`,\r\n method: 'GET',\r\n }),\r\n transformResponse: (responseData: { value: List[]; }) => {\r\n return (responseData as { value: List[] }).value;\r\n },\r\n async onQueryStarted(id, { dispatch, queryFulfilled }) { \r\n onQueryStartedErrorInvalidate(id, {dispatch, queryFulfilled}); \r\n }\r\n }),\r\n refreshContactCacheIfNeeded: builder.query<void, void>({\r\n query: () => ({\r\n url:`ListFilters/RefreshContactCacheIfNeeded`,\r\n method: 'POST',\r\n }),\r\n async onQueryStarted(id, { dispatch, queryFulfilled }) { \r\n onQueryStartedErrorInvalidate(id, {dispatch, queryFulfilled}); \r\n }\r\n }),\r\n getFiltersThatUseCustomField: builder.query<ListFilter[], number>({\r\n query:(fieldId) => ({\r\n url:`ListFilters(${fieldId})/GetFiltersThatUseCustomField`,\r\n method: 'GET'\r\n }),\r\n transformResponse: (responseData: {value: ListFilter[], count:number}) => {\r\n return responseData.value\r\n },\r\n async onQueryStarted(id, { dispatch, queryFulfilled }) { \r\n onQueryStartedErrorInvalidate(id, {dispatch, queryFulfilled}); \r\n }\r\n })\r\n })\r\n });\r\n\r\nconst {\r\n useGetListFilterForListQuery,\r\n useLazyGetListFilterForListQuery,\r\n useGetAllListFiltersQuery,\r\n useCreateListFilterMutation,\r\n useUpdateListFilterMutation,\r\n useCreateListFilterExpressionQuery,\r\n useLazyGetContactsForFilterQuery,\r\n useLazyPreviewFilterQuery,\r\n useGetFilterableFieldsQuery,\r\n useGetCircularDependencyListsQuery,\r\n useRefreshContactCacheIfNeededQuery,\r\n useGetFiltersThatUseCustomFieldQuery\r\n} = listFiltersApiSlice;\r\n\r\nexport const listFiltersApiHooks = {\r\n useGetListFilterForListQuery,\r\n useLazyGetListFilterForListQuery,\r\n useGetAllListFiltersQuery,\r\n useCreateListFilterMutation,\r\n useUpdateListFilterMutation,\r\n useCreateListFilterExpressionQuery,\r\n useLazyGetContactsForFilterQuery,\r\n useLazyPreviewFilterQuery,\r\n useGetFilterableFieldsQuery,\r\n useGetCircularDependencyListsQuery,\r\n useRefreshContactCacheIfNeededQuery,\r\n useGetFiltersThatUseCustomFieldQuery\r\n}","import { Contact } from \"Definitions/Generated/PoliteMailEntities/Models/Contact\";\r\nimport { List } from \"Definitions/Generated/PoliteMailEntities/Models/List\";\r\nimport { SentMessage } from \"Definitions/Generated/PoliteMailEntities/Models/SentMessage\";\r\nimport { RTKQueryTags, baseApi } from \"./baseApiSlice\";\r\nimport { Event } from \"Definitions/Generated/PoliteMailEntities/Models/Event\";\r\nimport { HourOfDayRead } from \"Definitions/Generated/PoliteMailEntities/Models/HourOfDayRead\";\r\nimport { LinkStat } from \"Definitions/Generated/PoliteMailEntities/Models/LinkStat\";\r\nimport { DeviceCount } from \"Definitions/Generated/PoliteMailEntities/Models/DeviceCount\";\r\nimport { Location } from \"Definitions/Generated/PoliteMailEntities/Models/Location\";\r\nimport {\r\n MonthlyEngagementMetric,\r\n MonthlyEngagementMetricSeries,\r\n} from \"Definitions/Generated/PoliteMailEntities/Models/MonthlyEngagementMetric\";\r\nimport {\r\n addDummyHourOfDay,\r\n convertReachObjectsToSeries,\r\n} from \"Utils/ReportUtils\";\r\nimport { HourOfDayMetrics } from \"Definitions/Generated/PoliteMailEntities/Models/HourOfDayMetrics\";\r\n\r\nexport const listsApiSlice = baseApi\r\n .enhanceEndpoints({\r\n addTagTypes: [\r\n \"ListLength\",\r\n \"ListIsReportable\",\r\n \"ListContacts\",\r\n \"ListSentMessages\",\r\n \"ListEvents\",\r\n \"ListHourOfDayReads\",\r\n \"ListLinkStats\",\r\n \"ListMonthlyEngagementMetric\",\r\n \"ListDesktopDevicesSummary\",\r\n \"ListMobileDevicesSummary\",\r\n \"ListProxyDevicesSummary\",\r\n \"ListLocations\",\r\n \"ListReachMetrics\",\r\n \"ListContactsTemp\",\r\n \"ListEmails\",\r\n ],\r\n })\r\n .injectEndpoints({\r\n endpoints: (builder) => ({\r\n /**\r\n * Returns all lists\r\n * @param args - Arguments for the endpoint\r\n * @param args.query - Query parameters (optional)\r\n */\r\n getLists: builder.query<List[], { query?: string }>({\r\n query: (args) => ({\r\n url: `Lists${args?.query || \"\"}`,\r\n method: \"GET\",\r\n }),\r\n transformResponse: (responseData) => {\r\n let lists = (responseData as { value: List[] }).value;\r\n return lists.map<List>(list => {\r\n return {...list, IsFilteredList: (list.FilterID && list.FilterID !== 0)}\r\n });\r\n },\r\n providesTags: (result, _error, _args) => [\r\n { type: RTKQueryTags.List, id: \"LIST\" },\r\n ...result.map((list) => ({\r\n type: RTKQueryTags.List,\r\n id: list?.ID ?? 0,\r\n })),\r\n ],\r\n }),\r\n /**\r\n * Returns a list by ID\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the list\r\n * @param args.query - Query parameters (optional)\r\n */\r\n getListById: builder.query<List, { id: number; query?: string }>({\r\n query: (args) => ({\r\n url: `Lists(${args.id})${args?.query || \"\"}`,\r\n method: \"GET\",\r\n }),\r\n transformResponse: (responseData) => {\r\n let list = responseData as List;\r\n list.IsFilteredList = (list.FilterID && list.FilterID !== 0);\r\n return list;\r\n },\r\n providesTags: (_result, _error, { id }) => [{ type: RTKQueryTags.List, id }],\r\n }),\r\n /**\r\n * Create a new list\r\n * @param args - Arguments for the endpoint\r\n */\r\n addList: builder.mutation<List, Partial<List>>({\r\n query: (list) => ({\r\n url: \"Lists\",\r\n method: \"POST\",\r\n body: list,\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: List }).value;\r\n },\r\n invalidatesTags: (_result, _error, args) => [\r\n { type: RTKQueryTags.List, id: \"LIST\" },\r\n ],\r\n }),\r\n /**\r\n * Update a list\r\n * @param args - Arguments for the endpoint\r\n */\r\n updateList: builder.mutation<List, Partial<List>>({\r\n query: (list) => ({\r\n url: `Lists(${list.ID})`,\r\n method: \"PATCH\",\r\n body: list,\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: List }).value;\r\n },\r\n invalidatesTags: (_result, _error, { ID }) => [\r\n { type: RTKQueryTags.List, id: ID },\r\n { type: RTKQueryTags.List, id: \"LIST\" },\r\n ],\r\n }),\r\n /**\r\n * Delete a list\r\n * @param args - Arguments for the endpoint\r\n * @param args.id - ID of the list\r\n */\r\n deleteList: builder.mutation<void, { id: number }>({\r\n query: ({ id }) => ({\r\n url: `Lists(${id})`,\r\n method: \"DELETE\",\r\n }),\r\n transformResponse: (_responseData) => {\r\n return;\r\n },\r\n invalidatesTags: (_result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: RTKQueryTags.List, id: \"LIST\" },\r\n ],\r\n }),\r\n /**\r\n * put a list\r\n * @param args - Arguments for the endpoint\r\n */\r\n putList: builder.mutation<List, Partial<List>>({\r\n query: (list) => ({\r\n url: `Lists(${list.ID})`,\r\n method: \"PUT\",\r\n body: list,\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: List }).value;\r\n },\r\n invalidatesTags: (_result, _error, { ID }) => [\r\n { type: RTKQueryTags.List, id: ID },\r\n { type: RTKQueryTags.List, id: \"LIST\" },\r\n ],\r\n }),\r\n syncListContacts: builder.mutation<boolean, void>({\r\n query: () => ({\r\n url: `Lists/Default.SyncContactLists`,\r\n method: \"POST\",\r\n }),\r\n transformResponse: (response) => {\r\n return (response as { value: boolean }).value;\r\n },\r\n invalidatesTags: (_result, _error) => [{ type: RTKQueryTags.List, id: \"LIST\" }],\r\n }),\r\n createHierarchyList: builder.mutation<string, string>({\r\n query: (hierarchyEmail) => ({\r\n url: `Lists/Default.CreateHierarchyList`,\r\n method: \"POST\",\r\n body: { email: hierarchyEmail },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: string }).value;\r\n },\r\n }),\r\n isThereHierarchyData: builder.query<boolean, void>({\r\n query: () => ({\r\n url: `Lists/Default.IsThereHierarchyData`,\r\n method: \"POST\",\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n }),\r\n getListLength: builder.query<number, { id: number }>({\r\n query: ({ id }) => ({\r\n url: `Lists(${id})/Default.Length`,\r\n method: \"POST\",\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: number }).value;\r\n },\r\n providesTags: (_result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListLength\", id },\r\n ],\r\n }),\r\n addContactsToList: builder.mutation<\r\n boolean,\r\n { id: number; contactIds: number[] }\r\n >({\r\n query: ({ id, contactIds }) => ({\r\n url: `Lists(${id})/AddContacts`,\r\n method: \"POST\",\r\n body: { contacts: contactIds },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n invalidatesTags: (_result, _error, { id, contactIds }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListContacts\", id },\r\n ...contactIds.map((contactId) => ({\r\n type: RTKQueryTags.Contact,\r\n id: contactId,\r\n })),\r\n ],\r\n }),\r\n removeContactsFromList: builder.mutation<\r\n boolean,\r\n { id: number; contactIds: number[] }\r\n >({\r\n query: ({ id, contactIds }) => ({\r\n url: `Lists(${id})/RemoveContacts`,\r\n method: \"POST\",\r\n body: { contacts: contactIds },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n invalidatesTags: (_result, _error, { id, contactIds }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListContacts\", id },\r\n ...contactIds.map((contactId) => ({\r\n type: RTKQueryTags.Contact,\r\n id: contactId,\r\n })),\r\n ],\r\n }),\r\n addEmailsToList: builder.mutation<\r\n boolean,\r\n { id: number; emails: string[] }\r\n >({\r\n query: ({ id, emails }) => ({\r\n url: `Lists(${id})/Default.AddEmails`,\r\n method: \"POST\",\r\n body: { emails },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n invalidatesTags: (_result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListEmails\", id },\r\n ],\r\n }),\r\n removeEmailsFromList: builder.mutation<\r\n boolean,\r\n { id: number; emails: string[] }\r\n >({\r\n query: ({ id, emails }) => ({\r\n url: `Lists(${id})/Default.RemoveEmails`,\r\n method: \"POST\",\r\n body: { emails },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n invalidatesTags: (_result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListEmails\", id },\r\n ],\r\n }),\r\n /// TODO: not implemented on api side yet\r\n addListContactsByFilter: builder.mutation<\r\n boolean,\r\n { id: number; filter: string }\r\n >({\r\n query: ({ id, filter }) => ({\r\n url: `Lists(${id})/Default.AddContactsByFilter`,\r\n method: \"POST\",\r\n body: { filter },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n invalidatesTags: (_result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListContacts\", id },\r\n ],\r\n }),\r\n isListReportable: builder.query<boolean, { id: number }>({\r\n query: ({ id }) => ({\r\n url: `Lists(${id})/Default.IsReportable`,\r\n method: \"POST\",\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n providesTags: (_result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListIsReportable\", id },\r\n ],\r\n }),\r\n deleteListAndContacts: builder.mutation<boolean, { id: number }>({\r\n query: ({ id }) => ({\r\n url: `Lists(${id})/Default.DeleteListAndContacts`,\r\n method: \"POST\",\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n invalidatesTags: (_result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListContacts\", id },\r\n { type: RTKQueryTags.List, id: \"LIST\" },\r\n ],\r\n }),\r\n getListContacts: builder.query<Contact[], { id: number; query?: string }>(\r\n {\r\n query: ({ id, query }) => ({\r\n url: `Lists(${id})/Contacts${query ? `${query}` : \"\"}`,\r\n method: \"GET\",\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: Contact[] }).value;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListContacts\", id },\r\n ...result?.map((contact) => ({\r\n type: RTKQueryTags.Contact,\r\n id: contact.ID,\r\n })),\r\n ],\r\n }\r\n ),\r\n mergeLists: builder.mutation<\r\n boolean,\r\n { merge_ids: string; list_id: number }\r\n >({\r\n query: ({ merge_ids, list_id }) => ({\r\n url: `Lists/MergeLists`,\r\n method: \"POST\",\r\n body: {\r\n merge_ids: merge_ids,\r\n destination_list_id: list_id,\r\n },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n }),\r\n intersectLists: builder.mutation<\r\n boolean,\r\n { intersect_ids: string; list_id: number }\r\n >({\r\n query: ({ intersect_ids, list_id }) => ({\r\n url: `Lists/IntersectLists`,\r\n method: \"POST\",\r\n body: {\r\n intersect_ids: intersect_ids,\r\n destination_list_id: list_id,\r\n },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n }),\r\n uncommonLists: builder.mutation<\r\n boolean,\r\n { exclude_ids: string; list_id: number }\r\n >({\r\n query: ({ exclude_ids, list_id }) => ({\r\n url: `Lists/UncommonLists`,\r\n method: \"POST\",\r\n body: {\r\n uncommon_ids: exclude_ids,\r\n destination_list_id: list_id,\r\n },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n }),\r\n substractLists: builder.mutation<\r\n boolean,\r\n { subtract_ids: string; list_id: number; source_list_id: string }\r\n >({\r\n query: ({ subtract_ids, list_id, source_list_id }) => ({\r\n url: `Lists/SubstractLists`,\r\n method: \"POST\",\r\n body: {\r\n subtract_ids: subtract_ids,\r\n destination_list_id: list_id,\r\n source_list_id: source_list_id,\r\n },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n }),\r\n getListIdByName: builder.query<number, { name: string }>({\r\n query: ({ name }) => ({\r\n url: `Lists/GetListIdByName`,\r\n method: \"POST\",\r\n body: {\r\n list_name: name,\r\n },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: number }).value;\r\n },\r\n providesTags: (_result, _error, { name }) => [{ type: RTKQueryTags.List, id: name }],\r\n }),\r\n setListMembersFromSplit: builder.mutation<\r\n boolean,\r\n {\r\n listId: number;\r\n new_list_id: number;\r\n start: number;\r\n stop: number;\r\n excludedContactsList: string;\r\n }\r\n >({\r\n query: ({\r\n listId,\r\n new_list_id,\r\n start,\r\n stop,\r\n excludedContactsList,\r\n }) => ({\r\n url: `Lists/SetListMembersFromSplit`,\r\n method: \"POST\",\r\n body: {\r\n listId: listId,\r\n new_list_id: new_list_id,\r\n start: start,\r\n stop: stop,\r\n excludedContactsList: excludedContactsList,\r\n },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n }),\r\n getSentMessagesByListId: builder.query<SentMessage[], { id: number }>({\r\n query: ({ id }) => ({\r\n url: `Lists(${id})/SentMessages`,\r\n method: \"GET\",\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: SentMessage[] }).value;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListSentMessages\", id },\r\n ...result?.map(\r\n (message) =>\r\n ({ type: RTKQueryTags.SentMessage, id: message?.ID ?? 0 } as const)\r\n ),\r\n ],\r\n }),\r\n getEventsByListId: builder.query<Event[], { id: number }>({\r\n query: ({ id }) => ({\r\n url: `Lists(${id})/Events`,\r\n method: \"GET\",\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: Event[] }).value;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListEvents\", id },\r\n ...result?.map((event) => ({\r\n type: RTKQueryTags.Event,\r\n id: event?.ID ?? 0,\r\n })),\r\n ],\r\n }),\r\n getDesktopDevicesSummaryByListId: builder.query<\r\n DeviceCount[],\r\n { id: number }\r\n >({\r\n query: ({ id }) => ({\r\n url: `Lists(${id})/DesktopDeviceSummary`,\r\n method: \"GET\",\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: DeviceCount[] }).value;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListDesktopDevicesSummary\", id: id },\r\n ...result?.map(({ ID }) => ({\r\n type: RTKQueryTags.DeviceCount,\r\n id: ID,\r\n })),\r\n ],\r\n }),\r\n getMobileDevicesSummaryByListId: builder.query<\r\n DeviceCount[],\r\n { id: number }\r\n >({\r\n query: ({ id }) => ({\r\n url: `Lists(${id})/MobileDeviceSummary`,\r\n method: \"GET\",\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: DeviceCount[] }).value;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListMobileDevicesSummary\", id: id },\r\n ...result?.map(({ ID }) => ({\r\n type: RTKQueryTags.DeviceCount,\r\n id: ID,\r\n })),\r\n ],\r\n }),\r\n getProxyDevicesSummaryByListId: builder.query<\r\n DeviceCount[],\r\n { id: number }\r\n >({\r\n query: ({ id }) => ({\r\n url: `Lists(${id})/ProxyDeviceSummary`,\r\n method: \"GET\",\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: DeviceCount[] }).value;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListProxyDevicesSummary\", id: id },\r\n ...result?.map(({ ID }) => ({\r\n type: RTKQueryTags.DeviceCount,\r\n id: ID,\r\n })),\r\n ],\r\n }),\r\n getHourOfDayReadsByListId: builder.query<\r\n HourOfDayMetrics[],\r\n { id: number }\r\n >({\r\n query: ({ id }) => ({\r\n url: `Lists(${id})/HourOfDayReads`,\r\n method: \"GET\",\r\n }),\r\n transformResponse: (responseData) => {\r\n return addDummyHourOfDay(\r\n (responseData as { value: HourOfDayRead[] }).value\r\n );\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListHourOfDayReads\", id: id },\r\n ...result?.map(({ ID }) => ({\r\n type: RTKQueryTags.HourOfDayRead,\r\n id: ID,\r\n })),\r\n ],\r\n }),\r\n getLinkStatsByListId: builder.query<LinkStat[], { id: number }>({\r\n query: ({ id }) => ({\r\n url: `Lists(${id})/GetLinkStats`,\r\n method: \"GET\",\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: LinkStat[] }).value;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListLinkStats\", id: id },\r\n ...result?.map(({ ID }) => ({ type: RTKQueryTags.LinkStat, id: ID })),\r\n ],\r\n }),\r\n getLocationsByListId: builder.query<Location[], { id: number }>({\r\n query: ({ id }) => ({\r\n url: `Lists(${id})/Locations`,\r\n method: \"GET\",\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: Location[] }).value;\r\n },\r\n providesTags: (result, _error, { id }) => [\r\n { type: RTKQueryTags.List, id },\r\n { type: \"ListLocations\", id: id },\r\n ...result?.map(({ ID }) => ({ type: RTKQueryTags.Location, id: ID })),\r\n ],\r\n }),\r\n getReachMetricsByListId: builder.query<\r\n MonthlyEngagementMetricSeries,\r\n { ListId: number }\r\n >({\r\n query: ({ ListId }) => ({\r\n url: `Lists/GetListReachMetrics`,\r\n method: \"POST\",\r\n body: {\r\n Id: ListId,\r\n filter: \"\",\r\n },\r\n }),\r\n transformResponse: (responseData) => {\r\n return convertReachObjectsToSeries(\r\n (responseData as { value: MonthlyEngagementMetric[] }).value\r\n );\r\n },\r\n providesTags: (_result, _error, { ListId }) => [\r\n { type: RTKQueryTags.List, id: ListId },\r\n { type: \"ListReachMetrics\", id: ListId },\r\n ],\r\n }),\r\n getContactsTempByCacheId: builder.query<string, { cacheId: number }>({\r\n query: ({ cacheId }) => ({\r\n url: `Lists/GetContactsTemp`,\r\n method: \"POST\",\r\n body: {\r\n cacheId,\r\n },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: string }).value;\r\n },\r\n providesTags: (_result, _error, { cacheId }) => [\r\n { type: \"ListContactsTemp\", id: cacheId },\r\n ],\r\n }),\r\n /// TODO: implement \"DoContactsForListSearch\" endpoint\r\n }),\r\n });\r\n\r\nconst {\r\n useGetListsQuery,\r\n useLazyGetListsQuery,\r\n useGetListByIdQuery,\r\n useLazyGetListByIdQuery,\r\n useAddListMutation,\r\n useUpdateListMutation,\r\n useDeleteListMutation,\r\n usePutListMutation,\r\n useSyncListContactsMutation,\r\n useCreateHierarchyListMutation,\r\n useIsThereHierarchyDataQuery,\r\n useGetListLengthQuery,\r\n useAddContactsToListMutation,\r\n useRemoveContactsFromListMutation,\r\n useAddEmailsToListMutation,\r\n useRemoveEmailsFromListMutation,\r\n useAddListContactsByFilterMutation,\r\n useIsListReportableQuery,\r\n useDeleteListAndContactsMutation,\r\n useGetListContactsQuery,\r\n useMergeListsMutation,\r\n useIntersectListsMutation,\r\n useUncommonListsMutation,\r\n useSubstractListsMutation,\r\n useGetListIdByNameQuery,\r\n useSetListMembersFromSplitMutation,\r\n useGetSentMessagesByListIdQuery,\r\n useGetEventsByListIdQuery,\r\n useGetDesktopDevicesSummaryByListIdQuery,\r\n useGetMobileDevicesSummaryByListIdQuery,\r\n useGetProxyDevicesSummaryByListIdQuery,\r\n useGetHourOfDayReadsByListIdQuery,\r\n useGetLinkStatsByListIdQuery,\r\n useGetLocationsByListIdQuery,\r\n useGetReachMetricsByListIdQuery,\r\n useGetContactsTempByCacheIdQuery,\r\n} = listsApiSlice;\r\n\r\nexport const listApiHooks = {\r\n useGetListsQuery,\r\n useLazyGetListsQuery,\r\n useGetListByIdQuery,\r\n useLazyGetListByIdQuery,\r\n useAddListMutation,\r\n useUpdateListMutation,\r\n useDeleteListMutation,\r\n usePutListMutation,\r\n useSyncListContactsMutation,\r\n useCreateHierarchyListMutation,\r\n useIsThereHierarchyDataQuery,\r\n useGetListLengthQuery,\r\n useAddContactsToListMutation,\r\n useRemoveContactsFromListMutation,\r\n useAddEmailsToListMutation,\r\n useRemoveEmailsFromListMutation,\r\n useAddListContactsByFilterMutation,\r\n useIsListReportableQuery,\r\n useDeleteListAndContactsMutation,\r\n useGetListContactsQuery,\r\n useMergeListsMutation,\r\n useIntersectListsMutation,\r\n useUncommonListsMutation,\r\n useSubstractListsMutation,\r\n useGetListIdByNameQuery,\r\n useSetListMembersFromSplitMutation,\r\n useGetSentMessagesByListIdQuery,\r\n useGetEventsByListIdQuery,\r\n useGetDesktopDevicesSummaryByListIdQuery,\r\n useGetMobileDevicesSummaryByListIdQuery,\r\n useGetProxyDevicesSummaryByListIdQuery,\r\n useGetHourOfDayReadsByListIdQuery,\r\n useGetLinkStatsByListIdQuery,\r\n useGetLocationsByListIdQuery,\r\n useGetReachMetricsByListIdQuery,\r\n useGetContactsTempByCacheIdQuery,\r\n};\r\n\r\nexport default listsApiSlice.reducer;\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport interface ILoadingGridState {\r\n IsInitiallyLoading: boolean;\r\n }\r\n\r\nconst initialState : ILoadingGridState ={\r\n IsInitiallyLoading: true,\r\n}\r\n\r\nexport const loadingGridSlice = createSlice({\r\n name: \"sendMessages\",\r\n initialState,\r\n reducers: {\r\n gridIsInitiallyLoading: (state) => {\r\n state.IsInitiallyLoading = true;\r\n },\r\n finishedLoading: (state) => {\r\n state.IsInitiallyLoading = false;\r\n }\r\n },\r\n });\r\n\r\nexport const {\r\n gridIsInitiallyLoading,\r\n finishedLoading\r\n} = loadingGridSlice.actions;\r\n\r\nexport default loadingGridSlice.reducer;","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { Report } from \"Definitions/Generated/PoliteMailEntities/Models/Report\";\r\nimport { IPMMultiComparisonGridColumn } from \"Hooks/useMultiCompareData\";\r\nimport { reportStatsApi } from \"./ReportStatsApiSlice\";\r\nimport { BenchmarkData, IBenchmarkData } from \"../../../public/BenchmarkData\";\r\nimport { appSettingsApiSlice } from \"./appSettingsApiSlice\";\r\nimport { DISPLAY_NAME_FOR_PROPERTY } from \"components/Utility/PropertNameMapper\";\r\n\r\nexport enum PMComparableReports {\r\n SentMessages = \"SentMessages\",\r\n Campaigns = \"Campaigns\",\r\n SublistStats = \"SublistStats\",\r\n}\r\nexport interface IComparableReportData {\r\n id: number;\r\n header: string;\r\n data: Report;\r\n isSelected: boolean;\r\n}\r\n\r\nexport interface IMultiComparisonState {\r\n contextMenuIsHidden: boolean,\r\n contextMenuItems: any[],\r\n sortedRow: string, // current row that is sortd\r\n sortedAscending: boolean,\r\n columns: IPMMultiComparisonGridColumn[],\r\n rows: Array<any>,\r\n defaultRowOrder: Array<any>,\r\n defaultColumnOrder: Array<any>,\r\n reportType: PMComparableReports;\r\n reportData: IComparableReportData[];\r\n status: \"idle\" | \"pending\" | \"succeeded\" | \"failed\";\r\n error: string;\r\n primaryIndustry: string;\r\n secondaryIndustry: string;\r\n benchmark: string;\r\n benchmarkAverage: IBenchmarkData,\r\n benchmarkData: IBenchmarkData;\r\n hiddenRows: string[];\r\n ids: Array<number>\r\n}\r\n\r\nconst initialState: IMultiComparisonState = {\r\n contextMenuIsHidden: true,\r\n contextMenuItems: [],\r\n sortedRow: null,\r\n sortedAscending: true,\r\n columns: [],\r\n rows: null,\r\n defaultRowOrder: null,\r\n defaultColumnOrder: [],\r\n reportType: null,\r\n reportData: [],\r\n status: \"idle\",\r\n error: null,\r\n primaryIndustry: 'NONE',\r\n secondaryIndustry: 'NONE',\r\n benchmark: null,\r\n benchmarkAverage: null,\r\n benchmarkData: null,\r\n hiddenRows: [\"@odata.context\", \"ID\", \"From\", \"Subject\", \"ReportRunDate\", \"ReportRunDateManual\", \"User\"],\r\n ids: []\r\n};\r\n\r\nexport const multiComparisonSlice = createSlice({\r\n name: \"multiComparison\",\r\n initialState,\r\n reducers: {\r\n initState(state, action: PayloadAction<IMultiComparisonState>) {\r\n return initialState;\r\n },\r\n toggleSelectedItem(state, action: PayloadAction<string>) {\r\n const columns = state.columns.map(data => {\r\n if(data.key.toString() == action.payload) {\r\n return {...data, isSelected: !data.isSelected}\r\n } else {\r\n return data\r\n }\r\n });\r\n const reports = state.reportData.map(report => {\r\n if(report.id.toString() == action.payload) {\r\n return {...report, isSelected: !report.isSelected}\r\n } else {\r\n return report\r\n }\r\n })\r\n state = {...state, columns: columns, reportData: reports}\r\n return state;\r\n },\r\n setComparedItems(state, action: PayloadAction<IComparableReportData[]>) {\r\n state = {...state, reportData: action.payload}\r\n return state;\r\n },\r\n deleteItems(state) {\r\n const remainingReport = state.reportData.filter(data => data.isSelected == false);\r\n const remainingCols = state.columns.filter(data => data.isSelected == false);\r\n state = {...state, reportData: remainingReport, columns: remainingCols };\r\n return state;\r\n },\r\n\r\n setIds(state, action: PayloadAction<Array<number>>) {\r\n state = {...state, ids: action.payload};\r\n return state;\r\n },\r\n\r\n setRows(state, action: PayloadAction<Array<any>>) {\r\n state = {...state, rows: action.payload, defaultRowOrder: action.payload};\r\n return state;\r\n\r\n },\r\n setColumns(state, action: PayloadAction<IPMMultiComparisonGridColumn[]>) {\r\n state = {...state, columns: action.payload, \r\n defaultColumnOrder: state.defaultColumnOrder.length > state.ids.length ? state.defaultColumnOrder : action.payload};\r\n return state;\r\n\r\n },\r\n openContextMenu(state) {\r\n state = {...state, contextMenuIsHidden: false};\r\n return state;\r\n },\r\n closeContextMenu(state) {\r\n state = {...state, contextMenuIsHidden: true};\r\n return state;\r\n },\r\n setContextMenuItems(state, action: PayloadAction<any[]>) {\r\n state = {...state, contextMenuItems: action.payload};\r\n return state;\r\n },\r\n toggleCheckContextMenu(state, action: PayloadAction<{checked: boolean, key: string}>) {\r\n if(action.payload.key === \"DisplayBenchmark\") {\r\n const benchmarkData = state.reportData.find(d => d.id.toString() === \"0\");\r\n if(benchmarkData) {\r\n state = {...state, contextMenuItems: state.contextMenuItems.map(d=> d.key === \"DisplayBenchmark\" ? {...d, isChecked: action.payload.checked} : \r\n (benchmarkData.data[d.key] === 'no data' ? {...d, isChecked: !action.payload.checked} : d))}\r\n }\r\n }\r\n else {\r\n state = {...state, contextMenuItems: state.contextMenuItems.map(d=> d.key === action.payload.key ? // Loop through the array to find the post you want to modify\r\n { ...d, isChecked: action.payload.checked} : d )}\r\n }\r\n return state\r\n },\r\n\r\n sortByCol(state, action: PayloadAction<string>) {\r\n let rowArray = state.rows;\r\n let colArray = state.columns;\r\n let defaultColArray = state.defaultColumnOrder;\r\n let colToSort = rowArray.find(d => d[0] === action.payload); // find row that is clicked for sorting\r\n let colValues = colToSort[1]; // access the values of the row to be sorted\r\n let report = state.reportData;\r\n \r\n let sortedCol = [];\r\n let cols = [];\r\n let sortedRow = null;\r\n let sortedAscending = true;\r\n let sortedReportData = [];\r\n\r\n if(state.sortedRow === null || state.sortedRow != action.payload) {\r\n sortedCol = colArray.map(s => s.key === \"Description\" ? {...s, valueForSort: null} : {...s, valueForSort: colValues.find(d => d.id === s.key).value}) as any;\r\n cols = sortedCol.filter(d => d.valueForSort !== null).sort((a, b) => {\r\n // temporary sorting might add another for aditional cases\r\n if(a.valueForSort < b.valueForSort) {return -1}\r\n if(a.valueForSort > b.valueForSort) { return 1}\r\n });\r\n sortedRow = action.payload;\r\n sortedAscending = true;\r\n } \r\n else {\r\n if(state.sortedAscending) {\r\n sortedCol = colArray.map(s => s.key === \"Description\" ? {...s, valueForSort: null} : {...s, valueForSort: colValues.find(d => d.id === s.key).value}) as any;\r\n cols = sortedCol.filter(d => d.valueForSort !== null).sort((a, b) => {\r\n // temporary sorting might add another for aditional cases\r\n if(a.valueForSort < b.valueForSort) {return 1}\r\n if(a.valueForSort > b.valueForSort) { return -1}\r\n });\r\n sortedRow = action.payload;\r\n sortedAscending = false;\r\n }\r\n else {\r\n sortedCol = defaultColArray.map(s => s.key === \"Description\" ? {...s, valueForSort: null} : {...s, valueForSort: colValues.find(d => d.id === s.key).value}) as any;\r\n cols = sortedCol.filter(d => d.valueForSort !== null);\r\n sortedAscending = true;\r\n if(report.find((a) => a.id.toString() === \"0\") ) {\r\n sortedReportData.push(report.find((a) => a.id.toString() === \"0\") )\r\n }\r\n }\r\n\r\n }\r\n \r\n // sort report data\r\n cols.map((d => {sortedReportData.push(report.find((a) => d.key === a.id))}))\r\n state = {...state, columns: [\r\n sortedCol.find(d => d.valueForSort === null), \r\n ...cols\r\n ],\r\n sortedRow,\r\n reportData: sortedReportData,\r\n sortedAscending\r\n }\r\n\r\n return state;\r\n },\r\n sortByRows(state) {\r\n \r\n const column = state.columns.find(d => d.key == \"Description\");\r\n const columnkey = column.key;\r\n let rowArray = state.rows;\r\n\r\n // set sorting order \r\n const colSort= state.columns.find((c) => c.key === columnkey);\r\n let isSorted = false;\r\n let isSortedDescending = false\r\n if(!colSort.isSorted) {\r\n isSorted = true;\r\n isSortedDescending = true;\r\n } \r\n else if(colSort.isSortedDescending) {\r\n isSorted = true;\r\n isSortedDescending = false;\r\n }\r\n else {\r\n isSorted = false;\r\n }\r\n // return back to normal order on nor sort\r\n if(!isSorted) {\r\n state = {...state, rows: state.defaultRowOrder, columns: state.columns.map((c) => {\r\n if(c.key == columnkey) {\r\n return {...c , isSorted, isSortedDescending}\r\n } else {\r\n return c\r\n }\r\n })}\r\n return state; \r\n }\r\n \r\n // sort grouped arrays\r\n let result = [];\r\n rowArray.map(t => result.push(t));\r\n result = result.sort((a, b) => {\r\n const aVal = DISPLAY_NAME_FOR_PROPERTY[a[0]] ? DISPLAY_NAME_FOR_PROPERTY[a[0]] : a[0];\r\n const bVal = DISPLAY_NAME_FOR_PROPERTY[b[0]] ? DISPLAY_NAME_FOR_PROPERTY[b[0]] : b[0];\r\n if (aVal < bVal) { return !column.isSortedDescending ? -1 : 1 }\r\n if (aVal > bVal) { return !column.isSortedDescending ? 1 : -1; }\r\n\r\n return 0;\r\n })\r\n \r\n \r\n state = {...state, rows: result, columns: state.columns.map((c) => {\r\n if(c.key == columnkey) {\r\n return {...c , isSorted, isSortedDescending}\r\n } else {\r\n return c\r\n }\r\n })}\r\n return state;\r\n },\r\n toggleSortColumn(state, action: PayloadAction<{key: string, isSorted: boolean, isSortedDescending: boolean}>) {\r\n\r\n state = {...state, columns: state.columns.map(col => col.key === action.payload.key ? {\r\n ...col,\r\n isSorted: true,\r\n isSortedDescending: !action.payload.isSortedDescending ? true : false\r\n } : {\r\n ...col,\r\n isSorted: false,\r\n isSortedDescending: false\r\n })}\r\n\r\n return state;\r\n },\r\n setBenchmark(state, action: PayloadAction<string>) {\r\n state = {...state, benchmark: action.payload}\r\n return state\r\n },\r\n\r\n setBenchmarkData(state) {\r\n let benchmarkData = state.benchmarkAverage;\r\n let incomingReport = {} as any\r\n //process benchmark data\r\n const benchmarkSlice = state.benchmark.split(' ');\r\n if(!state.benchmark.includes(\"Average\")) {\r\n benchmarkData = BenchmarkData.find(obj => {\r\n return obj.Industry === benchmarkSlice[0] && obj.SentYear === parseInt(benchmarkSlice[benchmarkSlice.length - 1])\r\n });\r\n let result = {};\r\n Object.keys(state.benchmarkAverage).forEach(d => {\r\n if(d in benchmarkData) result[d] = benchmarkData[d];\r\n else result[d] = 'no data';\r\n });\r\n\r\n incomingReport = {\r\n id: \"0\",\r\n header: `Benchmark: ${state.benchmark}`,\r\n data: {...result, ID: \"0\", Subject: `Benchmark: ${state.benchmark}`},\r\n isSelected: false\r\n }\r\n } else {\r\n incomingReport = {\r\n id: \"0\",\r\n header: `Benchmark: ${state.benchmark}`,\r\n data: {...benchmarkData, ID: \"0\", Subject: `Benchmark: ${state.benchmark}`},\r\n isSelected: false\r\n }\r\n }\r\n \r\n // check if alrady has benchmark on column\r\n\r\n state = {...state, benchmarkData, reportData: state.reportData.find(d => d.id.toString() === \"0\") ? state.reportData.map(d => {\r\n if(d.id == 0) { \r\n return incomingReport\r\n }\r\n else {\r\n return d\r\n }\r\n }) : \r\n [incomingReport, ...state.reportData]\r\n } \r\n return state;\r\n },\r\n },\r\n \r\n extraReducers: (builder) => {\r\n builder.addMatcher(reportStatsApi.endpoints.getReportStats.matchFulfilled, (state, action) => {\r\n let incomingReport = {\r\n id: action.meta.arg.originalArgs.id,\r\n header: action.payload.Subject,\r\n data: {...action.payload, ID: action.meta.arg.originalArgs.id},\r\n isSelected: false\r\n } as IComparableReportData \r\n state.reportData.push(incomingReport)\r\n return state;\r\n }),\r\n builder.addMatcher(reportStatsApi.endpoints.getReportBenchmarkStats.matchFulfilled, (state, action) => {\r\n let benchmarkAverage = {\r\n ...action.payload,\r\n\t\t\t\tSentYear: new Date().getFullYear(),\r\n\t\t\t\tIndustry: action.payload.Industry,\r\n\t\t\t\tOpenRate: action.payload.OpenRate,\r\n\t\t\t\tAudienceAttentionRate: action.payload.AudienceAttentionRate,\r\n\t\t\t\tOpenAttentionRate: action.payload.AttentionRate,\r\n\t\t\t\tIgnoreRate: action.payload.IgnoredRate,\r\n\t\t\t\tReadRate: action.payload.ReadsRate,\r\n\t\t\t\tSkimmedRate: action.payload.SkimmedRate,\r\n\t\t\t\tLeftOpenRate: action.payload.LeftOpenRate,\r\n\t\t\t\tEngagedReadRate: action.payload.EngagedReadRate,\r\n\t\t\t\tPercentRead: 0,\r\n\t\t\t\tClickRate: action.payload.ClickRate,\r\n\t\t\t\tEffectiveRate: action.payload.EffectiveRate,\r\n OpenEngagementRate: action.payload.EngagementRate,\r\n\t\t\t};\r\n let benchmarkData = action.payload;\r\n state = {...state, benchmarkData, benchmarkAverage}\r\n return state;\r\n }),\r\n builder.addMatcher(appSettingsApiSlice.endpoints.getAppSettingByKey.matchFulfilled, (state, action) => {\r\n if(action.payload.Key === \"PrimaryIndustry\") {\r\n return {...state, primaryIndustry: action.payload.Value}\r\n }\r\n else if(action.payload.Key === \"SecondaryIndustry\")\r\n return {...state, secondaryIndustry: action.payload.Value}\r\n else \r\n return state;\r\n })\r\n\r\n },\r\n});\r\n\r\nexport default multiComparisonSlice.reducer;\r\n\r\nexport const {\r\n initState,\r\n setComparedItems,\r\n deleteItems,\r\n toggleSelectedItem,\r\n setColumns,\r\n setRows,\r\n setIds,\r\n openContextMenu,\r\n closeContextMenu,\r\n setContextMenuItems,\r\n toggleCheckContextMenu,\r\n toggleSortColumn,\r\n sortByCol,\r\n sortByRows,\r\n setBenchmark,\r\n setBenchmarkData,\r\n} = multiComparisonSlice.actions;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { AppSetting } from \"Definitions/Generated/PoliteMailEntities/Models/AppSetting\";\r\nimport { PMPermissions } from \"Definitions/PMRoles\";\r\nimport * as PrefActions from 'Actions/PageActions/ProfileActions/PreferencesActions';\r\nimport { PreferencePage } from \"Definitions/Generated/PoliteMailEntities/Models/PreferencePage\";\r\nimport { ProfileManager } from \"Utils/GlobalProfile\";\r\nimport { PreferencesTypes } from \"Definitions/PreferenceTypes\";\r\nimport { CommunicateToOutlook } from 'Utils/OutlookUtils';\r\n\r\nexport interface IOverridablePreference {\r\n Id: string\r\n Value: string,\r\n DisplayName: string,\r\n Description: string,\r\n Group: string,\r\n IsGlobal: boolean,\r\n IsLocked: boolean,\r\n IsDirty: boolean,\r\n RemovedValues?:string\r\n}\r\n\r\nexport enum OutlookBrowserMode {\r\n ChromiumInline = \"chromiuminline\",\r\n ChromiumPopout = \"chromiumpopout\",\r\n}\r\n\r\nexport enum EditorToolbarPosition {\r\n TOP = \"TOP\",\r\n BOTTOM = \"BOTTOM\"\r\n}\r\n\r\nexport function ConvertPreferenceToAppSetting(preference: IOverridablePreference): AppSetting {\r\n return {\r\n ID: parseInt(preference.Id),\r\n Key: `p${preference.Id}`,\r\n Value: preference.Value ?? \"\",\r\n DisplayName: preference.DisplayName ?? \"\",\r\n Description: preference.Description,\r\n Group: preference.Group,\r\n SubGroup: \"\",\r\n EditRole: PMPermissions.User,\r\n ViewRole: PMPermissions.User,\r\n Scope: `{\"Scopes\":[\"User Preferences\"]}`,\r\n AllowedValues: \"\",\r\n OnChangeMessage: \"\",\r\n CustomRender: true,\r\n UserSetting: true,\r\n IsDirty: preference.IsDirty\r\n } as AppSetting\r\n}\r\n\r\nexport function GetOverridablePreferenceForAppSetting(state: IUserPreferencesState, appSettingPreference: AppSetting) {\r\n const preference = PreferencesTypes[appSettingPreference.ID.toString() as keyof typeof PreferencesTypes];\r\n if (preference)\r\n return state[preference];\r\n return null;\r\n}\r\n\r\nexport function ConvertOverridablePreferenceToModel(preference:IOverridablePreference): PreferencePage {\r\n return {\r\n PreferenceId: parseInt(preference.Id),\r\n PreferenceValue: preference.Value ?? \"\",\r\n PreferenceName: preference.DisplayName ?? \"\",\r\n Description:preference.Description,\r\n Group: preference.Group,\r\n IsGlobal: preference.IsGlobal,\r\n IsLocked: preference.IsLocked,\r\n UserId: ProfileManager.GetGlobalProfile().UserID\r\n } as PreferencePage\r\n}\r\n\r\nexport function ConvertModelToOverridablePreference(preference:PreferencePage, isDirty: boolean = false): IOverridablePreference {\r\n return {\r\n Id: preference.PreferenceId.toString(),\r\n Value: preference.PreferenceValue ?? \"\",\r\n DisplayName: preference.PreferenceName ?? \"\",\r\n Description: preference.Description,\r\n Group: preference.Group,\r\n IsGlobal: preference.IsGlobal,\r\n IsLocked: preference.IsLocked,\r\n IsDirty: isDirty,\r\n } as IOverridablePreference\r\n}\r\n\r\nexport interface IUserPreferencesState {\r\n MeasurementDefault: IOverridablePreference,\r\n EnableSubscription: IOverridablePreference,\r\n UserExpansionModes: IOverridablePreference,\r\n UseExpansionCache: IOverridablePreference,\r\n EmbedImages: IOverridablePreference,\r\n OverrideWordCount: IOverridablePreference,\r\n SendbackLoopInterval: IOverridablePreference,\r\n DefaultTemplateId: IOverridablePreference,\r\n DefaultCampaignId: IOverridablePreference,\r\n CheckRecipientCountSendLimit: IOverridablePreference,\r\n AllowedFromAddresses: IOverridablePreference,\r\n OverridePreflightInterval: IOverridablePreference,\r\n ActionableOrganizer: IOverridablePreference,\r\n //UseDarkMode: IOverridablePreference,\r\n ClearEWSCache: IOverridablePreference,\r\n ForgetCredentials: IOverridablePreference,\r\n ReestablishWarnings: IOverridablePreference,\r\n ResetTableViews: IOverridablePreference,\r\n MonitorInbox: IOverridablePreference,\r\n ReportMaximumComparison: IOverridablePreference,\r\n OutlookBrowserMode: IOverridablePreference,\r\n RecipientsLoadLimit: IOverridablePreference,\r\n SuppressBadCredsWarning: IOverridablePreference,\r\n SuppressEmptyListWarning: IOverridablePreference,\r\n SuppressMultiTenantWarning: IOverridablePreference,\r\n HideInteractionsByGeoLocation: IOverridablePreference,\r\n ToolbarPosition : IOverridablePreference,\r\n IsLoaded: boolean\r\n}\r\n\r\nconst initialState: IUserPreferencesState = {\r\n MeasurementDefault: { Id: PreferencesTypes.MeasurementDefault.toString(), Value: \"-1\", DisplayName: \"Measurement Default\", Description: \"\", Group: \"Sending\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n EnableSubscription: { Id: PreferencesTypes.EnableSubscription.toString(), Value: \"false\", DisplayName: \"Enable Subscription\", Description: \"\", Group: \"Editing\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n UserExpansionModes: { Id: PreferencesTypes.UserExpansionModes.toString(), Value: \"\", DisplayName: \"User Expansion Modes\", Description: \"\", Group: \"List Handling\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n UseExpansionCache: { Id: PreferencesTypes.UseExpansionCache.toString(), Value: \"false\", DisplayName: \"Use Expansion Cache\", Description: \"\", Group: \"List Handling\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n EmbedImages: { Id: PreferencesTypes.EmbedImages.toString(), Value: \"false\", DisplayName: \"Embed Images\", Description: \"\", Group: \"Editing\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n OverrideWordCount: { Id: PreferencesTypes.OverrideWordCount.toString(), Value: \"false\", DisplayName: \"Override Word Count\", Description: \"\", Group: \"Editing\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n SendbackLoopInterval: { Id: PreferencesTypes.SendbackLoopInterval.toString(), Value: \"-1\", DisplayName: \"Sendback Loop Interval\", Description: \"\", Group: \"Sending\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n DefaultTemplateId: { Id: PreferencesTypes.DefaultTemplateId.toString(), Value: \"-1\", DisplayName: \"Default Temlplate\", Description: \"\", Group: \"Editing\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n DefaultCampaignId: { Id: PreferencesTypes.DefaultCampaignId.toString(), Value: \"-1\", DisplayName: \"Default Campaign\", Description: \"\", Group: \"Editing\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n CheckRecipientCountSendLimit: { Id: PreferencesTypes.CheckRecipientCountSendLimit.toString(), Value: \"false\", DisplayName: \"Check Recipient Count\", Description: \"\", Group: \"Sending\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n AllowedFromAddresses: { Id: PreferencesTypes.WhitelistFromAddress.toString(), Value: \"\", DisplayName: \"Allowed From Addresses\", Description: \"\", Group: \"Sending\", IsGlobal: true, IsLocked: true, IsDirty: false },\r\n OverridePreflightInterval: { Id: PreferencesTypes.OverridePreflightInterval.toString(), Value: \"-1\", DisplayName: \"Override Preflight Interval\", Description: \"\", Group: \"Options\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n ActionableOrganizer: { Id: PreferencesTypes.ActionableOrganizer.toString(), Value: \"\", DisplayName: \"Actionable Organizer\", Description: \"\", Group: \"Sending\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n //UseDarkMode: { Id: PreferencesTypes.UseDarkMode.toString(), Value: \"\", DisplayName: \"Themes\", Description: \"\", Group: \"Individual Settings\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n ClearEWSCache: { Id: PreferencesTypes.ClearEWSCache.toString(), Value: \"\", DisplayName: \"EWS Cache\", Description: \"\", Group: \"List Handling\", IsGlobal: true, IsLocked: true, IsDirty: false },\r\n ForgetCredentials: { Id: PreferencesTypes.ForgetCredentials.toString(), Value: \"\", DisplayName: \"Client Credentials\", Description: \"\", Group: \"Individual Settings\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n ReestablishWarnings: { Id: PreferencesTypes.ReestablishWarnings.toString(), Value: \"\", DisplayName: \"Warnings\", Description: \"\", Group: \"Individual Settings\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n ResetTableViews: { Id: PreferencesTypes.ResetTableViews.toString(), Value: \"\", DisplayName: \"Table Views\", Description: \"\", Group: \"Individual Settings\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n MonitorInbox: { Id: PreferencesTypes.MonitorInbox.toString(), Value: \"\", DisplayName: \"Undeliverables and Auto-Replies\", Description: \"\", Group: \"Individual Settings\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n ReportMaximumComparison: { Id: PreferencesTypes.ReportMaximumComparison.toString(), Value: \"\", DisplayName: \"Report Maximum Comparison\", Description: \"\", Group: \"Reporting\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n RecipientsLoadLimit: { Id: PreferencesTypes.RecipientsLoadLimit.toString(), Value: \"\", DisplayName: \"Count of recipients loaded by default\", Description: \"\", Group: \"Addressing\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n OutlookBrowserMode: { Id: PreferencesTypes.OutlookBrowserMode.toString(), Value: OutlookBrowserMode.ChromiumInline, DisplayName: \"Outlook Browser Mode\", Description: \"\", Group: \"Options\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n SuppressBadCredsWarning: { Id: PreferencesTypes.SuppressBadCredsWarning.toString(), Value: 'false', DisplayName: \"Suppress Bad Cred Warnings\", Description: \"\", Group: \"List Handling\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n SuppressEmptyListWarning: { Id: PreferencesTypes.SuppressEmptyListWarning.toString(), Value: 'false', DisplayName: \"Suppress Empty List Warnings\", Description: \"\", Group: \"List Handling\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n SuppressMultiTenantWarning: { Id: PreferencesTypes.SuppressMultiTenantWarning.toString(), Value: 'false', DisplayName: \"Suppress Multi-Tenant Warnings\", Description: \"\", Group: \"List Handling\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n HideInteractionsByGeoLocation: { Id: PreferencesTypes.HideInteractionsByGeoLocation.toString(), Value: 'false', DisplayName: `Hide \"Interactions by GeoLocation\" Section`, Description: \"\", Group: \"Reporting\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n ToolbarPosition: { Id: PreferencesTypes.ToolbarPosition.toString(), Value: EditorToolbarPosition.TOP, DisplayName: `Preferred toolbar position`, Description: \"\", Group: \"Editing\", IsGlobal: false, IsLocked: false, IsDirty: false },\r\n IsLoaded: false\r\n}\r\n\r\nfunction updatePreferenceForState(state: IUserPreferencesState, overridablePreference: IOverridablePreference): IUserPreferencesState {\r\n const preference = PreferencesTypes[overridablePreference.Id as keyof typeof PreferencesTypes];\r\n if (preference)\r\n return { ...state, [preference]: { ...overridablePreference, IsDirty: true } };\r\n\r\n return state;\r\n}\r\n\r\nexport const preferencesSlice = createSlice({\r\n name:\"preferenceSetting\",\r\n initialState,\r\n reducers: {\r\n setPreference(state, action: PayloadAction<IOverridablePreference>) {\r\n state = updatePreferenceForState(state, action.payload);\r\n return state;\r\n },\r\n cleanAllPreferences(state) {\r\n state.AllowedFromAddresses.IsDirty = false;\r\n state.CheckRecipientCountSendLimit.IsDirty = false;\r\n state.DefaultCampaignId.IsDirty = false;\r\n state.DefaultTemplateId.IsDirty = false;\r\n state.EmbedImages.IsDirty = false;\r\n state.EnableSubscription.IsDirty = false;\r\n state.MeasurementDefault.IsDirty = false;\r\n state.OverridePreflightInterval.IsDirty = false;\r\n state.OverrideWordCount.IsDirty = false;\r\n state.SendbackLoopInterval.IsDirty = false;\r\n state.OutlookBrowserMode.IsDirty = false;\r\n state.UseExpansionCache.IsDirty = false;\r\n state.UserExpansionModes.IsDirty = false;\r\n state.ActionableOrganizer.IsDirty = false;\r\n state.ReportMaximumComparison.IsDirty = false;\r\n state.RecipientsLoadLimit.IsDirty = false;\r\n state.SuppressBadCredsWarning.IsDirty = false;\r\n state.SuppressEmptyListWarning.IsDirty = false;\r\n state.SuppressMultiTenantWarning.IsDirty = false;\r\n state.HideInteractionsByGeoLocation.IsDirty = false;\r\n state.ToolbarPosition.IsDirty = false;\r\n return state;\r\n },\r\n savePreferences(state) {\r\n let promiseList: Promise<any>[] = []\r\n\r\n if(state.AllowedFromAddresses.IsDirty)\r\n promiseList.push(...PrefActions.SaveAllowedLists(state.AllowedFromAddresses.Value.split(','), (state?.AllowedFromAddresses?.RemovedValues?? '').split(',')));\r\n if(state.CheckRecipientCountSendLimit.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.CheckRecipientCountSendLimit)));\r\n if(state.DefaultCampaignId.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.DefaultCampaignId)));\r\n if(state.DefaultTemplateId.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.DefaultTemplateId)));\r\n if(state.EmbedImages.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.EmbedImages)));\r\n if(state.EnableSubscription.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.EnableSubscription)));\r\n if(state.MeasurementDefault.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.MeasurementDefault)));\r\n if(state.OverridePreflightInterval.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.OverridePreflightInterval)));\r\n if(state.OverrideWordCount.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.OverrideWordCount)));\r\n if(state.SendbackLoopInterval.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.SendbackLoopInterval)));\r\n if(state.UseExpansionCache.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.UseExpansionCache)));\r\n if(state.UserExpansionModes.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.UserExpansionModes)));\r\n if (state.ActionableOrganizer.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.ActionableOrganizer)));\r\n if(state.ReportMaximumComparison.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.ReportMaximumComparison)))\r\n if(state.RecipientsLoadLimit.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.RecipientsLoadLimit)))\r\n if(state.OutlookBrowserMode.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.OutlookBrowserMode)))\r\n if(state.SuppressBadCredsWarning.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.SuppressBadCredsWarning)))\r\n if(state.SuppressEmptyListWarning.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.SuppressEmptyListWarning)))\r\n if(state.SuppressMultiTenantWarning.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.SuppressMultiTenantWarning)))\r\n if(state.HideInteractionsByGeoLocation.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.HideInteractionsByGeoLocation)))\r\n if(state.ToolbarPosition.IsDirty)\r\n promiseList.push(PrefActions.UpdatePreference(ConvertOverridablePreferenceToModel(state.ToolbarPosition)))\r\n\r\n Promise.all(promiseList).then(() => {\r\n cleanAllPreferences();\r\n CommunicateToOutlook('refreshPreference');\r\n });\r\n\r\n return state;\r\n },\r\n setDeleteAllowedListId(state, removeId:PayloadAction<string> ){\r\n\r\n const removeValues = state.AllowedFromAddresses.RemovedValues?.split(',') ?? []\r\n\r\n removeValues.push(removeId.payload)\r\n\r\n state.AllowedFromAddresses.RemovedValues = removeValues.join(',')\r\n\r\n return state;\r\n },\r\n initState(state, action:PayloadAction<PreferencePage[]>){\r\n let nState = {...state}\r\n\r\n action.payload.forEach(p => {\r\n nState = updatePreferenceForState(nState, {\r\n Id: p.PreferenceId.toString(),\r\n Value: p.PreferenceValue ?? '',\r\n DisplayName: p.PreferenceName ?? '',\r\n Description: p.Description,\r\n Group: p.Group,\r\n IsGlobal: p.IsGlobal,\r\n IsLocked: p.IsLocked\r\n } as IOverridablePreference)\r\n })\r\n\r\n state = nState;\r\n state.IsLoaded = true;\r\n return state;\r\n }\r\n }\r\n})\r\n\r\nexport default preferencesSlice.reducer\r\n\r\nexport const {\r\n setPreference,\r\n cleanAllPreferences,\r\n savePreferences,\r\n setDeleteAllowedListId,\r\n initState\r\n} = preferencesSlice.actions","import { Region } from 'Definitions/Generated/PoliteMailEntities/Models/Region';\r\nimport { RTKQueryTags, baseApi } from './baseApiSlice';\r\nconst regionsApiSlice = baseApi\r\n .enhanceEndpoints({\r\n addTagTypes: [],\r\n })\r\n .injectEndpoints({\r\n endpoints: (builder) => ({\r\n getRegions: builder.query<Region[], void>({\r\n query: () => ({\r\n url: 'Regions',\r\n }),\r\n transformResponse: (response) => {\r\n return (response as { value: Region[] }).value;\r\n },\r\n providesTags: (result, _error, _args) => {\r\n return result\r\n ? [\r\n { type: RTKQueryTags.Regions, id: 'LIST' },\r\n ...result.map((region) => ({\r\n type: RTKQueryTags.Regions,\r\n id: region?.ID ?? 0,\r\n })),\r\n ]\r\n : [];\r\n },\r\n }),\r\n }),\r\n });\r\nconst { useGetRegionsQuery } = regionsApiSlice;\r\n\r\nexport const regionsApiHooks = {\r\n useGetRegionsQuery\r\n};","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\n\r\nexport enum SendingEmailStage {\r\n Initializing = \"Initializing\",\r\n Validation = \"Validation\",\r\n FilteredListValidation = \"FilteredListValidation\",\r\n Sending = \"Sending\",\r\n SuccessfullyCompleted = \"Successfully complete\",\r\n Failed = \"Failed\",\r\n Cancelled = \"Cancelled\",\r\n ShowTrackingWarning = \"Warning\",\r\n NotSent = \"Not Sent\"\r\n}\r\n\r\nexport const getPercentageOfSendingMessage = (stage: SendingEmailStage, filteredListFeatureEnabled: boolean) => {\r\n if (filteredListFeatureEnabled)\r\n switch (stage) {\r\n case SendingEmailStage.NotSent:\r\n return [0, 0];\r\n case SendingEmailStage.Initializing:\r\n case SendingEmailStage.Failed:\r\n case SendingEmailStage.Cancelled:\r\n default:\r\n return [0.00001, 0.3];\r\n case SendingEmailStage.Validation:\r\n return [0.3, 0.4];\r\n case SendingEmailStage.FilteredListValidation:\r\n return [0.4, 0.6];\r\n case SendingEmailStage.Sending:\r\n case SendingEmailStage.ShowTrackingWarning:\r\n return [0.6, 1];\r\n case SendingEmailStage.SuccessfullyCompleted:\r\n return [1, 1];\r\n }\r\n else\r\n switch (stage) {\r\n case SendingEmailStage.NotSent:\r\n return [0, 0];\r\n case SendingEmailStage.Initializing:\r\n case SendingEmailStage.Failed:\r\n case SendingEmailStage.Cancelled:\r\n default:\r\n return [0.00001, 0.4];\r\n case SendingEmailStage.Validation:\r\n return [0.4, 0.6];\r\n case SendingEmailStage.Sending:\r\n case SendingEmailStage.ShowTrackingWarning:\r\n return [0.6, 1];\r\n case SendingEmailStage.SuccessfullyCompleted:\r\n return [1, 1];\r\n }\r\n};\r\n\r\nexport const getStageInfoStringOfSendingMessage = (stage: SendingEmailStage) => {\r\n switch (stage) {\r\n case SendingEmailStage.Initializing:\r\n case SendingEmailStage.Failed:\r\n case SendingEmailStage.Cancelled:\r\n case SendingEmailStage.SuccessfullyCompleted:\r\n default:\r\n return \"Initializing send...\";\r\n case SendingEmailStage.Validation:\r\n return \"Validating send...\";\r\n case SendingEmailStage.FilteredListValidation:\r\n return \"Validating filtered lists...\"\r\n case SendingEmailStage.Sending:\r\n case SendingEmailStage.ShowTrackingWarning:\r\n return \"Sending in progress...\";\r\n }\r\n};\r\n\r\nexport interface SendingMessageState {\r\n stage: SendingEmailStage;\r\n isLoading: boolean;\r\n isSuccessfullyCompleted: boolean;\r\n isFailed: boolean;\r\n isCancelled: boolean;\r\n isDraftSaved?: boolean;\r\n showWarning?:boolean;\r\n}\r\n\r\nconst initialState: SendingMessageState = {\r\n isLoading: false,\r\n isFailed: false,\r\n isSuccessfullyCompleted: false,\r\n isCancelled: false,\r\n stage: null,\r\n isDraftSaved: false,\r\n showWarning: false\r\n};\r\n\r\nexport const sendMessageSlice = createSlice({\r\n name: \"sendMessages\",\r\n initialState,\r\n reducers: {\r\n startOperation: (\r\n state,\r\n payloadAction: PayloadAction<SendingEmailStage>\r\n ) => {\r\n state.stage = payloadAction.payload;\r\n state.isLoading = true;\r\n state.isFailed = false;\r\n state.isSuccessfullyCompleted = false;\r\n state.isCancelled = false;\r\n },\r\n failedSending: (state) => {\r\n state.stage = SendingEmailStage.Failed;\r\n state.isLoading = false;\r\n state.isFailed = true;\r\n state.isSuccessfullyCompleted = false;\r\n state.isCancelled = false;\r\n },\r\n successSending: (state) => {\r\n state.stage = SendingEmailStage.SuccessfullyCompleted;\r\n state.isLoading = false;\r\n state.isFailed = false;\r\n state.isSuccessfullyCompleted = true;\r\n state.isCancelled = false;\r\n },\r\n cancelSending: (state) => {\r\n state.stage = SendingEmailStage.Cancelled;\r\n state.isLoading = false;\r\n state.isFailed = false;\r\n state.isSuccessfullyCompleted = false;\r\n state.isCancelled = true;\r\n },\r\n draftSaved: (state) => {\r\n state.isDraftSaved = true;\r\n },\r\n resetDraft: (state) => {\r\n state.isDraftSaved = false;\r\n },\r\n handleTrackingShowWarning:(state) => {\r\n state.showWarning = true;\r\n },\r\n handleTrackingHideWarning:(state) => {\r\n state.showWarning = false;\r\n }\r\n },\r\n});\r\n\r\nexport const {\r\n startOperation,\r\n failedSending,\r\n successSending,\r\n cancelSending,\r\n draftSaved,\r\n resetDraft,\r\n handleTrackingShowWarning,\r\n handleTrackingHideWarning\r\n} = sendMessageSlice.actions;\r\n\r\nexport default sendMessageSlice.reducer;\r\n","import { Stage } from 'Definitions/Generated/PoliteMailEntities/Models/Stage';\r\nimport { RTKQueryTags, baseApi } from './baseApiSlice';\r\nconst stagesApiSlice = baseApi\r\n .enhanceEndpoints({\r\n addTagTypes: [],\r\n })\r\n .injectEndpoints({\r\n endpoints: (builder) => ({\r\n getStages: builder.query<Stage[], void>({\r\n query: () => ({\r\n url: 'Stages',\r\n }),\r\n transformResponse: (response) => {\r\n return (response as { value: Stage[] }).value;\r\n },\r\n providesTags: (result, _error, _args) => {\r\n return result\r\n ? [\r\n { type: RTKQueryTags.Stages, id: 'LIST' },\r\n ...result.map((stage) => ({\r\n type: RTKQueryTags.Stages,\r\n id: stage?.ID ?? 0,\r\n })),\r\n ]\r\n : [];\r\n },\r\n }),\r\n }),\r\n });\r\nconst { useGetStagesQuery } = stagesApiSlice;\r\n\r\nexport const stagesApiHooks = {\r\n useGetStagesQuery\r\n};","import { BuilderNavigation, BuilderNavigationType } from \"@politemail/ui-components\";\r\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { IPMTemplateBuilderPanelActions } from \"components/PMBuilder/PMBuilderContentCommandActions/PMTemplateBuilderPanelActions\";\r\nimport { PMEntity } from \"Definitions/PMEntity\";\r\nimport { TemplatePageNames } from \"Definitions/PMMailEditorDefinitions\";\r\n\r\nexport interface TemplateBuilderState {\r\n\tisBuilderPanelOpen: boolean;\r\n\tcurrentTab: TemplatePageNames;\r\n\tnavigation: BuilderNavigationType;\r\n\ttemplateId: number;\r\n\tbuilderPanelActions: IPMTemplateBuilderPanelActions<PMEntity>;\r\n\tselectedImageBase64: string;\r\n\t/*templateId: number;\r\n\tcurrentTab: PageNames;\r\n\titemHover: boolean;\r\n\ttemplates: IPMTemplate[];\r\n\ttemplatePiece: IPMTemplatePiecePayload;\r\n\tsmartAttachment: IPMSmartAttachmentPayload;\r\n\tcontentButton: string;\r\n\tlink: IPMLinkPayload;\r\n\tparagraph: IPMParagraphPayload;\r\n\tdraggableContent: PageNames;\r\n\tdirtyTemplateContent: Template;\r\n\timage: IPMImagePayload;\r\n\tsaveTemplateAsNew: boolean;\r\n\tcurrentSelectedContentID: number;\r\n\tdefaultTemplateID: number;\r\n\tsaveTemplateDialogIsHidden: boolean;\r\n\tsaveContentDialogIsHidden: boolean;\r\n\tshareTemplateDialogIsHidden: boolean;\r\n\tshareContentDialogIsHidden: boolean;\r\n\tsaveLinkDialogIsHidden: boolean;\r\n\tdirtyContentData: PMEntity;\r\n\tshareBrandThemeDialogIsHidden: boolean;\r\n\tbrandThemeUnsaved: boolean;\r\n\tsaveParagraphDialogIsHidden: boolean;*/\r\n}\r\n\r\nconst initialState: TemplateBuilderState = {\r\n\tisBuilderPanelOpen: false,\r\n\tcurrentTab: TemplatePageNames.Home,\r\n\tnavigation: {\r\n\t\tmain: BuilderNavigation.MAIN\r\n\t},\r\n\tbuilderPanelActions: null,\r\n\ttemplateId: -1,\r\n\tselectedImageBase64: \"\"\r\n};\r\n\r\nexport const templateBuilderSlice = createSlice({\r\n\tname: \"templateBuilder\",\r\n\tinitialState: initialState,\r\n\treducers: {\r\n\t\tsetIsBuilderPanelOpen: (state, action: PayloadAction<boolean>) => {\r\n\t\t\tstate.isBuilderPanelOpen = action.payload;\r\n\t\t},\r\n\t\ttoggleIsBuilderPanelOpen: (state) => {\r\n\t\t\tstate.isBuilderPanelOpen = !state.isBuilderPanelOpen;\r\n\t\t},\r\n\t\tsetCurrentTab: (state, action: PayloadAction<TemplatePageNames>) => {\r\n\t\t\tstate.currentTab = action.payload;\r\n\t\t},\r\n\t\tresetState: (state) => {\r\n\t\t\treturn initialState;\r\n\t\t},\r\n\t\tsetBuilderPanelActions: (state, action: PayloadAction<IPMTemplateBuilderPanelActions<PMEntity>>) => {\r\n\t\t\tstate.builderPanelActions = action.payload;\r\n\t\t},\r\n\t\tsetTemplateId: (state, action: PayloadAction<number>) => {\r\n\t\t\tstate.templateId = action.payload;\r\n\t\t},\r\n\t\tnavigateTo: (state, action: PayloadAction<BuilderNavigationType>) => {\r\n\t\t\tstate.navigation = action.payload;\r\n\t\t},\r\n\t\tsetSelectedImageBase64: (state, action: PayloadAction<string>) => {\r\n\t\t\tstate.selectedImageBase64 = action.payload;\r\n\t\t}\r\n\t}\r\n});\r\n\r\nexport const {\r\n\tsetIsBuilderPanelOpen,\r\n\tsetCurrentTab,\r\n\ttoggleIsBuilderPanelOpen,\r\n\tresetState,\r\n\tsetBuilderPanelActions,\r\n\tsetTemplateId,\r\n\tnavigateTo,\r\n\tsetSelectedImageBase64\r\n} = templateBuilderSlice.actions;\r\n\r\nexport default templateBuilderSlice.reducer;","import { TemplateThemePreview } from 'Definitions/Generated/PoliteMailEntities/Models/TemplateThemePreview';\r\nimport { baseApi } from './baseApiSlice';\r\nconst templateThemesApiSlice = baseApi\r\n .enhanceEndpoints({\r\n addTagTypes: ['TemplateThemePreview'],\r\n })\r\n .injectEndpoints({\r\n endpoints: (builder) => ({\r\n getTemplateThemes: builder.query<TemplateThemePreview[], void>({\r\n query: () => ({\r\n url: 'TemplateThemePreviews',\r\n }),\r\n transformResponse: (response) => {\r\n return (response as { value: TemplateThemePreview[] }).value;\r\n },\r\n providesTags: (result, _error, _args) => {\r\n return result\r\n ? [\r\n { type: 'TemplateThemePreview', id: 'LIST' },\r\n ...result.map((templateTheme) => ({\r\n type: 'TemplateThemePreview' as const,\r\n id: templateTheme?.ID ?? 0,\r\n })),\r\n ]\r\n : [];\r\n },\r\n }),\r\n createTemplateTheme: builder.mutation<TemplateThemePreview, Partial<TemplateThemePreview>>({\r\n query: (theme) => ({\r\n url: 'TemplateThemePreviews',\r\n method: 'POST',\r\n body: theme,\r\n }),\r\n transformResponse: (responseData) => {\r\n return responseData as TemplateThemePreview;\r\n },\r\n invalidatesTags: [{ type: 'TemplateThemePreview', id: 'LIST' }],\r\n }),\r\n\r\n updateTemplateTheme: builder.mutation<TemplateThemePreview, Partial<TemplateThemePreview>>({\r\n query: (body) => ({\r\n url: `TemplateThemePreviews(${body.ID})`,\r\n method: 'PUT',\r\n body\r\n }),\r\n invalidatesTags: (_response, _result, template) => [{type: 'TemplateThemePreview', id: template.ID}]\r\n }),\r\n }),\r\n });\r\n\r\nconst { useGetTemplateThemesQuery, useCreateTemplateThemeMutation, useUpdateTemplateThemeMutation } = templateThemesApiSlice;\r\n\r\n\r\nexport const templateThemesApiHooks = {\r\n useGetTemplateThemesQuery,\r\n useCreateTemplateThemeMutation,\r\n useUpdateTemplateThemeMutation\r\n};\r\n\r\nexport default templateThemesApiSlice.reducer;","import { UserFrom } from \"Definitions/Generated/PoliteMailEntities/Models/UserFrom\";\r\nimport { RTKQueryTags, baseApi } from \"./baseApiSlice\";\r\n\r\nconst userFromsApiSlice = baseApi\r\n .enhanceEndpoints({\r\n addTagTypes: [],\r\n })\r\n .injectEndpoints({\r\n endpoints: (builder) => ({\r\n getGetUserFroms: builder.query<UserFrom[], { userID: number }>({\r\n query: (args) => ({\r\n url: `UserFroms(${args.userID})`,\r\n method: \"GET\",\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: UserFrom[] }).value;\r\n },\r\n providesTags: (result, _error, args) => {\r\n return result\r\n ? [\r\n { type: RTKQueryTags.User, id: args.userID },\r\n ...result?.map((from) => ({\r\n type: RTKQueryTags.UserFrom,\r\n id: from?.ID ?? 0,\r\n })),\r\n ]\r\n : [];\r\n },\r\n }),\r\n getAllUserFroms: builder.query<UserFrom[], void>({\r\n query: () => ({\r\n url: \"UserFroms\",\r\n method: \"GET\",\r\n }),\r\n transformResponse: (response) => {\r\n return (response as { value: UserFrom[] }).value;\r\n },\r\n providesTags: (result, _error, args) => [\r\n { type: RTKQueryTags.UserFrom, id: \"LIST\" },\r\n ...result.map((from) => ({\r\n type: RTKQueryTags.UserFrom,\r\n id: from?.ID ?? 0,\r\n })),\r\n ],\r\n }),\r\n checkHasFromPermissions: builder.query<Boolean, string>({\r\n query: (from) => ({\r\n url: `UserFroms/HasFromPermissions`,\r\n method: \"POST\",\r\n body: { FromAddress: from },\r\n }),\r\n transformResponse: (responseData) => {\r\n return (responseData as { value: boolean }).value;\r\n },\r\n }),\r\n setMultipleUsersToFrom: builder.mutation<boolean, { UserIds: number[], FromId: number }>({\r\n query: (args) => ({\r\n url: 'UserFroms/AssignMultipleUsersToFrom',\r\n method: 'POST',\r\n body: args\r\n }),\r\n invalidatesTags: (_result, _error, {UserIds}) => [\r\n { type: RTKQueryTags.UserFrom, id: 'LIST' },\r\n ...UserIds.map((uId) => ({\r\n type: RTKQueryTags.UserFrom,\r\n id: uId,\r\n })),\r\n ]\r\n }),\r\n removeMultipleUsersToFrom: builder.mutation<boolean, { UserIds: number[], FromId: number }>({\r\n query: (args) => ({\r\n url: 'UserFroms/RemoveMultipleUsersToFrom',\r\n method: 'POST',\r\n body: args\r\n }),\r\n invalidatesTags: (_result, _error, {UserIds}) => [\r\n { type: RTKQueryTags.UserFrom, id: 'LIST' },\r\n ...UserIds.map((uId) => ({\r\n type: RTKQueryTags.UserFrom,\r\n id: uId,\r\n })),\r\n ]\r\n })\r\n \r\n }),\r\n });\r\nconst {\r\n useGetGetUserFromsQuery,\r\n useGetAllUserFromsQuery,\r\n useCheckHasFromPermissionsQuery,\r\n useSetMultipleUsersToFromMutation,\r\n useRemoveMultipleUsersToFromMutation\r\n} = userFromsApiSlice;\r\n\r\nexport const userFromsApiHooks = {\r\n useGetGetUserFromsQuery,\r\n useGetAllUserFromsQuery,\r\n useCheckHasFromPermissionsQuery,\r\n useSetMultipleUsersToFromMutation,\r\n useRemoveMultipleUsersToFromMutation\r\n};\r\n","import { User } from 'Definitions/Generated/PoliteMailEntities/Models/User';\r\nimport { UserProfile } from 'Definitions/Generated/PoliteMailEntities/Models/UserProfile';\r\nimport { RTKQueryTags, baseApi } from './baseApiSlice';\r\n\r\nexport const usersApiSlice = baseApi\r\n .enhanceEndpoints({\r\n addTagTypes: ['UserReturnPath'],\r\n })\r\n .injectEndpoints({\r\n endpoints: builder => ({\r\n getUsers: builder.query<User[], void>({\r\n query: () => ({\r\n url: 'Users'\r\n }),\r\n transformResponse(response) {\r\n return (response as { value: User[] }).value;\r\n },\r\n providesTags: (result, _error, _args) => [\r\n { type: RTKQueryTags.User, id: 'LIST' },\r\n ...result.map(user => ({ type: RTKQueryTags.User, id: user?.ID ?? 0 }))\r\n ]\r\n }),\r\n getReturnPath: builder.query<string, void>({\r\n query: () => ({\r\n url: 'Users/GetReturnPath',\r\n method: 'POST'\r\n }),\r\n transformResponse(response) {\r\n return (response as { value: string }).value;\r\n },\r\n providesTags: (_result, _error, _args) => [{ type: 'UserReturnPath' }],\r\n }),\r\n getCurrentUser: builder.query<UserProfile, void>({\r\n query: () => ({\r\n url: 'Users/GetCurrentUser',\r\n method: 'POST'\r\n }),\r\n transformResponse(response) {\r\n return response as UserProfile;\r\n },\r\n providesTags(result, _error, _args) {\r\n if (result)\r\n return [\r\n { type: RTKQueryTags.User, id: result?.ID ?? 0 },\r\n ];\r\n return [];\r\n },\r\n })\r\n })\r\n });\r\n\r\nexport const { useGetUsersQuery, useGetReturnPathQuery, useGetCurrentUserQuery } = usersApiSlice;\r\n\r\nexport const usersApiHooks = {\r\n useGetUsersQuery,\r\n useGetReturnPathQuery,\r\n useGetCurrentUserQuery\r\n};\r\n\r\nexport default usersApiSlice.reducer;\r\n","import { TypedUseSelectorHook, useDispatch, useSelector } from \"react-redux\";\r\nimport type { RootState, AppDispatch } from \"./store\";\r\n\r\nexport const useAppDispatch: () => AppDispatch = useDispatch;\r\nexport const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;\r\n","\r\nexport enum StorageKeys {\r\n PMToken = \"pmToken\",\r\n}\r\n\r\nexport function LocalStorageEnabled(): boolean {\r\n try {\r\n localStorage.getItem(\"test\");\r\n return true;\r\n } catch (error) {\r\n console.log(error)\r\n return false;\r\n }\r\n}\r\n\r\nexport function LocalStorageGet(key: string): string {\r\n let item = null;\r\n\r\n try {\r\n item = localStorage.getItem(key);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n\r\n return item;\r\n}\r\n\r\nexport function LocalStorageSet(key: string, value: string) {\r\n try {\r\n localStorage.setItem(key, value);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n}\r\n\r\nexport function LocalStorageRemove(key: string) {\r\n try {\r\n localStorage.removeItem(key);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n}\r\n\r\nexport function LocalStorageAddToKey(key: string, value: string){\r\n let item = LocalStorageGet(key);\r\n if(item === null){\r\n // Create\r\n LocalStorageSet(key, value);\r\n }\r\n else{\r\n //append and set\r\n LocalStorageSet(key, item + `,${value}`);\r\n }\r\n}","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\n\r\ninterface ICacheSettingState {\r\n lifeTimeInMinutes: number;\r\n hasRetrievedFromAppSettings: boolean;\r\n}\r\n\r\nconst initialState: ICacheSettingState = {\r\n lifeTimeInMinutes: parseInt(process.env.CACHE_LIFETIME_DEFAULT),\r\n hasRetrievedFromAppSettings: false,\r\n};\r\n\r\nexport const cacheSettingSlice = createSlice({\r\n name: \"cacheSetting\",\r\n initialState,\r\n reducers: {\r\n setLifeTimeInMinutes(state, action: PayloadAction<number>) {\r\n state.lifeTimeInMinutes = action.payload;\r\n state.hasRetrievedFromAppSettings = true;\r\n },\r\n },\r\n});\r\n\r\nexport const { setLifeTimeInMinutes } = cacheSettingSlice.actions;\r\nexport default cacheSettingSlice.reducer;\r\n","import {\r\n Action,\r\n AnyAction,\r\n combineReducers,\r\n configureStore,\r\n createAction,\r\n isRejectedWithValue, Middleware,\r\n Reducer,\r\n ThunkAction\r\n} from \"@reduxjs/toolkit\";\r\nimport { setupListeners } from \"@reduxjs/toolkit/dist/query/react\";\r\nimport cacheSettingSlice from \"./features/cacheSettingSlice\";\r\nimport preferencesSlice from \"./features/preferencesSlice\";\r\nimport sendMessageSlice from \"./features/sendMessageSlice\";\r\nimport { baseApi } from \"./features/baseApiSlice\";\r\nimport {\r\n persistStore,\r\n persistReducer,\r\n FLUSH,\r\n REHYDRATE,\r\n PAUSE,\r\n PERSIST,\r\n PURGE,\r\n REGISTER,\r\n} from 'redux-persist'\r\nimport storage from 'redux-persist/lib/storage'\r\nimport multiComparisonSlice from \"./features/multiComparisonSlice\";\r\nimport exportMessageSliceReducer from \"./features/exportMessageSlice\";\r\nimport loadingGridSlice from \"./features/loadingGridSlice\";\r\nimport featureFlagsSlice from \"./features/featureFlagsSlice\";\r\nimport templateBuilderSlice from \"./features/templateBuilderSlice\";\r\nimport { GlobalEventManager } from \"../Utils/GlobalEvents\";\r\nimport expirationDetailsSlice from \"./expirationDetailSlice\";\r\nimport filteredListSlice from \"./features/filteredListSlice\";\r\n\r\nconst persistConfig = {\r\n key: 'root',\r\n version: 1,\r\n storage,\r\n whitelist: [\"featureFlagsSlice\"],\r\n};\r\n\r\nconst combinedReducers = combineReducers({\r\n cacheSettingSlice,\r\n preferencesSlice,\r\n featureFlagsSlice,\r\n sendMessageSlice,\r\n multiComparisonSlice,\r\n exportMessageSliceReducer,\r\n loadingGridSlice,\r\n templateBuilderSlice,\r\n expirationDetailsSlice,\r\n filteredListSlice,\r\n [baseApi.reducerPath]: baseApi.reducer,\r\n});\r\n\r\nconst persistedReducer = persistReducer(persistConfig, combinedReducers);\r\n\r\nconst rootReducer: Reducer = (state: RootState, action: AnyAction) =>{\r\n if (action.type === 'setKeepUnusedDataFor') {\r\n state = {\r\n ...state,\r\n [baseApi.reducerPath]: {\r\n ...state[baseApi.reducerPath],\r\n config: {\r\n ...state[baseApi.reducerPath].config,\r\n keepUnusedDataFor: action.payload\r\n }\r\n }\r\n } as RootState;\r\n }\r\n\r\n return persistedReducer(state, action);\r\n};\r\n\r\nexport const unauthenticatedMiddleware: Middleware = () => (next) => (action) => {\r\n if (isRejectedWithValue(action) && action?.payload?.originalStatus === 401) {\r\n GlobalEventManager.SessionExpired();\r\n }\r\n else if (action?.payload && action.payload.status === 401) {\r\n GlobalEventManager.SessionExpired();\r\n }\r\n return next(action);\r\n};\r\n\r\nexport const store = configureStore({\r\n reducer: rootReducer,\r\n middleware: (getDefaultMiddleware) =>\r\n getDefaultMiddleware({\r\n serializableCheck: {\r\n ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],\r\n },\r\n }).concat(unauthenticatedMiddleware, baseApi.middleware)\r\n});\r\n\r\nexport const persistor = persistStore(store);\r\n\r\nsetupListeners(store.dispatch);\r\n\r\nexport const setCacheLifetimeAction = createAction<number>('setKeepUnusedDataFor');\r\nexport const classDispatch = store.dispatch;\r\nexport type RootState = ReturnType<typeof persistedReducer>;\r\nexport type AppDispatch = typeof store.dispatch;\r\nexport type AppThunk<ReturnType = void> = ThunkAction<\r\n ReturnType,\r\n RootState,\r\n unknown,\r\n Action<string>\r\n>;\r\n\r\ntype Loading = 'LOADING';\r\ntype Idle = 'IDLE';\r\ntype Failed = 'FAILED';\r\nexport type RequestStatus = Loading | Idle | Failed;\r\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".rnc__notification-item {\\r\\n border-radius: 20px !important;\\r\\n margin-top: -45px;\\r\\n}\\r\\n\\r\\n.fadeIn {\\r\\n -webkit-animation: 1s ease-in forwards fadeIn;\\r\\n -moz-animation: 1s ease-in forwards fadeIn;\\r\\n -o-animation: 1s ease-in forwards fadeIn;\\r\\n -ms-animation: 1s ease-in forwards fadeIn;\\r\\n animation: 1s ease-in forwards fadeIn;\\r\\n}\\r\\n\\r\\n.fadeOut {\\r\\n opacity: 0;\\r\\n -webkit-animation: fade-out 4s 1s ease-out forwards fadeOut;\\r\\n -moz-animation: fade-out 4s 1s ease-out forwards fadeOut;\\r\\n -o-animation: fade-out 4s 1s ease-out forwards fadeOut;\\r\\n -ms-animation: fade-out 4s 1s ease-out forwards fadeOut;\\r\\n animation: fade-out 4s 1s ease-out forwards fadeOut;\\r\\n}\\r\\n\\r\\n@keyframes fadeIn {\\r\\n 0% { opacity: 0; }\\r\\n 100% { opacity: 1; }\\r\\n}\\r\\n\\r\\n@-moz-keyframes fadeIn {\\r\\n 0% { opacity: 0; }\\r\\n 100% { opacity: 1; }\\r\\n}\\r\\n\\r\\n@-webkit-keyframes fadeIn {\\r\\n 0% { opacity: 0; }\\r\\n 100% { opacity: 1; }\\r\\n}\\r\\n\\r\\n@-o-keyframes fadeIn {\\r\\n 0% { opacity: 0; }\\r\\n 100% { opacity: 1; }\\r\\n}\\r\\n\\r\\n@-ms-keyframes fadeIn {\\r\\n 0% { opacity: 0; }\\r\\n 100% { opacity: 1; }\\r\\n}\\r\\n\\r\\n@keyframes fadeOut {\\r\\n 0% {\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n opacity: 0;\\r\\n }\\r\\n}\\r\\n\\r\\n@-moz-keyframes fadeOut {\\r\\n 0% {\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n opacity: 0;\\r\\n }\\r\\n}\\r\\n\\r\\n@-webkit-keyframes fadeOut {\\r\\n 0% {\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n opacity: 0;\\r\\n }\\r\\n}\\r\\n\\r\\n@-o-keyframes fadeOut {\\r\\n 0% {\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n opacity: 0;\\r\\n }\\r\\n}\\r\\n\\r\\n@-ms-keyframes fadeOut {\\r\\n 0% {\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n opacity: 0;\\r\\n }\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/WebComponents/NotificationPill.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,8BAA8B;EAC9B,iBAAiB;AACnB;;AAEA;EACE,6CAA6C;EAC7C,0CAA0C;EAC1C,wCAAwC;EACxC,yCAAyC;EACzC,qCAAqC;AACvC;;AAEA;EACE,UAAU;EACV,2DAA2D;EAC3D,wDAAwD;EACxD,sDAAsD;EACtD,uDAAuD;EACvD,mDAAmD;AACrD;;AAEA;EACE,KAAK,UAAU,EAAE;EACjB,OAAO,UAAU,EAAE;AACrB;;AAEA;EACE,KAAK,UAAU,EAAE;EACjB,OAAO,UAAU,EAAE;AACrB;;AAEA;EACE,KAAK,UAAU,EAAE;EACjB,OAAO,UAAU,EAAE;AACrB;;AAEA;EACE,KAAK,UAAU,EAAE;EACjB,OAAO,UAAU,EAAE;AACrB;;AAEA;EACE,KAAK,UAAU,EAAE;EACjB,OAAO,UAAU,EAAE;AACrB;;AAEA;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF;;AAEA;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF;;AAEA;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF;;AAEA;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF;;AAEA;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF\",\"sourcesContent\":[\".rnc__notification-item {\\r\\n border-radius: 20px !important;\\r\\n margin-top: -45px;\\r\\n}\\r\\n\\r\\n.fadeIn {\\r\\n -webkit-animation: 1s ease-in forwards fadeIn;\\r\\n -moz-animation: 1s ease-in forwards fadeIn;\\r\\n -o-animation: 1s ease-in forwards fadeIn;\\r\\n -ms-animation: 1s ease-in forwards fadeIn;\\r\\n animation: 1s ease-in forwards fadeIn;\\r\\n}\\r\\n\\r\\n.fadeOut {\\r\\n opacity: 0;\\r\\n -webkit-animation: fade-out 4s 1s ease-out forwards fadeOut;\\r\\n -moz-animation: fade-out 4s 1s ease-out forwards fadeOut;\\r\\n -o-animation: fade-out 4s 1s ease-out forwards fadeOut;\\r\\n -ms-animation: fade-out 4s 1s ease-out forwards fadeOut;\\r\\n animation: fade-out 4s 1s ease-out forwards fadeOut;\\r\\n}\\r\\n\\r\\n@keyframes fadeIn {\\r\\n 0% { opacity: 0; }\\r\\n 100% { opacity: 1; }\\r\\n}\\r\\n\\r\\n@-moz-keyframes fadeIn {\\r\\n 0% { opacity: 0; }\\r\\n 100% { opacity: 1; }\\r\\n}\\r\\n\\r\\n@-webkit-keyframes fadeIn {\\r\\n 0% { opacity: 0; }\\r\\n 100% { opacity: 1; }\\r\\n}\\r\\n\\r\\n@-o-keyframes fadeIn {\\r\\n 0% { opacity: 0; }\\r\\n 100% { opacity: 1; }\\r\\n}\\r\\n\\r\\n@-ms-keyframes fadeIn {\\r\\n 0% { opacity: 0; }\\r\\n 100% { opacity: 1; }\\r\\n}\\r\\n\\r\\n@keyframes fadeOut {\\r\\n 0% {\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n opacity: 0;\\r\\n }\\r\\n}\\r\\n\\r\\n@-moz-keyframes fadeOut {\\r\\n 0% {\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n opacity: 0;\\r\\n }\\r\\n}\\r\\n\\r\\n@-webkit-keyframes fadeOut {\\r\\n 0% {\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n opacity: 0;\\r\\n }\\r\\n}\\r\\n\\r\\n@-o-keyframes fadeOut {\\r\\n 0% {\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n opacity: 0;\\r\\n }\\r\\n}\\r\\n\\r\\n@-ms-keyframes fadeOut {\\r\\n 0% {\\r\\n opacity: 1;\\r\\n }\\r\\n 100% {\\r\\n opacity: 0;\\r\\n }\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 44009;","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!./NotificationPill.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};"],"names":["outlookNavigateReact","Key","OnTrigger","url","notify","FireNavigationEvents","location","PushOutlookSubscription","outlookDpiSetting","dpi","ProfileManager","SetDpi","Number","parseFloat","AuthContextWrapper","_ref","children","React","PMLoadingContextProvider","PMNavButtonLoadingContextProvider","PMNotificationsContextProvider","BrandThemeContextProvider","PMWarningContextProvider","UnAuthContextWrapper","_ref2","ReduxContextProvider","store","PersistGate","loading","persistor","PMPortalContextProvider","RoleContextProvider","Entry","portal","PMPortalContext","isAuth","RoleContext","outlookConnectionStyle","display","window","href","startsWith","RouteBase","InitChromie","render","PMPortalType","unresolved","outlook","App","async","WebApp","style","height","id","onChange","FocusOutlook","type","e","OutlookListener","currentTarget","value","fallback","PMProgressIndicator","RenderIndex","BenchmarkData","SentYear","Industry","OpenRate","IgnoreRate","AudienceAttentionRate","SkimmedRate","ReadRate","EngagedReadRate","OpenAttentionRate","LeftOpenRate","OpenEngagementRate","PercentRead","ClickRate","EffectiveRate","getBenchmarkItems","onItemClick","primaryIndustry","secondaryIndustry","uniqueIndustry","Set","map","item","filter","i","idx","toUpperCase","items","push","key","text","itemType","ContextualMenuItemType","Header","slice","forEach","industry","subMenuProps","ev","it","props","_extends","viewBox","d","fill","version","xmlns","x","y","enableBackground","xmlSpace","className","width","fillPrimary","fillSecondary","WarningIcon","getTheme","transform","fontSize","fontFamily","cx","cy","r","stroke","preferencesService","PreferencesPagesODataService","appSettingsService","AppSettingsODataService","GetAllPreferences","GetAll","Exec","UpdatePreference","preference","Patch","PreferenceId","UpdatePreferenceByType","preferenceType","preferenceValue","PreferenceValue","SaveAllowedLists","allowedList","deletedListIds","allowedListTasks","length","indexOf","WhiteListFromService","WhiteListFromsODataService","wlAddress","whiteListFrom","Email","Post","df","Delete","GetAllowedSendModes","AllowedSendModes","profile","GetGlobalProfile","IndividualAvailable","AnonymousAvailable","AggregateAvailable","GetInboxes","outlookProfile","handle","ServerInfosODataService","GetWatchFolders","then","inboxes","Keys","index","name","Values","selected","AddInbox","CommunicateToOutlook","DeleteInbox","DeleteWatchFolder","GetDefaultCampaign","Get","PreferencesTypes","DefaultCampaignId","GetActionableOriginator","ActionableOrganizer","GetEmbedImages","EmbedImages","GetOverrideWordCountEnabled","GetAppSetting","GetSupportedImageTypes","GetGreeting","Greeting","GetDefaultTracking","MeasurementDefault","NumberToTrackingMode","mode","PMTrackingMode","IndividualTracking","AnonymousTracking","AggregateTracking","Default","ClearEWSCredentials","ClearGridSettings","ColumnOrdersODataService","ClearAllGridSettingsByUser","ClearEWSCache","EWSCacheODataService","GetMapiExpansion","ForceScanForInboxes","PMCache","constructor","lifeTimeInMinutes","service","this","Date","now","DateExpired","getTime","NetworkGet","Promise","resolve","CurrentCache","data","dateReceived","setMinutes","getMinutes","UsersCache","super","UsersODataService","UsersCacheInstance","PMSearchBox","setFilter","clearAction","searchText","setSearchText","theme","border","font","padding","PMTextField","placeholder","_","newValue","onKeyPress","which","onRenderPrefix","Icon","iconName","onClick","onRenderSuffix","styles","prefix","backgroundColor","semanticColors","inputBackground","cursor","suffix","wrapper","margin","root","field","fieldGroup","borderless","ignoreBase","ExportFormat","RenderSearchBox","selection","loadingGridProgress","useSelector","state","loadingGridSlice","filterString","setFilterString","dispatchLoading","useDispatch","gridIsInitiallyLoading","IsInitiallyLoading","setAllSelected","RenderToggleButton","labelTitle","defaultChecked","onText","offText","Toggle","inlineLabel","label","onChangeToggleValue","event","checked","NativeOdataServiceBase","ExecCustomCollectionAction","checkWhiteList","Enabled","settings","dispatch","baseApi","util","invalidateTags","RTKQueryTags","AppSetting","AppSettings","Value","BusinessesODataService","CampaignsODataService","CampaignId","ExecCustomAction","SentMessageIds","Ids","idCollection","campaigns","model","OwnerID","BusinessID","RegionID","Shared","Description","Name","ActiveState","query","init","CustomGetWithFilter","ExecCustomGet","dateRange","Id","ID","campaignId","dataQuery","request","authenticatedAxios","get","encodeURI","hostname","ODataServerRoute","ContactsODataService","email","contact","FirstName","LastName","DisplayName","StageID","Company","WebAddress","Title","Notes","ListIDs","ListID","join","MobileNumber","FaxNumber","HomeNumber","Address1","Address2","City","StateOrProvince","PostalCode","ClientCountry","contact_id","custom_values","contactId","customValues","listIds","ListIds","org","toString","ContactID","searchString","CustomGetAllWithPostDataAndFilter","Search","queryString","fieldName","FieldName","GetContactPropertyNamesToValidateAgainst","CustomFieldsODataService","GetAllWithFilter","fieldID","convertToType","FieldID","ConvertToType","FiltersODataService","FilterId","v","IncludeList","ExcludeList","listId","values","ListFiltersODataService","HandleBadRequest","error","Response","status","catch","ListFilterSerializer","ListFilterPreviewSerializer","QueryFactory","select","count","toQuery","listID","ExecCustomGetWithParam","listIDs","__type","tokens","split","ListsODataService","hierarchyEmail","ListId","ContactIds","contacts","merge_ids","list_id","body","destination_list_id","intersect_ids","exclude_ids","uncommon_ids","subtract_ids","source_list_id","list_name","new_list_id","start","stop","excludedContactsList","cacheId","CustomGetRelWithFilter","RegionsODataService","startDate","endDate","Axios","create","withCredentials","post","entitySetUrl","sendId","StagesODataService","TagsODataService","groupId","group_id","TemplateODataService","tagId","includeBody","arguments","undefined","TemplateId","tagName","tag","TemplatePiecesODataService","section","Section","TemplateThemesODataService","entity","Put","result","TemplateTheme","ExecCustomCollectionFunction","TemplatesODataService","userId","UpdateOrCreateUser","user","AuthenticationType","UserType","Phone","Cell","Password","PasswordReset","RequirePasswordReset","SendSetUpEmail","LastLogin","Fax","WindowsAccount","DeleteUsersByID","userIDs","search","Mode","GetUsersExpansionModes","SetUsersExpansionModes","activeModes","GetReturnPath","SaveReturnPath","returnPath","ReturnPath","VerificationFromInfosODataService","DayOfTheWeek","ODataOperation","Expand","_expand","parseStringOrStringArray","Select","_select","_len","input","Array","_key","ODataGetOperation","evaluate","ODataFilterExpression","getFilterValueSegment","castedValue","test","filterBuilderRef","Finialize","filterSegments","ODataFilterConnection","Equals","NotEquals","GreaterThan","GreaterThanOrEquals","LessThan","LessThanOrEquals","Has","Not","build","builder","ODataFilterBuilder","Create","BuildFilter","And","Or","s","ODataQuery","buildQueryUrl","_filter","_top","_skip","_orderBy","_evaluate","Filter","Top","top","Skip","skip","OrderBy","queryUrl","ODataServiceAbstract","getEntityUriSegment","entityKey","contentType","credentials","headers","token","columns","EXCEL","CSV","requestInit","excelExportInit","csvExportInit","ODataContext","ODataRootPath","entitySetUrlSegment","entityUri","extractResponse","extractResponseWithCount","actionName","entityId","getUriForEntity","getCustomRequest","method","customSerializer","JSON","stringify","defaultInit","ODataQueryBuilder","AuthorizeHeader","getCustomRequestSimple","postData","reqInit","GetWithFilter","Query","functionName","getExportName","extension","PMHistory","GetBottom","response","blob","csvLines","c","columnNames","Map","originalName","modifiedCsvText","Blob","buffer","arrayBuffer","workbook","Excel","xlsx","load","header","worksheets","getRow","cellCount","eachCell","cell","colNumber","commit","clearThemes","writeBuffer","initReq","fetch","GlobalEventManager","SessionExpired","ok","ODataError","json","Count","remapExcelResponse","navigator","msSaveBlob","Download","URL","createObjectURL","remapCSVResponse","reject","message","statusText","CategoriesODataService","ContactReadsODataService","ImagesODataService","ImageId","image","ContentType","Data","Privacy","Dimensions","overlayImage","baseImage","overlayedImage","imageName","LinksODataService","LinkId","linkName","Url","OptInsODataService","settingsId","fields","OptOutsODataService","useSubscription","enabled","ParagraphsODataService","ParagraphId","newParagraph","paragraph","ReadsODataService","ScheduledSendsODataService","ScheduledSendId","scheduledSends","SmartAttachmentsODataService","SmartAttachmentId","SocialMediaLinksODataService","SocialLinkId","requestBody","StartDate","EndDate","SurveysODataService","SurveyIds","isArray","SurveyAllowedAnswersODataService","SurveyQuestionsODataService","GroupLabelsODataService","SentMessagesODataService","SentMessageId","SegmentName","ids","nSublistName","baseList","sentmessages","sentMessageID","messageId","SentMessageGuid","Tag","TagGroupId","messageGuid","OldTag","sentMessageId","linkId","ActionId","reportTypeID","messageIds","ExecCustomFunction","newCount","htmlBody","textBody","messageGUID","MessageGUID","responseType","UserProfilesODataService","migrateId","deleteId","MigrateId","DeleteId","UserTypesODataService","ContactClicksODataService","ContactRepliesODataService","RepliesODataService","SublistStatsODataService","ExecCustomGetWithData","UsersWithStatsODataService","senderIds","FromWithStatsODataService","fromIds","ContactOptOutsODataService","ContactOutOfOfficesODataService","ContactUndeliverablesODataService","OutOfOfficesODataService","UndeliverablesODataService","parse","CustomValuesODataService","fieldId","UserFromsODataService","WebConfigsODataService","ContactAttributesODataService","BulkEditsODataService","MeetingRecipientsODataService","MeetingRecipientId","AllowedDomainSubscriptionsODataService","PublicValuesODataService","PATSODataService","PATFormModel","TagGroupsODataService","tagGroup","newTagGroup","GroupName","Required","Predefined","Caption","postItem","required","predefined","caption","OptOutPagesODataService","PasswordRulesODataService","DataValidationResultsODataService","Content","ListType","ListTypesDropdown","Object","entries","listType","ValidationResult","ErrorMessageForValidation","BadEmail","BadUri","MaxLength","MinLength","Valid","NaN","EmailExists","DuplicateListName","GetErrorMessageForValidationResult","propName","validationResult","ValidateProperties","properties","IsEmail","IsValidEmail","IsLink","IsValidUri","IsFile","CustomValidationMethod","String","toLowerCase","str","protocol","WebPortalRouteBase","points","GridName","ColumnDataType","DefaultColumnWidth","GetUserGridColumnSettings","gridName","defaultGridColumnSettings","columnOrdersODataService","userGridPreferences","GetColumnOrderByNameAndUser","userGridColumnSettings","col","userGridPreference","dataType","Hidden","isRequired","useDefault","showByDefault","priority","minWidth","calculatedWidth","w","currentWidth","isHidden","GridColumnSharedEntity","defineMinWidth","letterSize","addMultiplicity","denominator","Math","trunc","getNameColumnContentWithSharedIcon","columnEntity","columnName","title","getSharedIcon","paddingLeft","Campaign","CampaignSharedSvg","Template","TemplateSharedSvg","Paragraph","ParagraphsSharedSvg","Image","ImagesSharedSvg","BrandTheme","BrandThemeSharedSvg","Link","LinksSharedSvg","SmartAttachment","SmartAttachmentsSharedSvg","Contact","SvgShareBlue","MsgExpirationFieldsEnum","MailingListsGridColumns","isResizable","editable","canSort","canFilter","Smaller","maxWidth","Large","Small","isSorted","isSortedDescending","XSmall","Medium","IsNewsLetter","Percentage","User","Region","Business","Boolean","ModifiedByUser","expandPropertyName","MillisecondToSecond","ReportMailingListsGridColumns","ContactsGridColumns","XLarge","TimeZone","ContactsOpensGridColumns","ContactsReadGridColumns","ContactsMainGridColumns","ContactSentGridColumns","OptOutContactsGridColumns","UndeliverableContactsGridColumns","UndeliverableGridColumns","OptOutGridColumns","TemplatesGridColumns","onRender","Tags","ParagraphsGridColumns","ImagesGridColumns","Thumbnail","SizeKB","LinksGridColumns","SmartAttachmentGridColumns","CampaignResultsGridColumns","validateDuplicate","CampaignsGridColumns","DraftsGridColumns","maxDate","isKey","EmailRecipient","ClicksGridColumns","Latitude","Longitude","CustomFieldsGridColumns","ScheduledSendsGridColumns","SendStatus","ScheduleSendDate","EXPIRATION_DATE","ExpirationDate","MessagesGridColumns","relatedFieldName","SendModeSubject","Smallish","SentVia","Campaigns","overflow","MessageType","PreFlight","SendMode","EmailFromGridColumns","SenderGridColumns","SocialLinkGridColumns","QRCode","UsersGridColumns","PMPermission","FromPermissionsGridColumns","PMPersonPillSingle","PMPersonPillMulti","PATGridColumns","displayRawValue","Revoked","BrandThemesGridColumns","LastSentGridColumns","RecentInteractionsGridColumns","ResponseSvg","LicenseComplianceGridColumns","ReportLinksColumns","comparisonColStyle","gripperBarVerticalStyle","cellTooltip","cellTitle","cellName","iconClassName","nearIcon","accessibleLabel","sortIcon","filterChevron","borderAfterDropping","noBorderAfterDropping","borderWhileDragging","noBorderWhileDragging","ComparisonColumns","LinkStatsColumns","XXLarge","tooltip","IndividualLinkStatsColumns","SegmentationLinkStatsColumns","TagGroupsGridColumns","OpensGridColumns","ReadsGridColumns","RepliesGridColumns","SegmentationGridColumns","ContactClicksGridColumns","NulllableNumber","BenchmarkGridColumnDefinitions","PageNames","TemplatePageNames","PMPermissions","GetPermissionFriendlyName","permission","SystemAdministrator","Administrator","Manager","Unauthenticated","PMRole","CampaignsPanelColumns","LinksPanelColumns","BigString","MailingListsPanelColumns","disableEditableTooltip","entityType","IsNewFeatureFilteredList","SubscriptionDisabledTooltip","VerificationInfo","SmartAttachmentsPanelColumns","SocialLinkPanelColumns","ScheduledSendsPanelColumns","DatePicker","Custom","Switch","MESSAGE_TEXT","LINK_ID","ContactsPanelColumns","PhoneNumber","Country","TemplatesPanelColumns","ParagraphsPanelColumns","CustomFieldsPanelColumns","PATPanelColumns","Heatmap","DateHover","BrandThemesPanelColumns","MessageExpirationFieldNamesEnum","PMBaseStyle","userSelect","PMCompactBaseStyle","MergeStyles","baseStyle","specificStyle","isSpecificFunction","baseRoot","specificRoot","nRoot","propValues","keys","val","propKeys","propVals","ConvertToCSSProperties","valueOf","VerticalSpacing","marginTop","HeaderTextStyles","color","palette","themePrimary","FontSizes","size20","BoldBlueTextStyles","fontWeight","PanelHeaderTextStyles","bodyText","_PMPageBottomPaddingBaseStyles","paddingBottom","_PMCheckboxBaseStyles","neutralPrimary","_PMLabelBaseStyles","size14","neutralSecondary","_PMLabelDescription","_PMCompactLabelDescription","_PMCompactLabelBaseStyles","_PMLabelBoldBaseStyles","_PMLabelInlineBaseStyle","paddingTop","verticalAlign","_PMBreadCrumbBannerStyles","flexDirection","PMCheckboxBaseStyles","PMBalanceCompactCheckboxBaseStyles","PMCompactCheckboxBaseStyles","PMButtonBaseStyles","PMTextFieldBaseStyles","_PMTextFieldBaseStyles","lineHeight","PMCalloutBaseStyles","PMChoiceGroupBaseStyles","PMDialogBaseStyles","whiteSpace","PMDropDownBaseStyles","callout","maxHeight","overflowY","PMFormGridBaseStyles","PMLabelBaseStyles","PMLabelDescription","PMCheckboxLabelDescription","PMCompactLabelBaseStyles","PMCompactLabelDescription","PMLabelBoldBaseStyles","PMLinkBaseStyles","PMListBaseStyles","PMShimmeredDetailsListBaseStyles","PMTagPickerBaseStyles","PMToggleBaseStyles","PMCommandBarStyles","PMDatePickerStyles","useGetBusinessAndRegionDropdowns","regions","regionsApiHooks","useGetRegionsQuery","dropDownRegions","sort","a","b","localeCompare","region","businesses","businessesApiHooks","useGetBusinessesQuery","dropDownBusinesses","business","createTheme","themeLighterAlt","themeLighter","themeLight","themeTertiary","themeSecondary","themeDarkAlt","themeDark","themeDarker","neutralLighterAlt","neutralLighter","neutralLight","neutralQuaternaryAlt","neutralQuaternary","neutralTertiaryAlt","neutralTertiary","neutralPrimaryAlt","neutralDark","black","white","lightTheme","inputBorder","buttonBorder","smallInputBorder","defaultBrandTheme","Background","BodyBackground","BodyColor","BodyFont","BodyFontSize","BodyFontStyle","BusinessName","ButtonBackground","ButtonColor","ButtonFont","ButtonFontSize","ButtonFontStyle","Centering","ColumnBackground","ColumnColor","ColumnFont","ColumnFontSize","ColumnFontStyle","CreationDate","FooterBackground","FooterColor","FooterFont","FooterFontSize","FooterFontStyle","LinkUnclickedColor","LinkVisitedColor","LinkActiveColor","HeaderBackground","HeaderColor","HeaderFont","HeaderFontSize","HeaderFontStyle","IsDefault","RegionName","SubheaderBackground","SubheaderColor","SubheaderFont","SubheaderFontSize","SubheaderFontStyle","ThemeColors","SocialStyleID","SocialStyleName","SocialStyleHtml","TitleTextColor","TitleTextFont","TitleTextFontSize","TitleTextFontStyle","SubtitleTextColor","SubtitleTextFont","SubtitleTextFontSize","SubtitleTextFontStyle","ParagraphTextColor","ParagraphTextFont","ParagraphTextFontSize","ParagraphTextFontStyle","FooterTextColor","FooterTextFont","FooterTextFontSize","FooterTextFontStyle","GetParsedBool","inputVal","inputType","GetGridColForParsedBool","colDataType","parsedVal","GetPMIcon","PMIconTypes","Check","X","TestSendIcon","NONCE_SEPARATOR","serverStoredNonce","GetHostDispatch","chrome","webview","hostObjects","HostDispatch","console","log","doesMessageContainNonce","includes","appSettingService","enforceOriginValidation","addEventListener","eventData","clientNonce","doesClientNonceMatchServerNonce","MapToIDropDownProps","ddOptions","MAX_OFFICE_FILENAME_LENGTH","EXCEL_CELL_MAX_LENGTH","DownloadFile","contentTypeStr","subtype","contentDispStr","proposedFileName","prop","obj","DISPLAY_NAME_FOR_PROPERTY","ExportToCsv","filename","rows","columnDefinitions","colsToExport","cols","colKeys","csvContent","row","k","toLocaleDateString","replace","ExportToWord","html","fileName","CreateCanvasFromWord","elements","nextLine","setPercentage","defaultSize","divElement","document","createElement","scrollTo","scrollHeight","documentElement","html2image","cssEmbedStyles","getFontEmbedCSS","RegExp","el","canvas","toCanvas","fontEmbedCSS","img","scrollWidth","ratio","src","toDataURL","cssText","appendChild","ExportReportToCsv","excludedKeys","rowValues","moment","isValid","toDate","assign","headersRow","Subject","substring","reportValues","ExportToExcel","reportData","keyDescriptions","sheet","addWorksheet","findValueByKey","findIndex","findKeyByIndex","sheetColumns","columnKeys","addRow","isNaN","LinkStats","sheetName","nSheet","getOwnPropertyNames","p","rowData","_ref3","CreateExcelSheet","column","maxLength","getColumn","includeEmpty","columnLength","alignment","horizontal","ExportCompareToExcel","reportData1","reportData2","rData1","rData2","value1","value2","ExportQR","err","svgString","link","download","open","visibility","click","isMSOfficeFilenameValid","isFilenameValid","QueryBit","queryType","OrderByQueryBit","_field","_direction","QueryType","SelectQueryBit","FilterQueryBit","_value","_operator","_columnDataType","filterType","columnDataType","FilterLogic","_conditions","conditions","operator","queryBits","sqlFilterObject","orderBy","direction","removeQueryBitsWithType","appendSelect","clone","clonedQueryFactory","queryBit","filterObject","filterQueryBit","removeSelectValues","bit","splice","clearSelect","clearTop","getNext","startIndex","amount","getSkip","skipQB","find","qb","match","substr","skipValue","parseInt","clearSkip","expand","filterContains","FilterType","Contains","searchFilter","removeFilterBitByType","searchFilterLogic","clearSearch","forceFilter","IsTrue","filterEqualsNumber","EqualsNumber","filterEqualsBoolean","EqualsBoolean","filterEqualsString","EqualsString","filterGreaterThan","filterLessThan","filterGreaterThanOrEqual","GreaterThanOrEqual","filterLessThanOrEqual","LessThanOrEqual","logic","removeConditionByField","removeConditionLoop","condition","isEmpty","_logic","removeConditionByFieldAndValue","removeConditionByValueLoop","removeFilterBitLoop","filterObj","getExportQueryString","exportQuery","SetQueryBits","GetQueryBits","SetFilter","GetFilter","orderByBits","expandBits","selectBits","sf","parseOrderBy","trim","parseExpand","parseSelect","initialConditions","modifyDecimalValue","parseFilters","normalEqValue","normalGeValue","normalGeEValue","normalleValue","normalleEValue","newCriteria","SecondsToMilliseconds","parts","joined","filterBit","bitFilter","replaceAll","CustomField","NotEqualsNumber","MatchWholeString","EqualsDate","toISOString","GreaterThanDate","add","GreaterThanOrEqualDate","LessThanDate","LessThanOrEqualDate","In","HasInvalidData","bits","ClearQuery","FilterIsLogic","SetSQLSearchFilter","GetSQLSearchFilter","rest","overrideQuery","formatFilterBit","format","checkFieldCountCompatibility","arr","from","GetDistinctElementCounts","some","SetSQLFilterObject","doSQLFilterParse","CheckSQLSearchCompatibility","sql","unsupportedSQLSearchFilterTypes","set","FilterTypeHelper","filterTypeEnum","unSupportedSQLSearchFilterTypes","groupLabelsApiSlice","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","getGroupLabels","transformResponse","providesTags","_result","_error","_args","GroupLabel","useGetGroupLabelsQuery","AssignGlobalProfile","handler","globalProfilePromise","getGlobalProfile","initiate","GlobalProfile","Language","language","usersApiSlice","getCurrentUser","curUser","UserID","AccountType","aliases","RegionAlias","Label","BusinessAlias","finally","unsubscribe","SaveGlobalProfile","globalProfileModel","setGlobalProfile","fName","lName","phone","Mobile","mobile","fax","company","address1","address2","city","State","Zip","zip","country","_response","SetRegionAlias","SetBusinessAlias","CreateDefaultBaseContact","List","CategoryID","LastChangedDate","LanguagePreference","ContactTimeZoneInfo","Days","Weekday","WorkDays","DayStart","DayEnd","SetTrackingModeAvailable","trackingMode","isAvailable","GetDpi","ParentNode","Location","ChangeEvents","Push","NextNode","GetTop","node","GetByLink","GetNodeWithLocation","DeleteLocation","Reset","DeleteTier","tier","currentTier","AddListener","Order","LocalStorageEnabled","LocalStorageGet","StorageKeys","PMToken","baseURL","addFilter","property","modelName","filters","addOrderBy","order","buildQuery","buildQueryString","buildFilterString","buildOrderByString","buildFilter","orderByString","buildOrderBy","substringof","Ascending","Descending","action","CommunicateToAddin","outlookConnection","getElementById","nativeInputValueSetter","getOwnPropertyDescriptor","HTMLInputElement","prototype","call","ev2","Event","bubbles","dispatchEvent","focus","OutlookSubscription","inputInfo","RemoveOutlookSubscription","UnlockLockIcon","iconType","New","Compare","TrashRed","MailingList","ImageAdd","Reload","Sharing","Share","Recipient","RecipientImport","UserAuth","Sent","Metrics","Results","TagEmpty","AddLink","LinkAdd","PreviewSend","PreviewTestSend","Save","ShareBlue","NotShared","CheckGreen","XRed","DesktopGray66","MobileGray66","ProxyGray66","SentAggregate","SentAnonymous","SentIndividual","Stars","SimpleSurvey","SurveyStar","SurveyStarGrey","YesCheckmarkBlueBox","YesGrey","NoCheckmarkBlueBox","NoGrey","MaybeCheckmarkBlueBox","MaybeGrey","One","Two","Three","A","B","C","TimeToRead","RequestSupport","Lock","LockIcon","Unlock","TimeToWatch","Queued","Sending","Disabled","Error","Processing","Expired","ExpiringSoon","_isDirty","_isDirtyPanel","_isExport","_isDoingAction","_onDirtySet","_dirtyNavigation","_dirtyPanels","_gridEvents","_pageEvents","SetIsDirty","isDirty","SetPanelDirty","GetDirty","GetDirtyPanel","SubscribeNavigationEvent","RemoveDirtyNavEvent","SubscribePanelEvents","RemoveDirtyPanelEvent","navOk","de","FirePanelEvents","setIsPanelOpen","dp","SetIsExporting","exporting","SubscribeGridEvents","RemoveGridEvents","SubscribeEventWithMessage","ExecuteEventWithMessage","ge","FireGridEvent","GetExporting","IsDoingAction","SetIsDoingAction","actioning","ManageRelPanel","setRelAction","setPanelOpen","okDeleteEntity","actions","IDList","getSelection","bulkDelete","delete","canDoAction","onFalseWarning","Show","emptyAction","WarningDisplay","warningState","dialogType","PMNotificationType","Ok","PMOkDialog","hidden","warningTitle","warningText","onDismiss","onButtonClick","buttonText","okText","modalProps","isBlocking","OkCancel","PMConfirmationDialog","cancelClick","cancelText","YesNo","PMYesNoDialog","MarkPageAsDirty","setSaved","MarkPanelAsDirty","warningReducer","previousState","payload","onOkAction","onCancelAction","showWarning","uuid4","uuidv4","uuidToBase64","uuid","btoa","escapeRegExp","getEngagedReadTime","timeToRead","asMilliseconds","getSkimmedTime","getIgnoredTime","getDidntOpenTime","hexToRGB","hex","alpha","g","formatDuration","milliseconds","startOf","formatFullDuration","SendModeToString","sendmode","SimpleQuestionTypes","imageAreaString","area","factors","n","nRounded","round","getFactors","dim1","floor","dim2","isNullOrUndefined","toLocaleString","convertReachObjectsToSeries","metrics","returnObj","OpenCount","IgnoreCount","SentCount","MinutesSent","MinutesRead","EngagedReadCount","ClickCount","DesktopClickCount","MobileClickCount","DesktopOpenCount","MobileOpenCount","UserProxyOpenCount","SkimmedCount","LeftOpenCount","ReadCount","UndeliverableCount","metric","addDummyHourOfDay","hourOfDayReadsResult","withValue","minHour","maxHour","minUTCHour","hourOfDayReadsFinal","currentDate","date","Hour","localHour","getHours","utcHour","getUTCHours","saved","getUTCFullYear","getUTCMonth","minimumIntegerDigits","getUTCDate","padStart","TimeRead","getGreaterCount","count1","count2","seconds","TimeType","GetTimes","times","MinimumYear","FormatTimeToRead","ttr","time","formatArg","asSeconds","asMinutes","asHours","convertMsToTime","totalSeconds","hours","remainingSeconds","minutes","IsDate","BrandThemeContext","templateThemes","isLoading","isLoadingTemplateThemes","templateThemesApiHooks","useGetTemplateThemesQuery","brandTheme","setBrandTheme","selectedBrandTheme","handleSetBrandTheme","current","selectedTheme","thm","defaultTheme","Provider","useBrandTheme","useContext","PMBusinessDropdown","DefaultSelectedKey","PMDropDown","disabled","showLabel","defaultSelectedKey","options","selectedID","businessID","Handler","phoneBoxStyles","inputBoxStyles","position","PMPhoneInput","inputValue","setInputValue","borderRadius","borderColor","formatPhoneNumber","fromInput","phoneNumber","target","phoneNumberLength","FormattedNumber","dir","portalRouteBaseName","setPortal","setPortalRouteBaseName","getPortalContext","routeStub","isWeb","web","usePMPortalContext","PMRegionDropdown","regionID","publicValuesApiSlice","getDefaultLoginType","doBasicLogin","mutation","args","bearerToken","parent","LocalStorageSet","axios","defaults","common","doLogout","LocalStorageRemove","useGetDefaultLoginTypeQuery","useDoBasicLoginMutation","useDoLogoutMutation","publicValuesApiHooks","role","loginMode","AuthModes","NotSet","setIsAuth","handlePasswordLogin","handleLogout","handleLogoutAftPassReset","defaultLoginType","isLoadingDefaultLoginType","isError","isErrorDefaultLoginType","defaultLoginTypeError","currentUser","isLoadingCurrentUser","isErrorCurrentUser","isUninitialized","isUninitializedCurrentUser","refetch","refetchCurrentUser","usersApiHooks","useGetCurrentUserQuery","basicLogin","_isLoadingBasicLogin","_isErrorBasicLogin","setRole","setLoginMode","redirect","setRedirect","username","password","kmsi","unwrap","res","errorText","alert","originalStatus","offset","getTimezoneOffset","timezone","exec","setTimeZone","useRoleContext","PMUserDropdown","usersODataService","useRef","isLoaded","setIsLoaded","useState","dropDownUsers","setDropDownUsers","useEffect","doUseEffect","getUserIDs","users","userID","FromIdComboSelectMode","PMFromIdComboBox","fromIdOptions","currentSelectedFromId","selectionMode","onPendingValueChanged","errorMessage","PMComboBox","autoComplete","allowFreeform","Any","selectedKey","handleInputChange","option","handlePendingValueChanged","FromValidationMode","intitialFormData","UserId","FromId","PMVerificationInfoForm","verInfoState","verInfoDispatch","VerificationInfoContext","verificationInfoService","userProfile","fromValidationMode","setFromValidationMode","Strict","fromAddressOptions","setFromAddressOptions","hideFroms","setHideFroms","fromKey","setFromKey","lifeTimeInMinutesData","useGetAppSettingByKeyQuery","process","validateFrom","validateFromAreLoading","appSettingsApiHooks","GetAppSettingByKey","userFroms","userFromsAreLoading","userFromsApiHooks","useGetGetUserFromsQuery","allUserFroms","allUserFromsAreLoading","useGetAllUserFromsQuery","theirFroms","theirFromsAreLoading","typeTimeout","GetInstance","u","getInitialVerificationInfo","Managed","None","uniqueFroms","f","userFrom","info","Types","UpdateFormData","op","useCallback","infoObj","ProfileId","SetFormData","selectedOption","o","dbOptions","m","t","useDropDown","isVisible","GetFromAddressesWithPermission","handleProfileChange","Restricted","handleFromAddressChange","handleFromAddressValueChange","clearTimeout","setTimeout","addresses","initialState","saveCallback","verificationInfoReducer","UpdateProfile","PanelUpdateCallback","IsNewsletter","ClearFormData","VerificationInfoProvider","userFromService","createdFrom","PMDatePicker","PMTimePicker","PMColStyle","PMGridCol","columnResizing","uniqueKey","PMRowStyle","PMGridRow","ref","DisabledFilteredListTooltip","defaultStats","ContactsAdded","ContactsUnchanged","ContactsRemoved","FilteredListPage","allLists","listApiHooks","useGetListsQuery","filterFields","isFilterFieldsLoading","listFiltersApiHooks","useGetFilterableFieldsQuery","listFilter","isFetching","listFilterFetching","useGetListFilterForListQuery","isRegionsLoading","isBusinessesLoading","isUsersLoading","useGetUsersQuery","stages","isStagesLoading","stagesApiHooks","useGetStagesQuery","timezones","isTimezonesLoading","ContactsApiHooks","useGetTimezonesQuery","circularDependencyLists","useGetCircularDependencyListsQuery","filterLimit","isPreviewLoading","setIsPreviewLoading","listFilterPreview","setListFilterPreview","warningMessage","setWarningMessage","isSaving","setIsSaving","listFilterService","customValuesOdataService","contactsService","mappedIdDropdowns","setMappedIdDropdowns","searchedDropdownFields","setSearchedDropdownFields","hiddenNameDialog","setHiddenNameDialog","navLocation","setNavLocation","isConfirmed","setIsConfirmed","setIsDirty","unsavedChangesConfirmationOpen","setUnsavedChangesConfirmationOpen","currFilter","filteredListSliceState","useAppSelector","filteredListSlice","useAppDispatch","RefreshContactCacheIfNeeded","listOptions","excludeCurrentList","list","allListWOCurrent","circularList","gridBitsToConvert","CreateListFilterExpression","listFilterExpression","setGridBitsToConvert","prev","allRegions","ContactFilterFieldType","allBusinesses","allUsers","allStages","stage","allTimezones","dbTZ","toLocaleLowerCase","getCircularListWarning","isPreview","listName","_onSetDirty","dirty","handleNavigateAnotherPage","pathname","_handleLoadFilterStats","filterExpression","currentListFilter","ListFilterExpression","PreviewListFilter","preview","CircularDependencyListID","RegexTimeout","_goBack","setShowPage","_searchForValue","filterField","IsCustomValue","CustomFieldId","SearchCustomValuesForField","currentSearchedDropdownFields","newDropdownFields","fieldIndex","searchOptions","TopXValues","cv","SearchContactPropertiesForValue","_onSavePreviewValidationFailed","Store","addNotification","insert","container","animationIn","animationOut","dismiss","duration","onScreen","content","PMNotificationPill","alertType","_onSave","modifiedListFilter","PatchListFilter","responseAsNumber","ListFilter","nameEnteredClick","updatedFilteredList","newListFilter","PostWithTypes","object","nameCancelClick","closeUnsavedChangesConfirmation","continueUnsavedChangesConfirmation","Prompt","when","PMEditListNameDialog","handleCloseDialog","onSaveListNameOverride","filteredList","Spinner","size","SpinnerSize","large","PMFilteredListDisplay","loadedFromAPI","incomingExpression","filteredListStats","filterableFields","mappedIdOptions","onSetDirty","searchForProperties","onBackArrowClicked","onSaveFilteredList","onSavePreviewFilteredListInvalid","onPreviewFilteredListClicked","areFilterFieldsLoading","DialogType","normal","TagsEntityEditControl","selectedTags","setSelectedTags","originalTags","setOriginalTags","tagOptions","setTagOptions","tagsService","entityService","setAllTagOptions","setEntityService","setExistingTagsForEntity","EntityName","EntityId","tags","GetTags","PMTagPicker","onResolveSuggestions","onFilterChanged","filterText","tagList","filteredSuggestions","toLocaleUpperCase","selectedItems","onItemSelected","group","AddTag","HasTagsHandler","onRemoveItem","RemoveTag","PMDefaultButton","DefaultButton","PMMailButton","PMMailButtonStyles","rootHovered","PMPrimaryButton","PrimaryButton","PMSaveButton","buttonProps","Saved","IsSaving","small","PMCheckbox","Checkbox","boxSide","onRenderLabel","onCustomRenderLabel","PMLabel","PMLabelProps","ComboBox","mergeStyleSets","optionsContainer","PMComboBoxWithTooltip","currTooltip","setCurrTooltip","selectedItemChanged","DataType","TooltipHost","PMDialog","Dialog","dialogContentProps","closeButtonAriaLabel","subText","PMDialogFooter","PMCancelDialog","PMFormGrid","Components","buttonDisabled","ColumnClassName","PMTextFieldDialog","TextField","multiline","autoAdjustHeight","changedValue","propertyValidator","setValidationResult","setFilteredList","newFilteredListFlag","featureFlagsSlice","flag","setFilteredListDefaults","requiredPropertyValidator","handleOnCancel","getInputHandler","MapColumns","ColumnAsInput","Validator","handleOnSave","validResult","IsValidListName","lists","currentListName","currentListId","l","listService","listModel","isFeatureEnabled","PMTickboxDialog","tickBoxValue","setTickBoxValue","onOkButtonClick","onOkClicked","updateTickboxValue","showCloseButton","okButtonText","isSending","onCancelClicked","DialogFooter","actionsRight","Dropdown","PMDropDownWithDeleteButton","tooltipId","useId","flex","marginRight","paddingRight","calloutProps","gapSpace","IconButton","iconProps","ariaLabel","onDeleteClick","PMDescriptionDropDown","_renderLabel","defaultRender","PMLabelStyle","marginLeft","Stack","summary","subtext","useOptionsForSize","getTextFieldStyles","largestOption","reduce","dropdown","baseSize","sizePerCharacter","PMFilePicker","setFileName","multiple","selectorFiles","FileSelectHandler","reader","FileReader","readAsDataURL","onload","results","handleChange","files","accept","AllowedFileTypes","PMRowsGrid","element","PMFileSelector","setShowWarning","showExtWarning","setShowExtWarning","showFileSizeWarning","setShowFileSizeWarning","allowedExtensions","baseImg","SvgPoliteMail","ImageName","isAllowedFile","MimeTypes","PMOptOutLogoSelector","alignItems","flexWrap","textAlign","marginBottom","clearIsDisabled","handleClearImage","PMBoldLabel","PMBoldBlueLabel","PMHeader","labelProps","PMPanelHeader","PMNameValueLabel","PMNameLinkLabel","underline","PMToolTipLabel","tooltipText","EditableLabel","isEdit","setIsEdit","editValue","setEditValue","displayValue","invalidText","setInvalidText","childrenGap","wrap","nValue","validateValue","onUpdate","CheckIcon","HourGlassIcon","icon","bgColor","returnIcon","PMSpinButton","SpinButton","_removeSuffix","removeSpecCharacters","removeSpecChars","PMUsefulSpinButton","isPercentage","max","min","updateStateHandler","SetValue","step","setStep","minimumFractionDigits","maximumFractionDigits","handleOnValidate","numberValue","handleOnIncrement","newNumber","handleOnChange","_event","handleOnDecrement","onValidate","onIncrement","onDecrement","PMUnitSpinButton","pmProps","priorValue","PMDescriptionSpinButton","thisProps","listener","props2","itemRemoved","removeItemFromItems","TagPicker","PMNoHelperTagPicker","modProps","_onFilterChangedNoFilter","textField","selectors","validateOnFocusOut","readOnly","PMIconTextField","labelIconProps","buttonTitle","buttonAriaLabel","onIconClick","PMDescriptionTextField","mask","MaskedTextField","maskChar","PMPasswordField","showPassword","setShowPassword","button","handleButtonClick","renderToggleButton","PMThumbnail","backgroundImage","backgroundSize","backgroundPosition","PMToggle","parseForTime","initialDateTime","onTimeChange","timeParts","parseTime","newTime","utcOffset","onDateChange","mom","PMCountriesDropDown","defaultKey","dropDownCountries","setDropDownCountries","setSelectedKey","countries","_isCountriesLoading","useGetCountriesQuery","dropDownValues","CountryName","updatedKey","countryName","selectedCountry","PMCampaignsDropDown","dropDownCampaigns","setDropDownCampaigns","isSuccess","isSuccessCampaigns","campaignApiHooks","useGetCampaignsQuery","campaign","PMDateTimePickerPanel","dateLabel","onSelectDate","timeLabel","timeOptions","useComboBoxAsMenuWidth","checkedStatus","sendStatus","File","initialDate","imageurl","Editable","deferredValidationTime","GetDefaultValuesForColumn","columnDefinition","defaultProperties","defaultValue","GetDefaultValue","defaultProp","SetDefaultValues","modelProperty","file","prohibitedExtensions","WelcomeEmailType","WelcomeEmailVersion","authMode","NewUser_WelcomeTemplate","NewUser_WelcomeTemplateAzAD","MailLocation","AddressListTypes","PMLoadingContext","setIsLoading","clearLoading","setText","useLoading","PMNavButtonLoadingContext","setMessage","isBusy","setIsBusy","initialNotificationManagerState","notification","NotificationDispatch","PMNotificationsContext","NotificationManagerReducer","initialNotificationState","messageBarType","MessageBarType","PMNotificationManagerActionType","INIT_NOTIFICATION","UNINIT_NOTIFICATION","SET_MESSAGE","SET_TYPE","SET_HIDDEN","PMWarningContext","usePMWarningContext","isExpirationModalHidden","deliveryListIds","expirationMessage","expirationInfoLink","expirationInfoLinkText","expirationDate","expirationEnabledOnMessage","stateIsReset","expirationDetailsSlice","createSlice","reducers","setIsExpirationModalHidden","setDeliveryListIds","setExpirationEnabledOnMessage","setExpireDetailsInfoState","MessageText","InfoLink","InfoLinkText","resetExpireDetailsState","setResetToFalse","reportStatsApi","getReportStats","reportType","getReportBenchmarkStats","useGetReportStatsQuery","appSettingsApiSlice","getAppSettingByKey","getFeatureFlagSettings","responseData","useGetFeatureFlagSettingsQuery","GetFeatureFlags","createApi","baseQuery","fetchBaseQuery","baseUrl","prepareHeaders","getState","keepUnusedDataFor","extractRehydrationInfo","reducerPath","REHYDRATE","parameters","params","invalidatesTags","tagTypes","useSetTimeZoneQuery","useGetGlobalProfileQuery","useSetGlobalProfileMutation","businessesApiSlice","getBusinesses","campaignsApiSlice","getCampaigns","getCampaignById","addCampaign","updateCampaign","putCampaign","deleteCampaign","getLengthByCampaign","_ref4","addSentMessagesToCampaign","_ref5","sentMessageIds","_ref6","SentMessage","removeSentMessagesFromCampaign","_ref7","_ref8","getSentMessagesByCampaign","_ref9","_ref10","getEventsByCampaign","_ref11","_ref12","getProxyDevicesSummaryByCampaign","_ref13","_ref14","DeviceCount","getDesktopDevicesSummaryByCampaign","_ref15","_ref16","getMobileDevicesSummaryByCampaign","_ref17","_ref18","getHourOfDayReadsByCampaign","_ref19","_ref20","HourOfDayRead","getLinkStatsByCampaign","_ref21","_ref22","_ref23","LinkStat","getLocationsByCampaign","_ref24","_ref25","_ref26","getReportStatsByCampaign","_ref27","_ref28","Report","createCampaignByDateRange","_ref29","getReachMetricsByCampaign","_ref30","_ref31","getSentMessagesByTagAndCampaign","_ref32","_ref33","_ref34","hasSendsToProcessByCampaign","_ref35","_ref36","updateMetricsByCampaign","_ref37","campaignsId","_ref38","useGetCampaignByIdQuery","useAddCampaignMutation","useUpdateCampaignMutation","usePutCampaignMutation","useDeleteCampaignMutation","useGetLocationsByCampaignQuery","useGetEventsByCampaignQuery","useGetHourOfDayReadsByCampaignQuery","useGetLengthByCampaignQuery","useGetLinkStatsByCampaignQuery","useGetReportStatsByCampaignQuery","useAddSentMessagesToCampaignMutation","useGetSentMessagesByCampaignQuery","useGetReachMetricsByCampaignQuery","useRemoveSentMessagesFromCampaignMutation","useGetDesktopDevicesSummaryByCampaignQuery","useGetMobileDevicesSummaryByCampaignQuery","useGetProxyDevicesSummaryByCampaignQuery","useCreateCampaignByDateRangeMutation","useHasSendsToProcessByCampaignQuery","useUpdateMetricsByCampaignMutation","useGetSentMessagesByTagAndCampaignQuery","contactsApiSlice","getCountries","CountryAbreviation","getTimezones","dbTimeZone","getContactOptOutCountByEmail","decodeURI","useLazyGetContactOptOutCountByEmailQuery","ExportingStage","exportMessageSlice","isFailed","isSuccessfullyCompleted","isCancelled","loadingStatePercentages","startOperation","payloadAction","Initializing","Validation","ExportStarting","ExportContinuing","ExportFinishing","SuccessfullyCompleted","Failed","Cancelled","getPercentageOfExportingMessage","failedExporting","successExporting","cancelExporting","initiateFeatureFlags","_state","addFeatureFlag","enableFeatureFlag","featureFlag","disableFeatureFlag","updateFeatureFlag","isOnlyForAdmin","displayContext","removeFeatureFlag","unvalidatedFilteredLists","validationGuid","FILTERED_LIST_OPERATION_ABANDONED","initState","addUnvalidatedFilteredLists","removeUnvalidatedFilteredLists","ufl","updateUnvalidatedFilteredLists","updatedObj","unvalidateAllFilteredLists","Status","FilteredListState","Unvalidated","emptyFilteredLists","onQueryStartedErrorInvalidate","queryFulfilled","listFiltersApiSlice","getListFilterForList","getAllListFilters","createListFilter","updateListFilter","createListFilterExpression","filterBits","getContactsForFilter","expression","previewFilter","getFilterableFields","getCircularDependencyLists","refreshContactCacheIfNeeded","getFiltersThatUseCustomField","useLazyGetListFilterForListQuery","useGetAllListFiltersQuery","useCreateListFilterMutation","useUpdateListFilterMutation","useCreateListFilterExpressionQuery","useLazyGetContactsForFilterQuery","useLazyPreviewFilterQuery","useRefreshContactCacheIfNeededQuery","useGetFiltersThatUseCustomFieldQuery","listsApiSlice","getLists","IsFilteredList","FilterID","getListById","addList","updateList","deleteList","_responseData","putList","syncListContacts","createHierarchyList","isThereHierarchyData","getListLength","addContactsToList","contactIds","removeContactsFromList","addEmailsToList","emails","removeEmailsFromList","addListContactsByFilter","isListReportable","deleteListAndContacts","getListContacts","mergeLists","intersectLists","uncommonLists","substractLists","getListIdByName","setListMembersFromSplit","getSentMessagesByListId","getEventsByListId","getDesktopDevicesSummaryByListId","getMobileDevicesSummaryByListId","_ref39","_ref40","getProxyDevicesSummaryByListId","_ref41","_ref42","_ref43","getHourOfDayReadsByListId","_ref44","_ref45","_ref46","getLinkStatsByListId","_ref47","_ref48","_ref49","getLocationsByListId","_ref50","_ref51","_ref52","getReachMetricsByListId","_ref53","_ref54","getContactsTempByCacheId","_ref55","_ref56","useLazyGetListsQuery","useGetListByIdQuery","useLazyGetListByIdQuery","useAddListMutation","useUpdateListMutation","useDeleteListMutation","usePutListMutation","useSyncListContactsMutation","useCreateHierarchyListMutation","useIsThereHierarchyDataQuery","useGetListLengthQuery","useAddContactsToListMutation","useRemoveContactsFromListMutation","useAddEmailsToListMutation","useRemoveEmailsFromListMutation","useAddListContactsByFilterMutation","useIsListReportableQuery","useDeleteListAndContactsMutation","useGetListContactsQuery","useMergeListsMutation","useIntersectListsMutation","useUncommonListsMutation","useSubstractListsMutation","useGetListIdByNameQuery","useSetListMembersFromSplitMutation","useGetSentMessagesByListIdQuery","useGetEventsByListIdQuery","useGetDesktopDevicesSummaryByListIdQuery","useGetMobileDevicesSummaryByListIdQuery","useGetProxyDevicesSummaryByListIdQuery","useGetHourOfDayReadsByListIdQuery","useGetLinkStatsByListIdQuery","useGetLocationsByListIdQuery","useGetReachMetricsByListIdQuery","useGetContactsTempByCacheIdQuery","finishedLoading","PMComparableReports","contextMenuIsHidden","contextMenuItems","sortedRow","sortedAscending","defaultRowOrder","defaultColumnOrder","benchmark","benchmarkAverage","benchmarkData","hiddenRows","multiComparisonSlice","toggleSelectedItem","isSelected","reports","report","setComparedItems","deleteItems","remainingReport","remainingCols","setIds","setRows","setColumns","openContextMenu","closeContextMenu","setContextMenuItems","toggleCheckContextMenu","isChecked","sortByCol","rowArray","colArray","defaultColArray","colValues","sortedCol","sortedReportData","valueForSort","sortByRows","columnkey","colSort","aVal","bVal","toggleSortColumn","setBenchmark","setBenchmarkData","incomingReport","benchmarkSlice","extraReducers","addMatcher","matchFulfilled","meta","arg","originalArgs","getFullYear","AttentionRate","IgnoredRate","ReadsRate","EngagementRate","OutlookBrowserMode","EditorToolbarPosition","ConvertPreferenceToAppSetting","Group","SubGroup","EditRole","ViewRole","Scope","AllowedValues","OnChangeMessage","CustomRender","UserSetting","IsDirty","GetOverridablePreferenceForAppSetting","appSettingPreference","ConvertOverridablePreferenceToModel","PreferenceName","IsGlobal","IsLocked","ConvertModelToOverridablePreference","EnableSubscription","UserExpansionModes","UseExpansionCache","OverrideWordCount","SendbackLoopInterval","DefaultTemplateId","CheckRecipientCountSendLimit","AllowedFromAddresses","WhitelistFromAddress","OverridePreflightInterval","ForgetCredentials","ReestablishWarnings","ResetTableViews","MonitorInbox","ReportMaximumComparison","RecipientsLoadLimit","ChromiumInline","SuppressBadCredsWarning","SuppressEmptyListWarning","SuppressMultiTenantWarning","HideInteractionsByGeoLocation","ToolbarPosition","TOP","IsLoaded","updatePreferenceForState","overridablePreference","preferencesSlice","setPreference","cleanAllPreferences","savePreferences","promiseList","PrefActions","RemovedValues","all","setDeleteAllowedListId","removeId","removeValues","nState","regionsApiSlice","getRegions","Regions","SendingEmailStage","getPercentageOfSendingMessage","filteredListFeatureEnabled","NotSent","FilteredListValidation","ShowTrackingWarning","getStageInfoStringOfSendingMessage","sendMessageSlice","isDraftSaved","failedSending","successSending","cancelSending","draftSaved","resetDraft","handleTrackingShowWarning","handleTrackingHideWarning","stagesApiSlice","getStages","Stages","isBuilderPanelOpen","currentTab","Home","navigation","main","BuilderNavigation","MAIN","builderPanelActions","templateId","selectedImageBase64","templateBuilderSlice","setIsBuilderPanelOpen","toggleIsBuilderPanelOpen","setCurrentTab","resetState","setBuilderPanelActions","setTemplateId","navigateTo","setSelectedImageBase64","templateThemesApiSlice","getTemplateThemes","templateTheme","createTemplateTheme","updateTemplateTheme","template","useCreateTemplateThemeMutation","useUpdateTemplateThemeMutation","userFromsApiSlice","getGetUserFroms","UserFrom","getAllUserFroms","checkHasFromPermissions","FromAddress","setMultipleUsersToFrom","UserIds","uId","removeMultipleUsersToFrom","useCheckHasFromPermissionsQuery","useSetMultipleUsersToFromMutation","useRemoveMultipleUsersToFromMutation","getUsers","getReturnPath","useGetReturnPathQuery","localStorage","getItem","setItem","removeItem","LocalStorageAddToKey","env","CACHE_LIFETIME_DEFAULT","hasRetrievedFromAppSettings","cacheSettingSlice","setLifeTimeInMinutes","persistConfig","storage","whitelist","combinedReducers","combineReducers","exportMessageSliceReducer","reducer","persistedReducer","persistReducer","unauthenticatedMiddleware","next","isRejectedWithValue","configureStore","rootReducer","config","middleware","getDefaultMiddleware","serializableCheck","ignoredActions","FLUSH","PAUSE","PERSIST","PURGE","REGISTER","concat","persistStore","setupListeners","setCacheLifetimeAction","createAction","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","code","exports","locals"],"sourceRoot":""}